I'm trying to create a list (on Ubuntu) and I'm getting this:
owners = ['xxxx@ddddddddd.net'] from mailman.app.lifecycle import create_list ant = create_list('llllllllllllll@dddddddd.net', owners) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/opt/mailman/venv/lib/python3.12/site-packages/mailman/app/lifecycle.py", line 74, in create _list getUtility(IEmailValidator).validate(fqdn_listname) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/mailman/venv/lib/python3.12/site-packages/zope/component/_api.py", line 180, in getUtil ity raise ComponentLookupError(interface, name) zope.interface.interfaces.ComponentLookupError: (<InterfaceClass mailman.interfaces.address.IEmailVa
<venv> $ python3 Python 3.12.3 (main, Aug 14 2025, 17:47:21) [GCC 13.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. lidator>, '')
On 11/1/25 10:20, dap1--- via Mailman-users wrote:
I'm trying to create a list (on Ubuntu) and I'm getting this:
owners = ['xxxx@ddddddddd.net'] from mailman.app.lifecycle import create_list ant = create_list('llllllllllllll@dddddddd.net', owners) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/opt/mailman/venv/lib/python3.12/site-packages/mailman/app/lifecycle.py", line 74, in create _list getUtility(IEmailValidator).validate(fqdn_listname) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/mailman/venv/lib/python3.12/site-packages/zope/component/_api.py", line 180, in getUtil ity raise ComponentLookupError(interface, name) zope.interface.interfaces.ComponentLookupError: (<InterfaceClass mailman.interfaces.address.IEmailVa
<venv> $ python3 Python 3.12.3 (main, Aug 14 2025, 17:47:21) [GCC 13.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. lidator>, '')
I'm not sure why this doesn't work, but it probably will if you do it in
mailman shell which defines a lot of things for you.
However, it is much simpler to just use the mailman create command to
create a list. See mailman create --help
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
I didn't see that in the documentation. Anyway, that seems to have worked and I was able to import the list. However, I cannot import the archives. The documentation says to use mailman manage.py but does not say where it is. My search turned up 2, so which do I use?
./venv/lib/python3.12/site-packages/falcon/bench/dj/manage.py ./venv/lib/python3.12/site-packages/mailman_web/manage.py
On 11/1/25 11:50, dap1--- via Mailman-users wrote:
I didn't see that in the documentation. Anyway, that seems to have worked and I was able to import the list. However, I cannot import the archives. The documentation says to use mailman manage.py but does not say where it is. My search turned up 2, so which do I use?
./venv/lib/python3.12/site-packages/falcon/bench/dj/manage.py ./venv/lib/python3.12/site-packages/mailman_web/manage.py
See the note at the bottom of the first section of the docs at https://docs.mailman3.org/en/latest/index.html.
With your venv active the command you want is mailman-web.
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
I don't think I understand. Are you saying the import (and the other commands) should be this:
python mailman-web hyperkitty_import -l foo-list@example.com $var_prefix/archives/private/foo-list.mbox/foo-list.mbox
On 11/1/25 12:19, dap1--- via Mailman-users wrote:
I don't think I understand. Are you saying the import (and the other commands) should be this:
python mailman-web hyperkitty_import -l foo-list@example.com $var_prefix/archives/private/foo-list.mbox/foo-list.mbox
With your venv active the command is just mailman-web
not python mailman-web
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
On 11/2/25 06:45, dap1--- via Mailman-users wrote:
That seems to have worked. Thanks. Shouldn't that be documented as well?
It (the name of the Django admin command) is documented in the Note in the first section of the top level doc at https://docs.mailman3.org/en/latest/
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
dap1--- via Mailman-users writes:
That seems to have worked. Thanks. Shouldn't that be documented as well?
It is documented. In the Apache or Ubuntu docs. Your Mailman installation is a *system*. We will help you with *other people's applications* as we can, but it is *not* our responsibility to do so -- it's a freebie you get because we care.
We don't care *enough* to create and maintain documentation of third party applications, because there are dozens of OS distributions and "mailing list packages" and several webservers that are used to support Mailman installations. Not to mention that such applications are frequently updated and new tools and conventions (and bugs!) added (that's *why* we recommend a virtual environment, and *why* distros like Ubuntu *enforce* virtual environments for installations from source). We would have no time to work on and support Mailman.
If you think it's nevertheless worth doing, feel free to contribute it.
-- GNU Mailman consultant (installation, migration, customization) Sirius Open Source https://www.siriusopensource.com/ Software systems consulting in Europe, North America, and Japan
Stephen: I get it. It just seems there is no place where all these *nix dependent variations are easily found. Mailman docs seems like to logical place. I'd be happy to add those notes if I knew how.
Anyway, I still need help. I migrated my mailman2 to mailman3 per the documentation and all seemed to go well. However, now that I have the web UI working, no lists show up. Indeed, using mysql, all the relevant tables in mailman db are empty. How do I figure out if the import really worked when there are no error messages?
On 11/3/25 08:01, dap1--- via Mailman-users wrote:
Anyway, I still need help. I migrated my mailman2 to mailman3 per the documentation and all seemed to go well. However, now that I have the web UI working, no lists show up. Indeed, using mysql, all the relevant tables in mailman db are empty. How do I figure out if the import really worked when there are no error messages?
If mailman import21 didn't report any errors, it really did the
import. Likewise if mailman-web hyperkitty_import didn't report any
errors, it really did the import.
If you followed https://docs.mailman3.org/en/latest/install/virtualenv.html your database is postgreSQL, not MySQL.
What do you have in the [database] section in /etc/mailman3/mailman.cfg and in the DATABASES definition in /etc/mailman3/settings.py?
Based on https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message/... I think you have more than one configuration and things are confused between them.
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
For the record I am not using posgreSQL. I have a lot of other things in MySQL and I don't want to maintain 2 databases. I am following the virtual documentation. However, from the other thread I had to make a lot of adjustments for Ubuntu. If there are 2 configurations I don't know how that happened or where the other one is.
In settings.py:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'mailmanweb', 'USER': 'mailman', # TODO: Replace this with the password. 'PASSWORD': 'pppppppp', 'HOST': 'localhost', 'PORT': '3306', # For MySQL/MariaDB, in addition to changing the 'ENGINE' setting, # uncomment the following to enable utf8 4-byte encodings. 'OPTIONS': {'charset': 'utf8mb4'}, } }
In mailman.cfg:
[database] class: mailman.database.mysql.MySQLDatabase url: mysql+pymysql://mailman:pppppppp@localhost/mailman?charset=utf8mb4&use_unicode=1
On 11/4/25 11:12, dap1--- via Mailman-users wrote:
For the record I am not using posgreSQL. I have a lot of other things in MySQL and I don't want to maintain 2 databases. I am following the virtual documentation. However, from the other thread I had to make a lot of adjustments for Ubuntu. If there are 2 configurations I don't know how that happened or where the other one is.
In https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message/... you report receiving a message with
Subject: Cron <www-data@dap002> [ -f /usr/bin/django-admin ] && flock -n /var/run/mailman3-web/cron.minutely /usr/share/mailman3-web/manage.py runjobs minutely
The issues I have with this are django-admin should be in your venv, not in /usr/bin/ and mailman3-web should be in your venv, not in /usr/share/ and Mailman crons should be run as user mailman, not www-data.
Did you perhaps run pip install mailman-web without your venv active?
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
As far as I know I did everything (except the /etc/mailman3 stuff) in the venv environment. Pip is not even available outside of mailman user. When I try to run pip again it says requirement already satisfied. I don't suppose there is a checkparms like in mailman2.
On 11/5/25 09:59, dap1--- via Mailman-users wrote:
As far as I know I did everything (except the /etc/mailman3 stuff) in the venv environment. Pip is not even available outside of mailman user. When I try to run pip again it says requirement already satisfied. I don't suppose there is a checkparms like in mailman2.
I'm not aware of any Mailman 2.1 checkparams. There is check_perms, but I don't know if that's what you want.
The fact remains that something is checking for /usr/bin/django-admin,
finding it and then trying to run flock -n /var/run/mailman3-web/cron.minutely /usr/share/mailman3-web/manage.py runjobs minutely
If everything is in your venv, why is there a /usr/bin/django-admin
and perhaps a /usr/share/mailman3-web/manage.py. These all look like
artifacts from an install of the Ubuntu mailman-web package.
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
Now that I THINK all the other issues are resolved I can get back to this. I can't answer your questions. I can't explain it unless django came already already installed with Ubuntu server.There is 'python3-django' installed outside of the venv. Can I simply remove it?
On 11/7/25 08:47, dap1--- via Mailman-users wrote:
Now that I THINK all the other issues are resolved I can get back to this. I can't answer your questions. I can't explain it unless django came already already installed with Ubuntu server.There is 'python3-django' installed outside of the venv. Can I simply remove it?
Yes, you can remove it. I expect it got there as a dependency of mailman3-web which it appears was at some time installed and then removed but not purged.
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
OK, I guess that takes care of it. Now back to the original problem of my list not showing up on the web page.
On 07.11.25 19:43, dap1--- via Mailman-users wrote:
OK, I guess that takes care of it. Now back to the original problem of my list not showing up on the web page.
This is what I meant, when I have suggested you should always write which commands you ran exactly and what the output was exactly.
From what you wrote above it's virtually impossible to really understand what you did... But that information might be extremely useful to understand what the problem was and if there may be other issues related to that...
Cheers.
Gerald Vogt writes:
This is what I meant, when I have suggested you should always write which commands you ran exactly and what the output was exactly.
@dap1: The history command will do the command part for you. (I think the defaults for both bash and zsh is 1000 commands, kept separately per account.) For this purpose, it's probably enough, you likely can get a very good idea without the output.
1000 is not actually that many, especially if you don't have the collapse same command and length limits set. So if you think this might be helpful, I'd suggest doing
date >> ~/command.log; history >> ~/command.log
immediately as 'root', self, and 'mailman'. (Of course if you're a good kid and use 'sudo' instead of logging in as 'root' you won't have much in root's history.)
-- GNU Mailman consultant (installation, migration, customization) Sirius Open Source https://www.siriusopensource.com/ Software systems consulting in Europe, North America, and Japan
Unfortunately, after going through all the machinations to get here there were well over 1000 commands. What commands are you specifically needing? Everything went with no errors when I imported the list and archives. It simply does not show up in the web UI. So the question is where did that go? Now that I have the other issues resolved maybe I should just try the import again. However, I am assuming the first import has to hiding somewhere.
On Sat, Nov 8, 2025 at 6:25 PM dap1--- via Mailman-users < mailman-users@mailman3.org> wrote:
Unfortunately, after going through all the machinations to get here there were well over 1000 commands. What commands are you specifically needing? Everything went with no errors when I imported the list and archives. It simply does not show up in the web UI. So the question is where did that go? Now that I have the other issues resolved maybe I should just try the import again. However, I am assuming the first import has to hiding somewhere.
If you connect to your DB and run: SELECT id, domain FROM django_site;
Do you see an ID matching your site name? Does the ID match what you have as SITE_ID in settings.py (aka Django setting)?
-- Best regards, Odhiambo WASHINGTON, Nairobi,KE +254 7 3200 0004/+254 7 2274 3223 In an Internet failure case, the #1 suspect is a constant: DNS. "Oh, the cruft.", egrep -v '^$|^.*#' ¯\_(ツ)_/¯ :-) [How to ask smart questions: http://www.catb.org/~esr/faqs/smart-questions.html]
Thanks. That obviously means my list was never created:
mysql> select id,domain from django_site; +----+-------------+ | id | domain | +----+-------------+ | 1 | example.com | +----+-------------+ 1 row in set (0.00 sec)
I never got any errors trying to create it but at least now I know where to look when I do.
On 11/8/25 08:26, dap1--- via Mailman-users wrote:
Thanks. That obviously means my list was never created:
mysql> select id,domain from django_site; +----+-------------+ | id | domain | +----+-------------+ | 1 | example.com | +----+-------------+ 1 row in set (0.00 sec)
I never got any errors trying to create it but at least now I know where to look when I do.
Actually a better place to look in the db is
select list_name from mailinglists;
or in the file system
ls -l /opt/mailman/mm/var/lists
How did you attempt to create it? If in mailman shell did you commit().
The easiest way to create it is mailman create my_list@my.domain You
don't need to specify any options as everything will be imported by
mailman import21
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
I am assuming the 's' is a typo as there is no table mailinglists.
mysql> select list_name from mailinglist; Empty set (0.00 sec)
$ ls -l /opt/mailman/mm/var/lists total 0
On 11/8/25 09:24, dap1--- via Mailman-users wrote:
I am assuming the 's' is a typo as there is no table mailinglists.
Yes, sorry.
mysql> select list_name from mailinglist; Empty set (0.00 sec)
$ ls -l /opt/mailman/mm/var/lists total 0
I'm still waiting for a response to https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message/...
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
Arrrgggggg!!!! This is so frustrating:
$ mailman create --domain --owner uuuuu@dddddddd.net lllllllllllll@dddddddd.net Usage: mailman create [OPTIONS] LISTNAME Try 'mailman create -h' for help.
Error: List already exists: lllllllllllll@dddddddd.net
On 11/8/25 09:06, dap1--- via Mailman-users wrote:
Arrrgggggg!!!! This is so frustrating:
$ mailman create --domain --owner uuuuu@dddddddd.net lllllllllllll@dddddddd.net
--domain is the default and --owner is not necessary as the owner(s) will be imported from the MM 2.1 list.
Error: List already exists: lllllllllllll@dddddddd.net
And what does mailman info show?
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
~$ mailman info GNU Mailman 3.3.10 (Tom Sawyer) Python 3.12.3 (main, Aug 14 2025, 17:47:21) [GCC 13.3.0] config file: /opt/mailman/var/etc/mailman.cfg db url: sqlite:////opt/mailman/var/data/mailman.db devmode: DISABLED REST root url: http://localhost:8001/3.1/ REST credentials: restadmin:restpass
I haven't replied to your link because the list apparently hasn't been created properly yet.
On 11/8/25 10:35, dap1--- via Mailman-users wrote:
~$ mailman info GNU Mailman 3.3.10 (Tom Sawyer) Python 3.12.3 (main, Aug 14 2025, 17:47:21) [GCC 13.3.0] config file: /opt/mailman/var/etc/mailman.cfg
What is /opt/mailman/var/etc/mailman.cfg? Is it a symlink to /etc/mailman3/mailman.cfg or is it a separate file.
In any case mailman info should report /etc/mailman3/mailman.cfg as
the config file.
Are you running these commands as the mailman user with the venv active. That MUST always be the way you run them.
db url: sqlite:////opt/mailman/var/data/mailman.db
Is this the sqlite db you are looking at?
I haven't replied to your link because the list apparently hasn't been created properly yet.
If you are referring to https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message/... the questions there were to help diagnose why the list was apparently not created, at least where you think it should be. They ask for more detail about how you ran the commands that didn't do what you expect. What they ask doesn't in any way require the list to be created where you think it should me.
What is going on here is if I had root access to your server, I could probably figure this out in minutes, but I don't have that access and I would refuse it if offered for multiple reasons, so I need to ask you to do what I would do and report the results so I can move on to the next thing. So if you want to solve this, please do and report the things I ask.
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
Yes, everything is from the virtual environment and there were no errors reported anywhere during the process.
<venv> $ ls -l /opt/mailman/var/etc total 4 -rw-rw---- 1 mailman mailman 501 Oct 19 11:07 mailman.cfg
The sqlite line bothered me from the beginning. Shouldn't it be mysql?
<venv> $ ls -l /opt/mailman/var/data total 300 -rw-rw---- 1 mailman mailman 274432 Nov 1 14:40 mailman.db -rw-rw---- 1 mailman mailman 343 Nov 1 14:39 postfix_domains -rw-r----- 1 mailman mailman 12288 Nov 1 14:39 postfix_domains.db -rw-rw---- 1 mailman mailman 1003 Nov 1 14:39 postfix_lmtp -rw-r----- 1 mailman mailman 12288 Nov 1 14:39 postfix_lmtp.db
I did this import command:
<venv> $ mailman import21 lllllllllllll@ddddddddd.net /tmp/config.pck
This was the hyperkitty command:
<venv> $ mailman-web hyperkitty_import -l lllllllllllll@ddddddddd.net /tmp/lllllllllllll.mbox
<venv> $ mailman-web diffsettings|grep DATABASES DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql', 'NAME': 'mailmanweb', 'USER': 'mailma n', 'PASSWORD': 'ppppppppp', 'HOST': 'localhost', 'PORT': '3306', 'OPTIONS': {'charset': 'utf8mb4'}, 'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0, 'CONN_HEALTH_CHECKS': False, 'TIME_ ZONE': None, 'TEST': {'CHARSET': None, 'COLLATION': None, 'MIGRATE': True, 'MIRROR': None, 'NAME': N one}}}
On 11/8/25 11:27, dap1--- via Mailman-users wrote:
Yes, everything is from the virtual environment and there were no errors reported anywhere during the process.
<venv> $ ls -l /opt/mailman/var/etc total 4 -rw-rw---- 1 mailman mailman 501 Oct 19 11:07 mailman.cfg
The sqlite line bothered me from the beginning. Shouldn't it be mysql?
I'm still concerned that mailman info reports the config at
/opt/mailman/var/etc/mailman.cfg instead of /etc/mailman3/mailman.cfg.
The database is sqlite because thats what's defined in /opt/mailman/var/etc/mailman.cfg. Did you create /etc/mailman3/mailman.cfg? what does
diff /etc/mailman3/mailman.cfg /opt/mailman/var/etc/mailman.cfg
give? You are not seeing the list in mysql because Mailman core is using the sqlite db at /opt/mailman/var/data/mailman.db
<venv> $ ls -l /opt/mailman/var/data total 300 -rw-rw---- 1 mailman mailman 274432 Nov 1 14:40 mailman.db -rw-rw---- 1 mailman mailman 343 Nov 1 14:39 postfix_domains -rw-r----- 1 mailman mailman 12288 Nov 1 14:39 postfix_domains.db -rw-rw---- 1 mailman mailman 1003 Nov 1 14:39 postfix_lmtp -rw-r----- 1 mailman mailman 12288 Nov 1 14:39 postfix_lmtp.db
The postfix files are good, but the mailman.db is spurious because the mailman.cfg that the mailman command is using most likely doesn't define a [database] section and gets the default from https://gitlab.com/mailman/mailman/-/blob/master/src/mailman/config/schema.c...
The [database] you have defined in mailman.cfg as
[database] class: mailman.database.mysql.MySQLDatabase url: mysql+pymysql://mailman:pppppppp@localhost/mailman?charset=utf8mb4&use_unicode=1
is presumably defined in /etc/mailman3/mailman.cfg which isn't being used.
What is the content of /opt/mailman/venv/bin/mailman? Do you have the environment variable MAILMAN_CONFIG_FILE set?
I did this import command:
<venv> $ mailman import21 lllllllllllll@ddddddddd.net /tmp/config.pck
Which works but imports to the list defined in the sqlite database at /opt/mailman/var/data/mailman.db.
This was the hyperkitty command:
<venv> $ mailman-web hyperkitty_import -l lllllllllllll@ddddddddd.net /tmp/lllllllllllll.mbox
<venv> $ mailman-web diffsettings|grep DATABASES DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql', 'NAME': 'mailmanweb', 'USER': 'mailma n', 'PASSWORD': 'ppppppppp', 'HOST': 'localhost', 'PORT': '3306', 'OPTIONS': {'charset': 'utf8mb4'}, 'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0, 'CONN_HEALTH_CHECKS': False, 'TIME_ ZONE': None, 'TEST': {'CHARSET': None, 'COLLATION': None, 'MIGRATE': True, 'MIRROR': None, 'NAME': N one}}}
This looks correct.
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
I guess it is obvious pointers are still messed up.
<venv> $ diff /etc/mailman3/mailman.cfg /opt/mailman/var/etc/mailman.cfg 1,32c1,13 < # /etc/mailman3/mailman.cfg < [paths.here] < var_dir: /opt/mailman/mm/var < < [mailman] < layout: here < # # This address is the "site owner" address. Certain messages which must be < # # delivered to a human, but which can't be delivered to a list owner (e.g. a < # # bounce from a list owner), will be sent to this address. It should point to < # # a human. < site_owner: uuuu@ddddddddd.net < < [database] < class: mailman.database.mysql.MySQLDatabase < url: mysql+pymysql://mailman:ppppppp@localhost/mailman?charset=utf8mb4&use_unicode=1 < < [archiver.prototype] < enable: yes < < # # For the HyperKitty archiver. < [archiver.hyperkitty] < class: mailman_hyperkitty.Archiver < enable: yes < configuration: /etc/mailman3/mailman-hyperkitty.cfg < < [shell] < history_file: $var_dir/history.py < < [mta] < verp_confirmations: yes < verp_personalized_deliveries: yes < verp_delivery_interval: 1
# AUTOMATICALLY GENERATED BY MAILMAN ON 2025-10-19 15:07:56 UTC # # This is your GNU Mailman 3 configuration file. You can edit this file to # configure Mailman to your needs, and Mailman will never overwrite it. # Additional configuration information is available here: # # https://mailman.readthedocs.io/en/latest/src/mailman/config/docs/config.html # # For example, uncomment the following lines to run Mailman in developer mode. # # [devmode] # enabled: yes # recipient: your.address@your.domain
<venv> $ cat /opt/mailman/venv/bin/mailman #!/opt/mailman/venv/bin/python3 # -*- coding: utf-8 -*- import re import sys from mailman.bin.mailman import main if __name__ == '__main__': sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) sys.exit(main())
MAILMAN_CONFIG_FILE is not set.
On 11/8/25 12:29, dap1--- via Mailman-users wrote:
I guess it is obvious pointers are still messed up.
I still don't understand why the mailman command is getting it's
config from /opt/mailman/mm/var/etc/mailman.cfg instead of
/etc/mailman3/mailman.cfg, but as a workaround do
rm /opt/mailman/mm/var/etc/mailman.cfg ln -s /etc/mailman3/mailman.cfg /opt/mailman/mm/var/etc/mailman.cfg
Then you can redo the mailman create and mailman import21 processes.
You can also delete the /opt/mailman/var/data/mailman.db sqlite db.
I suspect you don't need to redo the mailman-web hyperkitty_import
unless there are additional messages in the .mbox, as I suspect the
archives are there at http(s)://your.host/archives/ from the prior run
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
I did the create and it says it was created. I guess that means I blew it away correctly. However, it still does not show up in the db:
mysql> select list_name from mailinglist; Empty set (0.00 sec)
<venv> $ ls -l /opt/mailman/mm/var/lists total 0
Do I continue with the import21 anyway?
On 11/8/25 13:11, dap1--- via Mailman-users wrote:
I did the create and it says it was created. I guess that means I blew it away correctly. However, it still does not show up in the db:
What does mailman info now show for the database?
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
Same as before.
<venv> $ mailman info GNU Mailman 3.3.10 (Tom Sawyer) Python 3.12.3 (main, Aug 14 2025, 17:47:21) [GCC 13.3.0] config file: /opt/mailman/var/etc/mailman.cfg db url: sqlite:////opt/mailman/var/data/mailman.db devmode: DISABLED REST root url: http://localhost:8001/3.1/ REST credentials: restadmin:restpass
It is getting late here so I probably won't get back to this until tomorrow. Thanks for your help and sorry for being a PITA.
On 11/8/25 13:25, dap1--- via Mailman-users wrote:
Same as before.
<venv> $ mailman info GNU Mailman 3.3.10 (Tom Sawyer) Python 3.12.3 (main, Aug 14 2025, 17:47:21) [GCC 13.3.0] config file: /opt/mailman/var/etc/mailman.cfg
And is /opt/mailman/var/etc/mailman.cfg now a symlink to /etc/mailman3/mailman.cfg? If not, make it so. If it is you could try
rm /opt/mailman/var/etc/mailman.cfg cp /etc/mailman3/mailman.cfg /opt/mailman/var/etc/mailman.cfg
db url: sqlite:////opt/mailman/var/data/mailman.db devmode: DISABLED REST root url: http://localhost:8001/3.1/ REST credentials: restadmin:restpass
It is getting late here so I probably won't get back to this until tomorrow. Thanks for your help and sorry for being a PITA.
We want to help. The only pain is when you don't provide requested information.
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
I think I have it now in part. The symlink did not work (odd I did not get an error) but is correct now:
<venv> $ ls -l /opt/mailman/var/etc/mailman.cfg lrwxrwxrwx 1 mailman mailman 25 Nov 9 12:01 /opt/mailman/var/etc/mailman.cfg -> /etc/mailman3/mailman.cfg
I can now see the list. I can't find the URL for members so I'm not sure if this really worked.
<venv> $ mailman import21 lllllllllll@ddddddddd.net /tmp/config.pck Importing members [####################################] 100%uuuuuuu@aol.com is banned and not imported with role MemberRole.member
Importing owners [####################################] 100%oooo@ddddddddd.net is already imported with role MemberRole.owner
Importing moderators [####################################] 100% Importing defers [####################################] 100% Importing holds [####################################] 100% Importing rejects [####################################] 100% Importing discards [####################################] 100%
It seems the archives were imported but when I go to that page there are no entries:
<venv> $ mailman-web hyperkitty_import --since=12/25/2005 -l lllllllllllli@ddddddd.net /tmp/llllllllllll.mbox Importing from mbox file /tmp/lllllllllll.mbox to lllllllllll@ddddddd.net Computing thread structure Synchronizing properties with Mailman Warming up cache The full-text search index is not updated for this list. It will not be updated by the 'minutely' incremental update job. To update the index for this list, run the Django admin command with arguments 'update_index_one_list llllllllllll@dddddddd.net'. <venv> $ mailman-web update_index_one_list llllllllllll@dddddddd.net Indexing 1808 emails
On 11/9/25 10:04, dap1--- via Mailman-users wrote:
I can now see the list. I can't find the URL for members so I'm not sure if this really worked.
Have you created a Django superuser for yourself?
mailman-web createsuperuser
You need to do that and then go to https://your.host/accounts/login/ and log in as that user.
Then if you go to https://your.host/mailman3/lists/lllllllllll@ddddddddd.net/ you will see a Users dropdown in the secondary nav bar and can view members, nonmembers, moderators and owners. You can also go directly to https://your.host/mailman3/lists/lllllllllll@ddddddddd.net/members/x/ where x is one of member, nonmember, moderator or owner.
It seems the archives were imported but when I go to that page there are no entries:
To what URL are you going? Are you logged in? depending on the list's archiving settings you may need to be logged in as a superuser or list member to see the archives.
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
I created the superuser (used default, mailman).
<venv> $ mailman-web createsuperuser Username (leave blank to use 'mailman'): Email address: Password: Password (again): Superuser created successfully.
When I try to login I get a 403 error. No errors are in the apache2 log.
As for archives, I'm going to https://localhost/archives/list/llllllllll@dddddd.net/
No, I am not logged in. I am an admin on mailman2 so I thought it would import credentials. But I am unable to log in as anyone (password problem). I see 3 options on the archive page, recent, active and popular. None of which show any threads. Since the list has been dormant for quite a while there are no 'recent' posts nor 'active' posts. I don't know what makes a thread 'popular'. I guess the only way to know what is going on at this point is to be able to login as superuser.
OK, backup I can see the archives. I missed the "All Threads" button on the right. I think I just need admin access now.
On 11/9/25 11:19, dap1--- via Mailman-users wrote:
I created the superuser (used default, mailman).
When I try to login I get a 403 error. No errors are in the apache2 log.
What's in /opt/mailman/mm/var/logs/error.log? Do you get the 403 when going to the login page or when submitting the login form?
is it a generic 403 error page or a styled page that says user or password is incorrect?
Are you sure you are using the correct password. You can use
mailman-web changepassword
to be sure?
No, I am not logged in. I am an admin on mailman2 so I thought it would import credentials. But I am unable to log in as anyone (password problem).
Mailman 3 is completely different from Mailman 2.1 in this respect. In mailman 2.1 an address listed as owner only meant that address was sent admin notices. Being able to manage a list meant knowing the list admin password whether or not you were listed as an owner, and similarly for moderator.
In Mailman 3 the authentication is being logged in as a person who is a superuser or who has an address matching that of an owner or moderator. And the login's are managed by django-allauth. There are multiple reasons why import21 won't create those logins, not the least of which is that Mailman 2.1 authentication is per list and Mailman 3 authentication is per user.
See https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/docs/8-mile... and perhaps also https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/docs/archit...
I see 3 options on the archive page, recent, active and popular. None of which show any threads. Since the list has been dormant for quite a while there are no 'recent' posts nor 'active' posts. I don't know what makes a thread 'popular'. I guess the only way to know what is going on at this point is to be able to login as superuser.
'favorites' are posts you've marked as a favorite and 'popular' are posts with some number of up votes. None of these will exist in an imported archive as those are HyperKitty things with no pipermail equivalent.
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
Nothing of interest is in the error log (I still have debug=true):
[2025-11-10 15:35:21 +0000] [5297] [DEBUG] GET /mailman3/ [2025-11-10 15:35:25 +0000] [5297] [DEBUG] GET /accounts/login/ [2025-11-10 15:35:28 +0000] [5295] [DEBUG] POST /accounts/login/
I get a stylized page (not a normal apache2 page). I don't know how to attach an image but this is what it says:
Forbidden (403)
CSRF verification failed. Request aborted.
More information is available with DEBUG=True.
I did change the password to be sure but yes I am using the correct password.
dap1--- via Mailman-users writes:
[2025-11-10 15:35:21 +0000] [5297] [DEBUG] GET /mailman3/ [2025-11-10 15:35:25 +0000] [5297] [DEBUG] GET /accounts/login/ [2025-11-10 15:35:28 +0000] [5295] [DEBUG] POST /accounts/login/
I assume the preceding "POST /accounts/login/" was you entering username and password?
Forbidden (403)
CSRF verification failed. Request aborted.
CSRF (cross-site request forgery) is an attack where an attacker tries to spoof your authenticated session. This is prevented by adding a one-time authentication token to the page to ensure that the login procedure all comes from the same host, and then the resulting session cookie is provided only to the authorized user. See https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Pr...
Somehow your browser or site is doing this incorrectly, and your attempt to log in is being refused. One way this can happen is if you use the "back page" browser button (or otherwise the browser history). Otherwise I don't know how this can happen offhand. Maybe Mark knows.
-- GNU Mailman consultant (installation, migration, customization) Sirius Open Source https://www.siriusopensource.com/ Software systems consulting in Europe, North America, and Japan
Your assumption is correct. I did not use the back button. I went to https://localhost/mailman3 the clicked on the signin button in the upper right. After filling in the username and password the 403 page came up.
If it matters, I tried the "forgot password" link and it immediately went to the 403 page. I tried with both Firefox (my main browser) and chrome.
On 11/10/25 09:45, dap1--- via Mailman-users wrote:
Your assumption is correct. I did not use the back button. I went to https://localhost/mailman3 the clicked on the signin button in the upper right. After filling in the username and password the 403 page came up.
See https://docs.djangoproject.com/en/5.2/ref/csrf/#how-it-works particularly the parts about cookies.
Is localhost included in ALLOWED_HOSTS in your settings.py?
Is there another domain that can be used to reach your server?, if so is that in ALLOWED_HOSTS, and what if you use that domain rather than localhost.
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
Not sure what that means. I would expect to allow any domain to access mailman-web since members can come from anywhere. Isn't that what the '*' means?.
ALLOWED_HOSTS = ["*", "localhost", # Archiving API from Mailman, keep it. "127.0.0.1", # "lists.your-domain.org", # Add here all production domains you have. ]
I don't know if this has anything to do with anything but I'm seeing this line in the mailman3 status:
mailman3.service: Can't open PID file /opt/mailman/mm/var/master.pid (yet?)
I checked and the pid file is being created.
On 11/11/25 08:51, dap1--- via Mailman-users wrote:
I don't know if this has anything to do with anything but I'm seeing this line in the mailman3 status:
mailman3.service: Can't open PID file /opt/mailman/mm/var/master.pid (yet?)
I checked and the pid file is being created.
This was asked by you at https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message/... and answered at https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message/...
Also see https://gitlab.com/mailman/mailman/-/merge_requests/1397 and https://gitlab.com/mailman/mailman-suite-doc/-/merge_requests/183
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
On 11/11/25 08:45, dap1--- via Mailman-users wrote:
Not sure what that means. I would expect to allow any domain to access mailman-web since members can come from anywhere. Isn't that what the '*' means?.
ALLOWED_HOSTS = ["*", "localhost", # Archiving API from Mailman, keep it. "127.0.0.1", # "lists.your-domain.org", # Add here all production domains you have. ]
You should not have the "*". The remote host accessing mailman-web does not need to be in ALLOWED_HOSTS. The host that needs to be allowed is the host that is receiving the request.
You should remove the "*" as it's too permissive, and as it says, add any and all host names that external users use to access the system. That's why it's called ALLOWED_HOSTS rather that CLIENTS.
And have you tried logging in using one of those host names rather than localhost?
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
I added the hostname of the local host to ALLOWED_HOSTS and removed the '*'. I then tried using the hostname in the URL but go the same result. Nothing of interest in the error.log.
dap1--- via Mailman-users writes:
I added the hostname of the local host to ALLOWED_HOSTS and removed the '*'. I then tried using the hostname in the URL but go the same result. Nothing of interest in the error.log.
It's NOT DNS??!!!?!?! Sorry, couldn't resist the "it's DNS, it's ALWAYS DNS" joke..
Seriously, this looks more and more like a CSRF issue. Check the page with "curl https://your.host/accounts/login/ | grep csrf". It should output a line like
<input type="hidden" name="csrfmiddlewaretoken" value="n4u4Ju2rVsemuGWaqbVHdfd1V8u6WWnEDe67jjDJFNWdwqGIxGnlD9fPwLGsyP0M">
If it's not there, that's the problem, but I don't know offhand which template is responsible for putting it there. Unfortunately it doesn't seem to be stored in the SQL DB, so if it's there, I don't know how to check if it's correct. Maybe Mark has some ideas.
Steve
-- GNU Mailman consultant (installation, migration, customization) Sirius Open Source https://www.siriusopensource.com/ Software systems consulting in Europe, North America, and Japan
I had to use the -k option because of the self signed cert but the line is there:
$ curl -k https://localhost/accounts/login/ | grep csrf % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 8110 100 8110 0 0 203k 0 --:--:-- --:--:-- --:--:-- 208k <input type="hidden" name="csrfmiddlewaretoken" value="7Uyjp8XIrQMlNQeALFYS3Hfoe9RvENYorzl7gVriomzuv c6oPROr3voiVBtKEulS">
dap1--- via Mailman-users writes:
I had to use the -k option because of the self signed cert but the line is there:
OK, that's not it. If it's CSRF, there's some problem with matching the data in the backend, but I have no idea. I tried to find the cookie in the Mailman database but either it's not there or I missed it. Anyway, I don't have a further suggestion for fixing this installation at this point.
-- GNU Mailman consultant (installation, migration, customization) Sirius Open Source https://www.siriusopensource.com/ Software systems consulting in Europe, North America, and Japan
On 11/13/25 06:23, Stephen J. Turnbull wrote:
OK, that's not it. If it's CSRF, there's some problem with matching the data in the backend, but I have no idea. I tried to find the cookie in the Mailman database but either it's not there or I missed it. Anyway, I don't have a further suggestion for fixing this installation at this point.
And I'm out of ideas too. I suggest you, @dap1, proceed by looking at https://www.google.com/search?q=django+csrf+failure for possibly relevant information.
If that doesn't help, you might also consider posting to https://forum.djangoproject.com/ (see https://docs.djangoproject.com/en/dev/internals/mailing-lists/#django-forum).
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
dap1--- via Mailman-users writes:
I did not use the back button.
If it matters, I tried the "forgot password" link and it immediately went to the 403 page. I tried with both Firefox (my main browser) and chrome.
If there were a password problem, I'm pretty sure you get a successful fetch (status = 200, not 403) but the returned page tells you credentials are invalid. On the other hand, you do get to the login page so it's very probably not a file or directory permissions problem.
I took a look at the csrf settings in the template system but it's insanely complicated, and I couldn't figure out a simple fix. With all due respect to Mark, I have no confidence that you're "getting close" to a working system. If this is a system that doesn't provide any services but Mailman I'd say start over.
-- GNU Mailman consultant (installation, migration, customization) Sirius Open Source https://www.siriusopensource.com/ Software systems consulting in Europe, North America, and Japan
This wouldn't have anything to do with the fact I am using a self signed certificate, would it?
On 11/11/25 10:18, dap1--- via Mailman-users wrote:
This wouldn't have anything to do with the fact I am using a self signed certificate, would it?
It could, but I think only if when you POST the login your browser complains about the certificate and you have to OK it before it posts the request. Such a scenario might lose the cookie. Otherwise, I don't think so.
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
On 11/8/25 12:18, Mark Sapiro wrote:
I'm still concerned that
mailman inforeports the config at /opt/mailman/var/etc/mailman.cfg instead of /etc/mailman3/mailman.cfg.
Grasping a straws: Is /etc/mailman3/mailman.cfg readable by the mailman user?
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
<venv> $ ls -l /etc/mailman3 total 20 -rw-rw-r-- 1 mailman mailman 490 Nov 1 14:53 gunicorn.py -rw-rw-r-- 1 mailman mailman 841 Oct 19 11:35 mailman.cfg -rw-rw-r-- 1 mailman mailman 87 Oct 18 17:37 mailman-hyperkitty.cfg drwxrwxr-x 2 mailman mailman 4096 Nov 4 14:11 __pycache__ -rw-r--r-- 1 root root 2875 Nov 4 14:10 settings.py
I don't suppose settings.py is the problem. Is there a place to change that path somewhere?
I wonder if it would be easier to blow the whole thing away and start over.
On 11/8/25 12:45, dap1--- via Mailman-users wrote:
<venv> $ ls -l /etc/mailman3 total 20 -rw-rw-r-- 1 mailman mailman 490 Nov 1 14:53 gunicorn.py -rw-rw-r-- 1 mailman mailman 841 Oct 19 11:35 mailman.cfg -rw-rw-r-- 1 mailman mailman 87 Oct 18 17:37 mailman-hyperkitty.cfg drwxrwxr-x 2 mailman mailman 4096 Nov 4 14:11 __pycache__ -rw-r--r-- 1 root root 2875 Nov 4 14:10 settings.py
I don't suppose settings.py is the problem. Is there a place to change that path somewhere?
There is no need to change that path. Django is getting it correctly per your reply about
mailman-web diffsettings|grep DATABASES
You could
sudo chown mailman:mailman /etc/mailman3/settings.py
but it's world readable so that isn't needed.
I wonder if it would be easier to blow the whole thing away and start over.
At one point that was probably true, but you're almost there. See https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message/...
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
On 11/8/25 07:24, dap1--- via Mailman-users wrote:
Unfortunately, after going through all the machinations to get here there were well over 1000 commands. What commands are you specifically needing? Everything went with no errors when I imported the list and archives. It simply does not show up in the web UI. So the question is where did that go? Now that I have the other issues resolved maybe I should just try the import again. However, I am assuming the first import has to hiding somewhere.
How did you run mailman import21? I.e. as what user, was your venv
active, was there any /path/to/mailman? What do you get from mailman info run the same way - i.e., what does it report for config file: and
db url:? Are these what you expect?
How did you run mailman-web hyperkitty_import? Again, as what user,
was your venv active, was there any /path/to/mailman-web? What do you
get from mailman-web diffsettings|grep DATABASES run the same way. is
the ENGINE what you expect?
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
You should not simply remove files which have been installed by packages. You should remove the package which wrote the file. And only remove files which have been left behind or abandoned.
If you have removed all mailman3 packages and then you should run
# apt autoremove
to remove all packages which have been installed as dependency before.
That should clean it up. However, it depends on what you have installed directly with apt and what you have installed as dependencies only.
You should also run
# apt list '~c'
to check for residual configuration files from packages which have been removed.
And it often helps a lot for reference if you copy the exact commands and the full output of those commands into your response.
Cheers.
On 07.11.25 17:47, dap1--- via Mailman-users wrote:
Now that I THINK all the other issues are resolved I can get back to this. I can't answer your questions. I can't explain it unless django came already already installed with Ubuntu server.There is 'python3-django' installed outside of the venv. Can I simply remove it?
I don't know what package installed that but I'm guessing came with python3.
I did most of that already but here it is again:
$ sudo apt autoremove Reading package lists... Done Building dependency tree... Done Reading state information... Done 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
$ apt list '~c' Listing... Done dbconfig-common/noble,now 2.0.24 all [residual-config] docutils-common/noble,now 0.20.1+dfsg-3 all [residual-config] dynu-ip-update-client/now 1.0.2 amd64 [residual-config] fonts-font-awesome/noble,now 5.0.10+really4.7.0~dfsg-4.1 all [residual-config] libapache2-mod-proxy-uwsgi/noble-updates,noble-security,now 2.4.58-1ubuntu8.8 amd64 [residual-config] libjs-bootstrap4/noble-updates,noble-security,now 4.6.1+dfsg1-4+deb12u1build0.24.04.1 all [residual-config] libjs-popper.js/noble,now 1.16.1+ds-6 all [residual-config] linux-image-6.8.0-85-generic/noble-updates,noble-security,now 6.8.0-85.85 amd64 [residual-config] linux-modules-6.8.0-85-generic/noble-updates,noble-security,now 6.8.0-85.85 amd64 [residual-config] linux-modules-extra-6.8.0-85-generic/noble-updates,noble-security,now 6.8.0-85.85 amd64 [residual-config]
django3 does not come with python3. If it is installed it was either manually installed or it was installed by dependency.
Run
# apt-mark showmanual
to see which packages you have installed manually.
When you write "There is 'python3-django' installed outside of the venv." what do you mean exactly by that? Is the package python3-django installed? Is there a directory of that name?
Is it installed?
# dpkg -l \*django\*
If it is, check
# apt-cache rdepends --installed python3-django
to find out why it has been installed.
If it is not installed by a package but it is in a standard path, e.g. you have the file /usr/bin/django-admin then double check with
# dpkg -S /usr/bin/django-admin
to make sure it doesn't belong to any package.
If the file is there but does not belong to any installed package, it wasn't cleaned out with autoremove nor purge, then you must have installed it in a different way. Then your system would be pretty messed up and I would highly recommend to start over again from scratch instead of trying to fix a broken system. It's always a big mess if some other non-packaged installation installs files into standard paths in conflict with package files...
Cheers.
On 11/7/25 10:11, dap1--- via Mailman-users wrote:
I don't know what package installed that but I'm guessing came with python3.
I don't think so it would not be installed as part of python3 or python3-dev.
There are multiple things in these threads that strongly suggest that at
some point apt install mailman3-web was done.
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
dap1--- via Mailman-users writes:
Stephen: I get it. It just seems there is no place where all these *nix dependent variations are easily found. Mailman docs seems like to logical place.
*You* don't need to find *all* the variations -- just what you have installed. *We* have to find them and keep them up to date.
Anyway, I still need help. I migrated my mailman2 to mailman3 per the documentation and all seemed to go well. However, now that I have the web UI working, no lists show up. Indeed, using mysql, all the relevant tables in mailman db are empty. How do I figure out if the import really worked when there are no error messages?
I really don't have any idea how you figure these things out, because the behaviors you report make no sense. There is clearly a lot that you haven't told us, but I don't know what that might be.
Mark suggests you may have used postgresql with Mailman core. Is postgresql installed on your system? There may be multiple versions and multiple database clusters per version. Find them and check for databases named 'mailman'. (And now you're at the end of my relevant knowledge of PostgreSQL.) I know almost nothing about MySQL, but I suppose the situation may be similar to PostgreSQL (multiple versions or flavors installed simultaneously, with multiple database clusters). Check that for 'mailman' databases, too. Check for running database servers. Something like "ps aux | grep sql" might catch them all, or maybe you need to scan the whole ps list.
Mark suggests that you may have multiple configurations active depending on how you try to access Mailman. Try
find / -name mailman.cfg
This should return exactly two instances: /etc/mailman3/mailman.cfg /opt/mailman/venv/lib/python3.12/site-packages/mailman/config/mailman.cfg (I'm guessing the version of Python and I'm only 99% sure it's /opt/mailman.) If others exist, there's a good chance they were automagically created when you started mailman the first time, and some chance they're being used when you invoke 'mailman' explicitly (eg, "mailman shell" or the migration command).
Similarly
find / -name settings.py
This should return /etc/mailman3/settings.py and a truckload of them under /opt/mailman/venv/lib/python3.12/site-packages. If there are others, copy the list for possible future reference. (Can't rule valid other instances out because it's such a common name.)
Search /etc/mailman3/mailman.cfg and /etc/mailman3/settings.py for spurious database configurations. (Pretty sure we checked for mailman.cfg already and it was OK, but I don't recall mentioning settings.py.)
-- GNU Mailman consultant (installation, migration, customization) Sirius Open Source https://www.siriusopensource.com/ Software systems consulting in Europe, North America, and Japan
participants (5)
-
dap1@bellsouth.net -
Gerald Vogt -
Mark Sapiro -
Odhiambo Washington -
Stephen J. Turnbull