Search results for query "dO"
- 5643 messages
[MM3-users] Problem getting Mailman3 to work with Ubuntu 24.04.1 LTS
by sebensteg@cod.edu
Hello everyone,
We have been using Mailman3 for over a year and half. We upgraded from Ubuntu 22.04.5, where it was working fine, to Ubuntu 22.04.1. Since then, mailman3 won’t work. When we tried to start it immediately after the upgrade, we got this error:
024-09-12T23:08:04.322353+00:00 weather1 systemd[1]: Starting mailman3.service - GNU Mailing List Manager...
2024-09-12T23:08:04.935569+00:00 weather1 mailman[23628]: SystemError: type psycopg2.extensions.ReplicationConnection has the Py_TPFLAGS_HAVE_GC flag but has no traverse function
2024-09-12T23:08:04.942784+00:00 weather1 mailman[23628]: The above exception was the direct cause of the following exception:
2024-09-12T23:08:04.942869+00:00 weather1 mailman[23628]: Traceback (most recent call last):
2024-09-12T23:08:04.942938+00:00 weather1 mailman[23628]: File "/opt/mailman/venv/bin/mailman", line 8, in <module>
2024-09-12T23:08:04.943001+00:00 weather1 mailman[23628]: sys.exit(main())
2024-09-12T23:08:04.943123+00:00 weather1 mailman[23628]: ^^^^^^
2024-09-12T23:08:04.943188+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/click/core.py", line 1157, in __call__
2024-09-12T23:08:04.943242+00:00 weather1 mailman[23628]: return self.main(*args, **kwargs)
2024-09-12T23:08:04.943284+00:00 weather1 mailman[23628]: ^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-09-12T23:08:04.943325+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/click/core.py", line 1077, in main
2024-09-12T23:08:04.943449+00:00 weather1 mailman[23628]: with self.make_context(prog_name, args, **extra) as ctx:
2024-09-12T23:08:04.943508+00:00 weather1 mailman[23628]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-09-12T23:08:04.943553+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/click/core.py", line 943, in make_context
2024-09-12T23:08:04.943594+00:00 weather1 mailman[23628]: self.parse_args(ctx, args)
2024-09-12T23:08:04.943753+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/click/core.py", line 1644, in parse_args
2024-09-12T23:08:04.943799+00:00 weather1 mailman[23628]: rest = super().parse_args(ctx, args)
2024-09-12T23:08:04.943867+00:00 weather1 mailman[23628]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-09-12T23:08:04.943911+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/click/core.py", line 1408, in parse_args
2024-09-12T23:08:04.943952+00:00 weather1 mailman[23628]: value, args = param.handle_parse_result(ctx, opts, args)
2024-09-12T23:08:04.944001+00:00 weather1 mailman[23628]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-09-12T23:08:04.944043+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/click/core.py", line 2400, in handle_parse_result
2024-09-12T23:08:04.944085+00:00 weather1 mailman[23628]: value = self.process_value(ctx, value)
2024-09-12T23:08:04.944127+00:00 weather1 mailman[23628]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-09-12T23:08:04.944182+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/click/core.py", line 2362, in process_value
2024-09-12T23:08:04.944249+00:00 weather1 mailman[23628]: value = self.callback(ctx, self, value)
2024-09-12T23:08:04.944293+00:00 weather1 mailman[23628]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-09-12T23:08:04.944335+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/mailman/bin/mailman.py", line 95, in initialize_config
2024-09-12T23:08:04.944376+00:00 weather1 mailman[23628]: initialize(value)
2024-09-12T23:08:04.944419+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/mailman/core/initialize.py", line 229, in initialize
2024-09-12T23:08:04.944460+00:00 weather1 mailman[23628]: initialize_2(propagate_logs=propagate_logs)
2024-09-12T23:08:04.944518+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/mailman/core/initialize.py", line 187, in initialize_2
2024-09-12T23:08:04.944561+00:00 weather1 mailman[23628]: config.db = getUtility(IDatabaseFactory, utility_name).create()
2024-09-12T23:08:04.944603+00:00 weather1 mailman[23628]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-09-12T23:08:04.944708+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/mailman/database/factory.py", line 57, in create
2024-09-12T23:08:04.944769+00:00 weather1 mailman[23628]: database.initialize()
2024-09-12T23:08:04.944856+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/mailman/database/base.py", line 117, in initialize
2024-09-12T23:08:04.944899+00:00 weather1 mailman[23628]: self.engine = create_engine(
2024-09-12T23:08:04.944941+00:00 weather1 mailman[23628]: ^^^^^^^^^^^^^^
2024-09-12T23:08:04.944982+00:00 weather1 mailman[23628]: File "<string>", line 2, in create_engine
2024-09-12T23:08:04.945025+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/sqlalchemy/util/deprecations.py", line 281, in warned
2024-09-12T23:08:04.945070+00:00 weather1 mailman[23628]: return fn(*args, **kwargs) # type: ignore[no-any-return]
2024-09-12T23:08:04.945112+00:00 weather1 mailman[23628]: ^^^^^^^^^^^^^^^^^^^
2024-09-12T23:08:04.945165+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/sqlalchemy/engine/create.py", line 599, in create_engine
2024-09-12T23:08:04.945208+00:00 weather1 mailman[23628]: dbapi = dbapi_meth(**dbapi_args)
2024-09-12T23:08:04.945249+00:00 weather1 mailman[23628]: ^^^^^^^^^^^^^^^^^^^^^^^^
2024-09-12T23:08:04.945291+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/psycopg2.py", line 690, in import_dbapi
2024-09-12T23:08:04.945332+00:00 weather1 mailman[23628]: import psycopg2
2024-09-12T23:08:04.945374+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/psycopg2/__init__.py", line 51, in <module>
2024-09-12T23:08:04.945425+00:00 weather1 mailman[23628]: from psycopg2._psycopg import ( # noqa
2024-09-12T23:08:04.945478+00:00 weather1 mailman[23628]: SystemError: initialization of _psycopg raised unreported exception
2024-09-12T23:08:05.071429+00:00 weather1 systemd[1]: mailman3.service: Control process exited, code=exited, status=1/FAILURE
2024-09-12T23:08:05.071768+00:00 weather1 systemd[1]: mailman3.service: Failed with result 'exit-code'.
2024-09-12T23:08:05.072429+00:00 weather1 systemd[1]: Failed to start mailman3.service - GNU Mailing List Manager.
So, ultimately, what we decided to do was reinstall it. But the compilation fails when it tries to make a venv (virtual environment) with this error:
2024-09-12T23:08:04.322353+00:00 weather1 systemd[1]: Starting mailman3.service - GNU Mailing List Manager...
2024-09-12T23:08:04.935569+00:00 weather1 mailman[23628]: SystemError: type psycopg2.extensions.ReplicationConnection has the Py_TPFLAGS_HAVE_GC flag but has no traverse function
2024-09-12T23:08:04.942784+00:00 weather1 mailman[23628]: The above exception was the direct cause of the following exception:
2024-09-12T23:08:04.942869+00:00 weather1 mailman[23628]: Traceback (most recent call last):
2024-09-12T23:08:04.942938+00:00 weather1 mailman[23628]: File "/opt/mailman/venv/bin/mailman", line 8, in <module>
2024-09-12T23:08:04.943001+00:00 weather1 mailman[23628]: sys.exit(main())
2024-09-12T23:08:04.943123+00:00 weather1 mailman[23628]: ^^^^^^
2024-09-12T23:08:04.943188+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/click/core.py", line 1157, in __call__
2024-09-12T23:08:04.943242+00:00 weather1 mailman[23628]: return self.main(*args, **kwargs)
2024-09-12T23:08:04.943284+00:00 weather1 mailman[23628]: ^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-09-12T23:08:04.943325+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/click/core.py", line 1077, in main
2024-09-12T23:08:04.943449+00:00 weather1 mailman[23628]: with self.make_context(prog_name, args, **extra) as ctx:
2024-09-12T23:08:04.943508+00:00 weather1 mailman[23628]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-09-12T23:08:04.943553+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/click/core.py", line 943, in make_context
2024-09-12T23:08:04.943594+00:00 weather1 mailman[23628]: self.parse_args(ctx, args)
2024-09-12T23:08:04.943753+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/click/core.py", line 1644, in parse_args
2024-09-12T23:08:04.943799+00:00 weather1 mailman[23628]: rest = super().parse_args(ctx, args)
2024-09-12T23:08:04.943867+00:00 weather1 mailman[23628]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-09-12T23:08:04.943911+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/click/core.py", line 1408, in parse_args
2024-09-12T23:08:04.943952+00:00 weather1 mailman[23628]: value, args = param.handle_parse_result(ctx, opts, args)
2024-09-12T23:08:04.944001+00:00 weather1 mailman[23628]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-09-12T23:08:04.944043+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/click/core.py", line 2400, in handle_parse_result
2024-09-12T23:08:04.944085+00:00 weather1 mailman[23628]: value = self.process_value(ctx, value)
2024-09-12T23:08:04.944127+00:00 weather1 mailman[23628]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-09-12T23:08:04.944182+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/click/core.py", line 2362, in process_value
2024-09-12T23:08:04.944249+00:00 weather1 mailman[23628]: value = self.callback(ctx, self, value)
2024-09-12T23:08:04.944293+00:00 weather1 mailman[23628]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-09-12T23:08:04.944335+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/mailman/bin/mailman.py", line 95, in initialize_config
2024-09-12T23:08:04.944376+00:00 weather1 mailman[23628]: initialize(value)
2024-09-12T23:08:04.944419+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/mailman/core/initialize.py", line 229, in initialize
2024-09-12T23:08:04.944460+00:00 weather1 mailman[23628]: initialize_2(propagate_logs=propagate_logs)
2024-09-12T23:08:04.944518+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/mailman/core/initialize.py", line 187, in initialize_2
2024-09-12T23:08:04.944561+00:00 weather1 mailman[23628]: config.db = getUtility(IDatabaseFactory, utility_name).create()
But yet, we have this installed:
venv mailman@weather1:~$ pip install psycopg2-binary
Requirement already satisfied: psycopg2-binary in ./venv/lib/python3.12/site-packages (2.8.6)
Any advice on how to get this working again would be GREATLY appreciated!
Gilbert Sebenste
Meteorology Support Analyst
College of DuPage
1 year, 5 months
[MM3-users] Re: Hipperkitty failing to archive messages in a list
by Guillermo Hernandez (Oldno7)
On 4/1/22 12:27, Guillermo Hernandez (Oldno7) via Mailman-users wrote:
> First of all, best wishes and Happy New Year for everybody.
>
> Two days ago I had to reinstall all mailman3 related apps in a mailman
> 3 server (I tried to upgrade just hipperkitty, but it went bad). At
> first, all seemed running as before, but I just noted that the
> messages are not being archived.
I've found some information that can be related to the problem I had:
In https://docs.mailman3.org/projects/hyperkitty/en/latest/news.html yo
can see that in the security notes for 1.3.5
"Pass the secret archiver key in a HTTP Authorization header instead of
a GET query parameter so it doesn’t appear in logs. (CVE-2021-35058,
Closes #387)"
As the lack of any clue persists on how to solve the problem, I've just
reproduced step by step upgrade process.
I've just executed a (being "mailman3" the user configured for all of this)
pip install --upgrade --force-reinstall --no-deps --no-cache-dir
django-mailman3 mailman mailman-hyperkitty mailmanclient postorius
django hyperkitty
su -m mailman3 -c "python3 manage.py collectstatic"
su -m mailman3 -c "python3 manage.py migrate"
In this last point I've received some warnings of this kind:
*-*-*-*-*-*-*
WARNINGS:
account.EmailAddress: (models.W042) Auto-created primary key used when
not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the
AccountConfig.default_auto_field attribute to point to a subclass of
AutoField, e.g. 'django.db.models.BigAutoField'.
account.EmailConfirmation: (models.W042) Auto-created primary key used
when not defining a primary key type, by default
'django.db.models.AutoField'.
...
HINT: Configure the DEFAULT_AUTO_FIELD setting or the
SocialAccountConfig.default_auto_field attribute to point to a subclass
of AutoField, e.g. 'django.db.models.BigAutoField'.
Operations to perform:
Apply all migrations: account, admin, auth, contenttypes,
django_mailman3, django_q, hyperkitty, postorius, sessions, sites,
socialaccount
Running migrations:
No migrations to apply.
Your models in app(s): 'postorius' have changes that are not yet
reflected in a migration, and so won't be applied.
Run 'manage.py makemigrations' to make new migrations, and then
re-run 'manage.py migrate' to apply them.
*-*-*-*-*-*-*
Running a 'su -m mailman3 -c "python3 manage.py makemigrations" shows
the same warning listed before and some new errors:
*-*-*-*-*-*-*
Migrations for 'postorius':
/usr/local/lib/python3.7/site-packages/postorius/migrations/0017_alter_emailtemplate_name.py
- Alter field name on emailtemplate
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File
"/usr/local/lib/python3.7/site-packages/django/core/management/__init__.py",
line 419, in execute_from_command_line
utility.execute()
File
"/usr/local/lib/python3.7/site-packages/django/core/management/__init__.py",
line 413, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File
"/usr/local/lib/python3.7/site-packages/django/core/management/base.py",
line 354, in run_from_argv
self.execute(*args, **cmd_options)
File
"/usr/local/lib/python3.7/site-packages/django/core/management/base.py",
line 398, in execute
output = self.handle(*args, **options)
File
"/usr/local/lib/python3.7/site-packages/django/core/management/base.py",
line 89, in wrapped
res = handle_func(*args, **kwargs)
File
"/usr/local/lib/python3.7/site-packages/django/core/management/commands/makemigrations.py",
line 190, in handle
self.write_migration_files(changes)
File
"/usr/local/lib/python3.7/site-packages/django/core/management/commands/makemigrations.py",
line 228, in write_migration_files
with open(writer.path, "w", encoding='utf-8') as fh:
PermissionError: [Errno 13] Permission denied:
'/usr/local/lib/python3.7/site-packages/postorius/migrations/0017_alter_emailtemplate_name.py'
*-*-*-*-*-*-*
The file
'/usr/local/lib/python3.7/site-packages/postorius/migrations/0017_alter_emailtemplate_name.py'
does not exist at all
Despite the error, I did a 'su -m mailman3 -c "python3 manage.py
compress"' and the subsequent "django-admin compilemessages" in
/usr/local/lib/python3.7/site-packages/postorius, ../hyperkitty and
../django_mailman3
And the log continues showing the same error when trying archive a new
message.
ERROR 2022-01-05 12:27:31,406 6988 hyperkitty.views.mailman The
MAILMAN_ARCHIVER_KEY was not sent as the Authorization HTTP header.
ERROR 2022-01-05 12:27:31,418 6988 hyperkitty.views.mailman The
MAILMAN_ARCHIVER_KEY was not sent as the Authorization HTTP header.
ERROR 2022-01-05 12:27:31,685 6988 hyperkitty.views.mailman The
MAILMAN_ARCHIVER_KEY was not sent as the Authorization HTTP header.
ERROR 2022-01-05 12:27:32,045 6988 hyperkitty.views.mailman The
MAILMAN_ARCHIVER_KEY was not sent as the Authorization HTTP header.
ERROR 2022-01-05 12:27:32,070 6988 hyperkitty.views.mailman The
MAILMAN_ARCHIVER_KEY was not sent as the Authorization HTTP header.
ERROR 2022-01-05 12:27:32,093 6988 hyperkitty.views.mailman The
MAILMAN_ARCHIVER_KEY was not sent as the Authorization HTTP header.
The odd thing is that you can see the archived messages previous to a
few days ago, when I tried to upgrade hyperkitty. Only the new messages
are "disappearing" (but they are being distributed).
Some guide on what to look for, please?
This server manages just a few lists with very low traffic, but I don't
want to screw it all when upgrading other servers with normal traffic
and much more lists.
TIA
> I did not change any config. Now the log is showing
>
> ERROR 2022-01-03 12:22:15,654 7165 hyperkitty.views.mailman The
> MAILMAN_ARCHIVER_KEY was not sent as the Authorization HTTP header.
> ERROR 2022-01-03 12:22:15,674 7165 hyperkitty.views.mailman The
> MAILMAN_ARCHIVER_KEY was not sent as the Authorization HTTP header.
> ERROR 2022-01-03 12:22:15,791 7165 hyperkitty.views.mailman The
> MAILMAN_ARCHIVER_KEY was not sent as the Authorization HTTP header.
> ERROR 2022-01-03 12:22:16,208 7165 hyperkitty.views.mailman The
> MAILMAN_ARCHIVER_KEY was not sent as the Authorization HTTP header.
> ERROR 2022-01-04 11:44:55,644 30518 hyperkitty.views.mailman The
> MAILMAN_ARCHIVER_KEY was not sent as the Authorization HTTP header
> ERROR 2022-01-04 11:44:55,664 30518 hyperkitty.views.mailman The
> MAILMAN_ARCHIVER_KEY was not sent as the Authorization HTTP header
> ERROR 2022-01-04 11:44:56,478 30518 hyperkitty.views.mailman The
> MAILMAN_ARCHIVER_KEY was not sent as the Authorization HTTP header
> ERROR 2022-01-04 11:44:56,620 30518 hyperkitty.views.mailman The
> MAILMAN_ARCHIVER_KEY was not sent as the Authorization HTTP header
> ERROR 2022-01-04 11:44:56,647 30518 hyperkitty.views.mailman The
> MAILMAN_ARCHIVER_KEY was not sent as the Authorization HTTP header
>
> (it's a very low traffic list: just two messages in two days)
>
> I do believe I did the upgrade/reinstall procedure as in previous
> upgrades (using pip: it's a system wide installation, not using
> dockers or venv), but seems that I did something wrong
>
> The messages are being delivered normally, but it fails archiving
>
> Before I make a bigger hole for myself, where to look for?
>
> Versions installed:
>
> HyperKitty 1.3.5
>
> mailman 3.3.5
> mailman-hyperkitty 1.2.0
> mailmanclient 3.3.3
>
> postorius 1.3.6
>
> uWSGI 2.0.19.1
>
>
> Mailman Core Version GNU Mailman 3.3.5 (Tom Sawyer)
> Mailman Core API Version 3.1
> Mailman Core Python Version 3.7.9 (default, Nov 30 2020, 10:49:53)
> [Clang 10.0.1 (git@github.com:llvm/llvm-project.git
> llvmorg-10.0.1-0-gef32c611a
>
>
>
--
___________________________________________
Mailman's content filtering has removed the
following MIME parts from this message.
Content-Type: image/png
Name: firma-GHP-emails.png
Replaced multipart/alternative part with first alternative.
4 years, 2 months
[MM3-users] Re: Mailman, etc. upgrade woes and persistent bugs
by Abhilash Raj
On Fri, Feb 12, 2021, at 11:52 AM, Mark Sapiro wrote:
> On 2/11/21 10:22 PM, hansen(a)rc.org wrote:
> > I just had my Mailman suite upgraded. When it got started, I starting receiving messages that hundreds of subscribers to the lists had been disables, including several of the list moderators. This version started supporting bounce processing, but how in the world was this upgrade allowed to act on bounces that were being collected PRIOR to enabling bounce processing??
>
>
> I'm sorry about that. It's too late now, but the avoidance is discussed
> at
> <https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/thread/…>.
>
>
> > I got many angry emails, messages and phone calls asking what was going on, as they were bona fide list members. I was very surprised myself.
> >
> > I then looked at several of the disabled accounts, but the subscription info page in Postorius had no information about whether an account was enabled or disabled. Why is this not displayed???. The members can't see if their account is enabled. Is this another example of the disconnect between Mailman and Postorius?
>
>
> If the user has a Django account, she can see all that info at (e.g. for
> this list) <https://lists.mailman3.org/mailman3/accounts/subscriptions/>
> She gets there from `Mailman settings` in the dropdown under her user
> name. She can also get there via the `Manage Subscription` button on the
> list's Info page. That takes her to `List-based preferences` for the
> list. Any setting not selected there is inherited from the Address-based
> preferences or Global Mailman preferences
IIUC, I think what Allan is trying to point out is that if your account was
disabled due to bounces, there is no real visual indication about that if
you go to any of the Preferences pages (either, Global preferences,
List based preferences of address based preferences).
Even if you login as an admin and go to Member Option's view, you
won't see any visual indication about the delivery being disabled.
The is definitely a bug, caused due to the fact that "Delivery Status" field
only has two options, "Enabled" and "Disabled". Internally, this field can
have 4 values, "enabled", "by_user" (maps to "Disabled" in Postorius),
"by_admin" (means disabled by admin) and "by_bounces" (means
disabled due to bounces). So, when the value of the field is among
the last two options, it appears as "unset" with no options selected,
which unfortunately is also how it looks by default since all options
are "unset" from start.
The "fix" for this issue would be simply adding a new choice to the
delivery_status field with a caveat that it is only a Readonly option to
see that delivery is disabled due to bounces and not choosable as
a valid delivery_status value by user or admin when submitting the
form.
https://gitlab.com/mailman/postorius/-/issues/469
We could also go a step further and show it on the List's info page
when their delivery is disabled due to excessive bounce and allow
the them to re-enable it themselves without admin intervention. This
would ofcourse show only when you log into your account and go
to the list's info page, but I guess that is the first place you'd go to
debug when you get an email that your delivery was disabled?
https://gitlab.com/mailman/postorius/-/issues/470
I don't know if there are any downsides to letting users re-enable
their delivery on their own.
>
>
> > Further, even after the upgrade, the moderators still cannot access the list memberships even though all the lists are set to allow that. I would have asked the moderators to do this if this access bug had been fixed, but they can't get there.
>
> You've already reported this at
> <https://gitlab.com/mailman/postorius/-/issues/462>, and it's been
> previously reported at <https://gitlab.com/mailman/postorius/-/issues/369>.
>
>
> > As a result of these bugs, after consulting with Brian, who helped with the upgrade, I spent many hours re-enabling the several hundred accounts that had been disabled. I had to go through each email notification to find the address of a disabled account, then find the list, then the member, in Postorius, and finally enable the account (at which time Postorius DID show the enabled status).
>
>
> I'm sorry you had to go through this. The potential issue and the
> avoidances should be better documented. Unfortunately, they aren't.
>
>
> > Please, can the next upgrade include these very basic fixes/enhancements, which I requested a long time ago:
> >
> > a. The ability of moderators to see the list membership (a bug).
>
> As I note above, this is a known issue. We are a small project with very
> feew core developers, all of whom are volunteers. There is a merge
> request at <https://gitlab.com/mailman/postorius/-/merge_requests/423>
> which purports to fix
> <https://gitlab.com/mailman/postorius/-/issues/369>, but as you can see
> from the comment thread, it is not complete and the author has
> apparently disappeared.
>
> If you would like to take it over and address the deficiencies, we would
> welcome that.
>
>
> > b. The ability of members to change their addresses for all lists they are subscribed to.
>
>
> Users can add addresses to their account and can then change their
> subscribed address at (again, e.g. for this list)
> <https://lists.mailman3.org/mailman3/accounts/list-options/mailman-users.mai…>
> (Get there via the `Manage Subscription` button on the list's Info
> page.)
>
> If one is subscribed to lists via their `primary` address, one can go to
> `E-mail Addresses` in their account settings and make a new address
> `primary` and that will change all their subscriptions.
>
>
> > and further, now:
> >
> > c. That when members go to look at their subscription info, they can actually see the settings.
>
>
> They can if they go to `Mailman settings` in the dropdown or the `Manage
> Subscription` button on the list's Info page and look at all the tabs.
>
> --
> Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
> San Francisco Bay Area, California better use your sense - B. Dylan
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>
--
thanks,
Abhilash Raj (maxking)
5 years
[MM3-users] Re: mailman3 postorius cannot retrieve template
by Wolfgang Bock
Dear Mark,
you wrote:
"When you create a template in Postorius, that uri becomes something like
`https://example.com/mailman3/api/templates/list/<list_id>/<template_name>`
which basically says get the template from Postorius, and the template if
any in var/templates is ignored."
In my case that is not true.
I get an db-entry in the mailman3 table template which doesnt lead to a
suitable link:
https://localhost/postorius/api/templates/list/testliste01.mydomain.de/list:
member:regular:footer
In the next stept it leads to a flood of entries in my syslog because django
is asking for a certificate match for "localhost":
Nov 2 11:47:49 myserver mailman3[175334]: Nov 02 11:47:49 2021 (175334)
Certificate did not match expected hostname: localhost. Certificate: ...
Letsencrypt cannot deliver this match for "localhost", it is impossible to
configurate letsencrypt to do so.
The running script must create a postgres INSERT database command which
includes the correct domain-name including the correct path
.../mailman3/api/templates .... and not ... postorius/api/....
I dont know, where is the place to correct this.
- in mailman-web.py ??
...
ALLOWED_HOSTS ... '*'
or
MAILMAN_REST_API_URL = 'http://localhost:8001'
or
POSTORIUS_TEMPLATE_BASE_URL = 'https://localhost/mailman3/'
- in mailman.cfg ??
the [paths.debian] section
the [webservice] section
- or elsewhere
Thanks in advance for your reply.
Wolfgang
-----Ursprüngliche Nachricht-----
Von: Mark Sapiro <mark(a)msapiro.net>
Gesendet: Sonntag, 31. Oktober 2021 19:15
An: mailman-users(a)mailman3.org
Betreff: [MM3-users] Re: mailman3 postorius cannot retrieve template at ...
(<no authorization>)
On 10/29/21 3:41 AM, Wolfgang Bock via Mailman-users wrote:
>
> the question is: postgres - mailman3web-postorius_emailtemplate table
> vs
> mailman3 - templates table
>
> I installed a brand new mailman3 with mailman Core 3.3.3, Api 3.1,
> Core Python 3.9.2 postgres12 nginx on debian bullseye.
>
> I created a template via postorius -> lists -> (testliste01) ->
> templates
> -> new template -> [list:member:regular:footer] and
> [list:member:digest:footer]
>
> They are shown in the postgres database mailman3 table templates:
> id name context uri username password
> 14 list:member:digest:footer testliste01.mydomain.de
> http://localhost/postorius/api/templates/list/testliste01.mydomain.de/
> list:m
> ember:digest:footer
> 15 list:member:regular:footer testliste01.mydomain.de
> http://localhost/postorius/api/templates/list/testliste01.mydomain.de/
> list:m
> ember:regular:footer
>
> First there where no templates in the /var/lib/mailman3/templates
> folder, which was empty after installation.
This is expected. That is one place where you can put custom templates.
> Later I created in /var/lib/mailman3/templates theses folders and the
> files /list/testliste01.mydomain.de/list:member:digest:footer +
> list:member:regular:footer owned by list:list 644
>
> A testmail went through but instead of the default footer no footer
> was shown.
By default Mailman searches for templates first in the var/templates
directory and then in the templates directory in the Mailman installation.
The details are described at
https://gitlab.com/mailman/mailman/-/blob/master/src/mailman/utilities/i18n.
py#L44.
However, the default search is only applied if there is matching entry for
the template name and context in the `templates` table in the database or if
the uri in the entry is a `mailman://` uri.
When you create a template in Postorius, that uri becomes something like
`https://example.com/mailman3/api/templates/list/<list_id>/<template_name>`
which basically says get the template from Postorius, and the template if
any in var/templates is ignored.
> In the sys.log I found the following error message:
> Oct 29 11:28:04 myserver mailman3[33015]: Message: 'Cannot retrieve
> template at
> http://localhost/postorius/api/templates/list/testliste01.mydomain.de/
> list:m ember:regular:footer (<no authorization>)'
So Mailman is trying to get the Postorius template. What is in the web
server logs for this retrieval?
> How can I solve this problem? What kind of authorisation is meant? list?
> restadmin?
>
> I read in
> https://docs.mailman3.org/en/latest/config-core.html#configure-templates
> ... list specific templates invar/templates/lists/LIST-ID/LC/ ...
> I guess the LC means Language Code. But in the database table templates no
> LC subdirectory is mentioned (in my case must be de).
If you delete the Postorius template, The entry in the templates table
will be removed and the search will revert to var/templates, etc.
> And I read (dont know where) .... The templates created in Postorius are
> created in the postorius_emailtemplate table in Mailman's database and
> referenced via URLs like
>
'https://example.com/mailman3/api/templates/list/<list-id>/<template-name>'.
> I.e., they are not stored in the file system. ...
>
> That's true. I found in postgres database mailman3web in the table
> mailman3web postorius_emailtemplate my
>
> id name data language created_at modified_at
> context identifier
> 15 list:member:digest:footer postorius footer digest 1x linefeed
> 2021-10-29 11:17:40.664689+02 2021-10-29 11:26:48.692628+02 list
> testliste01.mydomain.de
> 16 list:member:regular:footer postorius footer non-digest 1x
> linefeed 2021-10-29 11:18:29.166241+02 2021-10-29
11:27:24.519024+02 list
> testliste01.mydomain.de
>
> But my question is how to integrate this into the mailman3-system. The
> language isn't set either.
It is integrated. The language isn't set because you are getting the
template from Postorius and Postorius knows the language.
On 10/31/21 4:13 AM, Wolfgang Bock via Mailman-users wrote:
> regarding my mail before, here an additional information.
>
> I can show the templates with following command (anonymized):
>
https://active_domain.de/postorius/api/templates/list/testliste01.active_dom
ain.de/list:member:regular:footer
As it should be.
> The complete syslog
>
(edited and reformatted by me)
```
> --- Logging error ---
> Traceback (most recent call last): Oct 30 11:49:52 active_server
mailman3[107630]: File
"/usr/lib/python3/dist-packages/mailman/model/template.py", line 110, in get
> contents = protocols.get(actual_uri, **auth)
> File
"/usr/lib/python3/dist-packages/mailman/utilities/protocols.py", line
39, in get
> response.raise_for_status()
> File "/usr/lib/python3/dist-packages/requests/models.py", line
943, in raise_for_status
> raise HTTPError(http_error_msg, response=self)
> requests.exceptions.HTTPError: 404 Client Error: Not Found for url:
http://localhost/postorius/api/templates/list/testliste01.active_domain.de/l
ist:member:regular:footer
> During handling of the above exception, another exception occurred:
> Traceback (most recent call last):
> File "/usr/lib/python3.9/logging/__init__.py", line 430, in format
> return self._format(record)
> File "/usr/lib/python3.9/logging/__init__.py", line 426, in _format
> return self._fmt % record.__dict__
> KeyError: 't'
> During handling of the above exception, another exception occurred:
Your template is malformed. You have $ strings that are not defined as
Mailman substitution variables. See
https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/rest/docs/t
emplates.html#templated-texts
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
_______________________________________________
Mailman-users mailing list -- mailman-users(a)mailman3.org
To unsubscribe send an email to mailman-users-leave(a)mailman3.org
https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
4 years, 4 months
[MM3-users] SOLVED was --- Re: Re: Debian 11 mailman3 installation question
by William Oliver
OK. I apologize for wasting people's time.
In case anybody's interested, the problem was that when I cut an pasted
from the debian README file, I didn't notice the hard line break. So,
in main.cf, the line
hash:/var/lib/mailman3/data/postfix_dom
ains
was actually two lines with a hard break rather than a continuation,
and "ains" ain't a command.
Doh.
So, I have to say, with the exception of my stupid cut and paste, the
Debian automatic installation is a breeze. Good job to whomever did
it. It's a thousand times faster than downloading and configuring from
scratch, like I did last time.
billo
On Tue, 2022-10-11 at 17:04 -0400, William Oliver wrote:
> One more-one more thing...
>
> Here's /var/lib/mailman3/data/postfix_lmtp:
>
> root@emergenis:/var/lib/mailman3/data# more postfix_lmtp
> # AUTOMATICALLY GENERATED BY MAILMAN ON 2022-10-11 21:00:15
> #
> # This file is generated by Mailman, and is kept in sync with the
> binary hash
> # file. YOU SHOULD NOT MANUALLY EDIT THIS FILE unless you know what
> you're
> # doing, and can keep the two files properly in sync. If you screw it
> up,
> # you're on your own.
>
>
> So.. if it can write that, it shouldn't be a permissons problem...
>
> billo
>
>
> On Tue, 2022-10-11 at 15:39 -0400, William Oliver wrote:
> >
> >
> > One more thing, I'm using the README.Debian addition to
> > /etc/postfix/main.cf rather than the one in the instructions
> > at
> > https://docs.mailman3.org/en/latest/config-core.html#configuring-mta
> > .
> >
> > In other words, mine reads:
> >
> >
> > # Mailman related settings
> > owner_request_special = no
> > transport_maps = hash:/var/lib/mailman3/data/postfix_lmtp
> > local_recipient_maps = proxy:unix:passwd.byname $alias_maps
> > hash:/var/lib/mailman3/data/postfix_lmtp
> > relay_domains = ${{$compatibility_level} < {2} ? {$mydestination} :
> > {}}
> > hash:/var/lib/mailman3/data/postfix_dom
> > ains
> >
> > instead of:
> >
> >
> > # Support the default VERP delimiter.
> > recipient_delimiter = +
> > unknown_local_recipient_reject_code = 550
> > owner_request_special = no
> > transport_maps =
> > hash:/path-to-mailman/var/data/postfix_lmtp
> > local_recipient_maps =
> > hash:/path-to-mailman/var/data/postfix_lmtp
> > relay_domains =
> > hash:/path-to-mailman/var/data/postfix_domains
> >
> >
> > .... but they both give the same error.
> >
> >
> >
> >
> > On Tue, 2022-10-11 at 15:31 -0400, William Oliver wrote:
> > >
> > > I have had an installation of mailman3 running for a year or so
> > > with
> > > no problems. This was a manual installation. I ended up having
> > > to
> > > change machines, so I decided to install using the debian 11
> > > package.
> > >
> > > It seems to have gone well except.... when I restart mailman3
> > > service,
> > > I get the following fail and error message:
> > >
> > > oot@emergenis:/etc/nginx/sites-enabled# systemctl restart
> > > mailman3
> > > Job for mailman3.service failed because the control process
> > > exited
> > > with
> > > error code.
> > > See "systemctl status mailman3.service" and "journalctl -xe" for
> > > details.
> > > root@emergenis:/etc/nginx/sites-enabled# systemctl status
> > > mailman3
> > > ● mailman3.service - Mailman3 server
> > > Loaded: loaded (/lib/systemd/system/mailman3.service; enabled;
> > > vendor
> > > preset: enabled)
> > > Active: failed (Result: exit-code) since Tue 2022-10-11 15:09:45
> > > EDT;
> > > 8s ago
> > > Docs: man:mailman(1)
> > > https://mailman.readthedocs.io/
> > > Process: 1056 ExecStart=/usr/bin/mailman -C
> > > /etc/mailman3/mailman.cfg
> > > start --force (code=exited, status=1/FAILURE)
> > > CPU: 9.193s
> > >
> > > Oct 11 15:09:43 emergenis.com mailman3[1056]: File
> > > "/usr/lib/python3/dist-packages/mailman/commands/cli_control.py",
> > > line
> > > 109, in start
> > > Oct 11 15:09:43 emergenis.com mailman3[1056]:
> > > call_name(config.mta.incoming).regenerate()
> > > Oct 11 15:09:43 emergenis.com mailman3[1056]: File
> > > "/usr/lib/python3/dist-packages/mailman/mta/postfix.py", line
> > > 133,
> > > in
> > > regenerate
> > > Oct 11 15:09:43 emergenis.com mailman3[1056]: raise
> > > RuntimeError(NL.join(errors))
> > > Oct 11 15:09:43 emergenis.com mailman3[1056]: RuntimeError:
> > > command
> > > failure: /usr/sbin/postmap /var/lib/mailman3/data/postfix_lmtp,
> > > 1,
> > > Operation not permitted
> > > Oct 11 15:09:43 emergenis.com mailman3[1056]: command failure:
> > > /usr/sbin/postmap /var/lib/mailman3/data/postfix_domains, 1,
> > > Operation
> > > not permitted
> > > Oct 11 15:09:45 emergenis.com systemd[1]: mailman3.service:
> > > Control
> > > process exited, code=exited, status=1/FAILURE
> > > Oct 11 15:09:45 emergenis.com systemd[1]: mailman3.service:
> > > Failed
> > > with
> > > result 'exit-code'.
> > > Oct 11 15:09:45 emergenis.com systemd[1]: Failed to start
> > > Mailman3
> > > server.
> > > Oct 11 15:09:45 emergenis.com systemd[1]: mailman3.service:
> > > Consumed
> > > 9.193s CPU time.
> > >
> > >
> > > Heres the ls for /var/lib/mailman3/data:
> > >
> > > root@emergenis:/var/lib/mailman3/data# ls -l
> > > total 8
> > > -rw-rw---- 1 list list 315 Oct 11 15:09 postfix_domains
> > > -rw-rw---- 1 list list 318 Oct 11 15:09 postfix_lmtp
> > >
> > > The web interface comes up and seems to "work" but of course
> > > complains
> > > that mailman3 isn't actually running.
> > >
> > > I assume there's some posfix config I haven't done right, but I
> > > am
> > > clueless as to what it is.
> > >
> > > Thanks in advance for any pointers.
> > >
> > > billo
> > >
> > > _______________________________________________
> > > Mailman-users mailing list -- mailman-users(a)mailman3.org
> > > To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> > > https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> >
> > _______________________________________________
> > Mailman-users mailing list -- mailman-users(a)mailman3.org
> > To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> > https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
3 years, 4 months
[MM3-users] Re: Installing mailman 3
by Kyle Richardson
Rafael,
Apologies for the delay. I would certainly encourage you to stick with
mailman3 :-). Thanks for providing all of the details of your current
environment. Let me try and answer each of your questions as best I can.
You can check if mailman2 is already installed via rpms with the following
command:
# rpm -qa | grep -i mailman
Based on your `find` results, it looks as though you have multiple
locations where you have cloned or copied mailman3. At this point, it might
be easiest to start fresh. You mentioned you're using a CentOS 7 VM. Is it
possible to start from a clean build or snapshot?
Once you have a clean build, you should be able to follow Simon's
instructions to get a working mailman3 instance (steps reproduced below for
clarity).
# useradd -r -m -d /var/lib/mailman mailman
# su - mailman
$ python3 -m venv env
$ source env/bin/activate
$ pip install mailman
$ mailman info
From there you can adjust the layout in your mailman.cfg file at
/var/lib/mailman/var/etc/ (snippet below).
[mailman]
layout: dev
If you can't start from a clean CentOS 7 VM, then you should be able to
just wipe out your existing /var/lib/mailman directory and still use
Simon's instructions.
# rm -rf /var/lib/mailman
Hopefully this will help you get up and going.
-Kyle
On Thu, Jul 13, 2017 at 10:16 AM, Rafael Mora <rafael.mora.guti(a)gmail.com>
wrote:
> Hello Kyle,
>
> What steps do you suggest in order to install mailman v2 via rpm's??
>
> Thank you.
>
> El mar., 11 jul. 2017 a las 15:13, Kyle Richardson (<
> kylerichardson2(a)gmail.com>) escribió:
>
>> Looks like you are using the fhs (filesystem hierarchy standard) layout;
>> is that what you intend? I would suggest changing the layout to "dev" for
>> testing purposes. This will use your mailman.cfg/../.. as the var directory.
>>
>> Is it possible you also have mailman v2 installed via rpms?
>>
>> -Kyle
>>
>> On Tue, Jul 11, 2017 at 3:41 PM, Rafael Mora <rafael.mora.guti(a)gmail.com>
>> wrote:
>>
>>> Hello,
>>>
>>> Here it's mailman info:
>>> [root@localhost bin]# ./mailman info
>>> GNU Mailman 3.2.0a1 (La Villa Strangiato)
>>> Python 3.6.0 (default, Jul 7 2017, 11:59:56)
>>> [GCC 4.8.5 20150623 (Red Hat 4.8.5-11)]
>>> config file: /etc/mailman.cfg
>>> db url: sqlite:////var/lib/mailman/data/mailman.db
>>> devmode: DISABLED
>>> REST root url: http://localhost:8001/3.1/
>>> REST credentials: restadmin:restpass
>>>
>>>
>>> Here it's mailman conf:
>>> [root@localhost bin]# ./mailman conf
>>> [antispam] header_checks:
>>> [antispam] jump_chain: hold
>>> [archiver.mail_archive] class: mailman.archiving.mailarchive.MailArchive
>>> [archiver.mail_archive] clobber_date: maybe
>>> [archiver.mail_archive] clobber_skew: 1d
>>> [archiver.mail_archive] configuration: python:mailman.config.mail_
>>> archive
>>> [archiver.mail_archive] enable: no
>>> [archiver.master] class:
>>> [archiver.master] clobber_date: maybe
>>> [archiver.master] clobber_skew: 1d
>>> [archiver.master] configuration: changeme
>>> [archiver.master] enable: no
>>> [archiver.mhonarc] class: mailman.archiving.mhonarc.MHonArc
>>> [archiver.mhonarc] clobber_date: maybe
>>> [archiver.mhonarc] clobber_skew: 1d
>>> [archiver.mhonarc] configuration: python:mailman.config.mhonarc
>>> [archiver.mhonarc] enable: no
>>> [archiver.prototype] class: mailman.archiving.prototype.Prototype
>>> [archiver.prototype] clobber_date: maybe
>>> [archiver.prototype] clobber_skew: 1d
>>> [archiver.prototype] configuration: changeme
>>> [archiver.prototype] enable: no
>>> [bounces] register_bounces_every: 15m
>>> [database] class: mailman.database.sqlite.SQLiteDatabase
>>> [database] debug: no
>>> [database] url: sqlite:///$DATA_DIR/mailman.db
>>> [devmode] enabled: no
>>> [devmode] recipient:
>>> [devmode] testing: no
>>> [devmode] wait: 60s
>>> [digests] mime_digest_keep_headers:
>>> Date From To Cc Subject Message-ID Keywords
>>> In-Reply-To References Content-Type MIME-Version
>>> Content-Transfer-Encoding Precedence Reply-To
>>> Message List-Post
>>> [digests] plain_digest_keep_headers:
>>> Message Date From
>>> Subject To Cc
>>> Message-ID Keywords
>>> Content-Type
>>> [dmarc] cache_lifetime: 7d
>>> [dmarc] org_domain_data_url:
>>> https://publicsuffix.org/list/public_suffix_list.dat
>>> [dmarc] resolver_lifetime: 5s
>>> [dmarc] resolver_timeout: 3s
>>> [language.ar] charset: utf-8
>>> [language.ar] description: Arabic
>>> [language.ar] enabled: yes
>>> [language.ast] charset: iso-8859-1
>>> [language.ast] description: Asturian
>>> [language.ast] enabled: yes
>>> [language.ca] charset: utf-8
>>> [language.ca] description: Catalan
>>> [language.ca] enabled: yes
>>> [language.cs] charset: iso-8859-2
>>> [language.cs] description: Czech
>>> [language.cs] enabled: yes
>>> [language.da] charset: iso-8859-1
>>> [language.da] description: Danish
>>> [language.da] enabled: yes
>>> [language.de] charset: iso-8859-1
>>> [language.de] description: German
>>> [language.de] enabled: yes
>>> [language.el] charset: iso-8859-7
>>> [language.el] description: Greek
>>> [language.el] enabled: yes
>>> [language.es] charset: iso-8859-1
>>> [language.es] description: Spanish
>>> [language.es] enabled: yes
>>> [language.et] charset: iso-8859-15
>>> [language.et] description: Estonian
>>> [language.et] enabled: yes
>>> [language.eu] charset: iso-8859-15
>>> [language.eu] description: Euskara
>>> [language.eu] enabled: yes
>>> [language.fi] charset: iso-8859-1
>>> [language.fi] description: Finnish
>>> [language.fi] enabled: yes
>>> [language.fr] charset: iso-8859-1
>>> [language.fr] description: French
>>> [language.fr] enabled: yes
>>> [language.gl] charset: utf-8
>>> [language.gl] description: Galician
>>> [language.gl] enabled: yes
>>> [language.he] charset: utf-8
>>> [language.he] description: Hebrew
>>> [language.he] enabled: yes
>>> [language.hr] charset: iso-8859-2
>>> [language.hr] description: Croatian
>>> [language.hr] enabled: yes
>>> [language.hu] charset: iso-8859-2
>>> [language.hu] description: Hungarian
>>> [language.hu] enabled: yes
>>> [language.ia] charset: iso-8859-15
>>> [language.ia] description: Interlingua
>>> [language.ia] enabled: yes
>>> [language.it] charset: iso-8859-1
>>> [language.it] description: Italian
>>> [language.it] enabled: yes
>>> [language.ja] charset: euc-jp
>>> [language.ja] description: Japanese
>>> [language.ja] enabled: yes
>>> [language.ko] charset: euc-kr
>>> [language.ko] description: Korean
>>> [language.ko] enabled: yes
>>> [language.lt] charset: iso-8859-13
>>> [language.lt] description: Lithuanian
>>> [language.lt] enabled: yes
>>> [language.nl] charset: iso-8859-1
>>> [language.nl] description: Dutch
>>> [language.nl] enabled: yes
>>> [language.no] charset: iso-8859-1
>>> [language.no] description: Norwegian
>>> [language.no] enabled: yes
>>> [language.pl] charset: iso-8859-2
>>> [language.pl] description: Polish
>>> [language.pl] enabled: yes
>>> [language.pt] charset: iso-8859-1
>>> [language.pt] description: Protuguese
>>> [language.pt] enabled: yes
>>> [language.pt_BR] charset: iso-8859-1
>>> [language.pt_BR] description: Protuguese (Brazil)
>>> [language.pt_BR] enabled: yes
>>> [language.ro] charset: iso-8859-2
>>> [language.ro] description: Romanian
>>> [language.ro] enabled: yes
>>> [language.ru] charset: koi8-r
>>> [language.ru] description: Russian
>>> [language.ru] enabled: yes
>>> [language.sk] charset: utf-8
>>> [language.sk] description: Slovak
>>> [language.sk] enabled: yes
>>> [language.sl] charset: iso-8859-2
>>> [language.sl] description: Slovenian
>>> [language.sl] enabled: yes
>>> [language.sr] charset: utf-8
>>> [language.sr] description: Serbian
>>> [language.sr] enabled: yes
>>> [language.sv] charset: iso-8859-1
>>> [language.sv] description: Swedish
>>> [language.sv] enabled: yes
>>> [language.tr] charset: iso-8859-9
>>> [language.tr] description: Turkish
>>> [language.tr] enabled: yes
>>> [language.uk] charset: utf-8
>>> [language.uk] description: Ukrainian
>>> [language.uk] enabled: yes
>>> [language.vi] charset: utf-8
>>> [language.vi] description: Vietnamese
>>> [language.vi] enabled: yes
>>> [language.zh_CN] charset: utf-8
>>> [language.zh_CN] description: Chinese
>>> [language.zh_CN] enabled: yes
>>> [language.zh_TW] charset: utf-8
>>> [language.zh_TW] description: Chinese (Taiwan)
>>> [language.zh_TW] enabled: yes
>>> [logging.archiver] datefmt: %b %d %H:%M:%S %Y
>>> [logging.archiver] format: %(asctime)s (%(process)d) %(message)s
>>> [logging.archiver] level: info
>>> [logging.archiver] path: mailman.log
>>> [logging.archiver] propagate: no
>>> [logging.bounce] datefmt: %b %d %H:%M:%S %Y
>>> [logging.bounce] format: %(asctime)s (%(process)d) %(message)s
>>> [logging.bounce] level: info
>>> [logging.bounce] path: bounce.log
>>> [logging.bounce] propagate: no
>>> [logging.config] datefmt: %b %d %H:%M:%S %Y
>>> [logging.config] format: %(asctime)s (%(process)d) %(message)s
>>> [logging.config] level: info
>>> [logging.config] path: mailman.log
>>> [logging.config] propagate: no
>>> [logging.database] datefmt: %b %d %H:%M:%S %Y
>>> [logging.database] format: %(asctime)s (%(process)d) %(message)s
>>> [logging.database] level: warn
>>> [logging.database] path: mailman.log
>>> [logging.database] propagate: no
>>> [logging.debug] datefmt: %b %d %H:%M:%S %Y
>>> [logging.debug] format: %(asctime)s (%(process)d) %(message)s
>>> [logging.debug] level: info
>>> [logging.debug] path: debug.log
>>> [logging.debug] propagate: no
>>> [logging.error] datefmt: %b %d %H:%M:%S %Y
>>> [logging.error] format: %(asctime)s (%(process)d) %(message)s
>>> [logging.error] level: info
>>> [logging.error] path: mailman.log
>>> [logging.error] propagate: no
>>> [logging.fromusenet] datefmt: %b %d %H:%M:%S %Y
>>> [logging.fromusenet] format: %(asctime)s (%(process)d) %(message)s
>>> [logging.fromusenet] level: info
>>> [logging.fromusenet] path: mailman.log
>>> [logging.fromusenet] propagate: no
>>> [logging.http] datefmt: %b %d %H:%M:%S %Y
>>> [logging.http] format: %(asctime)s (%(process)d) %(message)s
>>> [logging.http] level: info
>>> [logging.http] path: mailman.log
>>> [logging.http] propagate: no
>>> [logging.locks] datefmt: %b %d %H:%M:%S %Y
>>> [logging.locks] format: %(asctime)s (%(process)d) %(message)s
>>> [logging.locks] level: info
>>> [logging.locks] path: mailman.log
>>> [logging.locks] propagate: no
>>> [logging.mischief] datefmt: %b %d %H:%M:%S %Y
>>> [logging.mischief] format: %(asctime)s (%(process)d) %(message)s
>>> [logging.mischief] level: info
>>> [logging.mischief] path: mailman.log
>>> [logging.mischief] propagate: no
>>> [logging.root] datefmt: %b %d %H:%M:%S %Y
>>> [logging.root] format: %(asctime)s (%(process)d) %(message)s
>>> [logging.root] level: info
>>> [logging.root] path: mailman.log
>>> [logging.root] propagate: no
>>> [logging.runner] datefmt: %b %d %H:%M:%S %Y
>>> [logging.runner] format: %(asctime)s (%(process)d) %(message)s
>>> [logging.runner] level: info
>>> [logging.runner] path: mailman.log
>>> [logging.runner] propagate: no
>>> [logging.smtp] datefmt: %b %d %H:%M:%S %Y
>>> [logging.smtp] every: $msgid smtp to $listname for $recip recips,
>>> completed
>>> in $time seconds
>>> [logging.smtp] failure: $msgid delivery to $recip failed with code
>>> $smtpcode, $smtpmsg
>>> [logging.smtp] format: %(asctime)s (%(process)d) %(message)s
>>> [logging.smtp] level: info
>>> [logging.smtp] path: smtp.log
>>> [logging.smtp] propagate: no
>>> [logging.smtp] refused: $msgid post to $listname from $sender, $size
>>> bytes,
>>> $refused failures
>>> [logging.smtp] success: $msgid post to $listname from $sender, $size
>>> bytes
>>> [logging.subscribe] datefmt: %b %d %H:%M:%S %Y
>>> [logging.subscribe] format: %(asctime)s (%(process)d) %(message)s
>>> [logging.subscribe] level: info
>>> [logging.subscribe] path: mailman.log
>>> [logging.subscribe] propagate: no
>>> [logging.vette] datefmt: %b %d %H:%M:%S %Y
>>> [logging.vette] format: %(asctime)s (%(process)d) %(message)s
>>> [logging.vette] level: info
>>> [logging.vette] path: mailman.log
>>> [logging.vette] propagate: no
>>> [mailman] cache_life: 7d
>>> [mailman] default_language: en
>>> [mailman] email_commands_max_lines: 10
>>> [mailman] filtered_messages_are_preservable: no
>>> [mailman] html_to_plain_text_command: /usr/bin/lynx -dump $filename
>>> [mailman] layout: fhs
>>> [mailman] listname_chars: [-_.0-9a-z]
>>> [mailman] noreply_address: noreply
>>> [mailman] pending_request_life: 3d
>>> [mailman] post_hook:
>>> [mailman] pre_hook:
>>> [mailman] sender_headers: from from_ reply-to sender
>>> [mailman] site_owner: changeme(a)example.com
>>> [mta] configuration: python:mailman.config.postfix
>>> [mta] delivery_retry_period: 5d
>>> [mta] incoming: mailman.mta.postfix.LMTP
>>> [mta] lmtp_host: 127.0.0.1 # IP where Mailman should listen
>>> for
>>> emails from MTA
>>> [mta] lmtp_port: 8024
>>> [mta] max_autoresponses_per_day: 10
>>> [mta] max_delivery_threads: 0
>>> [mta] max_recipients: 500
>>> [mta] max_sessions_per_connection: 0
>>> [mta] outgoing: mailman.mta.deliver.deliver
>>> [mta] remove_dkim_headers: no
>>> [mta] smtp_host: 127.0.0.1 # IP Where MTA is listening for
>>> emails
>>> [mta] smtp_pass:
>>> [mta] smtp_port: 25
>>> [mta] smtp_user:
>>> [mta] verp_confirm_format: $address+$cookie
>>> [mta] verp_confirm_regexp: ^(.*<)?(?P<addr>[^+]+?)\+(?P<
>>> cookie>[^@]+)@.*$
>>> [mta] verp_confirmations: no
>>> [mta] verp_delimiter: +
>>> [mta] verp_delivery_interval: 0
>>> [mta] verp_format: ${bounces}+${local}=${domain}
>>> [mta] verp_personalized_deliveries: no
>>> [mta] verp_probe_format: $bounces+$token@$domain
>>> [mta] verp_probe_regexp: ^(?P<bounces>[^+]+?)\+(?P<token>[^@]+)@.*$
>>> [mta] verp_probes: no
>>> [mta] verp_regexp:
>>> ^(?P<bounces>[^+]+?)\+(?P<local>[^=]+)=(?P<domain>[^@]+)@.*$
>>> [nntp] host:
>>> [nntp] password:
>>> [nntp] port:
>>> [nntp] remove_headers:
>>> nntp-posting-host nntp-posting-date x-trace
>>> x-complaints-to xref date-received posted
>>> posting-version relay-version received
>>> [nntp] rewrite_duplicate_headers:
>>> To X-Original-To
>>> CC X-Original-CC
>>> Content-Transfer-Encoding X-Original-Content-Transfer-Encoding
>>> MIME-Version X-MIME-Version
>>> [nntp] user:
>>> [passwords] configuration: python:mailman.config.passlib
>>> [passwords] password_length: 8
>>> [shell] banner: Welcome to the GNU Mailman shell
>>> [shell] history_file:
>>> [shell] prompt: >>>
>>> [shell] use_ipython: no
>>> [styles] default: legacy-default
>>> [styles] paths:
>>> mailman.styles
>>> [webservice] admin_pass: restpass
>>> [webservice] admin_user: restadmin
>>> [webservice] api_version: 3.1
>>> [webservice] hostname: localhost
>>> [webservice] port: 8001
>>> [webservice] show_tracebacks: yes
>>> [webservice] use_https: no
>>>
>>>
>>> What do you suggest? Thank you
>>>
>>> El mar., 11 jul. 2017 a las 14:31, Simon Hanna (<
>>> simon.hanna(a)serve-me.info>)
>>> escribió:
>>>
>>> > Below is how I would recommend to run Mailman for production using a
>>> > virtualenv
>>> >
>>> > # useradd -r -m -d /var/lib/mailman mailman
>>> >
>>> > # su - mailman
>>> >
>>> >
>>> > $ python3 -m venv env
>>> > $ source env/bin/activate
>>> > $ pip install mailman
>>> > $ mailman info
>>> >
>>> > Now you should have a working configuration in /var/lib/mailman/var/
>>> >
>>> > to run mailman you don't need to activate the virtualenv, just use the
>>> > executable /var/lib/mailman/env/bin/mailman
>>> >
>>> > cheers,
>>> > Simon
>>> > _______________________________________________
>>> > Mailman-users mailing list
>>> > mailman-users(a)mailman3.org
>>> > https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>>> >
>>> --
>>>
>>> Atentamente / Best Regards
>>>
>>> Ing. Rafael Mora
>>> _______________________________________________
>>> Mailman-users mailing list
>>> mailman-users(a)mailman3.org
>>> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>>>
>>
>> --
>
> Atentamente / Best Regards
>
> Ing. Rafael Mora
>
8 years, 7 months
[MM3-users] Re: Detectors and Bounces
by summersan@nclack.k12.or.us
Okay, thank you for the feedback!
> What's in Mailman's bounce.log?
There are lots of log lines in this file, but here is an edited example line for the purpose of debugging:
`Aug 04 16:59:56 2022 (70838) Member disabled_user(a)example.local.domain on list example_list(a)mailman_server.example.local.domain, bounce score = 1.`
> Are bouncing users getting their delivery disabled?
From looking at the settings for the example user "aliased" above, it appears that bouncing users **may not** be getting their delivery disabled. The `Delivery status` is still set to `Enabled`.
> What are your list(s) `Bounce Processing` settings.
Here are the `Bounce Processing` settings (at the time of this writing) from the example list in question (the list is referred to with a fake name for anonymity: `example_list(a)mailman_server.example.local.domain`)
Notify owner on bounce increment: No
Notify owner on disable: Yes
Notify owner on removal: Yes
Forward unrecognized bounces: List Admins
I might be able to try turning the `Notify owner on bounce increment` setting to `Yes` on a different example mailing list. In the meantime, I have not seen any new bounce files in the `/opt/mailman/mm/var/queue/bounces` directory. I'm not sure if that's a sign that things are working like usual now, or if something is wrong.
Previously, there were `34775` files in the `/opt/mailman/mm/var/queue/bounces` directory, ranging from June 7 to August 4. For background, there's typically a time in the summer where many user accounts are purposely disabled (generally near July-August, I think). From the bounce file dates, I wonder if this bounce-related issue has been happening for longer than I first realized.
Thank you for letting me know about the `bin/mailman qfile` feature! I've tried examining one of the latest past bounce files from a previous day.
Here is an edited version of that bounce file (this file relates to the example "disabled_user" from the `bounce.log`), below, if it helps.
Does the example bounce file below give any clues as to what might be happening in this situation?
[----- start pickle -----]
<----- start object 1 ----->
Received: by example_list.example.local.domain (Postfix)
id F41722406EC; Thu, 4 Aug 2022 11:34:08 -0700 (PDT)
Date: Thu, 4 Aug 2022 11:34:08 -0700 (PDT)
From: MAILER-DAEMON(a)example_list.example.local.domain (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: example_list-bounces(a)mailman_server.example.local.domain
Auto-Submitted: auto-replied
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="CF79C2404AD.1659638048/example_list.example.local.domain"
Content-Transfer-Encoding: 8bit
Message-Id: <20220804183408.F41722406EC(a)example_list.example.local.domain>
Message-ID-Hash: U47YLWMSX2KGN2H327NOLPXJIBK2BEO6
X-Message-ID-Hash: U47YLWMSX2KGN2H327NOLPXJIBK2BEO6
X-MailFrom: <>
This is a MIME-encapsulated message.
--CF79C2404AD.1659638048/example_list.example.local.domain
Content-Description: Notification
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
This is the mail system at host example_list.example.local.domain.
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to postmaster.
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The mail system
<disabled_user(a)example.local.domain>: host aspmx.l.google.com[74.125.195.27] said:
550-5.2.1 The email account that you tried to reach is disabled. Learn more
at 550 5.2.1 https://support.google.com/mail/?p=DisabledUser
q14-20020a17090311ce00b0016f145ca846si1920603plh.98 - gsmtp (in reply to
RCPT TO command)
--CF79C2404AD.1659638048/example_list.example.local.domain
Content-Description: Delivery report
Content-Type: message/delivery-status
Reporting-MTA: dns; example_list.example.local.domain
X-Postfix-Queue-ID: CF79C2404AD
X-Postfix-Sender: rfc822; example_list-bounces(a)mailman_server.example.local.domain
Arrival-Date: Thu, 4 Aug 2022 11:34:06 -0700 (PDT)
Final-Recipient: rfc822; disabled_user(a)example.local.domain
Original-Recipient: rfc822;disabled_user(a)example.local.domain
Action: failed
Status: 5.2.1
Remote-MTA: dns; aspmx.l.google.com
Diagnostic-Code: smtp; 550-5.2.1 The email account that you tried to reach is
disabled. Learn more at 550 5.2.1
https://support.google.com/mail/?p=DisabledUser
q14-20020a17090311ce00b0016f145ca846si1920603plh.98 - gsmtp
Final-Recipient: rfc822; disabled_user(a)example.local.domain
Original-Recipient: rfc822;disabled_user(a)example.local.domain
Action: failed
Status: 5.2.1
Remote-MTA: dns; aspmx.l.google.com
Diagnostic-Code: smtp; 550-5.2.1 The email account that you tried to reach is
disabled. Learn more at 550 5.2.1
https://support.google.com/mail/?p=DisabledUser
q14-20020a17090311ce00b0016f145ca846si1920603plh.98 - gsmtp
Final-Recipient: rfc822; disabled_user(a)example.local.domain
Original-Recipient: rfc822;disabled_user(a)example.local.domain
Action: failed
Status: 5.2.1
Remote-MTA: dns; aspmx.l.google.com
Diagnostic-Code: smtp; 550-5.2.1 The email account that you tried to reach is
disabled. Learn more at 550 5.2.1
https://support.google.com/mail/?p=DisabledUser
q14-20020a17090311ce00b0016f145ca846si1920603plh.98 - gsmtp
Final-Recipient: rfc822; disabled_user(a)example.local.domain
Original-Recipient: rfc822;disabled_user(a)example.local.domain
Action: failed
Status: 5.2.1
Remote-MTA: dns; aspmx.l.google.com
Diagnostic-Code: smtp; 550-5.2.1 The email account that you tried to reach is
disabled. Learn more at 550 5.2.1
https://support.google.com/mail/?p=DisabledUser
q14-20020a17090311ce00b0016f145ca846si1920603plh.98 - gsmtp
--CF79C2404AD.1659638048/example_list.example.local.domain
Content-Description: Undelivered Message
Content-Type: message/rfc822
Content-Transfer-Encoding: 8bit
Return-Path: <example_list-bounces(a)mailman_server.example.local.domain>
Received: from example_list.example.local.domain (localhost [127.0.0.1])
by example_list.example.local.domain (Postfix) with ESMTP id CF79C2404AD;
Thu, 4 Aug 2022 11:34:06 -0700 (PDT)
Received: from example_list.example.local.domain (localhost [127.0.0.1])
by example_list.example.local.domain (Postfix) with ESMTP id 3C56324021E
for <example_list(a)mailman_server.example.local.domain>; Thu, 4 Aug 2022 11:30:01 -0700 (PDT)
Received: from example_list.example.local.domain (localhost [127.0.0.1])
by example_list.example.local.domain (Postfix) with ESMTP id 2DBBD2406DA
for <elem_cert(a)mailman_server.example.local.domain>; Thu, 4 Aug 2022 11:21:16 -0700 (PDT)
Received: from mail.applitrack.com (mail.applitrack.com [65.79.190.186])
by example_list.example.local.domain (Postfix) with SMTP id 314042404AD
for <all_cert(a)mailman_server.example.local.domain>; Thu, 4 Aug 2022 11:17:54 -0700 (PDT)
dkim-signature: v=1; a=rsa-sha256; d=external_location.somewhere; s=frontline5819;
c=relaxed/relaxed; q=dns/txt; h=From:Reply-To:Subject:Date:Message-ID:To:MIME-Version:Content-Type:Content-Transfer-Encoding;
bh=/BQy8uOjo6VP5i27AYv2tM47vx2ChfBLnBPKOKwXD4c=;
b=kGRiFywmQoL9T76olCFdOyvReOdBLSbBtgKFwaje1w6qh4y2UJD9xLyqPQ/FrZtKHmyB22EKofBinaDrgalvjcN2g8Otj88/OppGRVWEjsATTsf7QCgZ6eqEuduVswIfdOOzGEPXDn8GNHb95oGT2jCQpimuwTsog6M9OrJp/1k=
Received: from PHLAPTWEB21 (Unknown [172.25.51.49])
by mail.external_location.somewhere
; Thu, 4 Aug 2022 13:17:53 -0500
Message-ID: <AEF0FB74-B893-4AB1-BA9A-203F1B941B74(a)mail.applitrack.com>
MIME-Version: 1.0
From: "example_sender(a)example.local.domain" <MailBot(a)external_location.somewhere>
To: example_list(a)mailman_server.example.local.domain
Date: 4 Aug 2022 13:17:52 -0500
X-MailFrom: example(a)external_location.somewhere
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
X-Mailman-Version: 3.3.5
Precedence: list
Content-Type: multipart/mixed; boundary="===============6481302630449704969=="
X-MailFrom: all_cert-bounces+elem_cert=mailman_server.example.local.domain(a)mailman_server.example.local.domain
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
Message-ID-Hash: Z3TDTO5IXUSVTGVAYF4TVT4NGUW5IHAN
X-Message-ID-Hash: Z3TDTO5IXUSVTGVAYF4TVT4NGUW5IHAN
X-MailFrom: elem_cert-bounces+example_list=mailman_server.example.local.domain(a)mailman_server.example.local.domain
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
Reply-To: example_sender(a)example.local.domain
Subject: [example_list] Example Subject
List-Id: Example List <example_list.mailman_server.example.local.domain>
List-Help: <mailto:example_list-request@mailman_server.example.local.domain?subject=help>
List-Owner: <mailto:example_list-owner@mailman_server.example.local.domain>
List-Post: <mailto:example_list@mailman_server.example.local.domain>
List-Subscribe: <mailto:example_list-join@mailman_server.example.local.domain>
List-Unsubscribe: <mailto:example_list-leave@mailman_server.example.local.domain>
--===============6481302630449704969==
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: quoted-printable
Example Body Text
_______________________________________________
example_list mailing list -- example_list(a)mailman_server.example.local.domain
To unsubscribe send an email to example_list-leave(a)mailman_server.example.local.domain
--===============6481302630449704969==--
--CF79C2404AD.1659638048/example_list.example.local.domain--
<----- start object 2 ----->
{ '_parsemsg': False,
'listid': 'example_list.mailman_server.example.local.domain',
'original_size': 16103,
'received_time': datetime.datetime(2022, 8, 4, 18, 44, 7, 891417),
'subaddress': 'bounces',
'version': 3}
[----- end pickle -----]
Thank you!
Andy
3 years, 7 months
[MM3-users] Re: uncaught bounce messages
by Seth Seeger
On Sat, Oct 23, 2021, at 9:05 PM, Mark Sapiro wrote:
> On 10/23/21 5:29 PM, David Bremner wrote:
>>
>> Oh great, I just upgraded to Mailman 3.3.0, so I'll see what happens.
>>
>> I did notice a bunch (10 or 20?) of subscribers being disabled for being
>> over the bounce threshhold right after the upgrade, I wonder if that is
>> related.
>
>
> See the thread at
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/thread/…
>
> There is an example `mailman shell` session at
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
> that will reenable delivery for members disabled by bounce if you think
> the disables were spurious.
I have just upgraded to 3.3.4 from 3.3.2 (via docker).
Do we need to do anything more than reset the delivery status? I am getting (seemingly) continual emails about bounces. I keep running the recipe in the link which resets everyone's delivery status. I've grep'd one member's address out of bounce.log (see below my signature).
Is it just catching up on old bounces?
Thanks,
Seth
Oct 26 14:30:03 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score = 1.
Oct 26 14:30:10 2021 (37) Member max(a)example.com already scored a bounce on list listname.lists.example.net today.
Oct 26 14:30:56 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score = 2.
Oct 26 14:30:59 2021 (37) Member max(a)example.com already scored a bounce on list listname.lists.example.net today.
Oct 26 14:31:10 2021 (37) Member max(a)example.com already scored a bounce on list listname.lists.example.net today.
Oct 26 14:32:31 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score = 1.
Oct 26 14:32:39 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score = 2.
Oct 26 14:32:46 2021 (37) Member max(a)example.com already scored a bounce on list listname.lists.example.net today.
Oct 26 14:33:04 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score = 3.
Oct 26 14:33:49 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score = 4.
Oct 26 14:33:52 2021 (37) Member max(a)example.com already scored a bounce on list listname.lists.example.net today.
Oct 26 14:33:55 2021 (37) Member max(a)example.com already scored a bounce on list listname.lists.example.net today.
Oct 26 14:33:58 2021 (37) Member max(a)example.com already scored a bounce on list listname.lists.example.net today.
Oct 26 14:34:01 2021 (37) Member max(a)example.com already scored a bounce on list listname.lists.example.net today.
Oct 26 14:34:35 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score = 5.
Oct 26 14:34:35 2021 (37) Disabling delivery for max(a)example.com on list listname.lists.example.net by bounce
Oct 26 14:34:35 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score 5 >= threshold 5, disabling delivery.
Oct 26 14:34:39 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:35:06 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:35:09 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:35:18 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:35:20 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:36:01 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:37:19 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:37:27 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:37:33 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:37:36 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:37:40 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:37:42 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:37:44 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:37:47 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:37:49 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:37:51 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:37:58 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:38:01 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:38:14 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:38:15 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:38:18 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:40:38 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score = 1.
Oct 26 14:40:51 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score = 2.
Oct 26 14:41:02 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score = 3.
Oct 26 14:41:10 2021 (37) Member max(a)example.com already scored a bounce on list listname.lists.example.net today.
Oct 26 14:41:40 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score = 4.
Oct 26 14:41:43 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score = 5.
Oct 26 14:41:43 2021 (37) Disabling delivery for max(a)example.com on list listname.lists.example.net by bounce
Oct 26 14:41:43 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score 5 >= threshold 5, disabling delivery.
Oct 26 14:41:48 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:41:52 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:41:54 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:41:57 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:41:59 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:42:12 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:42:17 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:42:24 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:42:45 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:42:47 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:42:50 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:42:53 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:42:55 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:43:05 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score = 6.
Oct 26 14:43:05 2021 (37) Disabling delivery for max(a)example.com on list listname.lists.example.net by bounce
Oct 26 14:43:05 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score 6 >= threshold 5, disabling delivery.
Oct 26 14:43:17 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:43:19 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:43:22 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:43:25 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:43:31 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:44:57 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:45:41 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:45:44 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:45:47 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:45:52 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:45:58 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:45:59 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:46:04 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:46:09 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:46:15 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:46:19 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:46:23 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:46:27 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:46:33 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:46:36 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:46:39 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:46:42 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:46:44 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:46:48 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:46:49 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:46:53 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:46:56 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:46:57 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:00 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:01 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:05 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:08 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:10 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:13 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:15 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:18 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:22 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:24 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:27 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:28 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:31 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:33 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:35 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:38 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:40 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:42 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:45 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:46 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:49 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:51 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:54 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:57 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:48:03 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:48:04 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:48:06 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:48:08 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:48:14 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:48:16 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:48:19 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:48:24 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:48:27 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:48:29 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:48:32 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:48:34 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:49:07 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:49:33 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:50:16 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:50:18 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:50:20 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:50:23 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:50:27 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:50:30 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:50:36 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:50:41 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:50:47 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:50:49 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:51:00 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 15:04:36 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score = 1.
Oct 26 15:04:39 2021 (37) Member max(a)example.com already scored a bounce on list listname.lists.example.net today.
Oct 26 15:04:41 2021 (37) Member max(a)example.com already scored a bounce on list listname.lists.example.net today.
Oct 26 15:04:43 2021 (37) Member max(a)example.com already scored a bounce on list listname.lists.example.net today.
Oct 26 15:04:54 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score = 2.
Oct 26 15:04:57 2021 (37) Member max(a)example.com already scored a bounce on list listname.lists.example.net today.
Oct 26 15:05:59 2021 (37) Member max(a)example.com already scored a bounce on list listname.lists.example.net today.
Oct 26 15:06:02 2021 (37) Member max(a)example.com already scored a bounce on list listname.lists.example.net today.
Oct 26 15:10:00 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score = 3.
Oct 26 15:11:51 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score = 4.
Oct 26 15:12:30 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score = 5.
Oct 26 15:12:30 2021 (37) Disabling delivery for max(a)example.com on list listname.lists.example.net by bounce
Oct 26 15:12:30 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score 5 >= threshold 5, disabling delivery.
Oct 26 15:12:45 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 15:12:52 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 15:14:36 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
4 years, 4 months
[MM3-users] Re: Reg Archive Inactive Status
by Nirmal J
Yes I have it. I am also sharing that also settings_local.py file
# This file is imported by the Mailman Suite. It is used to override
# the default settings from /usr/share/mailman3-web/settings.py.
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'vWzgIJ1Hvjgy4yXJz7l71vpxX6+pJcBLMdv8mWNNAd0ajVr1'
ADMINS = (
('Mailman Suite Admin', 'nirmal(a)iitm.ac.in'),
)
# Hosts/domain names that are valid for this site; required if DEBUG is False
# See https://docs.djangoproject.com/en/1.8/ref/settings/#allowed-hosts
# Set to '*' per default in the Deian package to allow all hostnames. Mailman3
# is meant to run behind a webserver reverse proxy anyway.
ALLOWED_HOSTS = [
#"localhost", # Archiving API from Mailman, keep it.
# "lists.your-domain.org",
# Add here all production URLs you may have.
'*'
]
# Mailman API credentials
MAILMAN_REST_API_URL = 'http://localhost:8001'
MAILMAN_REST_API_USER = 'restadmin'
MAILMAN_REST_API_PASS = '/EqNGU+Mj8udFpw4ueIkhWXzAy3kJIy17wwzChrXb3P8Vh4e'
MAILMAN_ARCHIVER_KEY = 'n/ZZnR5bRgNdUEyNK4p731C1+gWJLw0/'
MAILMAN_ARCHIVER_FROM = ('127.0.0.1', '::1', '10.24.5.52')
# Application definition
INSTALLED_APPS = (
'hyperkitty',
'postorius',
'django_mailman3',
# Uncomment the next line to enable the admin:
'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'django_gravatar',
'compressor', 'haystack',
'django_extensions',
'django_q',
'allauth',
'allauth.account',
'allauth.socialaccount',
'django_mailman3.lib.auth.fedora',
#'allauth.socialaccount.providers.openid',
#'allauth.socialaccount.providers.github',
#'allauth.socialaccount.providers.gitlab',
#'allauth.socialaccount.providers.google',
#'allauth.socialaccount.providers.facebook',
#'allauth.socialaccount.providers.twitter',
#'allauth.socialaccount.providers.stackexchange',
)
# Database
# https://docs.djangoproject.com/en/1.8/ref/settings/#databases
DATABASES = {
'default': {
# Use 'sqlite3', 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'ENGINE': 'django.db.backends.sqlite3',
#'ENGINE': 'django.db.backends.postgresql_psycopg2',
#'ENGINE': 'django.db.backends.mysql',
# DB name or path to database file if using sqlite3.
'NAME': '/var/lib/mailman3/web/mailman3web.db',
# The following settings are not used with sqlite3:
'USER': '',
'PASSWORD': '',
# HOST: empty for localhost through domain sockets or '127.0.0.1' for
# localhost through TCP.
'HOST': '',
# PORT: set to empty string for default.
'PORT': '',
# OPTIONS: Extra parameters to use when connecting to the database.
'OPTIONS': {
# Set sql_mode to 'STRICT_TRANS_TABLES' for MySQL. See
# https://docs.djangoproject.com/en/1.11/ref/ # databases/#setting-sql-mode
#'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
},
}
}
# If you're behind a proxy, use the X-Forwarded-Host header
# See https://docs.djangoproject.com/en/1.8/ref/settings/#use-x-forwarded-host
USE_X_FORWARDED_HOST = True
# And if your proxy does your SSL encoding for you, set SECURE_PROXY_SSL_HEADER
# https://docs.djangoproject.com/en/1.8/ref/settings/#secure-proxy-ssl-header
# SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
# SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_SCHEME', 'https')
# Other security settings
# SECURE_SSL_REDIRECT = True
# If you set SECURE_SSL_REDIRECT to True, make sure the SECURE_REDIRECT_EXEMPT
# contains at least this line:
# SECURE_REDIRECT_EXEMPT = [
# "archives/api/mailman/.*", # Request from Mailman.
# ]
# SESSION_COOKIE_SECURE = True
# SECURE_CONTENT_TYPE_NOSNIFF = True
# SECURE_BROWSER_XSS_FILTER = True
# CSRF_COOKIE_SECURE = True
# CSRF_COOKIE_HTTPONLY = True
# X_FRAME_OPTIONS = 'DENY'
# Internationalization
# https://docs.djangoproject.com/en/1.8/topics/i18n/ LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
# Set default domain for email addresses.
EMAILNAME = 'list1.iitm.ac.in'
# If you enable internal authentication, this is the address that the emails
# will appear to be coming from. Make sure you set a valid domain name,
# otherwise the emails may get rejected.
# https://docs.djangoproject.com/en/1.8/ref/settings/#default-from-email
# DEFAULT_FROM_EMAIL = "mailing-lists(a)you-domain.org"
DEFAULT_FROM_EMAIL = 'postorius@{}'.format(EMAILNAME)
# If you enable email reporting for error messages, this is where those emails
# will appear to be coming from. Make sure you set a valid domain name,
# otherwise the emails may get rejected.
# https://docs.djangoproject.com/en/1.8/ref/settings/#std:setting-SERVER_EMAIL
# SERVER_EMAIL = 'root(a)your-domain.org'
SERVER_EMAIL = 'root@{}'.format(EMAILNAME)
# Django Allauth
ACCOUNT_DEFAULT_HTTP_PROTOCOL = "https"
#
# Social auth
#
SOCIALACCOUNT_PROVIDERS = {
#'openid': {
# 'SERVERS': [
# dict(id='yahoo',
# name='Yahoo',
# openid_url='http://me.yahoo.com'),
# ],
#},
#'google': {
# 'SCOPE': ['profile', 'email'],
# 'AUTH_PARAMS': {'access_type': 'online'},
#}, #'facebook': {
# 'METHOD': 'oauth2',
# 'SCOPE': ['email'],
# 'FIELDS': [
# 'email',
# 'name',
# 'first_name',
# 'last_name',
# 'locale',
# 'timezone',
# ],
# 'VERSION': 'v2.4',
#},
}
# On a production setup, setting COMPRESS_OFFLINE to True will bring a
# significant performance improvement, as CSS files will not need to be
# recompiled on each requests. It means running an additional "compress"
# management command after each code upgrade.
# http://django-compressor.readthedocs.io/en/latest/usage/#offline-compression
COMPRESS_OFFLINE = True
POSTORIUS_TEMPLATE_BASE_URL = 'http://localhost/mailman3/'
SITE_ID = 2
import ldap
from django_auth_ldap.config import LDAPSearch # LDAP server URI
AUTH_LDAP_SERVER_URI = "ldap://127.0.0.1"
# Bind DN & password (service account from IITM LDAP admin)
AUTH_LDAP_BIND_DN = "cn=ldapreader,ou=Services,dc=iitm,dc=ac,dc=in"
AUTH_LDAP_BIND_PASSWORD = "642126"
# Where to search for users
AUTH_LDAP_USER_SEARCH = LDAPSearch(
"ou=People,dc=iitm,dc=ac,dc=in",
ldap.SCOPE_SUBTREE,
"(uid=%(user)s)"
)
# Map LDAP attributes to Django user fields
AUTH_LDAP_USER_ATTR_MAP = {
"first_name": "cn",
"last_name": "sn",
# "email": "mail" # optional if not present
}
# Authentication backends (LDAP first, fallback to Django DB)
AUTHENTICATION_BACKENDS = [
"django_auth_ldap.backend.LDAPBackend",
"django.contrib.auth.backends.ModelBackend",
]
import logging
logger = logging.getLogger('django_auth_ldap')
logger.setLevel(logging.DEBUG)
logger.addHandler(logging.StreamHandler())
-----Original Message-----
From: Nirmal <nirmal(a)iitm.ac.in>
To: Stephen <steve(a)turnbull.jp>
Cc: mailman-users <mailman-users(a)mailman3.org>
Date: Friday, 26 September 2025 3:27 PM IST
Subject: Re: [MM3-users] Re: Reg Archive Inactive Status
Yes I have it. I am also sharing that also settings_local.py
-----Original Message-----
From: Stephen <steve(a)turnbull.jp>
To: Nirmal <nirmal(a)iitm.ac.in>
Cc: mailman-users <mailman-users(a)mailman3.org>
Date: Friday, 26 September 2025 3:09 PM IST
Subject: [MM3-users] Re: Reg Archive Inactive Status
Nirmal J via Mailman-users writes:
> Hereby I am sharing the full settings.py file.
Are you sure this is the settings.py being used by your installation?
It appears to be the distribution file, unchanged.
> MAILMAN_ARCHIVER_FROM = ('127.0.0.1', '::1')# Application definition
If this is from the installed settings.py, it isn't going to work,
since you specified a routable domain (I think, although
"list1.iitm.ac.in" is not in the public DNS), which will have a
routable address, not localhost.
What IP does your DNS report for "list1.iitm.ac.in"?
> HOSTNAME = 'localhost.local'
That isn't what you told Mailman via hyperkitty.cfg. I'm not sure it
matters, but I think you should make sure all the config files agree
on the name of the host.
> # If you enable email reporting for error messages, this is where those emails
> # will appear to be coming from. Make sure you set a valid domain name,
> # otherwise the emails may get rejected.
> # https://docs.djangoproject.com/en/1.8/ref/settings/#std:setting-SERVER_EMAIL
> # SERVER_EMAIL = 'root(a)your-domain.org'
> SERVER_EMAIL = 'root@{}'.format(HOSTNAME)
This can be problematic, at least if you enable error messages by email.
> try:
> from settings_local import *
> except ImportError:
> pass
Do you have a "settings_local.py" file?
--
GNU Mailman consultant (installation, migration, customization)
Sirius Open Source https://www.siriusopensource.com/
Software systems consulting in Europe, North America, and Japan
5 months, 1 week
[MM3-users] Re: Importing mbox files into archive defect with lines with From
by Alex Schuilenburg
Hi Stephen
On 19/09/2023 19:59, Stephen J. Turnbull wrote:
> Did you intend to send this to me only?
Nope, apologies. I'm happy to add the list back in - I thought I hit
reply-to-list.
> Alex Schuilenburg writes:
>
> > Yes, I retested with from the git head as well. Same result. It
> > sees the line
> >
> > From 1st April 2019, our turnover has exceeded the threshold for
> >
> > as the start of a new message and reports no anomolies although
> > there is clearly one.
>
> If there is an empty line preceding that one, and the "F" is in the
> first column (no marginal whitespace), that is considered correct
> behavior for processing an mbox file.
As an email separator agreed, provided the body has all "First "
(preceded by a blank line and nothing preceding on the same line)
suitably escaped.
> If you don't like it, don't use the mbox format. The maildir
> message-per-file format is widely supported, and if you want a
> folder-per-file rather than message-per-file format, MMDF is fairly
> widely supported, and does not suffer from the ambiguities of mbox.
> All three (with variations) are supported by recent Python 3.
Understood. My issue is the lists were imported from MM2.1 in 2020 into
MM3.2.1 onto hyperkitty+mariadb/mysql.
So the current installation has no mbox files - archives are stored in a
mysql database.
> > The old MM3 installation I am migrating away from is obviously
> > broken in that its mbox archive when downloaded is not escaped,
>
> That's interesting. I presume that's because HyperKitty saves
> messages in a database rather than as mbox files, and the old mbox
> exporter just flattened and concatenated the messages. Or perhaps
> that also uses mailbox.mbox and old enough versions of that didn't
> From-stuff.
Spot on.
I have to move the lists onto a new Debian 12 server using the native
mailman 3.3.8 & mailman-web 0+20200530-2 packages. I tried dropping in
the old mailman3 database under the new software but that did not work.
Instead I manually imported the old mailman3 data directly into the new
mailman3 database as, after inspections, there were no new tables and
only a couple of additional fields which have suitable defaults. So
dumped the mailman3 data with
mysqldump --no-create-info --no-create-db --disable-keys
--complete-insert --ignore-table=mailman3.alembic_version mailman3
and simply imported the dump into the new schema. OK so far. The lists
showed up in postorius, obviously without archives in hyperkitty.
> The normal way to upgrade a HyperKitty archive is to do nothing, just
> upgrade the software. I guess you moved to a new host and deleted the
> database? The preferred way is to dump the database to SQL, and then
> load it in to the new database directly rather than downloading the
> mbox files and importing. No ambiguity and much faster.
Thats what I thought initially, but that failed as per
https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message….
As my old installation appears to have the django_migrations table
inconsistent with the state of the database, and Debian have been
unresponsive so far.
Unfortunately the same mailman3-style manual import of mailman3web from
old mailman3web db into the new db was not possible. There were
additional tables and fields that needed values rather than defaults.
Instead I opted to download the mbox exports from the old installation
via the web interface and import them into the new installation for
expediency.This is where I was when I posted the message.
However, the old installation's mbox archive export (from the database)
was problematic (e.g. 5min timeout) but after getting around those
issues I ended up with some broken mbox files (e.g. the "From 1st April
..." line within a message, resulting in hyperkitty_import failures).
> > although I tested downloading this thread archive and it is clearly
> > escaped. Unfortunately I cannot tell if hyperkitty_import works
> > using the git head since I am restricted to using the version
> > provided with Debian 12.
>
> In July it worked for me on a site with 5300 archived lists. I assume
> some of them had From-stuffed lines. Can't be sure, most of the posts
> are machine-generated, but lines beginning with "From " are pretty
> common in natural English.
I'd be surprised if there were not any. I have 2003 lists and several
occurrences.
>
> > There are indeed two versions though of mailbox.py on the VM:
> >
> > /usr/lib/python3/dist-packages/mailman/utilities/mailbox.py: from
> > mailman3 (3.3.8-2~deb12u1)
> > /usr/lib/python3.11/mailbox.py from libpython3.11-stdlib (3.11.2-6)
>
> The first applies one small change to the second (a so-called
> "monkey-patch") for use by Mailman core. It should only be visible
> to Python by the name "mailman.utilities.mailbox". The HyperKitty
> utilities import the name "mailbox". If overwriting the first with
> the second changes HyperKitty's behavior, something is wrong with
> sys.path.
Then I guess that is the case in Debian 12.
>
> > the latter of which appears far more substantial , so I dropped
> > that module over the former and reran hyperkitty_import over the
> > '>' escaped mbox, and while it did import without error, it did
> > leave the escape in place (i.e. the 'From ...' was quoted when
> > viewed).
>
> This is considered correct behavior. It is not possible to determine
> whether the escape was in the original, or added by a receiving MTA.
> Better to leave it.
I thought that ">From " would be escaped to ">>From ", and so on, so the
escape could easily be reversed when imported. I tested exports from the
mailman-users lists and lines beginning "From " (preceded by a blank
line) are escaped to ">From ", so incorrectly figured this would be
unescaped by hyperkitty_import. After all, I would expect that an export
of the archive to mbox, followed by a delete of the archive, followed by
a hyperkitty_import of the archive, should leave you at the same place.
Not with ">From " escapes in the new archives. In fact I also had a
number of messages with "Message-ID: <>" and worse: all messages with
attachments had the text/plain content empty.
So mbox exports from MM 3.2.1 on Debian 10 (using hyperkitty+mysql) are
broken.
>
> > The unescaped mbox import died in the same way.
>
> As expected.
>
> > Anyhow, thanks for your suggestion. For now I can stick with a
> > manual repair and spaced escape of From_.
>
> If the old database is still available, I recommend dumping that and
> loading it into a fresh version of the DBMS.
> ...
Thanks for the pointer. As I had already done the same with mailman3,
so repeated the excercise. The following dump and import worked.
oldhost> mysqldump --no-create-info --no-create-db --disable-keys
--complete-insert mailman3web > mailman3web.sql
newhost> mysql
MariaDB [(none]> use mailman3web
MariaDB [mailman3web]> source mailman3web.sql
Thanks again
-- Alex
2 years, 5 months
[MM3-users] Re: Welcome Message
by josh@caluette.com
I just setup a new Mailman 3 server using maxking/docker-mailman from GitHub. I got everything working just right including changing the footer template for messages. However, when trying to set anything in a Welcome template, I am encountering these same errors.
I have confirmed that the mailman-core container is able to download the template via curl using the http://mailman-web:8000/ api URL and gets the correct text, but anytime I try to mass subscribe, it fails with the errors that Brian had provided and I get an HTTP 500 error.
If I remove the Welcome template, then I can do mass subscribe just fine.
Here are the logs:
Nov 06 17:10:13 2019 (29) deque:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 384, in _make_request
six.raise_from(e, None)
File "<string>", line 2, in raise_from
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 380, in _make_request
httplib_response = conn.getresponse()
File "/usr/lib/python3.6/http/client.py", line 1331, in getresponse
response.begin()
File "/usr/lib/python3.6/http/client.py", line 297, in begin
version, status, reason = self._read_status()
File "/usr/lib/python3.6/http/client.py", line 258, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "/usr/lib/python3.6/socket.py", line 586, in readinto
return self._sock.recv_into(b)
socket.timeout: timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/requests/adapters.py", line 449, in send
timeout=timeout
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 638, in urlopen
_stacktrace=sys.exc_info()[2])
File "/usr/lib/python3.6/site-packages/urllib3/util/retry.py", line 367, in increment
raise six.reraise(type(error), error, _stacktrace)
File "/usr/lib/python3.6/site-packages/urllib3/packages/six.py", line 686, in reraise
raise value
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 600, in urlopen
chunked=chunked)
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 386, in _make_request
self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 306, in _raise_timeout
raise ReadTimeoutError(self, url, "Read timed out. (read timeout=%s)" % timeout_value)
urllib3.exceptions.ReadTimeoutError: HTTPConnectionPool(host='mailman-web', port=8000): Read timed out. (read timeout=5)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/mailman/app/workflow.py", line 69, in __next__
return step()
File "/usr/lib/python3.6/site-packages/mailman/app/subscriptions.py", line 326, in _step_do_subscription
self.member = self.mlist.subscribe(self.subscriber)
File "/usr/lib/python3.6/site-packages/mailman/database/transaction.py", line 85, in wrapper
return function(args[0], config.db.store, *args[1:], **kws)
File "/usr/lib/python3.6/site-packages/mailman/model/mailinglist.py", line 494, in subscribe
notify(SubscriptionEvent(self, member))
File "/usr/lib/python3.6/site-packages/zope/event/__init__.py", line 32, in notify
subscriber(event)
File "/usr/lib/python3.6/site-packages/mailman/app/membership.py", line 169, in handle_SubscriptionEvent
send_welcome_message(mlist, member, member.preferred_language)
File "/usr/lib/python3.6/site-packages/mailman/app/notifications.py", line 52, in send_welcome_message
'list:user:notice:welcome', mlist, language=language.code))
File "/usr/lib/python3.6/site-packages/mailman/model/template.py", line 188, in get
name, lookup_context, **substitutions)
File "/usr/lib/python3.6/site-packages/mailman/database/transaction.py", line 85, in wrapper
return function(args[0], config.db.store, *args[1:], **kws)
File "/usr/lib/python3.6/site-packages/mailman/model/template.py", line 109, in get
contents = protocols.get(actual_uri, **auth)
File "/usr/lib/python3.6/site-packages/mailman/utilities/protocols.py", line 38, in get
response = requests.get(url, timeout=REQUEST_TIMEOUT, **kws)
File "/usr/lib/python3.6/site-packages/requests/api.py", line 75, in get
return request('get', url, params=params, **kwargs)
File "/usr/lib/python3.6/site-packages/requests/api.py", line 60, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/lib/python3.6/site-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python3.6/site-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python3.6/site-packages/requests/adapters.py", line 529, in send
raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPConnectionPool(host='mailman-web', port=8000): Read timed out. (read timeout=5)
Nov 06 17:10:13 2019 (29) REST request handler error:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 384, in _make_request
six.raise_from(e, None)
File "<string>", line 2, in raise_from
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 380, in _make_request
httplib_response = conn.getresponse()
File "/usr/lib/python3.6/http/client.py", line 1331, in getresponse
response.begin()
File "/usr/lib/python3.6/http/client.py", line 297, in begin
version, status, reason = self._read_status()
File "/usr/lib/python3.6/http/client.py", line 258, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "/usr/lib/python3.6/socket.py", line 586, in readinto
return self._sock.recv_into(b)
socket.timeout: timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/requests/adapters.py", line 449, in send
timeout=timeout
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 638, in urlopen
_stacktrace=sys.exc_info()[2])
File "/usr/lib/python3.6/site-packages/urllib3/util/retry.py", line 367, in increment
raise six.reraise(type(error), error, _stacktrace)
File "/usr/lib/python3.6/site-packages/urllib3/packages/six.py", line 686, in reraise
raise value
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 600, in urlopen
chunked=chunked)
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 386, in _make_request
self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 306, in _raise_timeout
raise ReadTimeoutError(self, url, "Read timed out. (read timeout=%s)" % timeout_value)
urllib3.exceptions.ReadTimeoutError: HTTPConnectionPool(host='mailman-web', port=8000): Read timed out. (read timeout=5)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.6/wsgiref/handlers.py", line 137, in run
self.result = application(self.environ, self.start_response)
File "/usr/lib/python3.6/site-packages/mailman/database/transaction.py", line 50, in wrapper
rtn = function(*args, **kws)
File "/usr/lib/python3.6/site-packages/mailman/rest/wsgiapp.py", line 218, in __call__
return super().__call__(environ, start_response)
File "/usr/lib/python3.6/site-packages/falcon/api.py", line 244, in __call__
responder(req, resp, **params)
File "/usr/lib/python3.6/site-packages/mailman/rest/members.py", line 266, in on_post
pre_approved=pre_approved)
File "/usr/lib/python3.6/site-packages/mailman/app/subscriptions.py", line 520, in register
list(workflow)
File "/usr/lib/python3.6/site-packages/mailman/app/workflow.py", line 69, in __next__
return step()
File "/usr/lib/python3.6/site-packages/mailman/app/subscriptions.py", line 326, in _step_do_subscription
self.member = self.mlist.subscribe(self.subscriber)
File "/usr/lib/python3.6/site-packages/mailman/database/transaction.py", line 85, in wrapper
return function(args[0], config.db.store, *args[1:], **kws)
File "/usr/lib/python3.6/site-packages/mailman/model/mailinglist.py", line 494, in subscribe
notify(SubscriptionEvent(self, member))
File "/usr/lib/python3.6/site-packages/zope/event/__init__.py", line 32, in notify
subscriber(event)
File "/usr/lib/python3.6/site-packages/mailman/app/membership.py", line 169, in handle_SubscriptionEvent
send_welcome_message(mlist, member, member.preferred_language)
File "/usr/lib/python3.6/site-packages/mailman/app/notifications.py", line 52, in send_welcome_message
'list:user:notice:welcome', mlist, language=language.code))
File "/usr/lib/python3.6/site-packages/mailman/model/template.py", line 188, in get
name, lookup_context, **substitutions)
File "/usr/lib/python3.6/site-packages/mailman/database/transaction.py", line 85, in wrapper
return function(args[0], config.db.store, *args[1:], **kws)
File "/usr/lib/python3.6/site-packages/mailman/model/template.py", line 109, in get
contents = protocols.get(actual_uri, **auth)
File "/usr/lib/python3.6/site-packages/mailman/utilities/protocols.py", line 38, in get
response = requests.get(url, timeout=REQUEST_TIMEOUT, **kws)
File "/usr/lib/python3.6/site-packages/requests/api.py", line 75, in get
return request('get', url, params=params, **kwargs)
File "/usr/lib/python3.6/site-packages/requests/api.py", line 60, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/lib/python3.6/site-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python3.6/site-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python3.6/site-packages/requests/adapters.py", line 529, in send
raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPConnectionPool(host='mailman-web', port=8000): Read timed out. (read timeout=5)
6 years, 4 months
[MM3-users] Re: Mailman3 without Hyperkitty in docker
by Abhilash Raj
On Thu, Feb 28, 2019, at 10:18 PM, Danil Smirnov wrote:
> Hi Abhilash,
>
> Thank you very much - the previous error is fixed now.
>
> But I have another one now, which causes the same 500 Server Error:
>
> bash-4.3# cat /opt/mailman-web-data/logs/uwsgi-error.log
> *** Starting uWSGI 2.0.18 (64bit) on [Fri Mar 1 05:42:09 2019] ***
> compiled with version: 6.3.0 on 01 March 2019 01:52:42
> os: Linux-3.10.0-693.11.1.el7.x86_64 #1 SMP Mon Dec 4 23:52:40 UTC 2017
> nodename: mailman-web
> machine: x86_64
> clock source: unix
> detected number of CPU cores: 2
> current working directory: /opt/mailman-web
> detected binary path: /usr/local/bin/uwsgi
> !!! no internal routing support, rebuild with pcre support !!!
> setgid() to 101
> setuid() to 100
> chdir() to /opt/mailman-web
> your memory page size is 4096 bytes
> detected max file descriptor number: 1048576
> building mime-types dictionary from file /etc/mime.types...1168 entry found
> lock engine: pthread robust mutexes
> thunder lock: disabled (you can enable it with --thunder-lock)
> uwsgi socket 0 bound to TCP address 0.0.0.0:8080 fd 8
> uwsgi socket 1 bound to TCP address 0.0.0.0:8000 fd 9
> Python version: 3.6.8 (default, Jan 30 2019, 23:58:16) [GCC 6.3.0]
> Python main interpreter initialized at 0x55a2df7f57e0
> python threads support enabled
> your server socket listen backlog is limited to 100 connections
> your mercy for graceful operations on workers is 60 seconds
> mapped 166752 bytes (162 KB) for 2 cores
> *** Operational MODE: threaded ***
> Traceback (most recent call last):
> File "/usr/local/lib/python3.6/site-packages/django/utils/module_loading.py", line 20, in import_string
> return getattr(module, class_name)
> AttributeError: module 'django.contrib.auth.middleware' has no attribute 'SessionAuthenticationMiddleware'
>
> The above exception was the direct cause of the following exception:
>
> Traceback (most recent call last):
> File "wsgi.py", line 38, in <module>
> application = get_wsgi_application()
> File "/usr/local/lib/python3.6/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application
> return WSGIHandler()
> File "/usr/local/lib/python3.6/site-packages/django/core/handlers/wsgi.py", line 136, in __init__
> self.load_middleware()
> File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line 34, in load_middleware
> middleware = import_string(middleware_path)
> File "/usr/local/lib/python3.6/site-packages/django/utils/module_loading.py", line 24, in import_string
> ) from err
> ImportError: Module "django.contrib.auth.middleware" does not define a "SessionAuthenticationMiddleware" attribute/class
> unable to load app 0 (mountpoint='') (callable not found or import error)
> *** no app loaded. going in full dynamic mode ***
> *** uWSGI is running in multiple interpreter mode ***
> spawned uWSGI master process (pid: 1)
> spawned uWSGI worker 1 (pid: 37, cores: 2)
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
>
> As per my investigation, this error possibly caused by Django upgrade:
>
> *The SessionAuthenticationMiddleware class is removed. It provided no functionality since session authentication is unconditionally enabled in Django 1.10.*
>
> See https://docs.djangoproject.com/en/2.0/releases/2.0/
>
> After I've removed the line
> https://github.com/maxking/docker-mailman/blob/master/postorius/mailman-web…
> from settings.py, the container is finally working.
>
> I've placed PR in github:
> https://github.com/maxking/docker-mailman/pull/314
Thank you for your contributions!
I have merged your pull request and it should now be out (hopefully!).
>
> Thank you for your help.
>
> Danil
>
>
> пт, 1 мар. 2019 г. в 04:33, Abhilash Raj <maxking(a)asynchronous.in>:
>>
>>
>> On Thu, Feb 28, 2019, at 5:19 PM, Abhilash Raj wrote:
>> > On February 27, 2019 11:53:34 PM PST, Danil Smirnov <danil(a)smirnov.la> wrote:
>> > >Hi Mark,
>> > >
>> > >Actually all this stuff happens inside the container after it's started
>> > >and
>> > >initialized without errors. I didn't amend the image anyhow.
>> > >
>> > >Also I have the configuration based on docker-compose.yaml provided in
>> > >the
>> > >repository which works just fine for mailman-web image.
>> > >
>> > >The very same config with postorius image (+ UWSGI_STATIC_MAP param)
>> > >fails
>> > >with 500 error...
>> > >
>> > >Now answering your questions:
>> > >
>> > >ср, 27 февр. 2019 г., 22:56 Mark Sapiro <mark(a)msapiro.net>:
>> > >
>> > >> do you have django-q in INSTALLED_APPS in your Django settings and
>> > >what
>> > >> is set for Q_CLUSTER?
>> > >>
>> > >
>> > >I've checked settings.py inside the container and I haven't found any
>> > >of
>> > >the mentioned configurations there.
>> > >
>> > >Does the manage.py that's being run here point to the right
>> > >settings.py?
>> > >>
>> > >
>> > >No clue.
>> > >
>> > >Also I wonder why we have some Hyperkitty-related cronjobs in non-HK
>> > >configured image?
>> > >
>> > >https://github.com/maxking/docker-mailman/blob/master/postorius/mailman-web…
>> >
>> > Because I am a dum dum ;-)
>> >
>> > Will work on removing those crons and stuff. Would be nice if you
>> > opened an issue on Github so that I don't forget.
>>
>> Should now be fixed in the latest image.
>>
>> >
>> > >Danil
>> > >
>> > >
>> > >
>> > >> --
>> > >> Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
>> > >> San Francisco Bay Area, California better use your sense - B.
>> > >Dylan
>> > >> _______________________________________________
>> > >> Mailman-users mailing list -- mailman-users(a)mailman3.org
>> > >> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
>> > >> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>> > >>
>> > >_______________________________________________
>> > >Mailman-users mailing list -- mailman-users(a)mailman3.org
>> > >To unsubscribe send an email to mailman-users-leave(a)mailman3.org
>> > >https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>> >
>> >
>> > --
>> > Sent from my Android device with K-9 Mail. Please excuse my brevity.
>>
>> --
>> thanks,
>> Abhilash Raj (maxking)
--
thanks,
Abhilash Raj (maxking)
7 years
[MM3-users] Re: Internal Server Errors in mailmanweb.log
by Washington Odhiambo
On Sat, Jan 24, 2026 at 12:11 AM Mark Sapiro <mark(a)msapiro.net> wrote:
> On 1/22/26 00:53, Washington Odhiambo via Mailman-users wrote:
> > On Thu, Dec 25, 2025 at 10:46 AM Washington Odhiambo <odhiambo(a)gmail.com
> >
> > wrote:
> >
> > For some reason, my mailmanweb (I am using Gunicorn) has been misbehaving
> > lately.
> > The last change I ever made to my MM3 installation is when I applied the
> > patch mentioned in this thread.
> > The misbehavior manifests in the Postrorius web UI becoming inaccessible,
> > much as mailmanweb is running.
>
> It looks like all the logged errors result from an attempt to export a
> thread from HyperKitty. Is it this export that precipitates the issue?
I am not trying to export any threads at all. I haven't tried doing it for
whatever reason.
So the fact that there is even an attempt at exporting it is strange.
I first encountered this issue when I got notified of some held messages
that required moderation.
Postorius failed to load. And on checking the status of mailmaweb, I
realized it's running, but using so much RAM.
I restarted it and I was able to access Postorius.
And now this has become an almost daily routine - restarting it.
> I.e, can you access Postorius first thing after a clean start of
> mailman web?
Yes.
What I have realized though is that after restarting it, with time its
memory usage begins to increase significantly fast.
Within no time, it's already using 1GB+ RAM.
As I write this email, this is what I just seen on checking it:
```
root@eu:/home/wash# systemctl status mailmanweb
● mailmanweb.service - GNU Mailman Web UI
Loaded: loaded (/etc/systemd/system/mailmanweb.service; enabled;
preset: enabled)
Active: active (running) since Fri 2026-01-23 16:43:28 EAT; 20h ago
Main PID: 1758633 (gunicorn)
Tasks: 3 (limit: 28775)
Memory: 2.0G
CPU: 8h 4min 40.949s
CGroup: /system.slice/mailmanweb.service
├─1758633 /opt/mailman/venv/bin/python3
/opt/mailman/venv/bin/gunicorn -c /etc/mailman3/gunicorn.conf.py
mailman_web.wsgi:application
├─2665379 /opt/mailman/venv/bin/python3
/opt/mailman/venv/bin/gunicorn -c /etc/mailman3/gunicorn.conf.py
mailman_web.wsgi:application
└─2665624 /opt/mailman/venv/bin/python3
/opt/mailman/venv/bin/gunicorn -c /etc/mailman3/gunicorn.conf.py
mailman_web.wsgi:application
Jan 24 13:10:46 eu.kictanet.or.ke gunicorn[2663345]: Updated PYTHONPATH to
: /etc/mailman3/:/etc/mailman3
Jan 24 13:11:19 eu.kictanet.or.ke gunicorn[2663765]: Updated PYTHONPATH to
: /etc/mailman3/:/etc/mailman3
Jan 24 13:11:36 eu.kictanet.or.ke gunicorn[2663948]: Updated PYTHONPATH to
: /etc/mailman3/:/etc/mailman3
Jan 24 13:11:52 eu.kictanet.or.ke gunicorn[2664060]: Updated PYTHONPATH to
: /etc/mailman3/:/etc/mailman3
Jan 24 13:12:27 eu.kictanet.or.ke gunicorn[2664535]: Updated PYTHONPATH to
: /etc/mailman3/:/etc/mailman3
Jan 24 13:12:40 eu.kictanet.or.ke gunicorn[2664626]: Updated PYTHONPATH to
: /etc/mailman3/:/etc/mailman3
Jan 24 13:12:59 eu.kictanet.or.ke gunicorn[2664813]: Updated PYTHONPATH to
: /etc/mailman3/:/etc/mailman3
Jan 24 13:13:33 eu.kictanet.or.ke gunicorn[2665220]: Updated PYTHONPATH to
: /etc/mailman3/:/etc/mailman3
Jan 24 13:13:51 eu.kictanet.or.ke gunicorn[2665379]: Updated PYTHONPATH to
: /etc/mailman3/:/etc/mailman3
Jan 24 13:14:05 eu.kictanet.or.ke gunicorn[2665624]: Updated PYTHONPATH to
: /etc/mailman3/:/etc/mailman3
root@eu:/home/wash#
```
> If so, is it only when you try to export a thread from HyperKitty that the
> issues start?
>
I am not trying to export any threads at all.
Check this:
root@eu:/home/wash# systemctl restart mailmanweb
root@eu:/home/wash# systemctl status mailmanweb
● mailmanweb.service - GNU Mailman Web UI
Loaded: loaded (/etc/systemd/system/mailmanweb.service; enabled;
preset: enabled)
Active: active (running) since Sat 2026-01-24 13:33:42 EAT; 6s ago
Main PID: 2679426 (gunicorn)
Tasks: 3 (limit: 28775)
Memory: 158.0M
CPU: 3.358s
CGroup: /system.slice/mailmanweb.service
├─2679426 /opt/mailman/venv/bin/python3
/opt/mailman/venv/bin/gunicorn -c /etc/mailman3/gunicorn.conf.py
mailman_web.wsgi:application
├─2679427 /opt/mailman/venv/bin/python3
/opt/mailman/venv/bin/gunicorn -c /etc/mailman3/gunicorn.conf.py
mailman_web.wsgi:application
└─2679429 /opt/mailman/venv/bin/python3
/opt/mailman/venv/bin/gunicorn -c /etc/mailman3/gunicorn.conf.py
mailman_web.wsgi:application
Jan 24 13:33:42 eu.kictanet.or.ke systemd[1]: Started mailmanweb.service -
GNU Mailman Web UI.
Jan 24 13:33:43 eu.kictanet.or.ke gunicorn[2679427]: Updated PYTHONPATH to
: /etc/mailman3/:/etc/mailman3
Jan 24 13:33:43 eu.kictanet.or.ke gunicorn[2679429]: Updated PYTHONPATH to
: /etc/mailman3/:/etc/mailman3
root@eu:/home/wash# systemctl status mailmanweb
● mailmanweb.service - GNU Mailman Web UI
Loaded: loaded (/etc/systemd/system/mailmanweb.service; enabled;
preset: enabled)
Active: active (running) since Sat 2026-01-24 13:33:42 EAT; 12s ago
Main PID: 2679426 (gunicorn)
Tasks: 3 (limit: 28775)
Memory: 162.3M
CPU: 6.971s
CGroup: /system.slice/mailmanweb.service
├─2679426 /opt/mailman/venv/bin/python3
/opt/mailman/venv/bin/gunicorn -c /etc/mailman3/gunicorn.conf.py
mailman_web.wsgi:application
├─2679427 /opt/mailman/venv/bin/python3
/opt/mailman/venv/bin/gunicorn -c /etc/mailman3/gunicorn.conf.py
mailman_web.wsgi:application
└─2679429 /opt/mailman/venv/bin/python3
/opt/mailman/venv/bin/gunicorn -c /etc/mailman3/gunicorn.conf.py
mailman_web.wsgi:application
Jan 24 13:33:42 eu.kictanet.or.ke systemd[1]: Started mailmanweb.service -
GNU Mailman Web UI.
Jan 24 13:33:43 eu.kictanet.or.ke gunicorn[2679427]: Updated PYTHONPATH to
: /etc/mailman3/:/etc/mailman3
Jan 24 13:33:43 eu.kictanet.or.ke gunicorn[2679429]: Updated PYTHONPATH to
: /etc/mailman3/:/etc/mailman3
root@eu:/home/wash# systemctl status mailmanweb
● mailmanweb.service - GNU Mailman Web UI
Loaded: loaded (/etc/systemd/system/mailmanweb.service; enabled;
preset: enabled)
Active: active (running) since Sat 2026-01-24 13:33:42 EAT; 15s ago
Main PID: 2679426 (gunicorn)
Tasks: 3 (limit: 28775)
Memory: 162.4M
CPU: 8.193s
CGroup: /system.slice/mailmanweb.service
├─2679426 /opt/mailman/venv/bin/python3
/opt/mailman/venv/bin/gunicorn -c /etc/mailman3/gunicorn.conf.py
mailman_web.wsgi:application
├─2679427 /opt/mailman/venv/bin/python3
/opt/mailman/venv/bin/gunicorn -c /etc/mailman3/gunicorn.conf.py
mailman_web.wsgi:application
└─2679429 /opt/mailman/venv/bin/python3
/opt/mailman/venv/bin/gunicorn -c /etc/mailman3/gunicorn.conf.py
mailman_web.wsgi:application
Jan 24 13:33:42 eu.kictanet.or.ke systemd[1]: Started mailmanweb.service -
GNU Mailman Web UI.
Jan 24 13:33:43 eu.kictanet.or.ke gunicorn[2679427]: Updated PYTHONPATH to
: /etc/mailman3/:/etc/mailman3
Jan 24 13:33:43 eu.kictanet.or.ke gunicorn[2679429]: Updated PYTHONPATH to
: /etc/mailman3/:/etc/mailman3
root@eu:/home/wash# systemctl status mailmanweb
● mailmanweb.service - GNU Mailman Web UI
Loaded: loaded (/etc/systemd/system/mailmanweb.service; enabled;
preset: enabled)
Active: active (running) since Sat 2026-01-24 13:33:42 EAT; 18s ago
Main PID: 2679426 (gunicorn)
Tasks: 3 (limit: 28775)
Memory: 210.5M
CPU: 8.629s
CGroup: /system.slice/mailmanweb.service
├─2679426 /opt/mailman/venv/bin/python3
/opt/mailman/venv/bin/gunicorn -c /etc/mailman3/gunicorn.conf.py
mailman_web.wsgi:application
├─2679427 /opt/mailman/venv/bin/python3
/opt/mailman/venv/bin/gunicorn -c /etc/mailman3/gunicorn.conf.py
mailman_web.wsgi:application
└─2679429 /opt/mailman/venv/bin/python3
/opt/mailman/venv/bin/gunicorn -c /etc/mailman3/gunicorn.conf.py
mailman_web.wsgi:application
Jan 24 13:33:42 eu.kictanet.or.ke systemd[1]: Started mailmanweb.service -
GNU Mailman Web UI.
Jan 24 13:33:43 eu.kictanet.or.ke gunicorn[2679427]: Updated PYTHONPATH to
: /etc/mailman3/:/etc/mailman3
Jan 24 13:33:43 eu.kictanet.or.ke gunicorn[2679429]: Updated PYTHONPATH to
: /etc/mailman3/:/etc/mailman3
root@eu:/home/wash# systemctl status mailmanweb
● mailmanweb.service - GNU Mailman Web UI
Loaded: loaded (/etc/systemd/system/mailmanweb.service; enabled;
preset: enabled)
Active: active (running) since Sat 2026-01-24 13:33:42 EAT; 38s ago
Main PID: 2679426 (gunicorn)
Tasks: 3 (limit: 28775)
Memory: 1.3G
CPU: 24.429s
CGroup: /system.slice/mailmanweb.service
├─2679426 /opt/mailman/venv/bin/python3
/opt/mailman/venv/bin/gunicorn -c /etc/mailman3/gunicorn.conf.py
mailman_web.wsgi:application
├─2679427 /opt/mailman/venv/bin/python3
/opt/mailman/venv/bin/gunicorn -c /etc/mailman3/gunicorn.conf.py
mailman_web.wsgi:application
└─2679429 /opt/mailman/venv/bin/python3
/opt/mailman/venv/bin/gunicorn -c /etc/mailman3/gunicorn.conf.py
mailman_web.wsgi:application
Jan 24 13:33:42 eu.kictanet.or.ke systemd[1]: Started mailmanweb.service -
GNU Mailman Web UI.
Jan 24 13:33:43 eu.kictanet.or.ke gunicorn[2679427]: Updated PYTHONPATH to
: /etc/mailman3/:/etc/mailman3
Jan 24 13:33:43 eu.kictanet.or.ke gunicorn[2679429]: Updated PYTHONPATH to
: /etc/mailman3/:/etc/mailman3
root@eu:/home/wash#
--
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]
1 month, 1 week
[MM3-users] Re: Reg Archive Inactive Status
by Nirmal J
DNS Report for that list1.iitm.ac.in is 10.24.5.52
-----Original Message-----
From: Nirmal <nirmal(a)iitm.ac.in>
To: Nirmal <nirmal(a)iitm.ac.in>
Cc: Stephen <steve(a)turnbull.jp>; mailman-users <mailman-users(a)mailman3.org>
Date: Friday, 26 September 2025 3:28 PM IST
Subject: Re: [MM3-users] Re: Reg Archive Inactive Status
Yes I have it. I am also sharing that also settings_local.py file
# This file is imported by the Mailman Suite. It is used to override
# the default settings from /usr/share/mailman3-web/settings.py.
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'vWzgIJ1Hvjgy4yXJz7l71vpxX6+pJcBLMdv8mWNNAd0ajVr1'
ADMINS = (
('Mailman Suite Admin', 'nirmal(a)iitm.ac.in'),
)
# Hosts/domain names that are valid for this site; required if DEBUG is False
# See https://docs.djangoproject.com/en/1.8/ref/settings/#allowed-hosts
# Set to '*' per default in the Deian package to allow all hostnames. Mailman3
# is meant to run behind a webserver reverse proxy anyway.
ALLOWED_HOSTS = [
#"localhost", # Archiving API from Mailman, keep it.
# "lists.your-domain.org",
# Add here all production URLs you may have.
'*'
]
# Mailman API credentials
MAILMAN_REST_API_URL = 'http://localhost:8001'
MAILMAN_REST_API_USER = 'restadmin'
MAILMAN_REST_API_PASS = '/EqNGU+Mj8udFpw4ueIkhWXzAy3kJIy17wwzChrXb3P8Vh4e'
MAILMAN_ARCHIVER_KEY = 'n/ZZnR5bRgNdUEyNK4p731C1+gWJLw0/'
MAILMAN_ARCHIVER_FROM = ('127.0.0.1', '::1', '10.24.5.52')
# Application definition
INSTALLED_APPS = (
'hyperkitty',
'postorius',
'django_mailman3',
# Uncomment the next line to enable the admin:
'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'django_gravatar',
'compressor', 'haystack',
'django_extensions',
'django_q',
'allauth',
'allauth.account',
'allauth.socialaccount',
'django_mailman3.lib.auth.fedora',
#'allauth.socialaccount.providers.openid',
#'allauth.socialaccount.providers.github',
#'allauth.socialaccount.providers.gitlab',
#'allauth.socialaccount.providers.google',
#'allauth.socialaccount.providers.facebook',
#'allauth.socialaccount.providers.twitter',
#'allauth.socialaccount.providers.stackexchange',
)
# Database
# https://docs.djangoproject.com/en/1.8/ref/settings/#databases
DATABASES = {
'default': {
# Use 'sqlite3', 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'ENGINE': 'django.db.backends.sqlite3',
#'ENGINE': 'django.db.backends.postgresql_psycopg2',
#'ENGINE': 'django.db.backends.mysql',
# DB name or path to database file if using sqlite3.
'NAME': '/var/lib/mailman3/web/mailman3web.db',
# The following settings are not used with sqlite3:
'USER': '',
'PASSWORD': '',
# HOST: empty for localhost through domain sockets or '127.0.0.1' for
# localhost through TCP.
'HOST': '',
# PORT: set to empty string for default.
'PORT': '',
# OPTIONS: Extra parameters to use when connecting to the database.
'OPTIONS': {
# Set sql_mode to 'STRICT_TRANS_TABLES' for MySQL. See
# https://docs.djangoproject.com/en/1.11/ref/ # databases/#setting-sql-mode
#'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
},
}
}
# If you're behind a proxy, use the X-Forwarded-Host header
# See https://docs.djangoproject.com/en/1.8/ref/settings/#use-x-forwarded-host
USE_X_FORWARDED_HOST = True
# And if your proxy does your SSL encoding for you, set SECURE_PROXY_SSL_HEADER
# https://docs.djangoproject.com/en/1.8/ref/settings/#secure-proxy-ssl-header
# SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
# SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_SCHEME', 'https')
# Other security settings
# SECURE_SSL_REDIRECT = True
# If you set SECURE_SSL_REDIRECT to True, make sure the SECURE_REDIRECT_EXEMPT
# contains at least this line:
# SECURE_REDIRECT_EXEMPT = [
# "archives/api/mailman/.*", # Request from Mailman.
# ]
# SESSION_COOKIE_SECURE = True
# SECURE_CONTENT_TYPE_NOSNIFF = True
# SECURE_BROWSER_XSS_FILTER = True
# CSRF_COOKIE_SECURE = True
# CSRF_COOKIE_HTTPONLY = True
# X_FRAME_OPTIONS = 'DENY'
# Internationalization
# https://docs.djangoproject.com/en/1.8/topics/i18n/ LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
# Set default domain for email addresses.
EMAILNAME = 'list1.iitm.ac.in'
# If you enable internal authentication, this is the address that the emails
# will appear to be coming from. Make sure you set a valid domain name,
# otherwise the emails may get rejected.
# https://docs.djangoproject.com/en/1.8/ref/settings/#default-from-email
# DEFAULT_FROM_EMAIL = "mailing-lists(a)you-domain.org"
DEFAULT_FROM_EMAIL = 'postorius@{}'.format(EMAILNAME)
# If you enable email reporting for error messages, this is where those emails
# will appear to be coming from. Make sure you set a valid domain name,
# otherwise the emails may get rejected.
# https://docs.djangoproject.com/en/1.8/ref/settings/#std:setting-SERVER_EMAIL
# SERVER_EMAIL = 'root(a)your-domain.org'
SERVER_EMAIL = 'root@{}'.format(EMAILNAME)
# Django Allauth
ACCOUNT_DEFAULT_HTTP_PROTOCOL = "https"
#
# Social auth
#
SOCIALACCOUNT_PROVIDERS = {
#'openid': {
# 'SERVERS': [
# dict(id='yahoo',
# name='Yahoo',
# openid_url='http://me.yahoo.com'),
# ],
#},
#'google': {
# 'SCOPE': ['profile', 'email'],
# 'AUTH_PARAMS': {'access_type': 'online'},
#}, #'facebook': {
# 'METHOD': 'oauth2',
# 'SCOPE': ['email'],
# 'FIELDS': [
# 'email',
# 'name',
# 'first_name',
# 'last_name',
# 'locale',
# 'timezone',
# ],
# 'VERSION': 'v2.4',
#},
}
# On a production setup, setting COMPRESS_OFFLINE to True will bring a
# significant performance improvement, as CSS files will not need to be
# recompiled on each requests. It means running an additional "compress"
# management command after each code upgrade.
# http://django-compressor.readthedocs.io/en/latest/usage/#offline-compression
COMPRESS_OFFLINE = True
POSTORIUS_TEMPLATE_BASE_URL = 'http://localhost/mailman3/'
SITE_ID = 2
import ldap
from django_auth_ldap.config import LDAPSearch # LDAP server URI
AUTH_LDAP_SERVER_URI = "ldap://127.0.0.1"
# Bind DN & password (service account from IITM LDAP admin)
AUTH_LDAP_BIND_DN = "cn=ldapreader,ou=Services,dc=iitm,dc=ac,dc=in"
AUTH_LDAP_BIND_PASSWORD = "642126"
# Where to search for users
AUTH_LDAP_USER_SEARCH = LDAPSearch(
"ou=People,dc=iitm,dc=ac,dc=in",
ldap.SCOPE_SUBTREE,
"(uid=%(user)s)"
)
# Map LDAP attributes to Django user fields
AUTH_LDAP_USER_ATTR_MAP = {
"first_name": "cn",
"last_name": "sn",
# "email": "mail" # optional if not present
}
# Authentication backends (LDAP first, fallback to Django DB)
AUTHENTICATION_BACKENDS = [
"django_auth_ldap.backend.LDAPBackend",
"django.contrib.auth.backends.ModelBackend",
]
import logging
logger = logging.getLogger('django_auth_ldap')
logger.setLevel(logging.DEBUG)
logger.addHandler(logging.StreamHandler())
-----Original Message-----
From: Nirmal <nirmal(a)iitm.ac.in>
To: Stephen <steve(a)turnbull.jp>
Cc: mailman-users <mailman-users(a)mailman3.org>
Date: Friday, 26 September 2025 3:27 PM IST
Subject: Re: [MM3-users] Re: Reg Archive Inactive Status
Yes I have it. I am also sharing that also settings_local.py
-----Original Message-----
From: Stephen <steve(a)turnbull.jp>
To: Nirmal <nirmal(a)iitm.ac.in>
Cc: mailman-users <mailman-users(a)mailman3.org>
Date: Friday, 26 September 2025 3:09 PM IST
Subject: [MM3-users] Re: Reg Archive Inactive Status
Nirmal J via Mailman-users writes:
> Hereby I am sharing the full settings.py file.
Are you sure this is the settings.py being used by your installation?
It appears to be the distribution file, unchanged.
> MAILMAN_ARCHIVER_FROM = ('127.0.0.1', '::1')# Application definition
If this is from the installed settings.py, it isn't going to work,
since you specified a routable domain (I think, although
"list1.iitm.ac.in" is not in the public DNS), which will have a
routable address, not localhost.
What IP does your DNS report for "list1.iitm.ac.in"?
> HOSTNAME = 'localhost.local'
That isn't what you told Mailman via hyperkitty.cfg. I'm not sure it
matters, but I think you should make sure all the config files agree
on the name of the host.
> # If you enable email reporting for error messages, this is where those emails
> # will appear to be coming from. Make sure you set a valid domain name,
> # otherwise the emails may get rejected.
> # https://docs.djangoproject.com/en/1.8/ref/settings/#std:setting-SERVER_EMAIL
> # SERVER_EMAIL = 'root(a)your-domain.org'
> SERVER_EMAIL = 'root@{}'.format(HOSTNAME)
This can be problematic, at least if you enable error messages by email.
> try:
> from settings_local import *
> except ImportError:
> pass
Do you have a "settings_local.py" file?
--
GNU Mailman consultant (installation, migration, customization)
Sirius Open Source https://www.siriusopensource.com/
Software systems consulting in Europe, North America, and Japan
5 months, 1 week
[MM3-users] Re: Mailman3 without Hyperkitty in docker
by Danil Smirnov
Thank you very much Abhilash!
Could you set up 'latest' tag in postotius repo
<https://hub.docker.com/r/maxking/postorius/tags> please - as it exists for
core/web?
I'd like to have consistent approach across the images...
Also it would be really great to extend image labelling used for
*quay.io/maxking/mailman-*:rolling
<http://quay.io/maxking/mailman-*:rolling>* images to Docker Hub ones...
Version identification is quite hard for Docker...
With my best regards,
Danil
сб, 2 мар. 2019 г. в 03:19, Abhilash Raj <maxking(a)asynchronous.in>:
>
>
> On Thu, Feb 28, 2019, at 10:18 PM, Danil Smirnov wrote:
>
> Hi Abhilash,
>
> Thank you very much - the previous error is fixed now.
>
> But I have another one now, which causes the same 500 Server Error:
>
> bash-4.3# cat /opt/mailman-web-data/logs/uwsgi-error.log
> *** Starting uWSGI 2.0.18 (64bit) on [Fri Mar 1 05:42:09 2019] ***
> compiled with version: 6.3.0 on 01 March 2019 01:52:42
> os: Linux-3.10.0-693.11.1.el7.x86_64 #1 SMP Mon Dec 4 23:52:40 UTC 2017
> nodename: mailman-web
> machine: x86_64
> clock source: unix
> detected number of CPU cores: 2
> current working directory: /opt/mailman-web
> detected binary path: /usr/local/bin/uwsgi
> !!! no internal routing support, rebuild with pcre support !!!
> setgid() to 101
> setuid() to 100
> chdir() to /opt/mailman-web
> your memory page size is 4096 bytes
> detected max file descriptor number: 1048576
> building mime-types dictionary from file /etc/mime.types...1168 entry found
> lock engine: pthread robust mutexes
> thunder lock: disabled (you can enable it with --thunder-lock)
> uwsgi socket 0 bound to TCP address 0.0.0.0:8080 fd 8
> uwsgi socket 1 bound to TCP address 0.0.0.0:8000 fd 9
> Python version: 3.6.8 (default, Jan 30 2019, 23:58:16) [GCC 6.3.0]
> Python main interpreter initialized at 0x55a2df7f57e0
> python threads support enabled
> your server socket listen backlog is limited to 100 connections
> your mercy for graceful operations on workers is 60 seconds
> mapped 166752 bytes (162 KB) for 2 cores
> *** Operational MODE: threaded ***
> Traceback (most recent call last):
> File
> "/usr/local/lib/python3.6/site-packages/django/utils/module_loading.py",
> line 20, in import_string
> return getattr(module, class_name)
> AttributeError: module 'django.contrib.auth.middleware' has no attribute
> 'SessionAuthenticationMiddleware'
>
> The above exception was the direct cause of the following exception:
>
> Traceback (most recent call last):
> File "wsgi.py", line 38, in <module>
> application = get_wsgi_application()
> File "/usr/local/lib/python3.6/site-packages/django/core/wsgi.py", line
> 13, in get_wsgi_application
> return WSGIHandler()
> File
> "/usr/local/lib/python3.6/site-packages/django/core/handlers/wsgi.py", line
> 136, in __init__
> self.load_middleware()
> File
> "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line
> 34, in load_middleware
> middleware = import_string(middleware_path)
> File
> "/usr/local/lib/python3.6/site-packages/django/utils/module_loading.py",
> line 24, in import_string
> ) from err
> ImportError: Module "django.contrib.auth.middleware" does not define a
> "SessionAuthenticationMiddleware" attribute/class
> unable to load app 0 (mountpoint='') (callable not found or import error)
> *** no app loaded. going in full dynamic mode ***
> *** uWSGI is running in multiple interpreter mode ***
> spawned uWSGI master process (pid: 1)
> spawned uWSGI worker 1 (pid: 37, cores: 2)
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
>
> As per my investigation, this error possibly caused by Django upgrade:
>
> *The SessionAuthenticationMiddleware class is removed. It provided no
> functionality since session authentication is unconditionally enabled in
> Django 1.10.*
>
> See https://docs.djangoproject.com/en/2.0/releases/2.0/
>
> After I've removed the line
>
> https://github.com/maxking/docker-mailman/blob/master/postorius/mailman-web…
> from settings.py, the container is finally working.
>
> I've placed PR in github:
> https://github.com/maxking/docker-mailman/pull/314
>
>
> Thank you for your contributions!
>
> I have merged your pull request and it should now be out (hopefully!).
>
>
> Thank you for your help.
>
> Danil
>
>
> пт, 1 мар. 2019 г. в 04:33, Abhilash Raj <maxking(a)asynchronous.in>:
>
>
>
> On Thu, Feb 28, 2019, at 5:19 PM, Abhilash Raj wrote:
> > On February 27, 2019 11:53:34 PM PST, Danil Smirnov <danil(a)smirnov.la>
> wrote:
> > >Hi Mark,
> > >
> > >Actually all this stuff happens inside the container after it's started
> > >and
> > >initialized without errors. I didn't amend the image anyhow.
> > >
> > >Also I have the configuration based on docker-compose.yaml provided in
> > >the
> > >repository which works just fine for mailman-web image.
> > >
> > >The very same config with postorius image (+ UWSGI_STATIC_MAP param)
> > >fails
> > >with 500 error...
> > >
> > >Now answering your questions:
> > >
> > >ср, 27 февр. 2019 г., 22:56 Mark Sapiro <mark(a)msapiro.net>:
> > >
> > >> do you have django-q in INSTALLED_APPS in your Django settings and
> > >what
> > >> is set for Q_CLUSTER?
> > >>
> > >
> > >I've checked settings.py inside the container and I haven't found any
> > >of
> > >the mentioned configurations there.
> > >
> > >Does the manage.py that's being run here point to the right
> > >settings.py?
> > >>
> > >
> > >No clue.
> > >
> > >Also I wonder why we have some Hyperkitty-related cronjobs in non-HK
> > >configured image?
> > >
> > >
> https://github.com/maxking/docker-mailman/blob/master/postorius/mailman-web…
> >
> > Because I am a dum dum ;-)
> >
> > Will work on removing those crons and stuff. Would be nice if you
> > opened an issue on Github so that I don't forget.
>
> Should now be fixed in the latest image.
>
> >
> > >Danil
> > >
> > >
> > >
> > >> --
> > >> Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
> > >> San Francisco Bay Area, California better use your sense - B.
> > >Dylan
> > >> _______________________________________________
> > >> Mailman-users mailing list -- mailman-users(a)mailman3.org
> > >> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> > >> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> > >>
> > >_______________________________________________
> > >Mailman-users mailing list -- mailman-users(a)mailman3.org
> > >To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> > >https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> >
> >
> > --
> > Sent from my Android device with K-9 Mail. Please excuse my brevity.
>
> --
> thanks,
> Abhilash Raj (maxking)
>
>
> --
> thanks,
> Abhilash Raj (maxking)
>
>
>
7 years
[MM3-users] Re: No emails distributed after mail received for a new list following https://docs.list.org/en/latest/install/virtualenv.html on new mailman3 Debian 12 installation
by Philip Bondi
Thx very much for the assistance.
I've never used the REST api before. I don't think it's working, yet, for me. So I don't know how to dump my queues.
Here's my first try:
(venv) mailman@shackleton12:~$ mailman info
GNU Mailman 3.3.10 (Tom Sawyer)
Python 3.11.2 (main, Nov 30 2024, 21:22:50) [GCC 12.2.0]
config file: /etc/mailman3/mailman.cfg
db url: postgresql://mailman:PASSWORDSNIPPED@localhost/mailman
devmode: DISABLED
REST root url: http://localhost:8001/3.1/
REST credentials: restadmin:restpass
(venv) mailman@shackleton12:~$ python
Python 3.11.2 (main, Nov 30 2024, 21:22:50) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from mailmanclient import Client
>>> client = Client('http://localhost:8001/3.1', 'restadmin', 'restpass')
>>> dump(client.system)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'dump' is not defined
>>>
I can see messages from members in Posting Activity. But Non-Members do not yet show-up in posting activity. There are 3 non-member posts that I cannot find.
List Members (2)
CSV Export
Remove ALL members
Address Delivery Mode Moderation Action Bounce Score
maha(a)systemdatabase.com Regular List default 0
pjbondi(a)systemdatabase.com Regular List default 0
List Nonmembers (3)
Email Address:
Display Name:
Address Delivery Mode Moderation Action
01000195d3585cf6-feabd0f1-2f9c-4197-86f7-222af724c2f6-000000(a)amazonses.com Regular List default Delete
noreply(a)fromyourdentalprovider.com Regular Accept immediately (bypass other rules) Delete
notifications(a)goldencaredentalservices.com Regular Accept immediately (bypass other rules) Delete
mailman.log
Mar 26 12:21:19 2025 (2942) ACCEPT: <c176607f-8892-4a59-82bc-1f97c72d578a(a)systemdatabase.com>
[26/Mar/2025:12:21:32 -0400] "GET /3.1/lists/ebill(a)systemdatabase.ca HTTP/1.1" 200 368 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:21:32 -0400] "GET /3.1/lists/ebill(a)systemdatabase.ca/config HTTP/1.1" 200 3055 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:21:32 -0400] "GET /3.1/lists/ebill.systemdatabase.ca/roster/owner HTTP/1.1" 200 748 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:21:32 -0400] "GET /3.1/addresses/pjbondi(a)systemdatabase.com HTTP/1.1" 200 395 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:21:32 -0400] "GET /3.1/users/pjbondi(a)systemdatabase.com HTTP/1.1" 200 395 "-" "GNU Mailman REST client v3.3.5"
Mar 26 12:21:34 2025 (2939) HyperKitty archived message <c176607f-8892-4a59-82bc-1f97c72d578a(a)systemdatabase.com> to https://systemdatabase.ca/archives/list/ebill@systemdatabase.ca/message/H5G…
[26/Mar/2025:12:23:43 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146 HTTP/1.1" 200 395 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:23:43 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146/addresses HTTP/1.1" 200 500 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:23:43 -0400] "POST /3.1/members/find HTTP/1.1" 200 1363 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:23:43 -0400] "GET /3.1/addresses/pjbondi(a)systemdatabase.com HTTP/1.1" 200 395 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:23:43 -0400] "GET /3.1/lists/ebill(a)systemdatabase.ca HTTP/1.1" 200 368 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:23:43 -0400] "GET /3.1/lists/ebill.systemdatabase.ca/roster/owner HTTP/1.1" 200 748 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:23:43 -0400] "GET /3.1/addresses/pjbondi(a)systemdatabase.com HTTP/1.1" 200 395 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:23:49 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146 HTTP/1.1" 200 395 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:02 -0400] "GET /3.1/domains HTTP/1.1" 200 342 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:02 -0400] "GET /3.1/domains/systemdatabase.ca HTTP/1.1" 200 237 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:02 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146 HTTP/1.1" 200 395 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:03 -0400] "POST /3.1/lists/find HTTP/1.1" 200 843 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:07 -0400] "GET /3.1/lists/ebill.systemdatabase.ca HTTP/1.1" 200 368 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:08 -0400] "GET /3.1/lists/ebill.systemdatabase.ca/roster/owner?fields=email&fields=address&fields=self_link HTTP/1.1" 200 365 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:08 -0400] "GET /3.1/lists/ebill.systemdatabase.ca/roster/moderator?fields=email&fields=address&fields=self_link HTTP/1.1" 200 90 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:08 -0400] "GET /3.1/lists/ebill(a)systemdatabase.ca/config HTTP/1.1" 200 3055 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:08 -0400] "GET /3.1/lists/ebill.systemdatabase.ca/archivers HTTP/1.1" 200 100 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:08 -0400] "GET /3.1/lists/ebill(a)systemdatabase.ca/requests?request_type=subscription HTTP/1.1" 200 90 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:08 -0400] "GET /3.1/lists/ebill.systemdatabase.ca/member/pjbondi%40systemdatabase.com HTTP/1.1" 200 613 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:08 -0400] "GET /3.1/members/9773dcac5e9744ddbcf42ef0a83a9f1d/preferences HTTP/1.1" 200 271 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:08 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146 HTTP/1.1" 200 395 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:08 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146/preferred_address HTTP/1.1" 404 58 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:08 -0400] "GET /3.1/lists/ebill(a)systemdatabase.ca/requests/count?token_owner=moderator HTTP/1.1" 200 73 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:08 -0400] "GET /3.1/lists/ebill(a)systemdatabase.ca/held/count HTTP/1.1" 200 73 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:18 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146 HTTP/1.1" 200 395 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:18 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146/addresses HTTP/1.1" 200 500 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:18 -0400] "POST /3.1/members/find HTTP/1.1" 200 1363 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:18 -0400] "GET /3.1/lists/ebill.systemdatabase.ca HTTP/1.1" 200 368 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:18 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146 HTTP/1.1" 200 395 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:18 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146/preferred_address HTTP/1.1" 404 58 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:18 -0400] "GET /3.1/members/9773dcac5e9744ddbcf42ef0a83a9f1d/preferences HTTP/1.1" 200 271 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:30 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146 HTTP/1.1" 200 395 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:30 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146/addresses HTTP/1.1" 200 500 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:30 -0400] "POST /3.1/members/find HTTP/1.1" 200 1363 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:30 -0400] "GET /3.1/members/9773dcac5e9744ddbcf42ef0a83a9f1d/preferences HTTP/1.1" 200 271 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:30 -0400] "GET /3.1/addresses/pjbondi(a)systemdatabase.com HTTP/1.1" 200 395 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:49 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146 HTTP/1.1" 200 395 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:49 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146/addresses HTTP/1.1" 200 500 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:49 -0400] "POST /3.1/members/find HTTP/1.1" 200 1363 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:49 -0400] "GET /3.1/lists/ebill.systemdatabase.ca HTTP/1.1" 200 368 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:49 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146 HTTP/1.1" 200 395 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:49 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146/preferred_address HTTP/1.1" 404 58 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:49 -0400] "GET /3.1/members/9773dcac5e9744ddbcf42ef0a83a9f1d/preferences HTTP/1.1" 200 271 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:55 -0400] "GET /3.1/lists/ebill.systemdatabase.ca HTTP/1.1" 200 368 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:55 -0400] "GET /3.1/lists/ebill.systemdatabase.ca/roster/owner?fields=email&fields=address&fields=self_link HTTP/1.1" 200 365 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:55 -0400] "GET /3.1/lists/ebill.systemdatabase.ca/roster/moderator?fields=email&fields=address&fields=self_link HTTP/1.1" 200 90 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:55 -0400] "GET /3.1/lists/ebill(a)systemdatabase.ca/config HTTP/1.1" 200 3055 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:55 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146 HTTP/1.1" 200 395 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:55 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146/preferred_address HTTP/1.1" 404 58 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:55 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146/addresses HTTP/1.1" 200 500 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:55 -0400] "POST /3.1/members/find HTTP/1.1" 200 1363 "-" "GNU Mailman REST client v3.3.5"
11 months, 1 week
[MM3-users] Re: Performance of member listing [was: How to remove a nonmember...]
by skenny@scss.tcd.ie
OK, I've done a clean rebuild of my server with Puppet. (I'll post a copy of my docker-compose file and related config files at the end of this message.)
Via the postorius web interface, I've created a new list called scss-sysadmins(a)scss.tcd.ie, and I've added 1,800 nonmembers to it using this fairly basic piece of code:
---- add_nonmembers.py start ---------------------------------------
#!/usr/bin/python3
from mailmanclient import Client
import sys
listarg = str(sys.argv[1])
client = Client('http://172.19.199.2:8001/3.0', 'restadmin', 'restpass')
this_list = client.get_list(listarg)
this_list_short = this_list.list_name
work_dir = "/usr/local/mailman-scss/list_membership/" + this_list_short + "/"
nonmembers_add_file = work_dir + "nonmembers.add"
infile = open(nonmembers_add_file, "r")
for addr in infile:
if addr.isspace():
continue
addr = addr.strip()
print("Adding " + addr + "as a nonmember ")
this_list.add_role('nonmember', addr, display_name='')
infile.close()
---- add_nonmembers.py end ---------------------------------------
After doing this, a Postgres "select * from member" SQL command executed in the database container prints a total of 1,801 rows (one more than the number of nonmembers added).
In the web interface, I bring up the list of nonmembers, and then click on "delete" to remove an individual nonmember (in all that follows I've replaced the actual username with XXXXXXXX for privacy reasons). This fails after 30 seconds and the following message appears:
Something went wrong
Mailman REST API not available. Please start Mailman core.
Next, in the mailmain-core container, I increase Gunicorn's timeout parameter to 300 seconds (I edited /usr/lib/python3.6/site-packages/mailman/config/gunicorn.cfg and restarted the container), and try the same operation again. Here's what happens: (1) After 2 minutes and 3 seconds approx, the "Confirm remove role" page appears; (2) I click on "Remove XXXXXXXX(a)tcd.ie", and after a *further* 2 minutes and 3 or so seconds later, the operation completes - the nonmember no longer appears on the page.
The URL that appears in the address bar of my browser after clicking on "delete" is http://mailman-web.scss.tcd.ie/postorius/lists/scss-sysadmins.lists.scss.tc…
Here are the entries in the *.log files from the -web and -core containers generated by the latter (timeout = 300) attempt to remove a nonmember:
==> ./core/var/logs/mailman.log <==
[22/Apr/2020:17:17:25 +0000] "GET /3.1/lists/scss-sysadmins.lists.scss.tcd.ie HTTP/1.1" 200 395 "-" "GNU Mailman REST client v3.3.0"
[22/Apr/2020:17:19:20 +0000] "POST /3.1/members/find HTTP/1.1" 200 896038 "-" "GNU Mailman REST client v3.3.0"
==> ./web/logs/uwsgi.log <==
[pid: 21|app: 0|req: 65/198] 109.255.134.153 () {36 vars in 1160 bytes} [Wed Apr 22 17:17:25 2020] GET /postorius/lists/scss-sysadmins.lists.scss.tcd.ie/remove/nonmember/XXXXXXXX(a)tcd.ie => generated 6217 bytes in 115377 msecs (HTTP/1.1 200) 6 headers in 331 bytes (1 switches on core 0)
==> ./core/var/logs/mailman.log <==
[22/Apr/2020:17:19:45 +0000] "GET /3.1/lists/scss-sysadmins.lists.scss.tcd.ie HTTP/1.1" 200 395 "-" "GNU Mailman REST client v3.3.0"
[22/Apr/2020:17:21:48 +0000] "POST /3.1/members/find HTTP/1.1" 200 896038 "-" "GNU Mailman REST client v3.3.0"
[22/Apr/2020:17:21:48 +0000] "DELETE /3.1/lists/scss-sysadmins(a)lists.scss.tcd.ie/nonmember/XXXXXXXX%40tcd.ie HTTP/1.1" 204 0 "-" "GNU Mailman REST client v3.3.0"
==> ./web/logs/uwsgi.log <==
[pid: 21|app: 0|req: 66/199] 109.255.134.153 () {44 vars in 1320 bytes} [Wed Apr 22 17:19:45 2020] POST /postorius/lists/scss-sysadmins.lists.scss.tcd.ie/remove/nonmember/XXXXXXXX(a)tcd.ie => generated 0 bytes in 122966 msecs (HTTP/1.1 302) 7 headers in 450 bytes (1 switches on core 0)
==> ./core/var/logs/mailman.log <==
[22/Apr/2020:17:21:48 +0000] "GET /3.1/lists/scss-sysadmins.lists.scss.tcd.ie HTTP/1.1" 200 395 "-" "GNU Mailman REST client v3.3.0"
[22/Apr/2020:17:21:48 +0000] "GET /3.1/lists/scss-sysadmins.lists.scss.tcd.ie/roster/owner HTTP/1.1" 200 626 "-" "GNU Mailman REST client v3.3.0"
[22/Apr/2020:17:21:48 +0000] "GET /3.1/lists/scss-sysadmins.lists.scss.tcd.ie/roster/moderator HTTP/1.1" 200 90 "-" "GNU Mailman REST client v3.3.0"
[22/Apr/2020:17:21:48 +0000] "GET /3.1/members/find?list_id=scss-sysadmins.lists.scss.tcd.ie&role=nonmember&count=0&page=1 HTTP/1.1" 200 93 "-" "GNU Mailman REST client v3.3.0"
[22/Apr/2020:17:21:50 +0000] "GET /3.1/members/find?list_id=scss-sysadmins.lists.scss.tcd.ie&role=nonmember&count=25&page=1 HTTP/1.1" 200 12506 "-" "GNU Mailman REST client v3.3.0"
[22/Apr/2020:17:21:50 +0000] "GET /3.1/lists/scss-sysadmins(a)lists.scss.tcd.ie/requests HTTP/1.1" 200 90 "-" "GNU Mailman REST client v3.3.0"
[22/Apr/2020:17:21:50 +0000] "GET /3.1/lists/scss-sysadmins(a)lists.scss.tcd.ie/held?count=50&page=1 HTTP/1.1" 200 90 "-" "GNU Mailman REST client v3.3.0"
==> ./web/logs/uwsgi.log <==
[pid: 21|app: 0|req: 67/200] 109.255.134.153 () {38 vars in 1339 bytes} [Wed Apr 22 17:21:48 2020] GET /postorius/lists/scss-sysadmins.lists.scss.tcd.ie/members/nonmember/ => generated 41068 bytes in 2266 msecs (HTTP/1.1 200) 7 headers in 416 bytes (1 switches on core 0)
[pid: 21|app: -1|req: -1/201] 109.255.134.153 () {36 vars in 1031 bytes} [Wed Apr 22 17:21:51 2020] GET /static/postorius/img/mailman_logo_small_trans.png => generated 0 bytes in 0 msecs (HTTP/1.1 304) 0 headers in 29 bytes (0 switches on core 0)
My configuration uses two Docker compose files, one for a Postfix mail server container, and the other for all the mailman stuff. (As you'll see, my browser connection to the mailman-web container is facilitated by exposing port 8000 to port 80 on the Docker host. I'll front everything with an nginx reverse proxy later.) Here is the latter, followed by my mailman-extra.cfg and settings_local.py:
---- mailman-docker-compose.yml start ------------------------------------------------------
version: '2'
services:
mailman-core:
image: maxking/mailman-core:0.3
container_name: mailman-core
hostname: mailman-core
volumes:
- /opt/mailman/core:/opt/mailman/
- /etc/scss-mailman-config/mailman-extra.cfg:/opt/mailman/mailman-extra.cfg
- /usr/local/mailman-scss:/opt/mailman/scss
stop_grace_period: 30s
links:
- database:database
depends_on:
- database
environment:
- DATABASE_URL=postgres://mailman:mailmanpass@database/mailmandb
- DATABASE_TYPE=postgres
- DATABASE_CLASS=mailman.database.postgresql.PostgreSQLDatabase
- HYPERKITTY_API_KEY=someapikey
networks:
mailman:
ipv4_address: 172.19.199.2
restart: always
mailman-web:
image: maxking/mailman-web:0.3
container_name: mailman-web
hostname: mailman-web
ports:
- 80:8000
depends_on:
- database
links:
- mailman-core:mailman-core
- database:database
volumes:
- /opt/mailman/web:/opt/mailman-web-data
- /etc/scss-mailman-config/settings_local.py:/opt/mailman-web/settings_local.py
environment:
- DATABASE_TYPE=postgres
- DATABASE_URL=postgres://mailman:mailmanpass@database/mailmandb
- HYPERKITTY_API_KEY=someapikey
- SECRET_KEY=shhitsasecret
- SMTP_HOST=172.19.199.10
- MAILMAN_ADMIN_USER=skenny
- MAILMAN_ADMIN_EMAIL=skenny(a)scss.tcd.ie
- UWSGI_STATIC_MAP=/static=/opt/mailman-web-data/static
- SERVE_FROM_DOMAIN=mailman-web.scss.tcd.ie
- DEFAULT_FROM_DOMAIN=mailman-web.scss.tcd.ie
networks:
mailman:
ipv4_address: 172.19.199.3
restart: always
database:
environment:
POSTGRES_DB: mailmandb
POSTGRES_USER: mailman
POSTGRES_PASSWORD: mailmanpass
restart: always
image: postgres:9.6-alpine
volumes:
- /opt/mailman/database:/var/lib/postgresql/data
networks:
mailman:
ipv4_address: 172.19.199.4
networks:
mailman:
driver: bridge
ipam:
driver: default
config:
-
subnet: 172.19.199.0/24
---- mailman-docker-compose.yml end ------------------------------------------------------
---- mailman-extra.cfg start ------------------------------------------------------
# mailman-extra.cfg
[mta]
incoming: mailman.mta.postfix.LMTP
outgoing: mailman.mta.deliver.deliver
lmtp_host: 172.19.199.2
lmtp_port: 8024
smtp_host: 172.19.199.10
smtp_port: 25
configuration: /etc/postfix-mailman.cfg
[mailman]
# 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: mrrobot(a)lists2.scss.tcd.ie
[logging.smtp]
level: debug
path: smtp.log
---- mailman-extra.cfg end ------------------------------------------------------
---- settings_local.py start ------------------------------------------------------
# Hosts/domain names that are valid for this site; required if DEBUG is False
# See https://docs.djangoproject.com/en/1.8/ref/settings/#allowed-hosts
ALLOWED_HOSTS = [
"localhost", # Archiving API from Mailman, keep it.
# "lists.your-domain.org",
# Add here all production URLs you may have.
"mailman-web",
"mailman-web.scss.tcd.ie",
"172.19.199.3",
####sk os.environ.get('SERVE_FROM_DOMAIN'),
####sk os.environ.get('DJANGO_ALLOWED_HOSTS'),
]
INSTALLED_APPS = [
'hyperkitty',
'postorius',
'django_mailman3',
# Uncomment the next line to enable the admin:
'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'django_gravatar',
'compressor',
'haystack',
'django_extensions',
'django_q',
'allauth',
'allauth.account',
'allauth.socialaccount',
# --------------------------------------------------------------------------
# We're killing the following ... (tip from brian(a)emwd.com on this page:
# https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/thread/…
# But it doesn't stop people signing up. We need to deal with that via
# Nginx ....
# --------------------------------------------------------------------------
#'django_mailman3.lib.auth.fedora',
#'allauth.socialaccount.providers.openid',
#'allauth.socialaccount.providers.github',
#'allauth.socialaccount.providers.gitlab',
#'allauth.socialaccount.providers.google',
---- settings_local.py end ------------------------------------------------------
Thanks again for helping
Stephen
5 years, 10 months
[MM3-users] Re: Reg Archive Inactive Status
by Nirmal J
If you don't mind can you please take remote access of my server through any desk or any other software and check it please.
-----Original Message-----
From: Nirmal <nirmal(a)iitm.ac.in>
To: Nirmal <nirmal(a)iitm.ac.in>
Cc: Stephen <steve(a)turnbull.jp>; mailman-users <mailman-users(a)mailman3.org>
Date: Friday, 26 September 2025 3:30 PM IST
Subject: Re: [MM3-users] Re: Reg Archive Inactive Status
DNS Report for that list1.iitm.ac.in is 10.24.5.52
-----Original Message-----
From: Nirmal <nirmal(a)iitm.ac.in>
To: Nirmal <nirmal(a)iitm.ac.in>
Cc: Stephen <steve(a)turnbull.jp>; mailman-users <mailman-users(a)mailman3.org>
Date: Friday, 26 September 2025 3:28 PM IST
Subject: Re: [MM3-users] Re: Reg Archive Inactive Status
Yes I have it. I am also sharing that also settings_local.py file
# This file is imported by the Mailman Suite. It is used to override
# the default settings from /usr/share/mailman3-web/settings.py.
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'vWzgIJ1Hvjgy4yXJz7l71vpxX6+pJcBLMdv8mWNNAd0ajVr1'
ADMINS = (
('Mailman Suite Admin', 'nirmal(a)iitm.ac.in'),
)
# Hosts/domain names that are valid for this site; required if DEBUG is False
# See https://docs.djangoproject.com/en/1.8/ref/settings/#allowed-hosts
# Set to '*' per default in the Deian package to allow all hostnames. Mailman3
# is meant to run behind a webserver reverse proxy anyway.
ALLOWED_HOSTS = [
#"localhost", # Archiving API from Mailman, keep it.
# "lists.your-domain.org",
# Add here all production URLs you may have.
'*'
]
# Mailman API credentials
MAILMAN_REST_API_URL = 'http://localhost:8001'
MAILMAN_REST_API_USER = 'restadmin'
MAILMAN_REST_API_PASS = '/EqNGU+Mj8udFpw4ueIkhWXzAy3kJIy17wwzChrXb3P8Vh4e'
MAILMAN_ARCHIVER_KEY = 'n/ZZnR5bRgNdUEyNK4p731C1+gWJLw0/'
MAILMAN_ARCHIVER_FROM = ('127.0.0.1', '::1', '10.24.5.52')
# Application definition
INSTALLED_APPS = (
'hyperkitty',
'postorius',
'django_mailman3',
# Uncomment the next line to enable the admin:
'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'django_gravatar',
'compressor', 'haystack',
'django_extensions',
'django_q',
'allauth',
'allauth.account',
'allauth.socialaccount',
'django_mailman3.lib.auth.fedora',
#'allauth.socialaccount.providers.openid',
#'allauth.socialaccount.providers.github',
#'allauth.socialaccount.providers.gitlab',
#'allauth.socialaccount.providers.google',
#'allauth.socialaccount.providers.facebook',
#'allauth.socialaccount.providers.twitter',
#'allauth.socialaccount.providers.stackexchange',
)
# Database
# https://docs.djangoproject.com/en/1.8/ref/settings/#databases
DATABASES = {
'default': {
# Use 'sqlite3', 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'ENGINE': 'django.db.backends.sqlite3',
#'ENGINE': 'django.db.backends.postgresql_psycopg2',
#'ENGINE': 'django.db.backends.mysql',
# DB name or path to database file if using sqlite3.
'NAME': '/var/lib/mailman3/web/mailman3web.db',
# The following settings are not used with sqlite3:
'USER': '',
'PASSWORD': '',
# HOST: empty for localhost through domain sockets or '127.0.0.1' for
# localhost through TCP.
'HOST': '',
# PORT: set to empty string for default.
'PORT': '',
# OPTIONS: Extra parameters to use when connecting to the database.
'OPTIONS': {
# Set sql_mode to 'STRICT_TRANS_TABLES' for MySQL. See
# https://docs.djangoproject.com/en/1.11/ref/ # databases/#setting-sql-mode
#'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
},
}
}
# If you're behind a proxy, use the X-Forwarded-Host header
# See https://docs.djangoproject.com/en/1.8/ref/settings/#use-x-forwarded-host
USE_X_FORWARDED_HOST = True
# And if your proxy does your SSL encoding for you, set SECURE_PROXY_SSL_HEADER
# https://docs.djangoproject.com/en/1.8/ref/settings/#secure-proxy-ssl-header
# SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
# SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_SCHEME', 'https')
# Other security settings
# SECURE_SSL_REDIRECT = True
# If you set SECURE_SSL_REDIRECT to True, make sure the SECURE_REDIRECT_EXEMPT
# contains at least this line:
# SECURE_REDIRECT_EXEMPT = [
# "archives/api/mailman/.*", # Request from Mailman.
# ]
# SESSION_COOKIE_SECURE = True
# SECURE_CONTENT_TYPE_NOSNIFF = True
# SECURE_BROWSER_XSS_FILTER = True
# CSRF_COOKIE_SECURE = True
# CSRF_COOKIE_HTTPONLY = True
# X_FRAME_OPTIONS = 'DENY'
# Internationalization
# https://docs.djangoproject.com/en/1.8/topics/i18n/ LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
# Set default domain for email addresses.
EMAILNAME = 'list1.iitm.ac.in'
# If you enable internal authentication, this is the address that the emails
# will appear to be coming from. Make sure you set a valid domain name,
# otherwise the emails may get rejected.
# https://docs.djangoproject.com/en/1.8/ref/settings/#default-from-email
# DEFAULT_FROM_EMAIL = "mailing-lists(a)you-domain.org"
DEFAULT_FROM_EMAIL = 'postorius@{}'.format(EMAILNAME)
# If you enable email reporting for error messages, this is where those emails
# will appear to be coming from. Make sure you set a valid domain name,
# otherwise the emails may get rejected.
# https://docs.djangoproject.com/en/1.8/ref/settings/#std:setting-SERVER_EMAIL
# SERVER_EMAIL = 'root(a)your-domain.org'
SERVER_EMAIL = 'root@{}'.format(EMAILNAME)
# Django Allauth
ACCOUNT_DEFAULT_HTTP_PROTOCOL = "https"
#
# Social auth
#
SOCIALACCOUNT_PROVIDERS = {
#'openid': {
# 'SERVERS': [
# dict(id='yahoo',
# name='Yahoo',
# openid_url='http://me.yahoo.com'),
# ],
#},
#'google': {
# 'SCOPE': ['profile', 'email'],
# 'AUTH_PARAMS': {'access_type': 'online'},
#}, #'facebook': {
# 'METHOD': 'oauth2',
# 'SCOPE': ['email'],
# 'FIELDS': [
# 'email',
# 'name',
# 'first_name',
# 'last_name',
# 'locale',
# 'timezone',
# ],
# 'VERSION': 'v2.4',
#},
}
# On a production setup, setting COMPRESS_OFFLINE to True will bring a
# significant performance improvement, as CSS files will not need to be
# recompiled on each requests. It means running an additional "compress"
# management command after each code upgrade.
# http://django-compressor.readthedocs.io/en/latest/usage/#offline-compression
COMPRESS_OFFLINE = True
POSTORIUS_TEMPLATE_BASE_URL = 'http://localhost/mailman3/'
SITE_ID = 2
import ldap
from django_auth_ldap.config import LDAPSearch # LDAP server URI
AUTH_LDAP_SERVER_URI = "ldap://127.0.0.1"
# Bind DN & password (service account from IITM LDAP admin)
AUTH_LDAP_BIND_DN = "cn=ldapreader,ou=Services,dc=iitm,dc=ac,dc=in"
AUTH_LDAP_BIND_PASSWORD = "642126"
# Where to search for users
AUTH_LDAP_USER_SEARCH = LDAPSearch(
"ou=People,dc=iitm,dc=ac,dc=in",
ldap.SCOPE_SUBTREE,
"(uid=%(user)s)"
)
# Map LDAP attributes to Django user fields
AUTH_LDAP_USER_ATTR_MAP = {
"first_name": "cn",
"last_name": "sn",
# "email": "mail" # optional if not present
}
# Authentication backends (LDAP first, fallback to Django DB)
AUTHENTICATION_BACKENDS = [
"django_auth_ldap.backend.LDAPBackend",
"django.contrib.auth.backends.ModelBackend",
]
import logging
logger = logging.getLogger('django_auth_ldap')
logger.setLevel(logging.DEBUG)
logger.addHandler(logging.StreamHandler())
-----Original Message-----
From: Nirmal <nirmal(a)iitm.ac.in>
To: Stephen <steve(a)turnbull.jp>
Cc: mailman-users <mailman-users(a)mailman3.org>
Date: Friday, 26 September 2025 3:27 PM IST
Subject: Re: [MM3-users] Re: Reg Archive Inactive Status
Yes I have it. I am also sharing that also settings_local.py
-----Original Message-----
From: Stephen <steve(a)turnbull.jp>
To: Nirmal <nirmal(a)iitm.ac.in>
Cc: mailman-users <mailman-users(a)mailman3.org>
Date: Friday, 26 September 2025 3:09 PM IST
Subject: [MM3-users] Re: Reg Archive Inactive Status
Nirmal J via Mailman-users writes:
> Hereby I am sharing the full settings.py file.
Are you sure this is the settings.py being used by your installation?
It appears to be the distribution file, unchanged.
> MAILMAN_ARCHIVER_FROM = ('127.0.0.1', '::1')# Application definition
If this is from the installed settings.py, it isn't going to work,
since you specified a routable domain (I think, although
"list1.iitm.ac.in" is not in the public DNS), which will have a
routable address, not localhost.
What IP does your DNS report for "list1.iitm.ac.in"?
> HOSTNAME = 'localhost.local'
That isn't what you told Mailman via hyperkitty.cfg. I'm not sure it
matters, but I think you should make sure all the config files agree
on the name of the host.
> # If you enable email reporting for error messages, this is where those emails
> # will appear to be coming from. Make sure you set a valid domain name,
> # otherwise the emails may get rejected.
> # https://docs.djangoproject.com/en/1.8/ref/settings/#std:setting-SERVER_EMAIL
> # SERVER_EMAIL = 'root(a)your-domain.org'
> SERVER_EMAIL = 'root@{}'.format(HOSTNAME)
This can be problematic, at least if you enable error messages by email.
> try:
> from settings_local import *
> except ImportError:
> pass
Do you have a "settings_local.py" file?
--
GNU Mailman consultant (installation, migration, customization)
Sirius Open Source https://www.siriusopensource.com/
Software systems consulting in Europe, North America, and Japan
5 months, 1 week
[MM3-users] Re: Mailman3 without Hyperkitty in docker
by Abhilash Raj
Test email to check something, please ignore.
Abhilash
On Fri, Mar 1, 2019, at 5:19 PM, Abhilash Raj wrote:
>
>
> On Thu, Feb 28, 2019, at 10:18 PM, Danil Smirnov wrote:
>> Hi Abhilash,
>>
>> Thank you very much - the previous error is fixed now.
>>
>> But I have another one now, which causes the same 500 Server Error:
>>
>> bash-4.3# cat /opt/mailman-web-data/logs/uwsgi-error.log
>> *** Starting uWSGI 2.0.18 (64bit) on [Fri Mar 1 05:42:09 2019] ***
>> compiled with version: 6.3.0 on 01 March 2019 01:52:42
>> os: Linux-3.10.0-693.11.1.el7.x86_64 #1 SMP Mon Dec 4 23:52:40 UTC 2017
>> nodename: mailman-web
>> machine: x86_64
>> clock source: unix
>> detected number of CPU cores: 2
>> current working directory: /opt/mailman-web
>> detected binary path: /usr/local/bin/uwsgi
>> !!! no internal routing support, rebuild with pcre support !!!
>> setgid() to 101
>> setuid() to 100
>> chdir() to /opt/mailman-web
>> your memory page size is 4096 bytes
>> detected max file descriptor number: 1048576
>> building mime-types dictionary from file /etc/mime.types...1168 entry found
>> lock engine: pthread robust mutexes
>> thunder lock: disabled (you can enable it with --thunder-lock)
>> uwsgi socket 0 bound to TCP address 0.0.0.0:8080 fd 8
>> uwsgi socket 1 bound to TCP address 0.0.0.0:8000 fd 9
>> Python version: 3.6.8 (default, Jan 30 2019, 23:58:16) [GCC 6.3.0]
>> Python main interpreter initialized at 0x55a2df7f57e0
>> python threads support enabled
>> your server socket listen backlog is limited to 100 connections
>> your mercy for graceful operations on workers is 60 seconds
>> mapped 166752 bytes (162 KB) for 2 cores
>> *** Operational MODE: threaded ***
>> Traceback (most recent call last):
>> File "/usr/local/lib/python3.6/site-packages/django/utils/module_loading.py", line 20, in import_string
>> return getattr(module, class_name)
>> AttributeError: module 'django.contrib.auth.middleware' has no attribute 'SessionAuthenticationMiddleware'
>>
>> The above exception was the direct cause of the following exception:
>>
>> Traceback (most recent call last):
>> File "wsgi.py", line 38, in <module>
>> application = get_wsgi_application()
>> File "/usr/local/lib/python3.6/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application
>> return WSGIHandler()
>> File "/usr/local/lib/python3.6/site-packages/django/core/handlers/wsgi.py", line 136, in __init__
>> self.load_middleware()
>> File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line 34, in load_middleware
>> middleware = import_string(middleware_path)
>> File "/usr/local/lib/python3.6/site-packages/django/utils/module_loading.py", line 24, in import_string
>> ) from err
>> ImportError: Module "django.contrib.auth.middleware" does not define a "SessionAuthenticationMiddleware" attribute/class
>> unable to load app 0 (mountpoint='') (callable not found or import error)
>> *** no app loaded. going in full dynamic mode ***
>> *** uWSGI is running in multiple interpreter mode ***
>> spawned uWSGI master process (pid: 1)
>> spawned uWSGI worker 1 (pid: 37, cores: 2)
>> --- no python application found, check your startup logs for errors ---
>> --- no python application found, check your startup logs for errors ---
>> --- no python application found, check your startup logs for errors ---
>> --- no python application found, check your startup logs for errors ---
>> --- no python application found, check your startup logs for errors ---
>> --- no python application found, check your startup logs for errors ---
>> --- no python application found, check your startup logs for errors ---
>> --- no python application found, check your startup logs for errors ---
>> --- no python application found, check your startup logs for errors ---
>> --- no python application found, check your startup logs for errors ---
>> --- no python application found, check your startup logs for errors ---
>> --- no python application found, check your startup logs for errors ---
>>
>> As per my investigation, this error possibly caused by Django upgrade:
>>
>> *The SessionAuthenticationMiddleware class is removed. It provided no functionality since session authentication is unconditionally enabled in Django 1.10.*
>>
>> See https://docs.djangoproject.com/en/2.0/releases/2.0/
>>
>> After I've removed the line
>> https://github.com/maxking/docker-mailman/blob/master/postorius/mailman-web…
>> from settings.py, the container is finally working.
>>
>> I've placed PR in github:
>> https://github.com/maxking/docker-mailman/pull/314
>
> Thank you for your contributions!
>
> I have merged your pull request and it should now be out (hopefully!).
>
>>
>> Thank you for your help.
>>
>> Danil
>>
>>
>> пт, 1 мар. 2019 г. в 04:33, Abhilash Raj <maxking(a)asynchronous.in>:
>>>
>>>
>>> On Thu, Feb 28, 2019, at 5:19 PM, Abhilash Raj wrote:
>>> > On February 27, 2019 11:53:34 PM PST, Danil Smirnov <danil(a)smirnov.la> wrote:
>>> > >Hi Mark,
>>> > >
>>> > >Actually all this stuff happens inside the container after it's started
>>> > >and
>>> > >initialized without errors. I didn't amend the image anyhow.
>>> > >
>>> > >Also I have the configuration based on docker-compose.yaml provided in
>>> > >the
>>> > >repository which works just fine for mailman-web image.
>>> > >
>>> > >The very same config with postorius image (+ UWSGI_STATIC_MAP param)
>>> > >fails
>>> > >with 500 error...
>>> > >
>>> > >Now answering your questions:
>>> > >
>>> > >ср, 27 февр. 2019 г., 22:56 Mark Sapiro <mark(a)msapiro.net>:
>>> > >
>>> > >> do you have django-q in INSTALLED_APPS in your Django settings and
>>> > >what
>>> > >> is set for Q_CLUSTER?
>>> > >>
>>> > >
>>> > >I've checked settings.py inside the container and I haven't found any
>>> > >of
>>> > >the mentioned configurations there.
>>> > >
>>> > >Does the manage.py that's being run here point to the right
>>> > >settings.py?
>>> > >>
>>> > >
>>> > >No clue.
>>> > >
>>> > >Also I wonder why we have some Hyperkitty-related cronjobs in non-HK
>>> > >configured image?
>>> > >
>>> > >https://github.com/maxking/docker-mailman/blob/master/postorius/mailman-web…
>>> >
>>> > Because I am a dum dum ;-)
>>> >
>>> > Will work on removing those crons and stuff. Would be nice if you
>>> > opened an issue on Github so that I don't forget.
>>>
>>> Should now be fixed in the latest image.
>>>
>>> >
>>> > >Danil
>>> > >
>>> > >
>>> > >
>>> > >> --
>>> > >> Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
>>> > >> San Francisco Bay Area, California better use your sense - B.
>>> > >Dylan
>>> > >> _______________________________________________
>>> > >> Mailman-users mailing list -- mailman-users(a)mailman3.org
>>> > >> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
>>> > >> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>>> > >>
>>> > >_______________________________________________
>>> > >Mailman-users mailing list -- mailman-users(a)mailman3.org
>>> > >To unsubscribe send an email to mailman-users-leave(a)mailman3.org
>>> > >https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>>> >
>>> >
>>> > --
>>> > Sent from my Android device with K-9 Mail. Please excuse my brevity.
>>>
>>> --
>>> thanks,
>>> Abhilash Raj (maxking)
>
> --
> thanks,
> Abhilash Raj (maxking)
>
>
--
thanks,
Abhilash Raj (maxking)
7 years
[MM3-users] Re: Mailman, etc. upgrade woes and persistent bugs
by Stephen J. Turnbull
No answer required, I think I understand the situation pretty well
now. But if I'm missing something, I would very much appreciate
criticism.
Andreas Barth writes:
> Well, currently these are exclusive-states, I'd rather see them as
> or-able-states.
Right, I understand that. I don't understand *why*.
There are real costs to making them or-able. There are constraints:
'enabled' shouldn't (mustn't?) be or-able with any 'disabled-by-foo'
state. Such invariants are finicky to code and tricky to maintain,
compared to a simple "mutually exclusive".
I guess you want to allow the or of any subset of disabled states, but
presumably then they need to individually resettable in order for the
admin to clear their disable without overriding a subscriber's
preference or a bounce record. That set of controls is more complex,
and requires additional mental effort on the part of anyone using
them. If there are restrictions on which states can be or-ed, that's
more coding and maintenance cost.
Then there's the question whether the subscriber can override the admin's
setting. If they can, why does the admin have this power in the first
place?
> > > - "disabled by member" (could be set by an admin as well of course)
> >
> > Currently this is determined by whether the logged in user is the
> > subscriber or not. It's an interesting idea to allow it to be set by
> > an admin. Then we could have the semantics that the only transition
> > allowed from this state would be to enabled, so that admins would know
> > the user had intentionally disabled and know not to enable without
> > permission.
>
> Exactly.
But if the admin should respect the DBS (disabled by subscriber)
setting, DBS|DBA (disabled by admin) is logically equivalent to DBS.
Are there use cases where the admin does not want to repect the
subscriber's choice, and enables it anyway? What are they?
> Or while importing from another server, and there are people who
> have receiving mails disabled, this is the state that could be used
> for it.
Why wouldn't they get the exact state from the original server? Or do
you mean from a non-Mailman server?
> I expect that state to be the most-often used when setting a state
> manually.
>
> For "who set that", I would consider having some kind of history as
> useful (and displaying "last set by user / $person" to the admin but
> not the user).
Why not to the subscriber? As I explain below, the subscriber at
least needs to be able to distinguish between DBA and DBB (disabled by
bounce).
Keeping history of who is additional complexity, consumes a minor
amount of resources, and is insufficient to the purpose. Assuming
that there are reasons for admins to disable/enable other than as a
courtesy to a subscriber, that reason is presumably important. Not only
will the subscriber not know, but one admin may forget, and there may be
multiple admins.[1]
I still don't see any reason for an admin to disable delivery other
than as a courtesy to the subscriber or to the bounce processor.
> > > - "disabled for administrative reasons" (only by admin but user
> > > should be able to see it)
> >
> > I don't see why a user would need to see the difference. Unless
> > you're suggesting that the user would not be able to reenable without
> > asking the admin? What is the use case for this?
>
> I'm suggesting exactly that, yes. Why? Well, worked with user for too
> long. ;)
>
> E.g. consider that seeing archives works only for subscribers. And the
> subscriber in question complains about too many mails but still
> re-enables getting mails. This is basically "an admin has blocked you
> from more mails but not unsubscribed you". Might be an corner case,
> but still. Might also be too unimportant.
This is possible. If it occurs less than once in a million years,
it's "too unimportant" to even think about.[2] Have you actually done
this, or know anybody who has?
Is it really different from "at request of subscriber"? Practically,
the only difference I can see is if such a subscriber should be
prevented from overriding DBA. Are you suggesting that?
> > > - "bounced" (user and admin could reset it but not set it)
> >
> > Reenable but not set "bounced" is the current situation.
>
> Except if someone sets the state to "disabled" and then undo this, the
> state is automatically cleared.
This is possible, but it's not clear what harm would be done. In most
cases, bounces are intermittent and clear themselves up, in which case
this is the right thing. But if the subscriber bounces again, they'll
get disabled again, only cost is a slight waste of resources.
Here's how I would assess the issues. In the descriptions below, I am
assuming that each state is the only "active" state.
1. DBS is probably a "vacation" or "post-only" setting. For that
reason it should be re-enabled only by the subscriber (or by an
admin at the request of the subscriber).
2. DBB is a "warning" and a minor convenience to the email system
(slightly reducing traffic to mailboxes that are expected to fail,
and perhaps avoiding some reputational damage to the list).
Re-enabling much of the time causes no damage, as bounce disables
are typically due to things like out of disk space, and are likely
fixed by the time the subscription is reenabled. Most of the rest
will be zombie mailboxes, which will rarely be reenabled, will
quickly be redisabled by bounce, and at worst cause mild
inconvenience. Finally, events like a Mailman upgrade and the
April 2014 DMARC fiasco will be pretty evident, and the damage
there has already been done, reenabling actually fixes it
(although it may not be effective if the systemic problem hasn't
been resolved).
3. DBA is interesting mostly to *subscribers*, who need to
distinguish DBA (which the subscriber can reenable freely) from
DBB (which warns the subscriber to get in touch with their
postmaster). It's comforting to subscribers who may be sure they
never disabled their subscription; otherwise, it's semantically
identical to DBS as far as I can see.
Am I missing something?
It seems to me that given 1-3, assuming a 4-state design:
0. It's never unreasonable to re-enable, except DBS.
1. In the DBA state, changing to either DBS or DBB causes no
problems. (Changing to DBB is unlikely, since no mail is being
sent. However, it's possible, due to the race between Postorius
and mail in transit, and due to spam and other spoofing of the
list domain.)
2. In either of the other two states, we should never change to DBA.
3. In either of the other two states, if the other event occurs, you
would want the state to be DBS|DBB. I contend that if we
substitute DBS, little harm is done. If the subscriber reenables, it's
on them to fix the bounce problem if it reoccurs in any case.
Since the subscriber has deliberately set DBS, the admin should not
reenable without permission of the subscriber (I think we're mostly in
agreement on that).
I think this 4-state design is much easier to design, validate, and
maintain than the 16-state design you propose. If you're really
worried about DBS|DBB, then we could have a 5-state design where
enabling from DBS|DBB generates a warning that there may still be a
bounce problem on the subscription. Instead, it could leave the
subscription in state DBB, but that seems to me to be obnoxious, since
there's little likelihood of harm from reenabling, and in many cases
the bounce problem will have resolved itself in the meantime.
Regards,
Steve
Footnotes:
[1] There's also the question of GDPR obligations if personal reasons
(such as "violated code of conduct") are in the history.
[2] I'm not sure where we'd actually draw the line, probably on the
order of "once a year per thousand subscribers", that being every week
for say a campus-wide list at Ohio State University with 55,000 students.
5 years
[MM3-users] Re: Installing mailman 3
by Rafael Mora
Hello,
Here it's mailman info:
[root@localhost bin]# ./mailman info
GNU Mailman 3.2.0a1 (La Villa Strangiato)
Python 3.6.0 (default, Jul 7 2017, 11:59:56)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)]
config file: /etc/mailman.cfg
db url: sqlite:////var/lib/mailman/data/mailman.db
devmode: DISABLED
REST root url: http://localhost:8001/3.1/
REST credentials: restadmin:restpass
Here it's mailman conf:
[root@localhost bin]# ./mailman conf
[antispam] header_checks:
[antispam] jump_chain: hold
[archiver.mail_archive] class: mailman.archiving.mailarchive.MailArchive
[archiver.mail_archive] clobber_date: maybe
[archiver.mail_archive] clobber_skew: 1d
[archiver.mail_archive] configuration: python:mailman.config.mail_archive
[archiver.mail_archive] enable: no
[archiver.master] class:
[archiver.master] clobber_date: maybe
[archiver.master] clobber_skew: 1d
[archiver.master] configuration: changeme
[archiver.master] enable: no
[archiver.mhonarc] class: mailman.archiving.mhonarc.MHonArc
[archiver.mhonarc] clobber_date: maybe
[archiver.mhonarc] clobber_skew: 1d
[archiver.mhonarc] configuration: python:mailman.config.mhonarc
[archiver.mhonarc] enable: no
[archiver.prototype] class: mailman.archiving.prototype.Prototype
[archiver.prototype] clobber_date: maybe
[archiver.prototype] clobber_skew: 1d
[archiver.prototype] configuration: changeme
[archiver.prototype] enable: no
[bounces] register_bounces_every: 15m
[database] class: mailman.database.sqlite.SQLiteDatabase
[database] debug: no
[database] url: sqlite:///$DATA_DIR/mailman.db
[devmode] enabled: no
[devmode] recipient:
[devmode] testing: no
[devmode] wait: 60s
[digests] mime_digest_keep_headers:
Date From To Cc Subject Message-ID Keywords
In-Reply-To References Content-Type MIME-Version
Content-Transfer-Encoding Precedence Reply-To
Message List-Post
[digests] plain_digest_keep_headers:
Message Date From
Subject To Cc
Message-ID Keywords
Content-Type
[dmarc] cache_lifetime: 7d
[dmarc] org_domain_data_url:
https://publicsuffix.org/list/public_suffix_list.dat
[dmarc] resolver_lifetime: 5s
[dmarc] resolver_timeout: 3s
[language.ar] charset: utf-8
[language.ar] description: Arabic
[language.ar] enabled: yes
[language.ast] charset: iso-8859-1
[language.ast] description: Asturian
[language.ast] enabled: yes
[language.ca] charset: utf-8
[language.ca] description: Catalan
[language.ca] enabled: yes
[language.cs] charset: iso-8859-2
[language.cs] description: Czech
[language.cs] enabled: yes
[language.da] charset: iso-8859-1
[language.da] description: Danish
[language.da] enabled: yes
[language.de] charset: iso-8859-1
[language.de] description: German
[language.de] enabled: yes
[language.el] charset: iso-8859-7
[language.el] description: Greek
[language.el] enabled: yes
[language.es] charset: iso-8859-1
[language.es] description: Spanish
[language.es] enabled: yes
[language.et] charset: iso-8859-15
[language.et] description: Estonian
[language.et] enabled: yes
[language.eu] charset: iso-8859-15
[language.eu] description: Euskara
[language.eu] enabled: yes
[language.fi] charset: iso-8859-1
[language.fi] description: Finnish
[language.fi] enabled: yes
[language.fr] charset: iso-8859-1
[language.fr] description: French
[language.fr] enabled: yes
[language.gl] charset: utf-8
[language.gl] description: Galician
[language.gl] enabled: yes
[language.he] charset: utf-8
[language.he] description: Hebrew
[language.he] enabled: yes
[language.hr] charset: iso-8859-2
[language.hr] description: Croatian
[language.hr] enabled: yes
[language.hu] charset: iso-8859-2
[language.hu] description: Hungarian
[language.hu] enabled: yes
[language.ia] charset: iso-8859-15
[language.ia] description: Interlingua
[language.ia] enabled: yes
[language.it] charset: iso-8859-1
[language.it] description: Italian
[language.it] enabled: yes
[language.ja] charset: euc-jp
[language.ja] description: Japanese
[language.ja] enabled: yes
[language.ko] charset: euc-kr
[language.ko] description: Korean
[language.ko] enabled: yes
[language.lt] charset: iso-8859-13
[language.lt] description: Lithuanian
[language.lt] enabled: yes
[language.nl] charset: iso-8859-1
[language.nl] description: Dutch
[language.nl] enabled: yes
[language.no] charset: iso-8859-1
[language.no] description: Norwegian
[language.no] enabled: yes
[language.pl] charset: iso-8859-2
[language.pl] description: Polish
[language.pl] enabled: yes
[language.pt] charset: iso-8859-1
[language.pt] description: Protuguese
[language.pt] enabled: yes
[language.pt_BR] charset: iso-8859-1
[language.pt_BR] description: Protuguese (Brazil)
[language.pt_BR] enabled: yes
[language.ro] charset: iso-8859-2
[language.ro] description: Romanian
[language.ro] enabled: yes
[language.ru] charset: koi8-r
[language.ru] description: Russian
[language.ru] enabled: yes
[language.sk] charset: utf-8
[language.sk] description: Slovak
[language.sk] enabled: yes
[language.sl] charset: iso-8859-2
[language.sl] description: Slovenian
[language.sl] enabled: yes
[language.sr] charset: utf-8
[language.sr] description: Serbian
[language.sr] enabled: yes
[language.sv] charset: iso-8859-1
[language.sv] description: Swedish
[language.sv] enabled: yes
[language.tr] charset: iso-8859-9
[language.tr] description: Turkish
[language.tr] enabled: yes
[language.uk] charset: utf-8
[language.uk] description: Ukrainian
[language.uk] enabled: yes
[language.vi] charset: utf-8
[language.vi] description: Vietnamese
[language.vi] enabled: yes
[language.zh_CN] charset: utf-8
[language.zh_CN] description: Chinese
[language.zh_CN] enabled: yes
[language.zh_TW] charset: utf-8
[language.zh_TW] description: Chinese (Taiwan)
[language.zh_TW] enabled: yes
[logging.archiver] datefmt: %b %d %H:%M:%S %Y
[logging.archiver] format: %(asctime)s (%(process)d) %(message)s
[logging.archiver] level: info
[logging.archiver] path: mailman.log
[logging.archiver] propagate: no
[logging.bounce] datefmt: %b %d %H:%M:%S %Y
[logging.bounce] format: %(asctime)s (%(process)d) %(message)s
[logging.bounce] level: info
[logging.bounce] path: bounce.log
[logging.bounce] propagate: no
[logging.config] datefmt: %b %d %H:%M:%S %Y
[logging.config] format: %(asctime)s (%(process)d) %(message)s
[logging.config] level: info
[logging.config] path: mailman.log
[logging.config] propagate: no
[logging.database] datefmt: %b %d %H:%M:%S %Y
[logging.database] format: %(asctime)s (%(process)d) %(message)s
[logging.database] level: warn
[logging.database] path: mailman.log
[logging.database] propagate: no
[logging.debug] datefmt: %b %d %H:%M:%S %Y
[logging.debug] format: %(asctime)s (%(process)d) %(message)s
[logging.debug] level: info
[logging.debug] path: debug.log
[logging.debug] propagate: no
[logging.error] datefmt: %b %d %H:%M:%S %Y
[logging.error] format: %(asctime)s (%(process)d) %(message)s
[logging.error] level: info
[logging.error] path: mailman.log
[logging.error] propagate: no
[logging.fromusenet] datefmt: %b %d %H:%M:%S %Y
[logging.fromusenet] format: %(asctime)s (%(process)d) %(message)s
[logging.fromusenet] level: info
[logging.fromusenet] path: mailman.log
[logging.fromusenet] propagate: no
[logging.http] datefmt: %b %d %H:%M:%S %Y
[logging.http] format: %(asctime)s (%(process)d) %(message)s
[logging.http] level: info
[logging.http] path: mailman.log
[logging.http] propagate: no
[logging.locks] datefmt: %b %d %H:%M:%S %Y
[logging.locks] format: %(asctime)s (%(process)d) %(message)s
[logging.locks] level: info
[logging.locks] path: mailman.log
[logging.locks] propagate: no
[logging.mischief] datefmt: %b %d %H:%M:%S %Y
[logging.mischief] format: %(asctime)s (%(process)d) %(message)s
[logging.mischief] level: info
[logging.mischief] path: mailman.log
[logging.mischief] propagate: no
[logging.root] datefmt: %b %d %H:%M:%S %Y
[logging.root] format: %(asctime)s (%(process)d) %(message)s
[logging.root] level: info
[logging.root] path: mailman.log
[logging.root] propagate: no
[logging.runner] datefmt: %b %d %H:%M:%S %Y
[logging.runner] format: %(asctime)s (%(process)d) %(message)s
[logging.runner] level: info
[logging.runner] path: mailman.log
[logging.runner] propagate: no
[logging.smtp] datefmt: %b %d %H:%M:%S %Y
[logging.smtp] every: $msgid smtp to $listname for $recip recips, completed
in $time seconds
[logging.smtp] failure: $msgid delivery to $recip failed with code
$smtpcode, $smtpmsg
[logging.smtp] format: %(asctime)s (%(process)d) %(message)s
[logging.smtp] level: info
[logging.smtp] path: smtp.log
[logging.smtp] propagate: no
[logging.smtp] refused: $msgid post to $listname from $sender, $size bytes,
$refused failures
[logging.smtp] success: $msgid post to $listname from $sender, $size bytes
[logging.subscribe] datefmt: %b %d %H:%M:%S %Y
[logging.subscribe] format: %(asctime)s (%(process)d) %(message)s
[logging.subscribe] level: info
[logging.subscribe] path: mailman.log
[logging.subscribe] propagate: no
[logging.vette] datefmt: %b %d %H:%M:%S %Y
[logging.vette] format: %(asctime)s (%(process)d) %(message)s
[logging.vette] level: info
[logging.vette] path: mailman.log
[logging.vette] propagate: no
[mailman] cache_life: 7d
[mailman] default_language: en
[mailman] email_commands_max_lines: 10
[mailman] filtered_messages_are_preservable: no
[mailman] html_to_plain_text_command: /usr/bin/lynx -dump $filename
[mailman] layout: fhs
[mailman] listname_chars: [-_.0-9a-z]
[mailman] noreply_address: noreply
[mailman] pending_request_life: 3d
[mailman] post_hook:
[mailman] pre_hook:
[mailman] sender_headers: from from_ reply-to sender
[mailman] site_owner: changeme(a)example.com
[mta] configuration: python:mailman.config.postfix
[mta] delivery_retry_period: 5d
[mta] incoming: mailman.mta.postfix.LMTP
[mta] lmtp_host: 127.0.0.1 # IP where Mailman should listen for
emails from MTA
[mta] lmtp_port: 8024
[mta] max_autoresponses_per_day: 10
[mta] max_delivery_threads: 0
[mta] max_recipients: 500
[mta] max_sessions_per_connection: 0
[mta] outgoing: mailman.mta.deliver.deliver
[mta] remove_dkim_headers: no
[mta] smtp_host: 127.0.0.1 # IP Where MTA is listening for emails
[mta] smtp_pass:
[mta] smtp_port: 25
[mta] smtp_user:
[mta] verp_confirm_format: $address+$cookie
[mta] verp_confirm_regexp: ^(.*<)?(?P<addr>[^+]+?)\+(?P<cookie>[^@]+)@.*$
[mta] verp_confirmations: no
[mta] verp_delimiter: +
[mta] verp_delivery_interval: 0
[mta] verp_format: ${bounces}+${local}=${domain}
[mta] verp_personalized_deliveries: no
[mta] verp_probe_format: $bounces+$token@$domain
[mta] verp_probe_regexp: ^(?P<bounces>[^+]+?)\+(?P<token>[^@]+)@.*$
[mta] verp_probes: no
[mta] verp_regexp:
^(?P<bounces>[^+]+?)\+(?P<local>[^=]+)=(?P<domain>[^@]+)@.*$
[nntp] host:
[nntp] password:
[nntp] port:
[nntp] remove_headers:
nntp-posting-host nntp-posting-date x-trace
x-complaints-to xref date-received posted
posting-version relay-version received
[nntp] rewrite_duplicate_headers:
To X-Original-To
CC X-Original-CC
Content-Transfer-Encoding X-Original-Content-Transfer-Encoding
MIME-Version X-MIME-Version
[nntp] user:
[passwords] configuration: python:mailman.config.passlib
[passwords] password_length: 8
[shell] banner: Welcome to the GNU Mailman shell
[shell] history_file:
[shell] prompt: >>>
[shell] use_ipython: no
[styles] default: legacy-default
[styles] paths:
mailman.styles
[webservice] admin_pass: restpass
[webservice] admin_user: restadmin
[webservice] api_version: 3.1
[webservice] hostname: localhost
[webservice] port: 8001
[webservice] show_tracebacks: yes
[webservice] use_https: no
What do you suggest? Thank you
El mar., 11 jul. 2017 a las 14:31, Simon Hanna (<simon.hanna(a)serve-me.info>)
escribió:
> Below is how I would recommend to run Mailman for production using a
> virtualenv
>
> # useradd -r -m -d /var/lib/mailman mailman
>
> # su - mailman
>
>
> $ python3 -m venv env
> $ source env/bin/activate
> $ pip install mailman
> $ mailman info
>
> Now you should have a working configuration in /var/lib/mailman/var/
>
> to run mailman you don't need to activate the virtualenv, just use the
> executable /var/lib/mailman/env/bin/mailman
>
> cheers,
> Simon
> _______________________________________________
> Mailman-users mailing list
> mailman-users(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>
--
Atentamente / Best Regards
Ing. Rafael Mora
8 years, 7 months
[MM3-users] Re: Hyperkitty CPU usage
by Alain Kohli
I'm running a custom image which is based on an older version of the one
here: https://github.com/maxking/docker-mailman. I attached it below.
But I separated postorius and hyperkitty, so hyperkitty is running in
its own container. I'm deploying the image with a plain 'docker run'
behind nginx. I made fulltext_index persistent now, but it didn't get
populated with anything yet. I don't really have an error traceback
because there is never an error thrown. The only thing with some content
is uwsgi-error.log, which you can find below. I'm also still getting the
"A string literal cannot contain NUL (0x00) characters." messages. I
also noticed that it takes incredibly long for the webinterface to load
(several minutes) even though there doesn't seem to be any process
consuming notable resources apart from the minutely job.
Funnily enough, I have the exact same image deployed on a second server
as well for testing. On that one everything works fine. The only
difference is that on the problematic one I have a lot more mailing
lists/archives and that I imported them from mailman2. Could something
have gone wrong during the import? I used the regular hyperkitty_import
command.
uwsgi-error.log:
*** Starting uWSGI 2.0.18 (64bit) on [Sat Apr 27 22:50:17 2019] ***
compiled with version: 6.4.0 on 27 April 2019 22:48:42
os: Linux-4.9.0-8-amd64 #1 SMP Debian 4.9.144-3.1 (2019-02-19)
nodename: hyperkitty.docker
machine: x86_64
clock source: unix
detected number of CPU cores: 4
current working directory: /home/hyperkitty
detected binary path: /usr/local/bin/uwsgi
!!! no internal routing support, rebuild with pcre support !!!
setgid() to 82
setuid() to 82
chdir() to /home/hyperkitty
your memory page size is 4096 bytes
detected max file descriptor number: 1048576
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
uwsgi socket 0 bound to TCP address 0.0.0.0:8081 fd 8
uwsgi socket 1 bound to TCP address 0.0.0.0:8080 fd 9
Python version: 3.6.8 (default, Jan 30 2019, 23:54:38) [GCC 6.4.0]
Python main interpreter initialized at 0x55dfaa41c980
python threads support enabled
your server socket listen backlog is limited to 100 connections
your mercy for graceful operations on workers is 60 seconds
[uwsgi-cron] command "./manage.py runjobs minutely" registered as
cron task
[uwsgi-cron] command "./manage.py runjobs quarter_hourly" registered
as cron task
[uwsgi-cron] command "./manage.py runjobs hourly" registered as cron
task
[uwsgi-cron] command "./manage.py runjobs daily" registered as cron task
[uwsgi-cron] command "./manage.py runjobs monthly" registered as
cron task
[uwsgi-cron] command "./manage.py runjobs weekly" registered as cron
task
[uwsgi-cron] command "./manage.py runjobs yearly" registered as cron
task
mapped 208576 bytes (203 KB) for 4 cores
*** Operational MODE: threaded ***
WSGI app 0 (mountpoint='') ready in 1 seconds on interpreter
0x55dfaa41c980 pid: 1 (default app)
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 1)
spawned uWSGI worker 1 (pid: 40, cores: 4)
Sat Apr 27 22:50:18 2019 - [uwsgi-cron] running "./manage.py runjobs
minutely" (pid 45)
[uwsgi-daemons] spawning "./manage.py qcluster" (uid: 82 gid: 82)
22:50:21 [Q] INFO Q Cluster-47 starting.
22:50:21 [Q] INFO Process-1:1 ready for work at 59
22:50:21 [Q] INFO Process-1:2 ready for work at 60
22:50:21 [Q] INFO Process-1:3 ready for work at 61
22:50:21 [Q] INFO Process-1:4 ready for work at 62
22:50:21 [Q] INFO Process-1:5 monitoring at 63
22:50:21 [Q] INFO Process-1 guarding cluster at 58
22:50:21 [Q] INFO Process-1:6 pushing tasks at 64
22:50:21 [Q] INFO Q Cluster-47 running.
22:59:31 [Q] INFO Enqueued 3403
22:59:31 [Q] INFO Process-1:1 processing [update_from_mailman]
22:59:33 [Q] INFO Processed [update_from_mailman]
Sat Apr 27 23:00:00 2019 - [uwsgi-cron] running "./manage.py runjobs
quarter_hourly" (pid 73)
Sat Apr 27 23:00:00 2019 - [uwsgi-cron] running "./manage.py runjobs
hourly" (pid 74)
[uwsgi-cron] command "./manage.py runjobs quarter_hourly" running
with pid 73 exited after 64 second(s)
23:01:28 [Q] INFO Enqueued 3404
23:01:29 [Q] INFO Process-1:2 processing
[rebuild_mailinglist_cache_recent]
[uwsgi-cron] command "./manage.py runjobs hourly" running with pid
74 exited after 91 second(s)
Sat Apr 27 23:01:36 2019 - uwsgi_response_write_body_do(): Broken
pipe [core/writer.c line 341] during GET / (212.203.58.154)
OSError: write error
23:01:36 [Q] INFO Processed [rebuild_mailinglist_cache_recent]
Sat Apr 27 23:15:00 2019 - [uwsgi-cron] running "./manage.py runjobs
quarter_hourly" (pid 88)
[uwsgi-cron] command "./manage.py runjobs quarter_hourly" running
with pid 88 exited after 4 second(s)
23:28:24 [Q] INFO Enqueued 3405
23:28:24 [Q] INFO Process-1:3 processing [update_from_mailman]
23:28:25 [Q] INFO Processed [update_from_mailman]
Sat Apr 27 23:30:00 2019 - [uwsgi-cron] running "./manage.py runjobs
quarter_hourly" (pid 96)
[uwsgi-cron] command "./manage.py runjobs quarter_hourly" running
with pid 96 exited after 4 second(s)
23:44:40 [Q] INFO Enqueued 3406
23:44:40 [Q] INFO Process-1:4 processing [update_from_mailman]
23:44:41 [Q] INFO Processed [update_from_mailman]
Sat Apr 27 23:45:00 2019 - [uwsgi-cron] running "./manage.py runjobs
quarter_hourly" (pid 104)
[uwsgi-cron] command "./manage.py runjobs quarter_hourly" running
with pid 104 exited after 4 second(s)
Sun Apr 28 00:00:00 2019 - [uwsgi-cron] running "./manage.py runjobs
quarter_hourly" (pid 113)
Sun Apr 28 00:00:00 2019 - [uwsgi-cron] running "./manage.py runjobs
hourly" (pid 114)
Sun Apr 28 00:00:00 2019 - [uwsgi-cron] running "./manage.py runjobs
daily" (pid 115)
Sun Apr 28 00:00:00 2019 - [uwsgi-cron] running "./manage.py runjobs
weekly" (pid 116)
[uwsgi-cron] command "./manage.py runjobs quarter_hourly" running
with pid 113 exited after 55 second(s)
[uwsgi-cron] command "./manage.py runjobs weekly" running with pid
116 exited after 55 second(s)
00:01:36 [Q] INFO Enqueued 3407
00:01:36 [Q] INFO Process-1:1 processing
[rebuild_mailinglist_cache_recent]
[uwsgi-cron] command "./manage.py runjobs hourly" running with pid
114 exited after 99 second(s)
00:01:50 [Q] INFO Processed [rebuild_mailinglist_cache_recent]
00:04:52 [Q] INFO Enqueued 3408
00:04:52 [Q] INFO Process-1:2 processing [update_from_mailman]
00:04:54 [Q] INFO Processed [update_from_mailman]
Dockerfile:
FROM python:3.6-alpine3.7 # Add startup script to container COPY
assets/docker-entrypoint.sh /usr/local/bin/ # Install packages and
dependencies for hyperkitty and add user for executing apps. # It's
important that the user has the UID/GID 82 so nginx can access the
files. RUN set -ex \&& apk add --no-cache --virtual .build-deps gcc
libc-dev linux-headers git \postgresql-dev \&& apk add --no-cache
--virtual .mailman-rundeps bash sassc mailcap \postgresql-client
curl \&& pip install -U django==2.2 \&& pip install
git+https://gitlab.com/eestec/mailmanclient
\git+https://gitlab.com/mailman/hyperkitty@c9fa4d4bfc295438d3e01cd93090064d004cf44d
\git+https://gitlab.com/eestec/django-mailman3 \whoosh \uwsgi
\psycopg2 \dj-database-url \typing \&& apk del .build-deps \&&
addgroup -S -g 82 hyperkitty \&& adduser -S -u 82 -G hyperkitty
hyperkitty \&& chmod u+x /usr/local/bin/docker-entrypoint.sh# Add
needed files for uwsgi server + settings for django COPY
assets/__init__.py /home/hyperkittyCOPY assets/manage.py
/home/hyperkittyCOPY assets/urls.py /home/hyperkittyCOPY
assets/wsgi.py /home/hyperkittyCOPY assets/uwsgi.ini
/home/hyperkittyCOPY assets/settings.py /home/hyperkitty# Change
ownership for uwsgi+django files and set execution rights for
management script RUN chown -R hyperkitty /home/hyperkitty && chmod
u+x /home/hyperkitty/manage.py# Make sure we are in the correct
working dir WORKDIR /home/hyperkittyEXPOSE 8080 8081# Use stop
signal for uwsgi server STOPSIGNAL SIGINTENTRYPOINT
["docker-entrypoint.sh"]CMD ["uwsgi", "--ini",
"/home/hyperkitty/uwsgi.ini"]
On 4/27/19 7:58 PM, Abhilash Raj wrote:
> On Sat, Apr 27, 2019, at 9:40 AM, Alain Kohli wrote:
>> I have run "python manage.py rebuild_index" before, doesn't that do
>> clear_index as well? Apart from that, I run hyperkitty in a docker
>> container and didn't know fulltext_index should be persistent, so that
>> got deleted after every version update for sure.
> Which images are you using and how are you deploying them?
>
> You should persist fulltext_index, yes, and possibly logs if you need
> them for debugging later.
>
> Can you paste the entire error traceback?
>
>>
>> On 4/26/19 10:18 PM, Mark Sapiro wrote:
>>> On 4/26/19 11:14 AM, Alain Kohli wrote:
>>>> I see loads of "A string literal cannot contain NUL (0x00) characters."
>>>> messages, but I haven't found missing messages in the archives yet. Not
>>>> sure how that could be related, though. Apart from that I don't see
>>>> anything unusual. The other jobs (quarter_hourly, hourly, etc.) seem to
>>>> run and finish normally.
>>> Did you upgrade from a Python 2.7 version of HyperKitty to a Python 3
>>> version? The Haystack/Whoosh search engine databases are not compatible
>>> between the two and "A string literal cannot contain NUL (0x00)
>>> characters." is the symptom.
>>>
>>> You need to run 'python manage.py clear_index' or just remove all the
>>> files from the directory defined as 'PATH' under HAYSTACK_CONNECTIONS in
>>> your settings file (normally 'fulltext_index' in the same directory that
>>> contains your settings.py.
>>>
>> _______________________________________________
>> Mailman-users mailing list -- mailman-users(a)mailman3.org
>> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
>> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>>
6 years, 10 months
[MM3-users] E-mail every minute: "Cron <www-data@sharky5> ..."
by Robert Heller
What am I missing? I *think* I have mailman3 *mostly* setup, but there are
still some configuration things that are missing, but I am not sure how to fix
them (the docs are NOT clear). I am getting an e-mail *every* minute that
looks like:
From www-data(a)deepsoft.com Sat Jul 6 17:38:03 2024
Return-Path: <www-data(a)deepsoft.com>
X-Spam-Checker-Version: SpamAssassin 4.0.0 (2022-12-13) on sharky5.deepsoft.com
X-Spam-Level:
X-Spam-Status: No, score=-850.0 required=5.0 tests�YES_00,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NO_RELAYS,URIBL_BLOCKED,
USER_IN_WELCOMELIST autolearn=ham autolearn_force=no version=4.0.0
X-Original-To: www-data
Delivered-To: www-data(a)deepsoft.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d�epsoft.com;
s�epsoft.com; t20301883;
bh=qGrVTBfV1NiqgxCIzSaXwoKZ0lKxKvaK56k31yXU2Sk=;
h=From:To:Subject:Date:From;
b=jTml1ZF+qGkmS2tcz5kgZHjOyPxeaWIQiX1mzAF3ZfZWb0ziVLxutkcej5mGapUOq
PpH6ExYM1TEipMTYQ/JRY/74vz2dEpebDrZqjyY3KakxLWiyFFEb5glmQYZGvz9wr2
e5ljD0Shku4fbRoaxO7XMQCn/fmx3+D8tI/ZPbMQReceived: by sharky5.deepsoft.com (Postfix, from userid 33)
id 5257D4C1296; Sat, 6 Jul 2024 17:38:03 -0400 (EDT)
From: root(a)deepsoft.com (Cron Daemon)
To: www-data(a)deepsoft.com
Subject: Cron <www-data@sharky5> [ -f /usr/bin/django-admin ] && flock -n /var/run/mailman3-web/cron.minutely /usr/share/mailman3-web/manage.py runjobs minutely
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/var/www>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=www-data>
Message-Id: <20240706213803.5257D4C1296(a)sharky5.deepsoft.com>
Date: Sat, 6 Jul 2024 17:38:03 -0400 (EDT)
X-Scanned-By: MIMEDefang 3.3 on 108.161.129.198
Status: R
/usr/lib/python3/dist-packages/django_q/conf.py:139: UserWarning: Retry and timeout are misconfigured. Set retry larger than timeout,
failure to do so will cause the tasks to be retriggered before completion.
See https://django-q.readthedocs.io/en/latest/configure.html#retry for details.
warn(
System check identified some issues:
WARNINGS:
django_mailman3.MailDomain: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the DjangoMailman3Config.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
django_mailman3.Profile: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the DjangoMailman3Config.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Attachment: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Email: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Favorite: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.LastView: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.MailingList: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Profile: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Tag: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Tagging: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Thread: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.ThreadCategory: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Vote: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
postorius.EmailTemplate: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the PostoriusConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
And I get this output from sudo mailman-web check --no-color :
System check identified some issues:
WARNINGS:
django_mailman3.MailDomain: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the DjangoMailman3Config.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
django_mailman3.Profile: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the DjangoMailman3Config.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Attachment: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Email: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Favorite: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.LastView: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.MailingList: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Profile: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Tag: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Tagging: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Thread: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.ThreadCategory: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Vote: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
postorius.EmailTemplate: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the PostoriusConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
System check identified 14 issues (0 silenced).
Again, the docs are not helpful (at least not to me).
--
Robert Heller -- Cell: 413-658-7953 GV: 978-633-5364
Deepwoods Software -- Custom Software Services
http://www.deepsoft.com/ -- Linux Administration Services
heller(a)deepsoft.com -- Webhosting Services
1 year, 7 months
[MM3-users] Re: "Something went wrong | Mailman REST API not available. Please restart Mailman core.
by Hirayama, Pat
Ah, thanks for the reply, Mark. Forgot to include Traceback:
Traceback (most recent call last):
File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 670, in urlopen
httplib_response = self._make_request(
File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 426, in _make_request
six.raise_from(e, None)
File "<string>", line 3, in raise_from
File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 421, in _make_request
httplib_response = conn.getresponse()
File "/usr/local/lib/python3.8/http/client.py", line 1347, in getresponse
response.begin()
File "/usr/local/lib/python3.8/http/client.py", line 307, in begin
version, status, reason = self._read_status()
File "/usr/local/lib/python3.8/http/client.py", line 276, in _read_status
raise RemoteDisconnected("Remote end closed connection without"
http.client.RemoteDisconnected: Remote end closed connection without response
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.8/site-packages/requests/adapters.py", line 439, in send
resp = conn.urlopen(
File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 726, in urlopen
retries = retries.increment(
File "/usr/local/lib/python3.8/site-packages/urllib3/util/retry.py", line 403, in increment
raise six.reraise(type(error), error, _stacktrace)
File "/usr/local/lib/python3.8/site-packages/urllib3/packages/six.py", line 734, in reraise
raise value.with_traceback(tb)
File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 670, in urlopen
httplib_response = self._make_request(
File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 426, in _make_request
six.raise_from(e, None)
File "<string>", line 3, in raise_from
File "/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py", line 421, in _make_request
httplib_response = conn.getresponse()
File "/usr/local/lib/python3.8/http/client.py", line 1347, in getresponse
response.begin()
File "/usr/local/lib/python3.8/http/client.py", line 307, in begin
version, status, reason = self._read_status()
File "/usr/local/lib/python3.8/http/client.py", line 276, in _read_status
raise RemoteDisconnected("Remote end closed connection without"
urllib3.exceptions.ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.8/site-packages/mailmanclient/restbase/connection.py", line 91, in call
response = request(
File "/usr/local/lib/python3.8/site-packages/requests/api.py", line 61, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/local/lib/python3.8/site-packages/requests/sessions.py", line 530, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python3.8/site-packages/requests/sessions.py", line 643, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python3.8/site-packages/requests/adapters.py", line 498, in send
raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.8/site-packages/django/core/handlers/base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python3.8/site-packages/django/views/generic/base.py", line 71, in view
return self.dispatch(request, *args, **kwargs)
File "/usr/local/lib/python3.8/site-packages/postorius/views/generic.py", line 74, in dispatch
return super(MailingListView, self).dispatch(request, *args, **kwargs)
File "/usr/local/lib/python3.8/site-packages/django/views/generic/base.py", line 97, in dispatch
return handler(request, *args, **kwargs)
File "/usr/local/lib/python3.8/site-packages/postorius/views/list.py", line 288, in get
return render(request, 'postorius/lists/summary.html', data)
File "/usr/local/lib/python3.8/site-packages/django/shortcuts.py", line 19, in render
content = loader.render_to_string(template_name, context, request, using=using)
File "/usr/local/lib/python3.8/site-packages/django/template/loader.py", line 62, in render_to_string
return template.render(context, request)
File "/usr/local/lib/python3.8/site-packages/django/template/backends/django.py", line 61, in render
return self.template.render(context)
File "/usr/local/lib/python3.8/site-packages/django/template/base.py", line 171, in render
return self._render(context)
File "/usr/local/lib/python3.8/site-packages/django/template/base.py", line 163, in _render
return self.nodelist.render(context)
File "/usr/local/lib/python3.8/site-packages/django/template/base.py", line 936, in render
bit = node.render_annotated(context)
File "/usr/local/lib/python3.8/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/usr/local/lib/python3.8/site-packages/django/template/loader_tags.py", line 150, in render
return compiled_parent._render(context)
File "/usr/local/lib/python3.8/site-packages/django/template/base.py", line 163, in _render
return self.nodelist.render(context)
File "/usr/local/lib/python3.8/site-packages/django/template/base.py", line 936, in render
bit = node.render_annotated(context)
File "/usr/local/lib/python3.8/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/usr/local/lib/python3.8/site-packages/django/template/loader_tags.py", line 62, in render
result = block.nodelist.render(context)
File "/usr/local/lib/python3.8/site-packages/django/template/base.py", line 936, in render
bit = node.render_annotated(context)
File "/usr/local/lib/python3.8/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/usr/local/lib/python3.8/site-packages/django/template/library.py", line 234, in render
return t.render(new_context)
File "/usr/local/lib/python3.8/site-packages/django/template/base.py", line 173, in render
return self._render(context)
File "/usr/local/lib/python3.8/site-packages/django/template/base.py", line 163, in _render
return self.nodelist.render(context)
File "/usr/local/lib/python3.8/site-packages/django/template/base.py", line 936, in render
bit = node.render_annotated(context)
File "/usr/local/lib/python3.8/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/usr/local/lib/python3.8/site-packages/django/template/defaulttags.py", line 309, in render
return nodelist.render(context)
File "/usr/local/lib/python3.8/site-packages/django/template/base.py", line 936, in render
bit = node.render_annotated(context)
File "/usr/local/lib/python3.8/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/usr/local/lib/python3.8/site-packages/django/template/defaulttags.py", line 309, in render
return nodelist.render(context)
File "/usr/local/lib/python3.8/site-packages/django/template/base.py", line 936, in render
bit = node.render_annotated(context)
File "/usr/local/lib/python3.8/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/usr/local/lib/python3.8/site-packages/django/template/base.py", line 986, in render
output = self.filter_expression.resolve(context)
File "/usr/local/lib/python3.8/site-packages/django/template/base.py", line 697, in resolve
new_obj = func(obj, *arg_vals)
File "/usr/local/lib/python3.8/site-packages/postorius/templatetags/nav_helpers.py", line 74, in held_count
return mlist.get_held_page().total_size
File "/usr/local/lib/python3.8/site-packages/mailmanclient/restobjects/mailinglist.py", line 132, in get_held_page
return Page(self._connection, url, HeldMessage, count, page)
File "/usr/local/lib/python3.8/site-packages/mailmanclient/restbase/page.py", line 37, in __init__
self._create_page()
File "/usr/local/lib/python3.8/site-packages/mailmanclient/restbase/page.py", line 62, in _create_page
response, content = self._connection.call(self._build_url())
File "/usr/local/lib/python3.8/site-packages/mailmanclient/restbase/connection.py", line 119, in call
raise MailmanConnectionError(
mailmanclient.restbase.connection.MailmanConnectionError: ('Could not connect to Mailman API: ', "ConnectionError(ProtocolError('Connection aborted.', RemoteDisconnected('Remote end closed connection without response')))")
web logs:
10.9.253.147 - - [29/Oct/2025:18:54:41 +0000] "GET /hyperkitty/list/obfuscated.name(a)lists.fhcrc.org/ HTTP/1.1" 404 6305 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36" "-"
10.9.253.147 - - [29/Oct/2025:21:03:52 +0000] "GET /postorius/lists/obfuscated.name.lists.fhcrc.org/ HTTP/1.1" 503 6310 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36" "-"
10.9.253.147 - - [29/Oct/2025:21:06:37 +0000] "GET /postorius/lists/obfuscated.name.lists.fhcrc.org/ HTTP/1.1" 503 6310 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36" "-"
10.9.253.147 - - [29/Oct/2025:21:24:25 +0000] "GET /postorius/lists/obfuscated.name.lists.fhcrc.org/ HTTP/1.1" 503 6310 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36" "-"
10.9.253.147 - - [29/Oct/2025:22:11:56 +0000] "GET /postorius/lists/obfuscated.name.pattest.lists.fhcrc.org/ HTTP/1.1" 404 6305 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36" "-"
10.9.253.147 - - [29/Oct/2025:22:12:03 +0000] "GET /postorius/lists/obfuscated.name.lists.fhcrc.org/ HTTP/1.1" 503 6310 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36" "-"
Thanks,
-p
Pat Hirayama
Pronouns: he/him/his
Systems Engineer
IT | Systems Engineering
Fred Hutchinson Cancer Center
O 206.667.4856
phirayam(a)fredhutch.org
________________________________
From: Mark Sapiro <mark(a)msapiro.net>
Sent: Wednesday, October 29, 2025 15:12
To: mailman-users(a)mailman3.org <mailman-users(a)mailman3.org>
Subject: [MM3-users] Re: "Something went wrong | Mailman REST API not available. Please restart Mailman core.
CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.
On 10/29/25 14:31, Hirayama, Pat wrote:
>
> The weird thing is that it is not all lists. Most of them seem to be fine. Which suggests to me that the issue is with a few lists, but not systemwide, so I think my settings in mailman.cfg, settings.py, settings_local.py are likely correct.
So Postorius can connect to Mailman core's API on behalf of some, but
not all lists. This is very strange.
> For the problem lists, I see this in the log:
>
> ERROR 2025-10-29 18:38:56,784 7 postorius Mailman REST API not available
> ERROR 2025-10-29 18:38:56,790 7 django.request Service Unavailable: /postorius/lists/obfuscated.name.lists.fhcrc.org/
> ERROR 2025-10-29 18:38:56,790 7 django.request Service Unavailable: /postorius/lists/obfuscated.name.lists.fhcrc.org/
>
> So, Postorius can't communicate with the API, I guess?
These are the normal messages when the REST API is not available.
But it apparently is available for at least some API endpoints.
What is the traceback from the
ERROR 2025-10-29 18:38:56,784 7 postorius Mailman REST API not available
error and what is in the web server logs?
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
_______________________________________________
Mailman-users mailing list -- mailman-users(a)mailman3.org
To unsubscribe send an email to mailman-users-leave(a)mailman3.org
https://urldefense.com/v3/__https://lists.mailman3.org/mailman3/lists/mailm…<https://urldefense.com/v3/__https:/lists.mailman3.org/mailman3/lists/mailma…>
Archived at: https://urldefense.com/v3/__https://lists.mailman3.org/archives/list/mailma…<https://urldefense.com/v3/__https:/lists.mailman3.org/archives/list/mailman…>
This message sent to phirayam(a)fredhutch.org
4 months
[MM3-users] Re: Mailman3 without Hyperkitty in docker
by Abhilash Raj
On Sat, Mar 2, 2019, at 1:09 AM, Danil Smirnov wrote:
> Thank you very much Abhilash!
>
> Could you set up 'latest' tag in postotius repo <https://hub.docker.com/r/maxking/postorius/tags> please - as it exists for core/web?
> I'd like to have consistent approach across the images...
Done, triggered a build on Dockerhub.
docker.io/maxking/postorius:latest
This should be available when the build is done.
>
> Also it would be really great to extend image labelling used for *quay.io/maxking/mailman-*:rolling* images to Docker Hub ones... Version identification is quite hard for Docker...
rolling tags should be available on DockerHub too. They are replicated on both registries.
>
> With my best regards,
> Danil
>
> сб, 2 мар. 2019 г. в 03:19, Abhilash Raj <maxking(a)asynchronous.in>:
>> __
>>
>>
>> On Thu, Feb 28, 2019, at 10:18 PM, Danil Smirnov wrote:
>>> Hi Abhilash,
>>>
>>> Thank you very much - the previous error is fixed now.
>>>
>>> But I have another one now, which causes the same 500 Server Error:
>>>
>>> bash-4.3# cat /opt/mailman-web-data/logs/uwsgi-error.log
>>> *** Starting uWSGI 2.0.18 (64bit) on [Fri Mar 1 05:42:09 2019] ***
>>> compiled with version: 6.3.0 on 01 March 2019 01:52:42
>>> os: Linux-3.10.0-693.11.1.el7.x86_64 #1 SMP Mon Dec 4 23:52:40 UTC 2017
>>> nodename: mailman-web
>>> machine: x86_64
>>> clock source: unix
>>> detected number of CPU cores: 2
>>> current working directory: /opt/mailman-web
>>> detected binary path: /usr/local/bin/uwsgi
>>> !!! no internal routing support, rebuild with pcre support !!!
>>> setgid() to 101
>>> setuid() to 100
>>> chdir() to /opt/mailman-web
>>> your memory page size is 4096 bytes
>>> detected max file descriptor number: 1048576
>>> building mime-types dictionary from file /etc/mime.types...1168 entry found
>>> lock engine: pthread robust mutexes
>>> thunder lock: disabled (you can enable it with --thunder-lock)
>>> uwsgi socket 0 bound to TCP address 0.0.0.0:8080 fd 8
>>> uwsgi socket 1 bound to TCP address 0.0.0.0:8000 fd 9
>>> Python version: 3.6.8 (default, Jan 30 2019, 23:58:16) [GCC 6.3.0]
>>> Python main interpreter initialized at 0x55a2df7f57e0
>>> python threads support enabled
>>> your server socket listen backlog is limited to 100 connections
>>> your mercy for graceful operations on workers is 60 seconds
>>> mapped 166752 bytes (162 KB) for 2 cores
>>> *** Operational MODE: threaded ***
>>> Traceback (most recent call last):
>>> File "/usr/local/lib/python3.6/site-packages/django/utils/module_loading.py", line 20, in import_string
>>> return getattr(module, class_name)
>>> AttributeError: module 'django.contrib.auth.middleware' has no attribute 'SessionAuthenticationMiddleware'
>>>
>>> The above exception was the direct cause of the following exception:
>>>
>>> Traceback (most recent call last):
>>> File "wsgi.py", line 38, in <module>
>>> application = get_wsgi_application()
>>> File "/usr/local/lib/python3.6/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application
>>> return WSGIHandler()
>>> File "/usr/local/lib/python3.6/site-packages/django/core/handlers/wsgi.py", line 136, in __init__
>>> self.load_middleware()
>>> File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line 34, in load_middleware
>>> middleware = import_string(middleware_path)
>>> File "/usr/local/lib/python3.6/site-packages/django/utils/module_loading.py", line 24, in import_string
>>> ) from err
>>> ImportError: Module "django.contrib.auth.middleware" does not define a "SessionAuthenticationMiddleware" attribute/class
>>> unable to load app 0 (mountpoint='') (callable not found or import error)
>>> *** no app loaded. going in full dynamic mode ***
>>> *** uWSGI is running in multiple interpreter mode ***
>>> spawned uWSGI master process (pid: 1)
>>> spawned uWSGI worker 1 (pid: 37, cores: 2)
>>> --- no python application found, check your startup logs for errors ---
>>> --- no python application found, check your startup logs for errors ---
>>> --- no python application found, check your startup logs for errors ---
>>> --- no python application found, check your startup logs for errors ---
>>> --- no python application found, check your startup logs for errors ---
>>> --- no python application found, check your startup logs for errors ---
>>> --- no python application found, check your startup logs for errors ---
>>> --- no python application found, check your startup logs for errors ---
>>> --- no python application found, check your startup logs for errors ---
>>> --- no python application found, check your startup logs for errors ---
>>> --- no python application found, check your startup logs for errors ---
>>> --- no python application found, check your startup logs for errors ---
>>>
>>> As per my investigation, this error possibly caused by Django upgrade:
>>>
>>> *The SessionAuthenticationMiddleware class is removed. It provided no functionality since session authentication is unconditionally enabled in Django 1.10.*
>>>
>>> See https://docs.djangoproject.com/en/2.0/releases/2.0/
>>>
>>> After I've removed the line
>>> https://github.com/maxking/docker-mailman/blob/master/postorius/mailman-web…
>>> from settings.py, the container is finally working.
>>>
>>> I've placed PR in github:
>>> https://github.com/maxking/docker-mailman/pull/314
>>
>> Thank you for your contributions!
>>
>> I have merged your pull request and it should now be out (hopefully!).
>>
>>>
>>> Thank you for your help.
>>>
>>> Danil
>>>
>>>
>>> пт, 1 мар. 2019 г. в 04:33, Abhilash Raj <maxking(a)asynchronous.in>:
>>>>
>>>>
>>>> On Thu, Feb 28, 2019, at 5:19 PM, Abhilash Raj wrote:
>>>> > On February 27, 2019 11:53:34 PM PST, Danil Smirnov <danil(a)smirnov.la> wrote:
>>>> > >Hi Mark,
>>>> > >
>>>> > >Actually all this stuff happens inside the container after it's started
>>>> > >and
>>>> > >initialized without errors. I didn't amend the image anyhow.
>>>> > >
>>>> > >Also I have the configuration based on docker-compose.yaml provided in
>>>> > >the
>>>> > >repository which works just fine for mailman-web image.
>>>> > >
>>>> > >The very same config with postorius image (+ UWSGI_STATIC_MAP param)
>>>> > >fails
>>>> > >with 500 error...
>>>> > >
>>>> > >Now answering your questions:
>>>> > >
>>>> > >ср, 27 февр. 2019 г., 22:56 Mark Sapiro <mark(a)msapiro.net>:
>>>> > >
>>>> > >> do you have django-q in INSTALLED_APPS in your Django settings and
>>>> > >what
>>>> > >> is set for Q_CLUSTER?
>>>> > >>
>>>> > >
>>>> > >I've checked settings.py inside the container and I haven't found any
>>>> > >of
>>>> > >the mentioned configurations there.
>>>> > >
>>>> > >Does the manage.py that's being run here point to the right
>>>> > >settings.py?
>>>> > >>
>>>> > >
>>>> > >No clue.
>>>> > >
>>>> > >Also I wonder why we have some Hyperkitty-related cronjobs in non-HK
>>>> > >configured image?
>>>> > >
>>>> > >https://github.com/maxking/docker-mailman/blob/master/postorius/mailman-web…
>>>> >
>>>> > Because I am a dum dum ;-)
>>>> >
>>>> > Will work on removing those crons and stuff. Would be nice if you
>>>> > opened an issue on Github so that I don't forget.
>>>>
>>>> Should now be fixed in the latest image.
>>>>
>>>> >
>>>> > >Danil
>>>> > >
>>>> > >
>>>> > >
>>>> > >> --
>>>> > >> Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
>>>> > >> San Francisco Bay Area, California better use your sense - B.
>>>> > >Dylan
>>>> > >> _______________________________________________
>>>> > >> Mailman-users mailing list -- mailman-users(a)mailman3.org
>>>> > >> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
>>>> > >> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>>>> > >>
>>>> > >_______________________________________________
>>>> > >Mailman-users mailing list -- mailman-users(a)mailman3.org
>>>> > >To unsubscribe send an email to mailman-users-leave(a)mailman3.org
>>>> > >https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>>>> >
>>>> >
>>>> > --
>>>> > Sent from my Android device with K-9 Mail. Please excuse my brevity.
>>>>
>>>> --
>>>> thanks,
>>>> Abhilash Raj (maxking)
>>
>> --
>> thanks,
>> Abhilash Raj (maxking)
>>
>>
--
thanks,
Abhilash Raj (maxking)
7 years
[MM3-users] Re: Mailman, etc. upgrade woes and persistent bugs
by Abhilash Raj
I am trying to distill some information from this discussion to be
used for the implementation in Postorius. I'll maybe reiterate a bit
of what Steve was saying just to confirm I am on the same page.
On Tue, Feb 16, 2021, at 7:23 AM, Stephen J. Turnbull wrote:
> No answer required, I think I understand the situation pretty well
> now. But if I'm missing something, I would very much appreciate
> criticism.
>
> Andreas Barth writes:
>
> > Well, currently these are exclusive-states, I'd rather see them as
> > or-able-states.
>
> Right, I understand that. I don't understand *why*.
>
> There are real costs to making them or-able. There are constraints:
> 'enabled' shouldn't (mustn't?) be or-able with any 'disabled-by-foo'
> state. Such invariants are finicky to code and tricky to maintain,
> compared to a simple "mutually exclusive".
>
> I guess you want to allow the or of any subset of disabled states, but
> presumably then they need to individually resettable in order for the
> admin to clear their disable without overriding a subscriber's
> preference or a bounce record. That set of controls is more complex,
> and requires additional mental effort on the part of anyone using
> them. If there are restrictions on which states can be or-ed, that's
> more coding and maintenance cost.
>
> Then there's the question whether the subscriber can override the admin's
> setting. If they can, why does the admin have this power in the first
> place?
>
> > > > - "disabled by member" (could be set by an admin as well of course)
> > >
> > > Currently this is determined by whether the logged in user is the
> > > subscriber or not. It's an interesting idea to allow it to be set by
> > > an admin. Then we could have the semantics that the only transition
> > > allowed from this state would be to enabled, so that admins would know
> > > the user had intentionally disabled and know not to enable without
> > > permission.
> >
> > Exactly.
>
> But if the admin should respect the DBS (disabled by subscriber)
> setting, DBS|DBA (disabled by admin) is logically equivalent to DBS.
> Are there use cases where the admin does not want to repect the
> subscriber's choice, and enables it anyway? What are they?
>
> > Or while importing from another server, and there are people who
> > have receiving mails disabled, this is the state that could be used
> > for it.
>
> Why wouldn't they get the exact state from the original server? Or do
> you mean from a non-Mailman server?
>
> > I expect that state to be the most-often used when setting a state
> > manually.
> >
> > For "who set that", I would consider having some kind of history as
> > useful (and displaying "last set by user / $person" to the admin but
> > not the user).
>
> Why not to the subscriber? As I explain below, the subscriber at
> least needs to be able to distinguish between DBA and DBB (disabled by
> bounce).
>
> Keeping history of who is additional complexity, consumes a minor
> amount of resources, and is insufficient to the purpose. Assuming
> that there are reasons for admins to disable/enable other than as a
> courtesy to a subscriber, that reason is presumably important. Not only
> will the subscriber not know, but one admin may forget, and there may be
> multiple admins.[1]
>
> I still don't see any reason for an admin to disable delivery other
> than as a courtesy to the subscriber or to the bounce processor.
>
> > > > - "disabled for administrative reasons" (only by admin but user
> > > > should be able to see it)
> > >
> > > I don't see why a user would need to see the difference. Unless
> > > you're suggesting that the user would not be able to reenable without
> > > asking the admin? What is the use case for this?
> >
> > I'm suggesting exactly that, yes. Why? Well, worked with user for too
> > long. ;)
> >
> > E.g. consider that seeing archives works only for subscribers. And the
> > subscriber in question complains about too many mails but still
> > re-enables getting mails. This is basically "an admin has blocked you
> > from more mails but not unsubscribed you". Might be an corner case,
> > but still. Might also be too unimportant.
>
> This is possible. If it occurs less than once in a million years,
> it's "too unimportant" to even think about.[2] Have you actually done
> this, or know anybody who has?
>
> Is it really different from "at request of subscriber"? Practically,
> the only difference I can see is if such a subscriber should be
> prevented from overriding DBA. Are you suggesting that?
>
> > > > - "bounced" (user and admin could reset it but not set it)
> > >
> > > Reenable but not set "bounced" is the current situation.
> >
> > Except if someone sets the state to "disabled" and then undo this, the
> > state is automatically cleared.
>
> This is possible, but it's not clear what harm would be done. In most
> cases, bounces are intermittent and clear themselves up, in which case
> this is the right thing. But if the subscriber bounces again, they'll
> get disabled again, only cost is a slight waste of resources.
>
> Here's how I would assess the issues. In the descriptions below, I am
> assuming that each state is the only "active" state.
>
> 1. DBS is probably a "vacation" or "post-only" setting. For that
> reason it should be re-enabled only by the subscriber (or by an
> admin at the request of the subscriber).
> 2. DBB is a "warning" and a minor convenience to the email system
> (slightly reducing traffic to mailboxes that are expected to fail,
> and perhaps avoiding some reputational damage to the list).
> Re-enabling much of the time causes no damage, as bounce disables
> are typically due to things like out of disk space, and are likely
> fixed by the time the subscription is reenabled. Most of the rest
> will be zombie mailboxes, which will rarely be reenabled, will
> quickly be redisabled by bounce, and at worst cause mild
> inconvenience. Finally, events like a Mailman upgrade and the
> April 2014 DMARC fiasco will be pretty evident, and the damage
> there has already been done, reenabling actually fixes it
> (although it may not be effective if the systemic problem hasn't
> been resolved).
> 3. DBA is interesting mostly to *subscribers*, who need to
> distinguish DBA (which the subscriber can reenable freely) from
> DBB (which warns the subscriber to get in touch with their
> postmaster). It's comforting to subscribers who may be sure they
> never disabled their subscription; otherwise, it's semantically
> identical to DBS as far as I can see.
>
> Am I missing something?
>
> It seems to me that given 1-3, assuming a 4-state design:
>
> 0. It's never unreasonable to re-enable, except DBS.
> 1. In the DBA state, changing to either DBS or DBB causes no
> problems. (Changing to DBB is unlikely, since no mail is being
> sent. However, it's possible, due to the race between Postorius
> and mail in transit, and due to spam and other spoofing of the
> list domain.)
> 2. In either of the other two states, we should never change to DBA.
> 3. In either of the other two states, if the other event occurs, you
> would want the state to be DBS|DBB. I contend that if we
> substitute DBS, little harm is done. If the subscriber reenables, it's
> on them to fix the bounce problem if it reoccurs in any case.
> Since the subscriber has deliberately set DBS, the admin should not
> reenable without permission of the subscriber (I think we're mostly in
> agreement on that).
>
> I think this 4-state design is much easier to design, validate, and
> maintain than the 16-state design you propose. If you're really
> worried about DBS|DBB, then we could have a 5-state design where
> enabling from DBS|DBB generates a warning that there may still be a
> bounce problem on the subscription. Instead, it could leave the
> subscription in state DBB, but that seems to me to be obnoxious, since
> there's little likelihood of harm from reenabling, and in many cases
> the bounce problem will have resolved itself in the meantime.
>
So it seems like we have some sort of agreement that we need all the
roles to be able to see all the 4 states. Roles here are basically Admin(
i.e. list owner/moderator/site admin) and Subscriber.
There is no access control to transition "from" any state but each value
of non-enabled states is sort of a role's way to disable the delivery. Not
all states are settable by all roles.
1. A subscriber can only transition from any to "enabled" or "by_user"
state but can see if delivery was disabled "by_admin" or "by_bounces"
as separate state in the Options page.
2. An admin can transition to "enabled", "by_user" and "by_moderator".
They should use "by_user" when acting on behalf of the user and other
when there are any administrative reason to disable delivery, whatever
that may be. I expect "by_admin" to be used sparingly, and I don't see
any use cases for it.
3. Mailman itself will use the "by_bounces" to disable delivery due to
bounces.
Is that an accurate description?
--
thanks,
Abhilash Raj (maxking)
5 years
[MM3-users] Re: [Mailman-Developers] Re: SSL error while connecting to hyperkitty
by Abhilash Raj
On Sat, Aug 31, 2019, at 10:20 AM, sandeep kumar wrote:
> Hi Abhilash
>
> Thanks for the reply.
>
> Just two more answers please -:)
>
> Can I use the sample apache.conf in example_project in my webserver virtual host...??
See this thread for the apache configuration:
https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/thread/…
You'd need to adjust the paths and SSL configuration.
>
> And what should be the configuration details to be given in uwsgi server...??
http://docs.mailman3.org/en/latest/prodsetup.html#setting-up-a-wsgi-server
>
> Regards
> Sandeep
>
>
> On Sat, Aug 31, 2019 at 10:25 PM Abhilash Raj <maxking(a)asynchronous.in> wrote:
>> __
>> On Sat, Aug 31, 2019, at 8:49 AM, sandeep kumar wrote:
>>> Hi Abhilash
>>>
>>> Thanks for your reply. -:)
>>>
>>> We are using apache httpd as webserver to redirect.
>>>
>>> the proxy pass in webserver is
>>>
>>> ProxyPass / http://localhost:8000
>>> ReverseProxyPass / http://localhost:8000
>>
>>
>> Can you put `base_url: http://localhost:8000/hyperkitty` in your mailman-hyperkitty.cfg and see that it works? :)
>>
>> This should not try any funny SSL redirection.
>>
>>> I don't have idea of deploying this in production, so I just went on searching and I found wsgi (say uwsgi) is required to send the requests from webserver to mailman. Correct me if I am wrong.
>>>
>>> I have few queries listed below. Please reply to them.
>>>
>>> Should I use the wsgi.py present in the directory of mailman-suite ...??
>>
>> Yes, that is the one which is supposed to be used.
>>
>>>
>>> What should be the ProxyPass ..?? Where should the first hit go from webserver ---> uwsgi ---> ??
>>
>> uwsgi is web server running Mailman's web componenet. It doesn't need to hit anything. You can restart it directly when you want to restart Mailman's web component, you don't need to do anything to your web server (httpd) for this.
>>
>>
>>
>>>
>>> Can we run "python manage.py runserver" every time to start mailman suite..?? Can we make mailman-suite start/stop just by restarting the HTTPD..??
>>
>>
>> No, use a wsgi server, like uwsgi or gunicorn to run mailman-suote. `python manage.runserver` is a command used during development shouldn't be used at all in prod.
>>
>>>
>>> What should be the entry in Hyperkitty.cfg file after all the above steps..?? I mean at the end
>>>
>>> Please reply to the above queries. Thanks for your help
>>> Regards
>>> Sandeep
>>>
>>>
>>>
>>>
>>>
>>> On Sat, Aug 31, 2019 at 8:45 PM Abhilash Raj <maxking(a)asynchronous.in> wrote:
>>>> On Sat, Aug 31, 2019, at 1:36 AM, sandeep kumar wrote:
>>>> > Hi Team
>>>> >
>>>> > Iam seeing following errors while mailman is trying to archive in
>>>> > mailman.log
>>>> >
>>>> >
>>>> > This is my base URL in mailman-hyperkitty.cfg
>>>> >
>>>> > base_url: http://localhost/hyperkitty
>>>>
>>>> Are you sure this is the URL? this is http and Mailman shouldn't try to connect to this using HTTPS.
>>>>
>>>> Is your web server configured to redirect all HTTP traffic to HTTPS? If that is the case, then it is going to fail.
>>>>
>>>> Which wsgi server are you using? uwsgi?
>>>>
>>>> Can you also show your ProxyPass configuration?
>>>>
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> > *During handling of the above exception, another exception
>>>> > occurred:Traceback (most recent call last): File
>>>> > "/var/lib/mailman/venv3/lib64/python3.6/site-packages/requests-2.21.0-py3.6.egg/requests/adapters.py",
>>>> > line 449, in send timeout=timeout File
>>>> > "/var/lib/mailman/venv3/lib64/python3.6/site-packages/urllib3-1.24.1-py3.6.egg/urllib3/connectionpool.py",
>>>> > line 638, in urlopen _stacktrace=sys.exc_info()[2]) File
>>>> > "/var/lib/mailman/venv3/lib64/python3.6/site-packages/urllib3-1.24.1-py3.6.egg/urllib3/util/retry.py",
>>>> > line 398, in increment raise MaxRetryError(_pool, url, error or
>>>> > ResponseError(cause))urllib3.exceptions.MaxRetryError:
>>>> > HTTPSConnectionPool(host='domain.com <http://domain.com>', port=443):
>>>> > Max
>>>> > retries exceeded with url:
>>>> > /hyperkitty/api/mailman/archive?key=SecretArchiverAPIKey (Caused by
>>>> > SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate
>>>> > verify
>>>> > failed (_ssl.c:841)'),))During handling of the above exception, another
>>>> > exception occurred:Traceback (most recent call last): File
>>>> > "/var/lib/mailman/mailman-hyperkitty/mailman_hyperkitty/__init__.py",
>>>> > line
>>>> > 154, in _archive_message url = self._send_message(mlist, msg) File
>>>> > "/var/lib/mailman/mailman-hyperkitty/mailman_hyperkitty/__init__.py",
>>>> > line
>>>> > 201, in _send_message files={"message": ("message.txt",
>>>> > message_text)})
>>>> > File
>>>> > "/var/lib/mailman/venv3/lib64/python3.6/site-packages/requests-2.21.0-py3.6.egg/requests/api.py",
>>>> > line 116, in post return request('post', url, data=data, json=json,
>>>> > **kwargs) File
>>>> > "/var/lib/mailman/venv3/lib64/python3.6/site-packages/requests-2.21.0-py3.6.egg/requests/api.py",
>>>> > line 60, in request return session.request(method=method, url=url,
>>>> > **kwargs) File
>>>> > "/var/lib/mailman/venv3/lib64/python3.6/site-packages/requests-2.21.0-py3.6.egg/requests/sessions.py",
>>>> > line 533, in request resp = self.send(prep, **send_kwargs) File
>>>> > "/var/lib/mailman/venv3/lib64/python3.6/site-packages/requests-2.21.0-py3.6.egg/requests/sessions.py",
>>>> > line 668, in send history = [resp for resp in gen] if allow_redirects
>>>> > else [] File
>>>> > "/var/lib/mailman/venv3/lib64/python3.6/site-packages/requests-2.21.0-py3.6.egg/requests/sessions.py",
>>>> > line 668, in <listcomp> history = [resp for resp in gen] if
>>>> > allow_redirects else [] File
>>>> > "/var/lib/mailman/venv3/lib64/python3.6/site-packages/requests-2.21.0-py3.6.egg/requests/sessions.py",
>>>> > line 247, in resolve_redirects **adapter_kwargs File
>>>> > "/var/lib/mailman/venv3/lib64/python3.6/site-packages/requests-2.21.0-py3.6.egg/requests/sessions.py",
>>>> > line 646, in send r = adapter.send(request, **kwargs) File
>>>> > "/var/lib/mailman/venv3/lib64/python3.6/site-packages/requests-2.21.0-py3.6.egg/requests/adapters.py",
>>>> > line 514, in send raise SSLError(e,
>>>> > request=request)requests.exceptions.SSLError:
>>>> > HTTPSConnectionPool(host=domain.com <http://domain.com>', port=443): Max
>>>> > retries exceeded with url:
>>>> > /hyperkitty/api/mailman/archive?key=SecretArchiverAPIKey (Caused by
>>>> > SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate
>>>> > verify
>>>> > failed (_ssl.c:841)'),))*
>>>> >
>>>> >
>>>> > Rgrds
>>>> > Sandeep
>>>> >
>>>> > On Sat, Aug 31, 2019 at 10:20 AM sandeep kumar <sandeep7790(a)gmail.com>
>>>> > wrote:
>>>> >
>>>> > > Team any help
>>>> > >
>>>> > > Sent from my iPhone
>>>> > >
>>>> > > > On 30-Aug-2019, at 11:18 PM, sandeep kumar <sandeep7790(a)gmail.com>
>>>> > > wrote:
>>>> > > >
>>>> > > > Hi Team
>>>> > > >
>>>> > > > Iam using httpd to work with ssl on mailman 3 using proxy pass.
>>>> > > >
>>>> > > > After this configuration Iam not able to connect to hyperkitty. It is
>>>> > > throwing ssl certificate error in mailman.log file.
>>>> > > >
>>>> > > > What should be the configuration of hyperkitty while using https in
>>>> > > mailman..?
>>>> > > >
>>>> > > > Please help me with this Iam struck here from past 4 days
>>>> > > >
>>>> > > > Rgrds
>>>> > > > Sandeep
>>>> > > >
>>>> > > > Sent from my iPhone
>>>> > >
>>>> >
>>>> >
>>>> > --
>>>> > Regards
>>>> > Sandeep Kumar
>>>> > +91-9642669192
>>>> > _______________________________________________
>>>> > Mailman-Developers mailing list -- mailman-developers(a)python.org
>>>> > To unsubscribe send an email to mailman-developers-leave(a)python.org
>>>> > https://mail.python.org/mailman3/lists/mailman-developers.python.org/
>>>> > Mailman FAQ: https://wiki.list.org/x/AgA3
>>>> >
>>>> > Security Policy: https://wiki.list.org/x/QIA9
>>>> >
>>>>
>>>> --
>>>> thanks,
>>>> Abhilash Raj (maxking)
>>>
>>>
>>> --
>>> Regards
>>> Sandeep Kumar
>>> +91-9642669192
>>>
>>
>> --
>> thanks,
>> Abhilash Raj (maxking)
>>
>>
>
>
> --
> Regards
> Sandeep Kumar
> +91-9642669192
>
--
thanks,
Abhilash Raj (maxking)
6 years, 6 months
[MM3-users] Re: Installing mailman 3
by Kyle Richardson
Looks like you are using the fhs (filesystem hierarchy standard) layout; is
that what you intend? I would suggest changing the layout to "dev" for
testing purposes. This will use your mailman.cfg/../.. as the var directory.
Is it possible you also have mailman v2 installed via rpms?
-Kyle
On Tue, Jul 11, 2017 at 3:41 PM, Rafael Mora <rafael.mora.guti(a)gmail.com>
wrote:
> Hello,
>
> Here it's mailman info:
> [root@localhost bin]# ./mailman info
> GNU Mailman 3.2.0a1 (La Villa Strangiato)
> Python 3.6.0 (default, Jul 7 2017, 11:59:56)
> [GCC 4.8.5 20150623 (Red Hat 4.8.5-11)]
> config file: /etc/mailman.cfg
> db url: sqlite:////var/lib/mailman/data/mailman.db
> devmode: DISABLED
> REST root url: http://localhost:8001/3.1/
> REST credentials: restadmin:restpass
>
>
> Here it's mailman conf:
> [root@localhost bin]# ./mailman conf
> [antispam] header_checks:
> [antispam] jump_chain: hold
> [archiver.mail_archive] class: mailman.archiving.mailarchive.MailArchive
> [archiver.mail_archive] clobber_date: maybe
> [archiver.mail_archive] clobber_skew: 1d
> [archiver.mail_archive] configuration: python:mailman.config.mail_archive
> [archiver.mail_archive] enable: no
> [archiver.master] class:
> [archiver.master] clobber_date: maybe
> [archiver.master] clobber_skew: 1d
> [archiver.master] configuration: changeme
> [archiver.master] enable: no
> [archiver.mhonarc] class: mailman.archiving.mhonarc.MHonArc
> [archiver.mhonarc] clobber_date: maybe
> [archiver.mhonarc] clobber_skew: 1d
> [archiver.mhonarc] configuration: python:mailman.config.mhonarc
> [archiver.mhonarc] enable: no
> [archiver.prototype] class: mailman.archiving.prototype.Prototype
> [archiver.prototype] clobber_date: maybe
> [archiver.prototype] clobber_skew: 1d
> [archiver.prototype] configuration: changeme
> [archiver.prototype] enable: no
> [bounces] register_bounces_every: 15m
> [database] class: mailman.database.sqlite.SQLiteDatabase
> [database] debug: no
> [database] url: sqlite:///$DATA_DIR/mailman.db
> [devmode] enabled: no
> [devmode] recipient:
> [devmode] testing: no
> [devmode] wait: 60s
> [digests] mime_digest_keep_headers:
> Date From To Cc Subject Message-ID Keywords
> In-Reply-To References Content-Type MIME-Version
> Content-Transfer-Encoding Precedence Reply-To
> Message List-Post
> [digests] plain_digest_keep_headers:
> Message Date From
> Subject To Cc
> Message-ID Keywords
> Content-Type
> [dmarc] cache_lifetime: 7d
> [dmarc] org_domain_data_url:
> https://publicsuffix.org/list/public_suffix_list.dat
> [dmarc] resolver_lifetime: 5s
> [dmarc] resolver_timeout: 3s
> [language.ar] charset: utf-8
> [language.ar] description: Arabic
> [language.ar] enabled: yes
> [language.ast] charset: iso-8859-1
> [language.ast] description: Asturian
> [language.ast] enabled: yes
> [language.ca] charset: utf-8
> [language.ca] description: Catalan
> [language.ca] enabled: yes
> [language.cs] charset: iso-8859-2
> [language.cs] description: Czech
> [language.cs] enabled: yes
> [language.da] charset: iso-8859-1
> [language.da] description: Danish
> [language.da] enabled: yes
> [language.de] charset: iso-8859-1
> [language.de] description: German
> [language.de] enabled: yes
> [language.el] charset: iso-8859-7
> [language.el] description: Greek
> [language.el] enabled: yes
> [language.es] charset: iso-8859-1
> [language.es] description: Spanish
> [language.es] enabled: yes
> [language.et] charset: iso-8859-15
> [language.et] description: Estonian
> [language.et] enabled: yes
> [language.eu] charset: iso-8859-15
> [language.eu] description: Euskara
> [language.eu] enabled: yes
> [language.fi] charset: iso-8859-1
> [language.fi] description: Finnish
> [language.fi] enabled: yes
> [language.fr] charset: iso-8859-1
> [language.fr] description: French
> [language.fr] enabled: yes
> [language.gl] charset: utf-8
> [language.gl] description: Galician
> [language.gl] enabled: yes
> [language.he] charset: utf-8
> [language.he] description: Hebrew
> [language.he] enabled: yes
> [language.hr] charset: iso-8859-2
> [language.hr] description: Croatian
> [language.hr] enabled: yes
> [language.hu] charset: iso-8859-2
> [language.hu] description: Hungarian
> [language.hu] enabled: yes
> [language.ia] charset: iso-8859-15
> [language.ia] description: Interlingua
> [language.ia] enabled: yes
> [language.it] charset: iso-8859-1
> [language.it] description: Italian
> [language.it] enabled: yes
> [language.ja] charset: euc-jp
> [language.ja] description: Japanese
> [language.ja] enabled: yes
> [language.ko] charset: euc-kr
> [language.ko] description: Korean
> [language.ko] enabled: yes
> [language.lt] charset: iso-8859-13
> [language.lt] description: Lithuanian
> [language.lt] enabled: yes
> [language.nl] charset: iso-8859-1
> [language.nl] description: Dutch
> [language.nl] enabled: yes
> [language.no] charset: iso-8859-1
> [language.no] description: Norwegian
> [language.no] enabled: yes
> [language.pl] charset: iso-8859-2
> [language.pl] description: Polish
> [language.pl] enabled: yes
> [language.pt] charset: iso-8859-1
> [language.pt] description: Protuguese
> [language.pt] enabled: yes
> [language.pt_BR] charset: iso-8859-1
> [language.pt_BR] description: Protuguese (Brazil)
> [language.pt_BR] enabled: yes
> [language.ro] charset: iso-8859-2
> [language.ro] description: Romanian
> [language.ro] enabled: yes
> [language.ru] charset: koi8-r
> [language.ru] description: Russian
> [language.ru] enabled: yes
> [language.sk] charset: utf-8
> [language.sk] description: Slovak
> [language.sk] enabled: yes
> [language.sl] charset: iso-8859-2
> [language.sl] description: Slovenian
> [language.sl] enabled: yes
> [language.sr] charset: utf-8
> [language.sr] description: Serbian
> [language.sr] enabled: yes
> [language.sv] charset: iso-8859-1
> [language.sv] description: Swedish
> [language.sv] enabled: yes
> [language.tr] charset: iso-8859-9
> [language.tr] description: Turkish
> [language.tr] enabled: yes
> [language.uk] charset: utf-8
> [language.uk] description: Ukrainian
> [language.uk] enabled: yes
> [language.vi] charset: utf-8
> [language.vi] description: Vietnamese
> [language.vi] enabled: yes
> [language.zh_CN] charset: utf-8
> [language.zh_CN] description: Chinese
> [language.zh_CN] enabled: yes
> [language.zh_TW] charset: utf-8
> [language.zh_TW] description: Chinese (Taiwan)
> [language.zh_TW] enabled: yes
> [logging.archiver] datefmt: %b %d %H:%M:%S %Y
> [logging.archiver] format: %(asctime)s (%(process)d) %(message)s
> [logging.archiver] level: info
> [logging.archiver] path: mailman.log
> [logging.archiver] propagate: no
> [logging.bounce] datefmt: %b %d %H:%M:%S %Y
> [logging.bounce] format: %(asctime)s (%(process)d) %(message)s
> [logging.bounce] level: info
> [logging.bounce] path: bounce.log
> [logging.bounce] propagate: no
> [logging.config] datefmt: %b %d %H:%M:%S %Y
> [logging.config] format: %(asctime)s (%(process)d) %(message)s
> [logging.config] level: info
> [logging.config] path: mailman.log
> [logging.config] propagate: no
> [logging.database] datefmt: %b %d %H:%M:%S %Y
> [logging.database] format: %(asctime)s (%(process)d) %(message)s
> [logging.database] level: warn
> [logging.database] path: mailman.log
> [logging.database] propagate: no
> [logging.debug] datefmt: %b %d %H:%M:%S %Y
> [logging.debug] format: %(asctime)s (%(process)d) %(message)s
> [logging.debug] level: info
> [logging.debug] path: debug.log
> [logging.debug] propagate: no
> [logging.error] datefmt: %b %d %H:%M:%S %Y
> [logging.error] format: %(asctime)s (%(process)d) %(message)s
> [logging.error] level: info
> [logging.error] path: mailman.log
> [logging.error] propagate: no
> [logging.fromusenet] datefmt: %b %d %H:%M:%S %Y
> [logging.fromusenet] format: %(asctime)s (%(process)d) %(message)s
> [logging.fromusenet] level: info
> [logging.fromusenet] path: mailman.log
> [logging.fromusenet] propagate: no
> [logging.http] datefmt: %b %d %H:%M:%S %Y
> [logging.http] format: %(asctime)s (%(process)d) %(message)s
> [logging.http] level: info
> [logging.http] path: mailman.log
> [logging.http] propagate: no
> [logging.locks] datefmt: %b %d %H:%M:%S %Y
> [logging.locks] format: %(asctime)s (%(process)d) %(message)s
> [logging.locks] level: info
> [logging.locks] path: mailman.log
> [logging.locks] propagate: no
> [logging.mischief] datefmt: %b %d %H:%M:%S %Y
> [logging.mischief] format: %(asctime)s (%(process)d) %(message)s
> [logging.mischief] level: info
> [logging.mischief] path: mailman.log
> [logging.mischief] propagate: no
> [logging.root] datefmt: %b %d %H:%M:%S %Y
> [logging.root] format: %(asctime)s (%(process)d) %(message)s
> [logging.root] level: info
> [logging.root] path: mailman.log
> [logging.root] propagate: no
> [logging.runner] datefmt: %b %d %H:%M:%S %Y
> [logging.runner] format: %(asctime)s (%(process)d) %(message)s
> [logging.runner] level: info
> [logging.runner] path: mailman.log
> [logging.runner] propagate: no
> [logging.smtp] datefmt: %b %d %H:%M:%S %Y
> [logging.smtp] every: $msgid smtp to $listname for $recip recips, completed
> in $time seconds
> [logging.smtp] failure: $msgid delivery to $recip failed with code
> $smtpcode, $smtpmsg
> [logging.smtp] format: %(asctime)s (%(process)d) %(message)s
> [logging.smtp] level: info
> [logging.smtp] path: smtp.log
> [logging.smtp] propagate: no
> [logging.smtp] refused: $msgid post to $listname from $sender, $size bytes,
> $refused failures
> [logging.smtp] success: $msgid post to $listname from $sender, $size bytes
> [logging.subscribe] datefmt: %b %d %H:%M:%S %Y
> [logging.subscribe] format: %(asctime)s (%(process)d) %(message)s
> [logging.subscribe] level: info
> [logging.subscribe] path: mailman.log
> [logging.subscribe] propagate: no
> [logging.vette] datefmt: %b %d %H:%M:%S %Y
> [logging.vette] format: %(asctime)s (%(process)d) %(message)s
> [logging.vette] level: info
> [logging.vette] path: mailman.log
> [logging.vette] propagate: no
> [mailman] cache_life: 7d
> [mailman] default_language: en
> [mailman] email_commands_max_lines: 10
> [mailman] filtered_messages_are_preservable: no
> [mailman] html_to_plain_text_command: /usr/bin/lynx -dump $filename
> [mailman] layout: fhs
> [mailman] listname_chars: [-_.0-9a-z]
> [mailman] noreply_address: noreply
> [mailman] pending_request_life: 3d
> [mailman] post_hook:
> [mailman] pre_hook:
> [mailman] sender_headers: from from_ reply-to sender
> [mailman] site_owner: changeme(a)example.com
> [mta] configuration: python:mailman.config.postfix
> [mta] delivery_retry_period: 5d
> [mta] incoming: mailman.mta.postfix.LMTP
> [mta] lmtp_host: 127.0.0.1 # IP where Mailman should listen for
> emails from MTA
> [mta] lmtp_port: 8024
> [mta] max_autoresponses_per_day: 10
> [mta] max_delivery_threads: 0
> [mta] max_recipients: 500
> [mta] max_sessions_per_connection: 0
> [mta] outgoing: mailman.mta.deliver.deliver
> [mta] remove_dkim_headers: no
> [mta] smtp_host: 127.0.0.1 # IP Where MTA is listening for
> emails
> [mta] smtp_pass:
> [mta] smtp_port: 25
> [mta] smtp_user:
> [mta] verp_confirm_format: $address+$cookie
> [mta] verp_confirm_regexp: ^(.*<)?(?P<addr>[^+]+?)\+(?P<cookie>[^@]+)@.*$
> [mta] verp_confirmations: no
> [mta] verp_delimiter: +
> [mta] verp_delivery_interval: 0
> [mta] verp_format: ${bounces}+${local}=${domain}
> [mta] verp_personalized_deliveries: no
> [mta] verp_probe_format: $bounces+$token@$domain
> [mta] verp_probe_regexp: ^(?P<bounces>[^+]+?)\+(?P<token>[^@]+)@.*$
> [mta] verp_probes: no
> [mta] verp_regexp:
> ^(?P<bounces>[^+]+?)\+(?P<local>[^=]+)=(?P<domain>[^@]+)@.*$
> [nntp] host:
> [nntp] password:
> [nntp] port:
> [nntp] remove_headers:
> nntp-posting-host nntp-posting-date x-trace
> x-complaints-to xref date-received posted
> posting-version relay-version received
> [nntp] rewrite_duplicate_headers:
> To X-Original-To
> CC X-Original-CC
> Content-Transfer-Encoding X-Original-Content-Transfer-Encoding
> MIME-Version X-MIME-Version
> [nntp] user:
> [passwords] configuration: python:mailman.config.passlib
> [passwords] password_length: 8
> [shell] banner: Welcome to the GNU Mailman shell
> [shell] history_file:
> [shell] prompt: >>>
> [shell] use_ipython: no
> [styles] default: legacy-default
> [styles] paths:
> mailman.styles
> [webservice] admin_pass: restpass
> [webservice] admin_user: restadmin
> [webservice] api_version: 3.1
> [webservice] hostname: localhost
> [webservice] port: 8001
> [webservice] show_tracebacks: yes
> [webservice] use_https: no
>
>
> What do you suggest? Thank you
>
> El mar., 11 jul. 2017 a las 14:31, Simon Hanna (<simon.hanna(a)serve-me.info
> >)
> escribió:
>
> > Below is how I would recommend to run Mailman for production using a
> > virtualenv
> >
> > # useradd -r -m -d /var/lib/mailman mailman
> >
> > # su - mailman
> >
> >
> > $ python3 -m venv env
> > $ source env/bin/activate
> > $ pip install mailman
> > $ mailman info
> >
> > Now you should have a working configuration in /var/lib/mailman/var/
> >
> > to run mailman you don't need to activate the virtualenv, just use the
> > executable /var/lib/mailman/env/bin/mailman
> >
> > cheers,
> > Simon
> > _______________________________________________
> > Mailman-users mailing list
> > mailman-users(a)mailman3.org
> > https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> >
> --
>
> Atentamente / Best Regards
>
> Ing. Rafael Mora
> _______________________________________________
> Mailman-users mailing list
> mailman-users(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>
8 years, 7 months
[MM3-users] Re: Easiest way to install a new mailman3 deployment?
by John Willson
Thanks so much guys, let me try to answer some of your questions.
@AndrewH.
Yes, I saw your notes, but the impression I got during this effort is that
package-based/non-docker implementations change too much between versions,
so anything written based on Ubuntu 16.04 or earlier just didn't feel worth
spending significant time on... that impression came from the "this is new
to version 18.04" warnings in the Ubuntu 18.04 walkthrough (
https://docs.google.com/document/d/1xIcSsoNFp2nHi7r4eQys00s9a0k2sHhu1V5Plan…)
See my comment below for more.
Nonetheless, I'm going to crawl through your email and config files and see
if I find anything to suggest where I've been going wrong, so thanks a ton
for that.
@JonathanM
My attempt at doing a DigitalOcean package/non-docker based implementation
was frustrating. I found a really detailed walkthrough (
https://docs.google.com/document/d/1xIcSsoNFp2nHi7r4eQys00s9a0k2sHhu1V5Plan…)
and after the usual hyperkitty authorization problem solving, it got me to
a point where everything looked perfect, based on a glance at the web
interface. However, a bizarre collection of errors showed up during QA
testing, such as the following:
- Gravatars showing broken links about half of the time
- Emails from non-admin subscribers almost always not getting processed
and resulting in "connection dropped" errors in the SMTP log
- Very random orange-banner errors (e.g. I think one was vaguely
something like "[[(*)]] failed")
- Most confusingly... the "Last post made at" metric would always show
'none', no matter how many posts were made to the test list.
As I attempted to debug, I saw some connectivity issues in the logs
(500/bad gateway errors, IIRC). I wanted to rule out an SSL-negotiation
issue, partly because I've very recently had problems installing other
complex software where some Ubuntu packages have apparently changed default
package behaviours to insist on SSL, which forced those developers to redo
installation scripts that hadn't been touched in a while. Because only
'default' behaviours were changed, I would expect that this wouldn't show
up in installations that are upgraded from previous versions. So I turned
off the cert-based forcing of SSL for all HTTP traffic and, sure enough,
started getting errors about "incorrect SSL version" occurring during SSL
handshaking attempts. That's when I threw up my hands and decided to make
docker work.
@MatthewA
Thanks for the inspiration to keep at this. I spent quite a few post-NYE
hours trying to make the cleanest possible docker-based mailman3
installation on AWS, which I'll outline below. It ended up failing, so I
might next try Linode. As you mention, I know the docker containers should
be platform independent, I'm just worried about the fact that docker just
starts grabbing private IP addresses and using email in ways that require
support from the underlying platforms (e.g. AWS's Simple Email Service and
VPCs/IP address allocation).
So here's my latest (failed) attempt, to see if anyone can spot where I
went wrong. Again, I'm just trying to get a dedicated mailman3 server up
from scratch. Oh, I should add that I tried the mailman4 AWS
Mailman3-as-SaaS
<https://aws.amazon.com/marketplace/pp/New-IT-Mailman-4/B089M2PCVV>, and
that worked just fine. However we can't host our data on a SaaS platform,
so that's unfortunately not an option for us. I just want to mention it for
anyone looking for a "give me mailman services in five minutes for
$30/month" solution.
Phase 1 - Prepare the AWS instance and MTA
1. Created an instance using pre-allocated support for 172.19.199.[1-4]
IP address endpoints, a VPC with the 172.19.198.0/23 subdomain, and
firewall security rules to pass ports 80, 8000, 8024, 22, 25, 587, 443, all
ICMP
2. Prepared docker using AWS methodology
<https://docs.aws.amazon.com/AmazonECS/latest/developerguide/docker-basics.h…>
and successfully tested a docker container using hello world
3. Prepared successfully tested AWS SES service (e.g. domain and account
validation) and integrated with postfix.
<https://docs.aws.amazon.com/ses/latest/DeveloperGuide/postfix.html>
Phase 2 - Prepare mailman3 docker files
1. Tried to follow the standard directions... .I put most of the
relevant files below.
2. Curl test of 172.19.199.3 endpoint failed. Put some debug information
below.
I'm going to work with the previous suggestions to see what I can pull
together, but any ideas appreciated.
-----------------
docker-compose.yaml
version: '2'
services:
mailman-core:
image: maxking/mailman-core:0.3
container_name: mailman-core
hostname: mailman-core
volumes:
- /opt/mailman/core:/opt/mailman/
stop_grace_period: 30s
links:
- database:database
depends_on:
- database
environment:
- DATABASE_URL=postgres://mailman:mailmanpass@database/mailmandb
- DATABASE_TYPE=postgres
- DATABASE_CLASS=mailman.database.postgresql.PostgreSQLDatabase
- HYPERKITTY_API_KEY=FXCX6wk4e-stuff-m3ozNNpsFcj7vq
networks:
mailman:
ipv4_address: 172.19.199.2
mailman-web:
image: maxking/mailman-web:0.3
container_name: mailman-web
hostname: mailman-web
depends_on:
- database
links:
- mailman-core:mailman-core
- database:database
volumes:
- /opt/mailman/web:/opt/mailman-web-data
environment:
- DATABASE_TYPE=postgres
- DATABASE_URL=postgres://mailman:mailmanpass@database/mailmandb
- HYPERKITTY_API_KEY= FXCX6wk4e-stuff-m3ozNNpsFcj7vq
- SECRET_KEY= FXCX6wk4e-stuff-m3ozNNpsFcj7vq
- SERVE_FROM_DOMAIN=johnlabdomain.website
- MAILMAN_ADMIN_USER=mailman
- MAILMAN_ADMIN_EMAIL=postmaster(a)johnlabdomain.website
networks:
mailman:
ipv4_address: 172.19.199.3
database:
environment:
POSTGRES_DB: mailmandb
POSTGRES_USER: mailman
POSTGRES_PASSWORD: mailmanpass
image: postgres:9.6-alpine
volumes:
- /opt/mailman/database:/var/lib/postgresql/data
networks:
mailman:
ipv4_address: 172.19.199.4
networks:
mailman:
driver: bridge
ipam:
driver: default
config:
-
subnet: 172.19.199.0/24
-----------
mailman-extra.cfg
[mta]
incoming: mailman.mta.postfix.LMTP
outgoing: mailman.mta.deliver.deliver
lmtp_host: 172.19.199.2
lmtp_port: 8024
smtp_host: 172.19.199.1
smtp_port: 25
configuration: /etc/postfix-mailman.cfg
[mailman]
# 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: postmaster(a)johnlabdomain.website
--------------
settings_local.py
USE_SSL = False
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = '172.19.199.1'
EMAIL_PORT = 25
DEFAULT_FROM_EMAIL = "postmaster(a)johnlabdomain.website"
SERVER_EMAIL = "postmaster(a)johnlabdomain.website"
___________
docker infoClient:
Debug Mode: false
Server:
Containers: 3
Running: 3
Paused: 0
Stopped: 0
Images: 9
Server Version: 19.03.13-ce
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries
splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: c623d1b36f09f8ef6536a057bd658b3aa8632828
runc version: ff819c7e9184c13b7c2607fe6c30ae19403a7aff
init version: de40ad0 (expected: fec3683)
Security Options:
seccomp
Profile: default
Kernel Version: 4.14.209-160.339.amzn2.x86_64
Operating System: Amazon Linux 2
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 1.945GiB
Name: ip-172-19-199-1.ca-central-1.compute.internal
ID: 5HIU:HKNY:O5AK:GPDM:I7JD:PGX7:2YZN:RYLK:K2OQ:ICO2:F3RA:O2QZ
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
_________________
maillog has some interesting stuff I'm seeing for the first time. Let me
know if this suggests any obvious suspects.
[ec2-user@ip-172-19-199-1 log]$ sudo cat maillog
Jan 1 10:10:25 ip-172-19-199-1 postfix/postfix-script[2984]: starting the
Postfix mail system
Jan 1 10:10:25 ip-172-19-199-1 postfix/master[2988]: daemon started --
version 2.10.1, configuration /etc/postfix
Jan 1 10:20:39 ip-172-19-199-1 postfix/postfix-script[4076]: stopping the
Postfix mail system
Jan 1 10:20:39 ip-172-19-199-1 postfix/master[2988]: terminating on signal
15
Jan 1 10:20:39 ip-172-19-199-1 postfix/postfix-script[4115]: fatal: the
Postfix mail system is not running
Jan 1 10:20:39 ip-172-19-199-1 postfix/postfix-script[4207]: starting the
Postfix mail system
Jan 1 10:20:39 ip-172-19-199-1 postfix/master[4209]: daemon started --
version 2.10.1, configuration /etc/postfix
Jan 1 10:21:27 ip-172-19-199-1 postfix/pickup[4210]: 4EF7073: uid=1000
from=<postmaster(a)johnlabdomain.website>
Jan 1 10:21:27 ip-172-19-199-1 postfix/cleanup[4218]: 4EF7073:
message-id=<20210101102127.4EF7073(a)ip-172-19-199-1.ca-central-1.compute.internal
>
Jan 1 10:21:27 ip-172-19-199-1 postfix/qmgr[4211]: 4EF7073:
from=<postmaster(a)johnlabdomain.website>, size=387, nrcpt=1 (queue active)
Jan 1 10:21:27 ip-172-19-199-1 postfix/smtp[4220]: 4EF7073:
to=<postmaster(a)johnlabdomain.website>, relay=
email-smtp.ca-central-1.amazonaws.com[3.97.59.162]:587, delay=12,
delays=12/0.04/0.13/0.1, dsn=2.0.0, status=sent (250 Ok
010d0176bd776654-8f53783a-07fd-4b47-92b0-b7f9a14bbbf7-000000)
Jan 1 10:21:27 ip-172-19-199-1 postfix/qmgr[4211]: 4EF7073: removed
Jan 1 10:24:39 ip-172-19-199-1 postfix/postfix-script[4346]: refreshing
the Postfix mail system
Jan 1 10:24:39 ip-172-19-199-1 postfix/master[4209]: reload -- version
2.10.1, configuration /etc/postfix
Jan 1 10:24:39 ip-172-19-199-1 postfix/qmgr[4351]: error: open
/opt/mailman/core/var/data/postfix_domains: No such file or directory
Jan 1 10:27:58 ip-172-19-199-1 postfix/smtpd[4395]: error: open
/opt/mailman/core/var/data/postfix_domains: No such file or directory
Jan 1 10:27:58 ip-172-19-199-1 postfix/smtpd[4395]: error: open
/opt/mailman/core/var/data/postfix_lmtp: No such file or directory
Jan 1 10:27:58 ip-172-19-199-1 postfix/smtpd[4395]: connect from
mail-yb1-f184.google.com[209.85.219.184]
Jan 1 10:27:58 ip-172-19-199-1 postfix/trivial-rewrite[4397]: error: open
/opt/mailman/core/var/data/postfix_domains: No such file or directory
Jan 1 10:27:58 ip-172-19-199-1 postfix/trivial-rewrite[4397]: error: open
/opt/mailman/core/var/data/postfix_lmtp: No such file or directory
Jan 1 10:27:58 ip-172-19-199-1 postfix/trivial-rewrite[4397]: warning:
regexp:/opt/mailman/core/var/data/postfix_lmtp is unavailable. open
/opt/mailman/core/var/data/postfix_lmtp: No such file or directory
Jan 1 10:27:58 ip-172-19-199-1 postfix/trivial-rewrite[4397]: warning:
regexp:/opt/mailman/core/var/data/postfix_lmtp lookup error for "*"
Jan 1 10:27:58 ip-172-19-199-1 postfix/trivial-rewrite[4397]: warning:
regexp:/opt/mailman/core/var/data/postfix_lmtp is unavailable. open
/opt/mailman/core/var/data/postfix_lmtp: No such file or directory
Jan 1 10:27:58 ip-172-19-199-1 postfix/trivial-rewrite[4397]: warning:
regexp:/opt/mailman/core/var/data/postfix_lmtp lookup error for "*"
Jan 1 10:27:58 ip-172-19-199-1 postfix/trivial-rewrite[4397]: warning:
regexp:/opt/mailman/core/var/data/postfix_domains is unavailable. open
/opt/mailman/core/var/data/postfix_domains: No such file or directory
Jan 1 10:27:58 ip-172-19-199-1 postfix/trivial-rewrite[4397]: warning:
regexp:/opt/mailman/core/var/data/postfix_domains: table lookup problem
Jan 1 10:27:58 ip-172-19-199-1 postfix/trivial-rewrite[4397]: warning:
relay_domains lookup failure
Jan 1 10:27:58 ip-172-19-199-1 postfix/trivial-rewrite[4397]: warning:
regexp:/opt/mailman/core/var/data/postfix_domains is unavailable. open
/opt/mailman/core/var/data/postfix_domains: No such file or directory
Jan 1 10:27:58 ip-172-19-199-1 postfix/trivial-rewrite[4397]: warning:
regexp:/opt/mailman/core/var/data/postfix_domains: table lookup problem
Jan 1 10:27:58 ip-172-19-199-1 postfix/trivial-rewrite[4397]: warning:
relay_domains lookup failure
Jan 1 10:27:58 ip-172-19-199-1 postfix/smtpd[4395]: NOQUEUE: reject: RCPT
from mail-yb1-f184.google.com[209.85.219.184]: 451 4.3.0 <
person(a)obfuscatedbyme.com>: Temporary lookup failure; from=<
ggroupname+bncBCUONKFK6AKRB3XIXD7QKGQEAITT5DI(a)googlegroups.com> to=<
person(a)obfuscatedbyme.com > proto=ESMTP helo=<mail-yb1-f184.google.com>
Jan 1 10:27:58 ip-172-19-199-1 postfix/smtpd[4395]: disconnect from
mail-yb1-f184.google.com[209.85.219.184]
Jan 1 10:31:18 ip-172-19-199-1 postfix/anvil[4396]: statistics: max
connection rate 1/60s for (smtp:209.85.219.184) at Jan 1 10:27:58
Jan 1 10:31:18 ip-172-19-199-1 postfix/anvil[4396]: statistics: max
connection count 1 for (smtp:209.85.219.184) at Jan 1 10:27:58
Jan 1 10:31:18 ip-172-19-199-1 postfix/anvil[4396]: statistics: max cache
size 1 at Jan 1 10:27:58
Jan 1 10:36:30 ip-172-19-199-1 postfix/master[4209]: terminating on signal
15
Jan 1 10:37:18 ip-172-19-199-1 postfix/postfix-script[2960]: starting the
Postfix mail system
Jan 1 10:37:19 ip-172-19-199-1 postfix/master[2962]: daemon started --
version 2.10.1, configuration /etc/postfix
Jan 1 10:37:19 ip-172-19-199-1 postfix/qmgr[2964]: error: open
/opt/mailman/core/var/data/postfix_domains: No such file or directory
Jan 1 10:39:28 ip-172-19-199-1 postfix/smtpd[3302]: error: open
/opt/mailman/core/var/data/postfix_domains: No such file or directory
Jan 1 10:39:28 ip-172-19-199-1 postfix/smtpd[3302]: error: open
/opt/mailman/core/var/data/postfix_lmtp: No such file or directory
Jan 1 10:39:28 ip-172-19-199-1 postfix/smtpd[3302]: warning: hostname
security.criminalip.com does not resolve to address 89.248.168.112
Jan 1 10:39:28 ip-172-19-199-1 postfix/smtpd[3302]: connect from
unknown[89.248.168.112]
Jan 1 10:39:28 ip-172-19-199-1 postfix/smtpd[3302]: lost connection after
STARTTLS from unknown[89.248.168.112]
Jan 1 10:39:28 ip-172-19-199-1 postfix/smtpd[3302]: disconnect from
unknown[89.248.168.112]
Jan 1 10:42:48 ip-172-19-199-1 postfix/anvil[3303]: statistics: max
connection rate 1/60s for (smtp:89.248.168.112) at Jan 1 10:39:28
Jan 1 10:42:48 ip-172-19-199-1 postfix/anvil[3303]: statistics: max
connection count 1 for (smtp:89.248.168.112) at Jan 1 10:39:28
Jan 1 10:42:48 ip-172-19-199-1 postfix/anvil[3303]: statistics: max cache
size 1 at Jan 1 10:39:28
5 years, 2 months
[MM3-users] Re: Migrating mailman3 to latest ubuntu lts
by Jered Floyd
Did you run the upgrade steps?
https://docs.mailman3.org/en/latest/upgrade-guide.html
For schema upgrades you will at least need to do "mailman-web migrate", but please read the entire section as 3.1.1 to 3.3.9 is a big step.
--Jered
----- On Dec 14, 2023, at 4:48 AM, Helio Loureiro helio(a)loureiro.eng.br wrote:
> Hi,
>
> I'm trying to migrate several lists from an ubuntu 18.04, where it was
> installed via packages (mailman 3.1.1), to ubuntu 22.04.
>
> Since ubuntu 22.04 is broken in terms of packages for mailman3, I'm trying
> to install manually following the site instructions.
>
> I just dumped the mysql DB we have nowadays, mailman3 and mailman3-web, and
> loaded in the new server. I also copied the configurations and fixed the
> paths since now mailman3 lives on /local/mailman and it uses venv. I also
> copied /var/lib/mailman3 into /local/mailman/var/lib/mailman3.
>
> mailman seems to accept pretty much of the work done.
>
> (venv) mailman@new-server ~ (v3.3.9)> mailman info
> GNU Mailman 3.3.9 (Tom Sawyer)
> Python 3.10.12 (main, Jun 11 2023, 05:26:28) [GCC 11.4.0]
> config file: /etc/mailman3/mailman.cfg
> db url:
> mysql+pymysql://mailman3:********@localhost/mailman3?charset=utf8mb4&use_unicode=1
> devmode: DISABLED
> REST root url: http://localhost:8001/3.1/
> REST credentials: restadmin:***********
>
> Even configuration is working fine.
>
> (venv) mailman@new-server ~ (v3.3.9)> mailman conf
> [ARC] authserv_id:
> [ARC] dkim: yes
> [ARC] dmarc: yes
> [ARC] domain:
> [ARC] enabled: no
> [ARC] privkey:
> [ARC] selector:
> [ - a lot of stuff - ]
> [shell] banner: Welcome to the GNU Mailman shell
> [shell] history_file:
> [shell] prompt: >>>
> [shell] use_ipython: no
> [styles] default: legacy-default
> [webservice] admin_pass: *************************
> [webservice] admin_user: restadmin
> [webservice] api_version: 3.1
> [webservice] configuration: python:mailman.config.gunicorn
> [webservice] hostname: localhost
> [webservice] port: 8001
> [webservice] show_tracebacks: yes
> [webservice] use_https: no
> [webservice] workers: 2
>
> But it is failing to start displaying the domain name from the previous
> machine.
>
> (venv) mailman@new-server ~ (v3.3.9)> mailman start
> Starting Mailman's master runner
> Generating MTA alias maps
> Traceback (most recent call last):
> File
> "/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
> line 1969, in _exec_single_context
> self.dialect.do_execute(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/engine/default.py",
> line 922, in do_execute
> cursor.execute(statement, parameters)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/pymysql/cursors.py", line
> 153, in execute
> result = self._query(query)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/pymysql/cursors.py", line
> 322, in _query
> conn.query(q)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/pymysql/connections.py",
> line 558, in query
> self._affected_rows = self._read_query_result(unbuffered=unbuffered)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/pymysql/connections.py",
> line 822, in _read_query_result
> result.read()
> File
> "/local/mailman/venv/lib/python3.10/site-packages/pymysql/connections.py",
> line 1200, in read
> first_packet = self.connection._read_packet()
> File
> "/local/mailman/venv/lib/python3.10/site-packages/pymysql/connections.py",
> line 772, in _read_packet
> packet.raise_for_error()
> File
> "/local/mailman/venv/lib/python3.10/site-packages/pymysql/protocol.py",
> line 221, in raise_for_error
> err.raise_mysql_exception(self._data)
> File "/local/mailman/venv/lib/python3.10/site-packages/pymysql/err.py",
> line 143, in raise_mysql_exception
> raise errorclass(errno, errval)
> pymysql.err.OperationalError: (1054, "Unknown column 'domain.alias_domain'
> in 'field list'")
>
> The above exception was the direct cause of the following exception:
>
> Traceback (most recent call last):
> File "/local/mailman/venv/bin/mailman", line 33, in <module>
> sys.exit(load_entry_point('mailman==3.3.9', 'console_scripts',
> 'mailman')())
> File "/local/mailman/venv/lib/python3.10/site-packages/click/core.py",
> line 1157, in __call__
> return self.main(*args, **kwargs)
> File "/local/mailman/venv/lib/python3.10/site-packages/click/core.py",
> line 1078, in main
> rv = self.invoke(ctx)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/mailman/bin/mailman.py",
> line 69, in invoke
> return super().invoke(ctx)
> File "/local/mailman/venv/lib/python3.10/site-packages/click/core.py",
> line 1688, in invoke
> return _process_result(sub_ctx.command.invoke(sub_ctx))
> File "/local/mailman/venv/lib/python3.10/site-packages/click/core.py",
> line 1434, in invoke
> return ctx.invoke(self.callback, **ctx.params)
> File "/local/mailman/venv/lib/python3.10/site-packages/click/core.py",
> line 783, in invoke
> return __callback(*args, **kwargs)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/click/decorators.py",
> line 33, in new_func
> return f(get_current_context(), *args, **kwargs)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/mailman/commands/cli_control.py",
> line 109, in start
> call_name(config.mta.incoming).regenerate()
> File
> "/local/mailman/venv/lib/python3.10/site-packages/mailman/mta/postfix.py",
> line 109, in regenerate
> self._generate_lmtp_file(fp)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/mailman/mta/postfix.py",
> line 149, in _generate_lmtp_file
> mlist = _FakeList(list_name, mail_host)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/mailman/mta/postfix.py",
> line 75, in __init__
> self.mail_host = _get_alias_domain(mail_host)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/mailman/mta/postfix.py",
> line 63, in _get_alias_domain
> d = domain_manager.get(domain)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/mailman/database/transaction.py",
> line 106, in wrapper
> return function(args[0], config.db.store, *args[1:], **kws)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/mailman/model/domain.py",
> line 162, in get
> if domains.count() < 1:
> File
> "/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/orm/query.py",
> line 3132, in count
> self._legacy_from_self(col).enable_eagerloads(False).scalar()
> File
> "/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/orm/query.py",
> line 2825, in scalar
> ret = self.one()
> File
> "/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/orm/query.py",
> line 2798, in one
> return self._iter().one() # type: ignore
> File
> "/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/orm/query.py",
> line 2847, in _iter
> result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/orm/session.py",
> line 2308, in execute
> return self._execute_internal(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/orm/session.py",
> line 2190, in _execute_internal
> result: Result[Any] = compile_state_cls.orm_execute_statement(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/orm/context.py",
> line 293, in orm_execute_statement
> result = conn.execute(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
> line 1416, in execute
> return meth(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/sql/elements.py",
> line 516, in _execute_on_connection
> return connection._execute_clauseelement(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
> line 1639, in _execute_clauseelement
> ret = self._execute_context(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
> line 1848, in _execute_context
> return self._exec_single_context(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
> line 1988, in _exec_single_context
> self._handle_dbapi_exception(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
> line 2343, in _handle_dbapi_exception
> raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
> File
> "/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
> line 1969, in _exec_single_context
> self.dialect.do_execute(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/engine/default.py",
> line 922, in do_execute
> cursor.execute(statement, parameters)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/pymysql/cursors.py", line
> 153, in execute
> result = self._query(query)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/pymysql/cursors.py", line
> 322, in _query
> conn.query(q)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/pymysql/connections.py",
> line 558, in query
> self._affected_rows = self._read_query_result(unbuffered=unbuffered)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/pymysql/connections.py",
> line 822, in _read_query_result
> result.read()
> File
> "/local/mailman/venv/lib/python3.10/site-packages/pymysql/connections.py",
> line 1200, in read
> first_packet = self.connection._read_packet()
> File
> "/local/mailman/venv/lib/python3.10/site-packages/pymysql/connections.py",
> line 772, in _read_packet
> packet.raise_for_error()
> File
> "/local/mailman/venv/lib/python3.10/site-packages/pymysql/protocol.py",
> line 221, in raise_for_error
> err.raise_mysql_exception(self._data)
> File "/local/mailman/venv/lib/python3.10/site-packages/pymysql/err.py",
> line 143, in raise_mysql_exception
> raise errorclass(errno, errval)
> sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (1054,
> "Unknown column 'domain.alias_domain' in 'field list'")
> [SQL: SELECT count(*) AS count_1
> FROM (SELECT domain.id AS domain_id, domain.mail_host AS domain_mail_host,
> domain.description AS domain_description, domain.alias_domain AS
> domain_alias_domain
> FROM domain
> WHERE domain.mail_host = %(mail_host_1)s) AS anon_1]
> [parameters: {'mail_host_1': 'old-server.mydomain.com'}]
> (Background on this error at: https://sqlalche.me/e/20/e3q8)
>
> But I can see some processes are starting.
>
> (venv) mailman@new-server ~ (v3.3.9)> ps auxwww | grep "[p]ython" | grep
> mailman
> mailman 1411605 0.0 0.0 32180 22212 ? Ss 10:44 0:00
> /local/mailman/venv/bin/python /local/mailman/venv/bin/gunicorn -c
> /etc/mailman3/gunicorn.conf mailman_web.wsgi:application
> mailman 1411607 0.0 0.0 44244 32412 ? S 10:44 0:00
> /local/mailman/venv/bin/python /local/mailman/venv/bin/gunicorn -c
> /etc/mailman3/gunicorn.conf mailman_web.wsgi:application
> mailman 1411671 1.0 0.2 98584 83004 ? Ss 10:45 0:01
> /local/mailman/venv/bin/python /local/mailman/venv/bin/master -C
> /etc/mailman3/mailman.cfg
> mailman 1411681 1.0 0.2 98392 82504 ? S 10:45 0:01
> /local/mailman/venv/bin/python /local/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=archive:0:1
> mailman 1411682 97.7 10.1 3396160 3346868 ? R 10:45 1:58
> /local/mailman/venv/bin/python /local/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=bounces:0:1
> mailman 1411683 1.0 0.2 98588 82816 ? S 10:45 0:01
> /local/mailman/venv/bin/python /local/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=command:0:1
> mailman 1411684 1.0 0.2 98580 82904 ? S 10:45 0:01
> /local/mailman/venv/bin/python /local/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=in:0:1
> mailman 1411685 1.0 0.2 172312 82772 ? Sl 10:45 0:01
> /local/mailman/venv/bin/python /local/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=lmtp:0:1
> mailman 1411686 1.1 0.2 98588 82652 ? S 10:45 0:01
> /local/mailman/venv/bin/python /local/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=nntp:0:1
> mailman 1411687 1.1 0.2 98608 83016 ? S 10:45 0:01
> /local/mailman/venv/bin/python /local/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=out:0:1
> mailman 1411688 1.0 0.2 98584 82936 ? S 10:45 0:01
> /local/mailman/venv/bin/python /local/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=pipeline:0:1
> mailman 1411689 1.1 0.2 107040 90972 ? S 10:45 0:01
> /local/mailman/venv/bin/python /local/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=rest:0:1
> mailman 1411690 1.0 0.2 98592 82784 ? S 10:45 0:01
> /local/mailman/venv/bin/python /local/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=retry:0:1
> mailman 1411691 41.3 0.5 187380 171012 ? S 10:45 0:50
> /local/mailman/venv/bin/python /local/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=task:0:1
> mailman 1411692 1.0 0.2 98472 83028 ? S 10:45 0:01
> /local/mailman/venv/bin/python /local/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=virgin:0:1
> mailman 1411693 1.0 0.2 98448 82608 ? S 10:45 0:01
> /local/mailman/venv/bin/python /local/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=digest:0:1
> mailman 1411705 0.0 0.2 107040 75968 ? S 10:45 0:00
> /local/mailman/venv/bin/python /local/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=rest:0:1
> mailman 1411709 0.0 0.2 107040 75968 ? S 10:45 0:00
> /local/mailman/venv/bin/python /local/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=rest:0:1
> mailman 1413629 0.0 0.0 17644 8812 ? Rs 10:47 0:00
> /local/mailman/venv/bin/python /local/mailman/venv/bin/mailman start
>
> Best Regards,
> Helio Loureiro
> http://helio.loureiro.eng.br
> https://github.com/helioloureiro
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> Archived at:
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
>
> This message sent to jered(a)convivian.com
2 years, 2 months
[MM3-users] Re: Huge performance issue: Mailman doesn't (seem to) receive any mails.
by Mark Sapiro
On 9/20/19 5:39 AM, Henrik Rasmussen wrote:
> I know this is quite long (sorry), but I hope this part of the mailman.log may provide some clue to what went wrong.
It doesn't.
> As mentioned, Mailman stopped receiving mails some days ago and I have been restarting Mailman (without solving anything) at Sep 18 13:30:03 2019. On Sep 20 07:05:23 2019 everything started working again by itself.
>
> / Henrik Rasmussen
>
I'm snipping a bunch of irrelevant stuff having to do with web
interactions, etc.
> Sep 20 06:42:22 2019 (35) HOLD: listname(a)lists.example.com post from someone(a)foo.bar held, message-id=<4E8DB72B-66D9-456E-B51C-2A49423CF29F(a)foo.bar>: The message comes from a moderated member
> Sep 20 06:42:23 2019 (35) ACCEPT: <CALcvC6H5ko14LT8F_z_nbddp0DmDgfb-Rt32s+0TbpPrY3BL_g(a)mail.foo.bar>
There are lots of these indicating messages have been received via LMTP
and passed to Core.
> Sep 20 06:42:48 2019 (35) ACCEPT: <CAG3z+4+67M9jAjbVtSqUdUCU6cS1dOYBsmMTAdePL3+O+Nn+sQ(a)mail.foo.bar>
> Sep 20 06:42:56 2019 (32) Exception in the HyperKitty archiver: 'url'
> Sep 20 06:42:56 2019 (32) Traceback (most recent call last):
> File "/usr/local/lib/python3.6/site-packages/mailman_hyperkitty/__init__.py", line 154, in _archive_message
> url = self._send_message(mlist, msg)
> File "/usr/local/lib/python3.6/site-packages/mailman_hyperkitty/__init__.py", line 217, in _send_message
> archived_url = result["url"]
> KeyError: 'url'
> Sep 20 06:42:57 2019 (32) Exception in the HyperKitty archiver: 'url'
> Sep 20 06:42:57 2019 (32) Traceback (most recent call last):
> File "/usr/local/lib/python3.6/site-packages/mailman_hyperkitty/__init__.py", line 154, in _archive_message
> url = self._send_message(mlist, msg)
> File "/usr/local/lib/python3.6/site-packages/mailman_hyperkitty/__init__.py", line 217, in _send_message
> archived_url = result["url"]
> KeyError: 'url'
> Sep 20 06:42:57 2019 (32) HyperKitty failure on http://mailman-web:8000/hyperkitty/api/mailman/archive:
>
> <!DOCTYPE html>
> <html lang="en">
> <head>
> <meta charset="UTF-8">
> <meta http-equiv="X-UA-Compatible" content="IE=edge">
> <meta name="viewport" content="width=device-width, initial-scale=1">
> <title>Server Error</title>
> <link rel="shortcut icon" href="/static/postorius/img/favicon.ico">
> <link rel="stylesheet" href="/static/postorius/libs/bootstrap/css/bootstrap.min.css">
> <link rel="stylesheet" href="/static/django-mailman3/css/main.css">
> <link rel="stylesheet" href="/static/postorius/css/style.css">
>
> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
> <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
> <!--[if lt IE 9]>
> <script src="/static/postorius/libs/html5shiv/html5shiv.min.js"></script>
> <script src="/static/postorius/libs/respond/respond.min.js"></script>
> <![endif]-->
> </head>
> <body>
> <div class="container">
> <h1>Server error</h1>
> <div class="alert alert-danger">An error occurred while processing your request.</div>
> </div>
> </body>
> </html>
> (500)
> Sep 20 06:42:57 2019 (32) Exception in the HyperKitty archiver:
>
> <!DOCTYPE html>
> <html lang="en">
> <head>
> <meta charset="UTF-8">
> <meta http-equiv="X-UA-Compatible" content="IE=edge">
> <meta name="viewport" content="width=device-width, initial-scale=1">
> <title>Server Error</title>
> <link rel="shortcut icon" href="/static/postorius/img/favicon.ico">
> <link rel="stylesheet" href="/static/postorius/libs/bootstrap/css/bootstrap.min.css">
> <link rel="stylesheet" href="/static/django-mailman3/css/main.css">
> <link rel="stylesheet" href="/static/postorius/css/style.css">
>
> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
> <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
> <!--[if lt IE 9]>
> <script src="/static/postorius/libs/html5shiv/html5shiv.min.js"></script>
> <script src="/static/postorius/libs/respond/respond.min.js"></script>
> <![endif]-->
> </head>
> <body>
> <div class="container">
> <h1>Server error</h1>
> <div class="alert alert-danger">An error occurred while processing your request.</div>
> </div>
> </body>
> </html>
> Sep 20 06:42:57 2019 (32) Traceback (most recent call last):
> File "/usr/local/lib/python3.6/site-packages/mailman_hyperkitty/__init__.py", line 154, in _archive_message
> url = self._send_message(mlist, msg)
> File "/usr/local/lib/python3.6/site-packages/mailman_hyperkitty/__init__.py", line 210, in _send_message
> raise ValueError(result.text)
> ValueError:
>
> <!DOCTYPE html>
> <html lang="en">
> <head>
> <meta charset="UTF-8">
> <meta http-equiv="X-UA-Compatible" content="IE=edge">
> <meta name="viewport" content="width=device-width, initial-scale=1">
> <title>Server Error</title>
> <link rel="shortcut icon" href="/static/postorius/img/favicon.ico">
> <link rel="stylesheet" href="/static/postorius/libs/bootstrap/css/bootstrap.min.css">
> <link rel="stylesheet" href="/static/django-mailman3/css/main.css">
> <link rel="stylesheet" href="/static/postorius/css/style.css">
>
> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
> <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
> <!--[if lt IE 9]>
> <script src="/static/postorius/libs/html5shiv/html5shiv.min.js"></script>
> <script src="/static/postorius/libs/respond/respond.min.js"></script>
> <![endif]-->
> </head>
> <body>
> <div class="container">
> <h1>Server error</h1>
> <div class="alert alert-danger">An error occurred while processing your request.</div>
> </div>
> </body>
> </html>
>
> Sep 20 06:42:57 2019 (32) HyperKitty failure on http://mailman-web:8000/hyperkitty/api/mailman/archive:
>
> <!DOCTYPE html>
> <html lang="en">
> <head>
> <meta charset="UTF-8">
> <meta http-equiv="X-UA-Compatible" content="IE=edge">
> <meta name="viewport" content="width=device-width, initial-scale=1">
> <title>Server Error</title>
> <link rel="shortcut icon" href="/static/postorius/img/favicon.ico">
> <link rel="stylesheet" href="/static/postorius/libs/bootstrap/css/bootstrap.min.css">
> <link rel="stylesheet" href="/static/django-mailman3/css/main.css">
> <link rel="stylesheet" href="/static/postorius/css/style.css">
>
> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
> <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
> <!--[if lt IE 9]>
> <script src="/static/postorius/libs/html5shiv/html5shiv.min.js"></script>
> <script src="/static/postorius/libs/respond/respond.min.js"></script>
> <![endif]-->
> </head>
> <body>
> <div class="container">
> <h1>Server error</h1>
> <div class="alert alert-danger">An error occurred while processing your request.</div>
> </div>
> </body>
> </html>
> (500)
> Sep 20 06:42:57 2019 (32) Exception in the HyperKitty archiver:
>
> <!DOCTYPE html>
> <html lang="en">
> <head>
> <meta charset="UTF-8">
> <meta http-equiv="X-UA-Compatible" content="IE=edge">
> <meta name="viewport" content="width=device-width, initial-scale=1">
> <title>Server Error</title>
> <link rel="shortcut icon" href="/static/postorius/img/favicon.ico">
> <link rel="stylesheet" href="/static/postorius/libs/bootstrap/css/bootstrap.min.css">
> <link rel="stylesheet" href="/static/django-mailman3/css/main.css">
> <link rel="stylesheet" href="/static/postorius/css/style.css">
>
> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
> <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
> <!--[if lt IE 9]>
> <script src="/static/postorius/libs/html5shiv/html5shiv.min.js"></script>
> <script src="/static/postorius/libs/respond/respond.min.js"></script>
> <![endif]-->
> </head>
> <body>
> <div class="container">
> <h1>Server error</h1>
> <div class="alert alert-danger">An error occurred while processing your request.</div>
> </div>
> </body>
> </html>
> Sep 20 06:42:57 2019 (32) Traceback (most recent call last):
> File "/usr/local/lib/python3.6/site-packages/mailman_hyperkitty/__init__.py", line 154, in _archive_message
> url = self._send_message(mlist, msg)
> File "/usr/local/lib/python3.6/site-packages/mailman_hyperkitty/__init__.py", line 210, in _send_message
> raise ValueError(result.text)
> ValueError:
>
> <!DOCTYPE html>
> <html lang="en">
> <head>
> <meta charset="UTF-8">
> <meta http-equiv="X-UA-Compatible" content="IE=edge">
> <meta name="viewport" content="width=device-width, initial-scale=1">
> <title>Server Error</title>
> <link rel="shortcut icon" href="/static/postorius/img/favicon.ico">
> <link rel="stylesheet" href="/static/postorius/libs/bootstrap/css/bootstrap.min.css">
> <link rel="stylesheet" href="/static/django-mailman3/css/main.css">
> <link rel="stylesheet" href="/static/postorius/css/style.css">
>
> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
> <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
> <!--[if lt IE 9]>
> <script src="/static/postorius/libs/html5shiv/html5shiv.min.js"></script>
> <script src="/static/postorius/libs/respond/respond.min.js"></script>
> <![endif]-->
> </head>
> <body>
> <div class="container">
> <h1>Server error</h1>
> <div class="alert alert-danger">An error occurred while processing your request.</div>
> </div>
> </body>
> </html>
>
> Sep 20 06:42:57 2019 (32) Exception in the HyperKitty archiver: 'url'
> Sep 20 06:42:57 2019 (32) Traceback (most recent call last):
> File "/usr/local/lib/python3.6/site-packages/mailman_hyperkitty/__init__.py", line 154, in _archive_message
> url = self._send_message(mlist, msg)
> File "/usr/local/lib/python3.6/site-packages/mailman_hyperkitty/__init__.py", line 217, in _send_message
> archived_url = result["url"]
> KeyError: 'url'
> Sep 20 06:42:57 2019 (32) Exception in the HyperKitty archiver: 'url'
> Sep 20 06:42:57 2019 (32) Traceback (most recent call last):
> File "/usr/local/lib/python3.6/site-packages/mailman_hyperkitty/__init__.py", line 154, in _archive_message
> url = self._send_message(mlist, msg)
> File "/usr/local/lib/python3.6/site-packages/mailman_hyperkitty/__init__.py", line 217, in _send_message
> archived_url = result["url"]
> KeyError: 'url'
There are lots of the above errors/tracebacks. They are a problem, but
not specifically the one affecting Postfix delivery.
There are two different tracebacks. The ValueError is because the
mailman_hyperkitty shim has called Hyperkitty via
http://mailman-web:8000/hyperkitty/api/mailman/archive to archive the
message and HyperKitty returned a 500 status with the HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Server Error</title>
<link rel="shortcut icon" href="/static/postorius/img/favicon.ico">
<link rel="stylesheet"
href="/static/postorius/libs/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="/static/django-mailman3/css/main.css">
<link rel="stylesheet" href="/static/postorius/css/style.css">
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and
media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via
file:// -->
<!--[if lt IE 9]>
<script
src="/static/postorius/libs/html5shiv/html5shiv.min.js"></script>
<script src="/static/postorius/libs/respond/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="container">
<h1>Server error</h1>
<div class="alert alert-danger">An error occurred while processing
your request.</div>
</div>
</body>
</html>
Then the KeyError occurs because the response did not include the URL of
the archived message.
When this occurs, mailman_hyperkitty retries the message until it succeeds.
For more information on the HyperKitty issue, look in the Django log
whose path is defined in LOGGING['handlers']['file']['filename'] in the
Django settings.
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
6 years, 5 months
[MM3-users] Re: Held messages not delivered after approval
by Krinetzki, Stephan
Hi Mark, Hi Stephen,
so I updated now my configuration a bit. The logging is now default:
[logging.archiver] datefmt: %b %d %H:%M:%S %Y
[logging.archiver] format: %(asctime)s (%(process)d) %(message)s
[logging.archiver] level: info
[logging.archiver] path: mailman.log
[logging.archiver] propagate: no
[logging.bounce] datefmt: %b %d %H:%M:%S %Y
[logging.bounce] format: %(asctime)s (%(process)d) %(message)s
[logging.bounce] level: info
[logging.bounce] path: bounce.log
[logging.bounce] propagate: no
[logging.config] datefmt: %b %d %H:%M:%S %Y
[logging.config] format: %(asctime)s (%(process)d) %(message)s
[logging.config] level: info
[logging.config] path: mailman.log
[logging.config] propagate: no
[logging.database] datefmt: %b %d %H:%M:%S %Y
[logging.database] format: %(asctime)s (%(process)d) %(message)s
[logging.database] level: warn
[logging.database] path: mailman.log
[logging.database] propagate: no
[logging.debug] datefmt: %b %d %H:%M:%S %Y
[logging.debug] format: %(asctime)s (%(process)d) %(message)s
[logging.debug] level: info
[logging.debug] path: debug.log
[logging.debug] propagate: no
[logging.error] datefmt: %b %d %H:%M:%S %Y
[logging.error] format: %(asctime)s (%(process)d) %(message)s
[logging.error] level: info
[logging.error] path: mailman.log
[logging.error] propagate: no
[logging.fromusenet] datefmt: %b %d %H:%M:%S %Y
[logging.fromusenet] format: %(asctime)s (%(process)d) %(message)s
[logging.fromusenet] level: info
[logging.fromusenet] path: mailman.log
[logging.fromusenet] propagate: no
[logging.gunicorn] datefmt: %b %d %H:%M:%S %Y
[logging.gunicorn] format: %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s"
[logging.gunicorn] level: info
[logging.gunicorn] path: mailman.log
[logging.gunicorn] propagate: no
[logging.http] datefmt: %b %d %H:%M:%S %Y
[logging.http] format: %(asctime)s (%(process)d) %(message)s
[logging.http] level: info
[logging.http] path: mailman.log
[logging.http] propagate: no
[logging.locks] datefmt: %b %d %H:%M:%S %Y
[logging.locks] format: %(asctime)s (%(process)d) %(message)s
[logging.locks] level: info
[logging.locks] path: mailman.log
[logging.locks] propagate: no
[logging.mischief] datefmt: %b %d %H:%M:%S %Y
[logging.mischief] format: %(asctime)s (%(process)d) %(message)s
[logging.mischief] level: info
[logging.mischief] path: mailman.log
[logging.mischief] propagate: no
[logging.plugins] datefmt: %b %d %H:%M:%S %Y
[logging.plugins] format: %(asctime)s (%(process)d) %(message)s
[logging.plugins] level: info
[logging.plugins] path: plugins.log
[logging.plugins] propagate: no
[logging.root] datefmt: %b %d %H:%M:%S %Y
[logging.root] format: %(asctime)s (%(process)d) %(message)s
[logging.root] level: info
[logging.root] path: mailman.log
[logging.root] propagate: no
[logging.runner] datefmt: %b %d %H:%M:%S %Y
[logging.runner] format: %(asctime)s (%(process)d) %(message)s
[logging.runner] level: info
[logging.runner] path: mailman.log
[logging.runner] propagate: no
[logging.smtp] datefmt: %b %d %H:%M:%S %Y
[logging.smtp] every: $msgid smtp to $listname for $recip recips, completed in $time seconds
[logging.smtp] failure: $msgid delivery to $recip failed with code $smtpcode, $smtpmsg
[logging.smtp] format: %(asctime)s (%(process)d) %(message)s
[logging.smtp] level: info
[logging.smtp] path: smtp.log
[logging.smtp] propagate: no
[logging.smtp] refused: $msgid post to $listname from $sender, $size bytes, $refused failures
[logging.smtp] success: $msgid post to $listname from $sender, $size bytes
[logging.subscribe] datefmt: %b %d %H:%M:%S %Y
[logging.subscribe] format: %(asctime)s (%(process)d) %(message)s
[logging.subscribe] level: info
[logging.subscribe] path: mailman.log
[logging.subscribe] propagate: no
[logging.task] datefmt: %b %d %H:%M:%S %Y
[logging.task] format: %(asctime)s (%(process)d) %(message)s
[logging.task] level: info
[logging.task] path: mailman.log
[logging.task] propagate: no
[logging.vette] datefmt: %b %d %H:%M:%S %Y
[logging.vette] format: %(asctime)s (%(process)d) %(message)s
[logging.vette] level: info
[logging.vette] path: mailman.log
[logging.vette] propagate: no
Further, I edited the logrotate:
/var/log/mailman/mailman-logs/*.log {
missingok
daily
compress
delaycompress
nomail
notifempty
rotate 14
dateext
su mailman mailman
olddir /var/log/mailman/mailman-logs/oldlogs
postrotate
/bin/kill -HUP `cat /opt/mailman/var/master.pid 2>/dev/null` 2>/dev/null || true
# Don't run "mailman3 reopen" with SELinux on here in the logrotate
# context, it will be blocked
/opt/mailman/mailman-venv/bin/mailman reopen >/dev/null 2>&1 || true
endscript
}
It is now more like the Fedora one and seems to be better.
Now in the mailman.log I see the HOLD messages and the approved messages. The smtp.log logs just the incoming Mail, which seems to be fine.
So, here a complete Trace:
smtp.log:
Aug 05 10:18:40 2025 (217984) Available AUTH mechanisms: LOGIN(builtin) PLAIN(builtin)
Aug 05 10:18:40 2025 (217984) Peer: ('127.0.0.1', 57074)
Aug 05 10:18:40 2025 (217984) ('127.0.0.1', 57074) handling connection
Aug 05 10:18:40 2025 (217984) ('127.0.0.1', 57074) >> b'LHLO lists.rwth-aachen.de'
Aug 05 10:18:40 2025 (217984) ('127.0.0.1', 57074) >> b'MAIL FROM:<SENDER> SIZE=15187'
Aug 05 10:18:40 2025 (217984) ('127.0.0.1', 57074) sender: SENDER
Aug 05 10:18:40 2025 (217984) ('127.0.0.1', 57074) >> b'RCPT TO:<stephansmodliste(a)lists.example.com>'
Aug 05 10:18:40 2025 (217984) ('127.0.0.1', 57074) recip: stephansmodliste(a)lists.example.com
Aug 05 10:18:40 2025 (217984) ('127.0.0.1', 57074) >> b'DATA'
Aug 05 10:18:40 2025 (217984) ('127.0.0.1', 57074) >> b'QUIT'
Aug 05 10:18:40 2025 (217984) ('127.0.0.1', 57074) connection lost
Aug 05 10:18:40 2025 (217984) ('127.0.0.1', 57074) Connection lost during _handle_client()
The mailman.log:
Aug 05 10:18:40 2025 (217983) HOLD: stephansmodliste(a)lists.example.com post from SENDER held, message-id=<b93e46d8342f42039c99e1d2d036c711@SENDERDOMAIN>: The message is not from a list member
Aug 05 10:21:04 2025 (218015) held message approved, message-id: <b93e46d8342f42039c99e1d2d036c711@SENDERDOMAIN>
[05/Aug/2025:10:21:04 +0200] "POST /3.1/lists/stephansmodliste(a)lists.example.com/held/211056 HTTP/1.1" 204 0 "-" "GNU Mailman REST client v3.3.5"
[05/Aug/2025:10:21:04 +0200] "GET /3.1/lists/stephansmodliste(a)lists.example.com/held?count=0&page=1 HTTP/1.1" 200 90 "-" "GNU Mailman REST client v3.3.5"
[05/Aug/2025:10:21:04 +0200] "GET /3.1/lists/stephansmodliste(a)lists.example.com/held?count=10&page=1 HTTP/1.1" 200 90 "-" "GNU Mailman REST client v3.3.5"
[05/Aug/2025:10:21:04 +0200] "GET /3.1/lists/stephansmodliste(a)lists.example.com/requests/count?token_owner=moderator HTTP/1.1" 200 73 "-" "GNU Mailman REST client v3.3.5"
[05/Aug/2025:10:21:04 +0200] "GET /3.1/lists/stephansmodliste(a)lists.example.com/held/count HTTP/1.1" 200 73 "-" "GNU Mailman REST client v3.3.5"
Aug 05 10:21:05 2025 (217986) Cannot connect to SMTP server localhost on port 25
The last error is a very often in the mailman.log:
Aug 05 09:46:12 2025 (217985) Cannot connect to SMTP server localhost on port 25
Aug 05 09:46:13 2025 (217986) Cannot connect to SMTP server localhost on port 25
Aug 05 09:46:13 2025 (217988) Cannot connect to SMTP server localhost on port 25
Aug 05 09:46:14 2025 (217987) Cannot connect to SMTP server localhost on port 25
Aug 05 09:46:24 2025 (217987) Cannot connect to SMTP server localhost on port 25
Aug 05 09:50:22 2025 (217988) Cannot connect to SMTP server localhost on port 25
Aug 05 09:50:24 2025 (217985) Cannot connect to SMTP server localhost on port 25
Aug 05 09:53:30 2025 (217986) Cannot connect to SMTP server localhost on port 25
Aug 05 09:55:01 2025 (217987) Cannot connect to SMTP server localhost on port 25
Aug 05 09:55:01 2025 (217985) Cannot connect to SMTP server localhost on port 25
Aug 05 09:55:09 2025 (217986) Cannot connect to SMTP server localhost on port 25
Aug 05 09:57:44 2025 (217987) Cannot connect to SMTP server localhost on port 25
Aug 05 09:57:46 2025 (217985) Cannot connect to SMTP server localhost on port 25
Aug 05 09:58:50 2025 (217988) Cannot connect to SMTP server localhost on port 25
Aug 05 09:58:52 2025 (217985) Cannot connect to SMTP server localhost on port 25
Aug 05 09:58:52 2025 (217987) Cannot connect to SMTP server localhost on port 25
Aug 05 09:58:53 2025 (217985) Cannot connect to SMTP server localhost on port 25
Aug 05 09:58:53 2025 (217986) Cannot connect to SMTP server localhost on port 25
Aug 05 09:58:53 2025 (217988) Cannot connect to SMTP server localhost on port 25
Aug 05 10:01:18 2025 (217985) Cannot connect to SMTP server localhost on port 25
Aug 05 10:02:02 2025 (217987) Cannot connect to SMTP server localhost on port 25
Aug 05 10:07:11 2025 (217987) Cannot connect to SMTP server localhost on port 25
Aug 05 10:10:36 2025 (217985) Cannot connect to SMTP server localhost on port 25
Aug 05 10:11:35 2025 (217986) Cannot connect to SMTP server localhost on port 25
Aug 05 10:16:04 2025 (217986) Cannot connect to SMTP server localhost on port 25
Aug 05 10:16:05 2025 (217988) Cannot connect to SMTP server localhost on port 25
Aug 05 10:16:07 2025 (217986) Cannot connect to SMTP server localhost on port 25
Aug 05 10:16:58 2025 (217988) Cannot connect to SMTP server localhost on port 25
Aug 05 10:17:42 2025 (217985) Cannot connect to SMTP server localhost on port 25
Aug 05 10:18:30 2025 (217986) Cannot connect to SMTP server localhost on port 25
Aug 05 10:20:13 2025 (217985) Cannot connect to SMTP server localhost on port 25
Aug 05 10:21:05 2025 (217986) Cannot connect to SMTP server localhost on port 25
Aug 05 10:28:08 2025 (217986) Cannot connect to SMTP server localhost on port 25
Aug 05 10:28:08 2025 (217988) Cannot connect to SMTP server localhost on port 25
Aug 05 10:28:31 2025 (217987) Cannot connect to SMTP server localhost on port 25
Aug 05 10:28:37 2025 (217986) Cannot connect to SMTP server localhost on port 25
Aug 05 10:28:44 2025 (217988) Cannot connect to SMTP server localhost on port 25
Aug 05 10:28:47 2025 (217988) Cannot connect to SMTP server localhost on port 25
Aug 05 10:28:50 2025 (217986) Cannot connect to SMTP server localhost on port 25
Aug 05 10:28:57 2025 (217985) Cannot connect to SMTP server localhost on port 25
Aug 05 10:29:22 2025 (217988) Cannot connect to SMTP server localhost on port 25
Aug 05 10:29:40 2025 (217985) Cannot connect to SMTP server localhost on port 25
Aug 05 10:29:41 2025 (217986) Cannot connect to SMTP server localhost on port 25
Aug 05 10:30:37 2025 (217986) Cannot connect to SMTP server localhost on port 25
Aug 05 10:30:37 2025 (217985) Cannot connect to SMTP server localhost on port 25
Aug 05 10:30:50 2025 (217986) Cannot connect to SMTP server localhost on port 25
Aug 05 10:31:15 2025 (217987) Cannot connect to SMTP server localhost on port 25
Aug 05 10:33:42 2025 (217986) Cannot connect to SMTP server localhost on port 25
Aug 05 10:33:53 2025 (217986) Cannot connect to SMTP server localhost on port 25
Aug 05 10:34:27 2025 (217985) Cannot connect to SMTP server localhost on port 25
Aug 05 10:34:28 2025 (217986) Cannot connect to SMTP server localhost on port 25
Aug 05 10:38:25 2025 (230250) Cannot connect to SMTP server lists.example.com on port 25
Aug 05 10:38:25 2025 (230247) Cannot connect to SMTP server lists.example.com on port 25
Even after changing the smtp_host in mailman.cfg this error appears randomly.
Sadly the mail does not get delivered.
--
Stephan Krinetzki
IT Center
Gruppe: Anwendungsbetrieb und Cloud
Abteilung: Systeme und Betrieb
RWTH Aachen University
Seffenter Weg 23
52074 Aachen
Tel: +49 241 80-24866
Fax: +49 241 80-22134
krinetzki(a)itc.rwth-aachen.de
www.itc.rwth-aachen.de
Social Media Kanäle des IT Centers:
https://blog.rwth-aachen.de/itc/
https://www.facebook.com/itcenterrwth
https://www.linkedin.com/company/itcenterrwth
https://twitter.com/ITCenterRWTH
https://www.youtube.com/channel/UCKKDJJukeRwO0LP-ac8x8rQ
-----Original Message-----
From: Mark Sapiro <mark(a)msapiro.net>
Sent: Tuesday, August 5, 2025 12:51 AM
To: mailman-users(a)mailman3.org
Subject: [MM3-users] Re: Held messages not delivered after approval
On 8/4/25 00:21, Krinetzki, Stephan wrote:
>>
>> And for every one of those shunted messages there should be an exception with traceback logged in mailman.log. Those tracebacks should be helpful.
>
> If there were any. Maybe the "debug" level should be "info". But for which logs?
The standard logging levels from lowest to highest are
debug
info
warning
error
critical
Whatever level is set for a log results in all messages of that level or higher being logged. I.e. if the log's level is debug, all messages for that log of any level should be logged.
For every shunted message, a message like
`SHUNTING: <file name without the .pck extention>` preceded by the exception and traceback is logged to error.log with level error. See
https://gitlab.com/mailman/mailman/-/blob/master/src/mailman/core/runner.py…
> Maybe the restart at night after the lograte maybe the issue.
As I said before, blindly restarting Mailman is a bad idea. On servers that I maintain, I always verify that all queues are empty before stopping or restarting Mailman. If necessary, I'll kill the incoming runner and wait for the out queue to empty and then stop mailman. If you want to do this daily, you could automate that., e.g.
```
if queues empty:
restart Mailman
else:
when in queue is empty, sigterm incoming runner
when out queue is empty, stop Mailman
when Mailman stopped, start Mailman ``` The stop/start is needed because a simple restart at that point won't start the sigtermed incoming runner.
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
_______________________________________________
Mailman-users mailing list -- mailman-users(a)mailman3.org To unsubscribe send an email to mailman-users-leave(a)mailman3.org https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
Archived at: https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
This message sent to krinetzki(a)itc.rwth-aachen.de
7 months
[MM3-users] Re: Reg Archive Inactive Status
by Nirmal J
Hereby I am sharing the full settings.py file.
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
import os
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'change-this-on-your-production-server'
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False
ADMINS = (
('Mailman Suite Admin', 'root@localhost'),
)
SITE_ID = 1
# Hosts/domain names that are valid for this site; required if DEBUG is False
# See https://docs.djangoproject.com/en/1.8/ref/settings/#allowed-hosts
ALLOWED_HOSTS = [
"localhost", # Archiving API from Mailman, keep it.
# "lists.your-domain.org",
# Add here all production URLs you may have.
]
# Mailman API credentials
MAILMAN_REST_API_URL = 'http://localhost:8001'
MAILMAN_REST_API_USER = 'restadmin'
MAILMAN_REST_API_PASS = 'restpass'
MAILMAN_ARCHIVER_KEY = 'SecretArchiverAPIKey'
MAILMAN_ARCHIVER_FROM = ('127.0.0.1', '::1')# Application definition
INSTALLED_APPS = (
'hyperkitty',
'postorius',
'django_mailman3',
# Uncomment the next line to enable the admin:
'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'django_gravatar',
'compressor',
'haystack',
'django_extensions',
'django_q',
'allauth',
'allauth.account',
'allauth.socialaccount',
'django_mailman3.lib.auth.fedora',
# 'allauth.socialaccount.providers.openid',
# 'allauth.socialaccount.providers.github',
# 'allauth.socialaccount.providers.gitlab',
# 'allauth.socialaccount.providers.google',
# 'allauth.socialaccount.providers.facebook',
# 'allauth.socialaccount.providers.twitter',
# 'allauth.socialaccount.providers.stackexchange',
)
MIDDLEWARE = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django_mailman3.middleware.TimezoneMiddleware',
'postorius.middleware.PostoriusMiddleware',
)
ROOT_URLCONF = 'urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.i18n',
'django.template.context_processors.media',
'django.template.context_processors.static',
'django.template.context_processors.tz',
'django.template.context_processors.csrf',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'django_mailman3.context_processors.common',
'hyperkitty.context_processors.common',
'postorius.context_processors.postorius',
],
},
},
]
WSGI_APPLICATION = 'wsgi.application'
# Database
# https://docs.djangoproject.com/en/1.8/ref/settings/#databases
DATABASES = {
'default': {
# Use 'sqlite3', 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'ENGINE': 'django.db.backends.postgresql_psycopg2',
# DB name or path to database file if using sqlite3.
'NAME': 'mailman3web',
# The following settings are not used with sqlite3:
'USER': 'mailmansuite',
'PASSWORD': 'mmpass',
# HOST: empty for localhost through domain sockets or '127.0.0.1' for
# localhost through TCP.
'HOST': '',
# PORT: set to empty string for default.
'PORT': '',
# OPTIONS: for mysql engine only, do not use with other engines.
# 'OPTIONS': {'charset': 'utf8mb4'} # Enable utf8 4-byte encodings.
}
# Example for PostgreSQL (recommanded for production):
#'default': {
# 'ENGINE': 'django.db.backends.postgresql_psycopg2',
# 'NAME': 'database_name',
# 'USER': 'database_user',
# 'PASSWORD': 'database_password',
# 'HOST': 'localhost',
#}
}
# If you're behind a proxy, use the X-Forwarded-Host header
# See https://docs.djangoproject.com/en/1.8/ref/settings/#use-x-forwarded-host
USE_X_FORWARDED_HOST = True
# And if your proxy does your SSL encoding for you, set SECURE_PROXY_SSL_HEADER
# https://docs.djangoproject.com/en/1.8/ref/settings/#secure-proxy-ssl-header
# SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
# SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_SCHEME', 'https')
# Other security settings
# SECURE_SSL_REDIRECT = True
# If you set SECURE_SSL_REDIRECT to True, make sure the SECURE_REDIRECT_EXEMPT
# contains at least this line:
# SECURE_REDIRECT_EXEMPT = [
# "archives/api/mailman/.*", # Request from Mailman.
# ]# SESSION_COOKIE_SECURE = True
# SECURE_CONTENT_TYPE_NOSNIFF = True
# SECURE_BROWSER_XSS_FILTER = True
# CSRF_COOKIE_SECURE = True
# CSRF_COOKIE_HTTPONLY = True
# X_FRAME_OPTIONS = 'DENY'
# Password validation
# https://docs.djangoproject.com/en/1.9/ref/settings/#auth-password-validators
AUTH_PASSWORD_VALIDATORS = [
{
'NAME':
'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME':
'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME':
'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME':
'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]# Internationalization
# https://docs.djangoproject.com/en/1.8/topics/i18n/
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.8/howto/static-files/
# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/var/www/example.com/static/"
STATIC_ROOT = '/var/lib/mailman3/web/static'
# URL prefix for static files.
# Example: "http://example.com/static/", "http://static.example.com/"
STATIC_URL = '/mailman3/static/'
# Additional locations of static files
STATICFILES_DIRS = (
# Put strings here, like "/home/html/static" or "C:/www/django/static".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
# BASE_DIR + '/static/',
)
# List of finder classes that know how to find static files in
# various locations.STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
'compressor.finders.CompressorFinder',
)
# Django 1.6+ defaults to a JSON serializer, but it won't work with
# django-openid, see
# https://bugs.launchpad.net/django-openid-auth/+bug/1252826
SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer'
LOGIN_URL = 'account_login'
LOGIN_REDIRECT_URL = 'list_index'
LOGOUT_URL = 'account_logout'
HOSTNAME = 'localhost.local'
# If you enable internal authentication, this is the address that the emails
# will appear to be coming from. Make sure you set a valid domain name,
# otherwise the emails may get rejected.
# https://docs.djangoproject.com/en/1.8/ref/settings/#default-from-email
# DEFAULT_FROM_EMAIL = "mailing-lists(a)you-domain.org"
DEFAULT_FROM_EMAIL = 'postorius@{}'.format(HOSTNAME)
# If you enable email reporting for error messages, this is where those emails
# will appear to be coming from. Make sure you set a valid domain name,
# otherwise the emails may get rejected.
# https://docs.djangoproject.com/en/1.8/ref/settings/#std:setting-SERVER_EMAIL
# SERVER_EMAIL = 'root(a)your-domain.org'
SERVER_EMAIL = 'root@{}'.format(HOSTNAME)
# Change this when you have a real email backend
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
# Compatibility with Bootstrap 3
from django.contrib.messages import constants as messages # flake8: noqa
MESSAGE_TAGS = {
messages.ERROR: 'danger'
}
#
# Social auth
#
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
)
# Django Allauth
ACCOUNT_AUTHENTICATION_METHOD = "username_email"
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_EMAIL_VERIFICATION = "mandatory"
# You probably want https in production, but this is a dev setup file
ACCOUNT_DEFAULT_HTTP_PROTOCOL = "https"
ACCOUNT_UNIQUE_EMAIL = True
SOCIALACCOUNT_PROVIDERS = {
#'openid': {
# 'SERVERS': [
# dict(id='yahoo',
# name='Yahoo',
# openid_url='http://me.yahoo.com'),
# ],
#},
#'google': {
# 'SCOPE': ['profile', 'email'],
# 'AUTH_PARAMS': {'access_type': 'online'},
#},
#'facebook': {
# 'METHOD': 'oauth2',
# 'SCOPE': ['email'],
# 'FIELDS': [
# 'email',
# 'name',
# 'first_name',
# 'last_name',
# 'locale',
# 'timezone',
# ],
# 'VERSION': 'v2.4',
#},
}
#
# Gravatar
# https://github.com/twaddington/django-gravatar
#
# Gravatar base url.
# GRAVATAR_URL = 'http://cdn.libravatar.org/'
# Gravatar base secure https url.
# GRAVATAR_SECURE_URL = 'https://seccdn.libravatar.org/'
# Gravatar size in pixels.
# GRAVATAR_DEFAULT_SIZE = '80'
# An image url or one of the following: 'mm', 'identicon', 'monsterid',
# 'wavatar', 'retro'.
# GRAVATAR_DEFAULT_IMAGE = 'mm'
# One of the following: 'g', 'pg', 'r', 'x'.
# GRAVATAR_DEFAULT_RATING = 'g'
# True to use https by default, False for plain http.
# GRAVATAR_DEFAULT_SECURE = True
#
# django-compressor
# https://pypi.python.org/pypi/django_compressor
#
#COMPRESS_PRECOMPILERS = (
# ('text/less', 'lessc {infile} {outfile}'),
# ('text/x-scss', 'sassc -t compressed {infile} {outfile}'),
# ('text/x-sass', 'sassc -t compressed {infile} {outfile}'),
#)
# On a production setup, setting COMPRESS_OFFLINE to True will bring a
# significant performance improvement, as CSS files will not need to be
# recompiled on each requests. It means running an additional "compress"
# management command after each code upgrade.
# http://django-compressor.readthedocs.io/en/latest/usage/#offline-compression
# COMPRESS_OFFLINE = True
# Needed for debug mode
# INTERNAL_IPS = ('127.0.0.1',)
#
# Full-text search engine
#HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine',
'PATH': '/var/lib/mailman3/web/fulltext_index',
# You can also use the Xapian engine, it's faster and more accurate,
# but requires another library.
# http://django-haystack.readthedocs.io/en/v2.4.1/installing_search_engines.h…
# Example configuration for Xapian:
#'ENGINE': 'xapian_backend.XapianEngine'
},
}
#
# Asynchronous tasks
#
Q_CLUSTER = {
'timeout': 300,
'save_limit': 100,
'orm': 'default',
'poll': 5,
}# A sample logging configuration. The only tangible logging
# performed by this configuration is to send an email to
# the site admins on every HTTP 500 error when DEBUG=False.
# See http://docs.djangoproject.com/en/dev/topics/logging for
# more details on how to customize your logging configuration.
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse'
}
},
'handlers': {
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'django.utils.log.AdminEmailHandler'
},
'file':{
'level': 'INFO',
'class': 'logging.handlers.RotatingFileHandler',
#'class': 'logging.handlers.WatchedFileHandler',
'filename': '/var/log/mailman3/web/mailman-web.log',
'formatter': 'verbose',
},
'console': {
'class': 'logging.StreamHandler',
'formatter': 'simple',
},
},
'loggers': {
'django.request': {
'handlers': ['mail_admins', 'file'],
'level': 'INFO',
'propagate': True,
},
'django': {
'handlers': ['file'],
'level': 'INFO',
'propagate': True, },
'hyperkitty': {
'handlers': ['file'],
'level': 'INFO',
'propagate': True,
},
'postorius': {
'handlers': ['file'],
'level': 'INFO',
'propagate': True,
},
},
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(process)d %(name)s %(message)s'
},
'simple': {
'format': '%(levelname)s %(message)s'
},
},
#'root': {
# 'handlers': ['file'],
# 'level': 'INFO',
#},
}
if DEBUG == True:
EMAIL_BACKEND = 'django.core.mail.backends.filebased.EmailBackend'
EMAIL_FILE_PATH = os.path.join(BASE_DIR, 'emails')
#
# HyperKitty-specific
#
# Only display mailing-lists from the same virtual host as the webserver
FILTER_VHOST = False
POSTORIUS_TEMPLATE_BASE_URL = 'http://localhost:8000'
try:
from settings_local import *
except ImportError:
pass
-----Original Message-----
From: Stephen <steve(a)turnbull.jp>
To: nirmal <nirmal(a)iitm.ac.in>
Cc: mailman-users <mailman-users(a)mailman3.org>
Date: Friday, 26 September 2025 1:15 PM IST
Subject: [MM3-users] Reg Archive Inactive Status
nirmal--- via Mailman-users writes:
> > Sep 24 10:45:43 2025 (187698) HyperKitty failure on
> > http://list1.iitm.ac.in/hyperkitty/api/mailman/urls:
> > <html><title>Forbidden</title><body>
> > <h1>Access is forbidden</h1><p>Please check the IP addresses
> > assigned to MAILMAN_ARCHIVER_FROM in the settings file.
> > </p></body></html>
> > (403)
> You need to ensure the IP address of list1.iitm.ac.in is in the
> MAILMAN_ARCHIVER_FROM list in your Django settings.
>
> I have also ensured that the IP Address of list1.iitm.ac.in is in
> the Mailman_Archiver_From List in settings. But still not
> working. Please help.
Please be more specific than "not working", as much as possible. In
this case, copy the setting from your settings.py file and paste it in
the email. Always describe the error message. If it's identical to
the previous one except for the timestamp and server process, just
saying "error message is the same" is OK. If it's not, any small
difference could be a clue, and you should copy and paste it.
Check the syntax of the assignment to MAILMAN_ARCHIVER_FROM in
settings.py. The variable name must be all uppercase. The assignment
must use '-', and the value should be a Python sequence[1] of strings,
like this:
MAILMAN_ARCHIVER_FROM = ('127.0.0.1', '::1')
Even if there is only one IP, I suspect the parentheses are required,
and the single entry *must* be followed by a comma, like this:
MAILMAN_ARCHIVER_FROM = ('127.0.0.1',)
If your setting is correct, check your webserver's (Apache, nginx,
etc) configuration for access restrictions. Many Mailman installation
guides assume localhost and provide examples restricting access to
localhost.
Finally, if no configured access restriction applies, there should be
a corresponding entry in the webserver's access log. Check that the
source IP is what you expect.
Footnotes:
[1] If you are an experienced Python programmer, I believe you can
use any sequence syntax you are comfortable with. Tuples will
definitely work because that's the test configuration we use. :-)
--
GNU Mailman consultant (installation, migration, customization)
Sirius Open Source https://www.siriusopensource.com/
Software systems consulting in Europe, North America, and Japan
5 months, 1 week
[MM3-users] Hacking attempts?
by Lists
Hi,
We are seeing thousands of these emails every day, looks like someone is trying to hack our Mailman3 but would appreciate someone with more knowledge of MM3 to confirm.
Is this a problem with our setup? i.e. the “Internal Server Error” bit, or are the hackers just sending bad data that is causing the error? also how do we stop/block this?
TIA and here is a typical email:
Subject: [Django] ERROR (EXTERNAL IP): Internal Server Error: /mailman3/accounts/fedora/login/
Internal Server Error: /mailman3/accounts/fedora/login/
TypeError at /accounts/fedora/login/
_openid_consumer() missing 2 required positional arguments: 'provider' and 'endpoint'
Request Method: GET
Request URL: https://mailman.ardc.net/mailman3/accounts/fedora/login/?process=login&next… <https://mailman.ardc.net/mailman3/accounts/fedora/login/?process=login&next…>
Django Version: 2.2.26
Python Executable: /usr/bin/uwsgi-core
Python Version: 3.9.2
Python Path: ['.', '', '/usr/lib/python39.zip', '/usr/lib/python3.9', '/usr/lib/python3.9/lib-dynload', '/usr/local/lib/python3.9/dist-packages', '/usr/lib/python3/dist-packages', '/usr/lib/python3.9/dist-packages']
Server time: Thu, 14 Jul 2022 02:34:04 -0400
Installed Applications:
('hyperkitty',
'postorius',
'django_mailman3',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'django_gravatar',
'compressor',
'haystack',
'django_extensions',
'django_q',
'allauth',
'allauth.account',
'allauth.socialaccount',
'django_mailman3.lib.auth.fedora')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django_mailman3.middleware.TimezoneMiddleware',
'postorius.middleware.PostoriusMiddleware')
Traceback:
File "/usr/lib/python3/dist-packages/django/core/handlers/exception.py" in inner
34. response = get_response(request)
File "/usr/lib/python3/dist-packages/django/core/handlers/base.py" in _get_response
115. response = self.process_exception_by_middleware(e, request)
File "/usr/lib/python3/dist-packages/django/core/handlers/base.py" in _get_response
113. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/python3/dist-packages/django/views/generic/base.py" in view
71. return self.dispatch(request, *args, **kwargs)
File "/usr/lib/python3/dist-packages/django/views/generic/base.py" in dispatch
97. return handler(request, *args, **kwargs)
File "/usr/lib/python3/dist-packages/django_mailman3/lib/auth/fedora/views.py" in get
56. return self.post(request, *args, **kwargs)
File "/usr/lib/python3/dist-packages/django_mailman3/lib/auth/fedora/views.py" in post
67. client = _openid_consumer(request)
Exception Type: TypeError at /accounts/fedora/login/
Exception Value: _openid_consumer() missing 2 required positional arguments: 'provider' and 'endpoint'
Request information:
USER: AnonymousUser
GET:
process = 'login'
next = '/mailman3/hyperkitty/list/44net(a)mailman.ampr.org <mailto:mailman3/hyperkitty/list/44net@mailman.ampr.org>/message/O5Z2YZBJZXFPH2ACAORN6BST7B2S3M3P/'
POST: No POST data
FILES: No FILES data
COOKIES: No cookie data
META:
CONTEXT_DOCUMENT_ROOT = '/var/www/html'
CONTEXT_PREFIX = ''
DOCUMENT_ROOT = '/var/www/html'
GATEWAY_INTERFACE = 'CGI/1.1'
HTTPS = 'on'
HTTP_ACCEPT = 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
HTTP_ACCEPT_ENCODING = 'gzip,deflate'
HTTP_CONNECTION = 'Keep-Alive'
HTTP_HOST = 'mailman.ardc.net <http://mailman.ardc.net/>'
HTTP_USER_AGENT = 'Mozilla/5.0 (compatible; BLEXBot/1.0; +http://webmeup-crawler.com/ <http://webmeup-crawler.com/>)'
PATH = '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
PATH_INFO = '/accounts/fedora/login/'
QUERY_STRING = 'process=login&next=/mailman3/hyperkitty/list/44net(a)mailman.ampr.org <mailto:process=login&next=/mailman3/hyperkitty/list/44net@mailman.ampr.org>/message/O5Z2YZBJZXFPH2ACAORN6BST7B2S3M3P/'
REMOTE_ADDR = '157.90.177.212'
REMOTE_PORT = '63384'
REQUEST_METHOD = 'GET'
REQUEST_SCHEME = 'https'
REQUEST_URI = '/mailman3/accounts/fedora/login/?process=login&next=/mailman3/hyperkitty/list/44net(a)mailman.ampr.org <mailto:mailman3/accounts/fedora/login/?process=login&next=/mailman3/hyperkitty/list/44net@mailman.ampr.org>/message/O5Z2YZBJZXFPH2ACAORN6BST7B2S3M3P/'
SCRIPT_FILENAME = 'proxy:uwsgi://localhost//accounts/fedora/login/' <uwsgi://localhost//accounts/fedora/login/'>
SCRIPT_NAME = '/mailman3'
SERVER_ADDR = '44.1.1.29'
SERVER_ADMIN = 'postmaster(a)ardc.net <mailto:postmaster@ardc.net>'
SERVER_NAME = 'mailman.ardc.net <http://mailman.ardc.net/>'
SERVER_PORT = '443'
SERVER_PROTOCOL = 'HTTP/1.1'
SERVER_SIGNATURE = '<address>Apache/2.4.53 (Debian) Server at mailman.ardc.net <http://mailman.ardc.net/> Port 443</address>\n'
SERVER_SOFTWARE = 'Apache/2.4.53 (Debian)'
SSL_TLS_SNI = 'mailman.ardc.net <http://mailman.ardc.net/>'
uwsgi.core = 1
uwsgi.node = b'mailman'
uwsgi.version = b'2.0.19.1-debian'
wsgi.errors = <_io.TextIOWrapper name=2 mode='w' encoding='UTF-8'>
wsgi.file_wrapper = ''
wsgi.input = <uwsgi._Input object at 0x7f8e0b4a0410>
wsgi.multiprocess = False
wsgi.multithread = True
wsgi.run_once = False
wsgi.url_scheme = 'https'
wsgi.version = '(1, 0)'
Settings:
Using settings module settings
ABSOLUTE_URL_OVERRIDES = {}
ACCOUNT_AUTHENTICATION_METHOD = 'username_email'
ACCOUNT_DEFAULT_HTTP_PROTOCOL = 'https'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
ACCOUNT_UNIQUE_EMAIL = True
ADMINS = "(('Mailman Suite Admin', 'postmaster(a)ardc.net <mailto:postmaster@ardc.net>'),)"
ALLOWED_HOSTS = ['*']
APPEND_SLASH = True
AUTHENTICATION_BACKENDS = "('django.contrib.auth.backends.ModelBackend', 'allauth.account.auth_backends.AuthenticationBackend')"
AUTH_PASSWORD_VALIDATORS = '********************'
AUTH_USER_MODEL = 'auth.User'
BASE_DIR = '/usr/share/mailman3-web'
CACHES = {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}}
CACHE_MIDDLEWARE_ALIAS = 'default'
CACHE_MIDDLEWARE_KEY_PREFIX = '********************'
CACHE_MIDDLEWARE_SECONDS = 600
COMPRESSORS = {'css': 'compressor.css.CssCompressor', 'js': 'compressor.js.JsCompressor'}
COMPRESS_CACHEABLE_PRECOMPILERS = '()'
COMPRESS_CACHE_BACKEND = 'default'
COMPRESS_CACHE_KEY_FUNCTION = '********************'
COMPRESS_CLEAN_CSS_ARGUMENTS = ''
COMPRESS_CLEAN_CSS_BINARY = 'cleancss'
COMPRESS_CLOSURE_COMPILER_ARGUMENTS = ''
COMPRESS_CLOSURE_COMPILER_BINARY = 'java -jar compiler.jar'
COMPRESS_CSS_HASHING_METHOD = 'mtime'
COMPRESS_DATA_URI_MAX_SIZE = 1024
COMPRESS_DEBUG_TOGGLE = None
COMPRESS_ENABLED = True
COMPRESS_FILTERS = {'css': ['compressor.filters.css_default.CssAbsoluteFilter'], 'js': ['compressor.filters.jsmin.JSMinFilter']}
COMPRESS_JINJA2_GET_ENVIRONMENT = <function CompressorConf.JINJA2_GET_ENVIRONMENT at 0x7f8e17d7a670>
COMPRESS_MINT_DELAY = 30
COMPRESS_MTIME_DELAY = 10
COMPRESS_OFFLINE = True
COMPRESS_OFFLINE_CONTEXT = {'STATIC_URL': '/mailman3/static/'}
COMPRESS_OFFLINE_MANIFEST = 'manifest.json'
COMPRESS_OFFLINE_TIMEOUT = 31536000
COMPRESS_OUTPUT_DIR = 'CACHE'
COMPRESS_PARSER = 'compressor.parser.AutoSelectParser'
COMPRESS_PRECOMPILERS = '()'
COMPRESS_REBUILD_TIMEOUT = 2592000
COMPRESS_ROOT = '/var/lib/mailman3/web/static'
COMPRESS_STORAGE = 'compressor.storage.CompressorFileStorage'
COMPRESS_TEMPLATE_FILTER_CONTEXT = {'STATIC_URL': '/mailman3/static/'}
COMPRESS_URL = '/mailman3/static/'
COMPRESS_URL_PLACEHOLDER = '/__compressor_url_placeholder__/'
COMPRESS_VERBOSE = False
COMPRESS_YUGLIFY_BINARY = 'yuglify'
COMPRESS_YUGLIFY_CSS_ARGUMENTS = '--terminal'
COMPRESS_YUGLIFY_JS_ARGUMENTS = '--terminal'
COMPRESS_YUI_BINARY = 'java -jar yuicompressor.jar'
COMPRESS_YUI_CSS_ARGUMENTS = ''
COMPRESS_YUI_JS_ARGUMENTS = ''
CSRF_COOKIE_AGE = 31449600
CSRF_COOKIE_DOMAIN = None
CSRF_COOKIE_HTTPONLY = False
CSRF_COOKIE_NAME = 'csrftoken'
CSRF_COOKIE_PATH = '/'
CSRF_COOKIE_SAMESITE = 'Lax'
CSRF_COOKIE_SECURE = False
CSRF_FAILURE_VIEW = 'django.views.csrf.csrf_failure'
CSRF_HEADER_NAME = 'HTTP_X_CSRFTOKEN'
CSRF_TRUSTED_ORIGINS = []
CSRF_USE_SESSIONS = False
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql', 'NAME': 'mailman', 'USER': 'mailman', 'PASSWORD': '********************', 'HOST': ‘X.X.X.X', 'PORT': '', 'OPTIONS': {'init_command': "SET sql_mode='STRICT_TRANS_TABLES'", 'charset': 'utf8mb4'}, 'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0, 'TIME_ZONE': None, 'TEST': {'CHARSET': None, 'COLLATION': None, 'NAME': None, 'MIRROR': None}}}
DATABASE_ROUTERS = []
DATA_UPLOAD_MAX_MEMORY_SIZE = 2621440
DATA_UPLOAD_MAX_NUMBER_FIELDS = 1000
DATETIME_FORMAT = 'N j, Y, P'
DATETIME_INPUT_FORMATS = ['%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f', '%Y-%m-%d %H:%M', '%Y-%m-%d', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%Y', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M', '%m/%d/%y']
DATE_FORMAT = 'N j, Y'
DATE_INPUT_FORMATS = ['%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', '%b %d %Y', '%b %d, %Y', '%d %b %Y', '%d %b, %Y', '%B %d %Y', '%B %d, %Y', '%d %B %Y', '%d %B, %Y']
DEBUG = False
DEBUG_PROPAGATE_EXCEPTIONS = False
DECIMAL_SEPARATOR = '.'
DEFAULT_CHARSET = 'utf-8'
DEFAULT_CONTENT_TYPE = 'text/html'
DEFAULT_EXCEPTION_REPORTER_FILTER = 'django.views.debug.SafeExceptionReporterFilter'
DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
DEFAULT_FROM_EMAIL = 'postorius(a)mailman.ardc.net <mailto:postorius@mailman.ardc.net>'
DEFAULT_INDEX_TABLESPACE = ''
DEFAULT_TABLESPACE = ''
DISALLOWED_USER_AGENTS = []
EMAILNAME = 'mailman.ardc.net <http://mailman.ardc.net/>'
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'localhost'
EMAIL_HOST_PASSWORD = '********************'
EMAIL_HOST_USER = ''
EMAIL_PORT = 25
EMAIL_SSL_CERTFILE = None
EMAIL_SSL_KEYFILE = '********************'
EMAIL_SUBJECT_PREFIX = '[Django] '
EMAIL_TIMEOUT = None
EMAIL_USE_LOCALTIME = False
EMAIL_USE_SSL = False
EMAIL_USE_TLS = False
FILE_CHARSET = 'utf-8'
FILE_UPLOAD_DIRECTORY_PERMISSIONS = None
FILE_UPLOAD_HANDLERS = ['django.core.files.uploadhandler.MemoryFileUploadHandler', 'django.core.files.uploadhandler.TemporaryFileUploadHandler']
FILE_UPLOAD_MAX_MEMORY_SIZE = 2621440
FILE_UPLOAD_PERMISSIONS = None
FILE_UPLOAD_TEMP_DIR = None
FILTER_VHOST = False
FIRST_DAY_OF_WEEK = 0
FIXTURE_DIRS = []
FORCE_SCRIPT_NAME = None
FORMAT_MODULE_PATH = None
FORM_RENDERER = 'django.forms.renderers.DjangoTemplates'
HAYSTACK_CONNECTIONS = {'default': {'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine', 'PATH': '/var/lib/mailman3/web/fulltext_index'}}
HOSTNAME = 'localhost.local'
IGNORABLE_404_URLS = []
INSTALLED_APPS = "('hyperkitty', 'postorius', 'django_mailman3', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'django_gravatar', 'compressor', 'haystack', 'django_extensions', 'django_q', 'allauth', 'allauth.account', 'allauth.socialaccount', 'django_mailman3.lib.auth.fedora')"
INTERNAL_IPS = []
LANGUAGES = [('af', 'Afrikaans'), ('ar', 'Arabic'), ('ast', 'Asturian'), ('az', 'Azerbaijani'), ('bg', 'Bulgarian'), ('be', 'Belarusian'), ('bn', 'Bengali'), ('br', 'Breton'), ('bs', 'Bosnian'), ('ca', 'Catalan'), ('cs', 'Czech'), ('cy', 'Welsh'), ('da', 'Danish'), ('de', 'German'), ('dsb', 'Lower Sorbian'), ('el', 'Greek'), ('en', 'English'), ('en-au', 'Australian English'), ('en-gb', 'British English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('es-ar', 'Argentinian Spanish'), ('es-co', 'Colombian Spanish'), ('es-mx', 'Mexican Spanish'), ('es-ni', 'Nicaraguan Spanish'), ('es-ve', 'Venezuelan Spanish'), ('et', 'Estonian'), ('eu', 'Basque'), ('fa', 'Persian'), ('fi', 'Finnish'), ('fr', 'French'), ('fy', 'Frisian'), ('ga', 'Irish'), ('gd', 'Scottish Gaelic'), ('gl', 'Galician'), ('he', 'Hebrew'), ('hi', 'Hindi'), ('hr', 'Croatian'), ('hsb', 'Upper Sorbian'), ('hu', 'Hungarian'), ('hy', 'Armenian'), ('ia', 'Interlingua'), ('id', 'Indonesian'), ('io', 'Ido'), ('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka', 'Georgian'), ('kab', 'Kabyle'), ('kk', 'Kazakh'), ('km', 'Khmer'), ('kn', 'Kannada'), ('ko', 'Korean'), ('lb', 'Luxembourgish'), ('lt', 'Lithuanian'), ('lv', 'Latvian'), ('mk', 'Macedonian'), ('ml', 'Malayalam'), ('mn', 'Mongolian'), ('mr', 'Marathi'), ('my', 'Burmese'), ('nb', 'Norwegian Bokmål'), ('ne', 'Nepali'), ('nl', 'Dutch'), ('nn', 'Norwegian Nynorsk'), ('os', 'Ossetic'), ('pa', 'Punjabi'), ('pl', 'Polish'), ('pt', 'Portuguese'), ('pt-br', 'Brazilian Portuguese'), ('ro', 'Romanian'), ('ru', 'Russian'), ('sk', 'Slovak'), ('sl', 'Slovenian'), ('sq', 'Albanian'), ('sr', 'Serbian'), ('sr-latn', 'Serbian Latin'), ('sv', 'Swedish'), ('sw', 'Swahili'), ('ta', 'Tamil'), ('te', 'Telugu'), ('th', 'Thai'), ('tr', 'Turkish'), ('tt', 'Tatar'), ('udm', 'Udmurt'), ('uk', 'Ukrainian'), ('ur', 'Urdu'), ('vi', 'Vietnamese'), ('zh-hans', 'Simplified Chinese'), ('zh-hant', 'Traditional Chinese')]
LANGUAGES_BIDI = ['he', 'ar', 'fa', 'ur']
LANGUAGE_CODE = 'en-us'
LANGUAGE_COOKIE_AGE = None
LANGUAGE_COOKIE_DOMAIN = None
LANGUAGE_COOKIE_NAME = 'django_language'
LANGUAGE_COOKIE_PATH = '/'
LOCALE_PATHS = []
LOGGING = {'version': 1, 'disable_existing_loggers': False, 'filters': {'require_debug_false': {'()': 'django.utils.log.RequireDebugFalse'}}, 'handlers': {'mail_admins': {'level': 'ERROR', 'filters': ['require_debug_false'], 'class': 'django.utils.log.AdminEmailHandler'}, 'file': {'level': 'INFO', 'class': 'logging.handlers.RotatingFileHandler', 'filename': '/var/log/mailman3/web/mailman-web.log', 'formatter': 'verbose'}, 'console': {'class': 'logging.StreamHandler', 'formatter': 'simple'}}, 'loggers': {'django.request': {'handlers': ['mail_admins', 'file'], 'level': 'INFO', 'propagate': True}, 'django': {'handlers': ['file'], 'level': 'INFO', 'propagate': True}, 'hyperkitty': {'handlers': ['file'], 'level': 'INFO', 'propagate': True}, 'postorius': {'handlers': ['file'], 'level': 'INFO', 'propagate': True}}, 'formatters': {'verbose': {'format': '%(levelname)s %(asctime)s %(process)d %(name)s %(message)s'}, 'simple': {'format': '%(levelname)s %(message)s'}}}
LOGGING_CONFIG = 'logging.config.dictConfig'
LOGIN_REDIRECT_URL = 'list_index'
LOGIN_URL = 'account_login'
LOGOUT_REDIRECT_URL = None
LOGOUT_URL = 'account_logout'
MAILMAN_ARCHIVER_FROM = "('127.0.0.1', '::1', '10.4.16.129', '44.1.1.29')"
MAILMAN_ARCHIVER_KEY = '********************'
MAILMAN_REST_API_PASS = '********************'
MAILMAN_REST_API_URL = '********************'
MAILMAN_REST_API_USER = '********************'
MANAGERS = []
MEDIA_ROOT = ''
MEDIA_URL = ''
MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage'
MESSAGE_TAGS = {40: 'danger'}
MIDDLEWARE = "('django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.security.SecurityMiddleware', 'django_mailman3.middleware.TimezoneMiddleware', 'postorius.middleware.PostoriusMiddleware')"
MIGRATION_MODULES = {}
MONTH_DAY_FORMAT = 'F j'
NUMBER_GROUPING = 0
PASSWORD_HASHERS = '********************'
PASSWORD_RESET_TIMEOUT_DAYS = '********************'
POSTORIUS_TEMPLATE_BASE_URL = 'http://localhost/mailman3/ <http://localhost/mailman3/>'
PREPEND_WWW = False
Q_CLUSTER = {'timeout': 300, 'save_limit': 100, 'orm': 'default', 'poll': 5}
ROOT_URLCONF = 'urls'
SECRET_KEY = '********************'
SECURE_BROWSER_XSS_FILTER = False
SECURE_CONTENT_TYPE_NOSNIFF = False
SECURE_HSTS_INCLUDE_SUBDOMAINS = False
SECURE_HSTS_PRELOAD = False
SECURE_HSTS_SECONDS = 0
SECURE_PROXY_SSL_HEADER = None
SECURE_REDIRECT_EXEMPT = []
SECURE_SSL_HOST = None
SECURE_SSL_REDIRECT = False
SERVER_EMAIL = 'root(a)mailman.ardc.net <mailto:root@mailman.ardc.net>'
SESSION_CACHE_ALIAS = 'default'
SESSION_COOKIE_AGE = 1209600
SESSION_COOKIE_DOMAIN = None
SESSION_COOKIE_HTTPONLY = True
SESSION_COOKIE_NAME = 'sessionid'
SESSION_COOKIE_PATH = '/'
SESSION_COOKIE_SAMESITE = 'Lax'
SESSION_COOKIE_SECURE = False
SESSION_ENGINE = 'django.contrib.sessions.backends.db'
SESSION_EXPIRE_AT_BROWSER_CLOSE = False
SESSION_FILE_PATH = None
SESSION_SAVE_EVERY_REQUEST = False
SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer'
SETTINGS_MODULE = 'settings'
SHORT_DATETIME_FORMAT = 'm/d/Y P'
SHORT_DATE_FORMAT = 'm/d/Y'
SIGNING_BACKEND = 'django.core.signing.TimestampSigner'
SILENCED_SYSTEM_CHECKS = []
SITE_ID = 1
SOCIALACCOUNT_PROVIDERS = {}
STATICFILES_DIRS = '()'
STATICFILES_FINDERS = "('django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder', 'compressor.finders.CompressorFinder')"
STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage'
STATIC_ROOT = '/var/lib/mailman3/web/static'
STATIC_URL = '/mailman3/static/'
TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': {'context_processors': ['django.template.context_processors.debug', 'django.template.context_processors.i18n', 'django.template.context_processors.media', 'django.template.context_processors.static', 'django.template.context_processors.tz', 'django.template.context_processors.csrf', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', 'django_mailman3.context_processors.common', 'hyperkitty.context_processors.common', 'postorius.context_processors.postorius']}}]
TEST_NON_SERIALIZED_APPS = []
TEST_RUNNER = 'django.test.runner.DiscoverRunner'
THOUSAND_SEPARATOR = ','
TIME_FORMAT = 'P'
TIME_INPUT_FORMATS = ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_THOUSAND_SEPARATOR = False
USE_TZ = True
USE_X_FORWARDED_HOST = True
USE_X_FORWARDED_PORT = False
WSGI_APPLICATION = 'wsgi.application'
X_FRAME_OPTIONS = 'SAMEORIGIN'
YEAR_MONTH_FORMAT = 'F Y’
3 years, 7 months
[MM3-users] Re: Migrating mailman3 to latest ubuntu lts
by Helio Loureiro
And using the module manually works...
(venv) mailman@new-server ~ (v3.3.9) [0|127]> *ipython3*
/usr/lib/python3/dist-packages/IPython/core/interactiveshell.py:949:
UserWarning: Attempting to work in a virtualenv. If you encounter problems,
please install IPython inside the virtualenv.
warn(
Python 3.10.12 (main, Jun 11 2023, 05:26:28) [GCC 11.4.0]
Type 'copyright', 'credits' or 'license' for more information
IPython 7.31.1 -- An enhanced Interactive Python. Type '?' for help.
In [1]: *import MySQLdb*
(venv) mailman@new-sever ~ (v3.3.9)> *fg*
Send job 1, 'ipython3' to foreground
In [3]: *con = MySQLdb.connect("localhost", "mailman3web",
"*****************", "mailman3web")*
In [4]:
*cursor = con.cursor()*
In [5]: *cursor.execute("show tables")*
Out[5]: 34
In [6]: *print(cursor.fetchall())*
(('account_emailaddress',), ('account_emailconfirmation',),
('auth_group',), ('auth_group_permissions',), ('auth_permission',),
('auth_user',), ('auth_user_groups',), ('auth_user_user_permissions',),
('django_admin_log',), ('django_content_type',),
('django_mailman3_maildomain',), ('django_mailman3_profile',),
('django_migrations',), ('django_q_ormq',), ('django_q_schedule',),
('django_q_task',), ('django_session',), ('django_site',),
('hyperkitty_attachment',), ('hyperkitty_email',),
('hyperkitty_favorite',), ('hyperkitty_lastview',),
('hyperkitty_mailinglist',), ('hyperkitty_profile',),
('hyperkitty_sender',), ('hyperkitty_tag',), ('hyperkitty_tagging',),
('hyperkitty_thread',), ('hyperkitty_threadcategory',),
('hyperkitty_vote',), ('socialaccount_socialaccount',),
('socialaccount_socialapp',), ('socialaccount_socialapp_sites',),
('socialaccount_socialtoken',))
In [7]: *cursor.execute("select * from account_emailaddress")*
Out[7]: 2530
In [8]: *print(cursor.fetchall())*
So what can I do? Is there a way to troubleshoot the root cause of this
issue?
Best Regards,
Helio Loureiro
https://helio.loureiro.eng.br
https://github.com/helioloureiro
https://mastodon.social/@helioloureiro
On Tue, 19 Dec 2023 at 11:11, Helio Loureiro <helio(a)loureiro.eng.br> wrote:
> Hi,
>
> No luck :(
>
> (venv) mailman@new-server ~ (v3.3.9)> *pip freeze | egrep
> "mailman-web|django-mailman3|django-allauth"*
> django-allauth==0.59.0
> django-mailman3==1.3.11
> mailman-web==0.0.8
> (venv) mailman@new-server ~ (v3.3.9)> *pip install -U
> django-allauth==0.58.0*
> Collecting django-allauth==0.58.0
> Downloading django-allauth-0.58.0.tar.gz (861 kB)
> ---------------------------------------- 861.7/861.7 KB 9.4 MB/s eta
> 0:00:00
> Installing build dependencies ... done
> Getting requirements to build wheel ... done
> Installing backend dependencies ... done
> Preparing metadata (pyproject.toml) ... done
> Requirement already satisfied: requests-oauthlib>=0.3.0 in
> ./venv/lib/python3.10/site-packages (from django-allauth==0.58.0) (1.3.1)
> Requirement already satisfied: Django>=3.2 in
> ./venv/lib/python3.10/site-packages (from django-allauth==0.58.0) (4.1.13)
> Requirement already satisfied: pyjwt[crypto]>=1.7 in
> ./venv/lib/python3.10/site-packages (from django-allauth==0.58.0) (2.8.0)
> Requirement already satisfied: requests>=2.0.0 in
> ./venv/lib/python3.10/site-packages (from django-allauth==0.58.0) (2.31.0)
> Requirement already satisfied: python3-openid>=3.0.8 in
> ./venv/lib/python3.10/site-packages (from django-allauth==0.58.0) (3.2.0)
> Requirement already satisfied: asgiref<4,>=3.5.2 in
> ./venv/lib/python3.10/site-packages (from
> Django>=3.2->django-allauth==0.58.0) (3.7.2)
> Requirement already satisfied: sqlparse>=0.2.2 in
> ./venv/lib/python3.10/site-packages (from
> Django>=3.2->django-allauth==0.58.0) (0.4.4)
> Requirement already satisfied: cryptography>=3.4.0 in
> ./venv/lib/python3.10/site-packages (from
> pyjwt[crypto]>=1.7->django-allauth==0.58.0) (41.0.7)
> Requirement already satisfied: defusedxml in
> ./venv/lib/python3.10/site-packages (from
> python3-openid>=3.0.8->django-allauth==0.58.0) (0.7.1)
> Requirement already satisfied: urllib3<3,>=1.21.1 in
> ./venv/lib/python3.10/site-packages (from
> requests>=2.0.0->django-allauth==0.58.0) (2.1.0)
> Requirement already satisfied: charset-normalizer<4,>=2 in
> ./venv/lib/python3.10/site-packages (from
> requests>=2.0.0->django-allauth==0.58.0) (3.3.2)
> Requirement already satisfied: idna<4,>=2.5 in
> ./venv/lib/python3.10/site-packages (from
> requests>=2.0.0->django-allauth==0.58.0) (3.6)
> Requirement already satisfied: certifi>=2017.4.17 in
> ./venv/lib/python3.10/site-packages (from
> requests>=2.0.0->django-allauth==0.58.0) (2023.11.17)
> Requirement already satisfied: oauthlib>=3.0.0 in
> ./venv/lib/python3.10/site-packages (from
> requests-oauthlib>=0.3.0->django-allauth==0.58.0) (3.2.2)
> Requirement already satisfied: typing-extensions>=4 in
> ./venv/lib/python3.10/site-packages (from
> asgiref<4,>=3.5.2->Django>=3.2->django-allauth==0.58.0) (4.9.0)
> Requirement already satisfied: cffi>=1.12 in
> ./venv/lib/python3.10/site-packages (from
> cryptography>=3.4.0->pyjwt[crypto]>=1.7->django-allauth==0.58.0) (1.16.0)
> Requirement already satisfied: pycparser in
> ./venv/lib/python3.10/site-packages (from
> cffi>=1.12->cryptography>=3.4.0->pyjwt[crypto]>=1.7->django-allauth==0.58.0)
> (2.21)
> Building wheels for collected packages: django-allauth
> Building wheel for django-allauth (pyproject.toml) ... done
> Created wheel for django-allauth:
> filename=django_allauth-0.58.0-py3-none-any.whl size=1157319
> sha256=a430c552101d1ad47bc00b16d1c1d6df728afacdd13823927b4cbfb02c35dbfc
> Stored in directory:
> /local/mailman/.cache-ubuntu-22.04/pip/wheels/55/0a/79/e199827a18f310906c2a90b0e92b89c41daf21d2a502db6710
> Successfully built django-allauth
> Installing collected packages: django-allauth
> Attempting uninstall: django-allauth
> Found existing installation: django-allauth 0.59.0
> Uninstalling django-allauth-0.59.0:
> Successfully uninstalled django-allauth-0.59.0
> Successfully installed django-allauth-0.58.0
> (venv) mailman@new-server ~ (v3.3.9)> *mailman-web migrate*
> System check identified some issues:
>
> WARNINGS:
> account.EmailAddress: (models.W036) MariaDB does not support unique
> constraints with conditions.
> HINT: A constraint won't be created. Silence this warning if you don't
> care about it.
> account.EmailAddress: (models.W043) MariaDB does not support indexes on
> expressions.
> HINT: An index won't be created. Silence this warning if you don't care
> about it.
> Operations to perform:
> Apply all migrations: account, admin, auth, contenttypes,
> django_mailman3, django_q, hyperkitty, postorius, sessions, sites,
> socialaccount
> Running migrations:
> Applying account.0004_alter_emailaddress_drop_unique_email...Traceback
> (most recent call last):
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/utils.py",
> line 89, in _execute
> return self.cursor.execute(sql, params)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/mysql/base.py",
> line 75, in execute
> return self.cursor.execute(query, args)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
> 179, in execute
> res = self._query(mogrified_query)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
> 330, in _query
> db.query(q)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/connections.py",
> line 257, in query
> _mysql.connection.query(self, query)
> MySQLdb.OperationalError: (2013, 'Lost connection to MySQL server during
> query')
>
> The above exception was the direct cause of the following exception:
>
> Traceback (most recent call last):
> File "/local/mailman/venv/bin/mailman-web", line 8, in <module>
> sys.exit(main())
> File
> "/local/mailman/venv/lib/python3.10/site-packages/mailman_web/manage.py",
> line 90, in main
> execute_from_command_line(sys.argv)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/core/management/__init__.py",
> line 446, in execute_from_command_line
> utility.execute()
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/core/management/__init__.py",
> line 440, in execute
> self.fetch_command(subcommand).run_from_argv(self.argv)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/core/management/base.py",
> line 402, in run_from_argv
> self.execute(*args, **cmd_options)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/core/management/base.py",
> line 448, in execute
> output = self.handle(*args, **options)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/core/management/base.py",
> line 96, in wrapped
> res = handle_func(*args, **kwargs)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/core/management/commands/migrate.py",
> line 349, in handle
> post_migrate_state = executor.migrate(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/migrations/executor.py",
> line 135, in migrate
> state = self._migrate_all_forwards(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/migrations/executor.py",
> line 167, in _migrate_all_forwards
> state = self.apply_migration(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/migrations/executor.py",
> line 252, in apply_migration
> state = migration.apply(state, schema_editor)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/migrations/migration.py",
> line 130, in apply
> operation.database_forwards(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/migrations/operations/fields.py",
> line 235, in database_forwards
> schema_editor.alter_field(from_model, from_field, to_field)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/base/schema.py",
> line 788, in alter_field
> self._alter_field(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/base/schema.py",
> line 858, in _alter_field
> self.execute(self._delete_unique_sql(model, constraint_name))
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/base/schema.py",
> line 199, in execute
> cursor.execute(sql, params)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/utils.py",
> line 67, in execute
> return self._execute_with_wrappers(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/utils.py",
> line 80, in _execute_with_wrappers
> return executor(sql, params, many, context)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/utils.py",
> line 84, in _execute
> with self.db.wrap_database_errors:
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/utils.py", line
> 91, in __exit__
> raise dj_exc_value.with_traceback(traceback) from exc_value
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/utils.py",
> line 89, in _execute
> return self.cursor.execute(sql, params)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/mysql/base.py",
> line 75, in execute
> return self.cursor.execute(query, args)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
> 179, in execute
> res = self._query(mogrified_query)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
> 330, in _query
> db.query(q)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/connections.py",
> line 257, in query
> _mysql.connection.query(self, query)
> django.db.utils.OperationalError: (2013, 'Lost connection to MySQL server
> during query')
> (venv) mailman@new-server ~ (v3.3.9) [0|1]> *more
> /etc/mailman3/settings.py*
> # Mailman Web configuration file.
> # /etc/mailman3/settings.py
>
> # Get the default settings.
> from mailman_web.settings.base import *
> from mailman_web.settings.mailman import *
>
> # Settings below supplement or override the defaults.
>
> #: Default list of admins who receive the emails from error logging.
> ADMINS = (
> ('Mailman Suite Admin', 'root@localhost'),
> )
>
> # Postgresql database setup.
> DATABASES = {
> 'default': {
> 'ENGINE': 'django.db.backends.mysql',
> 'NAME': 'mailman3web',
> 'USER': 'mailman3web',
> # TODO: Replace this with the password.
> 'PASSWORD': '***********',
> 'HOST': 'localhost',
> # PORT: set to empty string for default.
> 'PORT': '3306',
> # OPTIONS: Extra parameters to use when connecting to the database.
> #'OPTIONS': {
> # Set sql_mode to 'STRICT_TRANS_TABLES' for MySQL. See
> # https://docs.djangoproject.com/en/1.11/ref/
> # databases/#setting-sql-mode
> # 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
> # 'charset': 'utf8mb4',
> #},
>
> }
> }
>
> # 'collectstatic' command will copy all the static files here.
> # Alias this location from your webserver to `/static`
> STATIC_ROOT = '/local/mailman/web/static'
>
> # enable the 'compress' command.
> COMPRESS_ENABLED = True
>
> # Make sure that this directory is created or Django will fail on start.
> LOGGING['handlers']['file']['filename'] =
> '/local/mailman/web/logs/mailmanweb.log'
>
> #: See https://docs.djangoproject.com/en/dev/ref/settings/#allowed-hosts
> ALLOWED_HOSTS = [
> "localhost", # Archiving API from Mailman, keep it.
> "127.0.0.1",
> # "lists.your-domain.org",
> # Add here all production domains you have.
> "*"
> ]
>
> #: See
> https://docs.djangoproject.com/en/dev/ref/settings/#csrf-trusted-origins
> (venv) mailman@new-server ~ (v3.3.9)> *mysql -umailman3web -p -h
> localhost mailman3web*
> Enter password:
> Reading table information for completion of table and column names
> You can turn off this feature to get a quicker startup with -A
>
> Welcome to the MariaDB monitor. Commands end with ; or \g.
> Your MariaDB connection id is 32
> Server version: 10.6.12-MariaDB-0ubuntu0.22.04.1 Ubuntu 22.04
>
> Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
>
> Type 'help;' or '\h' for help. Type '\c' to clear the current input
> statement.
>
> MariaDB [mailman3web]> show tables;
> +-------------------------------+
> | Tables_in_mailman3web |
> +-------------------------------+
> | account_emailaddress |
> | account_emailconfirmation |
> | auth_group |
> | auth_group_permissions |
> | auth_permission |
> | auth_user |
> | auth_user_groups |
> | auth_user_user_permissions |
> | django_admin_log |
> | django_content_type |
> | django_mailman3_maildomain |
> | django_mailman3_profile |
> | django_migrations |
> | django_q_ormq |
> | django_q_schedule |
> | django_q_task |
> | django_session |
> | django_site |
> | hyperkitty_attachment |
> | hyperkitty_email |
> | hyperkitty_favorite |
> | hyperkitty_lastview |
> | hyperkitty_mailinglist |
> | hyperkitty_profile |
> | hyperkitty_sender |
> | hyperkitty_tag |
> | hyperkitty_tagging |
> | hyperkitty_thread |
> | hyperkitty_threadcategory |
> | hyperkitty_vote |
> | socialaccount_socialaccount |
> | socialaccount_socialapp |
> | socialaccount_socialapp_sites |
> | socialaccount_socialtoken |
> +-------------------------------+
> 34 rows in set (0.000 sec)
>
> Best Regards,
> Helio Loureiro
> https://helio.loureiro.eng.br
> https://github.com/helioloureiro
> https://mastodon.social/@helioloureiro
>
>
> On Mon, 18 Dec 2023 at 17:11, Mark Sapiro <mark(a)msapiro.net> wrote:
>
>> On 12/18/23 6:24 AM, Helio Loureiro wrote:
>> > Hi,
>> >
>> > Indeed it was the configuration. It was placed into
>> > /etc/mailman3/mailman-web.py. After a I changed to
>> > /etc/mailman3/settings.py a few things advanced a little bit more.
>> >
>> > I had to figure out how to fix mysqlclient installation since there
>> isn't a
>> > mention about it and the simple "pip install mysqclient" was breaking
>> with
>> > pkg-config issues. But it did work at the end.
>> >
>> > Now I can see further messages on mailman3-web than before.
>> >
>> > (venv) mailman@new-server ~ (v3.3.9)> mailman-web migrate
>> > System check identified some issues:
>> >
>> > WARNINGS:
>> > account.EmailAddress: (models.W036) MariaDB does not support unique
>> > constraints with conditions.
>> > HINT: A constraint won't be created. Silence this warning if you don't
>> care
>> > about it.
>> > account.EmailAddress: (models.W043) MariaDB does not support indexes on
>> > expressions.
>> > HINT: An index won't be created. Silence this warning if you don't care
>> > about it.
>> > Operations to perform:
>> > Apply all migrations: account, admin, auth, contenttypes,
>> > django_mailman3, django_q, hyperkitty, postorius, sessions, sites,
>> > socialaccount
>> > Running migrations:
>> > Applying
>> account.0004_alter_emailaddress_drop_unique_email...Traceback
>> > (most recent call last):
>>
>>
>> I'm not sure why there would be an issue with this migration, but there
>> is a possible compatibility issue depending on how you installed things.
>>
>> django-mailman3<=1.3.11 is not compatible with django-allauth>=0.58.
>>
>> In your venv, try
>> ```
>> pip install django-allauth\<0.58
>> ```
>>
>> --
>> Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
>> San Francisco Bay Area, California better use your sense - B. Dylan
>>
>> _______________________________________________
>> Mailman-users mailing list -- mailman-users(a)mailman3.org
>> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
>> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>> Archived at:
>> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
>>
>> This message sent to helio(a)loureiro.eng.br
>>
>
2 years, 2 months
[MM3-users] Re: "Something went wrong | Mailman REST API not available. Please restart Mailman core.
by Hirayama, Pat
Thanks, Mark. Yeah, it's an odd one. These are from around 22:10-22:14 in mailman.log within the mailman-core container.
[29/Oct/2025:22:10:23 +0000] "GET /3.1/domains HTTP/1.1" 200 926 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:10:23 +0000] "GET /3.1/domains/fhcrc.org HTTP/1.1" 200 193 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:10:23 +0000] "GET /3.1/domains/fredhutch.org HTTP/1.1" 200 201 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:10:23 +0000] "GET /3.1/domains/lists.fhcrc.org HTTP/1.1" 200 220 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:10:23 +0000] "GET /3.1/domains/lists.hanc.info HTTP/1.1" 200 201 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:10:23 +0000] "POST /3.1/lists/find HTTP/1.1" 200 13020 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:10:25 +0000] "GET /3.1/lists/cancerbiology100.lists.fhcrc.org HTTP/1.1" 200 433 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:10:26 +0000] "GET /3.1/lists/cancerbiology100.lists.fhcrc.org/roster/owner HTTP/1.1" 200 1175 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:10:26 +0000] "GET /3.1/lists/cancerbiology100.lists.fhcrc.org/roster/moderator HTTP/1.1" 200 90 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:10:26 +0000] "GET /3.1/lists/cancerbiology100(a)lists.fhcrc.org/config HTTP/1.1" 200 3016 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:10:26 +0000] "GET /3.1/lists/cancerbiology100.lists.fhcrc.org/archivers HTTP/1.1" 200 81 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:10:26 +0000] "GET /3.1/lists/cancerbiology100.lists.fhcrc.org/archivers HTTP/1.1" 200 81 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:10:26 +0000] "GET /3.1/lists/cancerbiology100(a)lists.fhcrc.org/requests HTTP/1.1" 200 1307 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:10:26 +0000] "GET /3.1/lists/cancerbiology100.lists.fhcrc.org/member/aismael%40fredhutch.org HTTP/1.1" 200 509 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:10:26 +0000] "GET /3.1/lists/cancerbiology100(a)lists.fhcrc.org/requests HTTP/1.1" 200 1307 "-" "GNU Mailman REST client v3.3.1"
[2025-10-29 22:10:26 +0000] [31] [ERROR] Socket error processing request.
Traceback (most recent call last):
File "/usr/local/lib/python3.8/site-packages/gunicorn/workers/sync.py", line 134, in handle
self.handle_request(listener, req, client, addr)
File "/usr/local/lib/python3.8/site-packages/gunicorn/workers/sync.py", line 190, in handle_request
util.reraise(*sys.exc_info())
File "/usr/local/lib/python3.8/site-packages/gunicorn/util.py", line 625, in reraise
raise value
File "/usr/local/lib/python3.8/site-packages/gunicorn/workers/sync.py", line 175, in handle_request
respiter = self.wsgi(environ, resp.start_response)
File "/usr/local/lib/python3.8/site-packages/mailman/database/transaction.py", line 50, in wrapper
rtn = function(*args, **kws)
File "/usr/local/lib/python3.8/site-packages/mailman/rest/wsgiapp.py", line 193, in __call__
return super().__call__(environ, start_response)
File "/usr/local/lib/python3.8/site-packages/falcon/api.py", line 269, in __call__
responder(req, resp, **params)
File "/usr/local/lib/python3.8/site-packages/mailman/rest/post_moderation.py", line 163, in on_get
resource = self._make_collection(request)
File "/usr/local/lib/python3.8/site-packages/mailman/rest/helpers.py", line 172, in _make_collection
entries = [self._resource_as_dict(resource)
File "/usr/local/lib/python3.8/site-packages/mailman/rest/helpers.py", line 172, in <listcomp>
entries = [self._resource_as_dict(resource)
File "/usr/local/lib/python3.8/site-packages/mailman/rest/post_moderation.py", line 153, in _resource_as_dict
resource = self._make_resource(request.id)
File "/usr/local/lib/python3.8/site-packages/mailman/rest/post_moderation.py", line 76, in _make_resource
msg = getUtility(IMessageStore).get_message_by_id(key)
File "/usr/local/lib/python3.8/site-packages/mailman/database/transaction.py", line 85, in wrapper
return function(args[0], config.db.store, *args[1:], **kws)
File "/usr/local/lib/python3.8/site-packages/mailman/model/messagestore.py", line 103, in get_message_by_id
return self._get_message(row)
File "/usr/local/lib/python3.8/site-packages/mailman/model/messagestore.py", line 95, in _get_message
with open(path, 'rb') as fp:
FileNotFoundError: [Errno 2] No such file or directory: '/opt/mailman/var/messages/WD/BX/WDBXUFG34LR6QJUQXUWXRHZ4OO4GMQ52'
[29/Oct/2025:22:11:49 +0000] "GET /3.1/lists/pattest.lists.fhcrc.org HTTP/1.1" 200 373 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:11:50 +0000] "GET /3.1/lists/pattest.lists.fhcrc.org/roster/owner HTTP/1.1" 200 624 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:11:50 +0000] "GET /3.1/lists/pattest.lists.fhcrc.org/roster/moderator HTTP/1.1" 200 90 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:11:50 +0000] "GET /3.1/lists/pattest(a)lists.fhcrc.org/config HTTP/1.1" 200 3262 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:11:50 +0000] "GET /3.1/lists/pattest.lists.fhcrc.org/archivers HTTP/1.1" 200 81 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:11:50 +0000] "GET /3.1/lists/pattest.lists.fhcrc.org/archivers HTTP/1.1" 200 81 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:11:50 +0000] "GET /3.1/lists/pattest(a)lists.fhcrc.org/requests HTTP/1.1" 200 90 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:11:50 +0000] "GET /3.1/lists/pattest.lists.fhcrc.org/member/cit-sys-engineering%40fredhutch.org HTTP/1.1" 404 26 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:11:50 +0000] "GET /3.1/lists/pattest(a)lists.fhcrc.org/requests HTTP/1.1" 200 90 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:11:50 +0000] "GET /3.1/lists/pattest(a)lists.fhcrc.org/held?count=50&page=1 HTTP/1.1" 200 90 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:11:56 +0000] "GET /3.1/lists/vtn.fiscal.pattest.lists.fhcrc.org HTTP/1.1" 404 58 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:12:02 +0000] "GET /3.1/lists/vtn.fiscal.lists.fhcrc.org HTTP/1.1" 200 389 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:12:02 +0000] "GET /3.1/lists/vtn.fiscal.lists.fhcrc.org/roster/owner HTTP/1.1" 200 628 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:12:02 +0000] "GET /3.1/lists/vtn.fiscal.lists.fhcrc.org/roster/moderator HTTP/1.1" 200 90 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:12:02 +0000] "GET /3.1/lists/vtn.fiscal(a)lists.fhcrc.org/config HTTP/1.1" 200 46422 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:12:02 +0000] "GET /3.1/lists/vtn.fiscal.lists.fhcrc.org/archivers HTTP/1.1" 200 81 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:12:02 +0000] "GET /3.1/lists/vtn.fiscal.lists.fhcrc.org/archivers HTTP/1.1" 200 81 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:12:03 +0000] "GET /3.1/lists/vtn.fiscal(a)lists.fhcrc.org/requests HTTP/1.1" 200 90 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:12:03 +0000] "GET /3.1/lists/vtn.fiscal.lists.fhcrc.org/member/cit-sys-engineering%40fredhutch.org HTTP/1.1" 404 26 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:12:03 +0000] "GET /3.1/lists/vtn.fiscal(a)lists.fhcrc.org/requests HTTP/1.1" 200 90 "-" "GNU Mailman REST client v3.3.1"
[2025-10-29 22:12:03 +0000] [31] [ERROR] Socket error processing request.
Traceback (most recent call last):
File "/usr/local/lib/python3.8/site-packages/gunicorn/workers/sync.py", line 134, in handle
self.handle_request(listener, req, client, addr)
File "/usr/local/lib/python3.8/site-packages/gunicorn/workers/sync.py", line 190, in handle_request
util.reraise(*sys.exc_info())
File "/usr/local/lib/python3.8/site-packages/gunicorn/util.py", line 625, in reraise
raise value
File "/usr/local/lib/python3.8/site-packages/gunicorn/workers/sync.py", line 175, in handle_request
respiter = self.wsgi(environ, resp.start_response)
File "/usr/local/lib/python3.8/site-packages/mailman/database/transaction.py", line 50, in wrapper
rtn = function(*args, **kws)
File "/usr/local/lib/python3.8/site-packages/mailman/rest/wsgiapp.py", line 193, in __call__
return super().__call__(environ, start_response)
File "/usr/local/lib/python3.8/site-packages/falcon/api.py", line 269, in __call__
responder(req, resp, **params)
File "/usr/local/lib/python3.8/site-packages/mailman/rest/post_moderation.py", line 163, in on_get
resource = self._make_collection(request)
File "/usr/local/lib/python3.8/site-packages/mailman/rest/helpers.py", line 172, in _make_collection
entries = [self._resource_as_dict(resource)
File "/usr/local/lib/python3.8/site-packages/mailman/rest/helpers.py", line 172, in <listcomp>
entries = [self._resource_as_dict(resource)
File "/usr/local/lib/python3.8/site-packages/mailman/rest/post_moderation.py", line 153, in _resource_as_dict
resource = self._make_resource(request.id)
File "/usr/local/lib/python3.8/site-packages/mailman/rest/post_moderation.py", line 76, in _make_resource
msg = getUtility(IMessageStore).get_message_by_id(key)
File "/usr/local/lib/python3.8/site-packages/mailman/database/transaction.py", line 85, in wrapper
return function(args[0], config.db.store, *args[1:], **kws)
File "/usr/local/lib/python3.8/site-packages/mailman/model/messagestore.py", line 103, in get_message_by_id
return self._get_message(row)
File "/usr/local/lib/python3.8/site-packages/mailman/model/messagestore.py", line 95, in _get_message
with open(path, 'rb') as fp:
FileNotFoundError: [Errno 2] No such file or directory: '/opt/mailman/var/messages/LZ/OC/LZOCY4BX6FBKMLJZQKVED6AVXOUBDFXQ'
[29/Oct/2025:22:12:15 +0000] "GET /3.1/lists?advertised=true&count=0&page=1 HTTP/1.1" 200 92 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:12:15 +0000] "GET /3.1/lists?advertised=true&count=10&page=1 HTTP/1.1" 200 4353 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:12:15 +0000] "GET /3.1/domains HTTP/1.1" 200 926 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:12:15 +0000] "GET /3.1/domains/fhcrc.org HTTP/1.1" 200 193 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:12:15 +0000] "GET /3.1/domains/fredhutch.org HTTP/1.1" 200 201 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:12:15 +0000] "GET /3.1/domains/lists.fhcrc.org HTTP/1.1" 200 220 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:12:15 +0000] "GET /3.1/domains/lists.hanc.info HTTP/1.1" 200 201 "-" "GNU Mailman REST client v3.3.1"
Oct 29 22:13:20 2025 (10) ACCEPT: <DM6PR11MB4692672CB4AB8CA1AB739567D5FAA(a)DM6PR11MB4692.namprd11.prod.outlook.com>
[29/Oct/2025:22:13:33 +0000] "GET /3.1/domains HTTP/1.1" 200 926 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:13:34 +0000] "GET /3.1/domains/fhcrc.org HTTP/1.1" 200 193 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:13:34 +0000] "GET /3.1/domains/fredhutch.org HTTP/1.1" 200 201 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:13:34 +0000] "GET /3.1/domains/lists.fhcrc.org HTTP/1.1" 200 220 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:13:34 +0000] "GET /3.1/domains/lists.hanc.info HTTP/1.1" 200 201 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:13:34 +0000] "POST /3.1/lists/find HTTP/1.1" 200 2569 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:13:37 +0000] "GET /3.1/lists?count=0&page=1 HTTP/1.1" 200 93 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:13:37 +0000] "GET /3.1/lists?count=10&page=1 HTTP/1.1" 200 4441 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:13:37 +0000] "GET /3.1/domains HTTP/1.1" 200 926 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:13:37 +0000] "GET /3.1/domains/fhcrc.org HTTP/1.1" 200 193 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:13:37 +0000] "GET /3.1/domains/fredhutch.org HTTP/1.1" 200 201 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:13:37 +0000] "GET /3.1/domains/lists.fhcrc.org HTTP/1.1" 200 220 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:13:37 +0000] "GET /3.1/domains/lists.hanc.info HTTP/1.1" 200 201 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:13:37 +0000] "GET /3.1/lists/015.site.257.cergo015.site.257.cer(a)lists.fhcrc.org/config HTTP/1.1" 200 46497 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:13:37 +0000] "GET /3.1/lists/1100_labs(a)lists.fhcrc.org/config HTTP/1.1" 200 3053 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:13:37 +0000] "GET /3.1/lists/9228.dsmb.members.only(a)lists.fhcrc.org/config HTTP/1.1" 200 3082 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:13:37 +0000] "GET /3.1/lists/9292.dsmb.members.only(a)lists.fhcrc.org/config HTTP/1.1" 200 3082 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:13:37 +0000] "GET /3.1/lists/a2223dsmbdl(a)lists.fhcrc.org/config HTTP/1.1" 200 3145 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:13:37 +0000] "GET /3.1/lists/a244.ct(a)lists.fhcrc.org/config HTTP/1.1" 200 46388 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:13:37 +0000] "GET /3.1/lists/a5397.vtn603.pi.coord(a)lists.fhcrc.org/config HTTP/1.1" 200 46380 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:13:37 +0000] "GET /3.1/lists/ab.mop(a)lists.fhcrc.org/config HTTP/1.1" 200 46380 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:13:37 +0000] "GET /3.1/lists/accessdev(a)lists.fhcrc.org/config HTTP/1.1" 200 3173 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:13:37 +0000] "GET /3.1/lists/actg.site.31422.coord(a)lists.fhcrc.org/config HTTP/1.1" 200 46429 "-" "GNU Mailman REST client v3.3.1"
Oct 29 22:13:47 2025 (10) ACCEPT:
<MN2PR11MB4333B8F87B77ED1E7F83422DDDFAA(a)MN2PR11MB4333.namprd11.prod.outlook.com>
[29/Oct/2025:22:14:23 +0000] "GET /3.1/lists?count=0&page=1 HTTP/1.1" 200 93 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:14:24 +0000] "GET /3.1/lists?count=200&page=1 HTTP/1.1" 200 83390 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:14:24 +0000] "GET /3.1/domains HTTP/1.1" 200 926 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:14:24 +0000] "GET /3.1/domains/fhcrc.org HTTP/1.1" 200 193 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:14:24 +0000] "GET /3.1/domains/fredhutch.org HTTP/1.1" 200 201 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:14:24 +0000] "GET /3.1/domains/lists.fhcrc.org HTTP/1.1" 200 220 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:14:24 +0000] "GET /3.1/domains/lists.hanc.info HTTP/1.1" 200 201 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:14:24 +0000] "GET /3.1/lists/015.site.257.cergo015.site.257.cer(a)lists.fhcrc.org/config HTTP/1.1" 200 46497 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:14:24 +0000] "GET /3.1/lists/1100_labs(a)lists.fhcrc.org/config HTTP/1.1" 200 3053 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:14:24 +0000] "GET /3.1/lists/9228.dsmb.members.only(a)lists.fhcrc.org/config HTTP/1.1" 200 3082 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:14:24 +0000] "GET /3.1/lists/9292.dsmb.members.only(a)lists.fhcrc.org/config HTTP/1.1" 200 3082 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:14:24 +0000] "GET /3.1/lists/a2223dsmbdl(a)lists.fhcrc.org/config HTTP/1.1" 200 3145 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:14:24 +0000] "GET /3.1/lists/a244.ct(a)lists.fhcrc.org/config HTTP/1.1" 200 46388 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:14:24 +0000] "GET /3.1/lists/a5397.vtn603.pi.coord(a)lists.fhcrc.org/config HTTP/1.1" 200 46380 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:14:24 +0000] "GET /3.1/lists/ab.mop(a)lists.fhcrc.org/config HTTP/1.1" 200 46380 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:14:24 +0000] "GET /3.1/lists/accessdev(a)lists.fhcrc.org/config HTTP/1.1" 200 3173 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:14:24 +0000] "GET /3.1/lists/actg.site.31422.coord(a)lists.fhcrc.org/config HTTP/1.1" 200 46429 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:14:24 +0000] "GET /3.1/lists/actg.site.31422.dataqc(a)lists.fhcrc.org/config HTTP/1.1" 200 46389 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:14:24 +0000] "GET /3.1/lists/actg.site.31422.pharm(a)lists.fhcrc.org/config HTTP/1.1" 200 46428 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:14:24 +0000] "GET /3.1/lists/actg.site.31422.pi(a)lists.fhcrc.org/config HTTP/1.1" 200 46402 "-" "GNU Mailman REST client v3.3.1"
[29/Oct/2025:22:14:24 +0000] "GET /3.1/lists/actg.site.31422.reg(a)lists.fhcrc.org/config HTTP/1.1" 200 46410 "-" "GNU Mailman REST client v3.3.1"
Pat Hirayama
Pronouns: he/him/his
Systems Engineer
IT | Systems Engineering
Fred Hutchinson Cancer Center
O 206.667.4856
phirayam(a)fredhutch.org
________________________________
From: Mark Sapiro <mark(a)msapiro.net>
Sent: Wednesday, October 29, 2025 16:07
To: mailman-users(a)mailman3.org <mailman-users(a)mailman3.org>
Subject: [MM3-users] Re: "Something went wrong | Mailman REST API not available. Please restart Mailman core.
CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.
On 10/29/25 15:40, Hirayama, Pat wrote:
> Ah, thanks for the reply, Mark. Forgot to include Traceback:
>
> Traceback (most recent call last):
...
Thanks. These are not the normal 'core isn't running' tracebacks which
are `connection refused`. These seem to say that core is dropping the
connection without a response. What's in mailman.log from these times?
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
_______________________________________________
Mailman-users mailing list -- mailman-users(a)mailman3.org
To unsubscribe send an email to mailman-users-leave(a)mailman3.org
https://urldefense.com/v3/__https://lists.mailman3.org/mailman3/lists/mailm…
Archived at: https://urldefense.com/v3/__https://lists.mailman3.org/archives/list/mailma…
This message sent to phirayam(a)fredhutch.org
4 months
[MM3-users] Re: Migration from old server to new server failed
by Helio Loureiro
Hi,
I repeated the steps today.
First I waited to end the errors raised because the mailman3-web wasn't
running.
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File
"/local/mailman/venv/lib/python3.10/site-packages/urllib3/connectionpool.py",
line 793, in urlopen
response = self._make_request(
File
"/local/mailman/venv/lib/python3.10/site-packages/urllib3/connectionpool.py",
line 496, in _make_request
conn.request(
File
"/local/mailman/venv/lib/python3.10/site-packages/urllib3/connection.py",
line 400, in request
self.endheaders()
File "/usr/lib/python3.10/http/client.py", line 1278, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "/usr/lib/python3.10/http/client.py", line 1038, in _send_output
self.send(msg)
File "/usr/lib/python3.10/http/client.py", line 976, in send
self.connect()
File
"/local/mailman/venv/lib/python3.10/site-packages/urllib3/connection.py",
line 238, in connect
self.sock = self._new_conn()
File
"/local/mailman/venv/lib/python3.10/site-packages/urllib3/connection.py",
line 213, in _new_conn
raise NewConnectionError(
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection
object at 0x7f0fdc2f72b0>: Failed to establish a new connection: [Errno
111] Connection refused
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File
"/local/mailman/venv/lib/python3.10/site-packages/requests/adapters.py",
line 486, in send
resp = conn.urlopen(
File
"/local/mailman/venv/lib/python3.10/site-packages/urllib3/connectionpool.py",
line 847, in urlopen
retries = retries.increment(
File
"/local/mailman/venv/lib/python3.10/site-packages/urllib3/util/retry.py",
line 515, in increment
raise MaxRetryError(_pool, url, reason) from reason # type:
ignore[arg-type]
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='127.0.0.1',
port=8000): Max retries exceeded with url: /archives/api/mailman/archive
(Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at
0x7f0fdc2f72b0>: Failed to establish a new connection: [Errno 111]
Connection refused'))
Which seems to keep forever. So eventually I gave up and moved forward.
And I changed to use the uwsgi socket instead of the direct port.
(venv) mailman@new-mailman3 ~ (v3.1.1) [0|SIGINT]> mailman-web migrate
System check identified some issues:
WARNINGS:
account.EmailAddress: (models.W036) MariaDB does not support unique
constraints with conditions.
HINT: A constraint won't be created. Silence this warning if you
don't care about it.
account.EmailAddress: (models.W043) MariaDB does not support indexes on
expressions.
HINT: An index won't be created. Silence this warning if you don't
care about it.
Operations to perform:
Apply all migrations: account, admin, auth, contenttypes,
django_mailman3, django_q, hyperkitty, postorius, sessions, sites,
socialaccount
Running migrations:
Applying account.0003_alter_emailaddress_create_unique_verified_email...
OK
Applying account.0004_alter_emailaddress_drop_unique_email... OK
Applying account.0005_emailaddress_idx_upper_email... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying auth.0012_alter_user_first_name_max_length... OK
Applying django_mailman3.0003_sessions... OK
Applying django_q.0010_auto_20200610_0856... OK
Applying django_q.0011_auto_20200628_1055... OK
Applying django_q.0012_auto_20200702_1608... OK
Applying django_q.0013_task_attempt_count... OK
Applying django_q.0014_schedule_cluster... OK
Applying hyperkitty.0016_auto_20180309_0056... OK
Applying hyperkitty.0017_file_attachments... OK
Applying hyperkitty.0018_threadcategory_color... OK
Applying hyperkitty.0019_auto_20190127_null_description... OK
Applying hyperkitty.0020_auto_20190907_1927... OK
Applying hyperkitty.0021_add_owners_mods...Traceback (most recent call
last):
File
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/utils.py",
line 87, in _execute
return self.cursor.execute(sql)
File
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/mysql/base.py",
line 75, in execute
return self.cursor.execute(query, args)
File
"/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
179, in execute
res = self._query(mogrified_query)
File
"/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
330, in _query
db.query(q)
File
"/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/connections.py",
line 261, in query
_mysql.connection.query(self, query)
MySQLdb.OperationalError: (1050, "Table 'hyperkitty_mailinglist_moderators'
already exists")
Then dropping table hyperkitty_mailinglist_moderators.
(venv) mailman@new-mailman3 ~ (v3.1.1)> mailman-web migrate
System check identified some issues:
WARNINGS:
account.EmailAddress: (models.W036) MariaDB does not support unique
constraints with conditions.
HINT: A constraint won't be created. Silence this warning if you
don't care about it.
account.EmailAddress: (models.W043) MariaDB does not support indexes on
expressions.
HINT: An index won't be created. Silence this warning if you don't
care about it.
Operations to perform:
Apply all migrations: account, admin, auth, contenttypes,
django_mailman3, django_q, hyperkitty, postorius, sessions, sites,
socialaccount
Running migrations:
Applying hyperkitty.0021_add_owners_mods...Traceback (most recent call
last):
File
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/utils.py",
line 87, in _execute
return self.cursor.execute(sql)
File
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/mysql/base.py",
line 75, in execute
return self.cursor.execute(query, args)
File
"/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
179, in execute
res = self._query(mogrified_query)
File
"/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
330, in _query
db.query(q)
File
"/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/connections.py",
line 261, in query
_mysql.connection.query(self, query)
MySQLdb.OperationalError: (1050, "Table 'hyperkitty_mailinglist_owners'
already exists")
After dropping table hyperkitty_mailinglist_owners.
(venv) mailman@new-mailman3 ~ (v3.1.1) [0|1]> mailman-web migrate
System check identified some issues:
WARNINGS:
account.EmailAddress: (models.W036) MariaDB does not support unique
constraints with conditions.
HINT: A constraint won't be created. Silence this warning if you
don't care about it.
account.EmailAddress: (models.W043) MariaDB does not support indexes on
expressions.
HINT: An index won't be created. Silence this warning if you don't
care about it.
Operations to perform:
Apply all migrations: account, admin, auth, contenttypes,
django_mailman3, django_q, hyperkitty, postorius, sessions, sites,
socialaccount
Running migrations:
Applying hyperkitty.0021_add_owners_mods...Traceback (most recent call
last):
File
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/utils.py",
line 87, in _execute
return self.cursor.execute(sql)
File
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/mysql/base.py",
line 75, in execute
return self.cursor.execute(query, args)
File
"/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
179, in execute
res = self._query(mogrified_query)
File
"/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
330, in _query
db.query(q)
File
"/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/connections.py",
line 261, in query
_mysql.connection.query(self, query)
MySQLdb.OperationalError: (1050, "Table 'hyperkitty_mailinglist_moderators'
already exists")
After dropping table hyperkitty_mailinglist_moderators.
(venv) mailman@new-mailman3 ~ (v3.1.1) [0|1]> mailman-web migrate
System check identified some issues:
WARNINGS:
account.EmailAddress: (models.W036) MariaDB does not support unique
constraints with conditions.
HINT: A constraint won't be created. Silence this warning if you
don't care about it.
account.EmailAddress: (models.W043) MariaDB does not support indexes on
expressions.
HINT: An index won't be created. Silence this warning if you don't
care about it.
Operations to perform:
Apply all migrations: account, admin, auth, contenttypes,
django_mailman3, django_q, hyperkitty, postorius, sessions, sites,
socialaccount
Running migrations:
Applying hyperkitty.0021_add_owners_mods... OK
Applying hyperkitty.0022_mailinglist_archive_rendering_mode... OK
Applying hyperkitty.0023_alter_mailinglist_name... OK
Applying postorius.0004_create_email_template...Traceback (most recent
call last):
File
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/utils.py",
line 87, in _execute
return self.cursor.execute(sql)
File
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/mysql/base.py",
line 75, in execute
return self.cursor.execute(query, args)
File
"/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
179, in execute
res = self._query(mogrified_query)
File
"/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
330, in _query
db.query(q)
File
"/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/connections.py",
line 261, in query
_mysql.connection.query(self, query)
MySQLdb.OperationalError: (1050, "Table 'postorius_emailtemplate' already
exists")
After dropping table postorius_emailtemplate.
(venv) mailman@new-mailman3 ~ (v3.1.1) [0|1]> mailman-web migrate
System check identified some issues:
WARNINGS:
account.EmailAddress: (models.W036) MariaDB does not support unique
constraints with conditions.
HINT: A constraint won't be created. Silence this warning if you
don't care about it.
account.EmailAddress: (models.W043) MariaDB does not support indexes on
expressions.
HINT: An index won't be created. Silence this warning if you don't
care about it.
Operations to perform:
Apply all migrations: account, admin, auth, contenttypes,
django_mailman3, django_q, hyperkitty, postorius, sessions, sites,
socialaccount
Running migrations:
Applying postorius.0004_create_email_template... OK
Applying postorius.0005_auto_20180707_1107... OK
Applying postorius.0006_auto_20180711_1359... OK
Applying postorius.0007_auto_20180712_0536... OK
Applying postorius.0008_auto_20190310_0717... OK
Applying postorius.0009_auto_20190508_1604... OK
Applying postorius.0010_auto_20190821_0621... OK
Applying postorius.0011_auto_20191109_1219... OK
Applying postorius.0012_auto_20200420_2136... OK
Applying postorius.0013_auto_20201116_0058... OK
Applying postorius.0014_auto_20210329_2248... OK
Applying postorius.0015_auto_20210619_0509... OK
Applying postorius.0016_auto_20210810_2157... OK
Applying postorius.0017_alter_emailtemplate_language... OK
Applying postorius.0018_alter_emailtemplate_language... OK
Applying socialaccount.0004_app_provider_id_settings... OK
Applying socialaccount.0005_socialtoken_nullable_app... OK
Applying socialaccount.0006_alter_socialaccount_extra_data... OK
At this point the errors remains about not reaching web part. So I started
mailman3-web.
Then I see these errors on var/log/mailman.log
Feb 19 15:35:14 2024 (543890) Traceback (most recent call last):
File
"/local/mailman/venv/lib/python3.10/site-packages/mailman_hyperkitty/__init__.py",
line 158, in _archive_message
url = self._send_message(mlist, msg)
File
"/local/mailman/venv/lib/python3.10/site-packages/mailman_hyperkitty/__init__.py",
line 228, in _send_message
raise ValueError(result.text)
ValueError: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL was not found on this server.</p>
<hr>
<address>Apache/2.4.52 (Ubuntu) Server at 127.0.0.1 Port 80</address>
</body></html>
Feb 19 15:35:14 2024 (543890) HyperKitty failure on
http://127.0.0.1/archives/api/mailman/archive: <!DOCTYPE HTML PUBLIC
"-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL was not found on this server.</p>
<hr>
<address>Apache/2.4.52 (Ubuntu) Server at 127.0.0.1 Port 80</address>
</body></html>
(404)
Feb 19 15:35:14 2024 (543890) Could not archive the message with id <
ff1707bb-d105-4f37-b3f8-9766b3563127(a)SESAMR604.domain.com>
Feb 19 15:35:14 2024 (543890) archiving failed, re-queuing (mailing-list
mylist.new-mailman.domain.com, message <
ff1707bb-d105-4f37-b3f8-9766b3563127(a)machine.domain.com>)
Feb 19 15:35:14 2024 (543890) Exception in the HyperKitty archiver:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL was not found on this server.</p>
<hr>
<address>Apache/2.4.52 (Ubuntu) Server at 127.0.0.1 Port 80</address>
</body></html>
And I can't get access to the hyperkitty at all.
On var/logs/uwsgi-error.log:
--- Logging error ---
Traceback (most recent call last):
File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
line 356, in pusher
task = SignedPackage.loads(task[1])
File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/signing.py",
line 25, in loads
return signing.loads(
File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/core_signing.py",
line 35, in loads
base64d = force_bytes(TimestampSigner(key, salt=salt).unsign(s,
max_age=max_age))
File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/core_signing.py",
line 70, in unsign
result = super(TimestampSigner, self).unsign(value)
File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/core_signing.py",
line 55, in unsign
raise BadSignature('Signature "%s" does not match' % sig)
django.core.signing.BadSignature: Signature "48do9gGvueBxakX_a4uNmSwD7cs"
does not match
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.10/logging/__init__.py", line 1100, in emit
msg = self.format(record)
File "/usr/lib/python3.10/logging/__init__.py", line 943, in format
return fmt.format(record)
File "/usr/lib/python3.10/logging/__init__.py", line 678, in format
record.message = record.getMessage()
File "/usr/lib/python3.10/logging/__init__.py", line 368, in getMessage
msg = msg % self.args
TypeError: not all arguments converted during string formatting
Call stack:
File "/local/mailman/venv/bin/mailman-web", line 8, in <module>
sys.exit(main())
File
"/local/mailman/venv/lib/python3.10/site-packages/mailman_web/manage.py",
line 90, in main
execute_from_command_line(sys.argv)
File
"/local/mailman/venv/lib/python3.10/site-packages/django/core/management/__init__.py",
line 446, in execute_from_command_line
utility.execute()
File
"/local/mailman/venv/lib/python3.10/site-packages/django/core/management/__init__.py",
line 440, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File
"/local/mailman/venv/lib/python3.10/site-packages/django/core/management/base.py",
line 402, in run_from_argv
self.execute(*args, **cmd_options)
File
"/local/mailman/venv/lib/python3.10/site-packages/django/core/management/base.py",
line 448, in execute
output = self.handle(*args, **options)
File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/management/commands/qcluster.py",
line 22, in handle
q.start()
File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
line 78, in start
self.sentinel.start()
File "/usr/lib/python3.10/multiprocessing/process.py", line 121, in start
self._popen = self._Popen(self)
File "/usr/lib/python3.10/multiprocessing/context.py", line 224, in _Popen
return _default_context.get_context().Process._Popen(process_obj)
File "/usr/lib/python3.10/multiprocessing/context.py", line 281, in _Popen
return Popen(process_obj)
File "/usr/lib/python3.10/multiprocessing/popen_fork.py", line 19, in
__init__
self._launch(process_obj)
File "/usr/lib/python3.10/multiprocessing/popen_fork.py", line 71, in
_launch
code = process_obj._bootstrap(parent_sentinel=child_r)
File "/usr/lib/python3.10/multiprocessing/process.py", line 314, in
_bootstrap
self.run()
File "/usr/lib/python3.10/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
line 168, in __init__
self.start()
File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
line 172, in start
self.spawn_cluster()
File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
line 248, in spawn_cluster
self.pusher = self.spawn_pusher()
File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
line 201, in spawn_pusher
return self.spawn_process(pusher, self.task_queue, self.event_out,
self.broker)
File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
line 197, in spawn_process
p.start()
File "/usr/lib/python3.10/multiprocessing/process.py", line 121, in start
self._popen = self._Popen(self)
File "/usr/lib/python3.10/multiprocessing/context.py", line 224, in _Popen
return _default_context.get_context().Process._Popen(process_obj)
File "/usr/lib/python3.10/multiprocessing/context.py", line 281, in _Popen
return Popen(process_obj)
File "/usr/lib/python3.10/multiprocessing/popen_fork.py", line 19, in
__init__
self._launch(process_obj)
File "/usr/lib/python3.10/multiprocessing/popen_fork.py", line 71, in
_launch
code = process_obj._bootstrap(parent_sentinel=child_r)
File "/usr/lib/python3.10/multiprocessing/process.py", line 314, in
_bootstrap
self.run()
File "/usr/lib/python3.10/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
line 358, in pusher
logger.error(e, traceback.format_exc())
Message: BadSignature('Signature "48do9gGvueBxakX_a4uNmSwD7cs" does not
match')
Arguments: ('Traceback (most recent call last):\n File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
line 356, in pusher\n task = SignedPackage.loads(task[1])\n File
"/local/mailman/venv/lib/python3.10/sit
e-packages/django_q/signing.py", line 25, in loads\n return
signing.loads(\n File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/core_signing.py",
line 35, in loads\n base64d = force_bytes(TimestampSigner(key, salt=sa
lt).unsign(s, max_age=max_age))\n File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/core_signing.py",
line 70, in unsign\n result = super(TimestampSigner,
self).unsign(value)\n File "/local/mailman/venv/lib/python3.10
/site-packages/django_q/core_signing.py", line 55, in unsign\n raise
BadSignature(\'Signature "%s" does not match\' %
sig)\ndjango.core.signing.BadSignature: Signature
"48do9gGvueBxakX_a4uNmSwD7cs" does not match\n',)
I'm using uwsgi via apache:
(venv) mailman@new-mailman3 ~ (v3.1.1)> more
/etc/apache2/conf-enabled/mailman3.conf
Alias /mailman3/favicon.ico /local/mailman/web/static/favicon.ico
Alias /mailman/favicon.ico /local/mailman/web/static/favicon.ico
Alias /favicon.ico /local/mailman/web/static/favicon.ico
Alias /mailman3/static /local/mailman/web/static
Alias /mailman/static /local/mailman/web/static
Alias /static /local/mailman/web/static
<Directory "/local/mailman/web/static">
Require all granted
</Directory>
<IfModule mod_proxy_uwsgi.c>
ProxyPass /mailman3/favicon.ico !
ProxyPass /mailman/favicon.ico !
ProxyPass /favicon.ico !
ProxyPass /mailman3/static !
ProxyPass /mailman/static !
ProxyPass /static !
ProxyPass /mailman3
unix:/local/mailman/var/uwsgi.sock|uwsgi://localhost/
ProxyPass /mailman
unix:/local/mailman/var/uwsgi.sock|uwsgi://localhost/
#ProxyPass /mailman3 http://localhost:8000/ timeout=180
#ProxyPass /mailman http://localhost:8000/ timeout=180
#ProxyPass / http://localhost:8000/ timeout=180
</IfModule>
Best Regards,
Helio Loureiro
https://helio.loureiro.eng.br
https://github.com/helioloureiro
https://mastodon.social/@helioloureiro
On Fri, 16 Feb 2024 at 22:39, Mark Sapiro <mark(a)msapiro.net> wrote:
> On 2/16/24 07:12, Helio Loureiro wrote:
>
> > - start mailman3 and mailman-3web
> > - run mailman3-web migrate
>
> You should run mailman3-web migrate when mailman-3web is not running.
>
> > django.db.utils.OperationalError: (1050, "Table
> > 'hyperkitty_mailinglist_moderators' already exists")
> >
> > I tried to drop the table, but then it complained about another one. I
> > dropped all the complained tables and as result hypperkitty never
> > started. So I went back to see why the first error happened.
>
> The errors occurred because you had recently added tables in your
> database so they couldn't be added by the migrations. Dropping the
> tables was the correct thing to do.
>
> Did you ultimately successfully run all the migrations?
>
> When you say `hypperkitty never started`, what exactly does that mean?
> What happens when you try to access the archives? Can you access
> postorius? Are any errors logged in mailman3-web's log?
>
> --
> Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
> San Francisco Bay Area, California better use your sense - B. Dylan
>
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> Archived at:
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
>
> This message sent to helio(a)loureiro.eng.br
>
2 years
[MM3-users] Internal Server Error: /mailman3/accounts/fedora/login/
by Mohsen Masoudfar
Hi,
I am getting the following errors starting some days ago. It is unclear to me what is causing this. I searched internet, there are some similar reports that mention bugs causing this. I am running mailman3 as Ubuntu 18 package and they do not provide any update for this.
Internal Server Error: /mailman3/accounts/fedora/login/
ProgrammingError at /accounts/fedora/login/ relation "socialaccount_openidstore" does not exist LINE 1: SELECT COUNT(*) AS "__count" FROM "socialaccount_openidstore...
^
Request Method: GET
Request URL: https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Flistserv2…
Django Version: 1.11.11
Python Executable: /usr/bin/uwsgi-core
Python Version: 2.7.17
Python Path: ['.', '', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']
Server time: Tue, 27 Dec 2022 11:01:12 -0500 Installed Applications:
('hyperkitty',
'postorius',
'django_mailman3',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'django_gravatar',
'paintstore',
'compressor',
'haystack',
'django_extensions',
'django_q',
'allauth',
'allauth.account',
'allauth.socialaccount',
'django_mailman3.lib.auth.fedora')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django_mailman3.middleware.TimezoneMiddleware',
'postorius.middleware.PostoriusMiddleware')
Traceback:
File "/usr/lib/python2.7/dist-packages/django/core/handlers/exception.py" in inner
41. response = get_response(request)
File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in _legacy_get_response
249. response = self._get_response(request)
File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in _get_response
187. response = self.process_exception_by_middleware(e, request)
File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in _get_response
185. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/python2.7/dist-packages/django/views/generic/base.py" in view
68. return self.dispatch(request, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/django/views/generic/base.py" in dispatch
88. return handler(request, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/django_mailman3/lib/auth/fedora/views.py" in get
59. return self.post(request, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/django_mailman3/lib/auth/fedora/views.py" in post
72. auth_request = client.begin(form.cleaned_data['openid'])
File "/usr/lib/python2.7/dist-packages/openid/consumer/consumer.py" in begin
353. return self.beginWithoutDiscovery(service, anonymous)
File "/usr/lib/python2.7/dist-packages/openid/consumer/consumer.py" in beginWithoutDiscovery
376. auth_req = self.consumer.begin(service)
File "/usr/lib/python2.7/dist-packages/openid/consumer/consumer.py" in begin
598. assoc = self._getAssociation(service_endpoint)
File "/usr/lib/python2.7/dist-packages/openid/consumer/consumer.py" in _getAssociation
1158. assoc = self.store.getAssociation(endpoint.server_url)
File "/usr/lib/python2.7/dist-packages/allauth/socialaccount/providers/openid/utils.py" in getAssociation
96. if stored_assocs.count() == 0:
File "/usr/lib/python2.7/dist-packages/django/db/models/query.py" in count
364. return self.query.get_count(using=self.db)
File "/usr/lib/python2.7/dist-packages/django/db/models/sql/query.py" in get_count
504. number = obj.get_aggregation(using, ['__count'])['__count']
File "/usr/lib/python2.7/dist-packages/django/db/models/sql/query.py" in get_aggregation
485. result = compiler.execute_sql(SINGLE)
File "/usr/lib/python2.7/dist-packages/django/db/models/sql/compiler.py" in execute_sql
899. raise original_exception
Exception Type: ProgrammingError at /accounts/fedora/login/ Exception Value: relation "socialaccount_openidstore" does not exist LINE 1: SELECT COUNT(*) AS "__count" FROM "socialaccount_openidstore...
^
Request information:
USER: AnonymousUser
GET:
process = u'login'
next = u'/mailman3/hyperkitty/list/sec_g_zoom(a)listserv2.aaas.org/message/new'
POST: No POST data
FILES: No FILES data
COOKIES: No cookie data
META:
CONTEXT_DOCUMENT_ROOT = '/var/www/html'
CONTEXT_PREFIX = ''
DOCUMENT_ROOT = '/var/www/html'
GATEWAY_INTERFACE = 'CGI/1.1'
HTTPS = 'on'
HTTP_ACCEPT = '*/*'
HTTP_ACCEPT_ENCODING = 'gzip, deflate, br'
HTTP_CONNECTION = 'keep-alive'
HTTP_FROM = 'googlebot(at)googlebot.com'
HTTP_HOST = 'listserv2.aaas.org'
HTTP_USER_AGENT = 'Googlebot/2.1 (+https://nam12.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.google.com%2Fbot.html&data=05%7C01%7Cmmasoudf%40aaas.org%7Cc767333920c94048355708dae823947a%7C2eebd8ff9ed140f0a15638e5dfb3bc56%7C0%7C0%7C638077536774767693%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=8%2F5tgjkoHnu%2BWaHwrNVRzcJUh%2BcQ9%2BFUkmB3psMzKMU%3D&reserved=0)'
PATH = '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin'
PATH_INFO = u'/accounts/fedora/login/'
QUERY_STRING = 'process=login&next=%2Fmailman3%2Fhyperkitty%2Flist%2Fsec_g_zoom%40listserv2.aaas.org%2Fmessage%2Fnew'
REMOTE_ADDR = '66.249.66.53'
REMOTE_PORT = '37189'
REQUEST_METHOD = 'GET'
REQUEST_SCHEME = 'https'
REQUEST_URI = '/mailman3/accounts/fedora/login/?process=login&next=%2Fmailman3%2Fhyperkitty%2Flist%2Fsec_g_zoom%40listserv2.aaas.org%2Fmessage%2Fnew'
SCRIPT_FILENAME = 'proxy:uwsgi://localhost//accounts/fedora/login/'
SCRIPT_NAME = u'/mailman3'
SERVER_ADDR = '172.24.9.130'
SERVER_ADMIN = 'mmasoudf(a)aaas.org'
SERVER_NAME = 'listserv2.aaas.org'
SERVER_PORT = '443'
SERVER_PROTOCOL = 'HTTP/1.1'
SERVER_SIGNATURE = '<address>Apache/2.4.29 (Ubuntu) Server at listserv2.aaas.org Port 443</address>\n'
SERVER_SOFTWARE = 'Apache/2.4.29 (Ubuntu)'
SSL_TLS_SNI = 'listserv2.aaas.org'
uwsgi.core = 0
uwsgi.node = 'listserv2'
uwsgi.version = '2.0.15-debian'
wsgi.errors = <open file 'wsgi_errors', mode 'w' at 0x7fdfa1c748a0> wsgi.file_wrapper = ''
wsgi.input = <uwsgi._Input object at 0x7fdfa1ccc710> wsgi.multiprocess = False wsgi.multithread = True wsgi.run_once = False wsgi.url_scheme = 'https'
wsgi.version = u'(1, 0)'
Settings:
Using settings module settings
ABSOLUTE_URL_OVERRIDES = {}
ACCOUNT_AUTHENTICATION_METHOD = 'username_email'
ACCOUNT_DEFAULT_HTTP_PROTOCOL = 'https'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
ACCOUNT_UNIQUE_EMAIL = True
ADMINS = u"(('Mailman Suite Admin', 'mmasoudf(a)aaas.org'),)"
ALLOWED_HOSTS = ['*']
APPEND_SLASH = True
AUTHENTICATION_BACKENDS = u"('django.contrib.auth.backends.ModelBackend', 'allauth.account.auth_backends.AuthenticationBackend')"
AUTH_PASSWORD_VALIDATORS = u'********************'
AUTH_USER_MODEL = u'auth.User'
BASE_DIR = '/usr/share/mailman3-web'
CACHES = {u'default': {u'BACKEND': u'django.core.cache.backends.locmem.LocMemCache'}}
CACHE_MIDDLEWARE_ALIAS = u'default'
CACHE_MIDDLEWARE_KEY_PREFIX = u'********************'
CACHE_MIDDLEWARE_SECONDS = 600
COMPRESS_CACHEABLE_PRECOMPILERS = u'()'
COMPRESS_CACHE_BACKEND = u'default'
COMPRESS_CACHE_KEY_FUNCTION = u'********************'
COMPRESS_CLEAN_CSS_ARGUMENTS = u''
COMPRESS_CLEAN_CSS_BINARY = u'cleancss'
COMPRESS_CLOSURE_COMPILER_ARGUMENTS = u''
COMPRESS_CLOSURE_COMPILER_BINARY = u'java -jar compiler.jar'
COMPRESS_CSS_COMPRESSOR = u'compressor.css.CssCompressor'
COMPRESS_CSS_FILTERS = [u'compressor.filters.css_default.CssAbsoluteFilter']
COMPRESS_CSS_HASHING_METHOD = u'mtime'
COMPRESS_DATA_URI_MAX_SIZE = 1024
COMPRESS_DEBUG_TOGGLE = None
COMPRESS_ENABLED = True
COMPRESS_JINJA2_GET_ENVIRONMENT = <function JINJA2_GET_ENVIRONMENT at 0x7fdfa1de2f50> COMPRESS_JS_COMPRESSOR = u'compressor.js.JsCompressor'
COMPRESS_JS_FILTERS = [u'compressor.filters.jsmin.JSMinFilter']
COMPRESS_MINT_DELAY = 30
COMPRESS_MTIME_DELAY = 10
COMPRESS_OFFLINE = False
COMPRESS_OFFLINE_CONTEXT = {u'STATIC_URL': '/mailman3/static/'} COMPRESS_OFFLINE_MANIFEST = u'manifest.json'
COMPRESS_OFFLINE_TIMEOUT = 31536000
COMPRESS_OUTPUT_DIR = u'CACHE'
COMPRESS_PARSER = u'compressor.parser.AutoSelectParser'
COMPRESS_PRECOMPILERS = u"(('text/less', 'lessc {infile} {outfile}'), ('text/x-scss', 'sass -t compressed {infile} {outfile}'), ('text/x-sass', 'sass -t compressed {infile} {outfile}'))"
COMPRESS_REBUILD_TIMEOUT = 2592000
COMPRESS_ROOT = '/var/lib/mailman3/web/static'
COMPRESS_STORAGE = u'compressor.storage.CompressorFileStorage'
COMPRESS_TEMPLATE_FILTER_CONTEXT = {u'STATIC_URL': '/mailman3/static/'} COMPRESS_URL = '/mailman3/static/'
COMPRESS_URL_PLACEHOLDER = u'/__compressor_url_placeholder__/'
COMPRESS_VERBOSE = False
COMPRESS_YUGLIFY_BINARY = u'yuglify'
COMPRESS_YUGLIFY_CSS_ARGUMENTS = u'--terminal'
COMPRESS_YUGLIFY_JS_ARGUMENTS = u'--terminal'
COMPRESS_YUI_BINARY = u'java -jar yuicompressor.jar'
COMPRESS_YUI_CSS_ARGUMENTS = u''
COMPRESS_YUI_JS_ARGUMENTS = u''
CSRF_COOKIE_AGE = 31449600
CSRF_COOKIE_DOMAIN = None
CSRF_COOKIE_HTTPONLY = False
CSRF_COOKIE_NAME = u'csrftoken'
CSRF_COOKIE_PATH = u'/'
CSRF_COOKIE_SECURE = False
CSRF_FAILURE_VIEW = u'django.views.csrf.csrf_failure'
CSRF_HEADER_NAME = u'HTTP_X_CSRFTOKEN'
CSRF_TRUSTED_ORIGINS = []
CSRF_USE_SESSIONS = False
DATABASES = {'default': {'ENGINE': 'django.db.backends.postgresql_psycopg2', 'AUTOCOMMIT': True, 'ATOMIC_REQUESTS': False, 'NAME': 'mailman3web', 'CONN_MAX_AGE': 0, 'TIME_ZONE': None, 'PORT': '', 'HOST': 'localhost', 'USER': 'mailman3web', 'TEST': {'COLLATION': None, 'CHARSET': None, 'NAME': None, 'MIRROR': None}, 'PASSWORD': u'********************', 'OPTIONS': {}}} DATABASE_ROUTERS = [] DATA_UPLOAD_MAX_MEMORY_SIZE = 2621440 DATA_UPLOAD_MAX_NUMBER_FIELDS = 1000 DATETIME_FORMAT = u'N j, Y, P'
DATETIME_INPUT_FORMATS = [u'%Y-%m-%d %H:%M:%S', u'%Y-%m-%d %H:%M:%S.%f', u'%Y-%m-%d %H:%M', u'%Y-%m-%d', u'%m/%d/%Y %H:%M:%S', u'%m/%d/%Y %H:%M:%S.%f', u'%m/%d/%Y %H:%M', u'%m/%d/%Y', u'%m/%d/%y %H:%M:%S', u'%m/%d/%y %H:%M:%S.%f', u'%m/%d/%y %H:%M', u'%m/%d/%y'] DATE_FORMAT = u'N j, Y'
DATE_INPUT_FORMATS = [u'%Y-%m-%d', u'%m/%d/%Y', u'%m/%d/%y', u'%b %d %Y', u'%b %d, %Y', u'%d %b %Y', u'%d %b, %Y', u'%B %d %Y', u'%B %d, %Y', u'%d %B %Y', u'%d %B, %Y'] DEBUG = False DEBUG_PROPAGATE_EXCEPTIONS = False DECIMAL_SEPARATOR = u'.'
DEFAULT_CHARSET = u'utf-8'
DEFAULT_CONTENT_TYPE = u'text/html'
DEFAULT_EXCEPTION_REPORTER_FILTER = u'django.views.debug.SafeExceptionReporterFilter'
DEFAULT_FILE_STORAGE = u'django.core.files.storage.FileSystemStorage'
DEFAULT_FROM_EMAIL = 'postorius(a)listserv2.aaas.org'
DEFAULT_INDEX_TABLESPACE = u''
DEFAULT_TABLESPACE = u''
DISALLOWED_USER_AGENTS = []
EMAILNAME = 'listserv2.aaas.org'
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = u'localhost'
EMAIL_HOST_PASSWORD = u'********************'
EMAIL_HOST_USER = u''
EMAIL_PORT = 25
EMAIL_SSL_CERTFILE = None
EMAIL_SSL_KEYFILE = u'********************'
EMAIL_SUBJECT_PREFIX = u'[Django] '
EMAIL_TIMEOUT = None
EMAIL_USE_LOCALTIME = False
EMAIL_USE_SSL = False
EMAIL_USE_TLS = False
FILE_CHARSET = u'utf-8'
FILE_UPLOAD_DIRECTORY_PERMISSIONS = None FILE_UPLOAD_HANDLERS = [u'django.core.files.uploadhandler.MemoryFileUploadHandler', u'django.core.files.uploadhandler.TemporaryFileUploadHandler']
FILE_UPLOAD_MAX_MEMORY_SIZE = 2621440
FILE_UPLOAD_PERMISSIONS = None
FILE_UPLOAD_TEMP_DIR = None
FILTER_VHOST = False
FIRST_DAY_OF_WEEK = 0
FIXTURE_DIRS = []
FORCE_SCRIPT_NAME = None
FORMAT_MODULE_PATH = None
FORM_RENDERER = u'django.forms.renderers.DjangoTemplates'
HAYSTACK_CONNECTIONS = {'default': {'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine', 'PATH': '/var/lib/mailman3/web/fulltext_index'}}
HOSTNAME = 'localhost.local'
IGNORABLE_404_URLS = []
INSTALLED_APPS = u"('hyperkitty', 'postorius', 'django_mailman3', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'django_gravatar', 'paintstore', 'compressor', 'haystack', 'django_extensions', 'django_q', 'allauth', 'allauth.account', 'allauth.socialaccount', 'django_mailman3.lib.auth.fedora')"
INTERNAL_IPS = []
LANGUAGES = [(u'af', u'Afrikaans'), (u'ar', u'Arabic'), (u'ast', u'Asturian'), (u'az', u'Azerbaijani'), (u'bg', u'Bulgarian'), (u'be', u'Belarusian'), (u'bn', u'Bengali'), (u'br', u'Breton'), (u'bs', u'Bosnian'), (u'ca', u'Catalan'), (u'cs', u'Czech'), (u'cy', u'Welsh'), (u'da', u'Danish'), (u'de', u'German'), (u'dsb', u'Lower Sorbian'), (u'el', u'Greek'), (u'en', u'English'), (u'en-au', u'Australian English'), (u'en-gb', u'British English'), (u'eo', u'Esperanto'), (u'es', u'Spanish'), (u'es-ar', u'Argentinian Spanish'), (u'es-co', u'Colombian Spanish'), (u'es-mx', u'Mexican Spanish'), (u'es-ni', u'Nicaraguan Spanish'), (u'es-ve', u'Venezuelan Spanish'), (u'et', u'Estonian'), (u'eu', u'Basque'), (u'fa', u'Persian'), (u'fi', u'Finnish'), (u'fr', u'French'), (u'fy', u'Frisian'), (u'ga', u'Irish'), (u'gd', u'Scottish Gaelic'), (u'gl', u'Galician'), (u'he', u'Hebrew'), (u'hi', u'Hindi'), (u'hr', u'Croatian'), (u'hsb', u'Upper Sorbian'), (u'hu', u'Hungarian'), (u'ia', u'Interlingua'), (u'id', u'Indonesian'), (u'io', u'Ido'), (u'is', u'Icelandic'), (u'it', u'Italian'), (u'ja', u'Japanese'), (u'ka', u'Georgian'), (u'kk', u'Kazakh'), (u'km', u'Khmer'), (u'kn', u'Kannada'), (u'ko', u'Korean'), (u'lb', u'Luxembourgish'), (u'lt', u'Lithuanian'), (u'lv', u'Latvian'), (u'mk', u'Macedonian'), (u'ml', u'Malayalam'), (u'mn', u'Mongolian'), (u'mr', u'Marathi'), (u'my', u'Burmese'), (u'nb', u'Norwegian Bokm\xe5l'), (u'ne', u'Nepali'), (u'nl', u'Dutch'), (u'nn', u'Norwegian Nynorsk'), (u'os', u'Ossetic'), (u'pa', u'Punjabi'), (u'pl', u'Polish'), (u'pt', u'Portuguese'), (u'pt-br', u'Brazilian Portuguese'), (u'ro', u'Romanian'), (u'ru', u'Russian'), (u'sk', u'Slovak'), (u'sl', u'Slovenian'), (u'sq', u'Albanian'), (u'sr', u'Serbian'), (u'sr-latn', u'Serbian Latin'), (u'sv', u'Swedish'), (u'sw', u'Swahili'), (u'ta', u'Tamil'), (u'te', u'Telugu'), (u'th', u'Thai'), (u'tr', u'Turkish'), (u'tt', u'Tatar'), (u'udm', u'Udmurt'), (u'uk', u'Ukrainian'), (u'ur', u'Urdu'), (u'vi', u'Vietnamese'), (u'zh-hans', u'Simplified Chinese'), (u'zh-hant', u'Traditional Chinese')] LANGUAGES_BIDI = [u'he', u'ar', u'fa', u'ur'] LANGUAGE_CODE = 'en-us'
LANGUAGE_COOKIE_AGE = None
LANGUAGE_COOKIE_DOMAIN = None
LANGUAGE_COOKIE_NAME = u'django_language'
LANGUAGE_COOKIE_PATH = u'/'
LOCALE_PATHS = []
LOGGING = {'loggers': {'django': {'handlers': ['file'], 'propagate': True, 'level': 'INFO'}, 'hyperkitty': {'handlers': ['file'], 'propagate': True, 'level': 'INFO'}, 'django.request': {'handlers': ['mail_admins', 'file'], 'propagate': True, 'level': 'INFO'}, 'postorius': {'handlers': ['file'], 'propagate': True, 'level': 'INFO'}}, 'disable_existing_loggers': False, 'handlers': {'console': {'formatter': 'simple', 'class': 'logging.StreamHandler'}, 'file': {'level': 'INFO', 'formatter': 'verbose', 'class': 'logging.handlers.RotatingFileHandler', 'filename': '/var/log/mailman3/web/mailman-web.log'}, 'mail_admins': {'class': 'django.utils.log.AdminEmailHandler', 'filters': ['require_debug_false'], 'level': 'ERROR'}}, 'formatters': {'simple': {'format': '%(levelname)s %(message)s'}, 'verbose': {'format': '%(levelname)s %(asctime)s %(process)d %(name)s %(message)s'}}, 'version': 1, 'filters': {'require_debug_false': {'()': 'django.utils.log.RequireDebugFalse'}}}
LOGGING_CONFIG = u'logging.config.dictConfig'
LOGIN_REDIRECT_URL = 'list_index'
LOGIN_URL = 'account_login'
LOGOUT_REDIRECT_URL = None
LOGOUT_URL = 'account_logout'
MAILMAN_ARCHIVER_FROM = u"('127.0.0.1', '::1')"
MAILMAN_ARCHIVER_KEY = u'********************'
MAILMAN_REST_API_PASS = u'********************'
MAILMAN_REST_API_URL = u'********************'
MAILMAN_REST_API_USER = u'********************'
MANAGERS = []
MEDIA_ROOT = u''
MEDIA_URL = u''
MESSAGE_STORAGE = u'django.contrib.messages.storage.fallback.FallbackStorage'
MESSAGE_TAGS = {40: 'danger'}
MIDDLEWARE = None
MIDDLEWARE_CLASSES = u"('django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.security.SecurityMiddleware', 'django_mailman3.middleware.TimezoneMiddleware', 'postorius.middleware.PostoriusMiddleware')"
MIGRATION_MODULES = {}
MONTH_DAY_FORMAT = u'F j'
NUMBER_GROUPING = 0
PASSWORD_HASHERS = u'********************'
PASSWORD_RESET_TIMEOUT_DAYS = u'********************'
PREPEND_WWW = False
Q_CLUSTER = {'orm': 'default', 'save_limit': 100, 'timeout': 300} ROOT_URLCONF = 'urls'
SECRET_KEY = u'********************'
SECURE_BROWSER_XSS_FILTER = False
SECURE_CONTENT_TYPE_NOSNIFF = False
SECURE_HSTS_INCLUDE_SUBDOMAINS = False
SECURE_HSTS_PRELOAD = False
SECURE_HSTS_SECONDS = 0
SECURE_PROXY_SSL_HEADER = None
SECURE_REDIRECT_EXEMPT = []
SECURE_SSL_HOST = None
SECURE_SSL_REDIRECT = False
SERVER_EMAIL = 'root(a)listserv2.aaas.org'
SESSION_CACHE_ALIAS = u'default'
SESSION_COOKIE_AGE = 1209600
SESSION_COOKIE_DOMAIN = None
SESSION_COOKIE_HTTPONLY = True
SESSION_COOKIE_NAME = u'sessionid'
SESSION_COOKIE_PATH = u'/'
SESSION_COOKIE_SECURE = False
SESSION_ENGINE = u'django.contrib.sessions.backends.db'
SESSION_EXPIRE_AT_BROWSER_CLOSE = False
SESSION_FILE_PATH = None
SESSION_SAVE_EVERY_REQUEST = False
SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer'
SETTINGS_MODULE = 'settings'
SHORT_DATETIME_FORMAT = u'm/d/Y P'
SHORT_DATE_FORMAT = u'm/d/Y'
SIGNING_BACKEND = u'django.core.signing.TimestampSigner'
SILENCED_SYSTEM_CHECKS = []
SITE_ID = 1
SOCIALACCOUNT_PROVIDERS = {}
STATICFILES_DIRS = u'()'
STATICFILES_FINDERS = u"('django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder', 'compressor.finders.CompressorFinder')"
STATICFILES_STORAGE = u'django.contrib.staticfiles.storage.StaticFilesStorage'
STATIC_ROOT = '/var/lib/mailman3/web/static'
STATIC_URL = '/mailman3/static/'
TEMPLATES = [{'DIRS': [], 'APP_DIRS': True, 'OPTIONS': {'context_processors': ['django.template.context_processors.debug', 'django.template.context_processors.i18n', 'django.template.context_processors.media', 'django.template.context_processors.static', 'django.template.context_processors.tz', 'django.template.context_processors.csrf', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', 'django_mailman3.context_processors.common', 'hyperkitty.context_processors.common', 'postorius.context_processors.postorius']}, 'BACKEND': 'django.template.backends.django.DjangoTemplates'}]
TEST_NON_SERIALIZED_APPS = []
TEST_RUNNER = u'django.test.runner.DiscoverRunner'
THOUSAND_SEPARATOR = u','
TIME_FORMAT = u'P'
TIME_INPUT_FORMATS = [u'%H:%M:%S', u'%H:%M:%S.%f', u'%H:%M'] TIME_ZONE = 'UTC'
USE_ETAGS = False
USE_I18N = True
USE_L10N = True
USE_THOUSAND_SEPARATOR = False
USE_TZ = True
USE_X_FORWARDED_HOST = True
USE_X_FORWARDED_PORT = False
WSGI_APPLICATION = 'wsgi.application'
X_FRAME_OPTIONS = u'SAMEORIGIN'
YEAR_MONTH_FORMAT = u'F Y'
Best regards
Mohsen Masoudfar
3 years, 2 months
[MM3-users] Re: Hacking attempts?
by Tim Cutts
You could use an application like fail2ban to watch your mailman/web logs and automatically firewall off attacking IP addresses which cause a lot of these errors in a defined window of time. This application is independent from mailman, and you can use it to protect against all kinds of brute force attacks. Ssh, web, mail - anything that creates a log file recording errors from remote IP addresses.
Just be careful when configuring it for remote servers so you don’t saw off the branch you’re sitting on…. I run a mail server for my family, and on one occasion a family member repeatedly got her password wrong which caused fail2ban to lock all of us out because it blocked our home NAT address, and I had to use my mobile phone to unblock us. :-)
Tim
> On 14 Jul 2022, at 08:29, Lists via Mailman-users <mailman-users(a)mailman3.org> wrote:
>
> Hi,
>
> We are seeing thousands of these emails every day, looks like someone is trying to hack our Mailman3 but would appreciate someone with more knowledge of MM3 to confirm.
>
> Is this a problem with our setup? i.e. the “Internal Server Error” bit, or are the hackers just sending bad data that is causing the error? also how do we stop/block this?
>
> TIA and here is a typical email:
>
>
> Subject: [Django] ERROR (EXTERNAL IP): Internal Server Error: /mailman3/accounts/fedora/login/
>
> Internal Server Error: /mailman3/accounts/fedora/login/
>
> TypeError at /accounts/fedora/login/
> _openid_consumer() missing 2 required positional arguments: 'provider' and 'endpoint'
>
> Request Method: GET
> Request URL: https://mailman.ardc.net/mailman3/accounts/fedora/login/?process=login&next… <https://mailman.ardc.net/mailman3/accounts/fedora/login/?process=login&next…>
> Django Version: 2.2.26
> Python Executable: /usr/bin/uwsgi-core
> Python Version: 3.9.2
> Python Path: ['.', '', '/usr/lib/python39.zip', '/usr/lib/python3.9', '/usr/lib/python3.9/lib-dynload', '/usr/local/lib/python3.9/dist-packages', '/usr/lib/python3/dist-packages', '/usr/lib/python3.9/dist-packages']
> Server time: Thu, 14 Jul 2022 02:34:04 -0400
> Installed Applications:
> ('hyperkitty',
> 'postorius',
> 'django_mailman3',
> 'django.contrib.admin',
> 'django.contrib.auth',
> 'django.contrib.contenttypes',
> 'django.contrib.sessions',
> 'django.contrib.sites',
> 'django.contrib.messages',
> 'django.contrib.staticfiles',
> 'rest_framework',
> 'django_gravatar',
> 'compressor',
> 'haystack',
> 'django_extensions',
> 'django_q',
> 'allauth',
> 'allauth.account',
> 'allauth.socialaccount',
> 'django_mailman3.lib.auth.fedora')
> Installed Middleware:
> ('django.contrib.sessions.middleware.SessionMiddleware',
> 'django.middleware.common.CommonMiddleware',
> 'django.middleware.csrf.CsrfViewMiddleware',
> 'django.middleware.locale.LocaleMiddleware',
> 'django.contrib.auth.middleware.AuthenticationMiddleware',
> 'django.contrib.messages.middleware.MessageMiddleware',
> 'django.middleware.clickjacking.XFrameOptionsMiddleware',
> 'django.middleware.security.SecurityMiddleware',
> 'django_mailman3.middleware.TimezoneMiddleware',
> 'postorius.middleware.PostoriusMiddleware')
>
>
> Traceback:
>
> File "/usr/lib/python3/dist-packages/django/core/handlers/exception.py" in inner
> 34. response = get_response(request)
>
> File "/usr/lib/python3/dist-packages/django/core/handlers/base.py" in _get_response
> 115. response = self.process_exception_by_middleware(e, request)
>
> File "/usr/lib/python3/dist-packages/django/core/handlers/base.py" in _get_response
> 113. response = wrapped_callback(request, *callback_args, **callback_kwargs)
>
> File "/usr/lib/python3/dist-packages/django/views/generic/base.py" in view
> 71. return self.dispatch(request, *args, **kwargs)
>
> File "/usr/lib/python3/dist-packages/django/views/generic/base.py" in dispatch
> 97. return handler(request, *args, **kwargs)
>
> File "/usr/lib/python3/dist-packages/django_mailman3/lib/auth/fedora/views.py" in get
> 56. return self.post(request, *args, **kwargs)
>
> File "/usr/lib/python3/dist-packages/django_mailman3/lib/auth/fedora/views.py" in post
> 67. client = _openid_consumer(request)
>
> Exception Type: TypeError at /accounts/fedora/login/
> Exception Value: _openid_consumer() missing 2 required positional arguments: 'provider' and 'endpoint'
> Request information:
> USER: AnonymousUser
>
> GET:
> process = 'login'
> next = '/mailman3/hyperkitty/list/44net(a)mailman.ampr.org <mailto:mailman3/hyperkitty/list/44net@mailman.ampr.org>/message/O5Z2YZBJZXFPH2ACAORN6BST7B2S3M3P/'
>
> POST: No POST data
>
> FILES: No FILES data
>
> COOKIES: No cookie data
>
> META:
> CONTEXT_DOCUMENT_ROOT = '/var/www/html'
> CONTEXT_PREFIX = ''
> DOCUMENT_ROOT = '/var/www/html'
> GATEWAY_INTERFACE = 'CGI/1.1'
> HTTPS = 'on'
> HTTP_ACCEPT = 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
> HTTP_ACCEPT_ENCODING = 'gzip,deflate'
> HTTP_CONNECTION = 'Keep-Alive'
> HTTP_HOST = 'mailman.ardc.net <http://mailman.ardc.net/>'
> HTTP_USER_AGENT = 'Mozilla/5.0 (compatible; BLEXBot/1.0; +http://webmeup-crawler.com/ <http://webmeup-crawler.com/>)'
> PATH = '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
> PATH_INFO = '/accounts/fedora/login/'
> QUERY_STRING = 'process=login&next=/mailman3/hyperkitty/list/44net(a)mailman.ampr.org <mailto:process=login&next=/mailman3/hyperkitty/list/44net@mailman.ampr.org>/message/O5Z2YZBJZXFPH2ACAORN6BST7B2S3M3P/'
> REMOTE_ADDR = '157.90.177.212'
> REMOTE_PORT = '63384'
> REQUEST_METHOD = 'GET'
> REQUEST_SCHEME = 'https'
> REQUEST_URI = '/mailman3/accounts/fedora/login/?process=login&next=/mailman3/hyperkitty/list/44net(a)mailman.ampr.org <mailto:mailman3/accounts/fedora/login/?process=login&next=/mailman3/hyperkitty/list/44net@mailman.ampr.org>/message/O5Z2YZBJZXFPH2ACAORN6BST7B2S3M3P/'
> SCRIPT_FILENAME = 'proxy:uwsgi://localhost//accounts/fedora/login/' <uwsgi://localhost//accounts/fedora/login/'>
> SCRIPT_NAME = '/mailman3'
> SERVER_ADDR = '44.1.1.29'
> SERVER_ADMIN = 'postmaster(a)ardc.net <mailto:postmaster@ardc.net>'
> SERVER_NAME = 'mailman.ardc.net <http://mailman.ardc.net/>'
> SERVER_PORT = '443'
> SERVER_PROTOCOL = 'HTTP/1.1'
> SERVER_SIGNATURE = '<address>Apache/2.4.53 (Debian) Server at mailman.ardc.net <http://mailman.ardc.net/> Port 443</address>\n'
> SERVER_SOFTWARE = 'Apache/2.4.53 (Debian)'
> SSL_TLS_SNI = 'mailman.ardc.net <http://mailman.ardc.net/>'
> uwsgi.core = 1
> uwsgi.node = b'mailman'
> uwsgi.version = b'2.0.19.1-debian'
> wsgi.errors = <_io.TextIOWrapper name=2 mode='w' encoding='UTF-8'>
> wsgi.file_wrapper = ''
> wsgi.input = <uwsgi._Input object at 0x7f8e0b4a0410>
> wsgi.multiprocess = False
> wsgi.multithread = True
> wsgi.run_once = False
> wsgi.url_scheme = 'https'
> wsgi.version = '(1, 0)'
>
> Settings:
> Using settings module settings
> ABSOLUTE_URL_OVERRIDES = {}
> ACCOUNT_AUTHENTICATION_METHOD = 'username_email'
> ACCOUNT_DEFAULT_HTTP_PROTOCOL = 'https'
> ACCOUNT_EMAIL_REQUIRED = True
> ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
> ACCOUNT_UNIQUE_EMAIL = True
> ADMINS = "(('Mailman Suite Admin', 'postmaster(a)ardc.net <mailto:postmaster@ardc.net>'),)"
> ALLOWED_HOSTS = ['*']
> APPEND_SLASH = True
> AUTHENTICATION_BACKENDS = "('django.contrib.auth.backends.ModelBackend', 'allauth.account.auth_backends.AuthenticationBackend')"
> AUTH_PASSWORD_VALIDATORS = '********************'
> AUTH_USER_MODEL = 'auth.User'
> BASE_DIR = '/usr/share/mailman3-web'
> CACHES = {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}}
> CACHE_MIDDLEWARE_ALIAS = 'default'
> CACHE_MIDDLEWARE_KEY_PREFIX = '********************'
> CACHE_MIDDLEWARE_SECONDS = 600
> COMPRESSORS = {'css': 'compressor.css.CssCompressor', 'js': 'compressor.js.JsCompressor'}
> COMPRESS_CACHEABLE_PRECOMPILERS = '()'
> COMPRESS_CACHE_BACKEND = 'default'
> COMPRESS_CACHE_KEY_FUNCTION = '********************'
> COMPRESS_CLEAN_CSS_ARGUMENTS = ''
> COMPRESS_CLEAN_CSS_BINARY = 'cleancss'
> COMPRESS_CLOSURE_COMPILER_ARGUMENTS = ''
> COMPRESS_CLOSURE_COMPILER_BINARY = 'java -jar compiler.jar'
> COMPRESS_CSS_HASHING_METHOD = 'mtime'
> COMPRESS_DATA_URI_MAX_SIZE = 1024
> COMPRESS_DEBUG_TOGGLE = None
> COMPRESS_ENABLED = True
> COMPRESS_FILTERS = {'css': ['compressor.filters.css_default.CssAbsoluteFilter'], 'js': ['compressor.filters.jsmin.JSMinFilter']}
> COMPRESS_JINJA2_GET_ENVIRONMENT = <function CompressorConf.JINJA2_GET_ENVIRONMENT at 0x7f8e17d7a670>
> COMPRESS_MINT_DELAY = 30
> COMPRESS_MTIME_DELAY = 10
> COMPRESS_OFFLINE = True
> COMPRESS_OFFLINE_CONTEXT = {'STATIC_URL': '/mailman3/static/'}
> COMPRESS_OFFLINE_MANIFEST = 'manifest.json'
> COMPRESS_OFFLINE_TIMEOUT = 31536000
> COMPRESS_OUTPUT_DIR = 'CACHE'
> COMPRESS_PARSER = 'compressor.parser.AutoSelectParser'
> COMPRESS_PRECOMPILERS = '()'
> COMPRESS_REBUILD_TIMEOUT = 2592000
> COMPRESS_ROOT = '/var/lib/mailman3/web/static'
> COMPRESS_STORAGE = 'compressor.storage.CompressorFileStorage'
> COMPRESS_TEMPLATE_FILTER_CONTEXT = {'STATIC_URL': '/mailman3/static/'}
> COMPRESS_URL = '/mailman3/static/'
> COMPRESS_URL_PLACEHOLDER = '/__compressor_url_placeholder__/'
> COMPRESS_VERBOSE = False
> COMPRESS_YUGLIFY_BINARY = 'yuglify'
> COMPRESS_YUGLIFY_CSS_ARGUMENTS = '--terminal'
> COMPRESS_YUGLIFY_JS_ARGUMENTS = '--terminal'
> COMPRESS_YUI_BINARY = 'java -jar yuicompressor.jar'
> COMPRESS_YUI_CSS_ARGUMENTS = ''
> COMPRESS_YUI_JS_ARGUMENTS = ''
> CSRF_COOKIE_AGE = 31449600
> CSRF_COOKIE_DOMAIN = None
> CSRF_COOKIE_HTTPONLY = False
> CSRF_COOKIE_NAME = 'csrftoken'
> CSRF_COOKIE_PATH = '/'
> CSRF_COOKIE_SAMESITE = 'Lax'
> CSRF_COOKIE_SECURE = False
> CSRF_FAILURE_VIEW = 'django.views.csrf.csrf_failure'
> CSRF_HEADER_NAME = 'HTTP_X_CSRFTOKEN'
> CSRF_TRUSTED_ORIGINS = []
> CSRF_USE_SESSIONS = False
> DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql', 'NAME': 'mailman', 'USER': 'mailman', 'PASSWORD': '********************', 'HOST': ‘X.X.X.X', 'PORT': '', 'OPTIONS': {'init_command': "SET sql_mode='STRICT_TRANS_TABLES'", 'charset': 'utf8mb4'}, 'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0, 'TIME_ZONE': None, 'TEST': {'CHARSET': None, 'COLLATION': None, 'NAME': None, 'MIRROR': None}}}
> DATABASE_ROUTERS = []
> DATA_UPLOAD_MAX_MEMORY_SIZE = 2621440
> DATA_UPLOAD_MAX_NUMBER_FIELDS = 1000
> DATETIME_FORMAT = 'N j, Y, P'
> DATETIME_INPUT_FORMATS = ['%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f', '%Y-%m-%d %H:%M', '%Y-%m-%d', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%Y', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M', '%m/%d/%y']
> DATE_FORMAT = 'N j, Y'
> DATE_INPUT_FORMATS = ['%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', '%b %d %Y', '%b %d, %Y', '%d %b %Y', '%d %b, %Y', '%B %d %Y', '%B %d, %Y', '%d %B %Y', '%d %B, %Y']
> DEBUG = False
> DEBUG_PROPAGATE_EXCEPTIONS = False
> DECIMAL_SEPARATOR = '.'
> DEFAULT_CHARSET = 'utf-8'
> DEFAULT_CONTENT_TYPE = 'text/html'
> DEFAULT_EXCEPTION_REPORTER_FILTER = 'django.views.debug.SafeExceptionReporterFilter'
> DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
> DEFAULT_FROM_EMAIL = 'postorius(a)mailman.ardc.net <mailto:postorius@mailman.ardc.net>'
> DEFAULT_INDEX_TABLESPACE = ''
> DEFAULT_TABLESPACE = ''
> DISALLOWED_USER_AGENTS = []
> EMAILNAME = 'mailman.ardc.net <http://mailman.ardc.net/>'
> EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
> EMAIL_HOST = 'localhost'
> EMAIL_HOST_PASSWORD = '********************'
> EMAIL_HOST_USER = ''
> EMAIL_PORT = 25
> EMAIL_SSL_CERTFILE = None
> EMAIL_SSL_KEYFILE = '********************'
> EMAIL_SUBJECT_PREFIX = '[Django] '
> EMAIL_TIMEOUT = None
> EMAIL_USE_LOCALTIME = False
> EMAIL_USE_SSL = False
> EMAIL_USE_TLS = False
> FILE_CHARSET = 'utf-8'
> FILE_UPLOAD_DIRECTORY_PERMISSIONS = None
> FILE_UPLOAD_HANDLERS = ['django.core.files.uploadhandler.MemoryFileUploadHandler', 'django.core.files.uploadhandler.TemporaryFileUploadHandler']
> FILE_UPLOAD_MAX_MEMORY_SIZE = 2621440
> FILE_UPLOAD_PERMISSIONS = None
> FILE_UPLOAD_TEMP_DIR = None
> FILTER_VHOST = False
> FIRST_DAY_OF_WEEK = 0
> FIXTURE_DIRS = []
> FORCE_SCRIPT_NAME = None
> FORMAT_MODULE_PATH = None
> FORM_RENDERER = 'django.forms.renderers.DjangoTemplates'
> HAYSTACK_CONNECTIONS = {'default': {'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine', 'PATH': '/var/lib/mailman3/web/fulltext_index'}}
> HOSTNAME = 'localhost.local'
> IGNORABLE_404_URLS = []
> INSTALLED_APPS = "('hyperkitty', 'postorius', 'django_mailman3', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'django_gravatar', 'compressor', 'haystack', 'django_extensions', 'django_q', 'allauth', 'allauth.account', 'allauth.socialaccount', 'django_mailman3.lib.auth.fedora')"
> INTERNAL_IPS = []
> LANGUAGES = [('af', 'Afrikaans'), ('ar', 'Arabic'), ('ast', 'Asturian'), ('az', 'Azerbaijani'), ('bg', 'Bulgarian'), ('be', 'Belarusian'), ('bn', 'Bengali'), ('br', 'Breton'), ('bs', 'Bosnian'), ('ca', 'Catalan'), ('cs', 'Czech'), ('cy', 'Welsh'), ('da', 'Danish'), ('de', 'German'), ('dsb', 'Lower Sorbian'), ('el', 'Greek'), ('en', 'English'), ('en-au', 'Australian English'), ('en-gb', 'British English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('es-ar', 'Argentinian Spanish'), ('es-co', 'Colombian Spanish'), ('es-mx', 'Mexican Spanish'), ('es-ni', 'Nicaraguan Spanish'), ('es-ve', 'Venezuelan Spanish'), ('et', 'Estonian'), ('eu', 'Basque'), ('fa', 'Persian'), ('fi', 'Finnish'), ('fr', 'French'), ('fy', 'Frisian'), ('ga', 'Irish'), ('gd', 'Scottish Gaelic'), ('gl', 'Galician'), ('he', 'Hebrew'), ('hi', 'Hindi'), ('hr', 'Croatian'), ('hsb', 'Upper Sorbian'), ('hu', 'Hungarian'), ('hy', 'Armenian'), ('ia', 'Interlingua'), ('id', 'Indonesian'), ('io', 'Ido'), ('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka', 'Georgian'), ('kab', 'Kabyle'), ('kk', 'Kazakh'), ('km', 'Khmer'), ('kn', 'Kannada'), ('ko', 'Korean'), ('lb', 'Luxembourgish'), ('lt', 'Lithuanian'), ('lv', 'Latvian'), ('mk', 'Macedonian'), ('ml', 'Malayalam'), ('mn', 'Mongolian'), ('mr', 'Marathi'), ('my', 'Burmese'), ('nb', 'Norwegian Bokmål'), ('ne', 'Nepali'), ('nl', 'Dutch'), ('nn', 'Norwegian Nynorsk'), ('os', 'Ossetic'), ('pa', 'Punjabi'), ('pl', 'Polish'), ('pt', 'Portuguese'), ('pt-br', 'Brazilian Portuguese'), ('ro', 'Romanian'), ('ru', 'Russian'), ('sk', 'Slovak'), ('sl', 'Slovenian'), ('sq', 'Albanian'), ('sr', 'Serbian'), ('sr-latn', 'Serbian Latin'), ('sv', 'Swedish'), ('sw', 'Swahili'), ('ta', 'Tamil'), ('te', 'Telugu'), ('th', 'Thai'), ('tr', 'Turkish'), ('tt', 'Tatar'), ('udm', 'Udmurt'), ('uk', 'Ukrainian'), ('ur', 'Urdu'), ('vi', 'Vietnamese'), ('zh-hans', 'Simplified Chinese'), ('zh-hant', 'Traditional Chinese')]
> LANGUAGES_BIDI = ['he', 'ar', 'fa', 'ur']
> LANGUAGE_CODE = 'en-us'
> LANGUAGE_COOKIE_AGE = None
> LANGUAGE_COOKIE_DOMAIN = None
> LANGUAGE_COOKIE_NAME = 'django_language'
> LANGUAGE_COOKIE_PATH = '/'
> LOCALE_PATHS = []
> LOGGING = {'version': 1, 'disable_existing_loggers': False, 'filters': {'require_debug_false': {'()': 'django.utils.log.RequireDebugFalse'}}, 'handlers': {'mail_admins': {'level': 'ERROR', 'filters': ['require_debug_false'], 'class': 'django.utils.log.AdminEmailHandler'}, 'file': {'level': 'INFO', 'class': 'logging.handlers.RotatingFileHandler', 'filename': '/var/log/mailman3/web/mailman-web.log', 'formatter': 'verbose'}, 'console': {'class': 'logging.StreamHandler', 'formatter': 'simple'}}, 'loggers': {'django.request': {'handlers': ['mail_admins', 'file'], 'level': 'INFO', 'propagate': True}, 'django': {'handlers': ['file'], 'level': 'INFO', 'propagate': True}, 'hyperkitty': {'handlers': ['file'], 'level': 'INFO', 'propagate': True}, 'postorius': {'handlers': ['file'], 'level': 'INFO', 'propagate': True}}, 'formatters': {'verbose': {'format': '%(levelname)s %(asctime)s %(process)d %(name)s %(message)s'}, 'simple': {'format': '%(levelname)s %(message)s'}}}
> LOGGING_CONFIG = 'logging.config.dictConfig'
> LOGIN_REDIRECT_URL = 'list_index'
> LOGIN_URL = 'account_login'
> LOGOUT_REDIRECT_URL = None
> LOGOUT_URL = 'account_logout'
> MAILMAN_ARCHIVER_FROM = "('127.0.0.1', '::1', '10.4.16.129', '44.1.1.29')"
> MAILMAN_ARCHIVER_KEY = '********************'
> MAILMAN_REST_API_PASS = '********************'
> MAILMAN_REST_API_URL = '********************'
> MAILMAN_REST_API_USER = '********************'
> MANAGERS = []
> MEDIA_ROOT = ''
> MEDIA_URL = ''
> MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage'
> MESSAGE_TAGS = {40: 'danger'}
> MIDDLEWARE = "('django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.security.SecurityMiddleware', 'django_mailman3.middleware.TimezoneMiddleware', 'postorius.middleware.PostoriusMiddleware')"
> MIGRATION_MODULES = {}
> MONTH_DAY_FORMAT = 'F j'
> NUMBER_GROUPING = 0
> PASSWORD_HASHERS = '********************'
> PASSWORD_RESET_TIMEOUT_DAYS = '********************'
> POSTORIUS_TEMPLATE_BASE_URL = 'http://localhost/mailman3/ <http://localhost/mailman3/>'
> PREPEND_WWW = False
> Q_CLUSTER = {'timeout': 300, 'save_limit': 100, 'orm': 'default', 'poll': 5}
> ROOT_URLCONF = 'urls'
> SECRET_KEY = '********************'
> SECURE_BROWSER_XSS_FILTER = False
> SECURE_CONTENT_TYPE_NOSNIFF = False
> SECURE_HSTS_INCLUDE_SUBDOMAINS = False
> SECURE_HSTS_PRELOAD = False
> SECURE_HSTS_SECONDS = 0
> SECURE_PROXY_SSL_HEADER = None
> SECURE_REDIRECT_EXEMPT = []
> SECURE_SSL_HOST = None
> SECURE_SSL_REDIRECT = False
> SERVER_EMAIL = 'root(a)mailman.ardc.net <mailto:root@mailman.ardc.net>'
> SESSION_CACHE_ALIAS = 'default'
> SESSION_COOKIE_AGE = 1209600
> SESSION_COOKIE_DOMAIN = None
> SESSION_COOKIE_HTTPONLY = True
> SESSION_COOKIE_NAME = 'sessionid'
> SESSION_COOKIE_PATH = '/'
> SESSION_COOKIE_SAMESITE = 'Lax'
> SESSION_COOKIE_SECURE = False
> SESSION_ENGINE = 'django.contrib.sessions.backends.db'
> SESSION_EXPIRE_AT_BROWSER_CLOSE = False
> SESSION_FILE_PATH = None
> SESSION_SAVE_EVERY_REQUEST = False
> SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer'
> SETTINGS_MODULE = 'settings'
> SHORT_DATETIME_FORMAT = 'm/d/Y P'
> SHORT_DATE_FORMAT = 'm/d/Y'
> SIGNING_BACKEND = 'django.core.signing.TimestampSigner'
> SILENCED_SYSTEM_CHECKS = []
> SITE_ID = 1
> SOCIALACCOUNT_PROVIDERS = {}
> STATICFILES_DIRS = '()'
> STATICFILES_FINDERS = "('django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder', 'compressor.finders.CompressorFinder')"
> STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage'
> STATIC_ROOT = '/var/lib/mailman3/web/static'
> STATIC_URL = '/mailman3/static/'
> TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': {'context_processors': ['django.template.context_processors.debug', 'django.template.context_processors.i18n', 'django.template.context_processors.media', 'django.template.context_processors.static', 'django.template.context_processors.tz', 'django.template.context_processors.csrf', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', 'django_mailman3.context_processors.common', 'hyperkitty.context_processors.common', 'postorius.context_processors.postorius']}}]
> TEST_NON_SERIALIZED_APPS = []
> TEST_RUNNER = 'django.test.runner.DiscoverRunner'
> THOUSAND_SEPARATOR = ','
> TIME_FORMAT = 'P'
> TIME_INPUT_FORMATS = ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']
> TIME_ZONE = 'UTC'
> USE_I18N = True
> USE_L10N = True
> USE_THOUSAND_SEPARATOR = False
> USE_TZ = True
> USE_X_FORWARDED_HOST = True
> USE_X_FORWARDED_PORT = False
> WSGI_APPLICATION = 'wsgi.application'
> X_FRAME_OPTIONS = 'SAMEORIGIN'
> YEAR_MONTH_FORMAT = 'F Y’
>
>
>
>
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
3 years, 7 months
[MM3-users] Re: using SSH/TLS with external MTA
by Roland Giesler
On 2024/07/28 00:39, Mark Sapiro wrote:
> On 7/27/24 15:16, Roland Giesler via Mailman-users wrote:
>>
>> The server runs power-mailinabox, which uses Postfix indeed. All my
>> mail, and quite a few others' mail is sent from the using SMTP-Auth
>> on port 465. Actually, this message is sent via that server too. So
>> it's clear to me that MM3 is not authenticating for some reason.
>
> What do you see in Mailman's smtp.log and in the mail.log on the mail
> server?
The smtp log is in syslog...
Jul 28 12:48:19 mailman postfix/smtpd[63855]: connect from localhost[::1]
Jul 28 12:48:19 mailman postfix/smtpd[63855]: NOQUEUE: reject: RCPT from
localhost[::1]: 454 4.7.1 <roland(a)giesler.za.net>: Relay access denied;
from=<postorius(a)giesler.za.net> to=<roland(a)giesler.za.net> proto=ESMTP
helo=<mailman.fast.za.net>
Jul 28 12:48:19 mailman postfix/smtpd[63769]: lost connection after RSET
from localhost[::1]
Jul 28 12:48:19 mailman postfix/smtpd[63769]: disconnect from
localhost[::1] ehlo=1 mail=1 rcpt=0/1 rset=1 commands=3/4
Jul 28 12:48:19 mailman postfix/smtpd[63769]: connect from localhost[::1]
Jul 28 12:48:19 mailman postfix/smtpd[63769]: 4D0DE120A5B:
client=localhost[::1]
Jul 28 12:48:19 mailman postfix/cleanup[63291]: 4D0DE120A5B:
message-id=<172217089931.2150.9004701361968608890(a)mailman.fast.za.net>
Jul 28 12:48:19 mailman postfix/qmgr[330]: 4D0DE120A5B:
from=<root(a)giesler.za.net>, size=21782, nrcpt=1 (queue active)
Jul 28 12:48:19 mailman postfix/smtpd[63769]: disconnect from
localhost[::1] ehlo=1 mail=1 rcpt=1 data=1 quit=1 commands=5
Jul 28 12:48:19 mailman postfix/local[63575]: 4D0DE120A5B:
to=<root@localhost>, relay=local, delay=0.01, delays=0.01/0/0/0,
dsn=2.0.0, status=sent (delivered to mailbox)
Jul 28 12:48:19 mailman postfix/qmgr[330]: 4D0DE120A5B: removed
I think I see what's going on here. The mail is being sent from
postorius(a)giesler.za.net and there is no log entry on
box2.gtahardware.co.za that shows this logon attempt. So it seems it's
not going to that server, but rather to the local postfix.
A mail was sent to root on the localhost with the following content:
Return-Path: <root(a)giesler.za.net>
X-Original-To: root@localhost
Delivered-To: root@localhost
Received: from mailman.fast.za.net (localhost [IPv6:::1])
by mailman.localdomain (Postfix) with ESMTP id 2174A120A5B
for <root@localhost>; Sun, 28 Jul 2024 13:11:03 +0000 (UTC)
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Subject: [Django] ERROR (EXTERNAL IP): Internal Server Error:
/accounts/login/
From: root(a)giesler.za.net
To: root@localhost
Date: Sun, 28 Jul 2024 13:11:03 -0000
Message-ID: <172217226313.2150.10895652368679013629(a)mailman.fast.za.net>
Internal Server Error: /accounts/login/
SMTPRecipientsRefused at /accounts/login/
{'roland(a)giesler.za.net': (454, b'4.7.1 <roland(a)giesler.za.net>: Relay acce=
ss denied')}
Request Method: POST
Request URL: http://192.168.161.103/accounts/login/
Django Version: 3.2.12
Python Executable: /usr/bin/uwsgi-core
Python Version: 3.10.12
Python Path: ['.', '', '/usr/lib/python310.zip', '/usr/lib/python3.10', '/u=
sr/lib/python3.10/lib-dynload', '/usr/local/lib/python3.10/dist-packages', =
'/usr/lib/python3/dist-packages', '/usr/lib/python3.10/dist-packages']
Server time: Sun, 28 Jul 2024 15:11:03 +0200
Installed Applications:
('hyperkitty',
'postorius',
'django_mailman3',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'django_gravatar',
'compressor',
'haystack',
'django_extensions',
'django_q',
'allauth',
'allauth.account',
'allauth.socialaccount',
'django_mailman3.lib.auth.fedora')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django_mailman3.middleware.TimezoneMiddleware',
'postorius.middleware.PostoriusMiddleware')
Traceback (most recent call last):
File
"/usr/lib/python3/dist-packages/django/core/handlers/exception.py", line
47, in inner
response =3D get_response(request)
File "/usr/lib/python3/dist-packages/django/core/handlers/base.py",
line 181, in _get_response
response =3D wrapped_callback(request, *callback_args,
**callback_kwargs)
File "/usr/lib/python3/dist-packages/django/views/generic/base.py",
line 70, in view
return self.dispatch(request, *args, **kwargs)
File "/usr/lib/python3/dist-packages/django/utils/decorators.py",
line 43, in _wrapper
return bound_method(*args, **kwargs)
File
"/usr/lib/python3/dist-packages/django/views/decorators/debug.py", line
89, in sensitive_post_parameters_wrapper
return view(request, *args, **kwargs)
File "/usr/lib/python3/dist-packages/allauth/account/views.py", line
146, in dispatch
return super(LoginView, self).dispatch(request, *args, **kwargs)
File "/usr/lib/python3/dist-packages/allauth/account/views.py", line
74, in dispatch
response =3D super(RedirectAuthenticatedUserMixin, self).dispatch(
File "/usr/lib/python3/dist-packages/django/views/generic/base.py",
line 98, in dispatch
return handler(request, *args, **kwargs)
File "/usr/lib/python3/dist-packages/allauth/account/views.py", line
102, in post
response =3D self.form_valid(form)
File "/usr/lib/python3/dist-packages/allauth/account/views.py", line
159, in form_valid
return form.login(self.request, redirect_url=3Dsuccess_url)
File "/usr/lib/python3/dist-packages/allauth/account/forms.py", line
196, in login
ret =3D perform_login(
File "/usr/lib/python3/dist-packages/allauth/account/utils.py", line
175, in perform_login
send_email_confirmation(request, user, signup=3Dsignup, email=3Demail)
File "/usr/lib/python3/dist-packages/allauth/account/utils.py", line
346, in send_email_confirmation
email_address.send_confirmation(request, signup=3Dsignup)
File "/usr/lib/python3/dist-packages/allauth/account/models.py", line
62, in send_confirmation
confirmation.send(request, signup=3Dsignup)
File "/usr/lib/python3/dist-packages/allauth/account/models.py", line
169, in send
get_adapter(request).send_confirmation_mail(request, self, signup)
File "/usr/lib/python3/dist-packages/allauth/account/adapter.py",
line 464, in send_confirmation_mail
self.send_mail(email_template,
emailconfirmation.email_address.email, ctx)
File "/usr/lib/python3/dist-packages/allauth/account/adapter.py",
line 136, in send_mail
msg.send()
File "/usr/lib/python3/dist-packages/django/core/mail/message.py",
line 284, in send
return self.get_connection(fail_silently).send_messages([self])
File
"/usr/lib/python3/dist-packages/django/core/mail/backends/smtp.py", line
109, in send_messages
sent =3D self._send(message)
File
"/usr/lib/python3/dist-packages/django/core/mail/backends/smtp.py", line
125, in _send
self.connection.sendmail(from_email, recipients,
message.as_bytes(linesep=3D'\r\n'))
File "/usr/lib/python3.10/smtplib.py", line 901, in sendmail
raise SMTPRecipientsRefused(senderrs)
Exception Type: SMTPRecipientsRefused at /accounts/login/
Exception Value: {'roland(a)giesler.za.net': (454, b'4.7.1
<roland(a)giesler.za.net>: Relay access denied')}
Request information:
USER: AnonymousUser
GET: No GET data
POST:
csrfmiddlewaretoken =3D
'41gp97hhfO2FhiEzOFLf1c5P3WLxk5TZvOgF0Qske6zI3EHtk8YK3w6wlEhLQAVS'
login =3D 'roland(a)giesler.za.net'
password =3D '********************'
next =3D '/postorius/lists/'
FILES: No FILES data
COOKIES:
csrftoken =3D
'aW8mw1heNIcuQ1YTMwnWMzi9DMaDFES6BJ8CnKshM0JxCn1NiZArOTjQVuGRb9UZ'
META:
CONTENT_LENGTH =3D '164'
CONTENT_TYPE =3D 'application/x-www-form-urlencoded'
CSRF_COOKIE =3D
'aW8mw1heNIcuQ1YTMwnWMzi9DMaDFES6BJ8CnKshM0JxCn1NiZArOTjQVuGRb9UZ'
DOCUMENT_ROOT =3D '/usr/share/nginx/html'
HTTP_ACCEPT =3D
'text/html,application/xhtml+xml,application/xml;q=3D0.9,image/avif,image/webp,image/apng,*/*;q=3D0.8'
HTTP_ACCEPT_ENCODING =3D 'gzip, deflate'
HTTP_ACCEPT_LANGUAGE =3D 'en-GB,en'
HTTP_CACHE_CONTROL =3D 'max-age=3D0'
HTTP_CONNECTION =3D 'keep-alive'
HTTP_CONTENT_LENGTH =3D '164'
HTTP_CONTENT_TYPE =3D 'application/x-www-form-urlencoded'
HTTP_COOKIE =3D
'csrftoken=3DaW8mw1heNIcuQ1YTMwnWMzi9DMaDFES6BJ8CnKshM0JxCn1NiZArOTjQVuGRb9UZ'
HTTP_HOST =3D '192.168.161.103'
HTTP_ORIGIN =3D 'http://192.168.161.103'
HTTP_REFERER =3D
'http://192.168.161.103/accounts/login/?next=3D/postorius/lists/'
HTTP_SEC_GPC =3D '1'
HTTP_UPGRADE_INSECURE_REQUESTS =3D '1'
HTTP_USER_AGENT =3D 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36'
PATH_INFO =3D '/accounts/login/'
QUERY_STRING =3D ''
REMOTE_ADDR =3D '192.168.131.150'
REMOTE_PORT =3D '60098'
REQUEST_METHOD =3D 'POST'
REQUEST_SCHEME =3D 'http'
REQUEST_URI =3D '/accounts/login/'
SCRIPT_NAME =3D ''
SERVER_NAME =3D ''
SERVER_PORT =3D '80'
SERVER_PROTOCOL =3D 'HTTP/1.1'
uwsgi.core =3D 1
uwsgi.node =3D b'mailman'
uwsgi.version =3D b'2.0.20-debian'
wsgi.errors =3D <_io.TextIOWrapper name=3D2 mode=3D'w'
encoding=3D'ANSI_X3.4-1968'>
wsgi.file_wrapper =3D <built-in function uwsgi_sendfile>
wsgi.input =3D <uwsgi._Input object at 0x7facb44bd530>
wsgi.multiprocess =3D False
wsgi.multithread =3D True
wsgi.run_once =3D False
wsgi.url_scheme =3D 'http'
wsgi.version =3D '(1, 0)'
Settings:
Using settings module settings
ABSOLUTE_URL_OVERRIDES =3D {}
ACCOUNT_AUTHENTICATION_METHOD =3D 'username_email'
ACCOUNT_DEFAULT_HTTP_PROTOCOL =3D 'https'
ACCOUNT_EMAIL_REQUIRED =3D True
ACCOUNT_EMAIL_VERIFICATION =3D 'mandatory'
ACCOUNT_UNIQUE_EMAIL =3D True
ADMINS =3D "(('Mailman Suite Admin', 'root@localhost'),)"
ALLOWED_HOSTS =3D ['*']
APPEND_SLASH =3D True
AUTHENTICATION_BACKENDS =3D
"('django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend')"
AUTH_PASSWORD_VALIDATORS =3D '********************'
AUTH_USER_MODEL =3D 'auth.User'
BASE_DIR =3D '/usr/share/mailman3-web'
CACHES =3D {'default': {'BACKEND':
'django.core.cache.backends.locmem.LocMemCache'}}
CACHE_MIDDLEWARE_ALIAS =3D 'default'
CACHE_MIDDLEWARE_KEY_PREFIX =3D '********************'
CACHE_MIDDLEWARE_SECONDS =3D 600
COMPRESSORS =3D {'css': 'compressor.css.CssCompressor', 'js':
'compressor.js.JsCompressor'}
COMPRESS_CACHEABLE_PRECOMPILERS =3D '()'
COMPRESS_CACHE_BACKEND =3D 'default'
COMPRESS_CACHE_KEY_FUNCTION =3D '********************'
COMPRESS_CLEAN_CSS_ARGUMENTS =3D ''
COMPRESS_CLEAN_CSS_BINARY =3D 'cleancss'
COMPRESS_CLOSURE_COMPILER_ARGUMENTS =3D ''
COMPRESS_CLOSURE_COMPILER_BINARY =3D 'java -jar compiler.jar'
COMPRESS_CSS_HASHING_METHOD =3D 'mtime'
COMPRESS_DATA_URI_MAX_SIZE =3D 1024
COMPRESS_DEBUG_TOGGLE =3D None
COMPRESS_ENABLED =3D True
COMPRESS_FILTERS =3D {'css':
['compressor.filters.css_default.CssAbsoluteFilter'], 'js':
['compressor.filters.jsmin.JSMinFilter']}
COMPRESS_JINJA2_GET_ENVIRONMENT =3D <function
CompressorConf.JINJA2_GET_ENVIRONMENT at 0x7facb6a52b00>
COMPRESS_MINT_DELAY =3D 30
COMPRESS_MTIME_DELAY =3D 10
COMPRESS_OFFLINE =3D True
COMPRESS_OFFLINE_CONTEXT =3D {'STATIC_URL': '/mailman3/static/'}
COMPRESS_OFFLINE_MANIFEST =3D 'manifest.json'
COMPRESS_OFFLINE_TIMEOUT =3D 31536000
COMPRESS_OUTPUT_DIR =3D 'CACHE'
COMPRESS_PARSER =3D 'compressor.parser.AutoSelectParser'
COMPRESS_PRECOMPILERS =3D '()'
COMPRESS_REBUILD_TIMEOUT =3D 2592000
COMPRESS_ROOT =3D '/var/lib/mailman3/web/static'
COMPRESS_STORAGE =3D 'compressor.storage.CompressorFileStorage'
COMPRESS_TEMPLATE_FILTER_CONTEXT =3D {'STATIC_URL': '/mailman3/static/'}
COMPRESS_URL =3D '/mailman3/static/'
COMPRESS_URL_PLACEHOLDER =3D '/__compressor_url_placeholder__/'
COMPRESS_VERBOSE =3D False
COMPRESS_YUGLIFY_BINARY =3D 'yuglify'
COMPRESS_YUGLIFY_CSS_ARGUMENTS =3D '--terminal'
COMPRESS_YUGLIFY_JS_ARGUMENTS =3D '--terminal'
COMPRESS_YUI_BINARY =3D 'java -jar yuicompressor.jar'
COMPRESS_YUI_CSS_ARGUMENTS =3D ''
COMPRESS_YUI_JS_ARGUMENTS =3D ''
CSRF_COOKIE_AGE =3D 31449600
CSRF_COOKIE_DOMAIN =3D None
CSRF_COOKIE_HTTPONLY =3D False
CSRF_COOKIE_NAME =3D 'csrftoken'
CSRF_COOKIE_PATH =3D '/'
CSRF_COOKIE_SAMESITE =3D 'Lax'
CSRF_COOKIE_SECURE =3D False
CSRF_FAILURE_VIEW =3D 'django.views.csrf.csrf_failure'
CSRF_HEADER_NAME =3D 'HTTP_X_CSRFTOKEN'
CSRF_TRUSTED_ORIGINS =3D []
CSRF_USE_SESSIONS =3D False
DATABASES =3D {'default': {'ENGINE': 'django.db.backends.mysql', 'NAME':
'mailman3web', 'USER': 'mailman3web', 'PASSWORD':
'********************', 'HOST': 'localhost', 'PORT': '', 'OPTIONS':
{'init_command': "SET sql_mode=3D'STRICT_TRANS_TABLES'"},
'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0,
'TIME_ZONE': None, 'TEST': {'CHARSET': None, 'COLLATION': None,
'MIGRATE': True, 'MIRROR': None, 'NAME': None}}}
DATABASE_ROUTERS =3D []
DATA_UPLOAD_MAX_MEMORY_SIZE =3D 2621440
DATA_UPLOAD_MAX_NUMBER_FIELDS =3D 1000
DATA_UPLOAD_MAX_NUMBER_FILES =3D 100
DATETIME_FORMAT =3D 'N j, Y, P'
DATETIME_INPUT_FORMATS =3D ['%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f',
'%Y-%m-%d %H:%M', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y
%H:%M', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M']
DATE_FORMAT =3D 'N j, Y'
DATE_INPUT_FORMATS =3D ['%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', '%b %d %Y',
'%b %d, %Y', '%d %b %Y', '%d %b, %Y', '%B %d %Y', '%B %d, %Y', '%d %B
%Y', '%d %B, %Y']
DEBUG =3D False
DEBUG_PROPAGATE_EXCEPTIONS =3D False
DECIMAL_SEPARATOR =3D '.'
DEFAULT_AUTO_FIELD =3D 'django.db.models.AutoField'
DEFAULT_CHARSET =3D 'utf-8'
DEFAULT_EXCEPTION_REPORTER =3D 'django.views.debug.ExceptionReporter'
DEFAULT_EXCEPTION_REPORTER_FILTER =3D
'django.views.debug.SafeExceptionReporterFilter'
DEFAULT_FILE_STORAGE =3D 'django.core.files.storage.FileSystemStorage'
DEFAULT_FROM_EMAIL =3D 'postorius(a)giesler.za.net'
DEFAULT_HASHING_ALGORITHM =3D 'sha256'
DEFAULT_INDEX_TABLESPACE =3D ''
DEFAULT_TABLESPACE =3D ''
DISALLOWED_USER_AGENTS =3D []
EMAILNAME =3D 'giesler.za.net'
EMAIL_BACKEND =3D 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST =3D 'localhost'
EMAIL_HOST_PASSWORD =3D '********************'
EMAIL_HOST_USER =3D ''
EMAIL_PORT =3D 25
EMAIL_SSL_CERTFILE =3D None
EMAIL_SSL_KEYFILE =3D '********************'
EMAIL_SUBJECT_PREFIX =3D '[Django] '
EMAIL_TIMEOUT =3D None
EMAIL_USE_LOCALTIME =3D False
EMAIL_USE_SSL =3D False
EMAIL_USE_TLS =3D False
FILE_UPLOAD_DIRECTORY_PERMISSIONS =3D None
FILE_UPLOAD_HANDLERS =3D
['django.core.files.uploadhandler.MemoryFileUploadHandler',
'django.core.files.uploadhandler.TemporaryFileUploadHandler']
FILE_UPLOAD_MAX_MEMORY_SIZE =3D 2621440
FILE_UPLOAD_PERMISSIONS =3D 420
FILE_UPLOAD_TEMP_DIR =3D None
FILTER_VHOST =3D False
FIRST_DAY_OF_WEEK =3D 0
FIXTURE_DIRS =3D []
FORCE_SCRIPT_NAME =3D None
FORMAT_MODULE_PATH =3D None
FORM_RENDERER =3D 'django.forms.renderers.DjangoTemplates'
HAYSTACK_CONNECTIONS =3D {'default': {'ENGINE':
'haystack.backends.whoosh_backend.WhooshEngine', 'PATH':
'/var/lib/mailman3/web/fulltext_index'}}
HOSTNAME =3D 'localhost.local'
IGNORABLE_404_URLS =3D []
INSTALLED_APPS =3D "('hyperkitty', 'postorius', 'django_mailman3',
'django.contrib.admin', 'django.contrib.auth',
'django.contrib.contenttypes', 'django.contrib.sessions',
'django.contrib.sites', 'django.contrib.messages',
'django.contrib.staticfiles', 'rest_framework', 'django_gravatar',
'compressor', 'haystack', 'django_extensions', 'django_q', 'allauth',
'allauth.account', 'allauth.socialaccount',
'django_mailman3.lib.auth.fedora')"
INTERNAL_IPS =3D []
LANGUAGES =3D [('af', 'Afrikaans'), ('ar', 'Arabic'), ('ar-dz',
'Algerian Arabic'), ('ast', 'Asturian'), ('az', 'Azerbaijani'), ('bg',
'Bulgarian'), ('be', 'Belarusian'), ('bn', 'Bengali'), ('br', 'Breton'),
('bs', 'Bosnian'), ('ca', 'Catalan'), ('cs', 'Czech'), ('cy', 'Welsh'),
('da', 'Danish'), ('de', 'German'), ('dsb', 'Lower Sorbian'), ('el',
'Greek'), ('en', 'English'), ('en-au', 'Australian English'), ('en-gb',
'British English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('es-ar',
'Argentinian Spanish'), ('es-co', 'Colombian Spanish'), ('es-mx',
'Mexican Spanish'), ('es-ni', 'Nicaraguan Spanish'), ('es-ve',
'Venezuelan Spanish'), ('et', 'Estonian'), ('eu', 'Basque'), ('fa',
'Persian'), ('fi', 'Finnish'), ('fr', 'French'), ('fy', 'Frisian'),
('ga', 'Irish'), ('gd', 'Scottish Gaelic'), ('gl', 'Galician'), ('he',
'Hebrew'), ('hi', 'Hindi'), ('hr', 'Croatian'), ('hsb', 'Upper
Sorbian'), ('hu', 'Hungarian'), ('hy', 'Armenian'), ('ia',
'Interlingua'), ('id', 'Indonesian'), ('ig', 'Igbo'), ('io', 'Ido'),
('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka',
'Georgian'), ('kab', 'Kabyle'), ('kk', 'Kazakh'), ('km', 'Khmer'),
('kn', 'Kannada'), ('ko', 'Korean'), ('ky', 'Kyrgyz'), ('lb',
'Luxembourgish'), ('lt', 'Lithuanian'), ('lv', 'Latvian'), ('mk',
'Macedonian'), ('ml', 'Malayalam'), ('mn', 'Mongolian'), ('mr',
'Marathi'), ('my', 'Burmese'), ('nb', 'Norwegian Bokm=C3=A5l'), ('ne',
'Nepali'), ('nl', 'Dutch'), ('nn', 'Norwegian Nynorsk'), ('os',
'Ossetic'), ('pa', 'Punjabi'), ('pl', 'Polish'), ('pt', 'Portuguese'),
('pt-br', 'Brazilian Portuguese'), ('ro', 'Romanian'), ('ru',
'Russian'), ('sk', 'Slovak'), ('sl', 'Slovenian'), ('sq', 'Albanian'),
('sr', 'Serbian'), ('sr-latn', 'Serbian Latin'), ('sv', 'Swedish'),
('sw', 'Swahili'), ('ta', 'Tamil'), ('te', 'Telugu'), ('tg', 'Tajik'),
('th', 'Thai'), ('tk', 'Turkmen'), ('tr', 'Turkish'), ('tt', 'Tatar'),
('udm', 'Udmurt'), ('uk', 'Ukrainian'), ('ur', 'Urdu'), ('uz', 'Uzbek'),
('vi', 'Vietnamese'), ('zh-hans', 'Simplified Chinese'), ('zh-hant',
'Traditional Chinese')]
LANGUAGES_BIDI =3D ['he', 'ar', 'ar-dz', 'fa', 'ur']
LANGUAGE_CODE =3D 'en-za'
LANGUAGE_COOKIE_AGE =3D None
LANGUAGE_COOKIE_DOMAIN =3D None
LANGUAGE_COOKIE_HTTPONLY =3D False
LANGUAGE_COOKIE_NAME =3D 'django_language'
LANGUAGE_COOKIE_PATH =3D '/'
LANGUAGE_COOKIE_SAMESITE =3D None
LANGUAGE_COOKIE_SECURE =3D False
LOCALE_PATHS =3D []
LOGGING =3D {'version': 1, 'disable_existing_loggers': False, 'filters':
{'require_debug_false': {'()': 'django.utils.log.RequireDebugFalse'}},
'handlers': {'mail_admins': {'level': 'ERROR', 'filters':
['require_debug_false'], 'class': 'django.utils.log.AdminEmailHandler'},
'file': {'level': 'INFO', 'class':
'logging.handlers.RotatingFileHandler', 'filename':
'/var/log/mailman3/web/mailman-web.log', 'formatter': 'verbose'},
'console': {'class': 'logging.StreamHandler', 'formatter': 'simple'}},
'loggers': {'django.request': {'handlers': ['mail_admins', 'file'],
'level': 'INFO', 'propagate': True}, 'django': {'handlers': ['file'],
'level': 'INFO', 'propagate': True}, 'hyperkitty': {'handlers':
['file'], 'level': 'INFO', 'propagate': True}, 'postorius': {'handlers':
['file'], 'level': 'INFO', 'propagate': True}}, 'formatters':
{'verbose': {'format': '%(levelname)s %(asctime)s %(process)d %(name)s
%(message)s'}, 'simple': {'format': '%(levelname)s %(message)s'}}}
LOGGING_CONFIG =3D 'logging.config.dictConfig'
LOGIN_REDIRECT_URL =3D 'list_index'
LOGIN_URL =3D 'account_login'
LOGOUT_REDIRECT_URL =3D None
LOGOUT_URL =3D 'account_logout'
MAILMAN_ARCHIVER_FROM =3D "('127.0.0.1', '::1')"
MAILMAN_ARCHIVER_KEY =3D '********************'
MAILMAN_REST_API_PASS =3D '********************'
MAILMAN_REST_API_URL =3D '********************'
MAILMAN_REST_API_USER =3D '********************'
MANAGERS =3D []
MEDIA_ROOT =3D ''
MEDIA_URL =3D '/'
MESSAGE_STORAGE =3D
'django.contrib.messages.storage.fallback.FallbackStorage'
MESSAGE_TAGS =3D {40: 'danger'}
MIDDLEWARE =3D "('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django_mailman3.middleware.TimezoneMiddleware',
'postorius.middleware.PostoriusMiddleware')"
MIGRATION_MODULES =3D {}
MONTH_DAY_FORMAT =3D 'F j'
NUMBER_GROUPING =3D 0
PASSWORD_HASHERS =3D '********************'
PASSWORD_RESET_TIMEOUT =3D '********************'
PASSWORD_RESET_TIMEOUT_DAYS =3D '********************'
POSTORIUS_TEMPLATE_BASE_URL =3D 'http://localhost/mailman3/'
PREPEND_WWW =3D False
Q_CLUSTER =3D {'timeout': 300, 'save_limit': 100, 'orm': 'default',
'poll': 5}
ROOT_URLCONF =3D 'urls'
SECRET_KEY =3D '********************'
SECURE_BROWSER_XSS_FILTER =3D False
SECURE_CONTENT_TYPE_NOSNIFF =3D True
SECURE_HSTS_INCLUDE_SUBDOMAINS =3D False
SECURE_HSTS_PRELOAD =3D False
SECURE_HSTS_SECONDS =3D 0
SECURE_PROXY_SSL_HEADER =3D None
SECURE_REDIRECT_EXEMPT =3D []
SECURE_REFERRER_POLICY =3D 'same-origin'
SECURE_SSL_HOST =3D None
SECURE_SSL_REDIRECT =3D False
SERVER_EMAIL =3D 'root(a)giesler.za.net'
SESSION_CACHE_ALIAS =3D 'default'
SESSION_COOKIE_AGE =3D 1209600
SESSION_COOKIE_DOMAIN =3D None
SESSION_COOKIE_HTTPONLY =3D True
SESSION_COOKIE_NAME =3D 'sessionid'
SESSION_COOKIE_PATH =3D '/'
SESSION_COOKIE_SAMESITE =3D 'Lax'
SESSION_COOKIE_SECURE =3D False
SESSION_ENGINE =3D 'django.contrib.sessions.backends.db'
SESSION_EXPIRE_AT_BROWSER_CLOSE =3D False
SESSION_FILE_PATH =3D None
SESSION_SAVE_EVERY_REQUEST =3D False
SESSION_SERIALIZER =3D
'django.contrib.sessions.serializers.PickleSerializer'
SETTINGS_MODULE =3D 'settings'
SHORT_DATETIME_FORMAT =3D 'm/d/Y P'
SHORT_DATE_FORMAT =3D 'm/d/Y'
SIGNING_BACKEND =3D 'django.core.signing.TimestampSigner'
SILENCED_SYSTEM_CHECKS =3D []
SITE_ID =3D 1
SOCIALACCOUNT_PROVIDERS =3D {}
STATICFILES_DIRS =3D '()'
STATICFILES_FINDERS =3D
"('django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'compressor.finders.CompressorFinder')"
STATICFILES_STORAGE =3D
'django.contrib.staticfiles.storage.StaticFilesStorage'
STATIC_ROOT =3D '/var/lib/mailman3/web/static'
STATIC_URL =3D '/mailman3/static/'
TEMPLATES =3D [{'BACKEND':
'django.template.backends.django.DjangoTemplates', 'DIRS': [],
'APP_DIRS': True, 'OPTIONS': {'context_processors':
['django.template.context_processors.debug',
'django.template.context_processors.i18n',
'django.template.context_processors.media',
'django.template.context_processors.static',
'django.template.context_processors.tz',
'django.template.context_processors.csrf',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'django_mailman3.context_processors.common',
'hyperkitty.context_processors.common',
'postorius.context_processors.postorius']}}]
TEST_NON_SERIALIZED_APPS =3D []
TEST_RUNNER =3D 'django.test.runner.DiscoverRunner'
THOUSAND_SEPARATOR =3D ','
TIME_FORMAT =3D 'P'
TIME_INPUT_FORMATS =3D ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']
TIME_ZONE =3D 'Africa/Johannesburg'
USE_I18N =3D True
USE_L10N =3D True
USE_THOUSAND_SEPARATOR =3D False
USE_TZ =3D True
USE_X_FORWARDED_HOST =3D True
USE_X_FORWARDED_PORT =3D False
WSGI_APPLICATION =3D 'wsgi.application'
X_FRAME_OPTIONS =3D 'DENY'
YEAR_MONTH_FORMAT =3D 'F Y'
1 year, 7 months
[MM3-users] Re: Post installation issues (recipients refused) with Exim4 in a virtual host environment
by Kyriakos Terzopoulos
Please also find below the mailman conf command:
(venv) mailman@hestia:~/venv/bin$ ./mailman conf
[ARC] authserv_id:
[ARC] dkim: yes
[ARC] dmarc: yes
[ARC] domain:
[ARC] enabled: no
[ARC] privkey:
[ARC] selector:
[ARC] sig_headers: From, Sender, Reply-To, Subject, Date, Message-ID, To,
Cc, MIME-Version, Content-Type, Content-Transfer-Encoding, Content-ID,
Content-Description, Resent-Date, Resent-From, Resent-Sender, Resent-To,
Resent-Cc, Resent-Message-ID, In-Reply-To, References, List-Id, List-Help,
List-Unsubscribe, List-Subscribe, List-Post, List-Owner, List-Archive
[ARC] trusted_authserv_ids:
[antispam] header_checks:
[antispam] jump_chain: hold
[archiver.hyperkitty] class: mailman_hyperkitty.Archiver
[archiver.hyperkitty] clobber_date: maybe
[archiver.hyperkitty] clobber_skew: 1d
[archiver.hyperkitty] configuration: /etc/mailman3/mailman-hyperkitty.cfg
[archiver.hyperkitty] enable: yes
[archiver.mail_archive] class: mailman.archiving.mailarchive.MailArchive
[archiver.mail_archive] clobber_date: maybe
[archiver.mail_archive] clobber_skew: 1d
[archiver.mail_archive] configuration: python:mailman.config.mail_archive
[archiver.mail_archive] enable: no
[archiver.mhonarc] class: mailman.archiving.mhonarc.MHonArc
[archiver.mhonarc] clobber_date: maybe
[archiver.mhonarc] clobber_skew: 1d
[archiver.mhonarc] configuration: python:mailman.config.mhonarc
[archiver.mhonarc] enable: no
[archiver.prototype] class: mailman.archiving.prototype.Prototype
[archiver.prototype] clobber_date: maybe
[archiver.prototype] clobber_skew: 1d
[archiver.prototype] configuration: changeme
[archiver.prototype] enable: yes
[bounces] register_bounces_every: 15m
[database] class: mailman.database.postgresql.PostgreSQLDatabase
[database] debug: no
[database] url: postgresql://mailman:XXXXXXXXXX@localhost/mailman
[devmode] enabled: no
[devmode] recipient:
[devmode] testing: no
[devmode] wait: 60s
[digests] mime_digest_keep_headers:
Date From To Cc Subject Message-ID Keywords
In-Reply-To References Content-Type MIME-Version
Content-Transfer-Encoding Precedence Reply-To
Message List-Post
[digests] plain_digest_keep_headers:
Message Date From
Subject To Cc
Message-ID Keywords
Content-Type
[dmarc] cache_lifetime: 7d
[dmarc] org_domain_data_url:
https://publicsuffix.org/list/public_suffix_list.dat
[dmarc] resolver_lifetime: 5s
[dmarc] resolver_timeout: 3s
[language.ar] charset: utf-8
[language.ar] description: Arabic
[language.ar] enabled: yes
[language.ast] charset: utf-8
[language.ast] description: Asturian
[language.ast] enabled: yes
[language.bg] charset: utf-8
[language.bg] description: Bulgarian
[language.bg] enabled: yes
[language.ca] charset: utf-8
[language.ca] description: Catalan
[language.ca] enabled: yes
[language.cs] charset: utf-8
[language.cs] description: Czech
[language.cs] enabled: yes
[language.da] charset: utf-8
[language.da] description: Danish
[language.da] enabled: yes
[language.de] charset: utf-8
[language.de] description: German
[language.de] enabled: yes
[language.el] charset: utf-8
[language.el] description: Greek
[language.el] enabled: yes
[language.en] charset: us-ascii
[language.en] description: English (USA)
[language.en] enabled: yes
[language.es] charset: utf-8
[language.es] description: Spanish
[language.es] enabled: yes
[language.et] charset: utf-8
[language.et] description: Estonian
[language.et] enabled: yes
[language.eu] charset: utf-8
[language.eu] description: Euskara
[language.eu] enabled: yes
[language.fi] charset: utf-8
[language.fi] description: Finnish
[language.fi] enabled: yes
[language.fr] charset: utf-8
[language.fr] description: French
[language.fr] enabled: yes
[language.gl] charset: utf-8
[language.gl] description: Galician
[language.gl] enabled: yes
[language.he] charset: utf-8
[language.he] description: Hebrew
[language.he] enabled: yes
[language.hr] charset: utf-8
[language.hr] description: Croatian
[language.hr] enabled: yes
[language.hu] charset: utf-8
[language.hu] description: Hungarian
[language.hu] enabled: yes
[language.ia] charset: utf-8
[language.ia] description: Interlingua
[language.ia] enabled: yes
[language.it] charset: utf-8
[language.it] description: Italian
[language.it] enabled: yes
[language.ja] charset: utf-8
[language.ja] description: Japanese
[language.ja] enabled: yes
[language.ko] charset: utf-8
[language.ko] description: Korean
[language.ko] enabled: yes
[language.lt] charset: utf-8
[language.lt] description: Lithuanian
[language.lt] enabled: yes
[language.nl] charset: utf-8
[language.nl] description: Dutch
[language.nl] enabled: yes
[language.no] charset: utf-8
[language.no] description: Norwegian
[language.no] enabled: yes
[language.pl] charset: utf-8
[language.pl] description: Polish
[language.pl] enabled: yes
[language.pt] charset: utf-8
[language.pt] description: Portuguese
[language.pt] enabled: yes
[language.pt_BR] charset: utf-8
[language.pt_BR] description: Portuguese (Brazil)
[language.pt_BR] enabled: yes
[language.ro] charset: utf-8
[language.ro] description: Romanian
[language.ro] enabled: yes
[language.ru] charset: utf-8
[language.ru] description: Russian
[language.ru] enabled: yes
[language.sk] charset: utf-8
[language.sk] description: Slovak
[language.sk] enabled: yes
[language.sl] charset: utf-8
[language.sl] description: Slovenian
[language.sl] enabled: yes
[language.sr] charset: utf-8
[language.sr] description: Serbian
[language.sr] enabled: yes
[language.sv] charset: utf-8
[language.sv] description: Swedish
[language.sv] enabled: yes
[language.tr] charset: utf-8
[language.tr] description: Turkish
[language.tr] enabled: yes
[language.uk] charset: utf-8
[language.uk] description: Ukrainian
[language.uk] enabled: yes
[language.vi] charset: utf-8
[language.vi] description: Vietnamese
[language.vi] enabled: yes
[language.zh_CN] charset: utf-8
[language.zh_CN] description: Chinese
[language.zh_CN] enabled: yes
[language.zh_TW] charset: utf-8
[language.zh_TW] description: Chinese (Taiwan)
[language.zh_TW] enabled: yes
[logging.archiver] datefmt: %b %d %H:%M:%S %Y
[logging.archiver] format: %(asctime)s (%(process)d) %(message)s
[logging.archiver] level: info
[logging.archiver] path: mailman.log
[logging.archiver] propagate: no
[logging.bounce] datefmt: %b %d %H:%M:%S %Y
[logging.bounce] format: %(asctime)s (%(process)d) %(message)s
[logging.bounce] level: info
[logging.bounce] path: bounce.log
[logging.bounce] propagate: no
[logging.config] datefmt: %b %d %H:%M:%S %Y
[logging.config] format: %(asctime)s (%(process)d) %(message)s
[logging.config] level: info
[logging.config] path: mailman.log
[logging.config] propagate: no
[logging.database] datefmt: %b %d %H:%M:%S %Y
[logging.database] format: %(asctime)s (%(process)d) %(message)s
[logging.database] level: warn
[logging.database] path: mailman.log
[logging.database] propagate: no
[logging.debug] datefmt: %b %d %H:%M:%S %Y
[logging.debug] format: %(asctime)s (%(process)d) %(message)s
[logging.debug] level: info
[logging.debug] path: debug.log
[logging.debug] propagate: no
[logging.error] datefmt: %b %d %H:%M:%S %Y
[logging.error] format: %(asctime)s (%(process)d) %(message)s
[logging.error] level: info
[logging.error] path: mailman.log
[logging.error] propagate: no
[logging.fromusenet] datefmt: %b %d %H:%M:%S %Y
[logging.fromusenet] format: %(asctime)s (%(process)d) %(message)s
[logging.fromusenet] level: info
[logging.fromusenet] path: mailman.log
[logging.fromusenet] propagate: no
[logging.http] datefmt: %b %d %H:%M:%S %Y
[logging.http] format: %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s"
[logging.http] level: info
[logging.http] path: mailman.log
[logging.http] propagate: no
[logging.locks] datefmt: %b %d %H:%M:%S %Y
[logging.locks] format: %(asctime)s (%(process)d) %(message)s
[logging.locks] level: info
[logging.locks] path: mailman.log
[logging.locks] propagate: no
[logging.mischief] datefmt: %b %d %H:%M:%S %Y
[logging.mischief] format: %(asctime)s (%(process)d) %(message)s
[logging.mischief] level: info
[logging.mischief] path: mailman.log
[logging.mischief] propagate: no
[logging.plugins] datefmt: %b %d %H:%M:%S %Y
[logging.plugins] format: %(asctime)s (%(process)d) %(message)s
[logging.plugins] level: info
[logging.plugins] path: plugins.log
[logging.plugins] propagate: no
[logging.root] datefmt: %b %d %H:%M:%S %Y
[logging.root] format: %(asctime)s (%(process)d) %(message)s
[logging.root] level: info
[logging.root] path: mailman.log
[logging.root] propagate: no
[logging.runner] datefmt: %b %d %H:%M:%S %Y
[logging.runner] format: %(asctime)s (%(process)d) %(message)s
[logging.runner] level: info
[logging.runner] path: mailman.log
[logging.runner] propagate: no
[logging.smtp] datefmt: %b %d %H:%M:%S %Y
[logging.smtp] every: $msgid smtp to $listname for $recip recips, completed
in $time seconds
[logging.smtp] failure: $msgid delivery to $recip failed with code
$smtpcode, $smtpmsg
[logging.smtp] format: %(asctime)s (%(process)d) %(message)s
[logging.smtp] level: info
[logging.smtp] path: smtp.log
[logging.smtp] propagate: no
[logging.smtp] refused: $msgid post to $listname from $sender, $size bytes,
$refused failures
[logging.smtp] success: $msgid post to $listname from $sender, $size bytes
[logging.subscribe] datefmt: %b %d %H:%M:%S %Y
[logging.subscribe] format: %(asctime)s (%(process)d) %(message)s
[logging.subscribe] level: info
[logging.subscribe] path: mailman.log
[logging.subscribe] propagate: no
[logging.task] datefmt: %b %d %H:%M:%S %Y
[logging.task] format: %(asctime)s (%(process)d) %(message)s
[logging.task] level: info
[logging.task] path: mailman.log
[logging.task] propagate: no
[logging.vette] datefmt: %b %d %H:%M:%S %Y
[logging.vette] format: %(asctime)s (%(process)d) %(message)s
[logging.vette] level: info
[logging.vette] path: mailman.log
[logging.vette] propagate: no
[mailman] anonymous_list_keep_headers: ^x-mailman- ^x-content-filtered-by:
^x-topics:
^x-ack: ^x-beenthere: ^x-list-administrivia: ^x-spam-
[mailman] cache_life: 7d
[mailman] check_max_size_on_filtered_message: no
[mailman] default_language: en
[mailman] email_commands_max_lines: 10
[mailman] filter_report: no
[mailman] filtered_messages_are_preservable: no
[mailman] hold_digest: no
[mailman] html_to_plain_text_command: /usr/bin/lynx -dump $filename
[mailman] layout: local
[mailman] listname_chars: [-_.0-9a-z]
[mailman] masthead_threshold: 4
[mailman] moderator_request_life: 180d
[mailman] noreply_address: noreply
[mailman] pending_request_life: 3d
[mailman] post_hook:
[mailman] pre_hook:
[mailman] run_tasks_every: 1h
[mailman] sender_headers: from from_ reply-to sender
[mailman] site_owner: kterzopoulos(a)XXXXXX.com
[mta] configuration: python:mailman.config.exim4
[mta] delivery_retry_period: 5d
[mta] incoming: mailman.mta.exim4.LMTP
[mta] lmtp_host: localhost
[mta] lmtp_port: 8024
[mta] max_autoresponses_per_day: 10
[mta] max_delivery_threads: 0
[mta] max_recipients: 500
[mta] max_sessions_per_connection: 0
[mta] outgoing: mailman.mta.deliver.deliver
[mta] remove_dkim_headers: no
[mta] smtp_host: mail.myproject.eu
[mta] smtp_pass:
[mta] smtp_port: 25
[mta] smtp_secure_mode: smtp
[mta] smtp_user:
[mta] smtp_verify_cert: yes
[mta] smtp_verify_hostname: yes
[mta] verp_confirm_format: $address+$cookie
[mta] verp_confirm_regexp: ^(.*<)?(?P<addr>[^+]+?)\+(?P<cookie>[^@]+)@.*$
[mta] verp_confirmations: yes
[mta] verp_delimiter: +
[mta] verp_delivery_interval: 1
[mta] verp_format: ${bounces}+${local}=${domain}
[mta] verp_personalized_deliveries: yes
[mta] verp_probe_format: $bounces+$token@$domain
[mta] verp_probe_regexp: ^(?P<bounces>[^+]+?)\+(?P<token>[^@]+)@.*$
[mta] verp_probes: no
[mta] verp_regexp:
^(?P<bounces>[^+]+?)\+(?P<local>[^=]+)=(?P<domain>[^@]+)@.*$
[nntp] gatenews_every: 5m
[nntp] host:
[nntp] password:
[nntp] port:
[nntp] remove_headers:
nntp-posting-host nntp-posting-date x-trace
x-complaints-to xref date-received posted
posting-version relay-version received
[nntp] rewrite_duplicate_headers:
To X-Original-To
CC X-Original-CC
Content-Transfer-Encoding X-Original-Content-Transfer-Encoding
MIME-Version X-MIME-Version
[nntp] user:
[passwords] configuration: python:mailman.config.passlib
[passwords] password_length: 8
[paths.dev] archive_dir: $var_dir/archives
[paths.dev] bin_dir: $argv
[paths.dev] cache_dir: $var_dir/cache
[paths.dev] data_dir: $var_dir/data
[paths.dev] etc_dir: $var_dir/etc
[paths.dev] ext_dir: $var_dir/ext
[paths.dev] list_data_dir: $var_dir/lists
[paths.dev] lock_dir: $var_dir/locks
[paths.dev] lock_file: $lock_dir/master.lck
[paths.dev] log_dir: $var_dir/logs
[paths.dev] messages_dir: $var_dir/messages
[paths.dev] pid_file: $var_dir/master.pid
[paths.dev] queue_dir: $var_dir/queue
[paths.dev] template_dir: $var_dir/templates
[paths.dev] var_dir: $cfg_file/../..
[paths.fhs] archive_dir: $var_dir/archives
[paths.fhs] bin_dir: /sbin
[paths.fhs] cache_dir: $var_dir/cache
[paths.fhs] data_dir: $var_dir/data
[paths.fhs] etc_dir: /etc
[paths.fhs] ext_dir: /etc/mailman.d
[paths.fhs] list_data_dir: $var_dir/lists
[paths.fhs] lock_dir: /var/lock/mailman
[paths.fhs] lock_file: $lock_dir/master.lck
[paths.fhs] log_dir: /var/log/mailman
[paths.fhs] messages_dir: $var_dir/messages
[paths.fhs] pid_file: /var/run/mailman/master.pid
[paths.fhs] queue_dir: /var/spool/mailman
[paths.fhs] template_dir: $var_dir/templates
[paths.fhs] var_dir: /var/lib/mailman
[paths.here] archive_dir: $var_dir/archives
[paths.here] bin_dir: $argv
[paths.here] cache_dir: $var_dir/cache
[paths.here] data_dir: $var_dir/data
[paths.here] etc_dir: $var_dir/etc
[paths.here] ext_dir: $var_dir/ext
[paths.here] list_data_dir: $var_dir/lists
[paths.here] lock_dir: $var_dir/locks
[paths.here] lock_file: $lock_dir/master.lck
[paths.here] log_dir: $var_dir/logs
[paths.here] messages_dir: $var_dir/messages
[paths.here] pid_file: $var_dir/master.pid
[paths.here] queue_dir: $var_dir/queue
[paths.here] template_dir: $var_dir/templates
[paths.here] var_dir: $cwd/var
[paths.local] archive_dir: $var_dir/archives
[paths.local] bin_dir: $argv
[paths.local] cache_dir: $var_dir/cache
[paths.local] data_dir: $var_dir/data
[paths.local] etc_dir: $var_dir/etc
[paths.local] ext_dir: $var_dir/ext
[paths.local] list_data_dir: $var_dir/lists
[paths.local] lock_dir: $var_dir/locks
[paths.local] lock_file: $lock_dir/master.lck
[paths.local] log_dir: $var_dir/logs
[paths.local] messages_dir: $var_dir/messages
[paths.local] pid_file: $var_dir/master.pid
[paths.local] queue_dir: $var_dir/queue
[paths.local] template_dir: $var_dir/templates
[paths.local] var_dir: /opt/mailman/venv
[plugin.master] class:
[plugin.master] component_package:
[plugin.master] configuration:
[plugin.master] enabled: no
[runner.archive] class: mailman.runners.archive.ArchiveRunner
[runner.archive] instances: 1
[runner.archive] max_restarts: 10
[runner.archive] path: $QUEUE_DIR/$name
[runner.archive] sleep_time: 1s
[runner.archive] start: yes
[runner.bad] class: mailman.runners.fake.BadRunner
[runner.bad] instances: 1
[runner.bad] max_restarts: 10
[runner.bad] path: $QUEUE_DIR/$name
[runner.bad] sleep_time: 1s
[runner.bad] start: no
[runner.bounces] class: mailman.runners.bounce.BounceRunner
[runner.bounces] instances: 1
[runner.bounces] max_restarts: 10
[runner.bounces] path: $QUEUE_DIR/$name
[runner.bounces] sleep_time: 2m
[runner.bounces] start: yes
[runner.command] class: mailman.runners.command.CommandRunner
[runner.command] instances: 1
[runner.command] max_restarts: 10
[runner.command] path: $QUEUE_DIR/$name
[runner.command] sleep_time: 1s
[runner.command] start: yes
[runner.digest] class: mailman.runners.digest.DigestRunner
[runner.digest] instances: 1
[runner.digest] max_restarts: 10
[runner.digest] path: $QUEUE_DIR/$name
[runner.digest] sleep_time: 1s
[runner.digest] start: yes
[runner.in] class: mailman.runners.incoming.IncomingRunner
[runner.in] instances: 1
[runner.in] max_restarts: 10
[runner.in] path: $QUEUE_DIR/$name
[runner.in] sleep_time: 1s
[runner.in] start: yes
[runner.lmtp] class: mailman.runners.lmtp.LMTPRunner
[runner.lmtp] instances: 1
[runner.lmtp] max_restarts: 10
[runner.lmtp] path:
[runner.lmtp] sleep_time: 1s
[runner.lmtp] start: yes
[runner.nntp] class: mailman.runners.nntp.NNTPRunner
[runner.nntp] instances: 1
[runner.nntp] max_restarts: 10
[runner.nntp] path: $QUEUE_DIR/$name
[runner.nntp] sleep_time: 1s
[runner.nntp] start: yes
[runner.out] class: mailman.runners.outgoing.OutgoingRunner
[runner.out] instances: 1
[runner.out] max_restarts: 10
[runner.out] path: $QUEUE_DIR/$name
[runner.out] sleep_time: 1s
[runner.out] start: yes
[runner.pipeline] class: mailman.runners.pipeline.PipelineRunner
[runner.pipeline] instances: 1
[runner.pipeline] max_restarts: 10
[runner.pipeline] path: $QUEUE_DIR/$name
[runner.pipeline] sleep_time: 1s
[runner.pipeline] start: yes
[runner.rest] class: mailman.runners.rest.RESTRunner
[runner.rest] instances: 1
[runner.rest] max_restarts: 10
[runner.rest] path:
[runner.rest] sleep_time: 1s
[runner.rest] start: yes
[runner.retry] class: mailman.runners.retry.RetryRunner
[runner.retry] instances: 1
[runner.retry] max_restarts: 10
[runner.retry] path: $QUEUE_DIR/$name
[runner.retry] sleep_time: 15m
[runner.retry] start: yes
[runner.shunt] class: mailman.runners.fake.ShuntRunner
[runner.shunt] instances: 1
[runner.shunt] max_restarts: 10
[runner.shunt] path: $QUEUE_DIR/$name
[runner.shunt] sleep_time: 1s
[runner.shunt] start: no
[runner.task] class: mailman.runners.task.TaskRunner
[runner.task] instances: 1
[runner.task] max_restarts: 10
[runner.task] path:
[runner.task] sleep_time: 1m
[runner.task] start: yes
[runner.virgin] class: mailman.runners.virgin.VirginRunner
[runner.virgin] instances: 1
[runner.virgin] max_restarts: 10
[runner.virgin] path: $QUEUE_DIR/$name
[runner.virgin] sleep_time: 1s
[runner.virgin] start: yes
[shell] banner: Welcome to the GNU Mailman shell
Use commit() to commit changes.
Use abort() to discard changes since the last commit.
Exit with ctrl+D does an implicit commit() but exit() does not.
[shell] history_file: $var_dir/history.py
[shell] prompt: >>>
[shell] use_ipython: no
[styles] default: legacy-default
[webservice] admin_pass: restpass
[webservice] admin_user: restadmin
[webservice] api_version: 3.1
[webservice] configuration: python:mailman.config.gunicorn
[webservice] hostname: localhost
[webservice] port: 8001
[webservice] show_tracebacks: yes
[webservice] use_https: no
[webservice] workers: 2
*Kyriakos Terzopoulos
*Web developer / e-learning expert
*Tel:*+30 211 213 9858
*Mobile:* +30 694 526 4512
* E-mail: *kyriakos.terzopoulos(a)gmail.com
* Skype:* kyriakos.terzopoulos
Find me on Facebook <http://www.facebook.com/cirrus3d>
Follow me on Twitter <http://twitter.com/#%21/cirrus3d>
On Wed, 11 Oct 2023 at 12:37, Kyriakos Terzopoulos <
kyriakos.terzopoulos(a)gmail.com> wrote:
> Hi,
>
> I have the following in my mailman log
>
> [11/Oct/2023:12:31:39 +0300] "GET /3.1/lists/
> testlist(a)myproject.eu/held/count HTTP/1.1" 200 73 "-" "GNU Mailman REST
> client v3.3.5"
> [11/Oct/2023:12:31:43 +0300] "GET /3.1/lists/testlist.myproject.eu
> HTTP/1.1" 200 425 "-" "GNU Mailman REST client v3.3.5"
> [11/Oct/2023:12:31:43 +0300] "GET /3.1/lists/testlist(a)myproject.eu/config
> HTTP/1.1" 200 3111 "-" "GNU Mailman REST client v3.3.5"
> [11/Oct/2023:12:31:43 +0300] "GET /3.1/lists/
> testlist.myproject.eu/archivers HTTP/1.1" 200 100 "-" "GNU Mailman REST
> client v3.3.5"
> [11/Oct/2023:12:31:51 +0300] "GET /3.1/lists/testlist.myproject.eu
> HTTP/1.1" 200 425 "-" "GNU Mailman REST client v3.3.5"
> Oct 11 12:31:51 2023 (1534165) deque: do_confirm_verify
> Traceback (most recent call last):
> File
> "/opt/mailman/venv/lib/python3.10/site-packages/mailman/app/workflow.py",
> line 69, in __next__
> return step()
> File
> "/opt/mailman/venv/lib/python3.10/site-packages/mailman/app/subscriptions.py",
> line 382, in _step_send_confirmation
> raise StopIteration
> StopIteration
> [11/Oct/2023:12:31:51 +0300] "POST /3.1/members HTTP/1.1" 202 143 "-" "GNU
> Mailman REST client v3.3.5"
> [11/Oct/2023:12:31:51 +0300] "GET /3.1/lists/testlist.myproject.eu
> HTTP/1.1" 200 425 "-" "GNU Mailman REST client v3.3.5"
> [11/Oct/2023:12:31:51 +0300] "GET /3.1/lists/testlist(a)myproject.eu/config
> HTTP/1.1" 200 3111 "-" "GNU Mailman REST client v3.3.5"
> [11/Oct/2023:12:31:51 +0300] "GET /3.1/lists/
> testlist.myproject.eu/archivers HTTP/1.1" 200 100 "-" "GNU Mailman REST
> client v3.3.5"
>
> *Kyriakos Terzopoulos
> *Web developer / e-learning expert
>
> *Tel:*+30 211 213 9858
>
> *Mobile:* +30 694 526 4512
>
> * E-mail: *kyriakos.terzopoulos(a)gmail.com
> * Skype:* kyriakos.terzopoulos
> Find me on Facebook <http://www.facebook.com/cirrus3d>
> Follow me on Twitter <http://twitter.com/#%21/cirrus3d>
>
>
>
> On Wed, 11 Oct 2023 at 11:54, Odhiambo Washington <odhiambo(a)gmail.com>
> wrote:
>
>> On Wed, Oct 11, 2023 at 11:15 AM Kyriakos Terzopoulos <
>> kyriakos.terzopoulos(a)gmail.com> wrote:
>>
>> > Hi,
>> >
>> > I have set up (I believe successfully) and configured the following in a
>> > Virtualhost environment (with HestiaCP):
>> >
>> > - A record for lists.mydomain.com
>> > - Venv
>> > - Mailman core
>> > - Mailman web (run migrate, collectstatic, compress, compilemessages)
>> > Postorius
>> > - gunicorn, hyperkitty
>> > - Nginx
>> > - SMTP exim4 conf
>> >
>> > I can see Posrorius and I have logged in and created my first mailing
>> list:
>> >
>> > [image: Screenshot 2023-10-11 at 10.57.31 AM.png]
>> >
>> > My issue is that even though I have subscribed to my list as you can see
>> > above, I am not receiving the confirmation email. I get a "recipients
>> > refused" error. The smtp log for mailman is as follows:
>> >
>> > Oct 11 10:41:20 2023 (1533666)
>> > <169701007904.1534165.14569329382406660776@localhost> recipients
>> refused:
>> > {'
>> > kyriakos.terzopoulos(a)gmail.com': (550, b'Verification failed for
>> > <testlist-bounces+kyriakos.terzopoulos=gmail.com(a)myproject.eu
>> > >\nUnrouteable
>> > address\nSender verify failed')}
>> >
>> > Oct 11 10:41:20 2023 (1533666)
>> > <169701007904.1534165.14569329382406660776@localhost> smtp to
>> > testlist(a)myproject.eu for 1 recips, completed in 0.26796579360961914
>> > seconds
>> >
>> > Oct 11 10:41:20 2023 (1533666)
>> > <169701007904.1534165.14569329382406660776@localhost> post to
>> > testlist(a)myproject.eu from
>> > testlist-confirm+c9b20c5290bec43147a7e96a6b8cd825daf913d7(a)myproject.eu,
>> > 1667 bytes, 1 failures
>> >
>> > Oct 11 10:41:20 2023 (1533666)
>> > <169701007904.1534165.14569329382406660776@localhost> delivery to
>> > kyriakos.terzopoulos(a)gmail.com failed with code 550, b'Verification
>> failed
>> > for <testlist-bounces+kyriakos.terzopoulos=gmail.com(a)myproject.eu
>> > >\nUnrouteable
>> > address\nSender verify failed'
>> >
>> > I have used the configuration for exim that is here
>> > <
>> >
>> https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/docs/mta.h…
>> > >
>> > and
>> > I have also tested with the alternative approach that is documented in
>> >
>>
>> What do you have in the Exim's mainlog?
>>
>>
>> --
>> Best regards,
>> Odhiambo WASHINGTON,
>> Nairobi,KE
>> +254 7 3200 0004/+254 7 2274 3223
>> "Oh, the cruft.", egrep -v '^$|^.*#' ¯\_(ツ)_/¯ :-)
>> [How to ask smart questions:
>> http://www.catb.org/~esr/faqs/smart-questions.html]
>> _______________________________________________
>> Mailman-users mailing list -- mailman-users(a)mailman3.org
>> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
>> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>> Archived at:
>> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
>>
>> This message sent to kyriakos.terzopoulos(a)gmail.com
>>
>
2 years, 4 months
[MM3-users] Re: Migration from old server to new server failed
by Helio Loureiro
Hi,
Any suggestions here?
Best Regards,
Helio Loureiro
https://helio.loureiro.eng.br
https://github.com/helioloureiro
https://mastodon.social/@helioloureiro
On Mon, 19 Feb 2024 at 14:44, Helio Loureiro <helio(a)loureiro.eng.br> wrote:
> Hi,
>
> I repeated the steps today.
>
> First I waited to end the errors raised because the mailman3-web wasn't
> running.
>
> The above exception was the direct cause of the following exception:
>
> Traceback (most recent call last):
> File
> "/local/mailman/venv/lib/python3.10/site-packages/urllib3/connectionpool.py",
> line 793, in urlopen
> response = self._make_request(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/urllib3/connectionpool.py",
> line 496, in _make_request
> conn.request(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/urllib3/connection.py",
> line 400, in request
> self.endheaders()
> File "/usr/lib/python3.10/http/client.py", line 1278, in endheaders
> self._send_output(message_body, encode_chunked=encode_chunked)
> File "/usr/lib/python3.10/http/client.py", line 1038, in _send_output
> self.send(msg)
> File "/usr/lib/python3.10/http/client.py", line 976, in send
> self.connect()
> File
> "/local/mailman/venv/lib/python3.10/site-packages/urllib3/connection.py",
> line 238, in connect
> self.sock = self._new_conn()
> File
> "/local/mailman/venv/lib/python3.10/site-packages/urllib3/connection.py",
> line 213, in _new_conn
> raise NewConnectionError(
> urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection
> object at 0x7f0fdc2f72b0>: Failed to establish a new connection: [Errno
> 111] Connection refused
>
> The above exception was the direct cause of the following exception:
>
> Traceback (most recent call last):
> File
> "/local/mailman/venv/lib/python3.10/site-packages/requests/adapters.py",
> line 486, in send
> resp = conn.urlopen(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/urllib3/connectionpool.py",
> line 847, in urlopen
> retries = retries.increment(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/urllib3/util/retry.py",
> line 515, in increment
> raise MaxRetryError(_pool, url, reason) from reason # type:
> ignore[arg-type]
> urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='127.0.0.1',
> port=8000): Max retries exceeded with url: /archives/api/mailman/archive
> (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at
> 0x7f0fdc2f72b0>: Failed to establish a new connection: [Errno 111]
> Connection refused'))
>
> Which seems to keep forever. So eventually I gave up and moved forward.
> And I changed to use the uwsgi socket instead of the direct port.
>
> (venv) mailman@new-mailman3 ~ (v3.1.1) [0|SIGINT]> mailman-web migrate
> System check identified some issues:
>
> WARNINGS:
> account.EmailAddress: (models.W036) MariaDB does not support unique
> constraints with conditions.
> HINT: A constraint won't be created. Silence this warning if you
> don't care about it.
> account.EmailAddress: (models.W043) MariaDB does not support indexes on
> expressions.
> HINT: An index won't be created. Silence this warning if you don't
> care about it.
> Operations to perform:
> Apply all migrations: account, admin, auth, contenttypes,
> django_mailman3, django_q, hyperkitty, postorius, sessions, sites,
> socialaccount
> Running migrations:
> Applying account.0003_alter_emailaddress_create_unique_verified_email...
> OK
> Applying account.0004_alter_emailaddress_drop_unique_email... OK
> Applying account.0005_emailaddress_idx_upper_email... OK
> Applying admin.0003_logentry_add_action_flag_choices... OK
> Applying auth.0009_alter_user_last_name_max_length... OK
> Applying auth.0010_alter_group_name_max_length... OK
> Applying auth.0011_update_proxy_permissions... OK
> Applying auth.0012_alter_user_first_name_max_length... OK
> Applying django_mailman3.0003_sessions... OK
> Applying django_q.0010_auto_20200610_0856... OK
> Applying django_q.0011_auto_20200628_1055... OK
> Applying django_q.0012_auto_20200702_1608... OK
> Applying django_q.0013_task_attempt_count... OK
> Applying django_q.0014_schedule_cluster... OK
> Applying hyperkitty.0016_auto_20180309_0056... OK
> Applying hyperkitty.0017_file_attachments... OK
> Applying hyperkitty.0018_threadcategory_color... OK
> Applying hyperkitty.0019_auto_20190127_null_description... OK
> Applying hyperkitty.0020_auto_20190907_1927... OK
> Applying hyperkitty.0021_add_owners_mods...Traceback (most recent call
> last):
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/utils.py",
> line 87, in _execute
> return self.cursor.execute(sql)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/mysql/base.py",
> line 75, in execute
> return self.cursor.execute(query, args)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
> 179, in execute
> res = self._query(mogrified_query)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
> 330, in _query
> db.query(q)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/connections.py",
> line 261, in query
> _mysql.connection.query(self, query)
> MySQLdb.OperationalError: (1050, "Table
> 'hyperkitty_mailinglist_moderators' already exists")
>
> Then dropping table hyperkitty_mailinglist_moderators.
>
> (venv) mailman@new-mailman3 ~ (v3.1.1)> mailman-web migrate
> System check identified some issues:
>
> WARNINGS:
> account.EmailAddress: (models.W036) MariaDB does not support unique
> constraints with conditions.
> HINT: A constraint won't be created. Silence this warning if you
> don't care about it.
> account.EmailAddress: (models.W043) MariaDB does not support indexes on
> expressions.
> HINT: An index won't be created. Silence this warning if you don't
> care about it.
> Operations to perform:
> Apply all migrations: account, admin, auth, contenttypes,
> django_mailman3, django_q, hyperkitty, postorius, sessions, sites,
> socialaccount
> Running migrations:
> Applying hyperkitty.0021_add_owners_mods...Traceback (most recent call
> last):
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/utils.py",
> line 87, in _execute
> return self.cursor.execute(sql)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/mysql/base.py",
> line 75, in execute
> return self.cursor.execute(query, args)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
> 179, in execute
> res = self._query(mogrified_query)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
> 330, in _query
> db.query(q)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/connections.py",
> line 261, in query
> _mysql.connection.query(self, query)
> MySQLdb.OperationalError: (1050, "Table 'hyperkitty_mailinglist_owners'
> already exists")
>
> After dropping table hyperkitty_mailinglist_owners.
>
> (venv) mailman@new-mailman3 ~ (v3.1.1) [0|1]> mailman-web migrate
> System check identified some issues:
>
> WARNINGS:
> account.EmailAddress: (models.W036) MariaDB does not support unique
> constraints with conditions.
> HINT: A constraint won't be created. Silence this warning if you
> don't care about it.
> account.EmailAddress: (models.W043) MariaDB does not support indexes on
> expressions.
> HINT: An index won't be created. Silence this warning if you don't
> care about it.
> Operations to perform:
> Apply all migrations: account, admin, auth, contenttypes,
> django_mailman3, django_q, hyperkitty, postorius, sessions, sites,
> socialaccount
> Running migrations:
> Applying hyperkitty.0021_add_owners_mods...Traceback (most recent call
> last):
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/utils.py",
> line 87, in _execute
> return self.cursor.execute(sql)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/mysql/base.py",
> line 75, in execute
> return self.cursor.execute(query, args)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
> 179, in execute
> res = self._query(mogrified_query)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
> 330, in _query
> db.query(q)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/connections.py",
> line 261, in query
> _mysql.connection.query(self, query)
> MySQLdb.OperationalError: (1050, "Table
> 'hyperkitty_mailinglist_moderators' already exists")
>
> After dropping table hyperkitty_mailinglist_moderators.
>
> (venv) mailman@new-mailman3 ~ (v3.1.1) [0|1]> mailman-web migrate
> System check identified some issues:
>
> WARNINGS:
> account.EmailAddress: (models.W036) MariaDB does not support unique
> constraints with conditions.
> HINT: A constraint won't be created. Silence this warning if you
> don't care about it.
> account.EmailAddress: (models.W043) MariaDB does not support indexes on
> expressions.
> HINT: An index won't be created. Silence this warning if you don't
> care about it.
> Operations to perform:
> Apply all migrations: account, admin, auth, contenttypes,
> django_mailman3, django_q, hyperkitty, postorius, sessions, sites,
> socialaccount
> Running migrations:
> Applying hyperkitty.0021_add_owners_mods... OK
> Applying hyperkitty.0022_mailinglist_archive_rendering_mode... OK
> Applying hyperkitty.0023_alter_mailinglist_name... OK
> Applying postorius.0004_create_email_template...Traceback (most recent
> call last):
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/utils.py",
> line 87, in _execute
> return self.cursor.execute(sql)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/mysql/base.py",
> line 75, in execute
> return self.cursor.execute(query, args)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
> 179, in execute
> res = self._query(mogrified_query)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
> 330, in _query
> db.query(q)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/connections.py",
> line 261, in query
> _mysql.connection.query(self, query)
> MySQLdb.OperationalError: (1050, "Table 'postorius_emailtemplate' already
> exists")
>
> After dropping table postorius_emailtemplate.
>
> (venv) mailman@new-mailman3 ~ (v3.1.1) [0|1]> mailman-web migrate
> System check identified some issues:
>
> WARNINGS:
> account.EmailAddress: (models.W036) MariaDB does not support unique
> constraints with conditions.
> HINT: A constraint won't be created. Silence this warning if you
> don't care about it.
> account.EmailAddress: (models.W043) MariaDB does not support indexes on
> expressions.
> HINT: An index won't be created. Silence this warning if you don't
> care about it.
> Operations to perform:
> Apply all migrations: account, admin, auth, contenttypes,
> django_mailman3, django_q, hyperkitty, postorius, sessions, sites,
> socialaccount
> Running migrations:
> Applying postorius.0004_create_email_template... OK
> Applying postorius.0005_auto_20180707_1107... OK
> Applying postorius.0006_auto_20180711_1359... OK
> Applying postorius.0007_auto_20180712_0536... OK
> Applying postorius.0008_auto_20190310_0717... OK
> Applying postorius.0009_auto_20190508_1604... OK
> Applying postorius.0010_auto_20190821_0621... OK
> Applying postorius.0011_auto_20191109_1219... OK
> Applying postorius.0012_auto_20200420_2136... OK
> Applying postorius.0013_auto_20201116_0058... OK
> Applying postorius.0014_auto_20210329_2248... OK
> Applying postorius.0015_auto_20210619_0509... OK
> Applying postorius.0016_auto_20210810_2157... OK
> Applying postorius.0017_alter_emailtemplate_language... OK
> Applying postorius.0018_alter_emailtemplate_language... OK
> Applying socialaccount.0004_app_provider_id_settings... OK
> Applying socialaccount.0005_socialtoken_nullable_app... OK
> Applying socialaccount.0006_alter_socialaccount_extra_data... OK
>
> At this point the errors remains about not reaching web part. So I
> started mailman3-web.
>
> Then I see these errors on var/log/mailman.log
>
> Feb 19 15:35:14 2024 (543890) Traceback (most recent call last):
> File
> "/local/mailman/venv/lib/python3.10/site-packages/mailman_hyperkitty/__init__.py",
> line 158, in _archive_message
> url = self._send_message(mlist, msg)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/mailman_hyperkitty/__init__.py",
> line 228, in _send_message
> raise ValueError(result.text)
> ValueError: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
> <html><head>
> <title>404 Not Found</title>
> </head><body>
> <h1>Not Found</h1>
> <p>The requested URL was not found on this server.</p>
> <hr>
> <address>Apache/2.4.52 (Ubuntu) Server at 127.0.0.1 Port 80</address>
> </body></html>
>
> Feb 19 15:35:14 2024 (543890) HyperKitty failure on
> http://127.0.0.1/archives/api/mailman/archive: <!DOCTYPE HTML PUBLIC
> "-//IETF//DTD HTML 2.0//EN">
> <html><head>
> <title>404 Not Found</title>
> </head><body>
> <h1>Not Found</h1>
> <p>The requested URL was not found on this server.</p>
> <hr>
> <address>Apache/2.4.52 (Ubuntu) Server at 127.0.0.1 Port 80</address>
> </body></html>
> (404)
> Feb 19 15:35:14 2024 (543890) Could not archive the message with id <
> ff1707bb-d105-4f37-b3f8-9766b3563127(a)SESAMR604.domain.com>
> Feb 19 15:35:14 2024 (543890) archiving failed, re-queuing (mailing-list
> mylist.new-mailman.domain.com, message <
> ff1707bb-d105-4f37-b3f8-9766b3563127(a)machine.domain.com>)
> Feb 19 15:35:14 2024 (543890) Exception in the HyperKitty archiver:
> <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
> <html><head>
> <title>404 Not Found</title>
> </head><body>
> <h1>Not Found</h1>
> <p>The requested URL was not found on this server.</p>
> <hr>
> <address>Apache/2.4.52 (Ubuntu) Server at 127.0.0.1 Port 80</address>
> </body></html>
>
> And I can't get access to the hyperkitty at all.
>
> On var/logs/uwsgi-error.log:
>
> --- Logging error ---
> Traceback (most recent call last):
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
> line 356, in pusher
> task = SignedPackage.loads(task[1])
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django_q/signing.py",
> line 25, in loads
> return signing.loads(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django_q/core_signing.py",
> line 35, in loads
> base64d = force_bytes(TimestampSigner(key, salt=salt).unsign(s,
> max_age=max_age))
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django_q/core_signing.py",
> line 70, in unsign
> result = super(TimestampSigner, self).unsign(value)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django_q/core_signing.py",
> line 55, in unsign
> raise BadSignature('Signature "%s" does not match' % sig)
> django.core.signing.BadSignature: Signature "48do9gGvueBxakX_a4uNmSwD7cs"
> does not match
>
> During handling of the above exception, another exception occurred:
>
> Traceback (most recent call last):
> File "/usr/lib/python3.10/logging/__init__.py", line 1100, in emit
> msg = self.format(record)
> File "/usr/lib/python3.10/logging/__init__.py", line 943, in format
> return fmt.format(record)
> File "/usr/lib/python3.10/logging/__init__.py", line 678, in format
> record.message = record.getMessage()
> File "/usr/lib/python3.10/logging/__init__.py", line 368, in getMessage
> msg = msg % self.args
> TypeError: not all arguments converted during string formatting
> Call stack:
> File "/local/mailman/venv/bin/mailman-web", line 8, in <module>
> sys.exit(main())
> File
> "/local/mailman/venv/lib/python3.10/site-packages/mailman_web/manage.py",
> line 90, in main
> execute_from_command_line(sys.argv)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/core/management/__init__.py",
> line 446, in execute_from_command_line
> utility.execute()
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/core/management/__init__.py",
> line 440, in execute
> self.fetch_command(subcommand).run_from_argv(self.argv)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/core/management/base.py",
> line 402, in run_from_argv
> self.execute(*args, **cmd_options)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/core/management/base.py",
> line 448, in execute
> output = self.handle(*args, **options)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django_q/management/commands/qcluster.py",
> line 22, in handle
> q.start()
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
> line 78, in start
> self.sentinel.start()
> File "/usr/lib/python3.10/multiprocessing/process.py", line 121, in start
> self._popen = self._Popen(self)
> File "/usr/lib/python3.10/multiprocessing/context.py", line 224, in
> _Popen
> return _default_context.get_context().Process._Popen(process_obj)
> File "/usr/lib/python3.10/multiprocessing/context.py", line 281, in
> _Popen
> return Popen(process_obj)
> File "/usr/lib/python3.10/multiprocessing/popen_fork.py", line 19, in
> __init__
> self._launch(process_obj)
> File "/usr/lib/python3.10/multiprocessing/popen_fork.py", line 71, in
> _launch
> code = process_obj._bootstrap(parent_sentinel=child_r)
> File "/usr/lib/python3.10/multiprocessing/process.py", line 314, in
> _bootstrap
> self.run()
> File "/usr/lib/python3.10/multiprocessing/process.py", line 108, in run
> self._target(*self._args, **self._kwargs)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
> line 168, in __init__
> self.start()
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
> line 172, in start
> self.spawn_cluster()
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
> line 248, in spawn_cluster
> self.pusher = self.spawn_pusher()
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
> line 201, in spawn_pusher
> return self.spawn_process(pusher, self.task_queue, self.event_out,
> self.broker)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
> line 197, in spawn_process
> p.start()
> File "/usr/lib/python3.10/multiprocessing/process.py", line 121, in start
> self._popen = self._Popen(self)
> File "/usr/lib/python3.10/multiprocessing/context.py", line 224, in
> _Popen
> return _default_context.get_context().Process._Popen(process_obj)
> File "/usr/lib/python3.10/multiprocessing/context.py", line 281, in
> _Popen
> return Popen(process_obj)
> File "/usr/lib/python3.10/multiprocessing/popen_fork.py", line 19, in
> __init__
> self._launch(process_obj)
> File "/usr/lib/python3.10/multiprocessing/popen_fork.py", line 71, in
> _launch
> code = process_obj._bootstrap(parent_sentinel=child_r)
> File "/usr/lib/python3.10/multiprocessing/process.py", line 314, in
> _bootstrap
> self.run()
> File "/usr/lib/python3.10/multiprocessing/process.py", line 108, in run
> self._target(*self._args, **self._kwargs)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
> line 358, in pusher
> logger.error(e, traceback.format_exc())
> Message: BadSignature('Signature "48do9gGvueBxakX_a4uNmSwD7cs" does not
> match')
> Arguments: ('Traceback (most recent call last):\n File
> "/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
> line 356, in pusher\n task = SignedPackage.loads(task[1])\n File
> "/local/mailman/venv/lib/python3.10/sit
> e-packages/django_q/signing.py", line 25, in loads\n return
> signing.loads(\n File
> "/local/mailman/venv/lib/python3.10/site-packages/django_q/core_signing.py",
> line 35, in loads\n base64d = force_bytes(TimestampSigner(key, salt=sa
> lt).unsign(s, max_age=max_age))\n File
> "/local/mailman/venv/lib/python3.10/site-packages/django_q/core_signing.py",
> line 70, in unsign\n result = super(TimestampSigner,
> self).unsign(value)\n File "/local/mailman/venv/lib/python3.10
> /site-packages/django_q/core_signing.py", line 55, in unsign\n raise
> BadSignature(\'Signature "%s" does not match\' %
> sig)\ndjango.core.signing.BadSignature: Signature
> "48do9gGvueBxakX_a4uNmSwD7cs" does not match\n',)
>
> I'm using uwsgi via apache:
>
> (venv) mailman@new-mailman3 ~ (v3.1.1)> more
> /etc/apache2/conf-enabled/mailman3.conf
> Alias /mailman3/favicon.ico /local/mailman/web/static/favicon.ico
> Alias /mailman/favicon.ico /local/mailman/web/static/favicon.ico
> Alias /favicon.ico /local/mailman/web/static/favicon.ico
> Alias /mailman3/static /local/mailman/web/static
> Alias /mailman/static /local/mailman/web/static
> Alias /static /local/mailman/web/static
>
> <Directory "/local/mailman/web/static">
> Require all granted
> </Directory>
>
> <IfModule mod_proxy_uwsgi.c>
> ProxyPass /mailman3/favicon.ico !
> ProxyPass /mailman/favicon.ico !
> ProxyPass /favicon.ico !
> ProxyPass /mailman3/static !
> ProxyPass /mailman/static !
> ProxyPass /static !
> ProxyPass /mailman3
> unix:/local/mailman/var/uwsgi.sock|uwsgi://localhost/
> ProxyPass /mailman
> unix:/local/mailman/var/uwsgi.sock|uwsgi://localhost/
> #ProxyPass /mailman3 http://localhost:8000/ timeout=180
> #ProxyPass /mailman http://localhost:8000/ timeout=180
> #ProxyPass / http://localhost:8000/ timeout=180
> </IfModule>
>
> Best Regards,
> Helio Loureiro
> https://helio.loureiro.eng.br
> https://github.com/helioloureiro
> https://mastodon.social/@helioloureiro
>
>
> On Fri, 16 Feb 2024 at 22:39, Mark Sapiro <mark(a)msapiro.net> wrote:
>
>> On 2/16/24 07:12, Helio Loureiro wrote:
>>
>> > - start mailman3 and mailman-3web
>> > - run mailman3-web migrate
>>
>> You should run mailman3-web migrate when mailman-3web is not running.
>>
>> > django.db.utils.OperationalError: (1050, "Table
>> > 'hyperkitty_mailinglist_moderators' already exists")
>> >
>> > I tried to drop the table, but then it complained about another one. I
>> > dropped all the complained tables and as result hypperkitty never
>> > started. So I went back to see why the first error happened.
>>
>> The errors occurred because you had recently added tables in your
>> database so they couldn't be added by the migrations. Dropping the
>> tables was the correct thing to do.
>>
>> Did you ultimately successfully run all the migrations?
>>
>> When you say `hypperkitty never started`, what exactly does that mean?
>> What happens when you try to access the archives? Can you access
>> postorius? Are any errors logged in mailman3-web's log?
>>
>> --
>> Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
>> San Francisco Bay Area, California better use your sense - B. Dylan
>>
>> _______________________________________________
>> Mailman-users mailing list -- mailman-users(a)mailman3.org
>> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
>> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>> Archived at:
>> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
>>
>> This message sent to helio(a)loureiro.eng.br
>>
>
2 years
[MM3-users] Re: Hacking attempts?
by Lists
Hi Tim,
Yes, we use fail2ban already. I just wanted to check that this is actually being caused solely by the would be hackers and the “error” isn’t indicative of something we’ve configured wrong within MM3?
Also, this error doesn’t appear in the MM or Apache logs, it just gets emailed, so I am going to have to figure out how to turn on the appropriate logging in order to get fail2ban to monitor it. Any pointers in this regard would be gratefully received.
Thanks,
Chris
> On 14 Jul 2022, at 13:09, Tim Cutts <tim(a)thecutts.org> wrote:
>
> You could use an application like fail2ban to watch your mailman/web logs and automatically firewall off attacking IP addresses which cause a lot of these errors in a defined window of time. This application is independent from mailman, and you can use it to protect against all kinds of brute force attacks. Ssh, web, mail - anything that creates a log file recording errors from remote IP addresses.
>
> Just be careful when configuring it for remote servers so you don’t saw off the branch you’re sitting on…. I run a mail server for my family, and on one occasion a family member repeatedly got her password wrong which caused fail2ban to lock all of us out because it blocked our home NAT address, and I had to use my mobile phone to unblock us. :-)
>
> Tim
>
>> On 14 Jul 2022, at 08:29, Lists via Mailman-users <mailman-users(a)mailman3.org <mailto:mailman-users@mailman3.org>> wrote:
>>
>> Hi,
>>
>> We are seeing thousands of these emails every day, looks like someone is trying to hack our Mailman3 but would appreciate someone with more knowledge of MM3 to confirm.
>>
>> Is this a problem with our setup? i.e. the “Internal Server Error” bit, or are the hackers just sending bad data that is causing the error? also how do we stop/block this?
>>
>> TIA and here is a typical email:
>>
>>
>> Subject: [Django] ERROR (EXTERNAL IP): Internal Server Error: /mailman3/accounts/fedora/login/
>>
>> Internal Server Error: /mailman3/accounts/fedora/login/
>>
>> TypeError at /accounts/fedora/login/
>> _openid_consumer() missing 2 required positional arguments: 'provider' and 'endpoint'
>>
>> Request Method: GET
>> Request URL: https://mailman.ardc.net/mailman3/accounts/fedora/login/?process=login&next… <https://mailman.ardc.net/mailman3/accounts/fedora/login/?process=login&next…><https://mailman.ardc.net/mailman3/accounts/fedora/login/?process=login&next… <https://mailman.ardc.net/mailman3/accounts/fedora/login/?process=login&next…>>
>> Django Version: 2.2.26
>> Python Executable: /usr/bin/uwsgi-core
>> Python Version: 3.9.2
>> Python Path: ['.', '', '/usr/lib/python39.zip', '/usr/lib/python3.9', '/usr/lib/python3.9/lib-dynload', '/usr/local/lib/python3.9/dist-packages', '/usr/lib/python3/dist-packages', '/usr/lib/python3.9/dist-packages']
>> Server time: Thu, 14 Jul 2022 02:34:04 -0400
>> Installed Applications:
>> ('hyperkitty',
>> 'postorius',
>> 'django_mailman3',
>> 'django.contrib.admin',
>> 'django.contrib.auth',
>> 'django.contrib.contenttypes',
>> 'django.contrib.sessions',
>> 'django.contrib.sites',
>> 'django.contrib.messages',
>> 'django.contrib.staticfiles',
>> 'rest_framework',
>> 'django_gravatar',
>> 'compressor',
>> 'haystack',
>> 'django_extensions',
>> 'django_q',
>> 'allauth',
>> 'allauth.account',
>> 'allauth.socialaccount',
>> 'django_mailman3.lib.auth.fedora')
>> Installed Middleware:
>> ('django.contrib.sessions.middleware.SessionMiddleware',
>> 'django.middleware.common.CommonMiddleware',
>> 'django.middleware.csrf.CsrfViewMiddleware',
>> 'django.middleware.locale.LocaleMiddleware',
>> 'django.contrib.auth.middleware.AuthenticationMiddleware',
>> 'django.contrib.messages.middleware.MessageMiddleware',
>> 'django.middleware.clickjacking.XFrameOptionsMiddleware',
>> 'django.middleware.security.SecurityMiddleware',
>> 'django_mailman3.middleware.TimezoneMiddleware',
>> 'postorius.middleware.PostoriusMiddleware')
>>
>>
>> Traceback:
>>
>> File "/usr/lib/python3/dist-packages/django/core/handlers/exception.py" in inner
>> 34. response = get_response(request)
>>
>> File "/usr/lib/python3/dist-packages/django/core/handlers/base.py" in _get_response
>> 115. response = self.process_exception_by_middleware(e, request)
>>
>> File "/usr/lib/python3/dist-packages/django/core/handlers/base.py" in _get_response
>> 113. response = wrapped_callback(request, *callback_args, **callback_kwargs)
>>
>> File "/usr/lib/python3/dist-packages/django/views/generic/base.py" in view
>> 71. return self.dispatch(request, *args, **kwargs)
>>
>> File "/usr/lib/python3/dist-packages/django/views/generic/base.py" in dispatch
>> 97. return handler(request, *args, **kwargs)
>>
>> File "/usr/lib/python3/dist-packages/django_mailman3/lib/auth/fedora/views.py" in get
>> 56. return self.post(request, *args, **kwargs)
>>
>> File "/usr/lib/python3/dist-packages/django_mailman3/lib/auth/fedora/views.py" in post
>> 67. client = _openid_consumer(request)
>>
>> Exception Type: TypeError at /accounts/fedora/login/
>> Exception Value: _openid_consumer() missing 2 required positional arguments: 'provider' and 'endpoint'
>> Request information:
>> USER: AnonymousUser
>>
>> GET:
>> process = 'login'
>> next = '/mailman3/hyperkitty/list/44net(a)mailman.ampr.org <mailto:mailman3/hyperkitty/list/44net@mailman.ampr.org><mailto:mailman3/hyperkitty/list/44net@mailman.ampr.org <mailto:mailman3/hyperkitty/list/44net@mailman.ampr.org>>/message/O5Z2YZBJZXFPH2ACAORN6BST7B2S3M3P/'
>>
>> POST: No POST data
>>
>> FILES: No FILES data
>>
>> COOKIES: No cookie data
>>
>> META:
>> CONTEXT_DOCUMENT_ROOT = '/var/www/html'
>> CONTEXT_PREFIX = ''
>> DOCUMENT_ROOT = '/var/www/html'
>> GATEWAY_INTERFACE = 'CGI/1.1'
>> HTTPS = 'on'
>> HTTP_ACCEPT = 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
>> HTTP_ACCEPT_ENCODING = 'gzip,deflate'
>> HTTP_CONNECTION = 'Keep-Alive'
>> HTTP_HOST = 'mailman.ardc.net <http://mailman.ardc.net/> <http://mailman.ardc.net/ <http://mailman.ardc.net/>>'
>> HTTP_USER_AGENT = 'Mozilla/5.0 (compatible; BLEXBot/1.0; +http://webmeup-crawler.com/ <http://webmeup-crawler.com/> <http://webmeup-crawler.com/ <http://webmeup-crawler.com/>>)'
>> PATH = '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
>> PATH_INFO = '/accounts/fedora/login/'
>> QUERY_STRING = 'process=login&next=/mailman3/hyperkitty/list/44net(a)mailman.ampr.org <mailto:process=login&next=/mailman3/hyperkitty/list/44net@mailman.ampr.org><mailto:process=login&next=/mailman3/hyperkitty/list/44net@mailman.ampr.org <mailto:process=login&next=/mailman3/hyperkitty/list/44net@mailman.ampr.org>>/message/O5Z2YZBJZXFPH2ACAORN6BST7B2S3M3P/'
>> REMOTE_ADDR = '157.90.177.212'
>> REMOTE_PORT = '63384'
>> REQUEST_METHOD = 'GET'
>> REQUEST_SCHEME = 'https'
>> REQUEST_URI = '/mailman3/accounts/fedora/login/?process=login&next=/mailman3/hyperkitty/list/44net(a)mailman.ampr.org <mailto:mailman3/accounts/fedora/login/?process=login&next=/mailman3/hyperkitty/list/44net@mailman.ampr.org><mailto:mailman3/accounts/fedora/login/?process=login&next=/mailman3/hyperkitty/list/44net@mailman.ampr.org <mailto:mailman3/accounts/fedora/login/?process=login&next=/mailman3/hyperkitty/list/44net@mailman.ampr.org>>/message/O5Z2YZBJZXFPH2ACAORN6BST7B2S3M3P/'
>> SCRIPT_FILENAME = 'proxy:uwsgi://localhost//accounts/fedora/login/' <uwsgi://localhost//accounts/fedora/login/'><uwsgi://localhost//accounts/fedora/login/' <uwsgi://localhost//accounts/fedora/login/'>>
>> SCRIPT_NAME = '/mailman3'
>> SERVER_ADDR = '44.1.1.29'
>> SERVER_ADMIN = 'postmaster(a)ardc.net <mailto:postmaster@ardc.net> <mailto:postmaster@ardc.net <mailto:postmaster@ardc.net>>'
>> SERVER_NAME = 'mailman.ardc.net <http://mailman.ardc.net/> <http://mailman.ardc.net/ <http://mailman.ardc.net/>>'
>> SERVER_PORT = '443'
>> SERVER_PROTOCOL = 'HTTP/1.1'
>> SERVER_SIGNATURE = '<address>Apache/2.4.53 (Debian) Server at mailman.ardc.net <http://mailman.ardc.net/><http://mailman.ardc.net/ <http://mailman.ardc.net/>> Port 443</address>\n'
>> SERVER_SOFTWARE = 'Apache/2.4.53 (Debian)'
>> SSL_TLS_SNI = 'mailman.ardc.net <http://mailman.ardc.net/> <http://mailman.ardc.net/ <http://mailman.ardc.net/>>'
>> uwsgi.core = 1
>> uwsgi.node = b'mailman'
>> uwsgi.version = b'2.0.19.1-debian'
>> wsgi.errors = <_io.TextIOWrapper name=2 mode='w' encoding='UTF-8'>
>> wsgi.file_wrapper = ''
>> wsgi.input = <uwsgi._Input object at 0x7f8e0b4a0410>
>> wsgi.multiprocess = False
>> wsgi.multithread = True
>> wsgi.run_once = False
>> wsgi.url_scheme = 'https'
>> wsgi.version = '(1, 0)'
>>
>> Settings:
>> Using settings module settings
>> ABSOLUTE_URL_OVERRIDES = {}
>> ACCOUNT_AUTHENTICATION_METHOD = 'username_email'
>> ACCOUNT_DEFAULT_HTTP_PROTOCOL = 'https'
>> ACCOUNT_EMAIL_REQUIRED = True
>> ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
>> ACCOUNT_UNIQUE_EMAIL = True
>> ADMINS = "(('Mailman Suite Admin', 'postmaster(a)ardc.net <mailto:postmaster@ardc.net><mailto:postmaster@ardc.net <mailto:postmaster@ardc.net>>'),)"
>> ALLOWED_HOSTS = ['*']
>> APPEND_SLASH = True
>> AUTHENTICATION_BACKENDS = "('django.contrib.auth.backends.ModelBackend', 'allauth.account.auth_backends.AuthenticationBackend')"
>> AUTH_PASSWORD_VALIDATORS = '********************'
>> AUTH_USER_MODEL = 'auth.User'
>> BASE_DIR = '/usr/share/mailman3-web'
>> CACHES = {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}}
>> CACHE_MIDDLEWARE_ALIAS = 'default'
>> CACHE_MIDDLEWARE_KEY_PREFIX = '********************'
>> CACHE_MIDDLEWARE_SECONDS = 600
>> COMPRESSORS = {'css': 'compressor.css.CssCompressor', 'js': 'compressor.js.JsCompressor'}
>> COMPRESS_CACHEABLE_PRECOMPILERS = '()'
>> COMPRESS_CACHE_BACKEND = 'default'
>> COMPRESS_CACHE_KEY_FUNCTION = '********************'
>> COMPRESS_CLEAN_CSS_ARGUMENTS = ''
>> COMPRESS_CLEAN_CSS_BINARY = 'cleancss'
>> COMPRESS_CLOSURE_COMPILER_ARGUMENTS = ''
>> COMPRESS_CLOSURE_COMPILER_BINARY = 'java -jar compiler.jar'
>> COMPRESS_CSS_HASHING_METHOD = 'mtime'
>> COMPRESS_DATA_URI_MAX_SIZE = 1024
>> COMPRESS_DEBUG_TOGGLE = None
>> COMPRESS_ENABLED = True
>> COMPRESS_FILTERS = {'css': ['compressor.filters.css_default.CssAbsoluteFilter'], 'js': ['compressor.filters.jsmin.JSMinFilter']}
>> COMPRESS_JINJA2_GET_ENVIRONMENT = <function CompressorConf.JINJA2_GET_ENVIRONMENT at 0x7f8e17d7a670>
>> COMPRESS_MINT_DELAY = 30
>> COMPRESS_MTIME_DELAY = 10
>> COMPRESS_OFFLINE = True
>> COMPRESS_OFFLINE_CONTEXT = {'STATIC_URL': '/mailman3/static/'}
>> COMPRESS_OFFLINE_MANIFEST = 'manifest.json'
>> COMPRESS_OFFLINE_TIMEOUT = 31536000
>> COMPRESS_OUTPUT_DIR = 'CACHE'
>> COMPRESS_PARSER = 'compressor.parser.AutoSelectParser'
>> COMPRESS_PRECOMPILERS = '()'
>> COMPRESS_REBUILD_TIMEOUT = 2592000
>> COMPRESS_ROOT = '/var/lib/mailman3/web/static'
>> COMPRESS_STORAGE = 'compressor.storage.CompressorFileStorage'
>> COMPRESS_TEMPLATE_FILTER_CONTEXT = {'STATIC_URL': '/mailman3/static/'}
>> COMPRESS_URL = '/mailman3/static/'
>> COMPRESS_URL_PLACEHOLDER = '/__compressor_url_placeholder__/'
>> COMPRESS_VERBOSE = False
>> COMPRESS_YUGLIFY_BINARY = 'yuglify'
>> COMPRESS_YUGLIFY_CSS_ARGUMENTS = '--terminal'
>> COMPRESS_YUGLIFY_JS_ARGUMENTS = '--terminal'
>> COMPRESS_YUI_BINARY = 'java -jar yuicompressor.jar'
>> COMPRESS_YUI_CSS_ARGUMENTS = ''
>> COMPRESS_YUI_JS_ARGUMENTS = ''
>> CSRF_COOKIE_AGE = 31449600
>> CSRF_COOKIE_DOMAIN = None
>> CSRF_COOKIE_HTTPONLY = False
>> CSRF_COOKIE_NAME = 'csrftoken'
>> CSRF_COOKIE_PATH = '/'
>> CSRF_COOKIE_SAMESITE = 'Lax'
>> CSRF_COOKIE_SECURE = False
>> CSRF_FAILURE_VIEW = 'django.views.csrf.csrf_failure'
>> CSRF_HEADER_NAME = 'HTTP_X_CSRFTOKEN'
>> CSRF_TRUSTED_ORIGINS = []
>> CSRF_USE_SESSIONS = False
>> DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql', 'NAME': 'mailman', 'USER': 'mailman', 'PASSWORD': '********************', 'HOST': ‘X.X.X.X', 'PORT': '', 'OPTIONS': {'init_command': "SET sql_mode='STRICT_TRANS_TABLES'", 'charset': 'utf8mb4'}, 'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0, 'TIME_ZONE': None, 'TEST': {'CHARSET': None, 'COLLATION': None, 'NAME': None, 'MIRROR': None}}}
>> DATABASE_ROUTERS = []
>> DATA_UPLOAD_MAX_MEMORY_SIZE = 2621440
>> DATA_UPLOAD_MAX_NUMBER_FIELDS = 1000
>> DATETIME_FORMAT = 'N j, Y, P'
>> DATETIME_INPUT_FORMATS = ['%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f', '%Y-%m-%d %H:%M', '%Y-%m-%d', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%Y', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M', '%m/%d/%y']
>> DATE_FORMAT = 'N j, Y'
>> DATE_INPUT_FORMATS = ['%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', '%b %d %Y', '%b %d, %Y', '%d %b %Y', '%d %b, %Y', '%B %d %Y', '%B %d, %Y', '%d %B %Y', '%d %B, %Y']
>> DEBUG = False
>> DEBUG_PROPAGATE_EXCEPTIONS = False
>> DECIMAL_SEPARATOR = '.'
>> DEFAULT_CHARSET = 'utf-8'
>> DEFAULT_CONTENT_TYPE = 'text/html'
>> DEFAULT_EXCEPTION_REPORTER_FILTER = 'django.views.debug.SafeExceptionReporterFilter'
>> DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
>> DEFAULT_FROM_EMAIL = 'postorius(a)mailman.ardc.net <mailto:postorius@mailman.ardc.net><mailto:postorius@mailman.ardc.net <mailto:postorius@mailman.ardc.net>>'
>> DEFAULT_INDEX_TABLESPACE = ''
>> DEFAULT_TABLESPACE = ''
>> DISALLOWED_USER_AGENTS = []
>> EMAILNAME = 'mailman.ardc.net <http://mailman.ardc.net/> <http://mailman.ardc.net/ <http://mailman.ardc.net/>>'
>> EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
>> EMAIL_HOST = 'localhost'
>> EMAIL_HOST_PASSWORD = '********************'
>> EMAIL_HOST_USER = ''
>> EMAIL_PORT = 25
>> EMAIL_SSL_CERTFILE = None
>> EMAIL_SSL_KEYFILE = '********************'
>> EMAIL_SUBJECT_PREFIX = '[Django] '
>> EMAIL_TIMEOUT = None
>> EMAIL_USE_LOCALTIME = False
>> EMAIL_USE_SSL = False
>> EMAIL_USE_TLS = False
>> FILE_CHARSET = 'utf-8'
>> FILE_UPLOAD_DIRECTORY_PERMISSIONS = None
>> FILE_UPLOAD_HANDLERS = ['django.core.files.uploadhandler.MemoryFileUploadHandler', 'django.core.files.uploadhandler.TemporaryFileUploadHandler']
>> FILE_UPLOAD_MAX_MEMORY_SIZE = 2621440
>> FILE_UPLOAD_PERMISSIONS = None
>> FILE_UPLOAD_TEMP_DIR = None
>> FILTER_VHOST = False
>> FIRST_DAY_OF_WEEK = 0
>> FIXTURE_DIRS = []
>> FORCE_SCRIPT_NAME = None
>> FORMAT_MODULE_PATH = None
>> FORM_RENDERER = 'django.forms.renderers.DjangoTemplates'
>> HAYSTACK_CONNECTIONS = {'default': {'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine', 'PATH': '/var/lib/mailman3/web/fulltext_index'}}
>> HOSTNAME = 'localhost.local'
>> IGNORABLE_404_URLS = []
>> INSTALLED_APPS = "('hyperkitty', 'postorius', 'django_mailman3', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'django_gravatar', 'compressor', 'haystack', 'django_extensions', 'django_q', 'allauth', 'allauth.account', 'allauth.socialaccount', 'django_mailman3.lib.auth.fedora')"
>> INTERNAL_IPS = []
>> LANGUAGES = [('af', 'Afrikaans'), ('ar', 'Arabic'), ('ast', 'Asturian'), ('az', 'Azerbaijani'), ('bg', 'Bulgarian'), ('be', 'Belarusian'), ('bn', 'Bengali'), ('br', 'Breton'), ('bs', 'Bosnian'), ('ca', 'Catalan'), ('cs', 'Czech'), ('cy', 'Welsh'), ('da', 'Danish'), ('de', 'German'), ('dsb', 'Lower Sorbian'), ('el', 'Greek'), ('en', 'English'), ('en-au', 'Australian English'), ('en-gb', 'British English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('es-ar', 'Argentinian Spanish'), ('es-co', 'Colombian Spanish'), ('es-mx', 'Mexican Spanish'), ('es-ni', 'Nicaraguan Spanish'), ('es-ve', 'Venezuelan Spanish'), ('et', 'Estonian'), ('eu', 'Basque'), ('fa', 'Persian'), ('fi', 'Finnish'), ('fr', 'French'), ('fy', 'Frisian'), ('ga', 'Irish'), ('gd', 'Scottish Gaelic'), ('gl', 'Galician'), ('he', 'Hebrew'), ('hi', 'Hindi'), ('hr', 'Croatian'), ('hsb', 'Upper Sorbian'), ('hu', 'Hungarian'), ('hy', 'Armenian'), ('ia', 'Interlingua'), ('id', 'Indonesian'), ('io', 'Ido'), ('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka', 'Georgian'), ('kab', 'Kabyle'), ('kk', 'Kazakh'), ('km', 'Khmer'), ('kn', 'Kannada'), ('ko', 'Korean'), ('lb', 'Luxembourgish'), ('lt', 'Lithuanian'), ('lv', 'Latvian'), ('mk', 'Macedonian'), ('ml', 'Malayalam'), ('mn', 'Mongolian'), ('mr', 'Marathi'), ('my', 'Burmese'), ('nb', 'Norwegian Bokmål'), ('ne', 'Nepali'), ('nl', 'Dutch'), ('nn', 'Norwegian Nynorsk'), ('os', 'Ossetic'), ('pa', 'Punjabi'), ('pl', 'Polish'), ('pt', 'Portuguese'), ('pt-br', 'Brazilian Portuguese'), ('ro', 'Romanian'), ('ru', 'Russian'), ('sk', 'Slovak'), ('sl', 'Slovenian'), ('sq', 'Albanian'), ('sr', 'Serbian'), ('sr-latn', 'Serbian Latin'), ('sv', 'Swedish'), ('sw', 'Swahili'), ('ta', 'Tamil'), ('te', 'Telugu'), ('th', 'Thai'), ('tr', 'Turkish'), ('tt', 'Tatar'), ('udm', 'Udmurt'), ('uk', 'Ukrainian'), ('ur', 'Urdu'), ('vi', 'Vietnamese'), ('zh-hans', 'Simplified Chinese'), ('zh-hant', 'Traditional Chinese')]
>> LANGUAGES_BIDI = ['he', 'ar', 'fa', 'ur']
>> LANGUAGE_CODE = 'en-us'
>> LANGUAGE_COOKIE_AGE = None
>> LANGUAGE_COOKIE_DOMAIN = None
>> LANGUAGE_COOKIE_NAME = 'django_language'
>> LANGUAGE_COOKIE_PATH = '/'
>> LOCALE_PATHS = []
>> LOGGING = {'version': 1, 'disable_existing_loggers': False, 'filters': {'require_debug_false': {'()': 'django.utils.log.RequireDebugFalse'}}, 'handlers': {'mail_admins': {'level': 'ERROR', 'filters': ['require_debug_false'], 'class': 'django.utils.log.AdminEmailHandler'}, 'file': {'level': 'INFO', 'class': 'logging.handlers.RotatingFileHandler', 'filename': '/var/log/mailman3/web/mailman-web.log', 'formatter': 'verbose'}, 'console': {'class': 'logging.StreamHandler', 'formatter': 'simple'}}, 'loggers': {'django.request': {'handlers': ['mail_admins', 'file'], 'level': 'INFO', 'propagate': True}, 'django': {'handlers': ['file'], 'level': 'INFO', 'propagate': True}, 'hyperkitty': {'handlers': ['file'], 'level': 'INFO', 'propagate': True}, 'postorius': {'handlers': ['file'], 'level': 'INFO', 'propagate': True}}, 'formatters': {'verbose': {'format': '%(levelname)s %(asctime)s %(process)d %(name)s %(message)s'}, 'simple': {'format': '%(levelname)s %(message)s'}}}
>> LOGGING_CONFIG = 'logging.config.dictConfig'
>> LOGIN_REDIRECT_URL = 'list_index'
>> LOGIN_URL = 'account_login'
>> LOGOUT_REDIRECT_URL = None
>> LOGOUT_URL = 'account_logout'
>> MAILMAN_ARCHIVER_FROM = "('127.0.0.1', '::1', '10.4.16.129', '44.1.1.29')"
>> MAILMAN_ARCHIVER_KEY = '********************'
>> MAILMAN_REST_API_PASS = '********************'
>> MAILMAN_REST_API_URL = '********************'
>> MAILMAN_REST_API_USER = '********************'
>> MANAGERS = []
>> MEDIA_ROOT = ''
>> MEDIA_URL = ''
>> MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage'
>> MESSAGE_TAGS = {40: 'danger'}
>> MIDDLEWARE = "('django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.security.SecurityMiddleware', 'django_mailman3.middleware.TimezoneMiddleware', 'postorius.middleware.PostoriusMiddleware')"
>> MIGRATION_MODULES = {}
>> MONTH_DAY_FORMAT = 'F j'
>> NUMBER_GROUPING = 0
>> PASSWORD_HASHERS = '********************'
>> PASSWORD_RESET_TIMEOUT_DAYS = '********************'
>> POSTORIUS_TEMPLATE_BASE_URL = 'http://localhost/mailman3/ <http://localhost/mailman3/><http://localhost/mailman3/ <http://localhost/mailman3/>>'
>> PREPEND_WWW = False
>> Q_CLUSTER = {'timeout': 300, 'save_limit': 100, 'orm': 'default', 'poll': 5}
>> ROOT_URLCONF = 'urls'
>> SECRET_KEY = '********************'
>> SECURE_BROWSER_XSS_FILTER = False
>> SECURE_CONTENT_TYPE_NOSNIFF = False
>> SECURE_HSTS_INCLUDE_SUBDOMAINS = False
>> SECURE_HSTS_PRELOAD = False
>> SECURE_HSTS_SECONDS = 0
>> SECURE_PROXY_SSL_HEADER = None
>> SECURE_REDIRECT_EXEMPT = []
>> SECURE_SSL_HOST = None
>> SECURE_SSL_REDIRECT = False
>> SERVER_EMAIL = 'root(a)mailman.ardc.net <mailto:root@mailman.ardc.net> <mailto:root@mailman.ardc.net <mailto:root@mailman.ardc.net>>'
>> SESSION_CACHE_ALIAS = 'default'
>> SESSION_COOKIE_AGE = 1209600
>> SESSION_COOKIE_DOMAIN = None
>> SESSION_COOKIE_HTTPONLY = True
>> SESSION_COOKIE_NAME = 'sessionid'
>> SESSION_COOKIE_PATH = '/'
>> SESSION_COOKIE_SAMESITE = 'Lax'
>> SESSION_COOKIE_SECURE = False
>> SESSION_ENGINE = 'django.contrib.sessions.backends.db'
>> SESSION_EXPIRE_AT_BROWSER_CLOSE = False
>> SESSION_FILE_PATH = None
>> SESSION_SAVE_EVERY_REQUEST = False
>> SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer'
>> SETTINGS_MODULE = 'settings'
>> SHORT_DATETIME_FORMAT = 'm/d/Y P'
>> SHORT_DATE_FORMAT = 'm/d/Y'
>> SIGNING_BACKEND = 'django.core.signing.TimestampSigner'
>> SILENCED_SYSTEM_CHECKS = []
>> SITE_ID = 1
>> SOCIALACCOUNT_PROVIDERS = {}
>> STATICFILES_DIRS = '()'
>> STATICFILES_FINDERS = "('django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder', 'compressor.finders.CompressorFinder')"
>> STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage'
>> STATIC_ROOT = '/var/lib/mailman3/web/static'
>> STATIC_URL = '/mailman3/static/'
>> TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': {'context_processors': ['django.template.context_processors.debug', 'django.template.context_processors.i18n', 'django.template.context_processors.media', 'django.template.context_processors.static', 'django.template.context_processors.tz', 'django.template.context_processors.csrf', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', 'django_mailman3.context_processors.common', 'hyperkitty.context_processors.common', 'postorius.context_processors.postorius']}}]
>> TEST_NON_SERIALIZED_APPS = []
>> TEST_RUNNER = 'django.test.runner.DiscoverRunner'
>> THOUSAND_SEPARATOR = ','
>> TIME_FORMAT = 'P'
>> TIME_INPUT_FORMATS = ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']
>> TIME_ZONE = 'UTC'
>> USE_I18N = True
>> USE_L10N = True
>> USE_THOUSAND_SEPARATOR = False
>> USE_TZ = True
>> USE_X_FORWARDED_HOST = True
>> USE_X_FORWARDED_PORT = False
>> WSGI_APPLICATION = 'wsgi.application'
>> X_FRAME_OPTIONS = 'SAMEORIGIN'
>> YEAR_MONTH_FORMAT = 'F Y’
>>
>>
>>
>>
>> _______________________________________________
>> Mailman-users mailing list -- mailman-users(a)mailman3.org <mailto:mailman-users@mailman3.org>
>> To unsubscribe send an email to mailman-users-leave(a)mailman3.org <mailto:mailman-users-leave@mailman3.org>
>> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/ <https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/>
>
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org <mailto:mailman-users@mailman3.org>
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org <mailto:mailman-users-leave@mailman3.org>
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/ <https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/>
3 years, 7 months