(Debian 12)
I have the problem that the hyperkitty archive is empty. The file /var/log/mailman3/mailman.log show sometimes the message
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='
www.XXXXX-project.demailman3
', port=443): Max retries exceeded with url: /hyperkitty/api/mailman/archive (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fa48b43a910>: Failed to establish a new connection: [Errno -2] Name or service not known'))
(there is a slash missing between 'project.de' and 'mailman3'). My goal is, of course, to have an running archive. But I think the error message could be a hint about the reason)
Do you have an idea what can I do about this?
Hi, I'm trying to configure mailman3 on my AlmaLinux 9 server and when checking the mailman3 status, I get the following:
# mailman3 status
Traceback (most recent call last):
File "/usr/lib/python3.9/site-packages/alembic/script/base.py", line 227, in _catch_revision_errors
yield
File "/usr/lib/python3.9/site-packages/alembic/script/base.py", line 439, in _upgrade_revs
for script in reversed(list(revs))
File "/usr/lib/python3.9/site-packages/alembic/script/revision.py", line 793, in iterate_revisions
revisions, heads = fn(
File "/usr/lib/python3.9/site-packages/alembic/script/revision.py", line 1420, in _collect_upgrade_revisions
current_revisions = self.get_revisions(lower)
File "/usr/lib/python3.9/site-packages/alembic/script/revision.py", line 525, in get_revisions
return sum([self.get_revisions(id_elem) for id_elem in id_], ())
File "/usr/lib/python3.9/site-packages/alembic/script/revision.py", line 525, in <listcomp>
return sum([self.get_revisions(id_elem) for id_elem in id_], ())
File "/usr/lib/python3.9/site-packages/alembic/script/revision.py", line 549, in get_revisions
return tuple(
File "/usr/lib/python3.9/site-packages/alembic/script/revision.py", line 550, in <genexpr>
self._revision_for_ident(rev_id, branch_label)
File "/usr/lib/python3.9/site-packages/alembic/script/revision.py", line 619, in _revision_for_ident
raise ResolutionError(
alembic.script.revision.ResolutionError: No such revision or branch '2156fc3f6f7d'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/libexec/mailman3/mailman", line 8, in <module>
sys.exit(main())
File "/usr/lib/python3.9/site-packages/click/core.py", line 1128, in __call__
return self.main(*args, **kwargs)
File "/usr/lib/python3.9/site-packages/click/core.py", line 1052, in main
with self.make_context(prog_name, args, **extra) as ctx:
File "/usr/lib/python3.9/site-packages/click/core.py", line 914, in make_context
self.parse_args(ctx, args)
File "/usr/lib/python3.9/site-packages/click/core.py", line 1615, in parse_args
rest = super().parse_args(ctx, args)
File "/usr/lib/python3.9/site-packages/click/core.py", line 1370, in parse_args
value, args = param.handle_parse_result(ctx, opts, args)
File "/usr/lib/python3.9/site-packages/click/core.py", line 2347, in handle_parse_result
value = self.process_value(ctx, value)
File "/usr/lib/python3.9/site-packages/click/core.py", line 2309, in process_value
value = self.callback(ctx, self, value)
File "/usr/lib/python3.9/site-packages/mailman/bin/mailman.py", line 95, in initialize_config
initialize(value)
File "/usr/lib/python3.9/site-packages/mailman/core/initialize.py", line 229, in initialize
initialize_2(propagate_logs=propagate_logs)
File "/usr/lib/python3.9/site-packages/mailman/core/initialize.py", line 187, in initialize_2
config.db = getUtility(IDatabaseFactory, utility_name).create()
File "/usr/lib/python3.9/site-packages/mailman/database/factory.py", line 58, in create
SchemaManager(database).setup_database()
File "/usr/lib/python3.9/site-packages/mailman/database/factory.py", line 109, in setup_database
alembic.command.upgrade(alembic_cfg, 'head')
File "/usr/lib/python3.9/site-packages/alembic/command.py", line 320, in upgrade
script.run_env()
File "/usr/lib/python3.9/site-packages/alembic/script/base.py", line 563, in run_env
util.load_python_file(self.dir, "env.py")
File "/usr/lib/python3.9/site-packages/alembic/util/pyfiles.py", line 92, in load_python_file
module = load_module_py(module_id, path)
File "/usr/lib/python3.9/site-packages/alembic/util/pyfiles.py", line 108, in load_module_py
spec.loader.exec_module(module) # type: ignore
File "<frozen importlib._bootstrap_external>", line 850, in exec_module
File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
File "/usr/lib/python3.9/site-packages/mailman/database/alembic/env.py", line 77, in <module>
run_migrations_online()
File "/usr/lib/python3.9/site-packages/mailman/database/alembic/env.py", line 71, in run_migrations_online
context.run_migrations()
File "<string>", line 8, in run_migrations
File "/usr/lib/python3.9/site-packages/alembic/runtime/environment.py", line 851, in run_migrations
self.get_context().run_migrations(**kw)
File "/usr/lib/python3.9/site-packages/alembic/runtime/migration.py", line 608, in run_migrations
for step in self._migrations_fn(heads, self):
File "/usr/lib/python3.9/site-packages/alembic/command.py", line 309, in upgrade
return script._upgrade_revs(revision, rev)
File "/usr/lib/python3.9/site-packages/alembic/script/base.py", line 435, in _upgrade_revs
return [
File "/usr/lib64/python3.9/contextlib.py", line 137, in __exit__
self.gen.throw(typ, value, traceback)
File "/usr/lib/python3.9/site-packages/alembic/script/base.py", line 259, in _catch_revision_errors
raise util.CommandError(resolution) from re
alembic.util.exc.CommandError: Can't locate revision identified by '2156fc3f6f7d'
Any ideas why?
Before switching from a "git clone" installation to the virtual
environment install,
"/home/mailman3/mailman/src/mailman" was recommended as the PYTHONPATH setting.
Here are some paths that exist in the Mailman3 virtual environment on
the server in question:
/opt/mailman3/venv/lib/python3.9/site-packages/mailman/archiving
/opt/mailman3/venv/lib/python3.9/site-packages/mailman/archiving/__init__.py
/opt/mailman3/venv/lib/python3.9/site-packages/mailman/archiving/__pycache__
/opt/mailman3/venv/lib/python3.9/site-packages/mailman/archiving/docs
/opt/mailman3/venv/lib/python3.9/site-packages/mailman/archiving/mailarchive.py
What is the proper setting for PYTHONPATH in this case?
Thanks.
----------- Keith
We have a Mailman3 server with quite a few lists all running with no issues.
Recently I imported a list from our old Mailman 2 server which went fine.
I attempted to remove the current owner and add myself but now when clicking on the list, Postorius shows: An error occurred while processing your request.
The output of /opt/mailman/web/logs/mailmanweb.log is here:
ERROR 2024-07-09 17:11:33,371 2795 django.request Internal Server Error: /mailman3/lists/net-ops.list.utas.edu.au/
Traceback (most recent call last):
File "/opt/mailman/venv/lib64/python3.9/site-packages/django/core/handlers/exception.py", line 56, in inner
response = get_response(request)
File "/opt/mailman/venv/lib64/python3.9/site-packages/django/core/handlers/base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/opt/mailman/venv/lib64/python3.9/site-packages/django/views/generic/base.py", line 103, in view
return self.dispatch(request, *args, **kwargs)
File "/opt/mailman/venv/lib64/python3.9/site-packages/postorius/views/generic.py", line 76, in dispatch
return super(MailingListView, self).dispatch(request, *args, **kwargs)
File "/opt/mailman/venv/lib64/python3.9/site-packages/django/views/generic/base.py", line 142, in dispatch
return handler(request, *args, **kwargs)
File "/opt/mailman/venv/lib64/python3.9/site-packages/postorius/views/list.py", line 411, in get
return render(request, 'postorius/lists/summary.html', data)
File "/opt/mailman/venv/lib64/python3.9/site-packages/django/shortcuts.py", line 24, in render
content = loader.render_to_string(template_name, context, request, using=using)
File "/opt/mailman/venv/lib64/python3.9/site-packages/django/template/loader.py", line 62, in render_to_string
return template.render(context, request)
File "/opt/mailman/venv/lib64/python3.9/site-packages/django/template/backends/django.py", line 61, in render
return self.template.render(context)
File "/opt/mailman/venv/lib64/python3.9/site-packages/django/template/base.py", line 175, in render
return self._render(context)
File "/opt/mailman/venv/lib64/python3.9/site-packages/django/template/base.py", line 167, in _render
return self.nodelist.render(context)
File "/opt/mailman/venv/lib64/python3.9/site-packages/django/template/base.py", line 1005, in render
return SafeString("".join([node.render_annotated(context) for node in self]))
File "/opt/mailman/venv/lib64/python3.9/site-packages/django/template/base.py", line 1005, in <listcomp>
return SafeString("".join([node.render_annotated(context) for node in self]))
File "/opt/mailman/venv/lib64/python3.9/site-packages/django/template/base.py", line 966, in render_annotated
return self.render(context)
File "/opt/mailman/venv/lib64/python3.9/site-packages/django/template/loader_tags.py", line 157, in render
return compiled_parent._render(context)
File "/opt/mailman/venv/lib64/python3.9/site-packages/django/template/base.py", line 167, in _render
return self.nodelist.render(context)
File "/opt/mailman/venv/lib64/python3.9/site-packages/django/template/base.py", line 1005, in render
return SafeString("".join([node.render_annotated(context) for node in self]))
File "/opt/mailman/venv/lib64/python3.9/site-packages/django/template/base.py", line 1005, in <listcomp>
return SafeString("".join([node.render_annotated(context) for node in self]))
File "/opt/mailman/venv/lib64/python3.9/site-packages/django/template/base.py", line 966, in render_annotated
return self.render(context)
File "/opt/mailman/venv/lib64/python3.9/site-packages/django/template/loader_tags.py", line 63, in render
result = block.nodelist.render(context)
File "/opt/mailman/venv/lib64/python3.9/site-packages/django/template/base.py", line 1005, in render
return SafeString("".join([node.render_annotated(context) for node in self]))
File "/opt/mailman/venv/lib64/python3.9/site-packages/django/template/base.py", line 1005, in <listcomp>
return SafeString("".join([node.render_annotated(context) for node in self]))
File "/opt/mailman/venv/lib64/python3.9/site-packages/django/template/base.py", line 966, in render_annotated
return self.render(context)
File "/opt/mailman/venv/lib64/python3.9/site-packages/django/template/defaulttags.py", line 321, in render
return nodelist.render(context)
File "/opt/mailman/venv/lib64/python3.9/site-packages/django/template/base.py", line 1005, in render
return SafeString("".join([node.render_annotated(context) for node in self]))
File "/opt/mailman/venv/lib64/python3.9/site-packages/django/template/base.py", line 1005, in <listcomp>
return SafeString("".join([node.render_annotated(context) for node in self]))
File "/opt/mailman/venv/lib64/python3.9/site-packages/django/template/base.py", line 966, in render_annotated
return self.render(context)
File "/opt/mailman/venv/lib64/python3.9/site-packages/django/template/defaulttags.py", line 52, in render
output = self.nodelist.render(context)
File "/opt/mailman/venv/lib64/python3.9/site-packages/django/template/base.py", line 1005, in render
return SafeString("".join([node.render_annotated(context) for node in self]))
TypeError: sequence item 1: expected str instance, NoneType found
I've tried removing it and reimporting it to no avail. Is there anything I can besides manually creating it and adding the members and owners from the old server?
Cheers
Hi, I am noticing a performance issue with Mailman 3 when using the "mailman findmember" CLI command to search for email address or name. On average, it takes about 15 - 20 seconds to run a query which is very slow IMHO. When searching through web administrator interface for Users, it takes only 1 -2 seconds. Is there a reason for such a discrepancy between the two interfaces? Is there any tuning to the CLI that could help with the performance issue? Here is the setup information regarding the VM hosting the Mailman 3 server:
Memory: 16G
CPU Cores: 6
Mailman CORE version: 3.3.9
Python version: 3.11.5
Database: MariaDB 10.6.15
OS: SLES 15 SP5
Thanks.
wesley
* * *
Wesley Wong
Senior Systems Engineer (ACIS)
(310) 206-2571
wesley.wong(a)anderson.ucla.edu<mailto:wesley.wong@anderson.ucla.edu>
UCLA Anderson School of Management | Transformative Leaders
we have recently migrated from Mailman2 to Mailman3 and now discovered
that all mails going through Mailman3 have the headers Archived-At and
List-Archive repeated identically in the mail header ~100 times each.
We are running Mailman3 on Debian Bookworm from the Debian repositories
(mailman3 3.3.8-2~deb12u2) with postfix (3.7.11-0+deb12u1) and
hyperkitty (1.2.1-1).
Can somebody of you help me to get rid of the repeated header?
Thanks in advance for you help!
Best,
Tobias
Tobias Diekershoff >>> System Hacker
Free Software Foundation Europe
Schönhauser Allee 6/7, 10119 Berlin, Germany | t +49-30-27595290
Registered at Amtsgericht Hamburg, VR 17030 |
fsfe.org/support
OpenPGP-Key ID ... 0x25FE376FF17694A1
Fingerprint ...... 23EE F484 FDF8 291C BA09
A406 25FE 376F F176 94A1
___________________________________________
Mailman's content filtering has removed the
following MIME parts from this message.
Content-Type: application/pgp-keys
Name: OpenPGP_0x25FE376FF17694A1.asc
Hi Folks,
My Mailman3 installation is receiving a trickle of fake registrations, for which
it then attempts to send a "Your confirmation is needed to join..." email, which
typically bounce.
I suspect these are coming from the "subscribe without creating an account" form
on the list summary page. I notice that
lists.mailman3.org
doesn't show this form
at all - you have to create an account to subscribe:
https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
compared to mine with:
https://lists.softwarefreedom.com.au/postorius/lists/free-software-melb.lis…
Is there a configuration option that does this, or was it a custom change made in
the templates? Was the change made to reduce fake registrations? Did it work?
Regards,
Ben Sturmfels
Sturm Software Engineering
www.sturm.com.au
+61 3 9024 2467
One of my lists is return a 500 error when I try to visit the list's home page:
HTTP Error 500: {"title": "500 Internal Server Error"}
mailmanweb.log says:
ERROR 2024-07-13 15:22:30,073 1668 postorius Un-handled exception: HTTP Error 500: {"title": "500 Internal Server Error"}
Traceback (most recent call last):
File "/usr/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/lib/python3.8/site-packages/django/views/generic/base.py", line 71, in view
return self.dispatch(request, *args, **kwargs)
File "/usr/lib/python3.8/site-packages/postorius/views/generic.py", line 74, in dispatch
return super(MailingListView, self).dispatch(request, *args, **kwargs)
File "/usr/lib/python3.8/site-packages/django/views/generic/base.py", line 97, in dispatch
return handler(request, *args, **kwargs)
File "/usr/lib/python3.8/site-packages/postorius/views/list.py", line 275, in get
'hyperkitty' in self.mailing_list.archivers and # noqa: W504
File "/usr/lib/python3.8/_collections_abc.py", line 666, in __contains__
self[key]
File "/usr/lib/python3.8/site-packages/mailmanclient/restbase/base.py", line 146, in __getitem__
return self._get(key)
File "/usr/lib/python3.8/site-packages/mailmanclient/restbase/base.py", line 88, in _get
return self.rest_data[key]
File "/usr/lib/python3.8/site-packages/mailmanclient/restbase/base.py", line 74, in rest_data
response, content = self._connection.call(self._url)
File "/usr/lib/python3.8/site-packages/mailmanclient/restbase/connection.py", line 127, in call
raise HTTPError(url, response.status_code,
urllib.error.HTTPError: HTTP Error 500: {"title": "500 Internal Server Error"}
ERROR 2024-07-13 15:22:30,079 1668 django.request Internal Server Error: /postorius/lists/XXXX/
ERROR 2024-07-13 15:22:30,079 1668 django.request Internal Server Error: /postorius/lists/XXXX/
mailman.log says:
[13/Jul/2024:15:23:44 +0000] "GET /3.1/lists/XXXX HTTP/1.1" 200 466 "-" "GNU Mailman REST client v3.3.2"
[13/Jul/2024:15:23:44 +0000] "GET /3.1/lists/XXXX/roster/owner HTTP/1.1" 200 2401 "-" "GNU Mailman REST client v3.3.2"
[13/Jul/2024:15:23:44 +0000] "GET /3.1/lists/XXXX/roster/moderator HTTP/1.1" 200 90 "-" "GNU Mailman REST client v3.3.2"
[13/Jul/2024:15:23:44 +0000] "GET /3.1/lists/XXX@XXXX/config HTTP/1.1" 200 14262 "-" "GNU Mailman REST client v3.3.2"
2024-07-13 15:23:44 [FALCON] [ERROR] GET /3.1/lists/XXXX/archivers => Traceback (most recent call last):
File "/usr/lib/python3.8/site-packages/falcon/app.py", line 361, in __call__
responder(req, resp, **params)
File "/usr/lib/python3.8/site-packages/mailman/rest/lists.py", line 405, in on_get
archiver_set = IListArchiverSet(self._mlist)
File "/usr/lib/python3.8/site-packages/zope/component/_api.py", line 152, in adapter_hook
return sitemanager.queryAdapter(object, interface, name, default)
File "/usr/lib/python3.8/site-packages/zope/interface/registry.py", line 354, in queryAdapter
return self.adapters.queryAdapter(object, interface, name, default)
File "/usr/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/lib/python3.8/site-packages/mailman/model/mailinglist.py", line 619, in __init__
exists = store.query(ListArchiver).filter(
File "/usr/lib/python3.8/site-packages/sqlalchemy/orm/query.py", line 3467, in one_or_none
raise orm_exc.MultipleResultsFound(
sqlalchemy.orm.exc.MultipleResultsFound: Multiple rows were found for one_or_none()
[13/Jul/2024:15:23:44 +0000] "GET /3.1/lists/XXXX/archivers HTTP/1.1" 500 38 "-" "GNU Mailman REST client v3.3.2"
Did this one list get corrupted somehow?
I'm running GNU Mailman 3.3.4 (Tom Sawyer) in Docker containers on Debian Stretch. Emails to that list are not getting processed. I'm not out of disk space.
Anything I should check?
Thank you,
In the MM2 to MM3 migration project I'm involved with, I see files with
names like config.pkl.last along with config.pkl.
Is there a special reason for the ".last" extension and if so, what is it?
Thanks,
-------- Keith
After importing from Mailman 2, thousands of badly compiled messages from
the past appeared with empty content on the same date (date of import).
Is there a safe way to delete them all? If we delete them from the database
- hyperkitty_email table - do we need to do some clean-up of
hyperkitty_thread table as well?
Any advice?
Danil Smirnov
I am using mailman3 (version 3.3.8) and it mostly works fine, but
sometimes (usually several times every day) the error below appears.
Any suggestions for what could be done about this?
Should it be considered a bug in Django, so not a mailman3 problem, or
does it indicate something wrong with mailman3 itself?
Best regards,
Elias
Here is what the error message looks like:
-------------------------------------------
[Django] ERROR (EXTERNAL IP): Internal Server Error:
/mailman3/postorius/lists/
Internal Server Error: /mailman3/postorius/lists/
ValueError at /postorius/lists/
Need 2 values to unpack in for loop; got 1.
[...]
Django Version: 3.2.19
[...]
Python Version: 3.11.2
[...]
Traceback (most recent call last):
"/usr/lib/python3/dist-packages/django/core/handlers/exception.py", line
47, in inner
response = get_response(request)
File "/usr/lib/python3/dist-packages/django/core/handlers/base.py",
line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/python3/dist-packages/postorius/views/list.py", line
1145, in list_index
return render(
File "/usr/lib/python3/dist-packages/django/shortcuts.py", line 19,
in render
content = loader.render_to_string(template_name, context, request,
using=using)
File "/usr/lib/python3/dist-packages/django/template/loader.py", line
62, in render_to_string
return template.render(context, request)
"/usr/lib/python3/dist-packages/django/template/backends/django.py",
line 61, in render
return self.template.render(context)
File "/usr/lib/python3/dist-packages/django/template/base.py", line
170, in render
return self._render(context)
File "/usr/lib/python3/dist-packages/django/template/base.py", line
162, in _render
return self.nodelist.render(context)
File "/usr/lib/python3/dist-packages/django/template/base.py", line
938, in render
bit = node.render_annotated(context)
File "/usr/lib/python3/dist-packages/django/template/base.py", line
905, in render_annotated
return self.render(context)
File "/usr/lib/python3/dist-packages/django/template/loader_tags.py",
line 150, in render
return compiled_parent._render(context)
File "/usr/lib/python3/dist-packages/django/template/base.py", line
162, in _render
return self.nodelist.render(context)
File "/usr/lib/python3/dist-packages/django/template/base.py", line
938, in render
bit = node.render_annotated(context)
File "/usr/lib/python3/dist-packages/django/template/base.py", line
905, in render_annotated
return self.render(context)
File "/usr/lib/python3/dist-packages/django/template/loader_tags.py",
line 62, in render
result = block.nodelist.render(context)
File "/usr/lib/python3/dist-packages/django/template/base.py", line
938, in render
bit = node.render_annotated(context)
File "/usr/lib/python3/dist-packages/django/template/base.py", line
905, in render_annotated
return self.render(context)
File "/usr/lib/python3/dist-packages/django/template/defaulttags.py",
line 315, in render
return nodelist.render(context)
File "/usr/lib/python3/dist-packages/django/template/base.py", line
938, in render
bit = node.render_annotated(context)
File "/usr/lib/python3/dist-packages/django/template/base.py", line
905, in render_annotated
return self.render(context)
File "/usr/lib/python3/dist-packages/django/template/defaulttags.py",
line 315, in render
return nodelist.render(context)
File "/usr/lib/python3/dist-packages/django/template/base.py", line
938, in render
bit = node.render_annotated(context)
File "/usr/lib/python3/dist-packages/django/template/base.py", line
905, in render_annotated
return self.render(context)
File "/usr/lib/python3/dist-packages/django/template/library.py",
line 234, in render
return t.render(new_context)
File "/usr/lib/python3/dist-packages/django/template/base.py", line
172, in render
return self._render(context)
File "/usr/lib/python3/dist-packages/django/template/base.py", line
162, in _render
return self.nodelist.render(context)
File "/usr/lib/python3/dist-packages/django/template/base.py", line
938, in render
bit = node.render_annotated(context)
File "/usr/lib/python3/dist-packages/django/template/base.py", line
905, in render_annotated
return self.render(context)
File "/usr/lib/python3/dist-packages/django/template/defaulttags.py",
line 203, in render
raise ValueError(
Exception Type: ValueError at /postorius/lists/
Exception Value: Need 2 values to unpack in for loop; got 1.
Request information:
USER: AnonymousUser
[...]
-------------------------------------------
Hi all!
I'm trying to use extended placeholders for the [templated
texts](https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/res…
in the message footer that are sent to the members:
> Along with these, Mailman supports placeholder as URLs for web interface when `base_url` property is set at the Domain level. These include:
> domain_url - URL to homepage for a domain.
> mailinglist_url - URL to homepage for a mailinglist.
> held_message_url - URL to page for handling all held messages.
> pending_subscriptions_url - URL to page for handling pending subscription requests.
> pending_unsubscriptions_url - URL to page for handling pending unsubscriptions.
The REST API docs mention `base_url` as the property of the domain: [domain
URLs](https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/rest…
But my attempts to use REST API to set it fail:
curl --user 'restapi:restpass' \
-X PATCH \
-H "Content-Type: application/json" \
-H 'Accept: application/json' \
-d '{ "base_url": "
https://example.net/mailman3
" }' \
http://localhost:8001/3.1/domains/example.net
| jq '.'
"title": "400 Bad Request",
"description": "Unexpected parameters: base_url"
My MM3 instance is the latest(3.3.9), provided by the maxking mailman-core docker image.
It looks like there is a lot of confusion about `base_url` in general, as hyperkitty seems also use the property with the same name, for example:
https://lists.mailman3.org/hyperkitty/list/mailman-users@mailman3.org/threa…
So what is the correct way to get those extended placeholders to work in the templates?
It's also not clear to me, what the the primary domain should be for the installation - server hostname, as in `lists.mailman3.org` or the domain, used in the mailing list(s) itself, like `mailman3.org` for mailman-users(a)mailman3.org...
With best regards,
Timour Bakeev
I have a mailman3 setup in venv with python 3.11.2
mailman 3.3.9
mailman-hyperkitty 1.2.1
I feel I have read a lot about issues with stucked files in spool directory
still I am not able to proceed with debugging in my case.
Ideas would be welcome and appreciated.
Thanks
This is the error in archiver.log
Jul 09 10:56:12 2024 (47531) HyperKitty archiver processing queued filebase: 1720522497.980487+a88492922feca24ced15594a5ec16556195
6f3ad
Jul 09 10:56:12 2024 (47531) hyperkitty archiver: sending message <B9E91239-ED71-4CC6-8FFF-3308C5C4DE2E(a)me.com>
Jul 09 10:56:12 2024 (47531) HyperKitty failure on
http://127.0.0.1:8000/archives/api/mailman/archive
:
<!DOCTYPE html>
<html lang="en">
<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">
</head>
<div class="container">
<h1>Server error</h1>
<div class="alert alert-danger">An error occurred while processing your request.</div>
</body>
</html>
(500)
Jul 09 10:56:12 2024 (47531) Could not archive the message with id <B9E91239-ED71-4CC6-8FFF-3308C5C4DE2E(a)me.com>
Jul 09 10:56:12 2024 (47531) archiving failed, re-queuing (mailing-list
act.lists.contextualscience.org
, message <B9E91239-ED71-4CC6-8FFF-3308C5C4DE2E(a)me.com>)
Jul 09 10:56:12 2024 (47531) Exception in the HyperKitty archiver:
<!DOCTYPE html>
<html lang="en">
<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">
</head>
<div class="container">
<h1>Server error</h1>
<div class="alert alert-danger">An error occurred while processing your request.</div>
</body>
</html>
Jul 09 10:56:12 2024 (47531) Traceback (most recent call last):
File "/opt/mailman/venv/lib/python3.11/site-packages/mailman_hyperkitty/__init__.py", line 158, in _archive_message
url = self._send_message(mlist, msg)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/mailman/venv/lib/python3.11/site-packages/mailman_hyperkitty/__init__.py", line 228, in _send_message
raise ValueError(result.text)
ValueError:
<!DOCTYPE html>
<html lang="en">
<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">
</head>
<div class="container">
<h1>Server error</h1>
<div class="alert alert-danger">An error occurred while processing your request.</div>
</body>
</html>
With Mailman 2, I have configuration and scripts to reject non-members
from posting to lists _during the SMTP connection_. This is better than
bouncing (no backscatter), better than discarding messages (the user
finds out) and better than moderation (spammy messages aren't forwarded
to external email systems).
The configuration and scripts are described here:
https://code.launchpad.net/~jimpop/mailman/check_subscriber
Is anything like this built-in to Mailman 3? I cannot find it in Gitlab.
Thanks,
From Mark's reply of Jul 5, 2024, 3:18 PM:
RE: The `mailman aliases` command generates the postfix_domains and
postfix_lmtp files and calls the configured postmap_command (default
/usr/sbin/postmap) to create the .db files. `mailman start` also
generates these files by default.
1 [mailman3@somehost ~]$ ./venv/bin/mailman start
2 Starting Mailman's master runner
3 Generating MTA alias maps
4 [mailman3@somehost ~]$ sudo ls -l
/opt/mailman3/mm/var/data/postfix_domains
5 ls: cannot access '/opt/mailman3/mm/var/data/postfix_domains':
No such file or directory
6 [mailman3@somehost ~]$ ls -dl /opt/mailman3/mm/var/data/
7 drwxr-xr-x. 2 mailman3 mailman3 6 Jul 5 13:38
/opt/mailman3/mm/var/data/
What should I do about lines 4-7? Thought it might be a permissions
issue but it's owned by the correct user.
Not sure that i missed any steps, suggestions appreciated.
As has been observed, the Ubuntu 24.04 LTS packaging for native Mailman3
can be challenging. I've been solving all kinds of issues, and I'm writing
here about something I've so far been unable to solve.
The problem: *In Postorius, dropdown menus are not working*. I.e., as a
list admin you can click on a menu option like "Users" or "Mass
operations," and nothing happens. As a regular user, the top-right icon to
manage settings and logout does not do anything.
The same behavior occurs regardless of which browser I use. The dropdown in
HyperKitty works, and HyperKitty uses a different code base.
In the browser developer console (Firefox & others), the error is: “Uncaught
TypeError: n.createPopper is not a function.”
I've dug deeply into this. The relevant <script> is bootstrap.min.js.
Postorius (via django) is using version 5.3.1 via package libjs-bootstrap5:
** This is what django is using:
/usr/share/bootstrap-html/js/bootstrap.bundle.min.js -- version 5.3.1,
linked to:
/usr/share/javascript/bootstrap5/js/bootstrap.bundle.min.js
/usr/share/python3-django-postorius/static/postorius/libs/bootstrap/js/bootstrap.bundle.min.js
Here is detail of the error from the Firefox developer console:
Uncaught TypeError: n.createPopper is not a function
_createPopper dropdown.js:241
show dropdown.js:139
toggle dropdown.js:121
<anonymous> dropdown.js:446
i event-handler.js:118
R event-handler.js:184
on event-handler.js:216
<anonymous> dropdown.js:444
<anonymous> bootstrap.bundle.min.js:6
<anonymous> bootstrap.bundle.min.js:6
By temporarily replacing
/usr/share/python3-django-postorius/static/postorius/libs/bootstrap/js/bootstrap.bundle.min.js
I have tried moving back to 4.6.1 (from libjs-bootstrap4). I have also
retrieved the latest 5.3.1 from the CDN, which is slightly different but
doesn't change the error:
https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/js/bootstrap.bundle.min.js
Here's the JavaScript section from the bottom of a sample page from my
Postorius site (view-source:
https://lists.ogf.org/mailman3/postorius/lists/gfsg.lists.ogf.org/held_mess…
<script
src="/mailman3/static/postorius/libs/jquery/jquery-3.6.0.min.js"></script>
<script src="/mailman3/static/postorius/libs/bootstrap/js/bootstrap.bundle.min.js"></script>
<script src="/mailman3/static/django-mailman3/js/main.js"></script>
<script src="/mailman3/static/postorius/js/script.js"
defer></script> <script> // Add the .js-enabled
class to the body so we can style the elements // depending
on whether Javascript is enabled.
$(document).ready(function(){
$("body").addClass("js-enabled");
$(".gravatar").addClass("rounded-circle"); });
</script>
I would appreciate suggestions about how to solve this problem.
Thanks to everyone who is doing a great job building and supporting
Mailman3. I've been using Mailman2 for a long time, and have dozens of
lists on multiple servers.
~ Greg Newby
I have installed a testing server for an organization I'm working with to
explore migration from MM2 to MM3. Our main list has archives from 1992, and
when importing the mbox into hyperkitty/mm3 I notice the archives by month
only go back to July 2007, but the messages are there when I search for
specific ones from the old archive in the 1992-2007 range.
Is there a better way to get this to show up, or perhaps a better format we
can display old archives in that's not 400+ line drop down?
Thank you,
Bryan Fields
727-409-1194 - Voice
http://bryanfields.net
Our organization is moving to MM3 from MM2, and I'm at the point where I am testing importing our archives. However, many of the lists that we want to transfer over have pretty large mbox files, so it takes a significant amount of time for it to process them.
I can throw all of the resources I need at it in order to make it faster, but I'm not sure if the import application is single-threaded only. Is there a way to enable a multi-threaded option? Can I safely run multiple commands at the same time using something like /usr/bin/parallel?
Thanks
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
I am using the debian 12 repo versions of mailman3, django, posterious,
hyperkitty, and xapian:
sharky5% dpkg-query -l python3-{django,django-mailman3,django-hyperkitty,django-postorius,xapian} mailman3\* | grep '^ii'
ii mailman3 3.3.8-2~deb12u2 all Mailing list management system
ii mailman3-doc 3.3.8-2~deb12u2 all Mailing list management system documentation
ii mailman3-web 0+20200530-2.1 all Django project integrating Mailman3 Postorius and HyperKitty
ii python3-django 3:3.2.19-1+deb12u1 all High-level Python web development framework
ii python3-django-hyperkitty 1.3.7-1 all Web user interface to access GNU Mailman3 archives
ii python3-django-mailman3 1.3.9-1 all Django library to help interaction with Mailman3 (Python 3 version)
ii python3-django-postorius 1.3.8-3 all Web user interface to access GNU Mailman3
ii python3-xapian 1.4.22-1 amd64 Xapian search engine interface for Python3
Before adding the HAYSTACK_CONNECTIONS options, I have this:
sharky5% sudo mailman-web haystack_info --no-color --skip-checks
Number of handled 1 index(es).
- Model: Email by Index: <hyperkitty.search_indexes.EmailIndex object at 0x7fd0de1b0470>
When I add this to /etc/mailman3/maymail_web.py (adapted from the section
titled:
"Setting up Fulltext search (xapian)" on
https://docs.mailman3.org/en/latest/install/virtualenv.html#set-up-xapian
HAYSTACK_CONNECTIONS = {
'default': {
'PATH': "/var/lib/mailman3/web/fulltext_index",
'ENGINE': 'xapian_backend.XapianEngine'
I get:
File "/usr/lib/python3.11/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1142, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'xapian_backend'
So, do I use Xapian or not? Is something missing somewhere? Is this a
documentation bug or something else?
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
We have a user who is proposing that reply messages from a mailing list should be in the following format:
Re: [MM3-users] Ubuntu 24.04 upgrade notes
and not
[MM3-users] Re: Ubuntu 24.04 upgrade notes
Their reason... is that mailman2, and other lists, used to do it that way.
I myself am agnostic about the difference, and probably prefer to keep things the way mailman3 recommends.
The questions are:
1. What could be explained to the user to convince them the new method is preferable.
2. Can this be customized with a Setting? (Not that we will end up modifying it. Just curious).
Thanks.
---------------------------------------------------------------------------
First issue:Postfix v3.5.8 on RHEL 8.
The below is from journalctl -xe:
---------------------------------------------------------------------------
Jul 03 08:12:04 somehost.somedomain postfix/qmgr[947499]: error: open
database /opt/mailman3/mm/var/data/postfix_domains.db: No such file or
directory
Jul 03 08:12:42 somehost.somedomain postfix/smtpd[947510]: error: open
database /opt/mailman3/mm/var/data/postfix_domains.db: No such file or
directory
Jul 03 08:12:42 somehost.somedomain postfix/smtpd[947510]: error: open
database /opt/mailman3/mm/var/data/postfix_lmtp.db: No such file or
directory
I manually created the var_dir: /opt/mailman3/mm/var directory
specified in the mailman.cfg file.
How do I find out how to populate the postfix_domains.db files, and
the postfix_lmtp.db file?
---------------------------------------------------------------------------
Second issue: Postgresql authentication.
PostgreSQL v10.23.
---------------------------------------------------------------------------
I have this in the active mailman3.cfg file, where xxxxxxxxxx is the
same complex password in the mailman3 config file:
url: postgresql://mailman3:xxxxxxxxxx@localhost/mailman3/mailman3
Same password when I created the mailman3 and mailman3web users:
create role mailman3 with encrypted password 'xxxxxxxxxx ';
create role mailman3web with encrypted password 'xxxxxxxxxx ';
psycopg2.OperationalError: connection to server at "localhost"
(127.0.0.1), port 5432 failed: FATAL: Ident authentication failed for
user "mailman3"
---------------------------------------------------------------------------
Contents of the "live" mailman.cfg file, from "mailman info"
---------------------------------------------------------------------------
(venv) [mailman3@someserver ~]$ cat -n /opt/mailman3/var/etc/mailman.cfg
1 # /opt/mailman3/mailman.cfg
2 [paths.here]
3 var_dir: /opt/mailman3/mm/var
5 [mailman]
6 layout: here
7 # This address is the "site owner" address. Certain messages
which must be
8 # delivered to a human, but which can't be delivered to a list
owner (e.g. a
9 # bounce from a list owner), will be sent to this address. It
should point to
10 # a human.
11 site_owner: user(a)example.com
13 [database]
14 class: mailman.database.postgresql.PostgreSQLDatabase
15 ##### url: postgresql://mailman:MYPASSWORD@localhost/mailman
16 # ----------------------------------------------------------------------------------
17 # Changed: Fri Jun 28 11:56:02 EDT 2024
18 url: postgresql://mailman3:xxxxxxxx@localhost/mailman3/mailman3
19 # Changed: Fri Jun 28 11:56:02 EDT 2024
20 # ----------------------------------------------------------------------------------
22 [archiver.prototype]
23 enable: yes
25 # For the HyperKitty archiver.
26 [archiver.hyperkitty]
27 class: mailman_hyperkitty.Archiver
28 enable: yes
29 configuration: /opt/mailman3/mailman-hyperkitty.cfg
31 [shell]
32 history_file: $var_dir/history.py
34 [mta]
35 incoming: mailman.mta.postfix.LMTP
36 outgoing: mailman.mta.deliver.deliver
37 lmtp_host: 127.0.0.1
38 lmtp_port: 8024
39 smtp_host: localhost
40 smtp_port: 25
41 configuration: python:mailman.config.postfix
42 verp_confirmations: yes
43 verp_personalized_deliveries: yes
44 verp_delivery_interval: 1
Suggestions appreciated for how to fix the postfix_domains files, and
the postgres authentication isssue.
------------- Keith
Just thought I would write up my installation experiences on Ubuntu 24.04 following this guide as much as possible: Virtualenv Installation - Mailman Suite 3.3 documentation (
mailman3.org
)<
https://docs.mailman3.org/en/latest/install/virtualenv.html
>
Ubuntu packages:
I'm trying not to install dev packages on the server if possible and managed to get away with the following packages:
python3-psycopg2 sassc lynx python3-venv python3-certbot-nginx postgresql exim4-daemon-light
Creating the venv:
python3 -m venv --system-site-packages --symlinks venv
This creates the venv referencing the system packages as well which is useful as some of the dependencies for Mailman are met by the Certbot and python3-psycopg2 packages.
Using Pip I installed the following packages:
pip install mailman mailman-hyperkitty mailman-web
Postgres:
I ran into an issue with the database after running `mailman-web migrate`. This was because a newer version of Django pulled in from the above command needed some tables creating in the public schema, and from Postgres 15 (Ubuntu ships with Postgres 16) that isn't allowed by default. I solved this by making the Mailman role owner of the mailman database. I am aware of discussions around whether its best to do this or give explicit perms on the databases to allow all on the public schema, but I decided to go with this option.
My Postgres commands are now:
sudo -u postgres psql
create database mailman;
create user mailman with encrypted password '[...]';
ALTER DATABASE mailman OWNER TO mailman;
Django:
I ran into an issue with a newer Django installation not allowing any form submission, was getting a 403 returned due to CSRF protection failure. I resolved this by adding this line to my local Settings.py:
CSRF_TRUSTED_ORIGINS=['
https://lists.domain.com
']
I moved back to using Gunicorn for the backend server, the instructions on this were spot on.
I've had this error before but the mailman-web compilemessages command failed because of missing msgfmt. I think I can pull this in from Ubuntu packages but may need to update installation docs with this extra package requirement.
Search:
I continued to use Woosh as I'm running a very low traffic site and that is what comes with Mailman-Web as part of package requirements.
Thanks for the good support as always guys.
Andrew.
Just thought I would write up my installation experiences on Ubuntu 24.04 following this guide as much as possible: Virtualenv Installation - Mailman Suite 3.3 documentation (
mailman3.org
)<
https://docs.mailman3.org/en/latest/install/virtualenv.html
>
Ubuntu packages:
I'm trying not to install dev packages on the server if possible and managed to get away with the following packages:
python3-psycopg2 sassc lynx python3-venv python3-certbot-nginx postgresql exim4-daemon-light
Creating the venv:
python3 -m venv --system-site-packages --symlinks venv
This creates the venv referencing the system packages as well which is useful as some of the dependencies for Mailman are met by the Certbot and python3-psycopg2 packages.
Using Pip I installed the following packages:
pip install mailman mailman-hyperkitty mailman-web
Postgres:
I ran into an issue with the database after running `mailman-web migrate`. This was because a newer version of Django pulled in from the above command needed some tables creating in the public schema, and from Postgres 15 (Ubuntu ships with Postgres 16) that isn't allowed by default. I solved this by making the Mailman role owner of the mailman database. I am aware of discussions around whether its best to do this or give explicit perms on the databases to allow all on the public schema, but I decided to go with this option.
My Postgres commands are now:
sudo -u postgres psql
create database mailman;
create user mailman with encrypted password '[...]';
ALTER DATABASE mailman OWNER TO mailman;
Django:
I ran into an issue with a newer Django installation not allowing any form submission, was getting a 403 returned due to CSRF protection failure. I resolved this by adding this line to my local Settings.py:
CSRF_TRUSTED_ORIGINS=['
https://lists.domain.com
']
I moved back to using Gunicorn for the backend server, the instructions on this were spot on.
I've had this error before but the mailman-web compilemessages command failed because of missing msgfmt. I think I can pull this in from Ubuntu packages but may need to update installation docs with this extra package requirement.
Search:
I continued to use Woosh as I'm running a very low traffic site and that is what comes with Mailman-Web as part of package requirements.
Thanks for the good support as always guys.
Andrew.
Greetings,
I have set up a few lists and all seems to be working as expected, however I get a large number of emails due to internal server errors received when my security application is testing exploits to list URLs such as the following:
https://<mylistdomain>/archives/search?sort=177120&cauft=&page=1&q=../../../../../../../../../../tmb/wditeteet424465304.txt.
Is there any django logging filter changes that can be made to avoid receiving these emails? Any assistance would be greatly appreciated.
Thank you!
We just notice a held message from a user's list showing the held reason in Ukrainian, but the interface is in US English and the list's preferred language is English (USA). We could not repeat the issue. What can be the reason behind?
[cid:image001.png@01DAC7B9.AF2B0400]
___________________________________________
Mailman's content filtering has removed the
following MIME parts from this message.
Content-Type: image/png
Name: image001.png
Replaced multipart/alternative part with first alternative.
If you have a locally installed mailman3 instance, could you try (as an administrator) to visit a thread in Hyperkitty and click "Delete this thread"? Does the thread get deleted, and you return to "Recently active discussions" and everything is fine?
Even just a few replies would indicate a pattern. That it's usually ok, for example.
I get a spinning wheel, and "Thread matching query does not exist." HyperKitty==1.3.9, PostgreSQL, Ubuntu 22.04, memcached, gunicorn.
I have a problem with digests not being sent daily (periodically).
Mailman 3.3.9 installed in virtualenv
Enable Digests = YES
Send Digest Periodically = YES
Digest size threshold = 0
Cron is set and is running. An error report (below) is generated and
emailed.
The last line in the error report says "FileNotFoundError: [Errno 2] No
such file or directory ...".
Setting the list's folder to 777 didn't help.
Any clues on where to start looking for a solution would be greatly
appreciated.
Thanks,
///////////////////////////////////////
CRON IS SET:
///////////////////////////////////////
su mailman
(venv) mailman:/$ crontab -e
5 6 * * * /opt/mailman/venv/bin/mailman digests --periodic
///////////////////////////////////////
CRON RUNS:
///////////////////////////////////////
# tail -100 /var/log/cron.log
2024-06-21T06:05:01.815948+00:00 deu CRON[3105464]: (mailman) CMD
(/opt/mailman/venv/bin/mailman digests --periodic)
///////////////////////////////////////
ERROR REPORT EMAILED BY CRON:
///////////////////////////////////////
Traceback (most recent call last):
File "/opt/mailman/venv/bin/mailman", line 8, in <module>
sys.exit(main())
^^^^^^
File "/opt/mailman/venv/lib/python3.11/site-packages/click/core.py",
line 1157, in __call__
return self.main(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/mailman/venv/lib/python3.11/site-packages/click/core.py",
line 1078, in main
rv = self.invoke(ctx)
^^^^^^^^^^^^^^^^
"/opt/mailman/venv/lib/python3.11/site-packages/mailman/bin/mailman.py",
line 69, in invoke
return super().invoke(ctx)
^^^^^^^^^^^^^^^^^^^
File "/opt/mailman/venv/lib/python3.11/site-packages/click/core.py",
line 1688, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/mailman/venv/lib/python3.11/site-packages/click/core.py",
line 1434, in invoke
return ctx.invoke(self.callback, **ctx.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/mailman/venv/lib/python3.11/site-packages/click/core.py",
line 783, in invoke
return __callback(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
"/opt/mailman/venv/lib/python3.11/site-packages/click/decorators.py",
line 33, in new_func
return f(get_current_context(), *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
"/opt/mailman/venv/lib/python3.11/site-packages/mailman/commands/cli_digests.py",
line 126, in digests
maybe_send_digest_now(mlist, force=True)
"/opt/mailman/venv/lib/python3.11/site-packages/mailman/app/digests.py",
line 106, in maybe_send_digest_now
os.rename(mailbox_path, mailbox_dest)
FileNotFoundError: [Errno 2] No such file or directory:
'/opt/mailman/mm/var/lists/LISTNAME.LISTDOMAIN/digest.mmdf' ->
'/opt/mailman/mm/var/lists/LISTNAME.LISTDOMAIN/digest.252.14.mmdf'
////////////////////////////////////////////////////////////////////////////////
After updating to the most recent version of mailman-web, the migrations
script issued an error:
Apply all migrations: account, admin, auth, contenttypes,
django_mailman3, django_q, hyperkitty, postorius, sessions, sites,
socialaccount
mailman-web | Running migrations:
mailman-web | Traceback (most recent call last):
mailman-web | File
"/usr/lib/python3.12/site-packages/django/db/backends/utils.py", line
89, in _execute
mailman-web | return self.cursor.execute(sql, params)
mailman-web | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
mailman-web | psycopg2.errors.UniqueViolation: duplicate key value
violates unique constraint
"account_emailaddress_user_id_email_987c8728_uniq"
mailman-web | DETAIL: Key (user_id, email)=(27,
John.Doe(a)mynicedomain.de) already exists.
mailman-web |(...)
Digging into the db, I found the duplicate to result from a duplicate
entry using john.doe(a)mynicedomain.de
Obviously, the process that originally created the entry, took case
sensitivity literally which doesn't seem to be the case any longer for
the migration script.
I fixed this by removing one of the duplicates hoping no further errors
will come up....
What would have been the better approach?
Our organization has been been communicating through about a dozen mailing lists, running on mailman, with ~200 subscribers, for 15-odd years.
After Debian 10 LTS ran out, I had to upgrade our organisations Debian server, forcing me into mailman3.
I haven't managed, yet, to get the web interface running, so I need to do the most urgent tasks in the shell for now.
I have found out that, for example, to discard all held messages from the list "motor", I need to
> sudo -u list mailman shell -l motor.our-server.de
and in the shell,
>>> from mailman.app.moderator import handle_message
>>> rdb = IListRequest(m)
>>> for req in rdb.held_requests:
... if req.request_type == RequestType.held_message:
... handle_message(m, req.id, Action.discard)
> commit()
Now, obviously, I put these exact lines in a script, so I don't have to type it out every single time, and try to run it using
> sudo -u list mailman shell -l testlist.our-server.de -r ./mm_discard_held.py
but that invariably gives me
------------------------
Traceback (most recent call last):
File "/usr/bin/mailman", line 33, in <module>
sys.exit(load_entry_point('mailman==3.3.8', 'console_scripts', 'mailman')())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/click/core.py", line 1130, in __call__
return self.main(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/click/core.py", line 1055, in main
rv = self.invoke(ctx)
^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/mailman/bin/mailman.py", line 69, in invoke
return super().invoke(ctx)
^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/click/core.py", line 1657, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/click/core.py", line 1404, in invoke
return ctx.invoke(self.callback, **ctx.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/click/core.py", line 760, in invoke
return __callback(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/click/decorators.py", line 26, in new_func
return f(get_current_context(), *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/mailman/commands/cli_withlist.py", line 294, in shell
r = call_name(dotted_name, m, *run_args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/mailman/utilities/modules.py", line 69, in call_name
named_callable = find_name(dotted_name)
^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/mailman/utilities/modules.py", line 52, in find_name
module = import_module(module_path)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/importlib/__init__.py", line 121, in import_module
raise TypeError(msg.format(name))
TypeError: the 'package' argument is required to perform a relative import for './mm_discard_held'
-------------
I've tried a PYTHONPATH=/root/bin , where mm_discard_held.py lives, as suggested.
I've tried moving it to the path where the mailman binary lives, as suggested.
I always get the same result.
What else can I do?
Thank you.
We are running mailman 3.x in a venv setup using Postgresql. The mailman service hangs during startup and eventually fails with a timeout:
# systemctl status mailman3
× mailman3.service - GNU Mailing List Manager
Loaded: loaded (/etc/systemd/system/mailman3.service; enabled; preset: disabled)
Active: failed (Result: timeout) since Wed 2024-06-12 13:35:23 UTC; 11s ago
Process: 1205 ExecStart=/opt/mailman/venv/bin/mailman start (code=killed, signal=TERM)
CPU: 1.019s
Jun 12 13:33:53 <hostname> systemd[1]: Starting GNU Mailing List Manager...
Jun 12 13:35:23 <hostname>systemd[1]: mailman3.service: start operation timed out. Terminating.
Jun 12 13:35:23 <hostname> systemd[1]: mailman3.service: Failed with result 'timeout'.
Jun 12 13:35:23 <hostname> systemd[1]: Failed to start GNU Mailing List Manager.
Jun 12 13:35:23 <hostname> systemd[1]: mailman3.service: Consumed 1.019s CPU time.
Searching I found some similar reports where it seemed to be an issue with a stale .lck lock file. But on our system:
- /var/lib/mailman is empty
- /opt/mailman/mm/var/locks is empty
The last entries in /opt/mailman/mm/var/logs/mailman.log is:
2024-06-12 09:23:44 -0400] [2101411] [INFO] Handling signal: term
Jun 12 13:23:44 2024 (2101395) Master watcher caught SIGTERM. Exiting.
[2024-06-12 13:23:44 +0000] [2101451] [INFO] Worker exiting (pid: 2101451)
Jun 12 09:23:44 2024 (2101412) retry runner caught SIGTERM. Stopping.
[2024-06-12 13:23:44 +0000] [2101450] [INFO] Worker exiting (pid: 2101450)
Jun 12 09:23:44 2024 (2101408) nntp runner caught SIGTERM. Stopping.
[2024-06-12 09:23:48 -0400] [2101411] [INFO] Shutting down: Master
Jun 12 13:23:50 2024 (2101395) Master stopped
Any help would be appreciated.
Postgres appears to be up., Postfix is up, nginx is up.
The web UI gives me the error:
Something went wrong
Mailman REST API not available. Please start Mailman core.
Running "mailman version" hangs for a long time and then returns:
$ mailman version
GNU Mailman 3.3.9 (Tom Sawyer)
Running "mailman status" hangs for a long time and then returns:
$ mailman status
GNU Mailman is not running
What other logs can be checked for more detail? What possible services or file/dir permissions may have had something changed by the OS updates?
Thanks,
David Goldsmith
> Sorry, that was a wrong information in my mail . I already changed the base url to your suggestion as I wrote the mail (and forgot to change it in the mail) but i‘m getting the same error :-(
I have some questions.
https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
you say "Thank you, archiver is now starting. Now there's another
problem:". Does this mean messages are being archived in HyperKitty or
are they accumulating in (I think the Debian path is)
/var/lib/mailman/archives/hyperkitty/spool/?
https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
you say "The Keys are in mailman-hyperkitty.cfg and mailman-web.py and
this are the same Keys." To be clear, in mailman-web.py the key is
quoted and in mailman-hyperkitty.cfg it is not. E.g., in
mailman-hyperkitty.cfg
api_key: Some_key
and in mailman-web.py
MAILMAN_ARCHIVER_KEY = 'Some_key'
What are your versions for mailman-hyperkitty and HyperKitty? HyperKitty
>= 1.3.5 is incompatible with mailman-hyperkitty < 1.2.0 and if I
recall corectly, at least one Debian package was shipped with this
incompatibility
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
Hello, mailman list:
Trying to add the mailman3.service unit so that mailman3 will start on
system boots/reboots.
Seeing different behavior with the mailman3.service unit commands vs.
with the "/opt/mailman3/venv/bin/mailman" command line.
Everyone on this list is more experienced than I with reading systemd
error messages and Python code, so your ideas are appreciated.
I am using letters and numbers to navigate the six screenshots in this
email, I hope this is helpful, without being too much info.
Running the following OS and Python versions. Mailman was installed
with "pip install wheel mailman psycopg2-binary" per the virtual
environment instructions:
(venv) [keithchristian@localhost ~]$ cat /etc/redhat-release
AlmaLinux release 9.4 (Seafoam Ocelot)
(venv) [keithchristian@localhost ~]$ python3 -V
Python 3.9.18
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
To begin: here is the current mailman3.service unit file, taken from
the "Starting Mailman automatically" portion of:
https://docs.mailman3.org/en/latest/install/virtualenv.html
, with all
/opt/mailman/ paths set to /opt/mailman3/ for my sandbox system.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
A 1 [mailman3@localhost ~]$ cat /etc/systemd/system/mailman3.service
A 2 [Unit]
A 3 Description=GNU Mailing List Manager
A 4 After=syslog.target network.target postgresql.service
A 5
A 6 [Service]
A 7 Type=forking
A 8 PIDFile=/opt/mailman3/mm/var/master.pid
A 9 User=mailman3
A 10 Group=mailman3
A 11 ExecStart=/opt/mailman3/venv/bin/mailman start
A 12 ExecReload=/opt/mailman3/venv/bin/mailman restart
A 13 ExecStop=/opt/mailman3/venv/bin/mailman stop
A 14
A 15 [Install]
A 16 WantedBy=multi-user.target
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Below in line B-6, systemd thinks mailman isn't running, but with the
"/opt/mailman3/venv/bin/mailman" commands, line B-2 says it is.
I could be misinterpreting the systemd output, however. Python not
happy about some directories.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
B 1 [mailman3@localhost ~]$ /opt/mailman3/venv/bin/mailman status
B 2 GNU Mailman is running (master pid: 10004)
B 3 [mailman3@localhost ~]$ systemctl status mailman3.service
B 4 mailman3.service - GNU Mailing List Manager
B 5 Loaded: loaded (/etc/systemd/system/mailman3.service; enabled;
preset: disabled)
B 6 Active: failed (Result: exit-code) since Sat 2024-06-08
09:35:57 MDT; 7min ago
B 7 Process: 10342 ExecStart=/opt/mailman3/venv/bin/mailman start
(code=exited, status=1/FAILURE)
B 8 CPU: 762ms
B 9
B 10 Jun 08 09:35:57 localhost.localdomain mailman[10342]: File
"/opt/mailman3/venv/lib64/python3.9/site-packages/mailman/config/config.py",
line 256, in ensure_directories_exist
B 11 Jun 08 09:35:57 localhost.localdomain mailman[10342]:
makedirs(directory)
B 12 Jun 08 09:35:57 localhost.localdomain mailman[10342]: File
"/opt/mailman3/venv/lib64/python3.9/site-packages/mailman/utilities/filesystem.py",
line 68, in makedirs
B 13 Jun 08 09:35:57 localhost.localdomain mailman[10342]:
os.makedirs(path, mode)
B 14 Jun 08 09:35:57 localhost.localdomain mailman[10342]: File
"/usr/lib64/python3.9/os.py", line 225, in makedirs
B 15 Jun 08 09:35:57 localhost.localdomain mailman[10342]: mkdir(name, mode)
B 16 Jun 08 09:35:57 localhost.localdomain mailman[10342]:
PermissionError: [Errno 13] Permission denied: '//var/templates'
B 17 Jun 08 09:35:57 localhost.localdomain systemd[1]:
mailman3.service: Control process exited, code=exited,
status=1/FAILURE
B 18 Jun 08 09:35:57 localhost.localdomain systemd[1]:
mailman3.service: Failed with result 'exit-code'.
B 19 Jun 08 09:35:57 localhost.localdomain systemd[1]: Failed to
start GNU Mailing List Manager.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Below, we stop mailman with the command line and check status with systemd.
C-1, C-2, show stopped. I'd think systemctl status should show stopped
but it doesn't.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
C 1 [mailman3@localhost ~]$ /opt/mailman3/venv/bin/mailman stop
C 2 Shutting down Mailman's master runner
C 3 [mailman3@localhost ~]$ systemctl status mailman3.service
C 4 mailman3.service - GNU Mailing List Manager
C 5 Loaded: loaded (/etc/systemd/system/mailman3.service; enabled;
preset: disabled)
C 6 Active: failed (Result: exit-code) since Sat 2024-06-08
09:35:57 MDT; 8min ago
C 7 Process: 10342 ExecStart=/opt/mailman3/venv/bin/mailman start
(code=exited, status=1/FAILURE)
C 8 CPU: 762ms
C 9
C 10 Jun 08 09:35:57 localhost.localdomain mailman[10342]: File
"/opt/mailman3/venv/lib64/python3.9/site-packages/mailman/config/config.py",
line 256, in ensure_directories_exist
C 11 Jun 08 09:35:57 localhost.localdomain mailman[10342]:
makedirs(directory)
C 12 Jun 08 09:35:57 localhost.localdomain mailman[10342]: File
"/opt/mailman3/venv/lib64/python3.9/site-packages/mailman/utilities/filesystem.py",
line 68, in makedirs
C 13 Jun 08 09:35:57 localhost.localdomain mailman[10342]:
os.makedirs(path, mode)
C 14 Jun 08 09:35:57 localhost.localdomain mailman[10342]: File
"/usr/lib64/python3.9/os.py", line 225, in makedirs
C 15 Jun 08 09:35:57 localhost.localdomain mailman[10342]: mkdir(name, mode)
C 16 Jun 08 09:35:57 localhost.localdomain mailman[10342]:
PermissionError: [Errno 13] Permission denied: '//var/templates'
C 17 Jun 08 09:35:57 localhost.localdomain systemd[1]:
mailman3.service: Control process exited, code=exited,
status=1/FAILURE
C 18 Jun 08 09:35:57 localhost.localdomain systemd[1]:
mailman3.service: Failed with result 'exit-code'.
C 19 Jun 08 09:35:57 localhost.localdomain systemd[1]: Failed to
start GNU Mailing List Manager.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Below, we start mailman, the "/opt/mailman3/venv/bin/mailman" command
line works, D-1 through D-5.
Line D-6, the systemd status command (erroneously) shows otherwise.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
D 1 [mailman3@localhost ~]$ /opt/mailman3/venv/bin/mailman start
D 2 Starting Mailman's master runner
D 3 Generating MTA alias maps
D 4 [mailman3@localhost ~]$ /opt/mailman3/venv/bin/mailman status
D 5 GNU Mailman is running (master pid: 10457)
D 6 [mailman3@localhost ~]$ systemctl status mailman3.service
D 7 mailman3.service - GNU Mailing List Manager
D 8 Loaded: loaded (/etc/systemd/system/mailman3.service; enabled;
preset: disabled)
D 9 Active: failed (Result: exit-code) since Sat 2024-06-08
09:35:57 MDT; 10min ago
D 10 Process: 10342 ExecStart=/opt/mailman3/venv/bin/mailman start
(code=exited, status=1/FAILURE)
D 11 CPU: 762ms
D 12
D 13 Jun 08 09:35:57 localhost.localdomain mailman[10342]: File
"/opt/mailman3/venv/lib64/python3.9/site-packages/mailman/config/config.py",
line 256, in ensure_directories_exist
D 14 Jun 08 09:35:57 localhost.localdomain mailman[10342]:
makedirs(directory)
D 15 Jun 08 09:35:57 localhost.localdomain mailman[10342]: File
"/opt/mailman3/venv/lib64/python3.9/site-packages/mailman/utilities/filesystem.py",
line 68, in makedirs
D 16 Jun 08 09:35:57 localhost.localdomain mailman[10342]:
os.makedirs(path, mode)
D 17 Jun 08 09:35:57 localhost.localdomain mailman[10342]: File
"/usr/lib64/python3.9/os.py", line 225, in makedirs
D 18 Jun 08 09:35:57 localhost.localdomain mailman[10342]: mkdir(name, mode)
D 19 Jun 08 09:35:57 localhost.localdomain mailman[10342]:
PermissionError: [Errno 13] Permission denied: '//var/templates'
D 20 Jun 08 09:35:57 localhost.localdomain systemd[1]:
mailman3.service: Control process exited, code=exited,
status=1/FAILURE
D 21 Jun 08 09:35:57 localhost.localdomain systemd[1]:
mailman3.service: Failed with result 'exit-code'.
D 22 Jun 08 09:35:57 localhost.localdomain systemd[1]: Failed to
start GNU Mailing List Manager.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------
E 1 [mailman3@localhost ~]$ /opt/mailman3/venv/bin/mailman status
E 2 GNU Mailman is running (master pid: 10457)
E 3 [mailman3@localhost ~]$ /opt/mailman3/venv/bin/mailman stop
E 4 Shutting down Mailman's master runner
E 5 [mailman3@localhost ~]$ /opt/mailman3/venv/bin/mailman start
E 6 Starting Mailman's master runner
E 7 Generating MTA alias maps
E 8 [mailman3@localhost ~]$ systemctl status mailman3.service
E 9 mailman3.service - GNU Mailing List Manager
E 10 Loaded: loaded (/etc/systemd/system/mailman3.service; enabled;
preset: disabled)
E 11 Active: failed (Result: exit-code) since Sat 2024-06-08
09:35:57 MDT; 2h 21min ago
E 12 Process: 10342 ExecStart=/opt/mailman3/venv/bin/mailman start
(code=exited, status=1/FAILURE)
E 13 CPU: 762ms
E 14
E 15 Jun 08 09:35:57 localhost.localdomain mailman[10342]: File
"/opt/mailman3/venv/lib64/python3.9/site-packages/mailman/config/config.py",
line 256, in ensure_directories_exist
E 16 Jun 08 09:35:57 localhost.localdomain mailman[10342]:
makedirs(directory)
E 17 Jun 08 09:35:57 localhost.localdomain mailman[10342]: File
"/opt/mailman3/venv/lib64/python3.9/site-packages/mailman/utilities/filesystem.py",
line 68, in makedirs
E 18 Jun 08 09:35:57 localhost.localdomain mailman[10342]:
os.makedirs(path, mode)
E 19 Jun 08 09:35:57 localhost.localdomain mailman[10342]: File
"/usr/lib64/python3.9/os.py", line 225, in makedirs
E 20 Jun 08 09:35:57 localhost.localdomain mailman[10342]: mkdir(name, mode)
E 21 Jun 08 09:35:57 localhost.localdomain mailman[10342]:
PermissionError: [Errno 13] Permission denied: '//var/templates'
E 22 Jun 08 09:35:57 localhost.localdomain systemd[1]:
mailman3.service: Control process exited, code=exited,
status=1/FAILURE
E 23 Jun 08 09:35:57 localhost.localdomain systemd[1]:
mailman3.service: Failed with result 'exit-code'.
E 24 Jun 08 09:35:57 localhost.localdomain systemd[1]: Failed to
start GNU Mailing List Manager.
E 25 [mailman3@localhost ~]$ systemctl stop mailman3.service
E 26 ==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ====
E 27 Authentication is required to stop 'mailman3.service'.
E 28 Multiple identities can be used for authentication:
E 29 1. keith christian (keithchristian)
E 30 2. mailman3
E 31 Choose identity to authenticate as (1-2): 2
E 32 Password:
E 33 ==== AUTHENTICATION COMPLETE ====
E 34 [mailman3@localhost ~]$ systemctl status mailman3.service
E 35 mailman3.service - GNU Mailing List Manager
E 36 Loaded: loaded (/etc/systemd/system/mailman3.service; enabled;
preset: disabled)
E 37 Active: failed (Result: exit-code) since Sat 2024-06-08
09:35:57 MDT; 2h 21min ago
E 38 Process: 10342 ExecStart=/opt/mailman3/venv/bin/mailman start
(code=exited, status=1/FAILURE)
E 39 CPU: 762ms
E 40
E 41 Jun 08 09:35:57 localhost.localdomain mailman[10342]: File
"/opt/mailman3/venv/lib64/python3.9/site-packages/mailman/config/config.py",
line 256, in ensure_directories_exist
E 42 Jun 08 09:35:57 localhost.localdomain mailman[10342]:
makedirs(directory)
E 43 Jun 08 09:35:57 localhost.localdomain mailman[10342]: File
"/opt/mailman3/venv/lib64/python3.9/site-packages/mailman/utilities/filesystem.py",
line 68, in makedirs
E 44 Jun 08 09:35:57 localhost.localdomain mailman[10342]:
os.makedirs(path, mode)
E 45 Jun 08 09:35:57 localhost.localdomain mailman[10342]: File
"/usr/lib64/python3.9/os.py", line 225, in makedirs
E 46 Jun 08 09:35:57 localhost.localdomain mailman[10342]: mkdir(name, mode)
E 47 Jun 08 09:35:57 localhost.localdomain mailman[10342]:
PermissionError: [Errno 13] Permission denied: '//var/templates'
E 48 Jun 08 09:35:57 localhost.localdomain systemd[1]:
mailman3.service: Control process exited, code=exited,
status=1/FAILURE
E 49 Jun 08 09:35:57 localhost.localdomain systemd[1]:
mailman3.service: Failed with result 'exit-code'.
E 50 Jun 08 09:35:57 localhost.localdomain systemd[1]: Failed to
start GNU Mailing List Manager.
E 51 [mailman3@localhost ~]$ systemctl start mailman3.service
E 52 ==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ====
E 53 Authentication is required to start 'mailman3.service'.
E 54 Multiple identities can be used for authentication:
E 55 1. keith christian (keithchristian)
E 56 2. mailman3
E 57 Choose identity to authenticate as (1-2): 2
E 58 Password:
E 59 ==== AUTHENTICATION COMPLETE ====
E 60 Job for mailman3.service failed because the control process
exited with error code.
E 61 See "systemctl status mailman3.service" and "journalctl -xeu
mailman3.service" for details.
E 62 [mailman3@localhost ~]$ journalctl -xeu mailman3.service|tail -20
E 63 Defined-By: systemd
E 64 Support:
https://wiki.almalinux.org/Help-and-Support
E 65
E 66 An ExecStart= process belonging to unit mailman3.service has exited.
E 67
E 68 The process' exit code is 'exited' and its exit status is 1.
E 69 Jun 08 11:58:52 localhost.localdomain systemd[1]:
mailman3.service: Failed with result 'exit-code'.
E 70 Subject: Unit failed
E 71 Defined-By: systemd
E 72 Support:
https://wiki.almalinux.org/Help-and-Support
E 73
E 74 The unit mailman3.service has entered the 'failed' state with
result 'exit-code'.
E 75 Jun 08 11:58:52 localhost.localdomain systemd[1]: Failed to
start GNU Mailing List Manager.
E 76 Subject: A start job for unit mailman3.service has failed
E 77 Defined-By: systemd
E 78 Support:
https://wiki.almalinux.org/Help-and-Support
E 79
E 80 A start job for unit mailman3.service has finished with a failure.
E 81
E 82 The job identifier is 9400 and the job result is failed.
E 83
E 84 [mailman3@localhost ~]$ journalctl -xeu mailman3.service|grep -a
"Jun 08 11:5[0-9]:[0-9][0-9]"
E 85 Jun 08 11:58:51 localhost.localdomain systemd[1]: Starting GNU
Mailing List Manager...
E 86 Jun 08 11:58:52 localhost.localdomain mailman[11160]: Traceback
(most recent call last):
E 87 Jun 08 11:58:52 localhost.localdomain mailman[11160]: File
"/opt/mailman3/venv/bin/mailman", line 33, in <module>
E 88 Jun 08 11:58:52 localhost.localdomain mailman[11160]:
sys.exit(load_entry_point('mailman==3.3.9', 'console_scripts',
'mailman')())
E 89 Jun 08 11:58:52 localhost.localdomain mailman[11160]: File
"/opt/mailman3/venv/lib64/python3.9/site-packages/click/core.py", line
1157, in __call__
E 90 Jun 08 11:58:52 localhost.localdomain mailman[11160]: return
self.main(*args, **kwargs)
E 91 Jun 08 11:58:52 localhost.localdomain mailman[11160]: File
"/opt/mailman3/venv/lib64/python3.9/site-packages/click/core.py", line
1077, in main
E 92 Jun 08 11:58:52 localhost.localdomain mailman[11160]: with
self.make_context(prog_name, args, **extra) as ctx:
E 93 Jun 08 11:58:52 localhost.localdomain mailman[11160]: File
"/opt/mailman3/venv/lib64/python3.9/site-packages/click/core.py", line
943, in make_context
E 94 Jun 08 11:58:52 localhost.localdomain mailman[11160]:
self.parse_args(ctx, args)
E 95 Jun 08 11:58:52 localhost.localdomain mailman[11160]: File
"/opt/mailman3/venv/lib64/python3.9/site-packages/click/core.py", line
1644, in parse_args
E 96 Jun 08 11:58:52 localhost.localdomain mailman[11160]: rest =
super().parse_args(ctx, args)
E 97 Jun 08 11:58:52 localhost.localdomain mailman[11160]: File
"/opt/mailman3/venv/lib64/python3.9/site-packages/click/core.py", line
1408, in parse_args
E 98 Jun 08 11:58:52 localhost.localdomain mailman[11160]: value,
args = param.handle_parse_result(ctx, opts, args)
E 99 Jun 08 11:58:52 localhost.localdomain mailman[11160]: File
"/opt/mailman3/venv/lib64/python3.9/site-packages/click/core.py", line
2400, in handle_parse_result
E 100 Jun 08 11:58:52 localhost.localdomain mailman[11160]: value =
self.process_value(ctx, value)
E 101 Jun 08 11:58:52 localhost.localdomain mailman[11160]: File
"/opt/mailman3/venv/lib64/python3.9/site-packages/click/core.py", line
2362, in process_value
E 102 Jun 08 11:58:52 localhost.localdomain mailman[11160]: value =
self.callback(ctx, self, value)
E 103 Jun 08 11:58:52 localhost.localdomain mailman[11160]: File
"/opt/mailman3/venv/lib64/python3.9/site-packages/mailman/bin/mailman.py",
line 95, in initialize_config
E 104 Jun 08 11:58:52 localhost.localdomain mailman[11160]: initialize(value)
E 105 Jun 08 11:58:52 localhost.localdomain mailman[11160]: File
"/opt/mailman3/venv/lib64/python3.9/site-packages/mailman/core/initialize.py",
line 228, in initialize
E 106 Jun 08 11:58:52 localhost.localdomain mailman[11160]:
initialize_1(config_path)
E 107 Jun 08 11:58:52 localhost.localdomain mailman[11160]: File
"/opt/mailman3/venv/lib64/python3.9/site-packages/mailman/core/initialize.py",
line 122, in initialize_1
E 108 Jun 08 11:58:52 localhost.localdomain mailman[11160]:
mailman.config.config.load(config_path)
E 109 Jun 08 11:58:52 localhost.localdomain mailman[11160]: File
"/opt/mailman3/venv/lib64/python3.9/site-packages/mailman/config/config.py",
line 141, in load
E 110 Jun 08 11:58:52 localhost.localdomain mailman[11160]:
self._post_process()
E 111 Jun 08 11:58:52 localhost.localdomain mailman[11160]: File
"/opt/mailman3/venv/lib64/python3.9/site-packages/mailman/config/config.py",
line 163, in _post_process
E 112 Jun 08 11:58:52 localhost.localdomain mailman[11160]:
self.ensure_directories_exist()
E 113 Jun 08 11:58:52 localhost.localdomain mailman[11160]: File
"/opt/mailman3/venv/lib64/python3.9/site-packages/mailman/config/config.py",
line 256, in ensure_directories_exist
E 114 Jun 08 11:58:52 localhost.localdomain mailman[11160]:
makedirs(directory)
E 115 Jun 08 11:58:52 localhost.localdomain mailman[11160]: File
"/opt/mailman3/venv/lib64/python3.9/site-packages/mailman/utilities/filesystem.py",
line 68, in makedirs
E 116 Jun 08 11:58:52 localhost.localdomain mailman[11160]:
os.makedirs(path, mode)
E 117 Jun 08 11:58:52 localhost.localdomain mailman[11160]: File
"/usr/lib64/python3.9/os.py", line 225, in makedirs
E 118 Jun 08 11:58:52 localhost.localdomain mailman[11160]: mkdir(name, mode)
E 119 Jun 08 11:58:52 localhost.localdomain mailman[11160]:
PermissionError: [Errno 13] Permission denied: '//var/templates'
E 120 Jun 08 11:58:52 localhost.localdomain systemd[1]:
mailman3.service: Control process exited, code=exited,
status=1/FAILURE
E 121 Jun 08 11:58:52 localhost.localdomain systemd[1]:
mailman3.service: Failed with result 'exit-code'.
E 122 Jun 08 11:58:52 localhost.localdomain systemd[1]: Failed to
start GNU Mailing List Manager.
E 123 [mailman3@localhost ~]$
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
For the PermissionError: [Errno 13] Permission denied:
'//var/templates' in Line E-119 above, every /var/tamplates directory
except
the last one has write permissions for mailman3, I doubt that the
"/home/keithchristian/var/templates directory" had been tried.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
F 1 1716996947 drwxr-xr-x. 2 mailman3 mailman3 6 May 29 09:35
/opt/mailman3/var/templates
F 2 1716999414 drwxr-xr-x. 2 mailman3 mailman3 6 May 29 10:16
/opt/mailman3/mailman_install_documentation_edits/var/templates
F 3 1717774226 drwxr-xr-x. 2 mailman3 mailman3 6 Jun 7 09:30
/opt/mailman3/venv/var/templates
F 4 1717779523 drwxr-xr-x. 2 keithchristian keithchristian 6 Jun 7
10:58 /home/keithchristian/var/templates
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
END OF MAILMAN INSTALL ISSUES SCREENSHOTS
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
This is only a minor issue, however as a nicety for new list owners I am hoping there is work around or something I have missed.
I have the following file: templates/domains/<fqdn_listname/en/domain:admin:notice:new-list.txt
When I use the mailman create command with the --notify option the new owners receives an email with the correct template info from the above file.
However when I use mailmanclient python bindings or Postorius to create an list, there is no email sent.
Is there an option to include a notify option when using mailmanclient or the API direct perhaps ?
Or even maybe a way to trigger a notification manually at some point once the list is completely setup including both short and long descriptions ?
Thank you.
Regards,
Perry
So I seem to have problems with both periodic AND size-triggered
digests. Size first, this is simpler. Just got one sent out, clearly
triggered by a new email getting added to the queued up messages, but
the setting for the list is the default 30KB and the digest came out at
23.2 KB. Is it measuring the accumulated queue as size on disk
including metadata and filesystem block sizes or something, rather than
the size of what the emailed digest will be?
Periodic is much more complicated, even to explain. I have the cron job
running nightly at 11:00 PM and it certainly seems to be working, except
for one really odd thing. The list also definitely has periodic digests
enabled in the web UI. This is a very bursty list, so it will go mad
with traffic for a few weeks and then will go mostly idle for a month or
so. The first digest of a burst is definitely size-triggered, but
pretty reliably it has the last few messages from the previous burst in
there. So the one I got today had three messages from today and one
message from May 4th. But that May 4th message should have gone out at
11:00 PM on May 4th with the daily digest and then gotten flushed from
the pending digest queue, right?
Joel Lord
My next challenge is to script the setup of a bunch of nonmembers who have a moderation action of accept (or maybe defer) whilst the list itself has a nonmember action of hold.
This is due to a relatively heavy use of nested lists, and have a fair number of people who might possibly send to all lists, and are important enough they wouldn't want to be manually allowed each time even if it only once.
When using the mailmanclient python bindings I have worked out I can add nonmembers with something like:
mailing_list.add_role('nonmember', 'nonmember(a)yourdomain.com', display_name='Non Member')
However I can't see anything in the mailmanclient docs which suggest it is possible to configure a member_moderation_action or moderation_action field for that member.
I assume I'll need to fall back to using the REST API directly, and most likely something along these lines:
1/ Obtain the member ID for an email address of someone who already been added as a nonmember.
2/ Patch an endpoint which looks something like: /members/{member_id}
I'm not able to use the mailman binary (e.g mailman shell) on the mailman-core host itself as I would like to query an existing database of people and reach out to a mailman endpoint from the database host rather than opening that host up to further network access.
I figured it might be a good stage in which to ask for a little help and pointers before I continue, perhaps there is something I have missed for a better way to approach this.
Thanks.
Regards,
Perry
Dear Mailman-users list,
I have embarked on project to stand up a Mailman3 instance for general staff email announcements and a small number of adhoc lists.
I have a fair amount up and working using Docker and Postfix, with generally emails to/from lists working well, as well as the web interface.
One of the reasons I've used Mailman3 is the API and mailman shell options which I'm slowly trying to wrap my head around, but having some progress.
I have a question for the moment on something which has stumped me, and whilst I may have more questions as I continue on this implementation, I am hopeful someone can point out where I am going wrong on this.
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.
>>> from zope.component import getUtility
>>> from mailman.interfaces.styles import IStyleManager
>>> manager = getUtility(IStyleManager)
>>> for style in manager.styles:
... print(style.name)
legacy-announce
legacy-default
private-default
>>> from zope.interface import implementer
>>> from mailman.interfaces.styles import IStyle
>>> @implementer(IStyle)
... class TestStyle:
... name = 'AB-Announce-Style'
... description = 'AB Announce mailing list style.'
... def apply(self, mailing_list):
... mailing_list.admin_immed_notify = true
... mailing_list.admin_notify_mchanges = true
... mailing_list.advertised = false
... mailing_list.allow_list_posts = false
... mailing_list.anonymous_list = false
... mailing_list.archive_policy = "private"
... mailing_list.archive_rendering_mode = "markdown"
... mailing_list.collapse_alternatives = false
... mailing_list.convert_html_to_plaintext = false
... mailing_list.default_member_action = "defer"
... mailing_list.default_nonmember_action = "hold"
... mailing_list.digest_send_periodic = false
... mailing_list.digests_enabled = false
... mailing_list.emergency = false
... mailing_list.include_rfc2369_headers = true
... mailing_list.max_message_size = 40000
... mailing_list.max_num_recipients = 30
... mailing_list.member_roster_visibility = "moderators"
... mailing_list.send_goodbye_message = true
... mailing_list.send_welcome_message = true
... mailing_list.subscription_policy = "moderate"
... mailing_list.unsubscription_policy = "moderate"
>>> manager.register(TestStyle())
>>> commit()
>>> for style in manager.styles:
... print(style.name)
AB-Announce-Style
legacy-announce
legacy-default
private-default
So at this point the style has been registered, however it doesn't look to save this permanently.
When I quit the shell and log back in, it only shows the original 3 styles. Nor can I see the style from the web interface.
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.
>>> from zope.component import getUtility
>>> from mailman.interfaces.styles import IStyleManager
>>> manager = getUtility(IStyleManager)
>>> for style in manager.styles:
... print(style.name)
legacy-announce
legacy-default
private-default
Is there a way to save this style permanently ?
Thank you for any assistance you can provide.
Regards,
PerryK
Hello,
It seems the mailman & mailman-web memory footprint are somewhat big. It looks a lot of instances are
started.
I have seen this:
https://gitlab.com/mailman/mailman/-/issues/1050
and added this to the end of /etc/mailman3/mailman-web.py:
Q_CLUSTER = {
'workers': 2,
'timeout': 300,
'save_limit': 100,
'orm': 'default',
'poll': 5,
However, it does not seem to really reduce the memory footprint.
Any other suggestions?
Thank you.
Hello,
i already send this question to the plesk-forum but it seems that nobody there can help me :-(
After updating from Debian 10 to 11 to 12, I now have mailman3 running on my server
I then converted all lists from Mailman2 to Mailman3 following the instructions from mailman.
I can access it via the web interface, manage everything etc.
When I register on the web interface, I also receive the corresponding mails from Mailman (forgotten password...)
Mails are also arriving, at least mails that are not allowed go into the mails to be approved.
The problem, however, is that it does not send out any mails, nor do they appear in the archive.
When I look in the Mailman-Log I find:
May 16 01:44:55 2024 (6833) Cannot connect to SMTP server localhost on port 25
May 16 01:48:15 2024 (61252) error opening connection to nntp_host: localhost
[Errno 111] Connection refused
May 16 01:48:15 2024 (61252) NNTP error for list vereinsmitglieder(a)ludothek.de:
[Errno 111] Connection refused
The configuration of Mailman.cfg looks like this:
incoming: mailman.mta.postfix.LMTP
outgoing: mailman.mta.deliver.deliver
smtp_host: localhost
smtp_port: 25
smtp_user:
smtp_pass:
lmtp_host: 127.0.0.1
lmtp_port: 8024
In Mailman manuals I find hints that the transport routes have to be added to the Postfix-config. Doesn't Debian/Plesk do this automatically?
Does anyone else have an idea what I need to change to get my mails out?
I did the conversion from mailman2 to mailman3 with root because it didn't work with "sudo -u list "m, but the files stored in the file system all belong to list, so that shouldn't be the problem.
Due to the DMARC mitigation action ‘Replace From: with list address’, it happens often on my lists that someone sends a message to a mangled address, hoping that the message goes to the person listed as the sender. This happens mostly because the mail clients collect previous addresses and use them when as type-ahead candidates for new messages, which may be unrelated to the lists.
For example, say the mail client captures my address as
“Allan Hansen via <listname>” <listaddress>
then later, when the person wants to send a message to me, the type-ahead puts this string in the ’To:’ field:
“Allan Hansen via <listname>”
and, to make it worse, the actual email address, <listaddress>, is often hidden.
The result is that the email gets sent to the list instead of to me, together with (often) personal and (sometimes) embarrassing information.
Is there a way to reject messages sent to recipients where the name part of the recipient is of the above format, i.e.,
"Allan Hansen via <listname>"
In other words, filtering is done on the name part of the recipient, not the address part.
Should I get onto the other list to request this as an enhancement?
Yours,
Allan
is it possible to sign and encrypt all e-mail responses from the
Mailman3 server with a digital certificate?
Best regards,
Markus Grandpré
Markus Ludwig Grandpré
Universität Konstanz
Kommunikations-, Informations-, Medienzentrum (KIM)
Abteilung IT-Dienste Forschung und Lehre,
B803, Tel: ++49 7531 88 4342
Sometimes not sure if it's preferable to open a gitlab issue, or chat on the mailing list.
I have run a large archive import into mailman3/hyperkitty. After that's done, waited a day, for scheduled cron jobs to complete.
In "All Threads", all the email archives are present. The import worked.
In "RECENTLY ACTIVE DISCUSSIONS" on the main page, it says:
RECENTLY ACTIVE DISCUSSIONS
No discussions this month (yet).
Nothing there. That means if I direct users to visit the site, the page, it appears empty. That's too bad. :-) It should display recent emails.
What would affect this feature during an archive import? Is it a problem with the import script itself, or with a scheduled cron job, or something else? Would you expect "Recently active discussions" be empty when very recent archives do exist?
Thanks,
Mailman2.1 to Mailman3.9.
2 Planning to copy over the entire production Mailman2.1 to a new
directory structure on the Mailman 3.9 machine.
3 Expecting that all .mbox and .pkl files will be present and no
special work has to be done to bring them over will a "full"
mailman2.1 copy.
4 Can the import21 program find the mailman2.1 .mbox and .pkl
files on its own and process them?
5 Other than the mailman2.1 instance being shut down, any other
prep that needs to be done?
6 Any special command line parameters to be aware of for import21?
7 Is there a list of troubleshooting steps for commonly
encountered migration issues?
Thanks.
------------------ Keith
Could those be subscribers that Mailman2 saw bouncing and added
the appropriate flag, and Mailman3 sent a probe after the import21?
I checked for one of the e-mail address and:
Mailman2:
- that e-mail has the [X] R flag for "noncourriel" (no delivery)
Mailman3:
- that e-mail is Delivery mode Regular, Bounces to 0
NB: in MM2 and MM3, all users are in Hold for moderation, that's
normal.
In addition, there are a few mails in /var/lib/mailman/messages
for example that same user: one file, showing a bounce from a remote
server.
So my questions:
1) is this behaviour to "probe" already disabled addresses normal, and
not "port over" the "don't deliver"?
2) why are those messages held in messages/ ?
3) should I then, before running import21, clean the MM2 installation
of all those users with [X] R flag? If yes, is there
a simple command?
Thank you for pointers or help.
PS: there was no trafic on that imported mailing-list yet, it's a test.
I have defined an additional SITE in django and the SITE_ID value in /etc/mailman3/settings.py is set to reference that site's ID value.
Messages for a list being distributed that are generating certain bounce errors are resulting in email from Mailman 3.x being sent to the list owners from the address user(a)example.com.
Is there something else to update in the settings files, Django or the database to make it use the list owner email address tied to the domain of the site?
Thanks,
David Goldsmith
(venv) [mailman3@localhost-live ~]$ mailman info
GNU Mailman 3.3.9 (Tom Sawyer)
Python 3.9.18 (main, Jan 24 2024, 00:00:00)
[GCC 11.4.1 20231218 (Red Hat 11.4.1-3)]
config file: /opt/mailman3/mailman.cfg
db url: sqlite:////opt/mailman3/var/data/mailman.db
<<<----------------------------------------
devmode: DISABLED
REST root url:
http://localhost:8001/3.1/
REST credentials: restadmin:restpass
Class and url were commented out in the mailman.cfg file, did not
recognize postgresql but generated a trace
(venv) [mailman3@localhost-live ~]$ grep postgresql /opt/mailman3/mailman.cfg
# class: mailman.database.postgresql.PostgreSQLDatabase
# url: postgresql://mailman:MYPASSWORD@localhost/mailman
Uncommented class and url:
class: mailman.database.postgresql.PostgreSQLDatabase
<<<----------------------------------------
url: postgresql://mailman:MYPASSWORD@localhost/mailman
<<<----------------------------------------
Now I get a stack trace from "mailman info"
(venv) [mailman3@localhost-live ~]$ mailman info
Traceback (most recent call last):
File "/opt/mailman3/venv/bin/mailman", line 33, in <module>
sys.exit(load_entry_point('mailman==3.3.9', 'console_scripts', 'mailman')())
File "/opt/mailman3/venv/lib64/python3.9/site-packages/click/core.py",
line 1157, in __call__
return self.main(*args, **kwargs)
File "/opt/mailman3/venv/lib64/python3.9/site-packages/click/core.py",
line 1077, in main
with self.make_context(prog_name, args, **extra) as ctx:
File "/opt/mailman3/venv/lib64/python3.9/site-packages/click/core.py",
line 943, in make_context
self.parse_args(ctx, args)
File "/opt/mailman3/venv/lib64/python3.9/site-packages/click/core.py",
line 1644, in parse_args
rest = super().parse_args(ctx, args)
File "/opt/mailman3/venv/lib64/python3.9/site-packages/click/core.py",
line 1408, in parse_args
value, args = param.handle_parse_result(ctx, opts, args)
File "/opt/mailman3/venv/lib64/python3.9/site-packages/click/core.py",
line 2400, in handle_parse_result
value = self.process_value(ctx, value)
File "/opt/mailman3/venv/lib64/python3.9/site-packages/click/core.py",
line 2362, in process_value
value = self.callback(ctx, self, value)
File "/opt/mailman3/venv/lib64/python3.9/site-packages/mailman/bin/mailman.py",
line 95, in initialize_config
initialize(value)
File "/opt/mailman3/venv/lib64/python3.9/site-packages/mailman/core/initialize.py",
line 228, in initialize
initialize_1(config_path)
File "/opt/mailman3/venv/lib64/python3.9/site-packages/mailman/core/initialize.py",
line 122, in initialize_1
mailman.config.config.load(config_path)
File "/opt/mailman3/venv/lib64/python3.9/site-packages/mailman/config/config.py",
line 145, in load
self.push(filename, user_config.read())
File "/opt/mailman3/venv/lib64/python3.9/site-packages/mailman/config/config.py",
line 150, in push
self._config.push(config_name, config_string)
File "/opt/mailman3/venv/lib64/python3.9/site-packages/lazr/config/_config.py",
line 582, in push
confs = self._getExtendedConfs(conf_name, conf_data)
File "/opt/mailman3/venv/lib64/python3.9/site-packages/lazr/config/_config.py",
line 615, in _getExtendedConfs
_parser_read_file(parser, StringIO(conf_data), conf_filename)
File "/opt/mailman3/venv/lib64/python3.9/site-packages/lazr/config/_config.py",
line 49, in _parser_read_file
parser.read_file(f, source)
File "/usr/lib64/python3.9/configparser.py", line 718, in read_file
self._read(f, source)
File "/usr/lib64/python3.9/configparser.py", line 1085, in _read
raise MissingSectionHeaderError(fpname, lineno, line)
configparser.MissingSectionHeaderError: File contains no section headers.
file: '/opt/mailman3/mailman.cfg', line: 14
<<<----------------------------------------
'class: mailman.database.postgresql.PostgreSQLDatabase\n'
Here is the complete mailman.cfg file:
1 # /etc/mailman3/mailman.cfg
2 # [paths.here]
3 # var_dir: /opt/mailman/mm/var
5 # [mailman]
6 # layout: here
7 # # This address is the "site owner" address. Certain
messages which must be
8 # # delivered to a human, but which can't be delivered to a
list owner (e.g. a
9 # # bounce from a list owner), will be sent to this address.
It should point to
10 # # a human.
11 # site_owner: user(a)example.com
12 #
13 # [database]
14 # class: mailman.database.postgresql.PostgreSQLDatabase
15 # url: postgresql://mailman:MYPASSWORD@localhost/mailman
16 #
17 # [archiver.prototype]
18 # enable: yes
19 #
20 # # For the HyperKitty archiver.
21 # [archiver.hyperkitty]
22 # class: mailman_hyperkitty.Archiver
23 # enable: yes
24 # configuration: /etc/mailman3/mailman-hyperkitty.cfg
25 #
26 # [shell]
27 # history_file: $var_dir/history.py
28 #
29 # [mta]
30 # verp_confirmations: yes
31 # verp_personalized_deliveries: yes
32 # verp_delivery_interval: 1
33 #
Ideas?
Thanks.
I'm trying to setup users with different permissions. For example:
I created a group support with an ability to hyperkitty/mailing list/Can add/change/delete/view mailing list.
Unfortunately, the user still does not have an ability to create mailing lists as the option does not exist. It does work when the user is set as "Superuser status". I've also tried giving every possible "available user permissions", but it didn't make a difference.
Am I missing something?
Thank you!
So tried, without much success, to get Postorius working on my Mailman3 server and every internet trick& tip I tried did not work so decided to take a new approach as recommended at
https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/thread/…
Used this reference:
https://docs.mailman3.org/en/latest/install/virtualenv.html#installing-depe…
which I know is more for Debian/Ubuntu systems but I was hoping that 90%+ would also work with Red Hat.
Fell at the first hurdle with no packages available called "python3-dev" or "python3-venv"
Is there anyone that has managed to install a running version of Mailman3 that has a working GUI whether it is on bare metal or Python virtual environment and if so, could they kindly let me know how they did it??
The closest I've come is a running command line version of Mailman3 which is fine for me of course but not for anyone else as they like access via web browser.
Thanks in advance,
Andy Macheta
I wondered if anybody would be able to assist me in my understanding of the Pending Confirmation list, please.
In our Mailman mailing list, our Member Policy settings for both Subscription Policy and Un-subscription Policy are set to Open. Therefore we don't require subscribers to confirm their subscription after they submit a request to join our mailing list.
Despite this, a number of subscribers seem to be arriving in the Pending Confirmation (Subscriptions pending user confirmation) list. Others correctly arrive in the Members list, as we would expect. All subscription requests are made by the subscriber sending an email to our "join" email address with the subject "subscribe".
I've looked at the settings carefully and can't seem to see any that may cause the above behaviour at any time (although I may have missed something of course). Therefore, does anybody know the circumstances in which subscribers to an open mailing list may somehow arrive in the Pending Confirmation list?
If I could understand the cause(s) I could then consider ways to manage it or prevent it from happening. Our Mailman installation is hosted centrally in a large organisation so we while we can alter our mailing list's settings in Postorious, we can't alter the source code or similar, so we don't have great room for manoeuvre.
Our Postorius version is 1.3.6.
Thanks and regards
David
After mailman was running so well I was wondering if I really need the
restart option in the service configuration. When I commented it out, I
got this error a few weeks later:
> # systemctl status mailman3
> × mailman3.service - GNU Mailing List Manager
> Loaded: loaded (/etc/systemd/system/mailman3.service; enabled;
> vendor preset: enabled)
> Active: failed (Result: exit-code) since Tue 2024-05-14 00:34:37
> CEST; 1 week 6 days ago
> Process: 1159 ExecStart=/opt/mailman/venv/bin/mailman start
> (code=exited, status=1/FAILURE)
> CPU: 6.933s
> May 14 00:34:36 SERVER.TLD mailman[1159]: return
> f(get_current_context(), *args, **kwargs)
> May 14 00:34:36 SERVER.TLD mailman[1159]: File
> "/opt/mailman/venv/lib/python3.10/site-packages/mailman/commands/cli_control.py",
> line 109, in start
> May 14 00:34:36 SERVER.TLD mailman[1159]:
> call_name(config.mta.incoming).regenerate()
> May 14 00:34:36 SERVER.TLD mailman[1159]: File
> "/opt/mailman/venv/lib/python3.10/site-packages/mailman/mta/postfix.py",
> line 136, in regenerate
> May 14 00:34:36 SERVER.TLD mailman[1159]: raise
> RuntimeError(NL.join(errors))
> May 14 00:34:36 SERVER.TLD mailman[1159]: RuntimeError: command
> failure: /usr/sbin/postmap /opt/mailman/mm/var/data/postfix_lmtp, 1,
> Operation not permitted
> May 14 00:34:36 SERVER.TLD systemd[1]: mailman3.service: Control
> process exited, code=exited, status=1/FAILURE
> May 14 00:34:37 SERVER.TLD systemd[1]: mailman3.service: Failed with
> result 'exit-code'.
> May 14 00:34:37 SERVER.TLD systemd[1]: Failed to start GNU Mailing
> List Manager.
> May 14 00:34:37 SERVER.TLD systemd[1]: mailman3.service: Consumed
> 6.933s CPU time.
I can only guess that the error might be some case of very bad timing,
because there shouldn't be any problem with the mentioned call.
> # su mailman
> (venv) mailman@SERVER:/$ /usr/sbin/postmap
> /opt/mailman/mm/var/data/postfix_lmtp
Usually works fine.
I re-enabled the lines in the server configuration:
> Restart=on-failure
> RestartSec=15
Hello,
I already have some success in auto-migration from Mailman 2.1 (Debian buster) to Mailman 3 (Debian bookworm), using a new container (not upgrading the existing installation, which is obsolete e.g. 32 bit x86). I am doing this using custom scripts. The idea being to be able to import most of the existing configuration and archives, let the list administrators test the new system, and progressively advertise this to users. Then, the old container will be disabled.
The basic stuff works (From: domain is OK, HTTP transport works, mail go out, etc)
I however bumped into the following problem:
How may I automatically (from the command line) replace the
example.com
which is displayed in the web interface and in the From: comment field of the e-mails (the address itself is OK) -- I only found documentation about changing through the GUI so far. Any pointer?
Also, I have a question: if I import my 2.1 config for each ml, will DKIM work-arounds work (e.g. replace This User <user@domain> by This User user@domain <the-mailing-list>) ? Will Mailman 2.1 it required some config changes and also I had to modify mailman using a Debian diversion, AFAIR.
Thank you for any input.
mailman3 was installed into the below virtual environment:
(venv) [mailman3@localhost-live ~]$ pip install wheel mailman psycopg2-binary
Should, or must, any of Django, Hyperkitty, Postorius, Dart-Sass, or
any other supporting programs be installed into this virtual
environment ?
PostgreSQL and Postfix have been successfully installed outside of the
mailman3 virtual environment and start properly, I assume this is
correct.
Thanks in advance.
---- Keith
Congratulations on securing your Summer of Code project with MM3.
As someone who is quite interested in the Mailman3 development plans, I
tried to follow the link you provided but with no success. It timed
out. Is that still a valid or the best link?
Can you also please point me to the best source or site to get a general
understanding of short and long term *MM3 development plans*, including
various upcoming GSOC projects, including yours.
Thank you very much in advance.
Best regards.
Dave Wilson
------------------------------------------------------------------------
___________________________________________
Mailman's content filtering has removed the
following MIME parts from this message.
Content-Type: image/png
Name: qL0JVbh9Fk99UcFT.png
Replaced multipart/alternative part with first alternative.
Hello everyone,
I’m Liang Liu, a GSoC student this year.
I will be responsible for using the publish-subscribe model to improve communication efficiency between the core and clients.
The detail of this function is shown in the link below.
https://wiki.list.org/DEV/Google%20Summer%20of%20Code%202024#Support_for_RE…
I am excited to learn from all of you and share my experiences.
Please feel free to reach out to me for any collaboration or discussion—I am keen to contribute and learn as much as I can.
Hope we have a productive summer.
Where does one obtain a complete and concise description for all of the list configuration attributes?
From the documentation, it is shown that the REST "config" interface will provide all of the attribute values associated with a particular list. But how does one find a concise description for all of these attributes? For example, I see that there is a list attribute for "default_nonmember_action" and there are two documentation pages for this attribute, but I can't find a concise description of the attribute and the permitted values.
Thanks, Steve
The path to the mailman3.py file is:
/home/mailman3/mailman/src/mailman/bin/mailman.py
I created a mailman3 user, then, set the ownership on all directories
and files in /home/mailman3 and below to mailman3:mailman3.
When trying to run the "mailman info" command to verify that that
mailman3 can start, I get this error:
File "/home/mailman3/mailman/src/mailman/bin/mailman.py", line 22 in <module>
from mailman.command.cli_help import help as help command
Not sure what is going on here, help greatly appreciated.
I have deleted a list (list(a)nog.ke) - list_id = list.nog.ke.
I can see from Django Admin UI that the archives are still intact.
I created a new list (list(a)lists.nog.ke) - list_id = list.lists.nog.ke
Is there a way to move the archives from the old list to the new list?
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
]
I'm getting errors when a custom "Welcome message" template is in place
[list:user:notice:welcome].
Case: Subscribing a new user via the admin "Mass subscribe".
Although the new user is successfully subscribed, a welcome message is
not sent and the following error message displays on the webpage.
HTTP Error 400: HTTPConnectionPool(host='localhost', port=8000): Read
timed out. (read timeout=5)
And the site-owner receives an email with ...
Internal Server Error: /mailman3/lists/
DoesNotExist at /mailman3/lists/
Site matching query does not exist.
Request Method: GET
Request URL: http://<REDACTED-PUBLIC-IPv4-ADDRESS>/mailman3/lists/
Django Version: 4.2.11
Python Executable: /opt/mailman/venv/bin/python3
Python Version: 3.11.2
... etc ...
Regarding the second line in the email - my thinking is that it should
be looking in "/opt/mailman/mm/var/lists" and not "/mailman3/lists/".
If that's right, where would I look to change that directive? If not,
any other clues would be greatly appreciated.
The error doesn't occur if the is no custom "Welcome message" template -
ie. the user is sent the default welcome message.
$ mailman info
GNU Mailman 3.3.9 (Tom Sawyer)
Python 3.11.2 (main, Mar 13 2023, 12:18:29) [GCC 12.2.0]
config file: /etc/mailman3/mailman.cfg
REST root url:
http://localhost:8001/3.1/
>> So, I'm thinking (in broad brush strokes) that if I'm stuck with this
>> "http glitch" I could write a script to:
>> 1. extract the text of the custom message from the database,
>> 2. write that message text to a file
>> 3. update the templates.uri entries to replace the
>>
http://localhost
... with file:///path/to/file
>> 4. cron the script to run every few minutes.
>> It screams of utter clunk I know...
> but it would work.
> Note that this may not be as big an issue as it seems. It doesn't
> affect all templates, for example list:member:digest:footer,
> list:member:digest:header, list:member:digest:masthead,
> list:member:regular:footer, list:member:regular:header and
> list:member:generic:footer are only used by the `out` runner when
> sending messages, so these aren't affected.
Right. Affected are all the "list:user:notice:***" (eg. goodbye, hold,
reject,...)
> I'm still trying to determine what the issue is. To this end can you
> tell me what Python version your Mailman uses and what is the output
> from `pip freeze` with your venv active?
$ mailman info
GNU Mailman 3.3.9 (Tom Sawyer)
Python 3.11.2 (main, Mar 13 2023, 12:18:29) [GCC 12.2.0]
$ pip freeze
aiosmtpd==1.4.4.post2
alembic==1.13.1
arrow==1.3.0
asgiref==3.7.2
atpublic==4.0
attrs==23.2.0
authheaders==0.16.2
authres==1.2.0
blessed==1.20.0
certifi==2023.11.17
cffi==1.16.0
charset-normalizer==3.3.2
click==8.1.7
cmarkgfm==2024.1.14
cryptography==42.0.1
defusedxml==0.7.1
Django==4.2.11
django-allauth==0.60.1
django-appconf==1.0.6
django-compressor==4.4
django-extensions==3.2.3
django-gravatar2==1.4.4
django-haystack==3.2.1
django-mailman3==1.3.12
django-picklefield==3.1
django-q==1.3.9
djangorestframework==3.14.0
dkimpy==1.1.5
dnspython==2.5.0
docutils==0.20.1
falcon==3.1.3
filelock==3.13.1
flufl.bounce==4.0
flufl.i18n==5.0.2
flufl.lock==8.0.2
greenlet==3.0.3
gunicorn==21.2.0
HyperKitty==1.3.9
idna==3.6
lazr.config==3.0
lazr.delegates==2.1.0
mailman==3.3.9
mailman-hyperkitty==1.2.1
mailman-web==0.0.9
mailmanclient==3.3.5
Mako==1.3.0
MarkupSafe==2.1.4
mistune==3.0.2
networkx==3.2.1
nh3==0.2.15
oauthlib==3.2.2
packaging==23.2
passlib==1.7.4
postorius==1.3.10
psutil==5.9.8
psycopg2-binary==2.9.9
publicsuffix2==2.20191221
pycparser==2.21
Pygments==2.17.2
PyJWT==2.8.0
python-dateutil==2.8.2
python3-openid==3.2.0
pytz==2023.3.post1
rcssmin==1.1.1
readme-renderer==42.0
redis==3.5.3
requests==2.31.0
requests-oauthlib==1.3.1
rjsmin==1.2.1
robot-detection==0.4
six==1.16.0
SQLAlchemy==2.0.25
sqlparse==0.4.4
types-python-dateutil==2.8.19.20240106
typing_extensions==4.9.0
urllib3==2.1.0
wcwidth==0.2.13
Whoosh==2.7.4
xapian @ file:///opt/mailman/xapian-1.4.24-cp311-cp311-linux_aarch64.whl
xapian-haystack==3.1.0
zope.component==6.0
zope.configuration==5.0
zope.event==5.0
zope.hookable==6.0
zope.i18nmessageid==6.1.0
zope.interface==6.1
zope.schema==7.0.1
What's the latest on Mailman with Python 3.12? Looking at Ubuntu 24.04 upgrade plans and realised it comes with Python 3.12. Ubuntu are shipping Mailman packages from Debian so not sure if they have made any changes to make Python 3.12 work. I don't use those packages myself.
Andrew.
I'm trying to migrate an aged mailman3 installation from ubuntu 20.04 to
ubuntu 22.04. Fresh install of mailman3-web gives me:
Creating config file /etc/dbconfig-common/mailman3-web.conf with new
version
creating database mailman3web.db: success.
verifying database mailman3web.db exists: success.
Creating config file /etc/mailman3/mailman-web.py with new version
/usr/lib/python3/dist-packages/django_q/conf.py:174: UserWarning: Retry
and timeout are misconfigured. Set retry larger than t
imeout,failure to do so will cause the tasks to be retriggered before
completion.See
https://django-q2.readthedocs.io/en/maste
r/configure.html#retry for details.
warn(
Traceback (most recent call last):
File "/usr/bin/django-admin", line 33, in <module>
sys.exit(load_entry_point('Django==4.2.11', 'console_scripts',
'django-admin')())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
"/usr/lib/python3/dist-packages/django/core/management/__init__.py",
line 442, in execute_from_command_line
utility.execute()
"/usr/lib/python3/dist-packages/django/core/management/__init__.py",
line 416, in execute
django.setup()
File "/usr/lib/python3/dist-packages/django/__init__.py", line 24, in
setup
apps.populate(settings.INSTALLED_APPS)
File "/usr/lib/python3/dist-packages/django/apps/registry.py", line
124, in populate
app_config.ready()
File "/usr/lib/python3/dist-packages/allauth/account/apps.py", line
15, in ready
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured:
allauth.account.middleware.AccountMiddleware must be added to
settings.MIDDLEWARE
dpkg: error processing package mailman3-web (--configure):
installed mailman3-web package post-installation script subprocess
returned error exit status 1
Errors were encountered while processing:
mailman3-web
needrestart is being skipped since dpkg has failed
E: Sub-process /usr/bin/dpkg returned an error code (1)
I've already seen this thread:
https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
...but that does not get me anywhere.
Could someone please push me in the right direction?
cheers! t.
We are about to upgrade to Mailman core 3.3.9 and Postorius 1.3.10. We notice that for setup with large number of members, the performance is much slower when listing members on web (Postorius). Further troubleshooting show that there are quite a number of API calls which do not appear in Mailman core 3.3.5 and Postorius 1.3.6 when we list members.
[17/Apr/2024:14:12:22 +0800] "GET /3.1/members/33a6266d0a04472c8d5d6c78869a964c/preferences HTTP/1.1" 200 156 "-" "GNU Mailman REST client v3.3.5"
[17/Apr/2024:14:12:22 +0800] "GET /3.1/members/7a18b7cb90a34ac98881a3f01b5488d1/preferences HTTP/1.1" 200 156 "-" "GNU Mailman REST client v3.3.5"
[17/Apr/2024:14:12:22 +0800] "GET /3.1/members/61c6c3e2aaf443babd3bd191519b0424/preferences HTTP/1.1" 200 156 "-" "GNU Mailman REST client v3.3.5"
[17/Apr/2024:14:12:22 +0800] "GET /3.1/members/8dd681165b8c436fac6793cae1ed2c27/preferences HTTP/1.1" 200 156 "-" "GNU Mailman REST client v3.3.5"
Further tests showing that each database query using "_member_id" in table member can take as much as 0.3 to 0.5 seconds for some large installations. The default 25 members per page mean that it will take at least 7.5 to 12.5 seconds. Changing to 200 members per page will take even longer time. We wonder whether "_member_id" should be indexed just like most other id in the database mailman_core in order to solve the issue. Or are there any other workarounds?
+----------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| _member_id | char(32) | YES | | NULL | |
| role | int(11) | YES | MUL | NULL | |
| list_id | varchar(255) | YES | MUL | NULL | |
| moderation_action | int(11) | YES | | NULL | |
| address_id | int(11) | YES | MUL | NULL | |
| preferences_id | int(11) | YES | MUL | NULL | |
| user_id | int(11) | YES | MUL | NULL | |
| bounce_score | int(11) | YES | | NULL | |
| last_bounce_received | datetime | YES | | NULL | |
| last_warning_sent | datetime | YES | | NULL | |
| total_warnings_sent | int(11) | YES | | NULL | |
+----------------------+--------------+------+-----+---------+----------------+
I'm investigating the possibility of transferring a fairly small mailing list I own from Google Groups to MM3 via a hosting service.
I'd appreciate any pointers regarding what I should be looking out for with companies that offer this service
It also seems very hard to find out which hosting companies are worth considering (In particular, reliability and support are important)
Any help much is much appreciated
Thanks
We need to find out when a specific user joined a list. Is there a way to get this information?
Thanks!
I have tried stopping and restarting it. The error logs update for the
startup, but not when anything connects to localhost:8000. The last entry
in uwsgi.log was two hours ago and nothing has been added since.
I tried both lynx
http://localhost:8000
and telnet to
http://localhost
8000
and GET request instantly closes the port and logs nothing.
As far as I can tell both mailman and postgres are working fine. This is
what logs on startup.
==> uwsgi-error.log <==
*** Starting uWSGI 2.0.22 (64bit) on [Sun Apr 14 10:45:51 2024] ***
compiled with version: 13.2.1 20230912 [revision
b96e66fd4ef3e36983969fb8cdd1956f551a074b] on 05 October 2023 13:37:28
os: Linux-6.5.4-1-default #1 SMP PREEMPT_DYNAMIC Wed Sep 20 05:07:04 UTC
2023 (fdd7e9e)
nodename:
mail.rubinsoftware.com
machine: x86_64
clock source: unix
detected number of CPU cores: 4
current working directory: /
detected binary path: /opt/mailman/venv/bin/uwsgi
!!! no internal routing support, rebuild with pcre support !!!
your processes number limit is 15246
your memory page size is 4096 bytes
detected max file descriptor number: 1024
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:8000 fd 8
Python version: 3.11.5 (main, Aug 31 2023, 07:57:41) [GCC]
PEP 405 virtualenv detected: /opt/mailman/venv/
Set PythonHome to /opt/mailman/venv/
Python main interpreter initialized at 0x7f2c3d709d58
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 250128 bytes (244 KB) for 4 cores
*** Operational MODE: preforking+threaded ***
added /etc/mailman3/ to pythonpath.
WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 0x7f2c3d709d58
pid: 16064 (default app)
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 16064)
spawned uWSGI worker 1 (pid: 16065, cores: 2)
spawned uWSGI worker 2 (pid: 16067, cores: 2)
[uwsgi-daemons] spawning "/opt/mailman/venv/bin/mailman-web qcluster" (uid:
72 gid: 67)
14:45:52 [Q] INFO Q Cluster white-green-ten-mobile starting.
14:45:52 [Q] INFO Process-1:1 ready for work at 16072
14:45:52 [Q] INFO Process-1:2 ready for work at 16073
14:45:52 [Q] INFO Process-1:3 monitoring at 16074
14:45:52 [Q] INFO Process-1 guarding cluster white-green-ten-mobile
14:45:52 [Q] INFO Process-1:4 pushing tasks at 16075
14:45:52 [Q] INFO Q Cluster white-green-ten-mobile running.
What should I do to diagnose further?
I had a working mailman3, tore it down, switched to PostgreSQL (from
MySQL), and now everything is working, except:
mailman-web update_index
mailman-web update_index_one_list
They fail with:
ModuleNotFoundError: No module named 'xapian_backend'
I rebuilt and re-installed xapian:
(venv) mailman@mail:~$ echo $XAPIAN_VERSION
1.4.25
(venv) mailman@mail:~$ pip list | grep -i xapian
xapian 1.4.25
Any ideas?
Thanks!
So to confirm my assumptions/findings:
Digest size threshold---- means when the total size of held messages hits this setting, a digest is sent
Digest Volume Frequency. ---- specifies when the digest volume number gets incremented for digest messages, IT DOES NOT send out digests based on the setting, daily, weekly ...
So what does the GUI setting "Send Digest Periodically yes no" do? how periodically does it send digests, if this is set to yes?
If I want to send a digest out for a list every day, or every week, how do I set that, especially in the docker environment? Is this something that can be configured in the GUI and configured by each of my list admins? I found that ”'mailman digests --periodic' via cron” should be set in googling, but does that mean I have to do a cron job for any list that wants a scheduled digest sent?
My use case is, that I have a list admin who set a size threshold, but regardless of that, they also want their list digest sent out daily, they thought it was the "Digest Volume Frequency" setting but that is not correct. However in their testing they are not getting daily digest, they are getting digests only when the threshold is reached, BUT they have "Send Digest Periodically" set to "yes" and "Enable Digests" is set to "yes"
hello there,
i migrated to a new host last night and i've been getting this error from a cronjob
mail every minute. anyone have any ideas what would cause this?
ERROR 2019-04-17 14:26:33,056 27205 hyperkitty.lib.utils Failed to update the fulltext index: ord() expected a character, but string of length 0 found
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/hyperkitty/lib/utils.py", line 186, in run_with_lock
fn(*args, **kwargs)
File "/usr/lib/python2.7/dist-packages/hyperkitty/search_indexes.py", line 87, in update_index
update_cmd.update_backend("hyperkitty", "default")
File "/usr/lib/python2.7/dist-packages/haystack/management/commands/update_index.py", line 276, in update_backend
last_max_pk=max_pk)
File "/usr/lib/python2.7/dist-packages/haystack/management/commands/update_index.py", line 97, in do_update
backend.update(index, current_qs, commit=commit)
File "/usr/lib/python2.7/dist-packages/haystack/backends/whoosh_backend.py", line 178, in update
self.setup()
File "/usr/lib/python2.7/dist-packages/haystack/backends/whoosh_backend.py", line 126, in setup
self.index = self.storage.open_index(schema=self.schema)
File "/usr/lib/python2.7/dist-packages/whoosh/filedb/filestore.py", line 176, in open_index
return indexclass(self, schema=schema, indexname=indexname)
File "/usr/lib/python2.7/dist-packages/whoosh/index.py", line 421, in __init__
TOC.read(self.storage, self.indexname, schema=self._schema)
File "/usr/lib/python2.7/dist-packages/whoosh/index.py", line 632, in read
check_size("int", _INT_SIZE)
File "/usr/lib/python2.7/dist-packages/whoosh/index.py", line 626, in check_size
sz = stream.read_varint()
File "/usr/lib/python2.7/dist-packages/whoosh/filedb/structfile.py", line 191, in read_varint
return read_varint(self.read)
File "/usr/lib/python2.7/dist-packages/whoosh/util/varints.py", line 102, in read_varint
b = ord(readfn(1))
thanks,
(venv)...$ mailman info
GNU Mailman 3.3.9 (Tom Sawyer)
Python 3.11.2 (main, Mar 13 2023, 12:18:29) [GCC 12.2.0]
Postorius Version 1.3.10
After creating a couple of lists, the lists are shown in the table on
the "Mailing lists" webpage as they should, but clicking on any of the
listnames returns an error page:
Something went wrong
HTTP Error 500: {"title": "500 Internal Server Error"}
And the Mailman log is a mystery to me, and no error is reported in the
Nginx log ...
# tail -f /opt/mailman/web/logs/mailmanweb.log
ERROR 2024-01-24 05:41:46,327 51799 postorius Un-handled exception: HTTP
Error 500: {"title": "500 Internal Server Error"}
Traceback (most recent call last):
"/opt/mailman/venv/lib/python3.11/site-packages/django/core/handlers/base.py",
line 197, in _get_response
response = wrapped_callback(request, *callback_args,
**callback_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
"/opt/mailman/venv/lib/python3.11/site-packages/django/views/generic/base.py",
line 103, in view
return self.dispatch(request, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
"/opt/mailman/venv/lib/python3.11/site-packages/postorius/views/generic.py",
line 76, in dispatch
return super(MailingListView, self).dispatch(request, *args,
**kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
"/opt/mailman/venv/lib/python3.11/site-packages/django/views/generic/base.py",
line 142, in dispatch
return handler(request, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
"/opt/mailman/venv/lib/python3.11/site-packages/postorius/views/list.py",
line 359, in get
and 'hyperkitty' in archivers # noqa: W504
^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen _collections_abc>", line 780, in __contains__
"/opt/mailman/venv/lib/python3.11/site-packages/mailmanclient/restbase/base.py",
line 146, in __getitem__
return self._get(key)
^^^^^^^^^^^^^^
"/opt/mailman/venv/lib/python3.11/site-packages/mailmanclient/restbase/base.py",
line 88, in _get
return self.rest_data[key]
^^^^^^^^^^^^^^
"/opt/mailman/venv/lib/python3.11/site-packages/mailmanclient/restbase/base.py",
line 74, in rest_data
response, content = self._connection.call(self._url)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
"/opt/mailman/venv/lib/python3.11/site-packages/mailmanclient/restbase/connection.py",
line 160, in call
raise HTTPError(params.get('url'), response.status_code,
urllib.error.HTTPError: HTTP Error 500: {"title": "500 Internal Server
Error"}
ERROR 2024-01-24 05:41:46,333 51799 django.request Internal Server
Error: /postorius/lists/testing.example.com/
ERROR 2024-01-24 05:41:46,333 51799 django.request Internal Server
Error: /postorius/lists/testing.example.com/
Could anyone steer me in the right direction for fixing this?
Thanks,
Dear list,
after I migrated a list from Mailman21 to Mailman3 I missed the Mailman21 setting "regular_include_lists" (or something
similar) in Mailman3. How are sibling lists treated in Mailman3?
Thank you in advance for your answers.
Markus
Markus Grandpré
Universität Konstanz
Kommunikations-, Informations-, Medienzentrum (KIM)
Abteilung IT-Dienste Forschung, Lehre und Infrastruktur,
Tel: ++49 7531 88 4342
A heads-up for anyone else on RHEL 8, because the error is mystifying.
django-mailman 1.3.12 bumps the preferred django version from 4.1 to 4.2. Django 4.2 requires MariaDB 10.4 or later. RHEL 8 has full lifecycle support for MariaDB 10.3.
For some reason I haven't yet been able to identify, this causes pyMySQL integrations to fail with the mysterious error:
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.4.3 or newer is required; you have 1.4.6.
(Yes, Database.version_info contains "(1, 4, 2, 'final', 0)" while Database.version contains "1.4.6" and I am totally stumped where that 1.4.2 is coming from as it appears... nowhere.)
Bypassing that error check gives the more informative:
django.db.utils.NotSupportedError: MariaDB 10.4 or later is required (found 10.3.39).
Doing a pip install with django\<4.2 works. This is not ideal since 4.1 is past LTS, so I would recommend that Mailman systems be migrated to RHEL 9.
--Jered
One of the great things about our new installation compared with our
old is the ability to manage users via
https://our.wee.domain/postorius/users
I might have been able to manage them using the command line on the old
installation, but there is no 'mailman delmembers' on that box.
Since I now have this Mighty Power, I want to use it to clean up. There
are many users who should no longer be on the system, so I want to run
something along the lines of:
mailman delmembers --member some(a)email.address --fromall \
--no-goodbye-msg --no-admin-notify
or, if I'm feeling brave, something like this.
mailman delmembers --file somefile --fromall \
--no-goodbye-msg --no-admin-notify
My question is: If one of these users is the sole owner of a list, what
will happen? Will the user be deleted and that list now owner-less?
Will mailman refuse to delete that user until I add a new owner?
Thanks in advance for your feedback.
Cheers,
David
Hello all,
I'm having some issues with a migration I'm performing right now from our old mailman2 server to a mailman3 one. The mailing lists imports work fine, but the archives seems to work sometimes: This means that some lists archives appear but others are missing when browsing the archives in the web UI. This happens despite the command line telling me that the import went fine. Here are the steps I run for the archives:
# Copy the archives into the my new server
# Cleaning old archives, where $LIST is my mailing list name
$ /opt/mailman3/venv/lib/python3.11/site-packages/hyperkitty/contrib/check_hk_import /opt/mailman3/archives/private/"$LIST".mbox/"$LIST".mbox
$ /opt/mailman3/venv/lib/python3.11/site-packages/hyperkitty/contrib/cleanarch3 /opt/mailman3/archives/private/"$LIST".mbox/"$LIST
".mbox
# Importing the archives
$ mailman-web hyperkitty_import -l "$LIST(a)my.domain.com" /opt/mailman3/archives/private/"$LIST".mbox/"$LIST".mbox
# Indexing the new archive
$ mailman-web update_index_one_list "$LIST(a)my.domain.com"
Here is also an example log of an archive I'm migrating that does not appear in the UI, for reference (list and domain were renamed for privacy):
$ mailman-web hyperkitty_import -l my_list(a)domain.com --since=1900-01-01 /opt/mailman3/archives/private/my_list.mbox/my_list.mbox
Importing from mbox file /opt/mailman3/archives/private/my_list.mbox/my_list.mbox to my_list(a)domain.com
Computing thread structure
Synchronizing properties with Mailman
Adding admin as owner of MailingList:
my_list.lists.domain.com
2070 emails left to refresh, checked 1000
2070 emails left to refresh, checked 2000
Warming up cache
The full-text search index is not updated for this list. It will not be updated by the 'minutely' incremental update job. To update the index for this list, run the Django admin command with arguments 'update_index_one_list my_list(a)domain.com'.
$ mailman-web update_index_one_list my_list(a)domain.com
Indexing 22 emails
Any help would be greatly appreciated, I'm very lost here...
Cheers,
Today was the 2nd time mailman stopped sending out mail, it receives mail but sends nothing out. To resolve the issue I restarted the mailman services and then all the incoming/queued mail was sent out... last time this happened was 21 days ago.... Before that, it has been rock solid for years.
We are running in a docker environment with no recent changes.
On the host in /var/log/maillog, I see the mail coming in and going to mailman in docker.
for docker, the mailman logs are in /opt/mailman/core/var/logs
in /opt/mailman/core/var/logs/smtp.log ---------- I see the messages coming in
/opt/mailman/core/var/logs/debug.log ------------ is empty
/opt/mailman/core/var/logs/mailman.log -------------- I do not see anything that looks like it had an issue
So where can I look to try to determine a cause?
If it happens again, what and where can I cook to troubleshoot before restarting the service?
Thanks
I have more fully documented where I am at with this attempt to build a
working installation of mm3 at this link:
https://gitlab.com/mailman/django-mailman3/-/issues/73
My questions include:
the template for /etc/mailman3/mailman.cfg, defines vardir, but no
DATA_DIR. See test failure #1 (closed)
<http:///mailman/django-mailman3/-/issues/1>, above. Where does that
want to be? Any issue with putting the mm3.db next to the mm3_web.db at
/opt/mailman/mm/var/data?
there are two possible virtualenv's in my build: (a) /opt/mailman/venv/
and (b) /opt/mailman/.pyenv/. I say more about these below. Which do I want
to use in this instance? I'm guessing the latter where the mailman3
libraries are published, but have doubts. The link above urges a dependency
on python ^3.11, but bookworm provides only python 3.8, so I used pyenv to
satisfy the requirement. It wanted to deploy to its own path, though
perhaps there is some switch which would consolidate everything under
/opt/mailman/venv/. I do not work with python enough to know.
attempts to run bin/mailman-web startapp mm3web fail to add any new
processes to the process list. bin/mailman-web start fails with errors.
What change of state to the server should I expect from running this
command? How do I test for success? If startapp is the correct invocation,
what argument does it want on a working installation?
having run the command in the previous point, I see nothing in the
browser except for the apache starter page at the root path '/'. None of
the paths defined in the apache2 configuration seem to offer any joy. I
assume that uwsgi wants to proxy the requests to a running mailman-web
service somehow, but that no such service is found. I see one hopeful line
in the log at: /opt/mailman/mm/var/logs/mailman.log
"GET /3.1/lists?count=10&page=1 HTTP/1.1" 200 90 "-" "GNU Mailman REST
client v3.3.5"
- I assume that once I get apache2 wired to a running application
through the uwsgi proxy, that I can proceed to create an admin user, use it
to explore the web gui, and begin to consider how to migrate my legacy
mm2.1 lists into the new installation.
Any further help crossing the finish line would be appreciated.
Thanks, -- Hugh
I regularly get requests from users to disable footers since they use email clients that simply show an attached text file. Yes, I know that's broken.
I never got this working with my old broken installation. Since we're now running a shiny new version of mailman3, I thought I'd give it a go again. From what I've read, I thought the following would do the trick:
# sudo -u mailman -s /usr/bin/bash
$ source /local/mailman/venv/bin/activate
$ cd ~/var/templates/
$ mkdir -p lists/test-list.our.domain/en/
$ cp /dev/null "lists/test-list.our.wee.domain/en/list:member:regular:footer"
However, sending mail to test-list(a)our.wee.domain<mailto:test-list@our.wee.domain> still includes the footer.
What am I missing? Do I need to restart something? Did I misunderstand what I've read?
With kind regards,
David
I'm sure I'm just doing something stupid, but I can't work out what.
I have a list, as admin under "Settings" -> "List Identity" -> "Members
List Visibility" I have it set to "Only Mailinglist Members".
But a random subscriber, who's signed up and authenticated, when she
visits the list page she sees her subscription, but no option to list the
other subscribers.
Is she looking in the wrong place? Do I need to open up more settings?
Am I just being an idiot?
Thanks for any light anyone can shed.
Tom Yates -
https://www.teaparty.net
Dear list members,
when following the instructions to migrate list archives from Mailman21 to Mailman3 (see [1]), I face the following problem:
# python3 manage.py hyperkitty_import -l mailman21-migration-test-04 /var/mailman21/testlist.mbox
python3: can't open file '/var/mailman21/manage.py': [Errno 2] No such file or directory
and have no clue, where to find the right <manage.py> file. The command dpkg returns:
# dpkg -l | grep hyperkitty
ii python3-django-hyperkitty 1.3.7-1 all Web user interface to access GNU
Mailman3 archives
In </etc/mailman3/mailman-web.py> I find:
INSTALLED_APPS = (
'hyperkitty',
'postorius',
'django_mailman3',
Can you please help me? Thank you in advance?
Best,
Markus
[1] <
https://docs.mailman3.org/en/latest/migration.html
>
Markus Grandpré
Universität Konstanz
Kommunikations-, Informations-, Medienzentrum (KIM)
Abteilung IT-Dienste Forschung, Lehre und Infrastruktur,
Tel: ++49 7531 88 4342
I'm reading the docs on "Message tagging"
(
https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/handlers/d…
)
as saying shell access is needed to: (a) enable topics, and (b) write
the keywords.
In Mailman 2 there is an Admin web UI for "Topics". Is there such a web
UI that can be enabled in Mailman 3 so that the list owners can create
topics (tags) in their lists?
Thanks.
These options aren't there for the list owners.
The docs (link below) say that in the newer HyperKitty version 1.3.9,
list owners can delete messages/threads
Is there a patch I can implement on HyperKitty version 1.3.8 (so list
owners can delete messages), or is it possible to update HyperKitty to
version 1.3.9 without bringing everything crashing down?
https://docs.mailman3.org/projects/hyperkitty/en/latest/news.html
1.3.9 (2024-02-27)
List owners can now delete messages and threads and reattach threads.
(Fixes #261)
Thanks,
SELECT T.table_name, CCSA.character_set_name FROM
information_schema.`TABLES`
T,information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` CCSA WHERE
CCSA.collation_name = T.table_collation
AND T.table_schema = "mailman3";
It will display something like this:
+--------------------+--------------------+
| table_name | character_set_name |
+--------------------+--------------------+
| pendedkeyvalue | latin1 |
| alembic_version | utf8mb4 |
| acceptablealias | utf8mb4 |
| address | utf8mb4 |
| autoresponserecord | utf8mb4 |
| ban | utf8mb4 |
| bounceevent | utf8mb4 |
| domain | utf8mb4 |
| file_cache | utf8mb4 |
| template | utf8mb4 |
| mailinglist | utf8mb4 |
| user | utf8mb4 |
| contentfilter | utf8mb4 |
| domain_owner | utf8mb4 |
| uid | utf8mb4 |
| member | utf8mb4 |
| _request | utf8mb4 |
| headermatch | utf8mb4 |
| preferences | utf8mb4 |
| workflowstate | utf8mb4 |
| listarchiver | utf8mb4 |
| message | utf8mb4 |
| onelastdigest | utf8mb4 |
| pended | utf8mb4 |
+--------------------+--------------------+
And the command to convert the table is this:
ALTER TABLE pendedkeyvalue CONVERT TO CHARACTER SET utf8mb4;
And it is better to be done with mailman3 down or you will get DB access
issues and not complete the change.
Problem is... all the tables changed except pendedkeyvalue.
MariaDB [mailman3]> ALTER TABLE pendedkeyvalue CONVERT TO CHARACTER SET
utf8mb4;
ERROR 1074 (42000): Column length too big for column 'value' (max = 16383);
use BLOB or TEXT instead
mysql/mariadb allows only a certain amount of characters per entry in the
table, moving to utf8mb4 with 4 bytes is taking more than what is permitted.
So the question is whether it is possible to change the types in this table.
MariaDB [mailman3]> desc pendedkeyvalue;
+-----------+----------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+----------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| key | varchar(255) | YES | MUL | NULL | |
| value | varchar(20000) | YES | MUL | NULL | |
| pended_id | int(11) | YES | MUL | NULL | |
+-----------+----------------+------+-----+---------+----------------+
4 rows in set (0.001 sec)
key and value are varchar. Can any of them be changed to text instead?
Perhaps even both?
Best Regards,
Helio Loureiro
https://helio.loureiro.eng.br
https://github.com/helioloureiro
https://mastodon.social/@helioloureiro
I just found several lists have the issue like this regarding charset:
(venv) mailman@new-mailman3 ~ (v3.1.1)> mailman members
listas-charset-issue(a)mailman.domain.com
anders(a)domain.com
beth(a)domain.com
charlie(a)domain.com
david(a)domain.com
ellen(a)domain.com
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)
"/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)
"/local/mailman/venv/lib/python3.10/site-packages/click/decorators.py",
line 33, in new_func
return f(get_current_context(), *args, **kwargs)
"/local/mailman/venv/lib/python3.10/site-packages/mailman/commands/cli_members.py",
line 222, in members
display_members(ctx, mlist, role, regular,
"/local/mailman/venv/lib/python3.10/site-packages/mailman/commands/cli_members.py",
line 109, in display_members
print(f'{address.display_name} <{address.original_email}>',
UnicodeEncodeError: 'latin-1' codec can't encode character '\u0142' in
position 9: ordinal not in range(256)
Since this service is running since time of python2, I guess the old lists
handled accented characters was to save as latin-1. But how can I fix this
Note: apparently the list remains working just fine. It is just the
command line failing. And perhaps some other side effect.
Best Regards,
Helio Loureiro
https://helio.loureiro.eng.br
https://github.com/helioloureiro
https://mastodon.social/@helioloureiro
Traceback (most recent call last):
"/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
line 356, in pusher
task = SignedPackage.loads(task[1])
"/local/mailman/venv/lib/python3.10/site-packages/django_q/signing.py",
line 25, in loads
return signing.loads(
"/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))
"/local/mailman/venv/lib/python3.10/site-packages/django_q/core_signing.py",
line 70, in unsign
result = super(TimestampSigner, self).unsign(value)
"/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 "F6V0Dr_SvBsx5-cY8vcvLXrX8tA"
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())
"/local/mailman/venv/lib/python3.10/site-packages/mailman_web/manage.py",
line 90, in main
execute_from_command_line(sys.argv)
"/local/mailman/venv/lib/python3.10/site-packages/django/core/management/__init__.py",
line 446, in execute_from_command_line
utility.execute()
"/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)
"/local/mailman/venv/lib/python3.10/site-packages/django/core/management/base.py",
line 402, in run_from_argv
self.execute(*args, **cmd_options)
"/local/mailman/venv/lib/python3.10/site-packages/django/core/management/base.py",
line 448, in execute
output = self.handle(*args, **options)
"/local/mailman/venv/lib/python3.10/site-packages/django_q/management/commands/qcluster.py",
line 22, in handle
q.start()
"/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)
"/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
line 168, in __init__
self.start()
"/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
line 172, in start
self.spawn_cluster()
"/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
line 248, in spawn_cluster
self.pusher = self.spawn_pusher()
"/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)
"/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)
"/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 "F6V0Dr_SvBsx5-cY8vcvLXrX8tA" 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/site-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=salt).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
"F6V0Dr_SvBsx5-cY8vcvLXrX8tA" does not match\n',)
The api_key on mailman-hypperkitty.cfg, SECRET_KEY and MAILMAN_ARCHIVE_KEY
on setting.py are the same.
Any clue what could be the issue?
And this is on the latest mailman.
> pip freeze
aiosmtpd==1.4.4.post2
alembic==1.13.1
arrow==1.3.0
asgiref==3.7.2
atpublic==4.0
attrs==23.2.0
authheaders==0.16.2
authres==1.2.0
blessed==1.20.0
certifi==2024.2.2
cffi==1.16.0
charset-normalizer==3.3.2
click==8.1.7
cmarkgfm==2024.1.14
cryptography==42.0.3
defusedxml==0.7.1
Django==4.1.13
django-allauth==0.61.1
django-appconf==1.0.6
django-compressor==4.4
django-extensions==3.2.3
django-gravatar2==1.4.4
django-haystack==3.2.1
django-mailman3==1.3.11
django-picklefield==3.1
django-q==1.3.9
djangorestframework==3.14.0
dkimpy==1.1.5
dnspython==2.5.0
docutils==0.20.1
falcon==3.1.3
flufl.bounce==4.0
flufl.i18n==5.0.2
flufl.lock==8.0.2
greenlet==3.0.3
gunicorn==21.2.0
HyperKitty==1.3.8
idna==3.6
lazr.config==3.0
lazr.delegates==2.1.0
mailman==3.3.9
mailman-hyperkitty==1.2.1
mailman-web==0.0.8
mailmanclient==3.3.5
Mako==1.3.2
MarkupSafe==2.1.5
mistune==2.0.5
mysql==0.0.3
mysqlclient==2.2.4
networkx==3.2.1
nh3==0.2.15
oauthlib==3.2.2
packaging==23.2
passlib==1.7.4
postorius==1.3.10
psutil==5.9.8
publicsuffix2==2.20191221
pycparser==2.21
Pygments==2.17.2
PyJWT==2.8.0
PyMySQL==1.1.0
python-dateutil==2.8.2
python3-openid==3.2.0
pytz==2024.1
rcssmin==1.1.1
readme-renderer==42.0
redis==3.5.3
requests==2.31.0
requests-oauthlib==1.3.1
rjsmin==1.2.1
robot-detection==0.4
six==1.16.0
SQLAlchemy==2.0.27
sqlparse==0.4.4
types-python-dateutil==2.8.19.20240106
typing_extensions==4.9.0
urllib3==2.2.0
uWSGI==2.0.24
wcwidth==0.2.13
Whoosh==2.7.4
xapian @ file:///local/mailman/xapian-1.4.23-cp310-cp310-linux_x86_64.whl
zope.component==6.0
zope.configuration==5.0.1
zope.event==5.0
zope.hookable==6.0
zope.i18nmessageid==6.1.0
zope.interface==6.2
zope.schema==7.0.1
Best Regards,
Helio Loureiro
https://helio.loureiro.eng.br
https://github.com/helioloureiro
https://mastodon.social/@helioloureiro
Hello everybody,
I'm trying to migrate my mailing lists on Debian 11 server from Mailman2 to Mailman3, and I'm having difficulties !
Mailman3 is already functional, but I could not configurate Postfix for this.
Is there anyone speaking french that could help me ?
Thanks in advance.
Greetings,
We're trying to move from an ancient and bad Ubuntu-package based installation of mailman3 to a venv-based do-it-the-right-way installation.
# mailman --version
GNU Mailman 3.3.9 (Tom Sawyer)
Things seem much better than past migration attempts. We are, though, seeing tons of errors in uwsgi-error.log that look like this:
Traceback (most recent call last):
File "/local/mailman/venv/lib/python3.10/site-packages/django/core/handlers/wsgi.py", line 131, in __call__
response = self.get_response(request)
File "/local/mailman/venv/lib/python3.10/site-packages/django/core/handlers/base.py", line 140, in get_response
response = self._middleware_chain(request)
File "/local/mailman/venv/lib/python3.10/site-packages/django/core/handlers/exception.py", line 58, in inner
response = response_for_exception(request, exc)
File "/local/mailman/venv/lib/python3.10/site-packages/django/core/handlers/exception.py", line 144, in response_for_exception
log_response(
File "/local/mailman/venv/lib/python3.10/site-packages/django/utils/log.py", line 241, in log_response
getattr(logger, level)(
File "/usr/lib/python3.10/logging/__init__.py", line 1506, in error
self._log(ERROR, msg, args, **kwargs)
File "/usr/lib/python3.10/logging/__init__.py", line 1624, in _log
self.handle(record)
File "/usr/lib/python3.10/logging/__init__.py", line 1634, in handle
self.callHandlers(record)
File "/usr/lib/python3.10/logging/__init__.py", line 1696, in callHandlers
hdlr.handle(record)
File "/usr/lib/python3.10/logging/__init__.py", line 968, in handle
self.emit(record)
File "/local/mailman/venv/lib/python3.10/site-packages/django/utils/log.py", line 128, in emit
self.send_mail(subject, message, fail_silently=True, html_message=html_message)
File "/local/mailman/venv/lib/python3.10/site-packages/django/utils/log.py", line 131, in send_mail
mail.mail_admins(
File "/local/mailman/venv/lib/python3.10/site-packages/django/core/mail/__init__.py", line 124, in mail_admins
raise ValueError("The ADMINS setting must be a list of 2-tuples.")
ValueError: The ADMINS setting must be a list of 2-tuples.
Our ADMINS setting in /etc/mailman3/settings.py has
ADMINS = (
('Mailman Suite Admin', 'someone(a)our.domain', 'someoneelse(a)our.domain'),
Can someone point me in a direction to correct this?
Thanks in advance.
David
I saw a few posts regarding the "Uncaught runner exception: module
'time' has no attribute 'clock'" problem but no solution to that. It
seems this issue sneaked in at some point. I was getting aware of it
when suddenly notifications to non-member posts did not work anymore.
Everything else seems still to work.
So, what is the prefered solution here? Is it possible to "repair"
focal? There is python2.7, python3.6 and python3.8 installed currently.
Or do I need to switch to a supported distribution like debian
something? Wait for ubuntu 24.04?
Any hints are really appreciated.
cheers! t.
Is there a way to delete the mailman3 cache? It's because it gives us this error and we think it's because of the cache.
Internal Server Error: /mailman3/accounts/login/
TemplateDoesNotExist at /accounts/login/
django_saml2_auth/error.html
Request Method: GET
Request URL:
http://llistes.csuc.cat/mailman3/accounts/login/?next=/mailman3/postorius/l…
Django Version: 2.2.12
Python Executable: /usr/bin/uwsgi-core
Python Version: 3.8.10
Python Path: ['.', '', '/usr/lib/python38.zip', '/usr/lib/python3.8', '/usr/lib/python3.8/lib-dynload', '/usr/local/lib/python3.8/dist-packages', '/usr/lib/python3/dist-packages']
Server time: dv., 15 Març 2024 10:33:00 +0100
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')
Template loader postmortem
Django tried loading these templates, in this order:
Using engine django:
This engine did not provide a list of tried templates.
Traceback:
File "/usr/local/lib/python3.8/dist-packages/django_saml2_auth/utils.py" in wrapper
179. result = function(request)
File "/usr/local/lib/python3.8/dist-packages/django_saml2_auth/views.py" in signin
271. saml_client = get_saml_client(get_assertion_url(request), acs)
File "/usr/local/lib/python3.8/dist-packages/django_saml2_auth/saml.py" in get_saml_client
169. metadata = get_metadata(user_id)
File "/usr/local/lib/python3.8/dist-packages/django_saml2_auth/saml.py" in get_metadata
131. raise SAMLAuthError("Invalid metadata URL.", extra={
During handling of the above exception (Invalid metadata URL.), another exception occurred:
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/local/lib/python3.8/dist-packages/django_saml2_auth/utils.py" in wrapper
181. result = handle_exception(exc, request)
File "/usr/local/lib/python3.8/dist-packages/django_saml2_auth/utils.py" in handle_exception
162. return render(request,
File "/usr/lib/python3/dist-packages/django/shortcuts.py" in render
36. content = loader.render_to_string(template_name, context, request, using=using)
File "/usr/lib/python3/dist-packages/django/template/loader.py" in render_to_string
61. template = get_template(template_name, using=using)
File "/usr/lib/python3/dist-packages/django/template/loader.py" in get_template
19. raise TemplateDoesNotExist(template_name, chain=chain)
Exception Type: TemplateDoesNotExist at /accounts/login/
Exception Value: django_saml2_auth/error.html
Request information:
USER: AnonymousUser
Hallo togeher,
I´m using the docker version from maxking and mailman core-version 3.3.9. I was wondering why there were messages in the list with "non-configured" footers. I found the files
mailman-core:/opt/mailman# find / -name "*list:member:*"
/usr/lib/python3.11/site-packages/mailman/templates/de/list:member:generic:footer.txt
/usr/lib/python3.11/site-packages/mailman/templates/de/list:member:digest:masthead.txt
/usr/lib/python3.11/site-packages/mailman/templates/ca/list:member:generic:footer.txt
/usr/lib/python3.11/site-packages/mailman/templates/ca/list:member:digest:masthead.txt
/usr/lib/python3.11/site-packages/mailman/templates/nl/list:member:generic:footer.txt
but I found no option to disable them. How can I disable these global list-configuration?
Best regards,
chrclaus
incoming messages are showing up in hyperkitty but not going out as emails to list members. i've tried enabling the following debug logging:
format: %(asctime)s (%(process)d) %(message)s
datefmt: %b %d %H:%M:%S %Y
propagate: no
level: info
path: mailman.log
[logging.smtp]
level: DEBUG
[logging.smtp-failure]
level: DEBUG
[logging.runner]
level: DEBUG
[logging.debug]
level: debug
[logging.smtp-failure]
level: debug
with these options, if i run `tail -f *` in the `log` directory of mailman, i get the following in essentially a busy loop:
==> smtp.log <==
Mar 13 19:08:46 2024 (18) Using agent: <mailman.mta.bulk.BulkDelivery object at 0x7fef1c9ad050>
==> debug.log <==
Mar 13 19:08:46 2024 (17) [NNTPRunner] starting oneloop
Mar 13 19:08:46 2024 (17) [NNTPRunner] ending oneloop: 0
Mar 13 19:08:46 2024 (18) [OutgoingRunner] finishing filebase: 1710356926.1738262+0a50dc0e393ba4de10bcdadb5376d4330f670c77
Mar 13 19:08:46 2024 (18) [OutgoingRunner] doing periodic
Mar 13 19:08:46 2024 (18) [OutgoingRunner] committing transaction
Mar 13 19:08:46 2024 (18) [OutgoingRunner] checking short circuit
Mar 13 19:08:46 2024 (18) [OutgoingRunner] processing filebase: 1710356926.2733445+d044aeb93be86fbf662b6e0feffc89d0f2e4eb66
Mar 13 19:08:46 2024 (18) [OutgoingRunner] processing onefile
Mar 13 19:08:46 2024 (18) [outgoing] <function deliver at 0x7fef1cda27a0>: <CADJyiOV1RAth=3CkNoHJ1qTVzedzX8BG0k6iwe019jXau30pLw(a)mail.gmail.com>
==> smtp.log <==
Mar 13 19:08:46 2024 (18) Using agent: <mailman.mta.bulk.BulkDelivery object at 0x7fef1cb0f390>
which doesn't give me a lot to go on. anyone know what could be causing this or any way to get additional debug information?
Hi Folks,
Just recently I've started seeing backtraces from Django when
trying to view old threads in hyperkitty.
They say that more than one LastView is being returned, and at a
later date cannot delete a LastView.
I'm using the Debian-packaged hyperkitty and postorius, but this
code hasn't changed from upstream.
The backtraces come when a logged in used revisits a thread.
So I see:
Internal Server Error: /hyperkitty/list/devel(a)sel4.systems/thread/XP2GFYGXOXBC3QBKKZQLZ6STSHQHK6K2/
MultipleObjectsReturned at /hyperkitty/list/devel(a)sel4.systems/thread/XP2GFYGXOXBC3QBKKZQLZ6STSHQHK6K2/
get() returned more than one LastView -- it returned 2!
Then later on I see:
LastView.objects.delete(pk=del_id)
^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'Manager' object has no attribute 'delete'
Here are the backtraces:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/django/core/handlers/exception.py", line 47, in inner
response = get_response(request)
File "/usr/lib/python3/dist-packages/django/core/handlers/base.py", line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/python3/dist-packages/hyperkitty/lib/view_helpers.py", line 137, in inner
return func(request, *args, **kwargs)
File "/usr/lib/python3/dist-packages/hyperkitty/views/thread.py", line 162, in thread_index
last_view_obj, created = LastView.objects.get_or_create(
File "/usr/lib/python3/dist-packages/django/db/models/manager.py", line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/usr/lib/python3/dist-packages/django/db/models/query.py", line 581, in get_or_create
return self.get(**kwargs), False
File "/usr/lib/python3/dist-packages/django/db/models/query.py", line 439, in get
raise self.model.MultipleObjectsReturned(
Internal Server Error: /hyperkitty/list/devel(a)sel4.systems/2022/1/
AttributeError at /hyperkitty/list/devel(a)sel4.systems/2022/1/
'Manager' object has no attribute 'delete'
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/django/core/handlers/exception.py", line 47, in inner
response = get_response(request)
File "/usr/lib/python3/dist-packages/django/core/handlers/base.py", line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/python3/dist-packages/hyperkitty/lib/view_helpers.py", line 137, in inner
return func(request, *args, **kwargs)
File "/usr/lib/python3/dist-packages/hyperkitty/views/mlist.py", line 127, in archives
return _thread_list(request, mlist, threads, extra_context=extra_context)
File "/usr/lib/python3/dist-packages/hyperkitty/views/mlist.py", line 173, in _thread_list
LastView.objects.delete(pk=del_id)
Since yesterday I get the following error-message when I go to the webinterface:
ValueError at /admin/login/
localtime() cannot be applied to a naive datetime
Request Method: GET
Request URL:
https://mailman.pgtrynwalden.nl/mailman3/admin/login/?next=/mailman3/admin/
Django Version: 2.2.28
Exception Type: ValueError
Exception Value:
localtime() cannot be applied to a naive datetime
Exception Location: /usr/lib/python3/dist-packages/django/utils/timezone.py in localtime, line 207
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: vr, 1 Mrt 2024 11:52:50 +0100
Mailman info:
mailman info
GNU Mailman 3.3.3 (Tom Sawyer)
Python 3.9.2 (default, Feb 28 2021, 17:03:44)
[GCC 10.2.1 20210110]
config file: /etc/mailman3/mailman.cfg
db url: mysql+pymysql://mailman3:xxxxxxx
If this issue was posted before, i'm sorry, i haven't found it:
Any ideas how to solve this issue would be appreciated
Environment:
Request Method: GET
Request URL:
https://mailman.pgtrynwalden.nl/mailman3/admin/login/?next=/mailman3/admin/
Django Version: 2.2.28
Python Version: 3.9.2
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
35. response = get_response(request)
File "/usr/lib/python3/dist-packages/django/core/handlers/base.py" in _get_response
145. response = self.process_exception_by_middleware(e, request)
File "/usr/lib/python3/dist-packages/django/core/handlers/base.py" in _get_response
143. response = response.render()
File "/usr/lib/python3/dist-packages/django/template/response.py" in render
106. self.content = self.rendered_content
File "/usr/lib/python3/dist-packages/django/template/response.py" in rendered_content
83. content = template.render(context, self._request)
File "/usr/lib/python3/dist-packages/django/template/backends/django.py" in render
61. return self.template.render(context)
File "/usr/lib/python3/dist-packages/django/template/base.py" in render
169. with context.bind_template(self):
File "/usr/lib/python3.9/contextlib.py" in __enter__
117. return next(self.gen)
File "/usr/lib/python3/dist-packages/django/template/context.py" in bind_template
246. updates.update(processor(self.request))
File "/usr/lib/python3/dist-packages/postorius/context_processors.py" in postorius
38. mailman_day=(timezone.localtime(timezone.now()).day == MAILMAN_DAY),
File "/usr/lib/python3/dist-packages/django/utils/timezone.py" in localtime
207. raise ValueError("localtime() cannot be applied to a naive datetime")
Exception Type: ValueError at /admin/login/
Exception Value: localtime() cannot be applied to a naive datetime
both:
i) discarding the current message of a sender (not member of a closed list) ; and in the same action
ii) adding this person to the whitelist, i.e. accept further mails from this sender.
How can this be achieved?
On 3/8/24 6:36 AM, Daniel Azubuine wrote:
> Sir, I get this error
> /home/daniel/Documents/repos/mailman/mailman/.tox/qa/bin/python: can't
> open file '/home/daniel/Documents/repos/mailman/mailman/setup.py':
> [Errno 2] No such file or directory
> ERROR: invocation failed (exit code 2)/
> _______________________________________________ summary
> ________________________________________________
> ERROR: qa: InvocationError for command
> /home/daniel/Documents/repos/mailman/mailman/.tox/qa/bin/python
> /home/daniel/Documents/repos/mailman/mailman/setup.py --name (exited
> with code 2)
> when i run tox -e qa.
What is your tox version (tox --version)?
You shouldn't need this, but adding
skipdist = True
in the [tox] section of tox.ini may help.
> I also get this when i run tox -e py310-diffcov
> -------------
> src/mailman/interfaces/listmanager.py (75.0%): Missing lines 37
> -------------
> Total: 4 lines
> Missing: 1 line
> Coverage: 75%
> -------------
> ERROR: InvocationError for command
> /home/daniel/Documents/repos/mailman/mailman/.tox/py310-diffcov/bin/diff-cover coverage.xml --fail-under=100 --compare-branch origin/master (exited with code 1)
This is expected output in this case. Line 37 in your
src/mailman/interfaces/listmanager.py is not covered by any tests.
Modifying the test_cannot_create_a_list_twice test in
src/mailman/model/tests/test_listmanager.py to use assertRaisesRegex
rather than assertRaises may help. See
<
https://docs.python.org/3/library/unittest.html#unittest.TestCase.assertRai…
>.
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
Hello, everyone.
I just completed the initial installation by following the instructions:
https://docs.list.org/en/latest/install/virtualenv.html#virtualenv-install
I went with the apache/uswgi configuration. The site is up and running, but if I click Postorius, it gets redirected to
https://mysite.com/postorius/lists
and I get not found error message.
The same goes for Lists and Archives.
What did I do wrong? I've found some discussions online, but they seem to be related to a different installation, thus my confusion.
Thank you!
Hi Mailman Admins,
Whenever we mass subscribe or unsubscribe more than 500+ users, we would get a "500-internal-server-error" or a timeout.
Is there something we can tweak or increase to way to increase this threshold?
I'm migrating to a new Mailman3 instance, finally escaping a fairly
old (3.1.1) and problematic distribution repo install on a Linux VM and
moving to a venv install in a native SmartOS Zone. I've gotten
everything running well and integrated with our (fairly complex) mail
server. I'd like to begin migration of the lists on the old mm3 instance.
Is there a way to export a list from one Mailman 3 instance and
import it into another, on a different machine? Ideally some way to
capture its settings, members, members' settings, etc?
Thanks,
-Dave
Dave McGuire, AK4HZ
New Kensington, PA
So we tried to the migration following the steps:
- stop mailman in the old machine (v3.1.1 from ubuntu packages)
- dump DB mailman3 and mailman3web
- backup /var/lib/mailman3 content
On the new machine:
- checkout from git the version 3.1.1 to match production and install the
services
- stop mailman3 and mailman3-web on the new machine
- load DBs into new machine
- copy content from /var/lib/mailman3 into /local/mailman/var (which
means: archives/ cache/ data/ ext/ lists/ locks/ messages/
public_suffix_list.dat queue/ templates/ web/)
- start mailman3 and mailman-3web
- run mailman3-web migrate
And I stopped here. Because it crashed.
(venv) mailman@new-mailman3-server ~ (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...
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):
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/utils.py",
line 87, in _execute
return self.cursor.execute(sql)
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/mysql/base.py",
line 75, in execute
return self.cursor.execute(query, args)
"/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
179, in execute
res = self._query(mogrified_query)
"/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
330, in _query
db.query(q)
"/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")
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())
"/local/mailman/venv/lib/python3.10/site-packages/mailman_web/manage.py",
line 90, in main
execute_from_command_line(sys.argv)
"/local/mailman/venv/lib/python3.10/site-packages/django/core/management/__init__.py",
line 446, in execute_from_command_line
utility.execute()
"/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)
"/local/mailman/venv/lib/python3.10/site-packages/django/core/management/base.py",
line 402, in run_from_argv
self.execute(*args, **cmd_options)
"/local/mailman/venv/lib/python3.10/site-packages/django/core/management/base.py",
line 448, in execute
output = self.handle(*args, **options)
"/local/mailman/venv/lib/python3.10/site-packages/django/core/management/base.py",
line 96, in wrapped
res = handle_func(*args, **kwargs)
"/local/mailman/venv/lib/python3.10/site-packages/django/core/management/commands/migrate.py",
line 349, in handle
post_migrate_state = executor.migrate(
"/local/mailman/venv/lib/python3.10/site-packages/django/db/migrations/executor.py",
line 135, in migrate
state = self._migrate_all_forwards(
"/local/mailman/venv/lib/python3.10/site-packages/django/db/migrations/executor.py",
line 167, in _migrate_all_forwards
state = self.apply_migration(
"/local/mailman/venv/lib/python3.10/site-packages/django/db/migrations/executor.py",
line 252, in apply_migration
state = migration.apply(state, schema_editor)
"/local/mailman/venv/lib/python3.10/site-packages/django/db/migrations/migration.py",
line 130, in apply
operation.database_forwards(
"/local/mailman/venv/lib/python3.10/site-packages/django/db/migrations/operations/fields.py",
line 108, in database_forwards
schema_editor.add_field(
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/mysql/schema.py",
line 104, in add_field
super().add_field(model, field)
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/base/schema.py",
line 636, in add_field
return self.create_model(field.remote_field.through)
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/base/schema.py",
line 447, in create_model
self.execute(sql, params or None)
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/base/schema.py",
line 199, in execute
cursor.execute(sql, params)
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/utils.py",
line 67, in execute
return self._execute_with_wrappers(
"/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)
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/utils.py",
line 84, in _execute
with self.db.wrap_database_errors:
"/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
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/utils.py",
line 87, in _execute
return self.cursor.execute(sql)
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/mysql/base.py",
line 75, in execute
return self.cursor.execute(query, args)
"/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
179, in execute
res = self._query(mogrified_query)
"/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
330, in _query
db.query(q)
"/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/connections.py",
line 261, in query
_mysql.connection.query(self, query)
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.
Any clue what to do next?
Best Regards,
Helio Loureiro
https://helio.loureiro.eng.br
https://github.com/helioloureiro
https://mastodon.social/@helioloureiro
It's that time of year again! PSF is in GSoC 2024, I'm 99% certain
PSF will accept Mailman as a suborg (don't ask about the 1%, it's
embarrassing ;-). Student applications open on March 18. So ...
If you have ideas for improving Mailman 3, whether misfeatures that
need fixing or cool new features, please consult our ideas page
https://wiki.list.org/DEV/Google%20Summer%20of%20Code%202024
to get an idea of level of detail and style of description needed (and
to see if maybe it's already there. You can send them to me if
they're already formed in your mind, or send them here for input from
users on requirements, or to mailman-developers(a)python.org for input
on implementation feasibility and appropriateness for GSoC.
If you know anybody who would be interested in participating as a
contributor, please encourage them to look at us. Rules are somewhat
relaxed from years ago. They still don't accept below college age,
but they no longer restrict to students. They're also offering
multiple period lengths from 8 to 22 weeks (stipends vary according to
period and by price level in country of residence, see
https://developers.google.com/open-source/gsoc/help/student-stipends
).
They're not as generous as a few years ago, at least for the "rich"
countries (US, UK, Japan).
You don't need to be an experienced coder or project manager to be a
secondary mentor, just willing to communicate with the code
contributor. If you're interested in being a primary or secondary
mentor, the burden is likely to be "as much as you want". We rarely
get more than one good application, and we have enough "default"
primary mentors to cover the likely maximum number of slots we could
be allocated. It would be very helpful to us and to the PSF
organization administrators if you express interest and get signed up
by the end of next week, but as far as I know we can add or substitute
mentors at any time.
Potential mentors should
1. Have a Google account (needed for step 2, and required by GSoC)
2. Sign up with Python-GSoC at
https://forms.gle/coJYxhor6FAZcZfU8
3. If you have been a GSoC mentor or org admin in the past, go to
https://summerofcode.withgoogle.com
and accept the contributor
agreement and program rules for 2024. (Definitely if you did last
year, probably for 2022 the system still remembers you, and
unlikely it has more memory than that.)
Steve
Are there any settings that may help with making it easier seeing spam as spam? E.g. some mail programs, including Outlook, allow the user to set a from mail address that most mail clients will show instead of the true sender address, but the senders mail address is still present in the sender header field. While some people and companies carelessly abuse that functionality, hiding their true mail address, those bad practices also are abused my spammers and others. Does mailman have any settings that would remove any such obfuscations, e.g. in this case detect the manipulated from address and replace it with the sender address?
While I do run my own spam filter, it's virtually getting harder every day to make sure you detect all spam while not having too many false positives. If it was possible to reverse at least the most obvious manipulations, that would probably already help. Also, it would make it much easier for the users to see at first glance who actually wrote an email. It's always less trustworthy if the senders address is shown as user3168(a)suspiciousdomain.gg instead of it being manipulated to say support(a)yourprovider.com.
We have Mailman working well in our environment, but there's one thing I can't seem to make happen no matter what I try. The situation is as follows:
Postfix runs on on a different server than Mailman. Its main.cf says
local_recipient_maps = $alias_maps
transport_maps = regexp:/var/mailman-data/postfix_lmtp
relay_domains = regexp:/var/mailman-data/postfix_domains
The file postfix_lmtp is initially generated by Mailman (running on a different machine). A background process creates a version of the file wherein the lmtp IP address is changed to the network IP of the Mailman server, and that version is sync'd over to the Postfix server. On the latter, a typical block for a list then reads as follows (where A.B.C.D is the IP address of the Mailman server):
/^some-list(a)lists\.scss\.tcd\.ie$/ lmtp:[A.B.C.D]:8024
/^some-list-bounces(\+.*)?(a)lists\.scss\.tcd\.ie$/ lmtp:[A.B.C.D]:8024
/^some-list-confirm(\+.*)?(a)lists\.scss\.tcd\.ie$/ lmtp:[A.B.C.D]:8024
/^some-list-join(a)lists\.scss\.tcd\.ie$/ lmtp:[A.B.C.D]:8024
/^some-list-leave(a)lists\.scss\.tcd\.ie$/ lmtp:[A.B.C.D]:8024
/^some-list-owner(a)lists\.scss\.tcd\.ie$/ lmtp:[A.B.C.D]:8024
/^some-list-request(a)lists\.scss\.tcd\.ie$/ lmtp:[A.B.C.D]:8024
/^some-list-subscribe(a)lists\.scss\.tcd\.ie$/ lmtp:[A.B.C.D]:8024
/^some-list-unsubscribe(a)lists\.scss\.tcd\.ie$/ lmtp:[A.B.C.D]:8024
The only problem with this is that if someone sends a message to a non-existent mailing list, Postfix nevertheless accepts the mail, and it loiters in the queue for several days before eventually being bounced back to the sender. I want to get Postfix to reject mail to non-existent mailing lists immediately. I've come up short with each variation of main.cf settings I've tried, and would greatly appreciate any advice.
Many thanks
Stephen Kenny
Hi there,
I am running mailman3 on Debian 12 - latest package (GNU Mailman 3.3.8 (Tom Sawyer)).
Message handling in general is working fine, but as soon as a message is released, archiving with Hyperkitty is not working, due to a 405 error:
Feb 11 16:18:48 2024 (3479662) HyperKitty failure on
http://lists.domain.tld/mailman3/hyperkitty/api/mailman/archive
: (405)
Feb 11 16:18:48 2024 (3479662) Could not archive the message with id <170766472771.3479669.4791049109141956450(a)otherdomain.tld>
Feb 11 16:18:48 2024 (3479662) archiving failed, re-queuing (mailing-list jahrgang.domain.tld, message <170766472771.3479669.4791049109141956450(a)otherdomain.tld>)
Feb 11 16:18:48 2024 (3479662) Exception in the HyperKitty archiver:
Feb 11 16:18:48 2024 (3479662) Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/mailman_hyperkitty/__init__.py", line 158, in _archive_message
url = self._send_message(mlist, msg)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/mailman_hyperkitty/__init__.py", line 228, in _send_message
raise ValueError(result.text)
ValueError
When tracing this back, even the frontend Nginx server receives a get in his logs, hence I assume that hyperkitty is really creating a GET instead of a POST request?
217.72.204.162 - - [11/Feb/2024:16:18:48 +0100] "GET /mailman3/hyperkitty/api/mailman/archive HTTP/1.1" 405 0 "-" "python-requests/2.28.1"
Any idea how to trace this down any further?
Any help is really appreciated! Thanks,
Matthias
I have a situation where I need to add / remove 10-20 non-members to a
particular list every week and set the moderation bit to 'accept
immediately (bypass other rules).
I do the above via postorius because I couldn't find a way to do this via
mailman shell.
Can anyone help me please to achieve the above? I know how to remove all
non-members via
/opt/mailman/mm/bin/mailman shell -l
list.example.com
for nonmember in m.nonmembers.members:
... nonmember.unsubscribe()
commit()
I am just having difficulties adding the non-members and setting the
moderation bit to 'Accept'
Currently I am using Mailman 3.2.2 (La Villa Strangiato) and Postorius
Version 1.2.4 so cant use 'postorius => settings -> message acceptance ->
id_accept_these_nonmembers'
Regards,
Zaheer
Hi. We did a fresh install of the Debian Mailman 3 full package. I'd like all components to be translated into pt_BR. I downloaded the latest updated translations from weblate, which says that 100% of the project (all components) are translated. I checked and recompiled mailman.po with msgfmt without errors. I followed all instructions I saw, included the ones from the topic How to change the language in mailman3 in this list. Everything almost OK, except from the fact that none of mailman's core email messages are being translated, even though mailman.po shows the right messages. Also, strange things happen to these .po files. The web interface is almost perfect, but some messages (just some) are not correct - although the corresponding django.po appears to be OK. It´s the case below: the pair msgid/msgstr seems to be OK, but this particular sentence is not being translated.
#: templates/postorius/lists/summary.html:88
#, python-format
msgid ""
" To subscribe you can send an email with 'subscribe' in the "
"subject to\n"
" <a href=\"mailto:%(address)s?subject=Subscribe\">"
"%(address)s</a>\n"
" or use the form below:\n"
" "
msgstr ""
" Para se inscrever você pode enviar um e-mail com o assunto "
"'subscribe' para\n"
" <a href=\"mailto:%(address)s?subject=Subscribe\">"
"%(address)s</a>\n"
" ou use o formulário abaixo:\n"
What am I doing wrong? Or what can I do to make things suitable?
Additional info:
GNU Mailman 3.3.3 (Tom Sawyer)
Python 3.9.2 (default, Feb 28 2021, 17:03:44)
[GCC 10.2.1 20210110]
Postorius v. 1.3.4
HyperKitty v. 1.3.4
Thanx for any help
I'm seeing emails being dropped when mm3 talks to the local smtp
server, with log errors like:
2021-06-23 15:42:24 1lvvea-007r8u-VN H=localhost (<FQDN>) [::1]
F=<announce-bounces@<FQDN>> rejected after DATA: maximum allowed line length is 998 octets, got 1036
The email itself did not have such long lines AFAICT.
I can disable line length checking on the mailserver, but that sounds
like a recipe for the next one along to drop the email.
Peter C
I host two MLs on the same server/same MM3 instance.
Under the Django Admin interface, I created two sites. I expected that each
ML will belong to its own site and should not be visible on another site.
On
https://mm3-lists.kictanet.or.ke/mm/lists/
, you can see the two lists.
How do I stop the "Users" list from showing up on this site (
https://mm3-lists.kictanet.or.ke/mm/lists/
) since it belongs to its own
site -
https://exim4u.org/mm/lists/
?
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
]
hyperkitty: 1.3.8
We have several lists on our server, I will write down a list of example list names that are good enough for the purpose of my question.
xx(a)domain.tld <mailto:xx@domain.tld>
yy-xx(a)domain.tld <mailto:yy-xx@domain.tld>
zz-xx(a)domain.tld <mailto:zz-xx@domain.tld>
When I now visit the archives for xx(a)domain.tld <mailto:xx@domain.tld> and enter a search phrase in “search this list”, the results include the other 2 lists.
It looks like “search this list” searches for keyword in any listname that matches the one from "this list".
Is there a way to really only search “this list” when I go to the archives for xx(a)domain.tld <mailto:xx@domain.tld>?
I have tried to change the url for the results to have a ‘^’ in front of the listname, but that gives an error :-)
Thanks in advance!
Marco van Tol
I have a decades old list that was abandoned on my server. I upgraded it to mailman3 but it never came back to life. It is causing me some grief. I want to keep the archives up but totally disable any mail capabilities. I have turned off mail for the domain but I still get 'crap' that tries to relay. I've manually tried to remove stuff from the transport tables in Postfix but I still get mail. I'm not sure where the problem lies.
If I can't stop this I'll have to remove the list entirely which includes the archives. I really wish to leave the archives up. Any idea on how I can remove the mail capabilities and leave the rest?
Thank You.
Hi Everyone,
we have mailman 3.3.8 venv test installation which in general works fine however
our mysql error log is filled up with messages below because they are so frequent.
2023-02-24 0:31:30 199567 [Warning] Aborted connection 199567 to db: 'mailman' user: 'mailman' host: 'localhost' (Got an error reading communication packets)
2023-02-24 0:36:30 201063 [Warning] Aborted connection 201063 to db: 'mailman' user: 'mailman' host: 'localhost' (Got an error reading communication packets)
2023-02-24 0:41:31 202559 [Warning] Aborted connection 202559 to db: 'mailman' user: 'mailman' host: 'localhost' (Got an error reading communication packets)
2023-02-24 0:46:31 204056 [Warning] Aborted connection 204056 to db: 'mailman' user: 'mailman' host: 'localhost' (Got an error reading communication packets)
As suggested here
https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/thread/…
I tried to correlate with error logs and
/opt/mailman/web/logs/mailmanweb.log shows some
hyperkitty.lib.utils Failed to update the fulltext index: (2002, "Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock' (111)"
/opt/mailman/web/logs/uwsgi-error.log
Message: OperationalError(2013, "Lost connection to MySQL server at 'handshake: reading initial communication packet', sy
stem error: 104")
but they have not such frequency so unsure if they are related.
Thanks for the suggestions
This did also upgrade Mailman3 version 3.3.3 -> 3.3.8 as a used the
packages which came with Debian OS.
Initially after the upgrade I had some troubles with the MM3 services to
start, but I fixed this.
Now almost everything is running. Only the Archives are not working.
The browser shows a server error, when I look at the mailman-web.log I see
ERROR 2024-01-31 15:14:14,403 2699563 django.request Internal Server
Error: /mailman3/hyperkitty/
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/django/db/backends/utils.py",
line 84, in _execute
return self.cursor.execute(sql, params)
"/usr/lib/python3/dist-packages/django/db/backends/sqlite3/base.py",
line 423, in execute
return Database.Cursor.execute(self, query, params)
sqlite3.OperationalError: no such column:
hyperkitty_mailinglist.archive_rendering_mode
When I check the schema I find such a column in table "mailinglist"
I assume there is only one solution, to uninstall and delete everything
and start from scratch.
Or is there a way the check all tables with a script and do an table
update for missing columns ?
Or a partial installation of hyperkitty, as I don't care about the
archives.
I am using sqlite3 as DB backend.
Kind regards
End of last year, I've re-installed mailman3 using the virtualenv
installation method on ubuntu 20.04.
Since then, the transport map (/opt/mailman/mm/var/data/postfix_lmtp)
has not been updated even though, new mailing lists were created. The
old mailing lists, that existed before the re-installation work
perfectly fine but those created after are not accessible. Because the
entries for those new lists are missing in the transport map, postfix
replies with a "mail for ... loops back to myself" error.
I'm quite sure, that I did all the steps in the documentation (except
that I use a slightly different apache2 vhost configuration). I double
checked on the cronjobs.
crontab -u mailman -e
@daily /opt/mailman/venv/bin/mailman digests --periodic
@daily /opt/mailman/venv/bin/mailman notify
* * * * * /opt/mailman/venv/bin/mailman-web runjobs minutely
0,15,30,45 * * * * /opt/mailman/venv/bin/mailman-web runjobs quarter_hourly
@hourly /opt/mailman/venv/bin/mailman-web runjobs hourly
@daily /opt/mailman/venv/bin/mailman-web runjobs daily
@weekly /opt/mailman/venv/bin/mailman-web runjobs weekly
@monthly /opt/mailman/venv/bin/mailman-web runjobs monthly
@yearly /opt/mailman/venv/bin/mailman-web runjobs yearly
Any idea, what I could have missed???
Kind regards,
I recently found the "pipx" wrapper very useful and wanted to ask you if this could be facilitate the fresh installation of the mailman3-suite.
Has anyone in the list already experiences installing mailman and mailmanweg through "pipx"?
Here are my general tipps for using pipx
#
https://pipx.pypa.io/stable/installation/#on-linux
sudo apt install pipx python3-venv
To install a package systemwide for all users, I recommend the tip from
https://github.com/pypa/pipx/issues/754#issuecomment-951162846
.
sudo PIPX_HOME=/opt/pipx PIPX_BIN_DIR=/usr/local/bin pipx install <package>
I know this has been discussed in the past:
https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/thread/…
However, Google has recently announced that they will be enforcing one-click unsubscribe for bulk senders:
https://techcrunch.com/2023/10/03/gmail-to-enforce-harsher-rules-in-2024-to…
Thoughts?
Running an install on Debian12 VM. Getting a new error message that I
haven't seen previously:
(venv) mailman@debian12:~$ mailman-web compress
Compressing... Invalid template socialaccount/login_cancelled.html: Invalid
block tag on line 7: 'element', expected 'endblock'. Did you forget to
register or load this tag?
Invalid template account/verified_email_required.html: Invalid block tag on
line 7: 'element', expected 'endblock'. Did you forget to register or load
this tag?
Error parsing template socialaccount/signup.html: socialaccount/base.html
Compressed 2 block(s) from 78 template(s) for 1 context(s).
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
]
I think I have (finally) set up a working instance of mailman 3 on a
host separate from the companion postfix mail server actually sending
out the mails.
One server (postfix) is directly in the internet and the other one is in
an internal network not directly reachable from the internet (but
connected using a reverse proxy).
The services on the hosts are available to one another (i. e. the
postfix server is reachable using 127.0.0.1:25 from mailman and mailman
is reachable using 127.0.0.1:8024 from postfix using a permanent ssh
tunnel betwenn the two hosts).
I think that this solution could work quite reliably... (at least I hope
But that's not the full deal. Postfix needs access to some hashed
configuration files containing the transport maps and the domains of the
mailman installation, and mailman needs the contents of the postfix
configuration file.
As a quick and dirty solution, I've established a process which
periodically copies the /var/lib/mailman3 directory from the mailman box
to the postfix box using rsync.
But I would like to have a more professional solution, like a directly
shared directory between both.
I did not yet find any suggestions on how to achieve this. Are there any
best practices recommendations?
I already tried sharing the directories using sshfs, but that did not work.
I connected the remote directory postfix.example.com:/var/lib/mailman3
to my local directory /var/lib/mailman3 using
sshfs root@postfix.example.com:/var/lib/mailman3 /var/lib/mailman3
This seemed to work pretty fine, as all files and directories seemed to
be available, but when starting mailman 3, the following error message
was shown:
FileExistsError: A race condition might have happened. /var/lib/mailman3
actually exists and is not a directory.
Any idea why this message is shown?
So, is it a bad idea to use sshfs?
Do I have to install an NFS server? But I am not sure if sharing
directories using NFS across the Internet is a good idea...
Any suggestions?
Best regards
On Tue, Jan 23, 2024 at 4:22 AM Mark Labeste <marqueejen13(a)gmail.com> wrote:
> About 500 list. Not sure how to check size of the archives.
> On Thu, Jan 18, 2024 at 4:44 PM Odhiambo Washington <odhiambo(a)gmail.com>
> wrote:
>> On Thu, Jan 18, 2024 at 8:49 AM Mark Labeste <marqueejen13(a)gmail.com>
>> wrote:
>>> Any suggestion on how to migrate mailing list and archirve with
>>> diffirent server and domain. For the mailing list from
>>>
sample.domain1.example.com
to
sample.domain2.example.com
>>> Old Mailing list
>>> Mailman Core Version GNU Mailman 3.3.5 (Tom Sawyer)
>>> Mailman Core API Version 3.1
>>> Mailman Core Python Version 3.6.8 (default, Sep 26 2019, 11:57:09)
>>> [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]
>>> Domain
Domain1.example.com
>>> New Mailing list
>>> Mailman Core Version GNU Mailman 3.3.9 (Tom Sawyer)
>>> Mailman Core API Version 3.1
>>> Mailman Core Python Version 3.9.18 (main, Sep 22 2023, 17:58:34)
>>> [GCC 8.5.0 20210514 (Red Hat 8.5.0-20)]
>>> Domain
domain2.example.com
>> How many lists? How big are the archives?
>> Looking at
>>
https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/thread/…
,
>> it seems like it's not a trivial exercise.
>> However, I am wondering about the consequences of:
>> 1. dumping the DBs and doing 's/DOMAIN1/DOMAIN2/g' in the dumps, then
>> re-importing
>> 2. editing settings.py and webserver config to reflect the DOMAIN2
>> 3. reconfiguring your MTA to handle list mails using the DOMAIN2
>> I am imagining a virtualenv type of installation.
The archives are in the database so nothing to worry about,
Now that I think about this again, after dumping and importing the database
as shown above, you need to rerun the 'mailman-web migrate` once again to
import any DB schema changes between the versions.
Actually, just run all the options from
https://docs.mailman3.org/en/latest/install/virtualenv.html#run-database-mi…
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
]
I noticed that our smtp.log and bounce.log files haven't been rotated in
years. I see the reason for smtp.log not being rotated is due to
<
https://gitlab.com/mailman/mailman/-/issues/931
>. Does this same issue
affect bounce.log or is it safe to rotate similar to mailman.log?
Hello,
Is there a way to extract all the lists and show the administrators who manage those lists?
Thanks!
So next issue post upgrade:
I sent three emails to one of the lists today. All of them went to the
list, as I got copies of each one, and the headers clearly show them coming
from the list.
However, when I go look at the archives for the list, they don't show up at
all. And it's been over 8 hours since I sent them.
--Quanah
Hi together,
I´m using Mailman3.3.9 and postfix in docker containers seperatly. Everything worked fine since this afternoon.
The error occurs, after postfix transports an incoming mail to mailman. After processing the mail, sending to all recepients failed
>> Delivery to mail(a)domain.tld failed with code 444, [Errno 111] Connection refused
I checked the configuration of postfix and added a wide IP-range to mynetworks:
postfix-main.cf
mynetworks = mailman-core tgc_mailman_core t 127.0.0.0/8 [::1]/128 [fe80::]/64 172.18.0.0/16 172.21.0.0/16 [2001:8d8:1800:283]/64 172.0.0.0/24
relay_domains = $mydestination
#smtpd_sender_restrictions = reject_unknown_sender_domain,reject_unknown_reverse_client_hostname
smtpd_sender_restrictions = reject_unknown_sender_domain
smtpd_relay_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
smtpd_recipient_restrictions = permit_sasl_authenticated check_recipient_access hash:/etc/postfix/filtered_domains permit_mynetworks reject_unauth_destination
smtpd_data_restrictions = reject_unauth_pipelining
Does anyone have a clue for me as to why delivery to Postfix is failing?
My last change a couple of days ago was adding an public ipv6-address to the host. But docker still works without IPv6. I thought about client-identification issues between maiolman-core and postfix but did noch find anything to fix ...
Best regards,
Christopher
Hey there, I'm still trying to figure out, how to move a bunch of lists
from one mm3-instance to another. If somebody has a working solution, I
would be really glad to hear from it.
I came across this thread, but I don't think it tackles my question:
https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/thread/…
(or maybe I missed the right parts)
We have equal setups and versions:
- maxxking docker install 0.4.5
- Core 3.3.8
- API 3.1
- Postorius 1.3.8
## Config
So I found the possibility to get the config of a list via REST-API:
curl -u restadmin:restpass
localhost:8001/3.1/lists/$short.$domain/config | jq > short.domain
This is a nice collection of the configuration of a certain list. Does
anybody know how I would get this data back to the newly created list in
the second working mm3-instance? Shouldn't it be possible via POST
command? I thought of something like:
curl -u restadmin:restpass -d @short.domain -H "Content-Type:
application/json" localhost:8001/3.1/lists/&short.&domain/config
But it returns {"title": "405 Method Not Allowed"} and I don't know
where to look in the docs, since it shows almost always a way through
mailman shell.
Here I found something about POST:
https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/rest/docs/…
-> but how would it work exactly?
## Members, moderators, owners
To export all members I normally run within mm-core-container as user
mailman the following command:
mailman members &short.&domain > &short.txt
To fill them back in, it can be done in Postorius (or is there a way
through API?).
What I would love to know is how to get out Owners of the corresponding
lists and reimport them in the new one (which will be the same at the
end :-D but different instance).
## registered users
This part is somehow tricky, since I have no clue how to do it. Some of
the mailinglist-admins don't want to bother their list-owners again with
registering newly on the other system. Is there a way to export all
users (I think I found them in the DB in the table auth_users, somehow
in combination with account_emailaddress) and get them over to the new
instance (actually I just need part of them, but that's another question
that I might solve lateron on my own).
Maybe the answer is already here:
https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/rest/docs/…
-> but can somebody help to get this working (import/export)?
Thank you in advance, I hope it's not too much or too nooby :-) Jens.
Now everyone's having their addresses disabled due to "bounce" errors.
This is odd, because I'm disabled, even though I received the 2 emails I
sent to the list today (and that's the only list traffic today).
I used the mailman shell command from
<
https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/thread/…
>
to see who has been disabled. I had to make one fix to it, it should be
m.list_name not mlist.list_name.
Confirmed that dozens of valid users have had their sub disabled.
In the logs I see:
Jan 18 19:25:17 2024 (952) Member quanah(a)fast-mail.org on list
openldap-technical.openldap.org
, bounce score = 1.
Jan 18 19:37:11 2024 (952) Member quanah(a)fast-mail.org on list
openldap-technical.openldap.org
, bounce score = 2.
Jan 18 19:37:11 2024 (952) Disabling delivery for quanah(a)fast-mail.org on
list
openldap-technical.openldap.org
by bounce
Jan 18 19:37:11 2024 (952) Member quanah(a)fast-mail.org on list
openldap-technical.openldap.org
, bounce score 2 >= threshold 2, disabling
delivery.
Jan 18 10:05:42 2024 (938) Peer: ('127.0.0.1', 36100)
Jan 18 10:05:42 2024 (938) ('127.0.0.1', 36100) handling connection
Jan 18 10:05:42 2024 (938) ('127.0.0.1', 36100) Data: b'LHLO
hypatia.openldap.org
'
Jan 18 10:05:42 2024 (938) ('127.0.0.1', 36100) Data: b'MAIL
FROM:<openldap-commit-bounces(a)openldap.org>'
Jan 18 10:05:42 2024 (938) ('127.0.0.1', 36100) sender:
openldap-commit-bounces(a)openldap.org
Jan 18 10:05:42 2024 (938) ('127.0.0.1', 36100) Data: b'RCPT
TO:<openldap-commit-owner(a)openldap.org>'
Jan 18 10:05:42 2024 (938) ('127.0.0.1', 36100) recip:
openldap-commit-owner(a)openldap.org
Jan 18 10:05:42 2024 (938) ('127.0.0.1', 36100) Data: b'DATA'
Jan 18 10:05:42 2024 (938) ('127.0.0.1', 36100) Data: b'QUIT'
Jan 18 10:05:42 2024 (938) ('127.0.0.1', 36100) connection lost
Jan 18 10:05:42 2024 (938) Connection lost during _handle_client()
Jan 18 10:05:45 2024 (940)
<170557233590.937.7274928299237969540(a)hypatia.openldap.org> post to
openldap-commit(a)openldap.org from openldap-commit-owner(a)openldap.org, 20265
bytes
Jan 18 10:42:20 2024 (803)
<170557453971.798.17359529178123532376(a)hypatia.openldap.org> low level smtp
error: [Errno 111] Connection refused
Jan 18 10:42:20 2024 (803)
<170557453971.798.17359529178123532376(a)hypatia.openldap.org> delivery to
quanah(a)openldap.org failed with code 444, [Errno 111] Connection refused
But... postfix is working fine, and I've had hundreds of emails generated
*by* mailman about it disabling people due to bounces.
Thoughts on how to proceed appreciated.
Regards,
Quanah
I'm trying to set up mailman3 on two hosts, one of which runs core +
exim, the other runs postorius (&possibly hyperkitty).
I have I think got core set up correctly, and postorius is sort of
usable, but anything in the web ui that talks to core ends up with a
white screen.
I think what is happening is a postorius URL ends up with the core (or
perhaps no) hostname, and as there's nothing there to answer it fails.
I've checked the settings and I don't think I have misconfigured
postorius. Is it possible that the bad url is being passed from core to
postorius in some way and reused without changing the host?
In the config at present, both hosts are visible to the browser, and
each host can communicate with the other.
Any ideas on how to pin down the problem better?
Any suggestion on how to migrate mailing list and archirve with diffirent server and domain. For the mailing list from
sample.domain1.example.com
to
sample.domain2.example.com
Old Mailing list
Mailman Core Version GNU Mailman 3.3.5 (Tom Sawyer)
Mailman Core API Version 3.1
Mailman Core Python Version 3.6.8 (default, Sep 26 2019, 11:57:09) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]
Domain
Domain1.example.com
New Mailing list
Mailman Core Version GNU Mailman 3.3.9 (Tom Sawyer)
Mailman Core API Version 3.1
Mailman Core Python Version 3.9.18 (main, Sep 22 2023, 17:58:34) [GCC 8.5.0 20210514 (Red Hat 8.5.0-20)]
Domain
domain2.example.com
In a few days my current domain will be disabled (it is out of my control)
and I would like to know how to migrate the mailing lists to the new domain
name.
As a solution I added a new domain in mailman 3 and created a script that
replicates the lists in this new domain. To forward the emails received by
the old lists, the script removes the members and adds the email of the new
list.
Is there a fashionable way to do that?
Also, one problem that I don't have a solution is the archive of the old
lists. How to bring them to the new ones?
Thanks for your help.
My mailing list server is running on a CenOS-7x with postgreSQL and the
following mailman packages:
Package Version
------------------- ----------
1 aiosmtpd 1.2.4
2 alembic 1.5.3
3 arrow 0.17.0
4 asgiref 3.3.1
5 atpublic 2.1.2
6 authheaders 0.13.0
7 authres 1.2.0
8 bleach 3.3.0
9 blessed 1.17.12
10 certifi 2020.12.5
11 cffi 1.14.4
12 chardet 4.0.0
13 click 7.1.2
14 cmarkgfm 0.5.2
15 cryptography 3.3.1
16 decorator 4.4.2
17 defusedxml 0.6.0
18 Django 3.0.12
19 django-allauth 0.44.0
20 django-appconf 1.0.4
21 django-compressor 2.4
22 django-extensions 3.1.0
23 django-gravatar2 1.4.4
24 django-haystack 3.0
25 django-mailman3 1.3.5
26 django-picklefield 3.0.1
27 django-q 1.3.4
28 djangorestframework 3.12.2
29 dkimpy 1.0.5
30 dnspython 2.1.0
31 docutils 0.16
32 falcon 2.0.0
33 flufl.bounce 3.0.1
34 flufl.i18n 2.0.2
35 flufl.lock 3.2
36 gunicorn 20.0.4
37 HyperKitty 1.3.3
38 idna 2.10
39 importlib-resources 5.1.0
40 lazr.config 2.2.3
41 lazr.delegates 2.0.4
42 mailman 3.3.2
43 mailman-hyperkitty 1.1.0
44 mailman-web 0.0.3
45 mailmanclient 3.3.2
46 Mako 1.1.4
47 MarkupSafe 1.1.1
48 networkx 2.5
49 nose 1.3.7
50 oauthlib 3.1.0
51 packaging 20.9
52 passlib 1.7.4
53 pip 21.0.1
54 postorius 1.3.3
55 psycopg2-binary 2.8.6
56 publicsuffix2 2.20191221
57 pycparser 2.20
58 Pygments 2.7.4
59 PyJWT 2.0.1
60 pyparsing 2.4.7
61 python-dateutil 2.8.1
62 python-editor 1.0.4
63 python3-openid 3.2.0
64 pytz 2021.1
65 rcssmin 1.0.6
66 readme-renderer 28.0
67 requests 2.25.1
68 requests-oauthlib 1.3.0
69 rjsmin 1.1.0
70 robot-detection 0.4
71 setuptools 39.2.0
72 six 1.15.0
73 SQLAlchemy 1.3.23
74 sqlparse 0.4.1
75 typing-extensions 3.7.4.3
76 urllib3 1.26.3
77 uWSGI 2.0.19.1
78 wcwidth 0.2.5
79 webencodings 0.5.1
80 wheel 0.36.2
81 Whoosh 2.7.4
82 zipp 3.4.0
83 zope.component 4.6.2
84 zope.configuration 4.4.0
85 zope.deferredimport 4.3.1
86 zope.deprecation 4.4.0
87 zope.event 4.5.0
88 zope.hookable 5.0.1
89 zope.i18nmessageid 5.0.1
90 zope.interface 5.2.0
91 zope.proxy 4.3.5
92 zope.schema 6.0.1
-- Carlos Souza
Recently a mail was not being distributed via our MM3 instance; I searched the logs and found:
Dec 22 04:54:27 2023 (24) ACCEPT: <1d431542-b386-467b-8bf2-305f19ee7eb4(a)somenet.org>
Dec 22 04:54:28 2023 (28) Uncaught runner exception: list index out of range
Dec 22 04:54:28 2023 (28) Traceback (most recent call last):
File "/usr/lib/python3.10/site-packages/mailman/core/runner.py", line 179, in _one_iteration
self._process_one_file(msg, msgdata)
File "/usr/lib/python3.10/site-packages/mailman/core/runner.py", line 272, in _process_one_file
keepqueued = self._dispose(mlist, msg, msgdata)
File "/usr/lib/python3.10/site-packages/mailman/runners/pipeline.py", line 37, in _dispose process(mlist, msg, msgdata, pipeline)
File "/usr/lib/python3.10/site-packages/mailman/core/pipelines.py", line 53, in process
handler.process(mlist, msg, msgdata)
File "/usr/lib/python3.10/site-packages/mailman/handlers/validate_authenticity.py", line 125, in process
authenticate(msg, msgdata)
File "/usr/lib/python3.10/site-packages/mailman/utilities/retry.py", line 44, in f_retry
return f(*args, **kwargs)
File "/usr/lib/python3.10/site-packages/mailman/handlers/validate_authenticity.py", line 93, in authenticate
auth_result = authenticate_message(
File "/usr/lib/python3.10/site-packages/authheaders/__init__.py", line 395, in authenticate_message
dmarc_result = check_dmarc(msg, spf_result, dkim_result, dnsfunc=dnsfunc, psddmarc=psddmarc)
File "/usr/lib/python3.10/site-packages/authheaders/__init__.py", line 343, in check_dmarc
result, result_comment, from_domain, policy = dmarc_per_from(from_domain, spf_result, dkim_result, dnsfunc, psddmarc)
File "/usr/lib/python3.10/site-packages/authheaders/__init__.py", line 90, in dmarc_per_from
record, orgdomain = receiver_record(from_domain)
File "/usr/lib/python3.10/site-packages/authheaders/dmarc_lookup.py", line 117, in receiver_record
retval = lookup_receiver_record(hostSansDmarc, dnsfunc)
File "/usr/lib/python3.10/site-packages/authheaders/dmarc_lookup.py", line 92, in lookup_receiver_record
tags = answer_to_dict(str(result))
File "/usr/lib/python3.10/site-packages/authheaders/dmarc_lookup.py", line 42, in answer_to_dict
retval = {t[0].strip().lower(): t[1].strip().lower() for t in rawTags}
File "/usr/lib/python3.10/site-packages/authheaders/dmarc_lookup.py", line 42, in <dictcomp>
retval = {t[0].strip().lower(): t[1].strip().lower() for t in rawTags}
IndexError: list index out of range
Dec 22 04:54:28 2023 (28) SHUNTING: 1703220868.1418982+b27f5db154375fcd2c418d467172e4aad0d3d57a
So the message has been shunted, due to this error. Something with
DMARC and tags. So I checked the DMARC record for the sending domain
somenet.org
. It is "v=DMARC1;p=none;pct=100;rua=mailto:postmaster@somenet.org;mailto:postmaster@somenet.org;ri=3600;fo=1;"
which is syntactically incorrect. The extra ";mailto:postmaster@somenet.org" is wrong, I guess the tag "ruf=" is missing here!
It should probably read "v=DMARC1;p=none;pct=100;rua=mailto:postmaster@somenet.org;ruf=mailto:postmaster@somenet.org;ri=3600;fo=1;"
So, should mm3 somehow "catch" this error somehow?
According to the DMARC specs, an syntactically incorrect DMARC record
should be ignored / handled as if none were present.
Ralf Hildebrandt
Charité - Universitätsmedizin Berlin
Geschäftsbereich IT | Abteilung Netz | Netzwerk-Administration
Invalidenstraße 120/121 | D-10115 Berlin
Tel. +49 30 450 570 155
ralf.hildebrandt(a)charite.de
https://www.charite.de
MM3 installed today using the virtualenv method.
On my testbench, I am having this strange issue where the Postorius is not
displaying correctly perhaps because of some CSS issue - or just my own
hangovers!
I have used the standard method as documented.
The error I get:
https://pastebin.ubuntu.com/p/dhvsHFG4jH/
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
]
I have a problem with my Mailman 3-setup. The symptom is that postfix
rejects non-existing addresses for my list domains with
<adr(a)example.com>: mail for
example.com
loops back to myself
What I guess happens happens is that postfix for some reason accepts
the mail as it is for a relay domain and finds that it is not
deliverable locally as the address does not exist locally and then
tries to relay it on to the appropriate MX server, which is itself and
then fails and generates a bounce message.
This is a bit annoying as I have set up postfix to only accept valid
addresses. I have set the transport_maps, local_recipient_maps and
relay_domains to the files generated by MM3. I run an older version of
MM3 (3.0) but prefer to fix this without upgrading as upgrading is a
relatively big undertaking.
This is mostly a backscatter problem for spam I guess.
Any ideas of very simple and easy to forget things that I've probably missed?
Cheers
// David
Reply-To set to Mailman Developers. Please check that your replies go
there. Or you can comment on MRs directly if you have a GitLab login.
I have three merge requests pending:
[1]
https://gitlab.com/mailman/mailman/-/merge_requests/1159
[2]
https://gitlab.com/mailman/mailman/-/merge_requests/1160
[3]
https://gitlab.com/mailman/mailman/-/merge_requests/1161
[1] fixes the logging initialization bug that prevented the `smtp` log
from rotating properly, and maybe some others. I don't think it needs
user review because it's a pure bugfix, but if you're curious and take
a look, and you think it needs better documentation let me know.
[2] adds a configuration variable `lmtp_max_size`. This is
user-visible, so review of the documentation in docs/mta.rst and
config/mailman.cfg for clarity and readability would be appreciated.
[3] adds postfix-pgsql support for use of the PostgreSQL database to
route Mailman traffic. It's really most useful in an edge case
(migration of 10,000+ list Mailman 2 instances), but it's
theoretically attractive on the principle of "single source of truth",
and possibly for implementing a "microservices" style cloud instance
(it eliminates the need for Mailman and Postfix to share a file
system). Besides opinions on the value of the general idea I have two
specific questions:
- Postfix docs recommend not looking up domains in the database to
reduce load on the database server. But on a dedicated Mailman
system, you're going to be looking up pretty much everything twice
anyway (once to check for local recipient and once to fetch the
transport), and my experience so far is that this isn't a big load
on Postgres, and it's not a drag on list traffic distribution.
Should I implement domain lookup in Postgres? Should it be
optional if the lists are being looked up in Postgres?
- The current patch completely disables generation of the
postfix_lmtp alias file, even for the `mailman aliases` command.
Should I implement an option to force generation of the files for
documentation (and maybe a backup in a very rare and contorted
situation where Mailman can see Postgres but Postfix can't)?
Thanks,
Steve
I currently have a docker mailman stack that utilizes Django LDAP backend for authentication. I have my users attributes mapped as you see below in my settings.py file. Whenever a user logs into postorius with their 'uid', mailman-core uses their 'uid' as their email address instead of the 'email' attribute. Is there anyway to change this functionality? I would like my users to be able to login with their enterprise uid but be mapped to their email but I feel like there is a disconnect between Django and MM3 core. Any assistance is much appreciated.
AUTH_LDAP_USER_ATTR_MAP = {
"uid" : "userPrincipalName",
"first_name": "givenName",
"last_name": "sn",
"email" : "mail",
I've got the problem Multiple rows were found when one or none was
required. I found the issue and a script here:
https://gitlab.com/mailman/mailman/-/issues/657
I did su - mailman3 and ran:
python scriptname.py
and got:
Traceback (most recent call last):
File "/opt/mailman3/fix-doubled-entries.py", line 21, in <module>
listmgr = get_list_manager()
^^^^^^^^^^^^^^^^^^
File "/opt/mailman3/fix-doubled-entries.py", line
6, in get_list_manager
return getUtility(IListManager)
^^^^^^^^^^^^^^^^^^^^^^^^
"/opt/mailman3/venv/lib64/python3.11/site-packages/zope/component/_api.py
", line 180, in getUtility
raise ComponentLookupError(interface, name)
zope.interface.interfaces.ComponentLookupError: (<InterfaceClass
mailman.interfa
ces.listmanager.IListManager>, '')
(venv) 1[mailman3@dalen ~]$
Do I miss something? How can I fix the problem?
Thanks, Lars
I am now importing the archives of my old mailman2 installation.
Unfortunately, with some of the larger and older lists, import fails
halfway through, with an exception, the last message of which is
IndexError: list index out of range
Below is an example.
This means that the last few years are missing from the archive in
several lists.
Are there any suggestions what I could do to still get them importet?
Thanks!
Johannes
File "/usr/lib/python3.8/email/_header_value_parser.py", line 2069,
in get_msg_id
token, value = get_dot_atom_text(value)
File "/usr/lib/python3.8/email/_header_value_parser.py", line 1334,
in get_dot_atom_text
raise errors.HeaderParseError("expected atom at a start of "
email.errors.HeaderParseError: expected atom at a start of dot-atom-text
but found '@localhost>'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/mailman/venv/bin/mailman-web", line 8, in <module>
sys.exit(main())
"/opt/mailman/venv/lib/python3.8/site-packages/mailman_web/manage.py",
line 37, in main
execute_from_command_line(sys.argv)
"/opt/mailman/venv/lib/python3.8/site-packages/django/core/management/__init__.py",
line 446, in execute_from_command_line
utility.execute()
"/opt/mailman/venv/lib/python3.8/site-packages/django/core/management/__init__.py",
line 440, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
"/opt/mailman/venv/lib/python3.8/site-packages/django/core/management/base.py",
line 402, in run_from_argv
self.execute(*args, **cmd_options)
"/opt/mailman/venv/lib/python3.8/site-packages/django/core/management/base.py",
line 448, in execute
output = self.handle(*args, **options)
"/opt/mailman/venv/lib/python3.8/site-packages/hyperkitty/management/commands/hyperkitty_import.py",
line 387, in handle
importer.from_mbox(mbfile, report_name)
"/opt/mailman/venv/lib/python3.8/site-packages/hyperkitty/management/commands/hyperkitty_import.py",
line 212, in from_mbox
progress_marker.tick(unquote(message.get("message-id", 'n/a')))
File "/usr/lib/python3.8/email/message.py", line 471, in get
return self.policy.header_fetch_parse(k, v)
File "/usr/lib/python3.8/email/policy.py", line 163, in
header_fetch_parse
return self.header_factory(name, value)
File "/usr/lib/python3.8/email/headerregistry.py", line 607, in __call__
return self[name](name, value)
File "/usr/lib/python3.8/email/headerregistry.py", line 202, in __new__
cls.parse(value, kwds)
File "/usr/lib/python3.8/email/headerregistry.py", line 535, in parse
kwds['parse_tree'] = parse_tree = cls.value_parser(value)
File "/usr/lib/python3.8/email/_header_value_parser.py", line 2126,
in parse_message_id
token, value = get_msg_id(value)
File "/usr/lib/python3.8/email/_header_value_parser.py", line 2073,
in get_msg_id
token, value = get_obs_local_part(value)
File "/usr/lib/python3.8/email/_header_value_parser.py", line 1516,
in get_obs_local_part
if (obs_local_part[0].token_type == 'dot' or
IndexError: list index out of range
As a moderator I receive an email each day for "Held Unsubscriptions"
for a subscriber that was unsubscribed by the Owner sometime ago (using
"Mass operations").
+++++++++++++++++++++++++++++++
The listname(a)domain.com list has 1 moderation requests waiting.
Held Unsubscriptions:
User: bart(a)example.com
Please attend to this at your earliest convenience.
+++++++++++++++++++++++++++++++
There is nothing showing under "Subscription requests > Pending
approval".
Could anyone tell me how I can stop these email notifications? I have
access to the mailman shell and the databases.
Thanks,
From mailman web it was able to deliver the email to outlook and gmail but when replying or confirming subcription it can't reach the mailman.
This error is bounce back from outlook.
Server at
destination.email.com
(192.10.10.10) returned '400 4.4.7 Message delayed'
1/4/2024 12:16:13 PM - Server at
destination.email.com
(192.10.10.10) returned '451 4.4.397 Error communicating with target host. -> 421 4.2.1 Unable to connect -> SocketTimedout: Socket error code 10060
Thanks,
We use a custom plugin to do numeric thread stamping, which has been working well in the code system.
However, it was discovered by Microsoft that Microsoft Outlook and OWA prioritize the Thread-Topic header over the Subject header, which results in the oddness we've experienced in MS365 clients in testing.
During our tasks though a custom handler goes through during the pipeline and modifies the Subject field accordingly, adding a thread tag to it. While this is 'fragile' it does work; the only problem is that Thread-Topic doesn't get altered.
Programmatically, how would we alter the Thread-Topic during the handler's processing to prepend the corresponding prefix/tag so that when the message actually goes out the door it is properly sending with the modified Thread-Topic?
Thomas
Does Mailman 3 have an REST API that allows list-owners/moderators to perform list-management functions without having access to the whole server/other lists etc?
ie, an API that uses the same credentials as Postorious but allows mass-subscription/un-subscription/membership-export etc and changes to list settings, membership settings (mod etc) via REST or python?
The documentation seems to only indicate a single one-admin-user REST API that should not even be accessible from outside?
So we host a mailing list for domain X, the MX record points to us, we are domain y.
If we have Dmarc set to "no dmarc mitigations" I can send a message from my email in domain Y and it goes to the list in domain x and is processed and sent out.
If I set the dmarc to "replace with list address". the same message gets shunted. I included the logs below
Not sure why it is trying to contact publicsuffix.org?
************* /mailman/core/var/logs/mailman.log
Jan 02 20:41:50 2024 (29) No cached copy of the public suffix list found
Jan 02 20:41:55 2024 (29) Uncaught runner exception: HTTPSConnectionPool(host='
publicsuffix.org
', port=443): Max retries exceeded with url: /list/public_suffix_list.dat (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x7f8b38d318a0>, 'Connection to
publicsuffix.org
timed out. (connect timeout=5)'))
Jan 02 20:41:55 2024 (29) Traceback (most recent call last):
File "/usr/lib/python3.10/site-packages/urllib3/connection.py", line 174, in _new_conn
conn = connection.create_connection(
File "/usr/lib/python3.10/site-packages/urllib3/util/connection.py", line 95, in create_connection
raise err
File "/usr/lib/python3.10/site-packages/urllib3/util/connection.py", line 85, in create_connection
sock.connect(sa)
TimeoutError: timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.10/site-packages/urllib3/connectionpool.py", line 703, in urlopen
httplib_response = self._make_request(
File "/usr/lib/python3.10/site-packages/urllib3/connectionpool.py", line 386, in _make_request
self._validate_conn(conn)
File "/usr/lib/python3.10/site-packages/urllib3/connectionpool.py", line 1042, in _validate_conn
conn.connect()
File "/usr/lib/python3.10/site-packages/urllib3/connection.py", line 358, in connect
self.sock = conn = self._new_conn()
File "/usr/lib/python3.10/site-packages/urllib3/connection.py", line 179, in _new_conn
raise ConnectTimeoutError(
urllib3.exceptions.ConnectTimeoutError: (<urllib3.connection.HTTPSConnection object at 0x7f8b38d318a0>, 'Connection to
publicsuffix.org
timed out. (connect timeout=5)')
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.10/site-packages/requests/adapters.py", line 489, in send
resp = conn.urlopen(
File "/usr/lib/python3.10/site-packages/urllib3/connectionpool.py", line 787, in urlopen
retries = retries.increment(
File "/usr/lib/python3.10/site-packages/urllib3/util/retry.py", line 592, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='
publicsuffix.org
', port=443): Max retries exceeded with url: /list/public_suffix_list.dat (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x7f8b38d318a0>, 'Connection to
publicsuffix.org
timed out. (connect timeout=5)'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.10/site-packages/mailman/core/runner.py", line 179, in _one_iteration
self._process_one_file(msg, msgdata)
File "/usr/lib/python3.10/site-packages/mailman/core/runner.py", line 272, in _process_one_file
keepqueued = self._dispose(mlist, msg, msgdata)
File "/usr/lib/python3.10/site-packages/mailman/runners/incoming.py", line 80, in _dispose
process(mlist, msg, msgdata, start_chain)
File "/usr/lib/python3.10/site-packages/mailman/core/chains.py", line 57, in process
if link.rule.check(mlist, msg, msgdata):
File "/usr/lib/python3.10/site-packages/mailman/rules/dmarc.py", line 316, in check
if maybe_mitigate(mlist, address):
File "/usr/lib/python3.10/site-packages/mailman/rules/dmarc.py", line 292, in maybe_mitigate
org_dom = get_organizational_domain(from_domain)
File "/usr/lib/python3.10/site-packages/mailman/rules/dmarc.py", line 142, in get_organizational_domain
parse_suffix_list()
File "/usr/lib/python3.10/site-packages/mailman/rules/dmarc.py", line 109, in parse_suffix_list
filename = ensure_current_suffix_list()
File "/usr/lib/python3.10/site-packages/mailman/rules/dmarc.py", line 77, in ensure_current_suffix_list
content = get(config.dmarc.org_domain_data_url)
File "/usr/lib/python3.10/site-packages/mailman/utilities/protocols.py", line 39, in get
response = requests.get(url, timeout=REQUEST_TIMEOUT, **kws)
File "/usr/lib/python3.10/site-packages/requests/api.py", line 73, in get
return request("get", url, params=params, **kwargs)
File "/usr/lib/python3.10/site-packages/requests/api.py", line 59, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/lib/python3.10/site-packages/requests/sessions.py", line 587, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python3.10/site-packages/requests/sessions.py", line 701, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python3.10/site-packages/requests/adapters.py", line 553, in send
raise ConnectTimeout(e, request=request)
requests.exceptions.ConnectTimeout: HTTPSConnectionPool(host='
publicsuffix.org
', port=443): Max retries exceeded with url: /list/public_suffix_list.dat (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x7f8b38d318a0>, 'Connection to
publicsuffix.org
timed out. (connect timeout=5)'))
Jan 02 20:41:55 2024 (29) SHUNTING: 1704228115.0417743+619bfacfe7e6d030991468aa2707d065418c56e5
I don't know how many people will need this, but I just realized that
you can edit Django's SITE 1 and (probably, 100% untested but I'm
going on the clock so want to get this done quick :-) use that.
When you add your first domain, there's a link in that page (not a
button, a link!) to edit the domain list. Then you can click on the
link to "
example.org
" in the list, and edit both display name (which I
assumed) and the domain name.
Maybe I'm just slow, but I've been adding SITE 2 = "Whatever site
<whatever.tld>" the whole time. :-) But then you have to edit the
SITE = 1 statement in settings.py (which I often forget and hilarity
ensues).
Of course adding a web site and editing settings.py (which you have to
do anyway for other variables) works too, but this seems cleaner to
Steve
When I try to edit any list at
"postorius/lists/LISTNAME.SUBDOMAIN.DOMAIN.TLD/", I get this error. The
lists are displayed correctly at "postorius/lists/".
Selecting any of those lists leads to that error. First step of creating
a new list is possible but I get the same error right after the creation
of the new list.
These lines in the mailman.log seem suspicious:
Dec 29 11:59:30 2023 (6255) 127.0.0.1 - - "GET
/3.1/lists/testliste.lists.DOMAIN.TLD/member/USERNAME%40DOMAIN.TLD
HTTP/1.1" *404* 26
Dec 29 11:59:30 2023 (6255) 127.0.0.1 - - "GET
/3.1/users/fa17aa7aa1e946b6a72706b48ddbc14b/preferred_address HTTP/1.1"
*404* 26
Dec 29 11:59:30 2023 (6255) 127.0.0.1 - - "POST
/3.1/users/fa17aa7aa1e946b6a72706b48ddbc14b/preferred_address HTTP/1.1"
*404* 26
Mailman Core Version GNU Mailman 3.2.2 (La Villa Strangiato)
Mailman Core API Version 3.1
Mailman Core Python Version 3.10.12 (main, Nov 20 2023, 15:14:05)
[GCC 11.4.0]
Postorius Version 1.3.5
Here are the full logs of this event:
mailman3/web/mailman-web.log
ERROR 2023-12-29 11:59:30,571 2416033 postorius Un-handled exception:
HTTP Error 404: {"title": "404 Not Found"}
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/django/core/handlers/base.py",
line 181, in _get_response
response = 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/postorius/views/generic.py",
line 74, in dispatch
return super(MailingListView, self).dispatch(request, *args, **kwargs)
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/postorius/views/list.py", line
301, in get
primary_email = set_preferred(request.user, mm_user)
File "/usr/lib/python3/dist-packages/postorius/utils.py", line 77, in
set_preferred
mm_user.preferred_address = primary_email.email
"/usr/lib/python3/dist-packages/mailmanclient/restobjects/user.py", line
57, in __setattr__
super(User, self).__setattr__(name, value)
File "/usr/lib/python3/dist-packages/mailmanclient/restbase/base.py",
line 131, in __setattr__
return super(RESTObject, self).__setattr__(name, value)
"/usr/lib/python3/dist-packages/mailmanclient/restobjects/user.py", line
145, in preferred_address
response, content = self._connection.call(url, {'email': email})
"/usr/lib/python3/dist-packages/mailmanclient/restbase/connection.py",
line 160, in call
raise HTTPError(params.get('url'), response.status_code,
urllib.error.HTTPError: HTTP Error 404: {"title": "404 Not Found"}
WARNING 2023-12-29 11:59:30,580 2416033 django.request Not Found:
/postorius/lists/testliste.lists.DOMAIN.TLD/
WARNING 2023-12-29 11:59:30,580 2416033 django.request Not Found:
/postorius/lists/testliste.lists.DOMAIN.TLD/
[pid: 2416033|app: 0|req: 9/9] 2003:ca:bf1d:b000:efc2:8dfa:6fd:715f ()
{72 vars in 1618 bytes} [Fri Dec 29 11:59:30 2023] GET
/postorius/lists/testliste.lists.DOMAIN.TLD/ => generated 6285 bytes in
466 msecs (HTTP/1.1 404) 7 headers in 227 bytes (1 switches on core 0)
mailman3/mailman.log
Dec 29 11:59:30 2023 (6255) 127.0.0.1 - - "GET
/3.1/lists/testliste.lists.DOMAIN.TLD HTTP/1.1" 200 384
Dec 29 11:59:30 2023 (6255) 127.0.0.1 - - "GET
/3.1/lists/testliste.lists.DOMAIN.TLD/roster/owner HTTP/1.1" 200 640
Dec 29 11:59:30 2023 (6255) 127.0.0.1 - - "GET
/3.1/lists/testliste.lists.DOMAIN.TLD/roster/moderator HTTP/1.1" 200 90
Dec 29 11:59:30 2023 (6255) 127.0.0.1 - - "GET
/3.1/lists/testliste(a)lists.DOMAIN.TLD/config HTTP/1.1" 200 2132
Dec 29 11:59:30 2023 (6255) 127.0.0.1 - - "GET
/3.1/lists/testliste.lists.DOMAIN.TLD/archivers HTTP/1.1" 200 61
Dec 29 11:59:30 2023 (6255) 127.0.0.1 - - "GET
/3.1/lists/testliste(a)lists.DOMAIN.TLD/requests?request_type=subscription
HTTP/1.1" 200 90
Dec 29 11:59:30 2023 (6255) 127.0.0.1 - - "GET
/3.1/lists/testliste.lists.DOMAIN.TLD/member/USERNAME%40DOMAIN.TLD
HTTP/1.1" 404 26
Dec 29 11:59:30 2023 (6255) 127.0.0.1 - - "GET
/3.1/users/fa17aa7aa1e946b6a72706b48ddbc14b HTTP/1.1" 200 286
Dec 29 11:59:30 2023 (6255) 127.0.0.1 - - "GET
/3.1/users/fa17aa7aa1e946b6a72706b48ddbc14b/preferred_address HTTP/1.1"
404 26
Dec 29 11:59:30 2023 (6255) 127.0.0.1 - - "GET
/3.1/addresses/USERNAME(a)DOMAIN.TLD HTTP/1.1" 200 369
Dec 29 11:59:30 2023 (6255) 127.0.0.1 - - "POST
/3.1/users/fa17aa7aa1e946b6a72706b48ddbc14b/preferred_address HTTP/1.1"
404 26
Kind regards
Hi Mailman Group,
I noticed that the from address for list moderation notifications are coming from a certain user address.
May you please help me figure out where to change this?
In this example, I would like to change the From address "listadmin(a)domain.com"
================================================================
-----Original Message-----
From: Admin <listadmin(a)domain.com>
Sent: Thursday, December 28, 2023 12:00 AM
To: dummy-list <dummy-list(a)domainx.com>
Subject: The dummy-list(a)domainx.com list has 2 moderation requests waiting.
The dummy-list(a)domainx.com list has 2 moderation requests waiting.
Held Messages:
Sender: user1(a)domain.com
Subject: You missed a call | Transcription Available .
Reason: The message is not from a list member
Sender: user2(a)domain.com
Subject: Update/Access Required Notice on Friday, September 29, 2023
Reason: The message is not from a list member
Please attend to this at your earliest convenience.
=================================================================
I made for a repeated time (after system update and/or system reboot) the experience,that my mailman3 installation fails to start because of permission error to write the log file.
For some unknown reason, an empty file /var/og/mailman/mailman.log was apparently owned by list:list. I deleted that file and mailman3 core could now be started.
The start problem i solved.
I asked myself and you, how can this happen for many times? Has anyone an idea what the reason could be?
There is still a user list from a previous mailman3 installation, where I assigned the (former user for mailman2), but I suppose the problem is a different problem than a simple user definition.
The other log files are always correctly assigned to mailman:mailman
<pre> -rw-rw---- 1 mailman mailman 7487 Dec 22 18:21 bounce.log
0 -rw-rw---- 1 mailman mailman 0 Oct 8 22:46 debug.log
4 -rw-rw---- 1 mailman mailman 1909 Dec 24 09:10 mailman.log
57448 -rw-rw---- 1 mailman mailman 58820418 Dec 24 09:00 mailman.log.1
108 -rw-rw---- 1 mailman mailman 108407 Oct 24 12:18 mailman.log.2.gz
0 -rw-rw---- 1 mailman mailman 0 Oct 8 22:46 plugins.log
232 -rw-rw---- 1 mailman mailman 229585 Dec 24 09:10 smtp.log
4 drwxr-xr-x 2 mailman mailman 4096 Oct 20 00:00 <font color="#729FCF"><b>web</b></font>
is there a wordpress plugin/widget allowing visitors to subscribe to a
mailman3 hosted mailing list? Else, what is the most convenient way? Sure, I
could just link to the maiman site, but since joining a list is as easy as
sending mail to LISTNAME-join, there should be a simple way to impement this.
What is the best practice?
Cheers,
Johannes
Wheras my older lists handled these format apparently correctly, I now cannot add any more
"Givenname Familyname" <mailaddress> ; or
Givenname Familyname <mailaddress>
In any of these cases, only the part <mailaddress> is added.
Is this strange behaviour know?
What can be done to have the correct function back to working again?
Django-allauth seems to just be a basket of woes, but I figured I'd toss this one out there to see if anyone has seen similar:
I have Google and Facebook social logins configured. They work fine for me. They work fine for most people. Huzzah!
For some people, even when they use different browsers/OSes/etc, attempting a social login generates an error. On the callback, they get "Server error" "An error occurred while processing your request."
These errors are generated to me as the admin, and in the elided environment section SITE_ID is indeed 0, but I'm at a loss to imagine why this happens only sometimes!
Any pointers for investigation?
--Jered
Internal Server Error: /accounts/google/login/callback/
ImproperlyConfigured at /accounts/google/login/callback/
You're using the Django "sites framework" without having set the SITE_ID setting. Create a site in your database and set the SITE_ID setting or pass a request to Site.objects.get_current() to fix this error.
[...]
Traceback (most recent call last):
File "/opt/app-root/src/.local/lib/python3.9/site-packages/django/core/handlers/exception.py", line 56, in inner
response = get_response(request)
File "/opt/app-root/src/.local/lib/python3.9/site-packages/django/core/handlers/base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/opt/app-root/src/.local/lib/python3.9/site-packages/allauth/socialaccount/providers/oauth2/views.py", line 84, in view
return self.dispatch(request, *args, **kwargs)
File "/opt/app-root/src/.local/lib/python3.9/site-packages/allauth/socialaccount/providers/oauth2/views.py", line 162, in dispatch
return complete_social_login(request, login)
File "/opt/app-root/src/.local/lib/python3.9/site-packages/allauth/socialaccount/helpers.py", line 197, in complete_social_login
sociallogin.lookup()
File "/opt/app-root/src/.local/lib/python3.9/site-packages/allauth/socialaccount/models.py", line 282, in lookup
provider_id = self.account.get_provider().id
File "/opt/app-root/src/.local/lib/python3.9/site-packages/allauth/socialaccount/models.py", line 141, in get_provider
provider = self._provider = adapter.get_provider(
File "/opt/app-root/src/.local/lib/python3.9/site-packages/allauth/socialaccount/adapter.py", line 204, in get_provider
app = self.get_app(request, provider=provider)
File "/opt/app-root/src/.local/lib/python3.9/site-packages/allauth/socialaccount/adapter.py", line 284, in get_app
apps = self.list_apps(request, provider=provider, client_id=client_id)
File "/opt/app-root/src/.local/lib/python3.9/site-packages/allauth/socialaccount/adapter.py", line 231, in list_apps
db_apps = SocialApp.objects.on_site(request)
File "/opt/app-root/src/.local/lib/python3.9/site-packages/allauth/socialaccount/models.py", line 27, in on_site
site = get_current_site(request)
File "/opt/app-root/src/.local/lib/python3.9/site-packages/django/contrib/sites/shortcuts.py", line 16, in get_current_site
return Site.objects.get_current(request)
File "/opt/app-root/src/.local/lib/python3.9/site-packages/django/contrib/sites/models.py", line 63, in get_current
raise ImproperlyConfigured(
Exception Type: ImproperlyConfigured at /accounts/google/login/callback/
Exception Value: You're using the Django "sites framework" without having set the SITE_ID setting. Create a site in your database and set the SITE_ID setting or pass a request to Site.objects.get_current() to fix this error.
Raised during: allauth.socialaccount.providers.oauth2.views.view
[... internal state elided ...]
Now my finished installation is generating a lot of errors and filling up
/var/log/syslog 1GB in a few hours.
The errors are like this one:
Dec 21 08:42:17 new-server mailman-web[981806]: --- Logging error ---
Dec 21 08:42:17 new-server mailman-web[981806]: Traceback (most recent call
last):
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
line 356, in pusher
Dec 21 08:42:17 new-server mailman-web[981806]: task =
SignedPackage.loads(task[1])
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/signing.py",
line 25, in loads
Dec 21 08:42:17 new-server mailman-web[981806]: return signing.loads(
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/core_signing.py",
line 35, in loads
Dec 21 08:42:17 new-server mailman-web[981806]: base64d =
force_bytes(TimestampSigner(key, salt=salt).unsign(s, max_age=max_age))
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/core_signing.py",
line 70, in unsign
Dec 21 08:42:17 new-server mailman-web[981806]: result =
super(TimestampSigner, self).unsign(value)
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/core_signing.py",
line 55, in unsign
Dec 21 08:42:17 new-server mailman-web[981806]: raise
BadSignature('Signature "%s" does not match' % sig)
Dec 21 08:42:17 new-server mailman-web[981806]:
django.core.signing.BadSignature: Signature "ofwl5GkP2_1nDnfM8-vAjAwl_Ss"
does not match
Dec 21 08:42:17 new-server mailman-web[981806]: During handling of the
above exception, another exception occurred:
Dec 21 08:42:17 new-server mailman-web[981806]: Traceback (most recent call
last):
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/usr/lib/python3.10/logging/__init__.py", line 1100, in emit
Dec 21 08:42:17 new-server mailman-web[981806]: msg =
self.format(record)
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/usr/lib/python3.10/logging/__init__.py", line 943, in format
Dec 21 08:42:17 new-server mailman-web[981806]: return
fmt.format(record)
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/usr/lib/python3.10/logging/__init__.py", line 678, in format
Dec 21 08:42:17 new-server mailman-web[981806]: record.message =
record.getMessage()
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/usr/lib/python3.10/logging/__init__.py", line 368, in getMessage
Dec 21 08:42:17 new-server mailman-web[981806]: msg = msg % self.args
Dec 21 08:42:17 new-server mailman-web[981806]: TypeError: not all
arguments converted during string formatting
Dec 21 08:42:17 new-server mailman-web[981806]: Call stack:
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/local/mailman/venv/bin/mailman-web", line 8, in <module>
Dec 21 08:42:17 new-server mailman-web[981806]: sys.exit(main())
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/local/mailman/venv/lib/python3.10/site-packages/mailman_web/manage.py",
line 90, in main
Dec 21 08:42:17 new-server mailman-web[981806]:
execute_from_command_line(sys.argv)
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/local/mailman/venv/lib/python3.10/site-packages/django/core/management/__init__.py",
line 446, in execute_from_command_line
Dec 21 08:42:17 new-server mailman-web[981806]: utility.execute()
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/local/mailman/venv/lib/python3.10/site-packages/django/core/management/__init__.py",
line 440, in execute
Dec 21 08:42:17 new-server mailman-web[981806]:
self.fetch_command(subcommand).run_from_argv(self.argv)
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/local/mailman/venv/lib/python3.10/site-packages/django/core/management/base.py",
line 407, in run_from_argv
Dec 21 08:42:17 new-server mailman-web[981806]: self.execute(*args,
**cmd_options)
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/local/mailman/venv/lib/python3.10/site-packages/django/core/management/base.py",
line 453, in execute
Dec 21 08:42:17 new-server mailman-web[981806]: output =
self.handle(*args, **options)
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/management/commands/qcluster.py",
line 22, in handle
Dec 21 08:42:17 new-server mailman-web[981806]: q.start()
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
line 78, in start
Dec 21 08:42:17 new-server mailman-web[981806]: self.sentinel.start()
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/usr/lib/python3.10/multiprocessing/process.py", line 121, in start
Dec 21 08:42:17 new-server mailman-web[981806]: self._popen =
self._Popen(self)
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/usr/lib/python3.10/multiprocessing/context.py", line 224, in _Popen
Dec 21 08:42:17 new-server mailman-web[981806]: return
_default_context.get_context().Process._Popen(process_obj)
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/usr/lib/python3.10/multiprocessing/context.py", line 281, in _Popen
Dec 21 08:42:17 new-server mailman-web[981806]: return
Popen(process_obj)
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/usr/lib/python3.10/multiprocessing/popen_fork.py", line 19, in __init__
Dec 21 08:42:17 new-server mailman-web[981806]:
self._launch(process_obj)
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/usr/lib/python3.10/multiprocessing/popen_fork.py", line 71, in _launch
Dec 21 08:42:17 new-server mailman-web[981806]: code =
process_obj._bootstrap(parent_sentinel=child_r)
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/usr/lib/python3.10/multiprocessing/process.py", line 314, in _bootstrap
Dec 21 08:42:17 new-server mailman-web[981806]: self.run()
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/usr/lib/python3.10/multiprocessing/process.py", line 108, in run
Dec 21 08:42:17 new-server mailman-web[981806]:
self._target(*self._args, **self._kwargs)
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
line 168, in __init__
Dec 21 08:42:17 new-server mailman-web[981806]: self.start()
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
line 172, in start
Dec 21 08:42:17 new-server mailman-web[981806]: self.spawn_cluster()
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
line 248, in spawn_cluster
Dec 21 08:42:17 new-server mailman-web[981806]: self.pusher =
self.spawn_pusher()
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
line 201, in spawn_pusher
Dec 21 08:42:17 new-server mailman-web[981806]: return
self.spawn_process(pusher, self.task_queue, self.event_out, self.broker)
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
line 197, in spawn_process
Dec 21 08:42:17 new-server mailman-web[981806]: p.start()
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/usr/lib/python3.10/multiprocessing/process.py", line 121, in start
Dec 21 08:42:17 new-server mailman-web[981806]: self._popen =
self._Popen(self)
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/usr/lib/python3.10/multiprocessing/context.py", line 224, in _Popen
Dec 21 08:42:17 new-server mailman-web[981806]: return
_default_context.get_context().Process._Popen(process_obj)
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/usr/lib/python3.10/multiprocessing/context.py", line 281, in _Popen
Dec 21 08:42:17 new-server mailman-web[981806]: return
Popen(process_obj)
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/usr/lib/python3.10/multiprocessing/popen_fork.py", line 19, in __init__
Dec 21 08:42:17 new-server mailman-web[981806]:
self._launch(process_obj)
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/usr/lib/python3.10/multiprocessing/popen_fork.py", line 71, in _launch
Dec 21 08:42:17 new-server mailman-web[981806]: code =
process_obj._bootstrap(parent_sentinel=child_r)
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/usr/lib/python3.10/multiprocessing/process.py", line 314, in _bootstrap
Dec 21 08:42:17 new-server mailman-web[981806]: self.run()
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/usr/lib/python3.10/multiprocessing/process.py", line 108, in run
Dec 21 08:42:17 new-server mailman-web[981806]:
self._target(*self._args, **self._kwargs)
Dec 21 08:42:17 new-server mailman-web[981806]: File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
line 358, in pusher
Dec 21 08:42:17 new-server mailman-web[981806]: logger.error(e,
traceback.format_exc())
Dec 21 08:42:17 new-server mailman-web[981806]: Message:
BadSignature('Signature "ofwl5GkP2_1nDnfM8-vAjAwl_Ss" does not match')
Dec 21 08:42:17 new-server mailman-web[981806]: 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/site-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=salt).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
"ofwl5GkP2_1nDnfM8-vAjAwl_Ss" does not match\n',)
So any clue how to fix this?
Best Regards,
Helio Loureiro
https://helio.loureiro.eng.br
https://github.com/helioloureiro
https://mastodon.social/@helioloureiro
I'm noticing that a lot of 'spammers' are registering themself via
postorius. They do not send emails, neither they are in any list, so
they are not technically spammers, but they are a lot [maybe around 500
subscribed in the last month].
While waiting for a captcha system[0] for the main distribution, I'm
looking for a rapid/easy way to delete this accounts; since they are not
'verified', I was wondering if I can locate this information in the
mailman3 database or if there is some easier way to delete all
unverified accounts. Do some of you any help or indications?
I'm using GNU Mailman 3.3.9 (Tom Sawyer).
Thanks,
noemi for
pangea.org
https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/thread/…
Is it possible to upgrade from Debian 11 to Debian 12 with Mailman3 installed on Debian 11?
I specify that I want to stay in the Debian repositories, not a "hand" installation of MM3.
I tested on a specific server. It was long and tedious but it seemed to me that it was working. In fact everything seems to work except the archive management :-(
Here is the procedure followed:
Stopping MM services
Backup of the database (PostgreSQL) and the base MM directory
Switch server from Debian 11 to Debian 12 and restart
migrate the database from PG 113 to PG 15 (pg_upgradecluster 13 does this very well)
Modify the file /etc/mailman3/mailman.cfg with a URL reference "postgresql://" instead of "postgres://" (see
https://lists.mailman3.org/archives/list/
mailman-users(a)mailman3.org/thread/CU6YU44V4WLRJI3WJH2VBWO2HCUF4YEA/)
update MM3 databases with "mailman-web migrate"
restart MM3 and MM3-web
With that MM3 works but not the archiving management!
Note that there are no real error messages in the logs…
In fact when we go to a list archive, we have pretty waiting wheels... infinite :-(
The only reference in mailman3-web.log:
[pid: 1429|app: 0|req: 12/12] NNN.NNN.NNN.NNN () {68 vars in 1445 bytes} [Mon Dec 18 16:35:56 2023] GET /hyperkitty/list/admin@ teledetection.fr/ => generated 37443 bytes in 37 msecs (HTTP/1.1 200) 7 headers in 221 bytes (1 switches on core 1)
If you have any solution...
Thank you in advance, have a good day and happy Christmas
Pierre Malard
Responsable architectures système CDS DINAMIS/THEIA Montpellier
IRD - UMR Espace-Dev - UAR CPST - IR Data-Terra
Maison de la Télédétection
500 rue Jean-François Breton
34093 Montpellier Cx 5
France
« Il n'y a pas de Paradis, mais il faut tâcher de mériter qu'il y en ait un ! »
Jules Renard (1864-1910) - Journal, 10 septembre 1903
|\ _,,,---,,_
/,`.-'`' -. ;-;;,_
|,4- ) )-,_. ,\ ( `'-'
'---''(_/--' `-'\_) πr
perl -e '$_=q#: 3|\ 5_,3-3,2_: 3/,`.'"'"'`'"'"' 5-. ;-;;,_: |,A- ) )-,_. ,\ ( `'"'"'-'"'"': '"'"'-3'"'"'2(_/--'"'"' `-'"'"'\_): 24πr::#;y#:#\n#;s#(\D)(\d+)#$1x$2#ge;print'
- --> Ce message n’engage que son auteur <--
___________________________________________
Mailman's content filtering has removed the
following MIME parts from this message.
Replaced multipart/alternative part with first alternative.
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):
"/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
line 1969, in _exec_single_context
self.dialect.do_execute(
"/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/engine/default.py",
line 922, in do_execute
cursor.execute(statement, parameters)
"/local/mailman/venv/lib/python3.10/site-packages/pymysql/cursors.py", line
153, in execute
result = self._query(query)
"/local/mailman/venv/lib/python3.10/site-packages/pymysql/cursors.py", line
322, in _query
conn.query(q)
"/local/mailman/venv/lib/python3.10/site-packages/pymysql/connections.py",
line 558, in query
self._affected_rows = self._read_query_result(unbuffered=unbuffered)
"/local/mailman/venv/lib/python3.10/site-packages/pymysql/connections.py",
line 822, in _read_query_result
result.read()
"/local/mailman/venv/lib/python3.10/site-packages/pymysql/connections.py",
line 1200, in read
first_packet = self.connection._read_packet()
"/local/mailman/venv/lib/python3.10/site-packages/pymysql/connections.py",
line 772, in _read_packet
packet.raise_for_error()
"/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)
"/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)
"/local/mailman/venv/lib/python3.10/site-packages/click/decorators.py",
line 33, in new_func
return f(get_current_context(), *args, **kwargs)
"/local/mailman/venv/lib/python3.10/site-packages/mailman/commands/cli_control.py",
line 109, in start
call_name(config.mta.incoming).regenerate()
"/local/mailman/venv/lib/python3.10/site-packages/mailman/mta/postfix.py",
line 109, in regenerate
self._generate_lmtp_file(fp)
"/local/mailman/venv/lib/python3.10/site-packages/mailman/mta/postfix.py",
line 149, in _generate_lmtp_file
mlist = _FakeList(list_name, mail_host)
"/local/mailman/venv/lib/python3.10/site-packages/mailman/mta/postfix.py",
line 75, in __init__
self.mail_host = _get_alias_domain(mail_host)
"/local/mailman/venv/lib/python3.10/site-packages/mailman/mta/postfix.py",
line 63, in _get_alias_domain
d = domain_manager.get(domain)
"/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)
"/local/mailman/venv/lib/python3.10/site-packages/mailman/model/domain.py",
line 162, in get
if domains.count() < 1:
"/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()
"/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/orm/query.py",
line 2825, in scalar
ret = self.one()
"/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/orm/query.py",
line 2798, in one
return self._iter().one() # type: ignore
"/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(
"/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/orm/session.py",
line 2308, in execute
return self._execute_internal(
"/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(
"/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/orm/context.py",
line 293, in orm_execute_statement
result = conn.execute(
"/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
line 1416, in execute
return meth(
"/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/sql/elements.py",
line 516, in _execute_on_connection
return connection._execute_clauseelement(
"/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
line 1639, in _execute_clauseelement
ret = self._execute_context(
"/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
line 1848, in _execute_context
return self._exec_single_context(
"/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
line 1988, in _exec_single_context
self._handle_dbapi_exception(
"/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
"/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
line 1969, in _exec_single_context
self.dialect.do_execute(
"/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/engine/default.py",
line 922, in do_execute
cursor.execute(statement, parameters)
"/local/mailman/venv/lib/python3.10/site-packages/pymysql/cursors.py", line
153, in execute
result = self._query(query)
"/local/mailman/venv/lib/python3.10/site-packages/pymysql/cursors.py", line
322, in _query
conn.query(q)
"/local/mailman/venv/lib/python3.10/site-packages/pymysql/connections.py",
line 558, in query
self._affected_rows = self._read_query_result(unbuffered=unbuffered)
"/local/mailman/venv/lib/python3.10/site-packages/pymysql/connections.py",
line 822, in _read_query_result
result.read()
"/local/mailman/venv/lib/python3.10/site-packages/pymysql/connections.py",
line 1200, in read
first_packet = self.connection._read_packet()
"/local/mailman/venv/lib/python3.10/site-packages/pymysql/connections.py",
line 772, in _read_packet
packet.raise_for_error()
"/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
Hi all,
Someone sent a spam message to the list owner (me) of one of my lists. Then I got booted from the list.
The scenario in more detail:
The list server forwards the message to me, as I’m the list owner. This message is sent from <list>- <mailto:artists-bounces+hansen=rc.org@list.rc.org>bounces+hansen=rc.org(a)list.rc.org <mailto:bounces+hansen=rc.org@list.rc.org> to hansen(a)rc.org <mailto:hansen@rc.org>.
My service provider’s spam filter rejects the spam (correctly) in a message and informs the list server.
The list server sends a message to <list>- <mailto:artists-bounces+hansen=rc.org@list.rc.org>bounces+hansen=rc.org(a)list.rc.org <mailto:bounces+hansen=rc.org@list.rc.org> (the fake sender) saying that the message to hansen(a)rc.org <mailto:hansen@rc.org> (the recipient) could not be delivered because it was spam.
The list server also blames hansen(a)rc.org <mailto:hansen@rc.org> (me) for the bounce and increments my bounce score, which, to me, is unfair.
So I wonder:
Is the Mailman host at
list.rc.org
<
http://list.rc.org/
> at fault for not catching the spam before it reaches the list server? (One could argue that)
Is my
rc.org
<
http://rc.org/
> service provider at fault for sending the bounce message to the server instead of the to the original sender?
Is Mailman at fault for thinking that the bounce message was caused by a list message FROM me, instead of a bounced message TO the list owner?
Yours,
Allan
Installed MM3 on Debian 11, followed the steps from the MM3 website.
I'm running into issues with Postfix headers. I can only get postfix to send emails to/from the list if I set the sender_canonical_maps in the main.cf file. I don't want to have to use that as I'd like the recipient to receive the following in their email header: <Subscriber> via <List Name> <FROM:LIST@DOMAIN>. But if I do the sender_canonical_maps, then the <FROM:LIST@DOMAIN> and all email headers are overwritten by the maps email address.
When I check the /var/log/mail.log without the sender_canonical_maps setting enabled, then the initial email sender is either rejected because 'Recipient address rejected: User unknown in virtual alias table' or '550-From header sender domain not verified (
example.com
), 550-On your sending > Verified senders page 550 verify the sender domain or email to be allowed to send'
I have smtp_sasl_passwd_maps disabled, since I'm trying a different SMTP relay
Here is my main.cf setup
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
# appending .domain is the MUA's job.
append_dot_mydomain = no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory = no
# See
http://www.postfix.org/COMPATIBILITY_README.html
-- default to 2 on
# fresh installs.
compatibility_level = 2
# Mailman related settings
#owner_request_special = no
transport_maps = hash:/var/lib/mailman3/data/postfix_lmtp
local_recipient_maps = hash:/var/lib/mailman3/data/postfix_lmtp
relay_domains = hash:/var/lib/mailman3/data/postfix_domains
#relay_domains = ${{$compatibility_level} < {2} ? {$mydestination} : {}} hash:/var/lib/mailman3/data/postfix_domains
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_security_level=may
#smtp_tls_CApath=/etc/postfix/o365_smtp_cert.pem
smtp_tls_security_level=may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = localhost
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
relayhost = [mail.smtp2go.com]:587
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = ipv4
sender_canonical_maps = regexp:/etc/postfix/sender_canonical
smtp_use_tls = yes
smtp_always_send_ehlo = yes
unknown_local_recipient_reject_code = 550
always_add_missing_headers = yes
#smtp_sasl_auth_enable = yes
#smtp_sasl_password_maps = hash:/etc/postfix/sasl/sasl_passwd
smtp_sasl_security_options = noanonymous
header_size_limit = 409600
default_destination_recipient_limit = 30
default_destination_concurrency_limit = 15
header_checks = regexp:/etc/postfix/header_checks
mynetworks = 127.0.0.0/8 [::fff:127.0.0.0]/104 [::1]/128
In my environment, I am trying to enable notifications on a thread just like this one. When someone responds, I want the list to get a notification and or the person that is getting responded to.
Any thoughts?
Thank you!
I am running MM3 and have a list that has users from different organizations and email domains.
So let's say I am
orga.com
and hosting mailman
Bill is
borg.com
Cindy is
mew.com
When Bill sends a message to my MM3 list it gets sent out, However, cindy's email system rejects it cause it sees the message is sent from Bill(a)borg.com but it came from my MM3 server which is under
orga.com
, so it rejects it.
I have been told more organizations are checking this and starting to reject these types of messages and also we could get blacklisted because it looks like we are spoofing.
The only solutions I can think of are:
-Have the receiving organizations whitelist my server, but that is probably not feasible.
-set the list to anonymous..... But then you don't know who sent the email.
Anyway around this? or is there a way to have the sender's email included in the list message but keep the list anonymous?
or am I missing something else?
and if I send amessage from my organaxztion to MM# it will go out to the peopl n the list, and if and some of those people are at other organizations. When the recive the email, sometoimes their mail system reject it with a DMAR message. I have been told thisis beacue the other organazatione dmeail system sees I snet the message
When using a social login button, there is a completely unstyled page as an interstitial before login.
I copied the upstream allauth/templates/socialaccount/login.html and changed the first line from:
{% extends "socialaccount/base_entrance.html" %}
{% extends "django_mailman3/profile/base.html" %}
This seems to work properly and look correct. Is there a reason not to PR this?
--Jered
I've tested mailman3 and now installed it on productive server. The
customer complains that the translation to German is incomplete on the
productive server while it was complete on the test server.
I can't find a way to confirm this because I only see the English
frontend of mailman3-web and I don't know how to switch language in the
frontend (I have my OS set to English).
Kind regards
during one of our upgrades to 3.3.x we set verp_probes: yes according to
upgrade notes[1].
However it looks like this disabled bounce handling completely.
Howto verify (MM 3.3.9):
verp_probes: yes
verp_delivery_interval: 1
restart mailman3
create test-list
add an undeliverable recipient to the list that is known to bounce.
send 6 mails to list.
see, that all the bounce-messages are received by mailman according to
postfix log[2]
check bounce.log - no entry.
get bounce_score from API[3] - shows bounce_score 0.
Can anyone confirm?
Any help is greatly appreciated.
Thank you.
Stefan
[1]
https://docs.mailman3.org/en/latest/upgrade-3.2.html
[2] from=<>, size=8565, nrcpt=1 (queue active) ...
to=<v-test-bounces+undeliverable-recipient=realdomain.tld(a)lists.lists.tld>,
relay=127.0.0.1[127.0.0.1]:8024 status=sent
[3] curl -s -q --user a:b
http://localhost:8001/3.1/members/find?subscriber=undeliverable-recipient@r…
We use a multi-hop SMTP system to go from the inside of our network out
to the Internet at the domain
test.lists.example.com
.
The setup is this way for ingress:
{EXTERNAL} -> MS365 (relay/antispam) -> MS On-Prem (via 365 Connector)
-> Mailman for delivery to listserv
Egress is this:
Mailman -> Postfix SMTP Relay (smtpproxy) -> INTERNET
When a message is sent an invalid list (we'll call it
invalid(a)test.lists.example.com) we end up with a nasty side effect in
the system. The "no such recipient" response gets sent to the smtpproxy
machine and then *it gets redelivered back to Mailman* as a redelivery
as if it isn't accepting a permanent-failure condition code.
This results in a nasty mail loop that results with a "too many hops"
error that doesn't state "invalid recipient" and I have no idea why this
is the case.
Can anyone provide any insight into how to prevent this type of routing
loop caused by the egress of messages?
Thomas
# Include alternate Postorius and HyperKitty URLs.
path('postorius/', include('postorius.urls')),
path('hyperkitty/', include('hyperkitty.urls')),
It appears that these paths override the originals (/mailman3 & /archive). I’m using apache and have had to add ProxyPass lines for these new alternate URLs, as /mailman3 and /archive don’t appear to be presented anymore by mailman-web. All the links at the top (Postorious, lists, domains, bans, system info, users, and archives) – all have /postorius or /hyperkitty as the start of their URLs.
If I make a copy of that urls.py in /etc/mailman3 and point to it with ROOT_URLCONF – and comment out those alternate lines, the links go back to the way they were (/mailman3 and /archives).
Or, as I mentioned, I can add the ProxyPass lines for /postorius and /hyperkitty to apache.
One way or another, it doesn’t seem to be behaving as an alternate. Or have I overlooked something?
Thank you
Tom Lieuallen
Mailman3 on my system is installed in virtualenv. Each month I get the
following error message. This error does not seem to have a serious
impact on the functioning of mailman, still, what does it mean and how
do I get rid of it?
Thanks for any hints!
Johannes
-------- Weitergeleitete Nachricht --------
Betreff: Cron <mailman@*** /opt/mailman/venv/bin/mailman-web runjobs
monthly
Datum: Fri, 1 Dec 2023 05:56:40 +0100 (CET)
Von: Cron Daemon <root(a)mail.rooot.de>
An: mailman@***
ERROR OCCURED IN JOB: update_and_clean_index (APP: hyperkitty)
Traceback (most recent call last):
"/opt/mailman/venv/lib/python3.10/site-packages/django_extensions/management/commands/runjobs.py",
line 40, in runjobs
job().execute()
"/opt/mailman/venv/lib/python3.10/site-packages/hyperkitty/jobs/update_and_clean_index.py",
line 37, in execute
run_with_lock(update_index, remove=True)
"/opt/mailman/venv/lib/python3.10/site-packages/hyperkitty/lib/utils.py",
line 177, in run_with_lock
with lock:
"/opt/mailman/venv/lib/python3.10/site-packages/flufl/lock/_lockfile.py",
line 470, in __exit__
self.unlock()
"/opt/mailman/venv/lib/python3.10/site-packages/flufl/lock/_lockfile.py",
line 420, in unlock
raise NotLockedError('Already unlocked')
flufl.lock._lockfile.NotLockedError: Already unlocked
I know this may not be the right place to ask. But, just in case someone
has any experience using the b4 tool (
https://github.com/mricon/b4
) with
the Mailman3 archives? Any idea, how to configure this tool to receive
patch series from a mailman archive list?
This tool is mainly used for the following purposes:
- Retrieve patch series from a public mailing list (e.g.
lore.kernel.org
)
- Compare patch series
- Apply patch series to the git repository
- Retrieve code-review trailers
Kind regards,
Prasanth Nair
have anybody successful setup nextcloud auth provider for postorius?
I have done configured the OAuth 2.0-Client in nextcloud/index.php/settings/admin/security.
I have add the nexcloud as social application in
mailman3/admin/socialaccount/socialapp/.
If i try to login via nexcloud, postorius redirect me to the nextcloud, where i successful login, and redirected to postorius
But i'm not logged in postorius.
what I'm missing?
Have anybody a howto?
Thanks
Hi Folks,
Does anyone have a recipe for adding captcha or similar to stop bot
accounts signing up with Postorius? We're seeing a heap of fake signups
resulting in confirmation emails going to people who haven't signed
up, with user names like 'CAOXpYhPFPBFr' -- I'd like to make it
just a little harder for bots to sign up.
Too many confirmation emails going to non-existent email addresses
reduces our mail reputation, and increases the likelihood that
legit email is flagged as spam.
Peter C
Hi Admin, Any idea on this error? It happen when you wrote a tread it send the mail but not save on the archive.
Nov 28 20:34:51 2023 (8407) Connection to HyperKitty failed: ('Connection aborted.', OSError(0, 'Error'))
Nov 28 20:34:51 2023 (8407) Connection to HyperKitty failed: ('Connection aborted.', OSError(0, 'Error'))
Nov 28 20:34:51 2023 (8406) Connection to HyperKitty failed: ('Connection aborted.', OSError(0, 'Error'))
Nov 28 20:34:51 2023 (8400) Connection to HyperKitty failed: ('Connection aborted.', OSError(0, 'Error'))
Nov 28 20:34:51 2023 (8400) Could not archive the message with id <168853565119.17959.11384406081068301715(a)email1.example.com>
Nov 28 20:34:51 2023 (8400) archiving failed, re-queuing (mailing-list
testmaillist.example.com
, message <168853565119.17959.11384406081068301715(a)email1.example.com>)
Nov 28 20:34:51 2023 (8400) Exception in the HyperKitty archiver: ('Connection aborted.', OSError(0, 'Error'))
Nov 28 20:34:51 2023 (8400) Traceback (most recent call last):
File "/opt/mailman/venv/lib64/python3.6/site-packages/urllib3/connectionpool.py", line 710, in urlopen
chunked=chunked,
File "/opt/mailman/venv/lib64/python3.6/site-packages/urllib3/connectionpool.py", line 386, in _make_request
self._validate_conn(conn)
File "/opt/mailman/venv/lib64/python3.6/site-packages/urllib3/connectionpool.py", line 1042, in _validate_conn
conn.connect()
File "/opt/mailman/venv/lib64/python3.6/site-packages/urllib3/connection.py", line 429, in connect
tls_in_tls=tls_in_tls,
File "/opt/mailman/venv/lib64/python3.6/site-packages/urllib3/util/ssl_.py", line 450, in ssl_wrap_socket
sock, context, tls_in_tls, server_hostname=server_hostname
File "/opt/mailman/venv/lib64/python3.6/site-packages/urllib3/util/ssl_.py", line 493, in _ssl_wrap_socket_impl
return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
File "/usr/lib64/python3.6/ssl.py", line 365, in wrap_socket
_context=self, _session=session)
File "/usr/lib64/python3.6/ssl.py", line 776, in __init__
self.do_handshake()
File "/usr/lib64/python3.6/ssl.py", line 1036, in do_handshake
self._sslobj.do_handshake()
File "/usr/lib64/python3.6/ssl.py", line 648, in do_handshake
self._sslobj.do_handshake()
OSError: [Errno 0] Error
> 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):
>>>> > 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",
>>>> > 154, in _archive_message url = self._send_message(mlist, msg) File
>>>> > "/var/lib/mailman/mailman-hyperkitty/mailman_hyperkitty/__init__.py",
>>>> > 201, in _send_message files={"message": ("message.txt",
>>>> > message_text)})
>>>> > "/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)
(I sent this a week ago, but apparently it got lost, trying to resend.)
We’ve been using MM2 for eons and are working on a migration to MM3. So, bear with me as I’m still coming up to speed. I’m running MM 3.3.8 and Postorious 1.3.8.
Our mailing lists include members within our organization as well as a number outside. We don’t want to expose our MM3 server directly to the open internet, so wish to hide the web portion behind our netscaler and our regular pool of web servers. Those web servers will proxy MM3 web pages on over to our MM3 machine to handle. This seems to work. Email will meander in via MX and mail relay servers.
I found and followed directions in this email regarding changing URL paths:
https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/thread/…
So, say our MM3 server is: mm3.fqdn
I am trying to publish and use urls like
www.fqdn/mailman3-admin
<
http://www.fqdn/mailman3-admin
>,
www.fqdn/mailman3/lists
<
http://www.fqdn/mailman3/lists
>. Again, that works for me.
However, MM3 still has its concept of what URLs should be. I hoped I could fix that by way of templates, but I’m not sure there’s a template for everything. I added some templates, but have not replaced all. I was wondering and hoping that some central change could fix any default templates en-mass.
Most recently, I changed the mailman admin email yesterday and the confirmation email directed me to mm3.fqdn/…/confirm-email/…. I looked at the stock templates and nothing there had that wording.
I just looked at postorious docs and nothing jumps out at me there.
1. Have I gone down a bad rabbit hole?
2. Is there a way to change the advertised web server address?
3. Should I just continue rolling out my own templates and hope and assume that will take care of this issue?
Thank you
Tom Lieuallen
Oregon State University
following command:
mailman-web hyperkitty_import -l annonsering(a)hodr.no --since 2013-09-01 <mbox file>
No errors reported.
I then did
mailman-web update_index_one_list annonsering(a)hodr.no
No, when I go to
https://hodr.no/archives/list/annonsering@hodr.no/
, I
cannot choose mails earlier than January 2023.
What's the problem, do you think?
OK -- my turn to ask a question...
I created a new domain and lists in my (functioning) Mailman 3 install.
Messages to these new lists are successfully delivered via LMTP to Mailman and then disappear. They are in the shunt queue, with a source queue of "in". There are no exceptions logged in my mailman.log.
An example from a qfile:
{ '_parsemsg': False,
'envsender': 'noreply(a)[domain].com',
'lang': 'en',
'listid': '[
listname].[domain].com
',
'original_size': 2654,
'received_time': datetime.datetime(2023, 11, 25, 14, 0, 6, 968185),
'rule_hits': [],
'rule_misses': [],
'to_list': True,
'version': 3,
'whichq': 'in'}
Unshunting the message has no effect, and no logs are generated.
Any suggestions?
Thanks,
--Jered
Recently my mailman3 instance stopped distributing mail. But mailman's
own mail (notification, digest etc) and archiving are working OK. I
couldn't figure what is going wrong
From mail.log
Dec 31 10:03:20 lists postfix/smtpd[10900]: Anonymous TLS connection
established from mail.xxxx.xx[5.79.72.163]: TLSv1.2 with cipher
ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)
Dec 31 10:03:20 lists postfix/smtpd[10900]: Anonymous TLS connection
established from mail.xxxx.xx[5.79.72.163]: TLSv1.2 with cipher
ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)
Dec 31 10:03:20 lists policyd-spf[10907]: prepend Received-SPF: Pass
(mailfrom) identity=mailfrom; client-ip=5.79.72.163; helo=mail.xxxx.xx;
envelope-from=abhijith(a)xxxx.xx; receiver=<UNKNOWN>
Dec 31 10:03:20 lists policyd-spf[10907]: prepend Received-SPF: Pass
(mailfrom) identity=mailfrom; client-ip=5.79.72.163; helo=mail.xxxx.xx;
envelope-from=abhijith(a)xxxx.xx; receiver=<UNKNOWN>
Dec 31 10:03:21 lists postfix/smtpd[10900]: 04C2412038F:
client=mail.xxxx.xx[5.79.72.163]
Dec 31 10:03:21 lists postfix/smtpd[10900]: 04C2412038F:
client=mail.xxxx.xx[5.79.72.163]
Dec 31 10:03:21 lists postfix/cleanup[10912]: 04C2412038F:
message-id=<f875c144-a23c-baa2-7de2-1b102d3e7494(a)xxxx.xx>
Dec 31 10:03:21 lists postfix/cleanup[10912]: 04C2412038F:
message-id=<f875c144-a23c-baa2-7de2-1b102d3e7494(a)xxxx.xx>
Dec 31 10:03:21 lists opendkim[450]: 04C2412038F: s=_teknikKey d=xxxx.xx
Dec 31 10:03:21 lists opendkim[450]: 04C2412038F: s=_teknikKey d=xxxx.xx
Dec 31 10:03:21 lists postfix/smtpd[10900]: disconnect from
mail.xxxx.xx[5.79.72.163] ehlo=2 starttls=1 mail=1 rcpt=1 data=1 quit=1
commands=7
Dec 31 10:03:21 lists postfix/smtpd[10900]: disconnect from
mail.xxxx.xx[5.79.72.163] ehlo=2 starttls=1 mail=1 rcpt=1 data=1 quit=1
commands=7
Dec 31 10:03:21 lists postfix/qmgr[13211]: 04C2412038F:
from=<abhijith(a)xxxx.xx>, size=1699, nrcpt=1 (queue active)
Dec 31 10:03:21 lists postfix/qmgr[13211]: 04C2412038F:
from=<abhijith(a)xxxx.xx>, size=1699, nrcpt=1 (queue active)
Dec 31 10:03:21 lists postfix/lmtp[10915]: 04C2412038F:
to=<test3(a)lists.yyyy.yy>, relay=127.0.0.1[127.0.0.1]:8024, delay=0.87,
delays=0.62/0.02/0.04/0.2, dsn=2.0.0, status=sent (250 Ok)
Dec 31 10:03:21 lists postfix/lmtp[10915]: 04C2412038F:
to=<test3(a)lists.yyyy.yy>, relay=127.0.0.1[127.0.0.1]:8024, delay=0.87,
delays=0.62/0.02/0.04/0.2, dsn=2.0.0, status=sent (250 Ok)
Dec 31 10:03:21 lists postfix/qmgr[13211]: 04C2412038F: removed
Dec 31 10:03:21 lists postfix/qmgr[13211]: 04C2412038F: removed
I am not sure why 'postfix/qmgr[13211]: 04C2412038F: removed' is happening.
from /var/log/mailman3/smtp.log:
Dec 31 10:03:21 2018 (6323) ('127.0.0.1', 48720) handling connection
Dec 31 10:03:21 2018 (6323) ('127.0.0.1', 48720) Data: b'LHLO lists.xxxx.xx'
Dec 31 10:03:21 2018 (6323) ('127.0.0.1', 48720) Data: b'MAIL
FROM:<abhijith(a)xxxx.xx>'
Dec 31 10:03:21 2018 (6323) ('127.0.0.1', 48720) sender: abhijith(a)xxxx.xx
Dec 31 10:03:21 2018 (6323) ('127.0.0.1', 48720) Data: b'RCPT
TO:<test3(a)xxxx.xx>'
Dec 31 10:03:21 2018 (6323) ('127.0.0.1', 48720) recip: test3(a)xxxx.xx
Dec 31 10:03:21 2018 (6323) ('127.0.0.1', 48720) Data: b'DATA'
Dec 31 10:03:21 2018 (6323) ('127.0.0.1', 48720) Data: b'QUIT'
Dec 31 10:03:21 2018 (6323) ('127.0.0.1', 48720) connection lost
Dec 31 10:03:21 2018 (6323) Connection lost during _handle_client()
Here again I am doubtful about 'Connection lost during _handle_client()'.
Please help.
Abhijith PA
Despite earlier comments that django-allauth 0.58.1 has been released to fix this issue (and presumably 0.58.2 would have the fix as well), there appears to still be an issue. As Odhiambo indicated with django-allauth==0.57.0, mailman-web compress completes without errors. With django-allauth 0.58.1 and 0.58.2, I still get
(venv) $ mailman-web compress
Compressing... Error parsing template socialaccount/signup.html: socialaccount/base.html
Compressed 2 block(s) from 78 template(s) for 1 context(s).
The Invalid template errors for socialaccount/login_cancelled.html and account/verified_email_required.html are gone, but we still have a parsing error.
This is an installation on RHEL9 with python 3.11 based on the virtualenv installation method at
https://docs.mailman3.org/en/latest/install/virtualenv.html#virtualenv-inst…
Michael Sanderson
I have both my mailman lists and django config in postgres databases. If I want to move my lists to another server that is running mailman 3, aside from copying the databases to the other server, what other things (perhaps all files under /var/lib/mailman3?, etc) would I need to bring over to the other server?
Howdy! Does anyone have or know of a guide to migrate from Listserv 17, including list archives, to Mailman 3? I've found documentation on moving to Mailman 2, but those don't seem to apply to the newer version.
Thanks,
RobertC
I'm dealing with (presumably bogus) spam reports for messages from
foo-bounces(a)list.domain
As far as I can tell these messages are triggered by the
alleged-victim/apparent-attacker sending messages to foo-subscribe
followed immediately by foo-unsubscribe. I have the size and time from
postfix and/or mailman's smtp.log, but I don't have the message content.
Are these messages stored somewhere by Mailman? Can I have them stored
for a month or so in order to deal with these bureaucratic incidents?
David
In
https://docs.mailman3.org/en/latest/migration.html
I'm adviced to run
the check_hk_archive script found in hyperkitty/contrib. When trying
`git clone
https://gitlab.com/mailman/hyperkity`I
get:
Username for '
https://gitlab.com
':
Is it possible to get the script without an account on gitlab?
Thanks,
Lars Bjørndal <lars(a)lamasti.net>
Ostadalsveien 64, 0753 Oslo.
Mobil: 958 37 537
I s there a mean to configure the list for that emails be sent to
recipients in a spread out manner to avoid being considered spam ? cause
AOL, YAHOO seems to consider emails sent to recipients as spam or an
"Excessively high volume of emails". there's just 40 (aol, yahoo) emails
suscribed to the list.
I am currently working with Mailman 3 and looking to enhance the
personalization of the emails sent through our mailing list. Specifically,
I wish to include the recipient's username in the email content, similar to
a personalized greeting (e.g., "Dear [username]").
My questions are:
1. Does Mailman 3 support the inclusion of personalized data (like
usernames)?
2. If yes, how can I do that? Is there any placeholder for that?
Any guidance or suggestions on how to achieve this would be greatly
appreciated.
Thank you for your time and assistance.
When people are communicating on Mailman3 lists, some set up automatic
responders for out-of-office, etc. and get let through the system to
list recipients.
Unfortunately, this is bad behavior and appears to not be caught by
default. I'd like to set up some kind of rule globally rather than
per-list that would check if a message is an automatic reply (based on a
set of criteria we've come up with programmatically on our previous
custom implementation of lists) and then default-discard those messages.
Is there a way with custom rules to implement this? We're looking for
certain strings on the subject line or other headers to determine
"Discard" cases in our custom list implementations, but we are hoping we
can implement this with customized rules in Mailman3 to achieve this
goal. How would we structure that type of rule, and do we check the
message object or the msgdata instead?
Thomas
I just did a container rebuild and Mailman failed to load, with the below errors on the console. Pinning SQLAlchemy 2.0.22 resolved this; I haven't tried to further debug. (2.0.23 was release on November 3.)
--Jered
Traceback (most recent call last):
File "/opt/app-root/src/.local/bin/mailman", line 8, in <module>
sys.exit(main())
File "/opt/app-root/src/.local/lib/python3.9/site-packages/click/core.py", line 1157, in __call__
return self.main(*args, **kwargs)
File "/opt/app-root/src/.local/lib/python3.9/site-packages/click/core.py", line 1078, in main
rv = self.invoke(ctx)
File "/opt/app-root/src/.local/lib/python3.9/site-packages/mailman/bin/mailman.py", line 69, in invoke
return super().invoke(ctx)
File "/opt/app-root/src/.local/lib/python3.9/site-packages/click/core.py", line 1688, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/opt/app-root/src/.local/lib/python3.9/site-packages/click/core.py", line 1434, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/opt/app-root/src/.local/lib/python3.9/site-packages/click/core.py", line 783, in invoke
return __callback(*args, **kwargs)
File "/opt/app-root/src/.local/lib/python3.9/site-packages/click/decorators.py", line 33, in new_func
return f(get_current_context(), *args, **kwargs)
File "/opt/app-root/src/.local/lib/python3.9/site-packages/mailman/commands/cli_control.py", line 109, in start
call_name(config.mta.incoming).regenerate()
File "/opt/app-root/src/.local/lib/python3.9/site-packages/mailman/mta/postfix.py", line 109, in regenerate
self._generate_lmtp_file(fp)
File "/opt/app-root/src/.local/lib/python3.9/site-packages/mailman/mta/postfix.py", line 148, in _generate_lmtp_file
for list_name, mail_host in list_manager.name_components:
File "/opt/app-root/src/.local/lib/python3.9/site-packages/mailman/model/listmanager.py", line 140, in name_components
for mail_host, list_name in result_set.with_entities(
File "/opt/app-root/src/.local/lib/python3.9/site-packages/sqlalchemy/orm/query.py", line 2833, in __iter__
result = self._iter()
File "/opt/app-root/src/.local/lib/python3.9/site-packages/sqlalchemy/orm/query.py", line 2847, in _iter
result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
File "/opt/app-root/src/.local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 2308, in execute
return self._execute_internal(
File "/opt/app-root/src/.local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 2180, in _execute_internal
conn = self._connection_for_bind(bind)
File "/opt/app-root/src/.local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 2047, in _connection_for_bind
return trans._connection_for_bind(engine, execution_options)
File "<string>", line 2, in _connection_for_bind
File "/opt/app-root/src/.local/lib/python3.9/site-packages/sqlalchemy/orm/state_changes.py", line 139, in _go
ret_value = fn(self, *arg, **kw)
File "/opt/app-root/src/.local/lib/python3.9/site-packages/sqlalchemy/orm/session.py", line 1143, in _connection_for_bind
conn = bind.connect()
File "/opt/app-root/src/.local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3268, in connect
return self._connection_cls(self)
File "/opt/app-root/src/.local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 145, in __init__
self._dbapi_connection = engine.raw_connection()
File "/opt/app-root/src/.local/lib/python3.9/site-packages/sqlalchemy/engine/base.py", line 3292, in raw_connection
return self.pool.connect()
File "/opt/app-root/src/.local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 452, in connect
return _ConnectionFairy._checkout(self)
File "/opt/app-root/src/.local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 1378, in _checkout
del fairy
File "/opt/app-root/src/.local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 146, in __exit__
raise exc_value.with_traceback(exc_tb)
File "/opt/app-root/src/.local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 1306, in _checkout
result = pool._dialect._do_ping_w_event(
File "/opt/app-root/src/.local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 709, in _do_ping_w_event
return self.do_ping(dbapi_connection)
File "/opt/app-root/src/.local/lib/python3.9/site-packages/sqlalchemy/dialects/mysql/pymysql.py", line 104, in do_ping
if self._send_false_to_ping:
File "/opt/app-root/src/.local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 1146, in __get__
obj.__dict__[self.__name__] = result = self.fget(obj)
File "/opt/app-root/src/.local/lib/python3.9/site-packages/sqlalchemy/dialects/mysql/pymysql.py", line 93, in _send_false_to_ping
insp = langhelpers.get_callable_argspec(Connection.ping)
AttributeError: 'function' object has no attribute 'ping'
nov. 14 23:22:18
dalen.lamasti.net
postgresql-check-db-dir[1410]: An old
version
of the database format was found.
nov. 14 23:22:18
dalen.lamasti.net
postgresql-check-db-dir[1410]: Use
'postgresq
l-setup --upgrade' to upgrade to version '15'
nov. 14 23:22:18
dalen.lamasti.net
postgresql-check-db-dir[1410]: See
/usr/share
/doc/postgresql/README.rpm-dist for more information.
When I run `postgresql-setup --upgrade`
I get:
runuser: warning: cannot change directory to /opt/postgresql: no such file
or directory
* Upgrading database.
/usr/bin/postgresql-setup: line 307: cd: /opt/postgresql: no such
file or directory
ERROR: pg_upgrade tool failed
ERROR: Upgrade failed.
* See /var/lib/pgsql/upgrade_postgresql.log for details.
Why does the upgrade tool look for files in /opt/postgresql and not in /var/lib/pgsql?
How to fix it?
Thanks, Lars
is there some way to find an ID to follow an email through mailman? In
the exim logfile there is only something like C="250 Ok" (whereas in
mails sent to another exim there is something like C="250 OK id=…").
(What I sometimes need to do is to follow an mail whether it is sent
through mailman and to where.)
Or should I raise an issue as whishlist request?
Regards,
I have had mailman3 working great on Debian 11, however, I just upgraded to Debian 12 and, following the upgrade, mailman3 is not working and I am getting the following error message:
ModuleNotFoundError: No module named 'mailman_web'
Does anybody have any recommendations?
Thanks!
Gordon
I'm new to this list and newly a Mailman list administrator. I know I can customize message templates and have done so for my list's Welcome message. My problem is knowing what I'm replacing when I create a "new" template. How/where can I see he default content?
Steve Brown
I have to understand something more about disabled users.
I renabled some users, but they continue to non teceive the newsletter.
Is there a more detailed log that I can analize to discover dis problem?
Thank you
Roberto Burceni
Servizio informatico sezionale
Tel. 0302209417 (lunedì e giovedì mattina dalle 9:00 alle 13:00, martedì emercoledì pomeriggio dalle 14:00 alle 18:00
E-mail:
servizioinformatico(a)uicibrescia.it
Sito web:
https://www.uicibrescia.it
The current template input page shows this text:
You can use these variables in the templates.
$hyperkitty_url: Permalink to archived message in Hyperkitty
$listname: Name of the Mailing List e.g. ant(a)example.com
$list_id: The List-ID header e.g.
ant.example.com
$display_name: Display name of the mailing list e.g. Ant
$short_listname: Local part of the listname e.g. ant
$domain: The domain part of the listname e.g.
example.com
$info: The mailing list's longer descriptive text
$request_email: The email address for -request address
$owner_email: The email address for -owner address
$site_email: The email address to reach the owners of the site
$language: The two letter language code for list's preferred language e.g. fr, en, de
I suggest to add the variable for leaving a mailing list here.
But what is the variable name?
Hello,
We are currently working on a migration plan for Mailman -> Mailman 3. We have around over 3000 mailing lists with a total of 50K members and 500 worth of archived data.
Our plan is to have core+web (instance 1) and Hyperkitty (instance 2). With the archives on the FS local to the Hyperkitty. And all 3 tables (core, web, Hyperkitty) pointing to the same database on a remote SQL (mysql-enterprise) instance. Using class mailman.database.mysql.MySQLDatabase (and whatever necessary on the Django/Hyperkitty instance).
Is this feasible, if so what would be the recommended compute/storage requirements. If not what other alternatives have we got ? A remote or local PostgreSQL instance is also possible if recommended.
Thank you very much in advance and all the best !
Regards,
Serban
Hello
In Mailman, I have all the lists marked with the "Immediate notification to the administrator" option. Should list moderators receive immediate notification of new requests as well as daily reminders about the pending ones? List moderators (and list administrators) receive daily reminders of pending requests for approval, such as subscriptions to a moderated list or submissions that are held for some reason. Enabling this option results in immediate notifications being sent upon the arrival of new requests.
When there's a message being held because it needs approval, it automatically sends an email to the list owners. However, it also states that it sends a daily reminder if the email remains unapproved, but it's not doing that. I'll show you how I have /etc/postfix/transport configured. I receive the first "owner" email, but not the daily one.
list-owner(a)llistes.csuc.cat relay:[ip]:25
list(a)llistes.csuc.cat ..
list-admin(a)llistes.csuc.cat ...
list-bounces(a)llistes.csuc.cat ...
list-confirm(a)llistes.csuc.cat ...
list-join(a)llistes.csuc.cat ...
list-leave(a)llistes.csuc.cat ...
list-request(a)llistes.csuc.cat ...
list-subscribe(a)llistes.csuc.cat ...
I'm seeing some *really* odd behavior with Mailman 3 and Microsoft Outlook clients (even Outlook Web Access).
When messages come in with a subject prefix, of any way shape or form, Microsoft Outlook seems to *completely strip* the prefixes from any "reply" sent, which could be problematic.
While the "In-Reply-To" header is still intact and such, Microsoft just seems to 'strip' prefixes from subject lines and that causes a problem in some cases.
Has anyone observed this behavior before? If so, have you found any workarounds?
Thomas
After fixing all issues with mailman I want to reduce the chance for email
being marked as spam, especially from Gmail. I have added SPF and DKIM
records and I am now using dkimvalidator to debug the emails being sent.
Here is what I'm getting from spam evaluation:
*0.3 FROM_LOCAL_HEX From: localpart has long hexadecimal sequence*
My guess is that the From address is very large, for example:
mylist-confirm+3eafa5bd24e52738c900e2e3fd05e366b7ea7580(a)myproject.eu
Is there any way to mitigate this problem?
Thank you,
*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
>
This is the first time I am seeing this with MM3 so maybe it's something
new in the latest releases?
Using the virtualenv method to install MM3 in a fresh Debian 12 VM, I have
run into an error while starting the mailman3 service.
I cannot figure out what this error means.
root@debian12:/home/wash# systemctl status mailman3.service
× mailman3.service - GNU Mailing List Manager
Loaded: loaded (/etc/systemd/system/mailman3.service; enabled; preset:
enabled)
Active: failed (Result: exit-code) since Thu 2023-10-26 09:36:41 EAT;
8s ago
Process: 1893842 ExecStart=/opt/mailman/venv/bin/mailman start
(code=exited, status=1/FAILURE)
CPU: 789ms
Oct 26 09:36:41 debian12.wash.lan mailman[1893842]: dbapi =
dbapi_meth(**dbapi_args)
Oct 26 09:36:41 debian12.wash.lan mailman[1893842]:
^^^^^^^^^^^^^^^^^^^^^^^^
Oct 26 09:36:41 debian12.wash.lan mailman[1893842]: File
"/opt/mailman/venv/lib/python3.11/site-packages/sqlalchemy/dialects/postgresql/psycopg2.py",
line 690, in import_dbapi
Oct 26 09:36:41 debian12.wash.lan mailman[1893842]: import psycopg2
Oct 26 09:36:41 debian12.wash.lan mailman[1893842]: File
"/opt/mailman/venv/lib/python3.11/site-packages/psycopg2/__init__.py", line
51, in <module>
Oct 26 09:36:41 debian12.wash.lan mailman[1893842]: from
psycopg2._psycopg import ( # noqa
Oct 26 09:36:41 debian12.wash.lan mailman[1893842]: SystemError:
initialization of _psycopg raised unreported exception
Oct 26 09:36:41 debian12.wash.lan systemd[1]: mailman3.service: Control
process exited, code=exited, status=1/FAILURE
Oct 26 09:36:41 debian12.wash.lan systemd[1]: mailman3.service: Failed with
result 'exit-code'.
Oct 26 09:36:41 debian12.wash.lan systemd[1]: Failed to start
mailman3.service - GNU Mailing List Manager.
No log entry in any of the log files in /opt/mailman/mm/var/logs/.
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
]
I do not find this nor in web interface neither in command line utility.
Thank you best regards
Roberto Burceni
Servizio informatico sezionale
Tel. 0302209417 (lunedì e giovedì mattina dalle 9:00 alle 13:00, martedì emercoledì pomeriggio dalle 14:00 alle 18:00
E-mail:
servizioinformatico(a)uicibrescia.it
Sito web:
https://www.uicibrescia.it
I want to add a custom handler that implements customized thread IDs in
the system. I already have the DB logic worked out, but the
documentation for plugins is NOT clear on how to define a handler in a
plugin, nor does the example plugin in the documentation on Gitlab have
any custom handlers.
I'm looking to add a custom handler so that the private pipeline for
threaded-subject-list can use thread-subject (the custom handler)
instead of subject-prefix (builtin).
I'm unclear how to add this properly in a plugin that would be read
properly by Mailman, though.
Any tips on the filestructure needed for the Python code/plugin package
in order to properly be set up and work?
Thomas
I'm on the latest mailman installation in a HestiaCP server. The past few
days I have been investigating some spam issues and by using
dkimvalidator.com
I found the following:
0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily
valid
-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature
-1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list
manager* 3.2 HELO_DYNAMIC_IPADDR Relay
HELO'd using suspicious hostname (IP
addr 1)*
Note the last line on the above debug information which raises the spam
score of the email.
Some research showed me that I needed a rDNS entry in my server. I'm on a
Hetzner cloud VM so I used the Hetzner console to change the rDNS entry
from:
static.XXX.XXX.XXX.XXX.clients.your-server.de
to my initial server hostname for example:
*hestia.myserver.com <
http://hestia.myserver.com
>*
However, after some propagation, I found today that even though I can send
email to any normal address created in the server's control panel, mailing
list emails do not get sent.
I see the following in the logs:
Mailman SMTP log:
Oct 24 14:17:47 2023 (3759611)
<169814622178.3759638.4589434779084932533@localhost> *response exception:
(550, b'Helo name contains an IP address (HELO was [127.0.0.1]) and not is
valid'*, 'testlist-bounces+myusername=myproject.eu(a)myproject.eu')
Oct 24 14:17:47 2023 (3759611)
<169814622178.3759638.4589434779084932533@localhost> smtp to
testlist(a)myproject.eu for 1 recips, completed in 45.07745146751404 seconds
Oct 24 14:17:47 2023 (3759611)
<169814622178.3759638.4589434779084932533@localhost> post to
testlist(a)myproject.eu from
testlist-confirm+07d3315fa11a75588857fc93d1832ba74fb09fdd(a)myproject.eu,
1633 bytes, 1 failures
Oct 24 14:17:47 2023 (3759611)
<169814622178.3759638.4589434779084932533@localhost> delivery to
myusername(a)myproject.eu failed with code 550, b*'Helo name contains an IP
address (HELO was [127.0.0.1]) and not is valid'*
Exim4 log:
2023-10-24 14:17:47 H=([127.0.0.1]) [XXX.XXX.XXX.XXX] rejected MAIL
<testlist-bounces+myusername=myproject.eu(a)myproject.eu>: *Helo name
contains an IP address (HELO was [127.0.0.1]) and not is valid*
The weird thing is that when I do a
mailman-web sendtestemail
this email is sent successfully.
Also please note that before the rDNS change I did not have an issue with
mail sending.
Last but not least, after some search I set in Exim4 the following:
PRIMARY_HOST_NAME = *hestia.myserver.com <
http://hestia.myserver.com
>*
Any help would be greatly appreciated.
*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
>
The list is not yet used (i.e. "inactive"), but clearly flagged as " Show list on index page = no"
I regard this as a bug.