Am 2026-08-10 15:13, schrieb Stephen J. Turnbull:
Torsten writes:
I have just nearly finished the migration of Mailman 3 from Debian packages to venv and mailman (master and runner) is up and running and uwsgi is also up and running.
It looks like you are trying to use the configuration files from Debian with minimal or no changes.
If I were you I would
- rsync -av /etc/mailman3 /tmp/ # if you don't have rsync, "cp -r"
- purge (not just uninstall) all the Debian mailman packages this should delete a lot of the stuff you just copied to /tmp
- copy the configuration from Mailman's virtualenv install instructions into /etc/mailman3
- diff -r /etc/mailman3 /tmp/mailman3
- make only essential changes you see in that diff (eg, /opt/mailman/mm/var/web to /var/lib/mailman3/web), and see if things work better
- if things still don't work, make more adjustments.
Steve
Yes, that was my intention. But now I started from scratch, following the documentation about Virtualenv installation at mailman3.org and also created the config files with the defaults shown there (with a few adjustments to match my installation).
Now, I have everything running as user mailman (had user list before for mailman-core and www-data for mailman-web).
And the tracebacks have changed:
mailman throws this one:
2026-08-10 16:11:20 [FALCON] [ERROR] GET /3.1/lists?advertised=true&count=0&page=1 => Traceback (most recent call last): File "/opt/mailman/venv/lib/python3.13/site-packages/falcon/app.py", line 476, in __call__ process_resource(req, resp, resource, params) ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/mailman/venv/lib/python3.13/site-packages/mailman/rest/wsgiapp.py", line 65, in process_resource raise HTTPUnauthorized( ~~~~~~~~~~~~~~~~^ '401 Unauthorized', ^^^^^^^^^^^^^^^^^^^ 'REST API authorization failed', ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ challenges=[realm]) ^^^^^^^^^^^^^^^^^^^ TypeError: HTTPUnauthorized.__init__() takes 1 positional argument but 3 positional arguments (and 1 keyword-only argument) were given
[10/Aug/2026:16:11:20 +0200] "GET /3.1/lists?advertised=true&count=0&page=1 HTTP/1.1" 500 38 "-" "GNU Mailman REST client v3.3.5"
and mailman-web this one:
ERROR 2026-08-10 14:11:20,011 1557501 postorius Un-handled exception: HTTP Error 500: {"title": "500 Internal Server Error"} Traceback (most recent call last): File "/opt/mailman/venv/lib/python3.13/site-packages/django/core/handlers/base.py", line 197, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/opt/mailman/venv/lib/python3.13/site-packages/postorius/views/list.py", line 1141, in list_index lists = paginate( _get_list_page, ...<2 lines>... paginator_class=MailmanPaginator, ) File "/opt/mailman/venv/lib/python3.13/site-packages/django_mailman3/lib/paginator.py", line 71, in paginate objects = paginator.page(page_num) File "/opt/mailman/venv/lib/python3.13/site-packages/django_mailman3/lib/paginator.py", line 46, in page number = self.validate_number(number) File "/opt/mailman/venv/lib/python3.13/site-packages/django/core/paginator.py", line 53, in validate_number if number > self.num_pages: ^^^^^^^^^^^^^^ File "/opt/mailman/venv/lib/python3.13/site-packages/django/utils/functional.py", line 57, in __get__ res = instance.__dict__[self.name] = self.func(instance) ~~~~~~~~~^^^^^^^^^^ File "/opt/mailman/venv/lib/python3.13/site-packages/django/core/paginator.py", line 99, in num_pages if self.count == 0 and not self.allow_empty_first_page: ^^^^^^^^^^ File "/opt/mailman/venv/lib/python3.13/site-packages/django/utils/functional.py", line 57, in __get__ res = instance.__dict__[self.name] = self.func(instance) ~~~~~~~~~^^^^^^^^^^ File "/opt/mailman/venv/lib/python3.13/site-packages/django_mailman3/lib/paginator.py", line 56, in count return self.function(count=0, page=1).total_size ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^ File "/opt/mailman/venv/lib/python3.13/site-packages/postorius/views/list.py", line 1137, in _get_list_page return client.get_list_page( ~~~~~~~~~~~~~~~~~~~~^ advertised=advertised, mail_host=mail_host, count=count, page=page ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) ^ File "/opt/mailman/venv/lib/python3.13/site-packages/mailmanclient/client.py", line 211, in get_list_page return Page(self._connection, url, MailingList, count, page) File "/opt/mailman/venv/lib/python3.13/site-packages/mailmanclient/restbase/page.py", line 37, in __init__ self._create_page() ~~~~~~~~~~~~~~~~~^^ File "/opt/mailman/venv/lib/python3.13/site-packages/mailmanclient/restbase/page.py", line 62, in _create_page response, content = self._connection.call(self._build_url()) ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^ File "/opt/mailman/venv/lib/python3.13/site-packages/mailmanclient/restbase/connection.py", line 160, in call raise HTTPError(params.get('url'), response.status_code, error_msg, response, None) urllib.error.HTTPError: HTTP Error 500: {"title": "500 Internal Server Error"} ERROR 2026-08-10 14:11:20,041 1557501 django.request Internal Server Error: /mailman3/lists/ ERROR 2026-08-10 14:11:20,041 1557501 django.request Internal Server Error: /mailman3/lists/
I have taken the old database from the Debian configuration and moved it to /opt/mailman... where it should belong (I hope).