[GH-ISSUE #3722] Modoboa fails after fresh install on brand new Debian 12 machine #1888

Open
opened 2026-02-27 11:19:43 +03:00 by kerem · 16 comments
Owner

Originally created by @einheit on GitHub (Sep 10, 2025).
Original GitHub issue: https://github.com/modoboa/modoboa/issues/3722

Impacted versions

  • OS Type: Debian
  • OS Version: 12
  • Database Type: PostgreSQL
  • Database version: 15.14
  • Modoboa: (Not sure how to determine that - whatever the installer installed as of Sept 10th 2025)
  • installer used: Yes
  • Webserver: Nginx

Steps to reproduce: Run modoboa installer on fresh install of Debian 12.

Current behavior:

  1. Login screen shows a spinning circle and the text "attempting to log you in" forever
  2. /var/log/supervisor/radicale-stdout---supervisor-wmrdtvhq.log shows the following:

[2025-09-10 12:49:10 -0700] [199587] [INFO] rights type is 'radicale.rights.from_file'
[2025-09-10 12:49:10 -0700] [199587] [CRITICAL] An exception occurred during server startup: Failed to load rights file '/etc/radicale/rights': [Errno 2] No such file or directory: '/etc/radicale/rights'

Expected behavior: a successful login

Video/Screenshot link (optional)

Originally created by @einheit on GitHub (Sep 10, 2025). Original GitHub issue: https://github.com/modoboa/modoboa/issues/3722 # Impacted versions * OS Type: Debian * OS Version: 12 * Database Type: PostgreSQL * Database version: 15.14 * Modoboa: (Not sure how to determine that - whatever the installer installed as of Sept 10th 2025) * installer used: Yes * Webserver: Nginx # Steps to reproduce: Run modoboa installer on fresh install of Debian 12. # Current behavior: 1. Login screen shows a spinning circle and the text "attempting to log you in" forever 2. /var/log/supervisor/radicale-stdout---supervisor-wmrdtvhq.log shows the following: [2025-09-10 12:49:10 -0700] [199587] [INFO] rights type is 'radicale.rights.from_file' [2025-09-10 12:49:10 -0700] [199587] [CRITICAL] An exception occurred during server startup: Failed to load rights file '/etc/radicale/rights': [Errno 2] No such file or directory: '/etc/radicale/rights' <!-- I think it's a bug because you should be able to log in. What I expected to happen is a successful login process, or at least having a login screen presented. I also think it's a bug because the installer should have created the file that it now requires --> # Expected behavior: a successful login # Video/Screenshot link (optional)
Author
Owner

@tonioo commented on GitHub (Sep 11, 2025):

@einheit Do you see something in the browser console when you try to login?

<!-- gh-comment-id:3278912909 --> @tonioo commented on GitHub (Sep 11, 2025): @einheit Do you see something in the browser console when you try to login?
Author
Owner

@einheit commented on GitHub (Sep 11, 2025):

Yes, a circle spinning forever, and the text "attempting to log you in"

<!-- gh-comment-id:3281923010 --> @einheit commented on GitHub (Sep 11, 2025): Yes, a circle spinning forever, and the text "attempting to log you in"
Author
Owner

@tonioo commented on GitHub (Sep 12, 2025):

I'm talking about the browser console (when you press on F12)

<!-- gh-comment-id:3283871627 --> @tonioo commented on GitHub (Sep 12, 2025): I'm talking about the browser console (when you press on F12)
Author
Owner

@einheit commented on GitHub (Sep 12, 2025):

Ah so.

The VM where I'd installed it was already removed, so I spun up a new
Debian 12 VM, ran the installer, and it finished successfully.

But accessing the web interface provided a new and different error:

404 Not Found
nginx/1.22.1

I'll keep this VM around in case there are additional questions.

Joe

On Thu, Sep 11, 2025 at 11:21 PM Antoine Nguyen @.***>
wrote:

tonioo left a comment (modoboa/modoboa#3722)
https://github.com/modoboa/modoboa/issues/3722#issuecomment-3283871627

I'm talking about the browser console (when you press on F12)


Reply to this email directly, view it on GitHub
https://github.com/modoboa/modoboa/issues/3722#issuecomment-3283871627,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABIAXET2HJ3MBYLHSHYKC5D3SJQ7RAVCNFSM6AAAAACGFM2SGSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZTEOBTHA3TCNRSG4
.
You are receiving this because you were mentioned.Message ID:
@.***>

<!-- gh-comment-id:3286326128 --> @einheit commented on GitHub (Sep 12, 2025): Ah so. The VM where I'd installed it was already removed, so I spun up a new Debian 12 VM, ran the installer, and it finished successfully. But accessing the web interface provided a new and different error: 404 Not Found nginx/1.22.1 I'll keep this VM around in case there are additional questions. Joe On Thu, Sep 11, 2025 at 11:21 PM Antoine Nguyen ***@***.***> wrote: > *tonioo* left a comment (modoboa/modoboa#3722) > <https://github.com/modoboa/modoboa/issues/3722#issuecomment-3283871627> > > I'm talking about the browser console (when you press on F12) > > — > Reply to this email directly, view it on GitHub > <https://github.com/modoboa/modoboa/issues/3722#issuecomment-3283871627>, > or unsubscribe > <https://github.com/notifications/unsubscribe-auth/ABIAXET2HJ3MBYLHSHYKC5D3SJQ7RAVCNFSM6AAAAACGFM2SGSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZTEOBTHA3TCNRSG4> > . > You are receiving this because you were mentioned.Message ID: > ***@***.***> >
Author
Owner

@bergerc commented on GitHub (Sep 24, 2025):

Hi, I get the same 404 error on a fresh install of Debian 12.12 (installed & updates/upgraded 2025-09-20)

My errors come from python django modules :

Traceback (most recent call last):
  File "/srv/modoboa/instance/manage.py", line 22, in <module>
    main()
  File "/srv/modoboa/instance/manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "/srv/modoboa/env/lib/python3.11/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line
    utility.execute()
  File "/srv/modoboa/env/lib/python3.11/site-packages/django/core/management/__init__.py", line 436, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/srv/modoboa/env/lib/python3.11/site-packages/django/core/management/base.py", line 416, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/srv/modoboa/env/lib/python3.11/site-packages/django/core/management/base.py", line 457, in execute
    self.check(**check_kwargs)
  File "/srv/modoboa/env/lib/python3.11/site-packages/django/core/management/base.py", line 492, in check
    all_issues = checks.run_checks(
                 ^^^^^^^^^^^^^^^^^^
  File "/srv/modoboa/env/lib/python3.11/site-packages/django/core/checks/registry.py", line 89, in run_checks
    new_errors = check(app_configs=app_configs, databases=databases)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/modoboa/env/lib/python3.11/site-packages/django/core/checks/urls.py", line 44, in check_url_namespaces_unique
    all_namespaces = _load_all_namespaces(resolver)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/modoboa/env/lib/python3.11/site-packages/django/core/checks/urls.py", line 63, in _load_all_namespaces
    url_patterns = getattr(resolver, "url_patterns", [])
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/modoboa/env/lib/python3.11/site-packages/django/utils/functional.py", line 47, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
  File "/srv/modoboa/env/lib/python3.11/site-packages/django/urls/resolvers.py", line 718, in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
                       ^^^^^^^^^^^^^^^^^^^
  File "/srv/modoboa/env/lib/python3.11/site-packages/django/utils/functional.py", line 47, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
  File "/srv/modoboa/env/lib/python3.11/site-packages/django/urls/resolvers.py", line 711, in urlconf_module
    return import_module(self.urlconf_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1149, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/srv/modoboa/instance/instance/urls.py", line 4, in <module>
    path(r'', include('modoboa.urls')),
              ^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/modoboa/env/lib/python3.11/site-packages/django/urls/conf.py", line 39, in include
    urlconf_module = import_module(urlconf_module)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1149, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/srv/modoboa/env/lib/python3.11/site-packages/modoboa/urls.py", line 83, in <module>
    path("api/v1/", include("modoboa.urls_api_v1", namespace="v1")),
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/modoboa/env/lib/python3.11/site-packages/django/urls/conf.py", line 39, in include
    urlconf_module = import_module(urlconf_module)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1149, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/srv/modoboa/env/lib/python3.11/site-packages/modoboa/urls_api_v1.py", line 11, in <module>
    path("", include("modoboa.admin.api.v1.urls")),
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/modoboa/env/lib/python3.11/site-packages/django/urls/conf.py", line 39, in include
    urlconf_module = import_module(urlconf_module)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1149, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/srv/modoboa/env/lib/python3.11/site-packages/modoboa/admin/api/v1/urls.py", line 5, in <module>
    from . import viewsets
  File "/srv/modoboa/env/lib/python3.11/site-packages/modoboa/admin/api/v1/viewsets.py", line 7, in <module>
    from django_filters import rest_framework as dj_filters
  File "/srv/modoboa/env/lib/python3.11/site-packages/django_filters/__init__.py", line 7, in <module>
    from .filterset import FilterSet
  File "/srv/modoboa/env/lib/python3.11/site-packages/django_filters/filterset.py", line 10, in <module>
    from django.utils import six
ImportError: cannot import name 'six' from 'django.utils' (/srv/modoboa/env/lib/python3.11/site-packages/django/utils/__init__.py)

when I fix the django.utils.six by puytting a six.py containing import six, another error occurs :
ImportError: cannot import name 'ugettext_lazy' from 'django.utils.translation' (/srv/modoboa/env/lib/python3.11/site-packages/django/utils/translation/__init__.py)
I will try to install a debian 11 environment to check if modoboa is installable.

<!-- gh-comment-id:3326134415 --> @bergerc commented on GitHub (Sep 24, 2025): Hi, I get the same 404 error on a fresh install of Debian 12.12 (installed & updates/upgraded 2025-09-20) My errors come from python django modules : ``` Traceback (most recent call last): File "/srv/modoboa/instance/manage.py", line 22, in <module> main() File "/srv/modoboa/instance/manage.py", line 18, in main execute_from_command_line(sys.argv) File "/srv/modoboa/env/lib/python3.11/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line utility.execute() File "/srv/modoboa/env/lib/python3.11/site-packages/django/core/management/__init__.py", line 436, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/srv/modoboa/env/lib/python3.11/site-packages/django/core/management/base.py", line 416, in run_from_argv self.execute(*args, **cmd_options) File "/srv/modoboa/env/lib/python3.11/site-packages/django/core/management/base.py", line 457, in execute self.check(**check_kwargs) File "/srv/modoboa/env/lib/python3.11/site-packages/django/core/management/base.py", line 492, in check all_issues = checks.run_checks( ^^^^^^^^^^^^^^^^^^ File "/srv/modoboa/env/lib/python3.11/site-packages/django/core/checks/registry.py", line 89, in run_checks new_errors = check(app_configs=app_configs, databases=databases) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/srv/modoboa/env/lib/python3.11/site-packages/django/core/checks/urls.py", line 44, in check_url_namespaces_unique all_namespaces = _load_all_namespaces(resolver) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/srv/modoboa/env/lib/python3.11/site-packages/django/core/checks/urls.py", line 63, in _load_all_namespaces url_patterns = getattr(resolver, "url_patterns", []) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/srv/modoboa/env/lib/python3.11/site-packages/django/utils/functional.py", line 47, in __get__ res = instance.__dict__[self.name] = self.func(instance) ^^^^^^^^^^^^^^^^^^^ File "/srv/modoboa/env/lib/python3.11/site-packages/django/urls/resolvers.py", line 718, in url_patterns patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) ^^^^^^^^^^^^^^^^^^^ File "/srv/modoboa/env/lib/python3.11/site-packages/django/utils/functional.py", line 47, in __get__ res = instance.__dict__[self.name] = self.func(instance) ^^^^^^^^^^^^^^^^^^^ File "/srv/modoboa/env/lib/python3.11/site-packages/django/urls/resolvers.py", line 711, in urlconf_module return import_module(self.urlconf_name) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<frozen importlib._bootstrap>", line 1206, in _gcd_import File "<frozen importlib._bootstrap>", line 1178, in _find_and_load File "<frozen importlib._bootstrap>", line 1149, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 690, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 940, in exec_module File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed File "/srv/modoboa/instance/instance/urls.py", line 4, in <module> path(r'', include('modoboa.urls')), ^^^^^^^^^^^^^^^^^^^^^^^ File "/srv/modoboa/env/lib/python3.11/site-packages/django/urls/conf.py", line 39, in include urlconf_module = import_module(urlconf_module) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<frozen importlib._bootstrap>", line 1206, in _gcd_import File "<frozen importlib._bootstrap>", line 1178, in _find_and_load File "<frozen importlib._bootstrap>", line 1149, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 690, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 940, in exec_module File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed File "/srv/modoboa/env/lib/python3.11/site-packages/modoboa/urls.py", line 83, in <module> path("api/v1/", include("modoboa.urls_api_v1", namespace="v1")), ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/srv/modoboa/env/lib/python3.11/site-packages/django/urls/conf.py", line 39, in include urlconf_module = import_module(urlconf_module) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<frozen importlib._bootstrap>", line 1206, in _gcd_import File "<frozen importlib._bootstrap>", line 1178, in _find_and_load File "<frozen importlib._bootstrap>", line 1149, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 690, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 940, in exec_module File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed File "/srv/modoboa/env/lib/python3.11/site-packages/modoboa/urls_api_v1.py", line 11, in <module> path("", include("modoboa.admin.api.v1.urls")), ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/srv/modoboa/env/lib/python3.11/site-packages/django/urls/conf.py", line 39, in include urlconf_module = import_module(urlconf_module) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<frozen importlib._bootstrap>", line 1206, in _gcd_import File "<frozen importlib._bootstrap>", line 1178, in _find_and_load File "<frozen importlib._bootstrap>", line 1149, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 690, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 940, in exec_module File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed File "/srv/modoboa/env/lib/python3.11/site-packages/modoboa/admin/api/v1/urls.py", line 5, in <module> from . import viewsets File "/srv/modoboa/env/lib/python3.11/site-packages/modoboa/admin/api/v1/viewsets.py", line 7, in <module> from django_filters import rest_framework as dj_filters File "/srv/modoboa/env/lib/python3.11/site-packages/django_filters/__init__.py", line 7, in <module> from .filterset import FilterSet File "/srv/modoboa/env/lib/python3.11/site-packages/django_filters/filterset.py", line 10, in <module> from django.utils import six ImportError: cannot import name 'six' from 'django.utils' (/srv/modoboa/env/lib/python3.11/site-packages/django/utils/__init__.py) ``` when I fix the django.utils.six by puytting a six.py containing import six, another error occurs : `ImportError: cannot import name 'ugettext_lazy' from 'django.utils.translation' (/srv/modoboa/env/lib/python3.11/site-packages/django/utils/translation/__init__.py) ` I will try to install a debian 11 environment to check if modoboa is installable.
Author
Owner

@tonioo commented on GitHub (Sep 24, 2025):

Looks like some of your python packages were not updated.

<!-- gh-comment-id:3326983955 --> @tonioo commented on GitHub (Sep 24, 2025): Looks like some of your python packages were not updated.
Author
Owner

@bergerc commented on GitHub (Sep 24, 2025):

Looks like some of your python packages were not updated.

For sure, but it's a fresh debian install, fully updated/upgraded from stable repositories.
I tried a (in virtualenv) pip3 install --upgrade modoboa with no effect.

@einheit seems to have the same problem with the 404 error.

<!-- gh-comment-id:3327487746 --> @bergerc commented on GitHub (Sep 24, 2025): > Looks like some of your python packages were not updated. For sure, but it's a fresh debian install, fully updated/upgraded from stable repositories. I tried a (in virtualenv) pip3 install --upgrade modoboa with no effect. @einheit seems to have the same problem with the 404 error.
Author
Owner

@tonioo commented on GitHub (Sep 24, 2025):

Can you show what packages were installed in your virtualenv?

<!-- gh-comment-id:3327511097 --> @tonioo commented on GitHub (Sep 24, 2025): Can you show what packages were installed in your virtualenv?
Author
Owner

@bergerc commented on GitHub (Sep 24, 2025):

Here are the packages versions :

> source env/bin/activate
(env) [Wed Sep 24 20:59:27] chris@mx2:/srv/modoboa
> pip3 list
Package                         Version
------------------------------- -----------
aiosmtplib                      4.0.2
asgiref                         3.9.2
async-timeout                   5.0.1
attrs                           25.3.0
bcrypt                          4.3.0
caldav                          2.0.1
certifi                         2025.8.3
cffi                            2.0.0
chardet                         5.2.0
charset-normalizer              3.4.3
click                           8.3.0
croniter                        6.0.0
cryptography                    46.0.1
defusedxml                      0.7.1
dj-database-url                 3.0.1
Django                          5.2.6
django-cors-headers             4.9.0
django-environ                  0.12.0
django-filter                   1.1.0
django-oauth-toolkit            3.0.1
django-otp                      1.6.1
django-phonenumber-field        8.1.0
django-rename-app               0.1.7
django-reversion                6.0.0
django-rq                       3.1
django-webpack-loader           3.2.1
django-xforwardedfor-middleware 2.0
djangorestframework             3.16.1
dnspython                       2.8.0
drf-nested-routers              0.95.0
drf-spectacular                 0.28.0
feedparser                      6.0.12
fido2                           2.0.0
filelock                        3.19.1
gevent                          25.9.1
greenlet                        3.2.4
html2text                       2025.4.15
icalendar                       6.3.1
idna                            3.10
inflection                      0.5.1
jsonschema                      4.25.1
jsonschema-specifications       2025.9.1
jwcrypto                        1.5.6
lxml                            6.0.2
lxml_html_clean                 0.4.2
modoboa                         2.6.0
modoboa-contacts                0.7.3
modoboa-radicale                1.3.6
modoboa-webmail                 1.9.0
mysqlclient                     2.2.7
oath                            1.4.4
oauthlib                        3.3.1
ovh                             1.2.0
packaging                       25.0
passlib                         1.7.4
phonenumbers                    9.0.14
pillow                          11.3.0
pip                             25.2
progressbar33                   2.4
pycparser                       2.23
python-dateutil                 2.9.0.post0
python-magic                    0.4.27
pytz                            2025.2
PyYAML                          6.0.2
qrcode                          8.2
recurring-ical-events           3.8.0
redis                           7.0.0b1
referencing                     0.36.2
reportlab                       4.4.4
requests                        2.32.5
requests-file                   2.1.0
requests-oauthlib               2.0.0
rpds-py                         0.27.1
rq                              2.6.0
rrdtool-bindings                0.4.0
setuptools                      80.9.0
sgmllib3k                       1.0.0
sievelib                        1.4.2
six                             1.17.0
sqlparse                        0.5.3
tldextract                      5.3.0
typing_extensions               4.15.0
tzdata                          2025.2
uritemplate                     4.2.0
urllib3                         2.5.0
vobject                         0.9.9
x-wr-timezone                   2.0.1
zope.event                      6.0
zope.interface                  8.0
<!-- gh-comment-id:3330264894 --> @bergerc commented on GitHub (Sep 24, 2025): Here are the packages versions : ``` > source env/bin/activate (env) [Wed Sep 24 20:59:27] chris@mx2:/srv/modoboa > pip3 list Package Version ------------------------------- ----------- aiosmtplib 4.0.2 asgiref 3.9.2 async-timeout 5.0.1 attrs 25.3.0 bcrypt 4.3.0 caldav 2.0.1 certifi 2025.8.3 cffi 2.0.0 chardet 5.2.0 charset-normalizer 3.4.3 click 8.3.0 croniter 6.0.0 cryptography 46.0.1 defusedxml 0.7.1 dj-database-url 3.0.1 Django 5.2.6 django-cors-headers 4.9.0 django-environ 0.12.0 django-filter 1.1.0 django-oauth-toolkit 3.0.1 django-otp 1.6.1 django-phonenumber-field 8.1.0 django-rename-app 0.1.7 django-reversion 6.0.0 django-rq 3.1 django-webpack-loader 3.2.1 django-xforwardedfor-middleware 2.0 djangorestframework 3.16.1 dnspython 2.8.0 drf-nested-routers 0.95.0 drf-spectacular 0.28.0 feedparser 6.0.12 fido2 2.0.0 filelock 3.19.1 gevent 25.9.1 greenlet 3.2.4 html2text 2025.4.15 icalendar 6.3.1 idna 3.10 inflection 0.5.1 jsonschema 4.25.1 jsonschema-specifications 2025.9.1 jwcrypto 1.5.6 lxml 6.0.2 lxml_html_clean 0.4.2 modoboa 2.6.0 modoboa-contacts 0.7.3 modoboa-radicale 1.3.6 modoboa-webmail 1.9.0 mysqlclient 2.2.7 oath 1.4.4 oauthlib 3.3.1 ovh 1.2.0 packaging 25.0 passlib 1.7.4 phonenumbers 9.0.14 pillow 11.3.0 pip 25.2 progressbar33 2.4 pycparser 2.23 python-dateutil 2.9.0.post0 python-magic 0.4.27 pytz 2025.2 PyYAML 6.0.2 qrcode 8.2 recurring-ical-events 3.8.0 redis 7.0.0b1 referencing 0.36.2 reportlab 4.4.4 requests 2.32.5 requests-file 2.1.0 requests-oauthlib 2.0.0 rpds-py 0.27.1 rq 2.6.0 rrdtool-bindings 0.4.0 setuptools 80.9.0 sgmllib3k 1.0.0 sievelib 1.4.2 six 1.17.0 sqlparse 0.5.3 tldextract 5.3.0 typing_extensions 4.15.0 tzdata 2025.2 uritemplate 4.2.0 urllib3 2.5.0 vobject 0.9.9 x-wr-timezone 2.0.1 zope.event 6.0 zope.interface 8.0 ```
Author
Owner

@tonioo commented on GitHub (Sep 25, 2025):

Ok, those packages are deprecated and should not be there...:

modoboa-contacts                0.7.3
modoboa-radicale                1.3.6
modoboa-webmail                 1.9.0

Are you sure it was a fresh install?

<!-- gh-comment-id:3332399887 --> @tonioo commented on GitHub (Sep 25, 2025): Ok, those packages are deprecated and should not be there...: ``` modoboa-contacts 0.7.3 modoboa-radicale 1.3.6 modoboa-webmail 1.9.0 ``` Are you sure it was a fresh install?
Author
Owner

@bergerc commented on GitHub (Sep 25, 2025):

Fresh install on a VPS server (Scaleway/Dedibox - debian 12), provider installer and updated/upgraded to the last available debian packages.

<!-- gh-comment-id:3333141800 --> @bergerc commented on GitHub (Sep 25, 2025): Fresh install on a VPS server (Scaleway/Dedibox - debian 12), provider installer and updated/upgraded to the last available debian packages.
Author
Owner

@tonioo commented on GitHub (Sep 25, 2025):

@bergerc So, I just did a fresh install on a Debian 12 VM and everything is Ok, I don't have those deprecated extensions installed.
Have you checked if your installer copy is up-to-date?

<!-- gh-comment-id:3333256323 --> @tonioo commented on GitHub (Sep 25, 2025): @bergerc So, I just did a fresh install on a Debian 12 VM and everything is Ok, I don't have those deprecated extensions installed. Have you checked if your installer copy is up-to-date?
Author
Owner

@bergerc commented on GitHub (Sep 26, 2025):

I'll reinstall this machine next week and check. The installer is the git version, master branch.
Thanks for the support

<!-- gh-comment-id:3336303008 --> @bergerc commented on GitHub (Sep 26, 2025): I'll reinstall this machine next week and check. The installer is the git version, master branch. Thanks for the support
Author
Owner

@bergerc commented on GitHub (Oct 3, 2025):

Hi,

Same problem after a fresh install :

  File "/srv/modoboa/env/lib/python3.11/site-packages/modoboa/urls_api_v1.py", line 11, in <module>
    path("", include("modoboa.admin.api.v1.urls")),
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/modoboa/env/lib/python3.11/site-packages/django/urls/conf.py", line 39, in include
    urlconf_module = import_module(urlconf_module)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1149, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 940, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/srv/modoboa/env/lib/python3.11/site-packages/modoboa/admin/api/v1/urls.py", line 5, in <module>
    from . import viewsets
  File "/srv/modoboa/env/lib/python3.11/site-packages/modoboa/admin/api/v1/viewsets.py", line 7, in <module>
    from django_filters import rest_framework as dj_filters
  File "/srv/modoboa/env/lib/python3.11/site-packages/django_filters/__init__.py", line 7, in <module>
    from .filterset import FilterSet
  File "/srv/modoboa/env/lib/python3.11/site-packages/django_filters/filterset.py", line 10, in <module>
    from django.utils import six
ImportError: cannot import name 'six' from 'django.utils' (/srv/modoboa/env/lib/python3.11/site-packages/django/utils/__init__.py)
Name: modoboa
Version: 2.6.0

After setting this option : python3 -m pip config set global.break-system-packages true
the pip3 upgrades the modoboa modules but I still have the python import errors.

Under sudo I was not in the virtuelenv, it seems "better" under the root account directly.

Sorry, no idea how to solve this, any advice ? using debian 13 ?

<!-- gh-comment-id:3367119510 --> @bergerc commented on GitHub (Oct 3, 2025): Hi, Same problem after a fresh install : ``` File "/srv/modoboa/env/lib/python3.11/site-packages/modoboa/urls_api_v1.py", line 11, in <module> path("", include("modoboa.admin.api.v1.urls")), ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/srv/modoboa/env/lib/python3.11/site-packages/django/urls/conf.py", line 39, in include urlconf_module = import_module(urlconf_module) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<frozen importlib._bootstrap>", line 1206, in _gcd_import File "<frozen importlib._bootstrap>", line 1178, in _find_and_load File "<frozen importlib._bootstrap>", line 1149, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 690, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 940, in exec_module File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed File "/srv/modoboa/env/lib/python3.11/site-packages/modoboa/admin/api/v1/urls.py", line 5, in <module> from . import viewsets File "/srv/modoboa/env/lib/python3.11/site-packages/modoboa/admin/api/v1/viewsets.py", line 7, in <module> from django_filters import rest_framework as dj_filters File "/srv/modoboa/env/lib/python3.11/site-packages/django_filters/__init__.py", line 7, in <module> from .filterset import FilterSet File "/srv/modoboa/env/lib/python3.11/site-packages/django_filters/filterset.py", line 10, in <module> from django.utils import six ImportError: cannot import name 'six' from 'django.utils' (/srv/modoboa/env/lib/python3.11/site-packages/django/utils/__init__.py) Name: modoboa Version: 2.6.0 ``` After setting this option : python3 -m pip config set global.break-system-packages true the pip3 upgrades the modoboa modules but I still have the python import errors. Under sudo I was not in the virtuelenv, it seems "better" under the root account directly. Sorry, no idea how to solve this, any advice ? using debian 13 ?
Author
Owner

@tonioo commented on GitHub (Nov 25, 2025):

@bergerc You can try with Debian13 but I think there is something wrong in the config file you use for the installer. Can you check the modoboa section to see you're trying to install extensions? (it should be empty to make it work)

<!-- gh-comment-id:3574400323 --> @tonioo commented on GitHub (Nov 25, 2025): @bergerc You can try with Debian13 but I think there is something wrong in the config file you use for the installer. Can you check the modoboa section to see you're trying to install extensions? (it should be empty to make it work)
Author
Owner

@PinaColada7447 commented on GitHub (Jan 8, 2026):

the login page loading endlessly problem is present even on a fresh, virgin Debian 13 installation

i found so many reasons why it was not working that i will not start to list.

Instead i share with you a nuclear cleaning command list to be performed as step 1 if you already had a failed attempt.
Please note, we assume you have NO SERVICES running yet on the system, and anything can be cleaned.

In my case these cleaning steps were required, but not enough, even after this the login was not working, or the installation failed. What brought a breakthrough is the "--force" tag of the last command - see the last line below.

#  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  
# MODOBOA Nuke CleanUp Command Kit
#  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  #  

# 1. Stop all possible Modoboa-related services

	for service in uwsgi nginx modoboa-worker celery postfix dovecot amavis \
               clamav-daemon redis-server fail2ban mariadb opendkim \
               opendmarc supervisor radicale postwhite; do
    systemctl stop $service 2>/dev/null
done


# 2. Kill any lingering processes owned by the modoboa user

pkill -u modoboa
sleep 2
ps -u modoboa

# 3. Purge packages (Removes binaries)
apt-get purge -y \
  nginx \
  mariadb-server mariadb-client \
  postfix postfix-pcre \
  dovecot-core dovecot-imapd dovecot-lmtpd dovecot-managesieved dovecot-mysql \
  uwsgi uwsgi-plugin-python3 \
  redis-server \
  amavisd-new spamassassin clamav-daemon \
  opendkim opendkim-tools opendmarc \
  supervisor radicale \
  python3-venv python3-pip


# 4. Deep Clean Configuration Directories

rm -rf /etc/uwsgi /etc/postfix /etc/dovecot /etc/amavis /etc/opendkim \
       /etc/opendmarc /etc/radicale /etc/supervisor /etc/postwhite

# Clean Nginx websites but keep the main engine configuration
rm -rf /etc/nginx/sites-enabled/* /etc/nginx/sites-available/* /etc/nginx/conf.d/*

# Remove specific Modoboa rules from Fail2Ban
rm -f /etc/fail2ban/jail.d/modoboa.conf

# 5. Remove Application Data and Virtual Environments
rm -rf /srv/modoboa
rm -rf /srv/radicale
rm -rf /var/lib/mysql
rm -rf /var/lib/redis
rm -rf /var/lib/postfix
rm -rf /var/lib/dovecot
rm -rf /var/lib/radicale


# 6. Clear Logs and Temp files
rm -rf /var/log/uwsgi /var/log/modoboa /var/log/radicale /var/log/amavis
rm -f /tmp/modoboa_error.log

# 7. Remove System Users and Groups
deluser --remove-home modoboa 2>/dev/null
deluser --remove-home vmail 2>/dev/null
deluser --remove-home amavis 2>/dev/null
groupdel -f modoboa 2>/dev/null
groupdel -f vmail 2>/dev/null

# 8. Final System Cleanup
apt-get autoremove -y
apt-get autoclean

# 9. Wipe the installer source and initial config
# This ensures passwords and repo states are reset
rm -rf /opt/modoboa-installer

#  #  #  #  #  #  #  #  #  #  #  #  
#  #     W.A.R.N.I.N.G
#  #  #  #  #  #  #  #  #  #  #  #  

DO NOT INSTALL MariaDB using Modoboa installer, the creation of modoboa and amavis databases will fail!
install MariaDB manually, AND very important, set a MariaDB password for root, DON'T leave it empty!
THEN specify this password in installer.cfg

# Install MariaDB
apt install mariadb-server

#Secure the installation
mariadb-secure-installation

#  #  #  #  #  #  #  #  #  #  #  #  #  
          R.E.I.N.S.T.A.L.
#  #  #  #  #  #  #  #  #  #  #  #  #  
# open these ports in firewall
TCP 25 80 443 587 993

# make sure FQDN is set

hostnamectl set-hostname mail.YOUR-DOMAIN.COM

# if your server is acting as a mail server, you have to use FGDN instead of just a host 'mail'

# DNS Configuration: The Modoboa installer will need these records to be working before installation.

**A Record:** Point `mail.yourdomain.com` to your server's IP address.
**MX Record:** Point your main domain (`yourdomain.com`) to your server's hostname (`mail.yourdomain.com`).
**Reverse DNS (PTR Record):** This must be set by your VPS or hosting provider and must resolve back to your server's FQDN (`mail.yourdomain.com`).

...if this server is a backup email server, then Prioriy should be 10 for main server and 20 for this one.

apt update && apt upgrade -y

# ATTENTION: look for any error, and repeat, handle the install failure until no error returned!
apt install -y build-essential python3-full python3-venv python3-dev python3-pip git pkg-config libxml2-dev libxslt-dev libjpeg-dev librrd-dev rrdtool libffi-dev libssl-dev libcairo2-dev nodejs npm

# download the installer
cd /opt
git clone https://github.com/modoboa/modoboa-installer
cd modoboa-installer

./run.py --stop-after-configfile-check MAIL.YOUR-DOMAIN.com

# Edit the configuration file to add your Let's Encrypt email
# ...also if your FQDN is not mail.* then change it accordingly

pico installer.cfg

...change these:
hostname = MAIL.YOUR-DOMAIN.com

[certificate]
type = letsencrypt        # Change from self-signed to get real certs

[database]
engine = mysql		# Change this from "postgres" to "mysql"
install = false		# read my comment above...

[letsencrypt]
email = WHAT_EVER@YOUR-DOMAIN.COM

[mysql]
charset = utf8mb4          # Better than utf8 for emoji support
collation = utf8mb4_unicode_ci

[fail2ban]
max_retry = 5


# continue installation, notice, there's no MAIL prefix here
./run.py --force YOUR-DOMAIN.COM

(as a mentioned at the beginning, the '--force' option made it work in my case)

<!-- gh-comment-id:3725334280 --> @PinaColada7447 commented on GitHub (Jan 8, 2026): the login page loading endlessly problem is present even on a fresh, virgin Debian 13 installation i found so many reasons why it was not working that i will not start to list. Instead i share with you a nuclear cleaning command list to be performed as step 1 if you already had a failed attempt. Please note, we assume you have NO SERVICES running yet on the system, and anything can be cleaned. In my case these cleaning steps were required, but not enough, even after this the login was not working, or the installation failed. What brought a breakthrough is the "--force" tag of the last command - see the last line below. ``` # # # # # # # # # # # # # # # # # # MODOBOA Nuke CleanUp Command Kit # # # # # # # # # # # # # # # # # # 1. Stop all possible Modoboa-related services for service in uwsgi nginx modoboa-worker celery postfix dovecot amavis \ clamav-daemon redis-server fail2ban mariadb opendkim \ opendmarc supervisor radicale postwhite; do systemctl stop $service 2>/dev/null done # 2. Kill any lingering processes owned by the modoboa user pkill -u modoboa sleep 2 ps -u modoboa # 3. Purge packages (Removes binaries) apt-get purge -y \ nginx \ mariadb-server mariadb-client \ postfix postfix-pcre \ dovecot-core dovecot-imapd dovecot-lmtpd dovecot-managesieved dovecot-mysql \ uwsgi uwsgi-plugin-python3 \ redis-server \ amavisd-new spamassassin clamav-daemon \ opendkim opendkim-tools opendmarc \ supervisor radicale \ python3-venv python3-pip # 4. Deep Clean Configuration Directories rm -rf /etc/uwsgi /etc/postfix /etc/dovecot /etc/amavis /etc/opendkim \ /etc/opendmarc /etc/radicale /etc/supervisor /etc/postwhite # Clean Nginx websites but keep the main engine configuration rm -rf /etc/nginx/sites-enabled/* /etc/nginx/sites-available/* /etc/nginx/conf.d/* # Remove specific Modoboa rules from Fail2Ban rm -f /etc/fail2ban/jail.d/modoboa.conf # 5. Remove Application Data and Virtual Environments rm -rf /srv/modoboa rm -rf /srv/radicale rm -rf /var/lib/mysql rm -rf /var/lib/redis rm -rf /var/lib/postfix rm -rf /var/lib/dovecot rm -rf /var/lib/radicale # 6. Clear Logs and Temp files rm -rf /var/log/uwsgi /var/log/modoboa /var/log/radicale /var/log/amavis rm -f /tmp/modoboa_error.log # 7. Remove System Users and Groups deluser --remove-home modoboa 2>/dev/null deluser --remove-home vmail 2>/dev/null deluser --remove-home amavis 2>/dev/null groupdel -f modoboa 2>/dev/null groupdel -f vmail 2>/dev/null # 8. Final System Cleanup apt-get autoremove -y apt-get autoclean # 9. Wipe the installer source and initial config # This ensures passwords and repo states are reset rm -rf /opt/modoboa-installer # # # # # # # # # # # # # # W.A.R.N.I.N.G # # # # # # # # # # # # DO NOT INSTALL MariaDB using Modoboa installer, the creation of modoboa and amavis databases will fail! install MariaDB manually, AND very important, set a MariaDB password for root, DON'T leave it empty! THEN specify this password in installer.cfg # Install MariaDB apt install mariadb-server #Secure the installation mariadb-secure-installation # # # # # # # # # # # # # R.E.I.N.S.T.A.L. # # # # # # # # # # # # # # open these ports in firewall TCP 25 80 443 587 993 # make sure FQDN is set hostnamectl set-hostname mail.YOUR-DOMAIN.COM # if your server is acting as a mail server, you have to use FGDN instead of just a host 'mail' # DNS Configuration: The Modoboa installer will need these records to be working before installation. **A Record:** Point `mail.yourdomain.com` to your server's IP address. **MX Record:** Point your main domain (`yourdomain.com`) to your server's hostname (`mail.yourdomain.com`). **Reverse DNS (PTR Record):** This must be set by your VPS or hosting provider and must resolve back to your server's FQDN (`mail.yourdomain.com`). ...if this server is a backup email server, then Prioriy should be 10 for main server and 20 for this one. apt update && apt upgrade -y # ATTENTION: look for any error, and repeat, handle the install failure until no error returned! apt install -y build-essential python3-full python3-venv python3-dev python3-pip git pkg-config libxml2-dev libxslt-dev libjpeg-dev librrd-dev rrdtool libffi-dev libssl-dev libcairo2-dev nodejs npm # download the installer cd /opt git clone https://github.com/modoboa/modoboa-installer cd modoboa-installer ./run.py --stop-after-configfile-check MAIL.YOUR-DOMAIN.com # Edit the configuration file to add your Let's Encrypt email # ...also if your FQDN is not mail.* then change it accordingly pico installer.cfg ...change these: hostname = MAIL.YOUR-DOMAIN.com [certificate] type = letsencrypt # Change from self-signed to get real certs [database] engine = mysql # Change this from "postgres" to "mysql" install = false # read my comment above... [letsencrypt] email = WHAT_EVER@YOUR-DOMAIN.COM [mysql] charset = utf8mb4 # Better than utf8 for emoji support collation = utf8mb4_unicode_ci [fail2ban] max_retry = 5 # continue installation, notice, there's no MAIL prefix here ./run.py --force YOUR-DOMAIN.COM ``` (as a mentioned at the beginning, the '--force' option made it work in my case)
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/modoboa-modoboa#1888
No description provided.