Search results for query "dO"
- 5062 messages

[MM3-users] Re: Fwd: [Django] ERROR (EXTERNAL IP): Internal Server Error: /mailman3/hyperkitty/api/mailman/archive
by Mark Sapiro
On 3/1/21 11:53 AM, David Partain via Mailman-users wrote:
> Thanks for being patient with me. I'm still baffled but might have found the problem.
>
>
> I've done the above, to no avail.
>
>
> If I look at the queries being sent to mysql, I see stuff like this:
>
>
> 174 Connect mailman3web@localhost<mailto:mailman3web@localhost> on mailman3web using TCP/IP
>
> 174 Query SET sql_mode='STRICT_TRANS_TABLES'
>
> 174 Query COMMIT
>
> 174 Query SET AUTOCOMMIT = 0
>
> 174 Query SET AUTOCOMMIT = 1
>
> 174 Query SET AUTOCOMMIT = 0
>
>
> I note that there is nothing about the charset, so something's clearly wonky.
>
>
> As previously stated, /etc/mailman3/mailman-web.py has the right thing:
>
>
> 'OPTIONS': {
>
> 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
>
> 'charset': 'utf8mb4',
>
> },
>
>
> but that latter is having no effect.
>
>
> I then found /var/lib/ucf/cache/:etc:mailman3:mailman-web.py which doesn't have charset
>
> (but does have init_command), but I _think_ that's only about the package management system.
I think that's correct. I doubt that that's the problem, but if all else
fails, you might just remove it. I don't think that would hurt as it's
purpose is just todetect on upgrade of the package if you've changed the
file from the distributed one and ask you what you want to do about it.
> So... I found that /usr/share/mailman3-web/settings_local.py is just a link to /etc/mailman3/mailman-web.py
>
> (which obviously has the right thing), but what about the .pyc file?
>
>
> # grep -i STRICT_TRANS_TABLES /usr/share/mailman3-web/settings_local.pyc
>
> Binary file /usr/share/mailman3-web/settings_local.pyc matches
>
> # grep -i charset /usr/share/mailman3-web/settings_local.pyc
>
> #
>
>
> It ain't in the .pyc file. Am I overly optimistic that that might the be problem?
>
>
> If so, I'd be grateful if someone'd tell the newbie how to recreate that file without
>
> trashing something.
This is a bit strange: Here's how it works.
.pyc files are byte-compiled versions of the corresponding .py file.
When Python runs or imports from a .py file, it first looks for a
corresponding .pyc file and if that is as new or newer than the .py, it
uses the .pyc. If not, it uses the .py and byte-compiles it and if it
has permission, writes an updated .pyc
Except recent Python3 (at least I think 3.5 and newer doesn't use a .pyc
in the same directory as the .py Its uses a __pycache__ directory in the
same directory as the .py and within that directory a file like in this
case settings_local.cpython-37.pyc (or whatever the python version is)
In any case, I would remove the existing settings_local.pyc. That can't
hurt, but I'm curious what
ls -lR /usr/share/mailman3-web/
shows.
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
4 years, 1 month

[MM3-users] Re: Mailman 3 Status Update Please?
by Abhilash Raj
Hi David,
On Thu, Jul 20, 2017, at 12:47 PM, ddw David Wilson wrote:
> Mailman 3 Status Update Please
>
> I have been following the progress and difficulties with great interest
> as many struggle to implement the new version of the great Mailman 3
> list-server software. Last year about this time I posed some questions
> regarding the current development status and recognize that many
> additional problems seem to get in the way of actually working on long
> term big picture issues.
>
> From my perspective of being an senior (ie overaged) person desirous of
> implementing fully-featured, capable, scalable, reliable, secure
> applications such as Mailman, I am convinced that I am thoroughly over
> my head.
>
> From my limited perspective, it would seem to me that a 'nice to have'
> system would incorporate the following.
>
> 1. An open container standard configurable system install, compatible
> with different web & mail servers, DB utilities, etc;
This already exists as of today, there are some open bugs and issues but
nothing that would prevent you from using it right now. You can follow
the documentation for the container images here[1] and look at the
issues on the corresponding Github project.
It should be compatible with major web & mail server and databases.
[1]: https://asynchronous.in/docker-mailman/
> 2. Python 3 version Django utilities for archiving and mail list name
> management;
This is in the Roadmap and on high priority now that we have Mailman 3.1
out.
> 3. A design/plan from an inside expert perspective stating costs, time
> and resources to implement the plan, incorporating crowdfunding to
> pay for project.
> 4. As a backup incentive to the crowdfunding plan might be the offer of
> an expert to set up a system for each significant amount donated,
> say US$1,000, such as might be accomplished by an SSL session on the
> target computer/server after the user has specified all necessary
> detail as required in a template.
AFAIK the Core developers aren't providing any services for Mailman 3 as
of now.
>
> I am sure that the program author and other major contributors could
> greatly enhance this list.
>
> In summary, I guess what I am requesting is an overview forecast by half
> year period and out for the next two years?
>
> Please share the big picture?
There are some TODO items that we have talked about but they aren't set
as hard goals with deadlines.
Most important of it is adding more features to Postorius (the Web
Frontend) so as to accomplish everything one would want to interact with
Mailman Core. One missing feature of the top of my head is the
customizing the template.
Fixing the upgrade path from Mailman 2 is another important issue.
Other changes have more to do with the quality of code and probably more
robust testing of the different components.
Another important thing would be to have more user documentation for
different management related tasks, like a List Administrator Manual.
Apart from this, I can't think anything more as of now. Others might
step in if they feel there is something missing in the list.
--
thanks,
Abhilash Raj
7 years, 9 months

[MM3-users] Re: Custom templates (was: Re: Re: nginx configuration on a multitasking server)
by Mark Sapiro
On 1/14/22 11:56 AM, David Newman wrote:
>
> I created a pending subscription request on a test list. Here is the
> text I'm using in a file called 'list:admin:action:subscribe.txt' (minus
> the rows of hypens):
>
> ----------
>
>
> As list administrator, your authorization is required for a mailing list
> subscription request approval:
>
> For: $member
> List: $listname
>
> At your convenience, visit:
>
> https://${domain}/mailman/admindb/lists/${short_listname}.${domain}/
This looks like a Mailman 2.1 URL. Are you sure you don't want something
like
https://${domain}/mailman3/lists/${short_listname}.${domain}/
>
> to approve or deny the request.
>
> ----------
>
> Instead the message that goes out at midnight daily reads like this:
That's a different message. It is sent from the `mailman notify` command
run by cron. It's built from the list:admin:notice:pending template.
>
> On successive nights I have placed copies of the
> 'list:admin:action:subscribe.txt' file above in these locations:
>
> mm/var/templates/lists/test.lists.domain.tld/en
I hope you mean
/opt/mailman/mm/var/templates/lists/test.lists.domain.tld/en
> /opt/mailman/mm/var/templates/site/en
Either of those should work. The lists one will take priority over the
site one for that list.
> and then in Postorius, with the same contents as above.
If you set a template in Postorius, it takes priority. If you later
decide you want to use one in /opt/mailman/mm/var/templates/ you have to
delete the postorius one.
> The file
> versions are owned by the mailman user, and have 0644 permissions. Not
> sure this is necessary but I've restarted the mailman3 and mailmanweb
> services each time after a change.
>
> There is no sign of trouble in the MM3 or web logs. The only thing I see
> is in the Postfix log, where the shorter and less helpful message goes
> out each night. I don't see anything in the template docs about this.
>
> Questions:
>
> 1. What to do to get the custom message working?
It should work. I suspect you need to go to the list's Settings ->
Automatic Responses and set `Admin immed notify` to Yes.
> 2. Is there a way to trigger a subscribe reminder for one list only?
If by subscribe reminder you mean the `list:admin:action:subscribe.txt`
message, yes that's the above list setting. If you mean the one sent
from the `mailman notify` command, see `mailman notify --help` for the
options. You can specify one or more lists (default is all lists) via
options and put them in your cron.
> Asking because there are other lists on this server with other requests
> pending, and I don't want to bother other moderators with multiple
> reminders per day. Not a big deal, but it would be nice to test this
> with one list rather than waiting up to 24 hours after each change.
You can test `mailman notify` at any time by running it by hand.
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
3 years, 3 months

[MM3-users] Re: Help with installing Postorius and Hyperkitty on Ubuntu 19
by Abhilash Raj
On Sat, Jun 8, 2019, at 2:12 AM, andrew.bernard(a)gmail.com wrote:
> I'm new to Mailman. I have a Ubuntu 19 production server. I attempted
> to get Mailman 3 and the web components going with the system packages,
> but I encountered a few showstopper errors (such as indexing not
> working at all) which I know have been fixed in the codebase. To that
> end I erased my installation, and installed mailman from the gitlab
> source. That all works much more nicely now and I feel I have a lot
> more control of the layout of all the files (the various Ubuntu
> packages smear the parts all over the place, confusingly).
>
> Now I want to get Postorius and Hyperkitty going again, independently
> of Ubuntu packages. I would like to run Postorius and Hyperkitty under
> one Django project. So I downloaded the git source for mailman_web. I
> do not know if this is the right way to install.
Mailman Web works okay, there are very few things actually in there. If
you want to install things from source, consider using the mailman_suite
project as a starting point.
https://gitlab.com/mailman/mailman-suite
Mark wrote down his experience installing Mailman 3 on two machines,
which is currently running this very list.
https://wiki.list.org/DOC/Mailman%203%20installation%20experience
> I am partially familiar with Django, but to come to the point, I have
> no idea once having obtained the source from git how to setup and
> install the project, where it lives in the filesystem, and so on. Are
> there any pointers to help in this area? The very nice readthedocs
> format files for Postorius and Hyperkitty are very silent on basic
> matters like this, which is not of much help! The git README files also
> define a new level of brevity.
>
> I need some initial hand holding here. If any help is forthcoming, such
> as links to more full documentation for newbies to Mailman, I would be
> most grateful.
I'll try to write the steps in short, let me know if you need me to
expand on any of these.
1. Choose a directory to get all the sources. I usually prefer /opt. So,
create /opt/mailman
2. Create a Python 3 virtual environment.
$ cd /opt/mailman
$ python3 -m venv vevn
$ source venv/bin/activate
3. Get all the sources and install in this virtualenv, you neeed:
1. Mailman Core (mailman/mailman)
2. Mailman Client (mailman/mailmanclient
3. Mailman-Hyperkitty (mailman/mailman-hyperkitty
4. Django-Mailman3 (mailman/django-mailman3
5. Postorius (mailman/postorius)
6. Hyperkitty (mailman/hyperkitty)
You can also just `pip` install those packages, instead of
using git sources. I would actually recommend using the
release versions if you are not ready to deal with the instability
of the git heads.
4. Finally, you need to create config files in right places:
- Mailman Core's config lives at `/etc/mailman.cfg
- Django config lives in the django project, mailman-suite.
I am not going to dive into actual runtime configuration here.
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>
--
thanks,
Abhilash Raj (maxking)
5 years, 10 months

[MM3-users] Re: Restore/export existing Mailman lists + hyperkitty archives on a new server
by Stephen J. Turnbull
Kimmo L writes:
> Our mailman + hyperkitty runs on RHEL 8 and yes, all the services are systemd format.
> Host has 8GB swap at the moment
> In addition to the above mentioned services, there is also NGINX and postfix services as well.
OK. That's helpful to know.
> > Have you modified any web pages associated with Mailman, including any
> > of the Django templates? Are there any pages with unusually long load
> > times?
> No and usually all pages are very smooth. Only if i open archives,
> then sometimes it will load like sec or three.
That's what I would expect.
> I also noticed that after midnight, if one of the mailman-web
> cronjob was finished, the free memory jumped from 100mb to 1gb.
Search indexes are quite large, and constructing them takes a lot of
concurrently active data. I'm not at all surprised that some of the
cronjobs take ~1GB.
The thing about Linux is that it hates free memory. It thinks that
memory should be used. If you open a data file, then close it, Linux
will leave it in memory along with the metadata needed to find that
memory without reading the file again. (Consider the case of a script
where the first process writes a temporary file, closes it, and exits,
then the second process opens the file and reads it. Big win, and
this is not an uncommon case.) This is what is meant by "cache" in
Linux kernel memory statistics.
> And then it will start to decrease again.
Because of caching, free memory is not the right statistic to look at
to check for memory leaks when you're running Linux. It's free +
cache. If that total consistently decreases, you have either a leak or
a process that's building a large data structure. For example, when
the cronjobs go on their midnight run, I'm sure you see not only free
memory decrease, but cache as well. Then when they're done, boom! you
see free memory jump by ~1GB.
When a program builds a large structure in memory, it does so because
it needs to write to it a lot. It's definitely volatile during the
run, and normally it's variable from run to run. So there's no
provision for caching it: when a program the creates a large data
structure exits, that memory is returned to the free pool. In fact,
how do programs cache such structures? They write them to files! So
the first run doesn't use the kernel cache for that data, but the
second run checks for the file, reads it, and after that it will be in
the kernel's cache until some process demands the memory.
> I will try to investigate little bit more and play little bit with
> the services to be sure, that the issue is related with mailman or
> gunicorn or with something else.
Write a script that prints free + cache and the top ten processes from
ps, sorted by VM size and also by RSS size. Run this every 15 minutes
or so, it should help catch the culprit.
Steve
2 years, 8 months

[MM3-users] Apache+mod_wsgi issue
by Odhiambo Washington
Still on my MM3 learning path.
I mostly have everything running without errors - even uwsgi is starting
without errors after I followed the fix from the discussion at:
https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/thread/…
I have standardized all the files in /opt/mailman/mm/ because this is
FreeBSD and our configs for user-installed apps are usually supposed
to go to /usr/local/etc/.
My VHOST configuration is the exact replica of
https://wiki.list.org/DOC/Mailman%203%20installation%20experience?action=At…
with the only change being the Python version from 3.6 to 3.9.
My challenge now is to get Apache+mod_uwsgi to serve my pages, but I am
hitting the error below which has gotten me stuck.
Thanking you in advance for your advice on how to overcome this.
[Thu Dec 22 14:21:22.758277 2022] [wsgi:info] [pid 4288] [remote
197.232.81.246:15107] mod_wsgi (pid=4288, process='mailman-web',
application='mm3-lists.kictanet.or.ke|/mailman3'): Loading Python script
file '/opt/mailman/mm/wsgi.py'.
[Thu Dec 22 14:21:23.039999 2022] [wsgi:error] [pid 4288] [remote
197.232.81.246:15107] mod_wsgi (pid=4288): Failed to exec Python script
file '/opt/mailman/mm/wsgi.py'.
[Thu Dec 22 14:21:23.040054 2022] [wsgi:error] [pid 4288] [remote
197.232.81.246:15107] mod_wsgi (pid=4288): Exception occurred processing
WSGI script '/opt/mailman/mm/wsgi.py'.
[Thu Dec 22 14:21:23.040841 2022] [wsgi:error] [pid 4288] [remote
197.232.81.246:15107] Traceback (most recent call last):
[Thu Dec 22 14:21:23.040914 2022] [wsgi:error] [pid 4288] [remote
197.232.81.246:15107] File "/opt/mailman/mm/wsgi.py", line 38, in <module>
[Thu Dec 22 14:21:23.040921 2022] [wsgi:error] [pid 4288] [remote
197.232.81.246:15107] application = get_wsgi_application()
[Thu Dec 22 14:21:23.040929 2022] [wsgi:error] [pid 4288] [remote
197.232.81.246:15107] File
"/opt/mailman/mm/venv/lib/python3.9/site-packages/django/core/wsgi.py",
line 12, in get_wsgi_application
[Thu Dec 22 14:21:23.040934 2022] [wsgi:error] [pid 4288] [remote
197.232.81.246:15107] django.setup(set_prefix=False)
[Thu Dec 22 14:21:23.040941 2022] [wsgi:error] [pid 4288] [remote
197.232.81.246:15107] File
"/opt/mailman/mm/venv/lib/python3.9/site-packages/django/__init__.py", line
19, in setup
[Thu Dec 22 14:21:23.040945 2022] [wsgi:error] [pid 4288] [remote
197.232.81.246:15107] configure_logging(settings.LOGGING_CONFIG,
settings.LOGGING)
[Thu Dec 22 14:21:23.040952 2022] [wsgi:error] [pid 4288] [remote
197.232.81.246:15107] File
"/opt/mailman/mm/venv/lib/python3.9/site-packages/django/conf/__init__.py",
line 92, in __getattr__
[Thu Dec 22 14:21:23.040957 2022] [wsgi:error] [pid 4288] [remote
197.232.81.246:15107] self._setup(name)
[Thu Dec 22 14:21:23.040964 2022] [wsgi:error] [pid 4288] [remote
197.232.81.246:15107] File
"/opt/mailman/mm/venv/lib/python3.9/site-packages/django/conf/__init__.py",
line 79, in _setup
[Thu Dec 22 14:21:23.040968 2022] [wsgi:error] [pid 4288] [remote
197.232.81.246:15107] self._wrapped = Settings(settings_module)
[Thu Dec 22 14:21:23.040975 2022] [wsgi:error] [pid 4288] [remote
197.232.81.246:15107] File
"/opt/mailman/mm/venv/lib/python3.9/site-packages/django/conf/__init__.py",
line 190, in __init__
[Thu Dec 22 14:21:23.040979 2022] [wsgi:error] [pid 4288] [remote
197.232.81.246:15107] mod =
importlib.import_module(self.SETTINGS_MODULE)
[Thu Dec 22 14:21:23.040986 2022] [wsgi:error] [pid 4288] [remote
197.232.81.246:15107] File
"/usr/local/lib/python3.9/importlib/__init__.py", line 127, in import_module
[Thu Dec 22 14:21:23.040990 2022] [wsgi:error] [pid 4288] [remote
197.232.81.246:15107] return _bootstrap._gcd_import(name[level:],
package, level)
[Thu Dec 22 14:21:23.040997 2022] [wsgi:error] [pid 4288] [remote
197.232.81.246:15107] File "<frozen importlib._bootstrap>", line 1030, in
_gcd_import
[Thu Dec 22 14:21:23.041004 2022] [wsgi:error] [pid 4288] [remote
197.232.81.246:15107] File "<frozen importlib._bootstrap>", line 1007, in
_find_and_load
[Thu Dec 22 14:21:23.041012 2022] [wsgi:error] [pid 4288] [remote
197.232.81.246:15107] File "<frozen importlib._bootstrap>", line 984, in
_find_and_load_unlocked
[Thu Dec 22 14:21:23.041064 2022] [wsgi:error] [pid 4288] [remote
197.232.81.246:15107] ModuleNotFoundError: No module named 'settings'
--
Best regards,
Odhiambo WASHINGTON,
Nairobi,KE
+254 7 3200 0004/+254 7 2274 3223
"Oh, the cruft.", egrep -v '^$|^.*#' ¯\_(ツ)_/¯ :-)
2 years, 4 months

[MM3-users] Re: Mailman upgrade results in page not found error
by Guillermo Hernandez (Oldno7)
El 3/11/22 a las 14:00, Andrew Hodgson escribió:
> Hi.
>
> Just doing the Mailman suite upgrade on my small installation I use for test purposes.
>
> Steps include:
> Run backup script
> Stop services
> Mv venv venv-old
> python3 -m venv --system-site-packages --symlinks venv
> source venv/bin/activate
> pip install -U pip
> pip install mailman mailman-hyperkitty hyperkitty postorius whoosh
> deactivate
> ./bin/Django-admin collectstatic
> ./bin/Django-admin migrate
>
> At this step I got an error regarding the import of URLs, a quick Google suggested this was because the new venv has upgraded to Django 4.0. I downloaded the urls.py from the mailman-web Git repo (I should migrate to this at some point I know) and replaced my version with this one. This allowed the migrate to run correctly.
I found the same error, I modified urls.py in the way below:
###
from django.conf import settings
### mod. 30/10/22
###from django.conf.urls import include, url
from django.conf.urls import include
from django.urls import re_path as url
#####
Leaving the rest of original urls.py lines unmodified.
>
> Once services were up everything worked as expected except for the web page. If you go tohttps://lists.hodgsonfamily.org you get a Postorius page not found error, however if you click on the Mailman logo you get to the correct place. I think this is a problem with the new urls.py I downloaded, what is the best way to restore the old behaviour of havinghttps://lists.hodgsonfamily.org going to the correct place?
>
> Urls.py:
> # -*- coding: utf-8 -*-
> # Copyright (C) 1998-2016 by the Free Software Foundation, Inc.
> #
> # This file is part of Postorius.
> #
> # Postorius is free software: you can redistribute it and/or modify it under
> # the terms of the GNU General Public License as published by the Free
> # Software Foundation, either version 3 of the License, or (at your option)
> # any later version.
> #
> # Postorius is distributed in the hope that it will be useful, but WITHOUT
> # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
> # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
> # more details.
> #
> # You should have received a copy of the GNU General Public License along with
> # Postorius. If not, seehttp://www.gnu.org/licenses/.
>
>
> from django.conf.urls import include
> from django.contrib import admin
> from django.urls import path, reverse_lazy
> from django.views.generic import RedirectView
>
> urlpatterns = [
> path(
> '',
> RedirectView.as_view(url=reverse_lazy('list_index'), permanent=True),
> ),
> path('mailman3/', include('postorius.urls')),
> path('archives/', include('hyperkitty.urls')),
> path('', include('django_mailman3.urls')),
> path('accounts/', include('allauth.urls')),
> path('admin/', admin.site.urls),
> ]
>
> Thanks.
> Andrew.
> _______________________________________________
> Mailman-users mailing list --mailman-users(a)mailman3.org
> To unsubscribe send an email tomailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>
--
___________________________________________
Mailman's content filtering has removed the
following MIME parts from this message.
Content-Type: image/png
Name: firma-GHP-emails.png
Replaced multipart/alternative part with first alternative.
2 years, 5 months

[MM3-users] Re: Transaction failed: Duplicate header 'DKIM-Signature'
by Mohsen Masoudfar
________________________________
From: Mark Sapiro <mark(a)msapiro.net>
Sent: Thursday, April 13, 2023 1:11 PM
To: mailman-users(a)mailman3.org <mailman-users(a)mailman3.org>
Subject: [MM3-users] Re: Transaction failed: Duplicate header 'DKIM-Signature'
Thank you Mark,
please see below the responses to your questions.
On 4/13/23 07:25, Mohsen Masoudfar wrote:
> I am observing the following error message in the logs for one specific list:
>
> = = =
> relay=email-smtp.us-east-1.amazonaws.com[35.168.84.210]:587, delay=0.27, delays=0.05/0.04/0.12/0.06, dsn=5.0.0, status=bounced (host email-smtp.us-east-1.amazonaws.com[35.168.84.210] said: 554 Transaction failed: Duplicate header 'DKIM-Signature'. (in reply to end of DATA command))
> = = =
This is non-compliant. Various parts of RFC6376, e.g. sections 5.6 and
6.1 clearly anticipate that a message can contain multiple
DKIM-Signature: headers.
> As I mentioned, this happens for one single list only and this list has not been able to send any email for a week now. After checking mailman-users, I came across the following setting, which seems kind of related to my issue:
Is email-smtp.us-east-1.amazonaws.com the outgoing MTA for Mailman. I.e the value reported by `mailman conf -k smtp_host` or perhaps smtp_host is a local MTA which is configured to relay via email-smtp.us-east-1.amazonaws.com?
> > # mailman conf -k smtp_host
> > [mta] smtp_host: localhost
In what log is that message?
> > in /var/log/mail.log
Presumably this error occurs on Mailman's attempt to deliver the mail to `smtp_host`. Otherwise, I don't see how it affects all mail from this list, but I also don't understand why this list's delivery would be different from other lists.
Postfix is running on the local host and in /etc/postfix/main.cf, this is defined:
relayhost = [email-smtp.us-east-1.amazonaws.com]:587
> = = =
> To distribute messages with valid DKIM signatures, I set
> remove_dkim_headers: yes
> in /etc/mailman3/mailman.cf
> = = =
>
> Here are my questions:
> 1 - I have around 100 lists and this happens for this one list only, so, I am not sure, if the issue might be solved with this change.
This setting will remove all DKIM headers from the message as Mailman receives it. Then, it depends on how and how many DKIM signatures are added to the outgoing mail.
> > could this have any side effects? Is there a reason that this is NOT set per default?
> 2 - Because this happens for this one list only, I would rather change it for this one list only, is there any option available changing it for one list only and not for the whole server?
No, there is no such option.
The fact that this happens for only one list is very strange. I would need more information to understand why. Do these messages get queued in Mailman's retry queue? If so, if you examine one such message with `mailman qfile`, what are the complete headers from that message.
> > /var/lib/mailman3/queue/retry is empty
Thanks again.
M
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
_______________________________________________
Mailman-users mailing list -- mailman-users(a)mailman3.org
To unsubscribe send an email to mailman-users-leave(a)mailman3.org
https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.mai…<https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/>
Archived at: https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.mai…<https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…>
This message sent to mmasoudf(a)aaas.org
2 years

[MM3-users] Re: How To Install Mailman 3 on Debian 10 (Complete Guide)
by Brian Carpenter
On 2/25/21 8:28 PM, Abhilash Raj wrote:
> Thanks Brian, this looks quite comprehensive in the details. The only
> thing I am a bit concerned about is granting sudo privileges to the
> Mailman user. It really shouldn't have sudo given that Mailman and
> Django are supposed to run as mailman user. Any compromise of
> the Django application will provide the attacker root on the machine.
Thanks for pointing that out. I have removed that step. It really wasn't
needed.
> Is there a specific reason that you chose to go with an entirely new doc
Yes. Just from observing the communications on this list, there are
multiple ways to install Mailman 3 which produces installation issues,
database problems, outdated apps, etc. My document produces a VERY
stable installation of Mailman 3 and one that is easy to maintain and
update. It is also very comprehensive covering not just Mailman Suite,
but the configuration of an entire server environment. Personally I
think the choice of Debian, NGINX, Postfix, and PostgreSQL makes for a
long and loving relationship with Mailman 3 but I do understand everyone
has their own environment that they want to work with. My guide
represents a very stable and easily maintained environment for me and
hopefully others.
> rather than helping to improve the existing one? Several parts of it (at
> least the ones that official guide covers) seems similar to me and is
> duplicate information that at least two people are going to spend time
> writing and maintaining in future.
Is there an official guide? See that is the problem. I did not know
there was an official guide. Because every time I tried finding
documentation in the past using Google searches, I got fed outdated
information. So for me the guide that I came up with, works great for me
and if no one else uses it, I certainly will.
Your guide, by nature has to be minimalistic to accommodate all the
various server environments out there. My is meant to be narrow but
comprehensive.
> Is it something about the contribution process to the official documentation
> that makes it hard for people to contribute? Most of the pages at
> docs.mailman3.org or come from this[1] repo and use Sphinx to build and
> REsT formatting (.rst).
>
> [1]:https://gitlab.com/mailman/mailman-suite-doc
Well I don't know much about any of the above approach to documentation.
So I would say that is a hindrance.
> I am just trying to understand how can we lower the barrier for community
> members to help contribute to existing docs instead of them having to create
> new ones. Specifically around installation, since that tends to get stale often
> when depedent packages change or a new dependency is added that
> breaks the installation.
I had to update my guide twice due to recent changes made to the
installation process such as the addition of the Dart Sass section and
the problem with the cryptography module when installing Hyperkitty.
While my guide covers these new hurdles to a new installation, I don't
think yours says anything about them. The Dart Sass section came from
Mark's comments on this list.
--
Brian Carpenter
Harmonylists.com
Emwd.com
4 years, 1 month

[MM3-users] Re: Problem replying via Hyperkitty
by Jeff
I am finally getting around to revisiting the problems I have been having with replying or posting through the web of my Mailman 3 installation. Posts or replies simply disappear. Here is the Django log section from when I did a test post today:
[26/Jul/2022:10:19:22 -0400] "GET /3.1/users/30a0c1ee3d8c4c9681cc73ad25c9b00b HTTP/1.1" 200 388 "-" "GNU Mailman REST client v3.3.3"
[26/Jul/2022:10:19:22 -0400] "GET /3.1/users/30a0c1ee3d8c4c9681cc73ad25c9b00b/addresses HTTP/1.1" 200 824 "-" "GNU Mailman REST client v3.3.3"
[26/Jul/2022:10:19:22 -0400] "POST /3.1/members/find HTTP/1.1" 200 90 "-" "GNU Mailman REST client v3.3.3"
[26/Jul/2022:10:19:22 -0400] "POST /3.1/members/find HTTP/1.1" 200 1195 "-" "GNU Mailman REST client v3.3.3"
[26/Jul/2022:10:19:22 -0400] "GET /3.1/addresses/address(a)domain.com HTTP/1.1" 200 348 "-" "GNU Mailman REST client v3.3.3"
[26/Jul/2022:10:19:22 -0400] "GET /3.1/addresses/address(a)domain.com HTTP/1.1" 200 348 "-" "GNU Mailman REST client v3.3.3"
[26/Jul/2022:10:19:22 -0400] "GET /3.1/lists/listname.lists.domain.org HTTP/1.1" 200 480 "-" "GNU Mailman REST client v3.3.3"
[26/Jul/2022:10:19:22 -0400] "GET /3.1/lists/listname(a)lists.domain.org/config HTTP/1.1" 200 3878 "-" "GNU Mailman REST client v3.3.3"
[26/Jul/2022:10:19:22 -0400] "GET /3.1/lists/listname.lists.domain.org/member/address%40domain.com HTTP/1.1" 200 544 "-" "GNU Mailman REST client v3.3.3"
Nothing at all appeared in the Mailman log or the MTA log. Does anyone have any idea what is happening to the posts or what I can do to troubleshoot?
Thanks much!
> On Jun 30, 2022, at 6:44 PM, Mark Sapiro <mark(a)msapiro.net> wrote:
>
> On 6/30/22 10:07 AM, Jeff wrote:
>> Hello Everyone,
>> A few of my users read our mailing list through Hyperkitty. Whenever they reply through the web, their replies simply disappear. One example from today was logged as follows:
>> [pid: 2287|app: 0|req: 116007/153551] xxx.xx.xx.xx () {72 vars in 1992 bytes} [Thu Jun 30 11:26:16 2022] POST /archives/list/listname(a)domainname.org/message/46WUOPZITVMKJN4TXR6CP3WMFUEAVJKD/reply => generated 3213 bytes in 70 msecs (HTTP/1.1 200) 6 headers in 188 bytes (3 switches on core 0)
>
>
> This looks like the post of the reply to HyperKitty. What does the user see in response to that?
>
> There should be a brief alert popup indicating the message was sent.
>
>
>> A couple of basic questions:
>> 1) when a users replies in this manner, does their response go to the list or to the subscriber to whom they are replying?
>
> To the list.
>
>
>> 2) what log files could I check to see what — if anything — happens to these emails?
>
> Mailman's var/logs/mailman.log, The MTA logs and the Django logs.
>
>
>> 3) Are there any settings that need to be set to make this work?
>
> There shouldn't be as long as the list and archiving work.
>
> Note, a user can select 'Use email software' when replying which should open a composition dialog in their email client to post a reply yto the list.
>
>
> --
> Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
> San Francisco Bay Area, California better use your sense - B. Dylan
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
2 years, 8 months

[MM3-users] Re: Mailman3 in dockers on EC2 - running out of memory and puking ev.ry.where.
by Danil Smirnov
Hi,
I assume micro instance has been used for obvious reason to leverage AWS
Free tier.
Unfortunately it wouldn't work for Mailman 3 w. Hyperkitty because of large
memory footprint of the applications.
However, Postorius-only version works just fine on micro instance.
I'm providing free AMIs for both cases with zero-configuration needed (but
without SES integration) in AWS Marketplace, links could be found on page
https://mailman3.com/aws/
Best regards,
Danil Smirnov
ср, 10 апр. 2019 г., 19:29 Abhilash Raj <maxking(a)asynchronous.in>:
> On Tue, Apr 9, 2019, at 2:34 PM, roger.hislop(a)is.co.za wrote:
> > Hi all -- really need some help. I'm tech literate, but definitely not
> > a sysadmin or dev.
> >
> > I'm following the tutorial at "Olay's Farmland" at
> > https://www.olay.xyz/2018/01/01/deploy-mailman-3-on-aws-using-docker/
> > which seems to be a clone of the same content here
> > https://xiaoxing.us/2018/01/01/deploy-mailman-3-on-aws-using-docker/
>
> The right place to get help regarding these guides would be the author of
> the posts, which AFAIK, have no affiliation with Mailman Core Team.
>
> On a (very) quick glance, it seems fine.
>
> > Easy enough to get most of the way ... set up EC2 instance, configure
> > SES and add DNS settings with DKIM etc. Set up Postfix, test it. All
> > working groovy.
> >
> > I run through the how to all the way through setting up the containers
> > and firing it up. This is where things start to get funky.
> >
> > Once the docker-compose is run, I run "curl
> > http://172.19.199.3:8000/postorius/lists/" to test. First time it said
> > it couldn't connect to database. So I nuked and restarted from scratch.
> > Second time it said the same thing... was reading around the place and
> > tried again, and then reran that curl and it worked -- gave me html
> > from a page. But the VM started running slowly --taking forever to
> > follow keypresses.
> >
> > Eventually became unresponsive. So I rebooted the machine via AWS
> > console, and docker ps showed only the postgres db running.
> > docker-compose ps shows
> > Name Command State
> > Ports
> >
> ------------------------------------------------------------------------------------------
> > docker-mailman_database_1 docker-entrypoint.sh postgres Up
> > 5432/tcp
> > mailman-core docker-entrypoint.sh maste ... Exit 255
> > 8001/tcp, 8024/tcp
> > mailman-web docker-entrypoint.sh uwsgi ... Exit 255
> > 8000/tcp, 8080/tcp
> >
> > So rebuilt the container -- same thing. It looks and feels like its
> > running out of memory.
> >
> > I used the compose file from
> >
> https://gist.githubusercontent.com/Yexiaoxing/833bfcc5d3e4e0c06a8b7f0bac7c4…
> (with appropriate edits).
>
>
> How much memory do yo have in your VM? Have you tried using a bigger VM?
>
> thanks
> Abhilash
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>
6 years

[MM3-users] Re: Problems after update to mailman 3.3.7
by Guillermo Hernandez (Oldno7)
El 6/12/22 a las 15:59, Danil Smirnov escribió:
> Hi Guillermo,
>
> We've faced the same issue and already reported it:
> https://gitlab.com/mailman/mailman/-/issues/1044
>
I see. Thanks, Danil, for the confirmation that I'm not alone in this..
> I would not recommend anyone using MySQL/MariaDB database engine upgrade to
> the latest version yet.
Too late for that... Doy you know what components could I downgrade to
avoid this? SQLAlchemy? Which versions of which packages could I
downgrade to work prpoerly?
Again, thanks a lot
> With my best regards,
> Danil Smirnov
> Mailman3.com
>
> On Tue, Dec 6, 2022 at 4:32 PM Guillermo Hernandez (Oldno7) via
> Mailman-users<mailman-users(a)mailman3.org> wrote:
>
>> I've getting the most strange behaviour after update to last releases.
>> In one of my mailman3 servers, the messages doesnt reach for some lists
>> (the five last ones)
>>
>> the update have not showed any error but in the var/data for the lmtp
>> and vmap postfix files mailman does not create aliases for that last 5
>> lists. Any message addressed to them is returned with a "no such user"
>> error.
>>
>> If I create a new list the system or restart mailman runners it shows
>> this error:
>>
>> Generating MTA alias maps
>> /usr/local/lib/python3.9/site-packages/pymysql/connections.py:799:
>> UserWarning: Previous unbuffered result was left incomplete
>> warnings.warn("Previous unbuffered result was left incomplete")
>>
>> I did a CHECK TABLE on mailinglists table but all seems ok.
>>
>> I tried reinstalling PyMySQL, but has no effect. (well, I tried
>> reinstalling all)
>>
>> It seems to me that something is preventing creation of that aliases, an
>> then the that last five lists are unreachable.
>>
>> I have no clue of what to do now and I'm driving crazy.
>>
>> Some direction to look for will be much apreciated.
>>
>> Thanks in advance.
>>
>> P.S.: I can access via postorius/hyperkitty to the archives of the lists
>> that are unreacheable.
>>
>>
>> --
>>
>> ___________________________________________
>> Mailman's content filtering has removed the
>> following MIME parts from this message.
>>
>> Content-Type: image/png
>> Name: firma-GHP-emails.png
>>
>> Replaced multipart/alternative part with first alternative.
>> _______________________________________________
>> Mailman-users mailing list --mailman-users(a)mailman3.org
>> To unsubscribe send an email tomailman-users-leave(a)mailman3.org
>> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>> Archived at:
>> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
>>
>> This message sent todanil(a)smirnov.la
>>
> _______________________________________________
> Mailman-users mailing list --mailman-users(a)mailman3.org
> To unsubscribe send an email tomailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> Archived at:https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/mess…
>
> This message sent toguillermo(a)querysoft.es
>
--
___________________________________________
Mailman's content filtering has removed the
following MIME parts from this message.
Content-Type: image/png
Name: firma-GHP-emails.png
Replaced multipart/alternative part with first alternative.
2 years, 4 months

[MM3-users] configuring postfix local recipient table
by Stephen J. Turnbull
Alexander Inzinger-Zrock via Mailman-users writes:
> B. /etc/postfix/main.cfg
> local_recipient_maps = proxy:unix:passwd.byname $alias_maps
> hash:/path-to-mailman/var/data/postfix_lmtp
This is the main issue for main.cfg. Others we can deal with later if
they apply to your system.
> C. aliasing, restarting services and test without ,
>
> I then restarted postfix, rebuilt the postfix aliases (command
> ''newaliases'')
These are not relevant to Mailman 3, except maybe you have an alias
for the Mailman site admin.
> and rebuilt the mailman aliases (command ''mailman aliases''),
I usually just restart Mailman instead (building the aliases is most
of the time taken up by starting Mailman with Postfix).
> D. empty /opt/mailman/mm/var/data/postfix_lmtp
>
> and then i just found out that my postfix_lmpt file was empty
1. What database are you using?[1] Is it running? If not, yes, that
file is going to be empty.
2. Do you have any lists configured for your Mailman 3 instance? If
not, that file will be empty.
3. Is Mailman running? (This probably isn't necessary, just
checking.)
4. Is there a postfix_lmtp.db file in the same place? (Postfix will
not read the plaintext version, it must be a .db file.)
> 1. could somebody suggest a way, an entry should occur in
> postfix_lmtp?
Each entry in postfix_lmtp is added to the SQL database when you
create a list, then the whole file is refreshed from the SQL database
at that time. After that, the file is refreshed from the database
every time you start Mailman or run "mailman aliases".
> 2. What would be the appropriate order to manually generate aliases?
> first: postfix-command ''newaliases'' and
It doesn't matter. newaliases only handles local aliases. Mailman
3's aliases are necessarily *virtual* aliases, and the database is
created from the postfix_lmtp file using "postmap", not "postalias".
> 3. finding traces [7] of a file called postfix.cfg
> 3.1 parameter for default lookup table type
> 3.2 pointing to command ''postmap''
Both entries must be present or Mailman will error out before creating
the postfix_lmtp file. There should be a template (actually, you can
probably use it "as is") in site-packages/mailman/mta/postfix.cfg (or
maybe in config/postfix.cfg).
This file can be located anywhere, but I recommend putting it where
mailman.cfg is (usually /etc/mailman3), and pointing to it in the
[mta] section of mailman.cfg with the full path.
> 4. to what user should the command ''postmap'' be available [8]?
The user that the "mailman" command expects to run as. Normally it is
installed with a+x in /usr/sbin, so as long as you put the full path
in postfix.cfg you'll be fine.
Footnotes:
[1] We *strongly* recommend a full-scale SQL implementation like
PostgreSQL (what the Mailman developers generally use) or one of the
MySQL family (popular but not with us for no particular reason, we
just happen to use PostgreSQL). sqlite3 is a great product, but it is
not designed for heavy concurrent usage, and a typical Mailman system
has about 15 daemons running all the time that are accessing the DB.
--
GNU Mailman consultant (installation, migration, customization)
Sirus Open Source https://www.siriusopensource.com/
Software systems consulting in Europe, North America, and Japan
19 hours, 5 minutes

[MM3-users] Re: Errors while importing mm2 list archives
by Odhiambo Washington
On Sat, Dec 10, 2022 at 9:45 PM Mark Sapiro <mark(a)msapiro.net> wrote:
> On 12/10/22 01:13, Odhiambo Washington wrote:
> > On Thu, Dec 8, 2022 at 10:41 PM Mark Sapiro <mark(a)msapiro.net> wrote:
> >>
> >> In the DATABASES['default'] definition, you need to set `'OPTIONS':
> >> {'charset': 'utf8mb4'}`
> >>
> >
> > I added that:
> >
> > [database]
> > class: mailman.database.mysql.MySQLDatabase
> > url: mysql+pymysql://mailman_user:XXXXXXXXX@localhost
> > /mailmansuite?charset=utf8mb4&use_unicode=1
>
>
> The above is for Mailman core. It doesn't affect HyperKitty. For that
> you need to look at the DATABASES definition in
> /etc/mailman3/settings.py
> <
> https://docs.mailman3.org/projects/mailman-web/en/latest/settings.html#mail…>
>
> and ensure that in addition to the other settings under `default {` you
> have
> ```
> 'OPTIONS': {'charset': 'utf8mb4'},
> ```
>
> ...
> >> You might also need to modify the tables, particularly hyperkitty_email
> >> with something like
> >> ```
> >> ALTER TABLE hyperkitty_email
> >> DEFAULT CHARACTER SET utf8mb4,
> >> MODIFY subject varchar(512)
> >> CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
> >> MODIFY content
> >> CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
> >>
> >
> >
> > So I removed my list, dropped the database, and proceeded as follows:
> >
> > create database mailmansuite CHARACTER SET utf8mb4 COLLATE
> > utf8mb4_0900_ai_ci;
> > ALTER TABLE hyperkitty_email DEFAULT CHARACTER SET utf8mb4;
> > ALTER TABLE hyperkitty_email MODIFY subject varchar(512) CHARACTER SET
> > utf8mb4 COLLATE utf8mb4_unicode_ci;
> > ALTER TABLE hyperkitty_email MODIFY content longtext CHARACTER SET
> utf8mb4
> > COLLATE utf8mb4_unicode_ci;
> > ALTER TABLE hyperkitty_email MODIFY sender_name varchar(255) CHARACTER
> SET
> > utf8mb4 COLLATE utf8mb4_unicode_ci;
> > ALTER TABLE hyperkitty_email MODIFY in_reply_to varchar(255) CHARACTER
> SET
> > utf8mb4 COLLATE utf8mb4_unicode_ci;
> >
> > I did all those (although looks overzealous) just to be on the safe
> side. I
> > have seen people putting emojis in their names.
>
>
> None of that should be necessary. `mailman-web migrate` should create
> the database and tables as needed.
>
>
> > After that, I did the mailman-web migrate, created the list, imported the
> > config from MM2 and then proceeded to import the archives.
> > However, the errors still are there, and several messages were not
> imported
>
> Do you have the OPTIONS setting in your DATABASES definition in
> settings.py?
>
Here is what I have tested lately in settings.py:
# MySQL Database setup
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mailmansuite',
'USER': 'mm3',
'PASSWORD': 'XXXXXXXXX',
'HOST': 'localhost',
'PORT': '',
'OPTIONS': {
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
'charset': 'utf8mb4',
},
}
}
I have dropped the DB, recreated, run the 'migrate', created the list,
imported config from MM2. However, nothing seems to be able to address the
errors with importing the archives.
--
Best regards,
Odhiambo WASHINGTON,
Nairobi,KE
+254 7 3200 0004/+254 7 2274 3223
"Oh, the cruft.", egrep -v '^$|^.*#' ¯\_(ツ)_/¯ :-)
2 years, 4 months

[MM3-users] Re: Hyperkitty CPU usage
by Alain Kohli
I have not seen any improvement over time, so I switched the backend to
Xapian. That works like a charm now, I guess our lists were indeed just
too busy for whoosh.
On 5/7/19 5:15 PM, Alain Kohli wrote:
> Well, I understand that it might take a while, but the process is
> running for over 200h now, I doubt it can really take _that_ long if
> everything is working properly. Especially because the rebuild_index
> command is only taking a few hours at most, doesn't that essentially
> do the same?
>
> We have ~700k messages in ~300 mailing lists in case that helps you
> estimate how long it could take. I can take a look at alternative
> backends, though.
>
>
> On 5/7/19 4:32 PM, Abhilash Raj wrote:
>> On Sat, Apr 27, 2019, at 6:22 PM, Alain Kohli wrote:
>>> I'm running a custom image which is based on an older version of the
>>> one
>>> here: https://github.com/maxking/docker-mailman. I attached it below.
>>> But I separated postorius and hyperkitty, so hyperkitty is running in
>>> its own container. I'm deploying the image with a plain 'docker run'
>>> behind nginx. I made fulltext_index persistent now, but it didn't get
>>> populated with anything yet. I don't really have an error traceback
>>> because there is never an error thrown. The only thing with some
>>> content
>>> is uwsgi-error.log, which you can find below. I'm also still getting
>>> the
>>> "A string literal cannot contain NUL (0x00) characters." messages. I
>>> also noticed that it takes incredibly long for the webinterface to load
>>> (several minutes) even though there doesn't seem to be any process
>>> consuming notable resources apart from the minutely job.
>>>
>>> Funnily enough, I have the exact same image deployed on a second server
>>> as well for testing. On that one everything works fine. The only
>>> difference is that on the problematic one I have a lot more mailing
>>> lists/archives and that I imported them from mailman2. Could something
>>> have gone wrong during the import? I used the regular hyperkitty_import
>>> command.
>> Yes, this is because `whoosh`, the library set by default to run
>> fulltext
>> indexing is a pure python implementation and quite slow in busy lists.
>>
>> We do support more backends though, see [1] for a list of all the
>> supported
>> search backends. Something like Xapian(C++) or Elasticsearch/Solr(Java)
>> should be much better in terms of performance.
>>
>> [1]:
>> https://django-haystack.readthedocs.io/en/master/backend_support.html
>>
>>> uwsgi-error.log:
>>>
>>> *** Starting uWSGI 2.0.18 (64bit) on [Sat Apr 27 22:50:17 2019]
>>> ***
>>> compiled with version: 6.4.0 on 27 April 2019 22:48:42
>>> os: Linux-4.9.0-8-amd64 #1 SMP Debian 4.9.144-3.1 (2019-02-19)
>>> nodename: hyperkitty.docker
>>> machine: x86_64
>>> clock source: unix
>>> detected number of CPU cores: 4
>>> current working directory: /home/hyperkitty
>>> detected binary path: /usr/local/bin/uwsgi
>>> !!! no internal routing support, rebuild with pcre support !!!
>>> setgid() to 82
>>> setuid() to 82
>>> chdir() to /home/hyperkitty
>>> your memory page size is 4096 bytes
>>> detected max file descriptor number: 1048576
>>> lock engine: pthread robust mutexes
>>> thunder lock: disabled (you can enable it with --thunder-lock)
>>> uwsgi socket 0 bound to TCP address 0.0.0.0:8081 fd 8
>>> uwsgi socket 1 bound to TCP address 0.0.0.0:8080 fd 9
>>> Python version: 3.6.8 (default, Jan 30 2019, 23:54:38) [GCC 6.4.0]
>>> Python main interpreter initialized at 0x55dfaa41c980
>>> python threads support enabled
>>> your server socket listen backlog is limited to 100 connections
>>> your mercy for graceful operations on workers is 60 seconds
>>> [uwsgi-cron] command "./manage.py runjobs minutely" registered as
>>> cron task
>>> [uwsgi-cron] command "./manage.py runjobs quarter_hourly"
>>> registered
>>> as cron task
>>> [uwsgi-cron] command "./manage.py runjobs hourly" registered as
>>> cron
>>> task
>>> [uwsgi-cron] command "./manage.py runjobs daily" registered as
>>> cron task
>>> [uwsgi-cron] command "./manage.py runjobs monthly" registered as
>>> cron task
>>> [uwsgi-cron] command "./manage.py runjobs weekly" registered as
>>> cron
>>> task
>>> [uwsgi-cron] command "./manage.py runjobs yearly" registered as
>>> cron
>>> task
>>> mapped 208576 bytes (203 KB) for 4 cores
>>> *** Operational MODE: threaded ***
>>> WSGI app 0 (mountpoint='') ready in 1 seconds on interpreter
>>> 0x55dfaa41c980 pid: 1 (default app)
>>> *** uWSGI is running in multiple interpreter mode ***
>>> spawned uWSGI master process (pid: 1)
>>> spawned uWSGI worker 1 (pid: 40, cores: 4)
>>> Sat Apr 27 22:50:18 2019 - [uwsgi-cron] running "./manage.py
>>> runjobs
>>> minutely" (pid 45)
>>> [uwsgi-daemons] spawning "./manage.py qcluster" (uid: 82 gid: 82)
>>> 22:50:21 [Q] INFO Q Cluster-47 starting.
>>> 22:50:21 [Q] INFO Process-1:1 ready for work at 59
>>> 22:50:21 [Q] INFO Process-1:2 ready for work at 60
>>> 22:50:21 [Q] INFO Process-1:3 ready for work at 61
>>> 22:50:21 [Q] INFO Process-1:4 ready for work at 62
>>> 22:50:21 [Q] INFO Process-1:5 monitoring at 63
>>> 22:50:21 [Q] INFO Process-1 guarding cluster at 58
>>> 22:50:21 [Q] INFO Process-1:6 pushing tasks at 64
>>> 22:50:21 [Q] INFO Q Cluster-47 running.
>>> 22:59:31 [Q] INFO Enqueued 3403
>>> 22:59:31 [Q] INFO Process-1:1 processing [update_from_mailman]
>>> 22:59:33 [Q] INFO Processed [update_from_mailman]
>>> Sat Apr 27 23:00:00 2019 - [uwsgi-cron] running "./manage.py
>>> runjobs
>>> quarter_hourly" (pid 73)
>>> Sat Apr 27 23:00:00 2019 - [uwsgi-cron] running "./manage.py
>>> runjobs
>>> hourly" (pid 74)
>>> [uwsgi-cron] command "./manage.py runjobs quarter_hourly" running
>>> with pid 73 exited after 64 second(s)
>>> 23:01:28 [Q] INFO Enqueued 3404
>>> 23:01:29 [Q] INFO Process-1:2 processing
>>> [rebuild_mailinglist_cache_recent]
>>> [uwsgi-cron] command "./manage.py runjobs hourly" running with pid
>>> 74 exited after 91 second(s)
>>> Sat Apr 27 23:01:36 2019 - uwsgi_response_write_body_do(): Broken
>>> pipe [core/writer.c line 341] during GET / (212.203.58.154)
>>> OSError: write error
>>> 23:01:36 [Q] INFO Processed [rebuild_mailinglist_cache_recent]
>>> Sat Apr 27 23:15:00 2019 - [uwsgi-cron] running "./manage.py
>>> runjobs
>>> quarter_hourly" (pid 88)
>>> [uwsgi-cron] command "./manage.py runjobs quarter_hourly" running
>>> with pid 88 exited after 4 second(s)
>>> 23:28:24 [Q] INFO Enqueued 3405
>>> 23:28:24 [Q] INFO Process-1:3 processing [update_from_mailman]
>>> 23:28:25 [Q] INFO Processed [update_from_mailman]
>>> Sat Apr 27 23:30:00 2019 - [uwsgi-cron] running "./manage.py
>>> runjobs
>>> quarter_hourly" (pid 96)
>>> [uwsgi-cron] command "./manage.py runjobs quarter_hourly" running
>>> with pid 96 exited after 4 second(s)
>>> 23:44:40 [Q] INFO Enqueued 3406
>>> 23:44:40 [Q] INFO Process-1:4 processing [update_from_mailman]
>>> 23:44:41 [Q] INFO Processed [update_from_mailman]
>>> Sat Apr 27 23:45:00 2019 - [uwsgi-cron] running "./manage.py
>>> runjobs
>>> quarter_hourly" (pid 104)
>>> [uwsgi-cron] command "./manage.py runjobs quarter_hourly" running
>>> with pid 104 exited after 4 second(s)
>>> Sun Apr 28 00:00:00 2019 - [uwsgi-cron] running "./manage.py
>>> runjobs
>>> quarter_hourly" (pid 113)
>>> Sun Apr 28 00:00:00 2019 - [uwsgi-cron] running "./manage.py
>>> runjobs
>>> hourly" (pid 114)
>>> Sun Apr 28 00:00:00 2019 - [uwsgi-cron] running "./manage.py
>>> runjobs
>>> daily" (pid 115)
>>> Sun Apr 28 00:00:00 2019 - [uwsgi-cron] running "./manage.py
>>> runjobs
>>> weekly" (pid 116)
>>> [uwsgi-cron] command "./manage.py runjobs quarter_hourly" running
>>> with pid 113 exited after 55 second(s)
>>> [uwsgi-cron] command "./manage.py runjobs weekly" running with pid
>>> 116 exited after 55 second(s)
>>> 00:01:36 [Q] INFO Enqueued 3407
>>> 00:01:36 [Q] INFO Process-1:1 processing
>>> [rebuild_mailinglist_cache_recent]
>>> [uwsgi-cron] command "./manage.py runjobs hourly" running with pid
>>> 114 exited after 99 second(s)
>>> 00:01:50 [Q] INFO Processed [rebuild_mailinglist_cache_recent]
>>> 00:04:52 [Q] INFO Enqueued 3408
>>> 00:04:52 [Q] INFO Process-1:2 processing [update_from_mailman]
>>> 00:04:54 [Q] INFO Processed [update_from_mailman]
>>>
>>> Dockerfile:
>>>
>>> FROM python:3.6-alpine3.7 # Add startup script to container COPY
>>> assets/docker-entrypoint.sh /usr/local/bin/ # Install packages and
>>> dependencies for hyperkitty and add user for executing apps. #
>>> It's
>>> important that the user has the UID/GID 82 so nginx can access the
>>> files. RUN set -ex \&& apk add --no-cache --virtual .build-deps
>>> gcc
>>> libc-dev linux-headers git \postgresql-dev \&& apk add --no-cache
>>> --virtual .mailman-rundeps bash sassc mailcap \postgresql-client
>>> curl \&& pip install -U django==2.2 \&& pip install
>>> git+https://gitlab.com/eestec/mailmanclient
>>> \git+https://gitlab.com/mailman/hyperkitty@c9fa4d4bfc295438d3e01cd93090064d004cf44d
>>> \git+https://gitlab.com/eestec/django-mailman3 \whoosh \uwsgi
>>> \psycopg2 \dj-database-url \typing \&& apk del .build-deps \&&
>>> addgroup -S -g 82 hyperkitty \&& adduser -S -u 82 -G hyperkitty
>>> hyperkitty \&& chmod u+x /usr/local/bin/docker-entrypoint.sh# Add
>>> needed files for uwsgi server + settings for django COPY
>>> assets/__init__.py /home/hyperkittyCOPY assets/manage.py
>>> /home/hyperkittyCOPY assets/urls.py /home/hyperkittyCOPY
>>> assets/wsgi.py /home/hyperkittyCOPY assets/uwsgi.ini
>>> /home/hyperkittyCOPY assets/settings.py /home/hyperkitty# Change
>>> ownership for uwsgi+django files and set execution rights for
>>> management script RUN chown -R hyperkitty /home/hyperkitty &&
>>> chmod
>>> u+x /home/hyperkitty/manage.py# Make sure we are in the correct
>>> working dir WORKDIR /home/hyperkittyEXPOSE 8080 8081# Use stop
>>> signal for uwsgi server STOPSIGNAL SIGINTENTRYPOINT
>>> ["docker-entrypoint.sh"]CMD ["uwsgi", "--ini",
>>> "/home/hyperkitty/uwsgi.ini"]
>>>
>>> On 4/27/19 7:58 PM, Abhilash Raj wrote:
>>>> On Sat, Apr 27, 2019, at 9:40 AM, Alain Kohli wrote:
>>>>> I have run "python manage.py rebuild_index" before, doesn't that do
>>>>> clear_index as well? Apart from that, I run hyperkitty in a docker
>>>>> container and didn't know fulltext_index should be persistent, so
>>>>> that
>>>>> got deleted after every version update for sure.
>>>> Which images are you using and how are you deploying them?
>>>>
>>>> You should persist fulltext_index, yes, and possibly logs if you need
>>>> them for debugging later.
>>>>
>>>> Can you paste the entire error traceback?
>>>>
>>>>> On 4/26/19 10:18 PM, Mark Sapiro wrote:
>>>>>> On 4/26/19 11:14 AM, Alain Kohli wrote:
>>>>>>> I see loads of "A string literal cannot contain NUL (0x00)
>>>>>>> characters."
>>>>>>> messages, but I haven't found missing messages in the archives
>>>>>>> yet. Not
>>>>>>> sure how that could be related, though. Apart from that I don't see
>>>>>>> anything unusual. The other jobs (quarter_hourly, hourly, etc.)
>>>>>>> seem to
>>>>>>> run and finish normally.
>>>>>> Did you upgrade from a Python 2.7 version of HyperKitty to a
>>>>>> Python 3
>>>>>> version? The Haystack/Whoosh search engine databases are not
>>>>>> compatible
>>>>>> between the two and "A string literal cannot contain NUL (0x00)
>>>>>> characters." is the symptom.
>>>>>>
>>>>>> You need to run 'python manage.py clear_index' or just remove all
>>>>>> the
>>>>>> files from the directory defined as 'PATH' under
>>>>>> HAYSTACK_CONNECTIONS in
>>>>>> your settings file (normally 'fulltext_index' in the same
>>>>>> directory that
>>>>>> contains your settings.py.
>>>>>>
>>>>> _______________________________________________
>>>>> Mailman-users mailing list -- mailman-users(a)mailman3.org
>>>>> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
>>>>> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>>>>>
>>> _______________________________________________
>>> Mailman-users mailing list -- mailman-users(a)mailman3.org
>>> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
>>> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>>>
>
5 years, 11 months

[MM3-users] Re: Can login at /admin, but cannot login at the account/login page.
by Abhilash Raj
> On Aug 14, 2021, at 9:34 PM, Stephen J. Turnbull <turnbull.stephen.fw(a)u.tsukuba.ac.jp> wrote:
>
> I'm sorry, I'm in a "second vaccination" fog at the moment (mending
> but concentration lasts only about 10 minutes), so I'll answer what I
> know offhand since Abhilash is busy and Mark is probably offline for
> vacation by now. Perhaps later somebody can give a fuller answer.
>
> pabsta(a)gmail.com writes:
>
>> In comparison to the walkthrough, I did two changes; First, I used
>> different port numbers , as it would otherwise conflict with other
>> services on the server.
>
> Thank you for the very precise description. It's very helpful.
>
>> Second, I disabled the social accounts authentification mechanisms.
>
> This should not be a problem since you disabled only the providers (I
> think the socialauth base module is required even if you don't use it.)
>
>> I am still running on sqllite, as I am still testing things (one
>> task at a time).
>
> This should be no problem.
>
>> Using my "superuser" credentials, I can log to the admin section in
>> a fraction of a second.
>
> If you mean the django admin page https://localhost:800something/admin,
> that doesn't involve any part of Mailman at all.
>
>> However, if logout and attempt to login from the postorius website,
>> I get a « 502 bad gateway » error after roughly 30 seconds. The
>> logs in Systemctl for gunicorn register a "DIGEST-MD5 common mech
>> free" error message
>
> I would guess this is also just a connection drop because it doesn't
> receive the expected response within timeout.
>
>> and the nginx error logs just show a connection drop:
>>
>> 2021/08/12 18:11:09 [error] 26026#26026: *31 upstream prematurely closed connbection while reading response header from upstream, client: [ip redacted], server:
>> [domain redacted], request: "POST /accounts/login/ HTTP/2.0", upstream: "http://127.0.0.1:8006/accounts/login/", host: "[domain redacted]", referrer: "https://[domain redacted]/accounts/login/?next=/mailman3/lists/"
> a >
>
>> 1- If I attempt to login with improper credentials, the services
>> respond normally, and I get the expected red box with "invalid
>> credentials" message on the postorius page. It is only when proper
>> credentials are given that the connection fails.
>
> The only thing I can think of is that having sucessfully logged in,
> Postorius can't find Mailman core to populate your user page. That
> would explain why an invalid login (which is entirely within Postorius
> and Django) proceeds as expected, but a valid login would fail so
> spectacularly.
This would be my guess too, although, it will show MailmanApiError in logs.
Do note that that gunicorn logs don’t have all the logs from exceptions raised in Postorius, for that, you want to file the location of the ‘postorius’ or ‘root’ logger in your settings.py (I couldn’t find that, it seems like you skipped those).
So, I’d expect some error or something in the logs if this isn’t the actual case.
--
thanks,
Abhilash Raj (maxking)
3 years, 8 months

[MM3-users] Re: Still unable to get mailman3 working on Ubuntu 20.04 LTS
by Michael Heseltine
Hi Mark, Stephen,
in fact, there isn't anything running on port 8000, even though I added the service description files under "/lib/systemd/system" as detailed in the HowTo.
Looking at "journalctl -xe", both the "gunicorn" and the "qcluster" service run into errors i don't understand:
(qcluster)
> Jan 08 21:22:23 lists.mydomain.com systemd[1]: qcluster.service: Start request repeated too quickly.
> Jan 08 21:22:23 lists.mydomain.com systemd[1]: qcluster.service: Failed with result 'exit-code'.
> -- Subject: Unit failed
> -- Defined-By: systemd
> -- Support: http://www.ubuntu.com/support
> --
> -- The unit qcluster.service has entered the 'failed' state with result 'exit-code'.
> Jan 08 21:22:23 lists.mydomain.com systemd[1]: Failed to start HyperKitty async tasks runner.
> -- Subject: A start job for unit qcluster.service has failed
> -- Defined-By: systemd
> -- Support: http://www.ubuntu.com/support
> --
> -- A start job for unit qcluster.service has finished with a failure.
> --
> -- The job identifier is 734836 and the job result is failed.
(gunicorn)
> Jan 08 21:24:58 lists.mydomain.com systemd[1]: gunicorn.service: Failed with result 'exit-code'.
> -- Subject: Unit failed
> -- Defined-By: systemd
> -- Support: http://www.ubuntu.com/support
> --
> -- The unit gunicorn.service has entered the 'failed' state with result 'exit-code'.
> ...skipping...
> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: File "/opt/mailman/mm/bin/gunicorn", line 14, in>
> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: sys.exit(gunicorn.app.wsgiapp.run())
> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: File "/opt/mailman/mm/venv/lib/python3.8/site-pa>
> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: WSGIApplication("%(prog)s [OPTIONS] [APP_MODUL>
> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: File "/opt/mailman/mm/venv/lib/python3.8/site-pa>
> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: super().run()
> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: File "/opt/mailman/mm/venv/lib/python3.8/site-pa>
> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: Arbiter(self).run()
> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: File "/opt/mailman/mm/venv/lib/python3.8/site-pa>
> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: self.halt(reason=inst.reason, exit_status=inst>
> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: File "/opt/mailman/mm/venv/lib/python3.8/site-pa>
> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: self.stop()
> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: File "/opt/mailman/mm/venv/lib/python3.8/site-pa>
> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: time.sleep(0.1)
> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: File "/opt/mailman/mm/venv/lib/python3.8/site-pa>
> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: self.reap_workers()
> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: File "/opt/mailman/mm/venv/lib/python3.8/site-pa>
> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: raise HaltServer(reason, self.WORKER_BOOT_ERRO>
> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: gunicorn.errors.HaltServer: <HaltServer 'Worker fa>
> Jan 08 21:24:58 lists.mydomain.com systemd[1]: gunicorn.service: Main process exited, code=exited, statu>
> -- Subject: Unit process exited
> -- Defined-By: systemd
> -- Support: http://www.ubuntu.com/support
> --
> -- An ExecStart= process belonging to unit gunicorn.service has exited.
> --
> -- The process' exit code is 'exited' and its exit status is 1.
the qcluster.service and guncorn.service are 1:1 copies of the sample files provided in the base howto.
Do you know what is the problem now?
Cheers, Michael.
3 years, 3 months

[MM3-users] Re: old usernames appearing in mailman.log
by Ken Alker
--On Sunday, June 25, 2023 1:14 PM -0700 Mark Sapiro <mark(a)msapiro.net>
wrote:
> On 6/25/23 11:04 AM, Ken Alker wrote:
>>
>> I've just taken on the project so I'm new to all of this, and one thing
>> I noticed that caught my eye, and has left me curious, is that for the
>> first a couple of seconds starting just after midnight every night (just
>> after log rotation) mailman.log would have many (dozens, or hundreds) of
>> lines entered in it just like this one:
>>
>> Jun 19 00:00:04 2023 (2266) 127.0.0.1 - - "GET
>> /3.0/users/old-user(a)domain.tld HTTP/1.1" 404 58
>>
>> where "old-user(a)domain.tld" is the email address of a user who either
>> had unsubscribed or changed their email address (I don't know which, I
>> just know they are no longer a member/subscriber to the list). Each
>> successive entry in the log would have a different "old username" in it.
>> I don't understand why these entries would be in the log and what they
>> mean. Can someone shed some light on this for me? This is merely a
>> question of curiosity, and not one of import. (Since migrating from
>> 3.2.2 to 3.3.8 this behavior has stopped, be that GOOD or BAD.)
>
>
> This is the Django hyperkitty sync_mailman job which is one of the django
> admin jobs run daily. It goes through the HyperKitty 'sender' database
> table and tries to find the Mailman core user id for each sender address
> to add/update its mailman_id field with core's user_id.
>
> The 404s are addresses im HyperKitty's sender table for whih there is no
> corresponding Mailman user. There are multiple possible reasons for this.
And that is OK, right?
> If the behavior has stopped it's probably because the periodic Django
> jobs are not being run - this is bad.
I see this in the logs from just after midnight:
Jun 25 00:13:04 2023 (386086) No cached copy of the public suffix list found
Jun 25 00:13:04 2023 (386086) ACCEPT:
<7500f0e2-1ae1-309d-60d7-6e592c7abf7a(a)west.net>
Jun 25 00:13:04 2023 (386090) HyperKitty failure on
https://lists.netlojix.com/hyperkitty/api/mailman/urls:
Followed by a huge amount of HTML (strange).
I'm not sure if the first and last (third) lines in the log excerpt above
are due to the same thing. I know why the public suffix list is not found;
when I was migrating all my queues from the Debian layout to the "source
install" layout, I could not figure out where it should go in the new world
order. Can you tell me where it would normally be found on a fresh source
install? I'll move it there.
Is there a way to kick it into re-running whatever it does at midnight so I
can test this again after putting the public suffix list back? I assume I
can just execute "mailman-web runjobs daily", but will this mess things up,
or is it OK to run it mid-day without stopping anything first?
Is the last (third) log line excerpt simply a result of the first, or do I
have something else messed up?
Thank you!
Ken
1 year, 9 months

[MM3-users] Re: UnicodeEncodeError: 'ascii' codec can't encode character
by Mark Sapiro
On 12/11/19 12:43 AM, Marvin Gülker wrote:
>
> Thanks for this information. Ubuntu's mailman stores the messages below
> /var/lib/mailman3/messages. The "mailman" command is in the $PATH.
>
>> This should print the file name and Message-ID-Hash (two lines the same)
>> for each message in the messages directory until it prints only one line
>> followed by the UnicodeEncodeError exception. That list line is the file
>> name/Message-ID-Hash of the offending message.
>
> I've execucted that code, but it does not cause an exception at all. It
> quietly runs through. I've attached the transcript of the shell session
> to this mail. With a little crude use of grep(1), however I found my
> held message in WQ/ZS/WQZSFFJLVMWQHMG4VYKGXJEKQVQXVK67.
Here's a revised script:
```
$ mailman shell
Welcome to the GNU Mailman shell
>>> import os
>>> import pickle
>>> for root, dirs, files in os.walk('/var/lib/mailman3/messages'):
... for fn in files:
... print(fn)
... with open(os.path.join(root, fn), 'rb') as fp:
... msg = pickle.load(fp)
... print(msg['Message-ID'])
... x = msg.as_string()
...
```
I have adjusted the paths for your package, changed the second print to
print the message-is and added the
` x = msg.as_string()`
line. Now we expect to see the hash of each message-id followed by the
message-id followed by the exception for the offending message.
> Does the messages directory contain only held messages? I've looked at
> some messages and all of these I looked at were spam. The directory
> structure contains 40 messages in total, accumulating to 480 KiB disk
> space.
Yes, the directory and the corresponding database table contains only
messages held for moderator approval.
>
>> DELETE FROM message WHERE message_id_hash = xxx;
>
> As the exception you expected did not occur, I didn't do this yet. I can
> make a database and directory backup and then run it, though. Should I try?
>
> I assume after this I should also delete the respective files from the
> messages/ directory?
Actually, a better way to deal with this is in mailman shell
```
Welcome to the GNU Mailman shell
>>> ms = getUtility(IMessageStore)
>>> ms.delete_message('xxx')
>>>
```
where xxx is the message-id value printed from the above script.
>> As of Mailman core 3.3.0 there is a 'mailman notify' command designed to
>> be run periodically by cron to notify owners/moderators of pending
>> requests.
>
> I did receive an e-mail to the list owner address that told me that the
> e-mail from my incorrect e-mail address "requires approval". That was
> the first time I received such an e-mail. In parallel, on the incorrect
> e-mail address, I received the notification for moderator approval.
Yes, those are the only messages unless you are running `mailman
notify`. It seems however that the latest Debian (hence Ubuntu) package
doesn't have 3.3 yet.
As to why you didn't receive owner notices about the held spam, perhaps
they were spam filtered or somehow otherwise lost.
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
5 years, 4 months

[MM3-users] sass error
by Alexander Klotz
Hi everybody,
we tried to make a fresh installation out of the current version
following the readme.md - we encounter the following error trying to do
so. As mentioned elsewhere, 'sass' has been replaced by 'sassc',
however, maybe somewhere there is still a reference to it that may have
been overlooked? The answer to a similar error posted to this list in
August 2017 unfortunately didn't help either.
Any help would be appreciated!
Thanks,
Alex
ERROR 2018-04-19 09:07:49,096 29 django.request Internal Server Error:
/accounts/login/
Traceback (most recent call last):
File
"/usr/local/lib/python2.7/site-packages/django/core/handlers/exception.py",
line 41, in inner
response = get_response(request)
File
"/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py",
line 249, in _legacy_get_response
response = self._get_response(request)
File
"/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py",
line 217, in _get_response
response = self.process_exception_by_middleware(e, request)
File
"/usr/local/lib/python2.7/site-packages/django/core/handlers/base.py",
line 215, in _get_response
response = response.render()
File
"/usr/local/lib/python2.7/site-packages/django/template/response.py",
line 107, in render
self.content = self.rendered_content
File
"/usr/local/lib/python2.7/site-packages/django/template/response.py",
line 84, in rendered_content
content = template.render(context, self._request)
File
"/usr/local/lib/python2.7/site-packages/django/template/backends/django.py",
line 66, in render
return self.template.render(context)
File
"/usr/local/lib/python2.7/site-packages/django/template/base.py", line
207, in render
return self._render(context)
File
"/usr/local/lib/python2.7/site-packages/django/template/base.py", line
199, in _render
return self.nodelist.render(context)
File
"/usr/local/lib/python2.7/site-packages/django/template/base.py", line
990, in render
bit = node.render_annotated(context)
File
"/usr/local/lib/python2.7/site-packages/django/template/base.py", line
957, in render_annotated
return self.render(context)
File
"/usr/local/lib/python2.7/site-packages/django/template/loader_tags.py",
line 177, in render
return compiled_parent._render(context)
File
"/usr/local/lib/python2.7/site-packages/django/template/base.py", line
199, in _render
return self.nodelist.render(context)
File
"/usr/local/lib/python2.7/site-packages/django/template/base.py", line
990, in render
bit = node.render_annotated(context)
File
"/usr/local/lib/python2.7/site-packages/django/template/base.py", line
957, in render_annotated
return self.render(context)
File
"/usr/local/lib/python2.7/site-packages/django/template/loader_tags.py",
line 177, in render
return compiled_parent._render(context)
File
"/usr/local/lib/python2.7/site-packages/django/template/base.py", line
199, in _render
return self.nodelist.render(context)
File
"/usr/local/lib/python2.7/site-packages/django/template/base.py", line
990, in render
bit = node.render_annotated(context)
File
"/usr/local/lib/python2.7/site-packages/django/template/base.py", line
957, in render_annotated
return self.render(context)
File
"/usr/local/lib/python2.7/site-packages/compressor/templatetags/compress.py",
line 131, in render
return self.render_compressed(context, self.kind, self.mode,
forced=forced)
File
"/usr/local/lib/python2.7/site-packages/compressor/templatetags/compress.py",
line 107, in render_compressed
rendered_output = compressor.output(mode, forced=forced)
File "/usr/local/lib/python2.7/site-packages/compressor/css.py", line
49, in output
ret.append(subnode.output(*args, **kwargs))
File "/usr/local/lib/python2.7/site-packages/compressor/css.py", line
51, in output
return super(CssCompressor, self).output(*args, **kwargs)
File "/usr/local/lib/python2.7/site-packages/compressor/base.py",
line 295, in output
output = '\n'.join(self.filter_input(forced))
File "/usr/local/lib/python2.7/site-packages/compressor/base.py",
line 235, in filter_input
for hunk in self.hunks(forced):
File "/usr/local/lib/python2.7/site-packages/compressor/base.py",
line 205, in hunks
precompiled, value = self.precompile(value, **options)
File "/usr/local/lib/python2.7/site-packages/compressor/base.py",
line 268, in precompile
return True, filter.input(**kwargs)
File
"/usr/local/lib/python2.7/site-packages/compressor/filters/base.py",
line 229, in input
return super(CachedCompilerFilter, self).input(**kwargs)
File
"/usr/local/lib/python2.7/site-packages/compressor/filters/base.py",
line 196, in input
raise FilterError(err)
FilterError: /bin/sh: sass: not found
7 years

[MM3-users] Re: Getting connection refused on postfix trying to connect to mailman-core:lmtp
by Dmitry Makovey
On 10/05/2017 07:20 PM, Abhilash Raj wrote:
> On Thu, Oct 5, 2017, at 05:36 PM, Dmitry Makovey wrote:
>> On 10/05/2017 03:20 PM, Abhilash Raj wrote:
>>> On Thu, Oct 5, 2017, at 03:08 PM, Dmitry Makovey wrote:
>>>>
>>>> I've got a setup where postfix runs inside one VM(container) and mailman
>>>> runs inside another one (maxking containers). I've wired everything
>>>> according to docs yet I'm getting:
>>>>
>>>> postfix/lmtp[266]: 66A72800A87: to=<somelist(a)lists.here.stanford.edu>,
>>>> relay=none, delay=0.5, delays=0.48/0.01/0/0, dsn=4.4.1, status=deferred
>>>> (connect to mailman-01.stanford.edu[1.2.3.4]:8024: Connection refused)
>
> I found this in your settings:
>
> [mta] lmtp_host: mailman-01.stanford.edu
> [mta] lmtp_port: 8024
>
>
> And the log message above.
>
> I believe that the LMTP runner died because it wasn't able to bind to
> `mailman-01.stanford.edu`, which I am assuming is the hostname assigned
> to the host running these containers.
>
> `MM_HOSTNAME` env variable in the docker containers should be something
> that the process inside mailman-core container can bind to and can be
> reached by postfix (which can run either on host or on another
> container). (Now that I read it myself, I agree that the name of the
> variable sounds not-so-intuitive.)
thank you so much for the hints! I've changed docker-compose to include
MM_HOSTNAME variable *and* made sure that for the mailman-core I've got:
services:
mailman-core:
hostname: mailman-01
domainname: stanford.edu
...
environment:
...
MM_HOSTNAME: mailman-01.stanford.edu
that solved the issue while keeping the mentioned mailman config. Is
that what you've had in mind? I was looking for a quick hack, but still
would like to find out proper solution if that isn't the one.
> The default configuration (and docker-compose.yaml) sets this value to
> the IP Address of the container (172.19.199.2), which is reachable from
> the host. If you set this value to whatever IP the mailman-core is
> assigned and re-create the containers (or just re-start and run `mailman
> aliases` in mailman-core to re-generate transport_maps), it would work
> out.
if I understand above correctly that means semi-manual mangling of
postfix aliases file which I'd rather not do. Using above technique
mailman-core does generate proper aliases while binding to the
appropriate IP. kind of icky but seems to work.
>
> Also, I see your docker-compose.yaml configuration (`MAILMAN_CORE_IP:
> 172.19.199.2`) is not consistent with your output of `mailman
> conf`([webservice] hostname: 172.19.199.5`). I am not sure how that
> happened though, just wanted to point it out. This *might* cause the
> rest runner to die to and thus Postorius/HK wouldn't work.
right, some of the IPs keep on popping at me and I've got to look for
them - I intentionally removed direct IP assignment in
docker-compose.yaml yet I get the feeling that someplace there's another
IP assignement I've missed.
> Hope that was helpful!
very much so! thanks for your quick responses - provided my existing
deadlines I value them that much more :)
--
Sr System and DevOps Engineer SoM IRT
7 years, 6 months

[MM3-users] Re: warning: database postfix_domains.db is older than source file postfix_domains
by Mark Sapiro
On 10/26/20 10:07 AM, Torge Riedel wrote:
> Hi,
>
> I frequently get this warning mail.log. stat'ing the files give:
>
> # stat /opt/mailman/var/data/postfix_domains
> File: /opt/mailman/var/data/postfix_domains
> Size: 361 Blocks: 8 IO Block: 4096 regular file
> Device: 801h/2049d Inode: 1573095 Links: 1
> Access: (0660/-rw-rw----) Uid: ( 1004/ mailman) Gid: ( 1002/ mailman)
> Access: 2020-10-24 19:52:16.887258326 +0200
> Modify: 2020-10-20 07:09:48.792000000 +0200
> Change: 2020-10-20 07:09:48.792000000 +0200
> Birth: -
> # stat /opt/mailman/var/data/postfix_domains.db
> File: /opt/mailman/var/data/postfix_domains.db
> Size: 12288 Blocks: 24 IO Block: 4096 regular file
> Device: 801h/2049d Inode: 1583965 Links: 1
> Access: (0640/-rw-r-----) Uid: ( 1004/ mailman) Gid: ( 1002/ mailman)
> Access: 2020-10-26 07:46:54.569935782 +0100
> Modify: 2020-10-20 07:09:47.575889000 +0200
> Change: 2020-10-20 07:09:47.575889000 +0200
> Birth: -
I don't understand how this is happening. With defaults for mailman.cfg
settings you should have in the [mta] section
configuration: python:mailman.config.postfix
which points to the file mailman/config.postfix.py in the installation
which has in its [postfix] section
postmap_command: /usr/sbin/postmap
These settings say whenever mailman updates
`/opt/mailman/var/data/postfix_domains`, it runs `/usr/sbin/postmap`
/opt/mailman/var/data/postfix_domains` to update
`/opt/mailman/var/data/postfix_domains.db`. These files,
`postfix_domains` and `postfix_lmtp`should be written and closed before
invoking the posymap command, so Y don't understand why the
modify/change times on the .db files would be 1.22 seconds earlier than
those on the source.
> I do not have the feeling that this is really a problem, cause
> everything works well. But it is confusing and misleading and might
> makes me missing a problem in the future, when the database is really
> outdated.
>
> Could this be easily fixed in mailman?
I don't think it's a Mailman issue. For example on the server that
supports this list I see
$ stat /opt/mailman/mm/var/data/postfix_*
File: ‘/opt/mailman/mm/var/data/postfix_domains’
Size: 391 Blocks: 8 IO Block: 4096 regular file
Device: ca11h/51729d Inode: 5113910 Links: 1
Access: (0660/-rw-rw----) Uid: ( 110/ mailman) Gid: ( 118/ mailman)
Access: 2020-10-24 19:30:44.787818101 +0000
Modify: 2020-10-24 19:30:44.731817318 +0000
Change: 2020-10-24 19:30:44.731817318 +0000
Birth: -
File: ‘/opt/mailman/mm/var/data/postfix_domains.db’
Size: 12288 Blocks: 24 IO Block: 4096 regular file
Device: ca11h/51729d Inode: 5112421 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 110/ mailman) Gid: ( 118/ mailman)
Access: 2020-10-26 19:39:45.452615116 +0000
Modify: 2020-10-24 19:30:44.787818101 +0000
Change: 2020-10-24 19:30:44.787818101 +0000
Birth: -
File: ‘/opt/mailman/mm/var/data/postfix_lmtp’
Size: 3465 Blocks: 8 IO Block: 4096 regular file
Device: ca11h/51729d Inode: 5113909 Links: 1
Access: (0660/-rw-rw----) Uid: ( 110/ mailman) Gid: ( 118/ mailman)
Access: 2020-10-24 19:30:44.775817934 +0000
Modify: 2020-10-24 19:30:44.719817150 +0000
Change: 2020-10-24 19:30:44.719817150 +0000
Birth: -
File: ‘/opt/mailman/mm/var/data/postfix_lmtp.db’
Size: 12288 Blocks: 24 IO Block: 4096 regular file
Device: ca11h/51729d Inode: 5112424 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 110/ mailman) Gid: ( 118/ mailman)
Access: 2020-10-26 19:40:38.509356931 +0000
Modify: 2020-10-24 19:30:44.775817934 +0000
Change: 2020-10-24 19:30:44.775817934 +0000
Birth: -
Which is what I expect.
Note that the only times both the `postfix_domains` and `postfix_lmtp`
are updated together is when one of the `mailman` subcommands `aliases`
or `start` is run. Are you possibly running both these at the same time
causing some kind of race condition?
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
4 years, 5 months

[MM3-users] Re: How to identify the exact reason behind the shunting of the mails ?
by Shashikanth Komandoor
Dear Mark,
FYI, I observed this issue with the postfix that receives the
mails from the previous MTA and hands it over to the mailman. But I fixed
at postfix by upgrading it to the version postfix 3.
But still Mailman is not able to understand Hindi (Indian local
language) in which language the display names of the email ids are there.
So, now what to do at Mailman so that it can also understand
local languages or any work around or other alternate solutions for these
sort of cases.
On Fri, Jun 18, 2021 at 4:04 PM Shashikanth Komandoor <
shashikanth.komandoor(a)gmail.com> wrote:
> Thank you Mark for your immediate response.
>
> The below are the tracebacks I could find in the mailman log.
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> *Jun 17 19:04:08 2021 (8642) Uncaught runner exception: sequence item 0:
> expected str instance, Header foundJun 17 19:04:08 2021 (8642) Traceback
> (most recent call last): File
> "/var/lib/mailman/mailman/src/mailman/core/runner.py", line 173, in
> _one_iteration self._process_one_file(msg, msgdata) File
> "/var/lib/mailman/mailman/src/mailman/core/runner.py", line 266, in
> _process_one_file keepqueued = self._dispose(mlist, msg, msgdata) File
> "/var/lib/mailman/mailman/src/mailman/runners/pipeline.py", line 37, in
> _dispose process(mlist, msg, msgdata, pipeline) File
> "/var/lib/mailman/mailman/src/mailman/core/pipelines.py", line 50, in
> process handler.process(mlist, msg, msgdata) File
> "/var/lib/mailman/mailman/src/mailman/handlers/avoid_duplicates.py", line
> 59, in process addrs = getaddresses(msg.get_all(header, [])) File
> "/usr/lib64/python3.6/email/utils.py", line 112, in getaddresses all =
> COMMASPACE.join(fieldvalues)TypeError: sequence item 0: expected str
> instance, Header foundJun 17 19:04:08 2021 (8642) SHUNTING:
> 1623936848.367641+4753f8127953071ddcabfe828ebe72fcf04d0ae2*
>
> In the shunt file, I see something like this as below in CC while To is
> good:
>
>
>
>
>
>
>
>
> *Cc:
> =?unknown-8bit?q?=22Support_Zimbra=22_=3Csupport-zimbra=40nic=2Ein=3E=2C?= =?unknown-8bit?b?ICLgpLbgpLDgpKYg4KSu4KS+4KSl4KWB4KSwIC0gU2hhcmFkIE1hdGh1ciIgPHN1cHBvcnQtdmFqcmFAc3VwcG9ydGdvdi5pbj4s?= =?unknown-8bit?b?ICLgpLDgpL7gpJzgpYfgpLYg4KS44KS/4KSC4KS5IC0gUmFqZXNoIFNpbmdoIiA8cmFqc0BuaWMuaW4+LA==?= =?unknown-8bit?b?ICJTYWJ5YXNhY2hpIENob3VkaHVyeSIgPHNhYnlhQG5pYy5pbj4sIG1haWxhZG1pbkBuaWMuaW4s?= =?unknown-8bit?b?ICJNUklUVU5KQVkgS1VNQVIiIDxta0BuaWMuaW4+LCAiQmhyaWd1IEt1bWFyIiA8YmhyaWd1QG5pYy5pbj4s?= =?unknown-8bit?b?ICJPbSBQcmFrYXNoIiA8b3AubmhxQG5pYy5pbj4sICJIYXJpaGFyYW4gTSIgPGhhcmloYXJhbi5tQGdvdi5pbj4s?= =?unknown-8bit?b?ICJQaGlzaGluZyBQaGlzaGluZyIgPHBoaXNoaW5nQG5pYy5pbj4sICJpbmNpZGVudCIgPGluY2lkZW50QG5pYy5pbj4s?= =?unknown-8bit?b?ICJNYW5hdiBSYWtoZWphIiA8bWFuYXYucmFraGVqYUBuaWMuaW4+?=*
>
> Also, I came to know that two of the recipients in CC block have their
> mail ID display name in their local language. While I am not sure, I doubt
> if it could be the issue of getting shunted.
>
> Please confirm and suggest any solution.
>
>
>
> On Thu, Jun 17, 2021 at 8:48 PM Mark Sapiro <mark(a)msapiro.net> wrote:
>
>> On 6/17/21 6:56 AM, Shashikanth Komandoor wrote:
>> >
>> > Is there any chance to find out the reason for shunting of the
>> > mails through any means ?
>> >
>>
>>
>> Look in Mailman's var/logs/mailman.log for the tracebacks associated
>> with the shunted messages.
>>
>> --
>> Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
>> San Francisco Bay Area, California better use your sense - B. Dylan
>> _______________________________________________
>> Mailman-users mailing list -- mailman-users(a)mailman3.org
>> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
>> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>>
>
>
> --
> Thanks & Regards,
> Shashi Kanth.K
> 9052671936
>
>
>
>
--
Thanks & Regards,
Shashi Kanth.K
9052671936
3 years, 10 months

[MM3-users] Re: only show mail domains from web host on web-host-url
by Jens Günther
Thank you for the clarification!
Am 19.03.21 um 18:48 schrieb Abhilash Raj:
>
>
>> On Mar 19, 2021, at 6:38 AM, Jens Günther <jens.guenther(a)posteo.de> wrote:
>>
>> Thank you for your answer. I should have seen that in the Docs, but somehow missed it: https://docs.mailman3.org/en/new/prodsetup.html
>
> You seem to have landed on a very old version of the docs that I didn’t unfortunately knew
> was even available. I have disabled that page now.
>
> The settings are documented in https://docs.mailman3.org/en/latest/config-web.html
>
>>
>> I set it in the corresponding file, but unfortunately it doesn't work :-( I tried other setting to prove, that the file is used (ALLOWED_HOSTS works, changed here from '*' to 'localhost' and my example-domains, this works). It seems to be the same as this user describes (a while ago): https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/thread/…
>>
>> How could I check, that the setting is used!?
>>
>> But maybe some additional information:
>> - I use the Debian installation on a stable buster, so mailman is version 3.2.1
>> - I use apache2 as my web-server and use the given alias-conf-file
>> - Python is version 3.7.3
>> - Postorius is Version 1.2.4
>> - HyperKitty is version 1.2.2
>>
>> -> In Django admin-Panel (/mailman3/admin/) I added 2 Websites test1.xyz.de and test2.xyz.de
>> -> In Postorius (/mailman3/postorius/domains/) I added 2 Domains as Mail Hosts test1.xyz.de and test2.xyz.de with the corresponding Web hosts as stated above
>> -> I added 1 list (/mailman3/postorius/lists/) for each Mail Domain as follows: test1(a)test1.xyz.de and test2(a)test2.xyz.de
>> -> then created a vhost in apache2 with SSL-cert and added the Domains in ALLOWED_HOSTS: test1.xyz.de and test2.xyz.de
>> -> When I go to the 2 Testdomains (corresponding web hosts), I see on each both lists for the different Mail domains
>>
>> What do I miss? Or where to investigate?
>>
>> Thank you in advance, best regards.
>>
>> By the way: what'S the difference in the 2 docs? https://docs.mailman3.org/en/latest/index.html and https://mailman.readthedocs.io/en/latest/README.html
>
> Mailman Suite consists of several individual projects including Mailman Core, Postorius (Web UI) and
> Hyperkitty (Archiver). The first URL is the landing page for the entire suite and should direct you to
> individual projects. The second one is the individual Mailman Core project. Historically, Core was the
> only project and hence claims the name “mailman” in most places.
>
>>
>> Am 18.03.21 um 21:52 schrieb Mark Sapiro:
>>> On 3/18/21 9:20 AM, jens.guenther(a)posteo.de wrote:
>>>> Is it possible, to only show publicly (if advertised) these lists on a certain url, that are corresponding to the web host the url I accessed mailman through?
>>> Set FILTER_VHOST = True in your settings_local.py or where ever you put
>>> your site Django settings.
>> _______________________________________________
>> Mailman-users mailing list -- mailman-users(a)mailman3.org
>> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
>> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>
4 years, 1 month

[MM3-users] Re: Python is updated
by Odhiambo Washington
This is too complicated.
On Thu, Apr 27, 2023, 23:00 Duane Raymond <duane(a)fairsay.com> wrote:
> Hi Lars,
>
> I did the same thing this weekend (upgraded mailman to latest and python
> from 3.7 to 3.11) as part of a process to do some work I've promised Mark
> :-)
>
> Here are my notes (to I can repeat it next time). I'm on Debian 10. My
> mailman install is based on Brian Carpenters install notes:
> https://wiki.list.org/DOC/Howto_Install_Mailman3_On_Debian10
>
> 0) IF UPGRADING: copy /static folder, /venv folder and base config files to
> new backup folder (e.g. config_bak)
> 1) Install desired python e.g 3.11 (from source if necessary) and be sure
> to include:
> apt install libreadline-gplv2-dev libncursesw5-dev libssl-dev
> libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
> 2) IF UPGRADING: Stop the mailman related services: systemctl stop mailman
> qcluster gunicorn
> 3) Create local venv at: python3.11 -m venv /opt/mailman/mm/venv (backup
> old one first to backup folder)
> 4) Set ownership of venv folder and subfolders/files: chown -R
> mailman.mailman venv
> 5) Switch to owner: su mailman
> 6) Activate venv: source /opt/mailman/mm/venv/bin/activate
> 7) Check pip uses the intended python version: pip -V
> 8) Upgrade PIP if necessary: pip install --upgrade pip
> 9) Install mailman3 basics: pip install --upgrade mailman hyperkitty
> postorius
> 10) Install additional if missing: pip install --upgrade django-mailman3
> mailmanclient mailman-hyperkitty
> 11) Install DB connector: pip install pylibmc psycopg2 python3-psycopg2
> python3-pil python3-psycopg2 whoosh python3-whoosh python3-httplib2
> 12) Update /opt/mailman/mm/urls.py with desired paths (django)
> 13) IF UPGRADING RUN: bin/django-admin migrate
> PLUS: bin/mailman-post-update (or individually below)
> bin/django-admin collectstatic --clear --noinput --verbosity 0
> bin/django-admin compress
> bin/django-admin compilemessages
> 13) Exit venv environment: deactivate and Exit mailman user: exit
> 14) Start mailman: systemctl start mailman (check status: systemctl
> status mailman.service)
> 15) Start qrunner: systemctl start qcluster (check status: systemctl
> status qcluster.service)
> 16) Start gunicorn: systemctl start gunicorn (check status: systemctl
> status gunicorn.service)
>
> Note:
>
> 1. /django-admin is the same as /mailman-web in some installation notes.
> 2. The bin/mailman-post-update script Brian used does everything except
> the "migrate" step
> 3. I don't know if all the pip psycopg2/whoosh modules are needed - I
> didn't take the chance.
> 4. My system now uses django 4.1.8 so I didn't need to worry about the
> psycopg2-binary install (I don't think I did - it seems to all work)
> 5. The 3.8 release notes contain a breaking change with the postgresql
> connection command. I changed that before upgrading. (assuming you are
> using postgresql!)
> 6. What I haven't covered here is checking the autostart, service
> settings and crons are working as that is in the documentation and may
> already/still be running on your server.
>
> Hope that helps :-)
>
> Cheers,
>
> Duane
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> Archived at:
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
>
> This message sent to odhiambo(a)gmail.com
>
1 year, 11 months

[MM3-users] Re: Upgrade Mailmam Core from
by Stephen J. Turnbull
Odhiambo Washington writes:
> Can you possibly blow away everything and start afresh again - using the
> following howto -
> https://wiki.list.org/DOC/Howto_Install_Mailman3_On_Debian10 ?
I appreciate your efforts to help, and with a different set of facts
your approach *would* be helpful. So don't stop! But please be more
careful. Sascha already has successfully installed Mailman (in fact
more times than they know :-), has experience with this particular
approach to installation, and was already interacting with two core
developers. Starting from scratch at this point doesn't make sense.
> > After this, I deleted the venv again and startet anew, again.
Unknown to Sascha, this venv was already a successful install. The
error messages can be ignored.
> > But this time, I explicitly did (as Stephen suggested above)
> > > pip install wheel
> > prior to
> > > pip install wheel mailman psycopg2-binary\<2.9
> >
> > This time, it ran through without errors, although "wheel" is also
> > contained in the latter command.
> > Can you explain that?
Note: this second run is also successful.
Explanation: "Failed to build wheel" is actually not an error.
*wheels* are the preferred packaging format for Python for several
years now, but others are available, and pip used one of those
instead. I suspect the "Error" tag comes from a separate external
command (bdist_wheel), but pip reads the error status and tries an
alternative method to build a package.
Sascha: I don't understand why pip doesn't install wheel before
starting on mailman in "pip wheel mailman psycopg2-binary\<2.9. I
think that's a bug, because this is an obvious way to use pip.
Perhaps you have an older version of pip? Have you tried
pip install --upgrade pip?
> > Second question:
> > There is still no directory "/etc/mailman3" created, where I can create
> > mailman.cfg in.
That's right. There are a number of different philosophies about
handling files like mailman.cfg, and the Mailman install scripts can't
be sure which one you want to follow. /etc/mailman3/mailman.cfg
probably works for 90% or 95% of installations nowadays, but we don't
know. If you're not going to put mailman.cfg there, we shouldn't
create the directory.
> > Does this maybe result from the fact that in first instance, I tried to
> > install mailman3-full via "apt-get install" and removed it again via
> > "apt-get remove"; with manually deleting /etc/mailman3
> > afterwards.
That's what I consider correct behavior as implemented by apt.
> > Shall I create /etc/mailman3 manually and adding "mailman" system user
> > permissions?
Mark wrote earlier, but let me confirm that yes, that's what you
should do. Note that Debian and Ubuntu prefer to gather all possible
mailing list users into a single user 'list'. I don't think this
causes trouble for Mailman, but in many cases if you create a
different user (as you will if you follow our instructions), you will
have problems if the system-created directory with system-standard
owner and permissions is left behind. This is one of several reasons
why you should purge (not just delete) packages supplied by distros if
you are going to switch to upstream's code. (Obviously keep copies!)
Regards,
Steve
2 years, 6 months

[MM3-users] Re: upgrading in FreeBSD 13.1-p7: problem with aiosmtpd and lmtp runner
by Guillermo Hernandez (Oldno7)
El 3/4/23 a las 1:25, Mark Sapiro escribió:
> On 4/2/23 03:57, Guillermo Hernandez (Oldno7) via Mailman-users wrote:
>>
>> I'm NOT blaming any of the parts involved... Sure, most probably is
>> my fault. But the last upgrade shows that the process that fail is
>> involved with mailman upgrade. The last server was working smoothly
>> and it has higher traffic than the first I tried. It cannot be that I
>> missed that something was not working for weeks (since the last
>> upgrade of the OS)
>
> It depends on what you did. Mailman's lmtp runner would only encounter
> this issue at startup, so unless you restarted Mailman or rebooted the
> server, lmtp runner would have continued without issue even if there
> was an underlying OS problem.
I thought I said it: I reboot this server everyday at 06:40 CEST time.
That's why I'm sure it's not an undetected problem for weeks. The lists
in this last upgraded server are with daily traffic. I'm suscribed to all.
>
> Also, I don't think the problem is with Mailman per se. The underlying
> issue is in the Python library socket module. Try the following in a
> Python 3 shell
> ```
> $ python3
> Python 3.9.16 (main, Dec 11 2022, 12:49:23)
> [GCC 9.4.0] on linux
> Type "help", "copyright", "credits" or "license" for more information.
> >>> from socket import AF_INET6, SOCK_STREAM, socket as makesock
> >>> sock = makesock(AF_INET6, SOCK_STREAM)
> >>> sock.bind(("::1", 0))
> >>> sock.close()
> ```
> This is essentially what aiosmtpd does and I expect that `sock =
> makesock(AF_INET6, SOCK_STREAM)` will throw the `OSError: [Errno 43]
> Protocol not supported` exception.
>
And you are right (ther is more down of this):
Python 3.9.16 (main, Dec 15 2022, 09:41:07)
[Clang 13.0.0 (git@github.com:llvm/llvm-project.git
llvmorg-13.0.0-0-gd7b669b3a on freebsd13
Type "help", "copyright", "credits" or "license" for more information.
>>> from socket import AF_INET6, SOCK_STREAM, socket as makesock
>>> sock = makesock(AF_INET6, SOCK_STREAM)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.9/socket.py", line 232, in __init__
_socket.socket.__init__(self, family, type, proto, fileno)
OSError: [Errno 43] Protocol not supported
Buuuuuut, if I do the same in the "father" server:
Python 3.9.16 (main, Dec 15 2022, 09:41:07)
[Clang 13.0.0 (git@github.com:llvm/llvm-project.git
llvmorg-13.0.0-0-gd7b669b3a on freebsd13
Type "help", "copyright", "credits" or "license" for more information.
>>> from socket import AF_INET6, SOCK_STREAM, socket as makesock
>>> sock = makesock(AF_INET6, SOCK_STREAM)
>>> sock.bind(("::1", 0))
>>> sock.close()
File "<stdin>", line 1
sock.close()
IndentationError: unexpected indent
>>> sock.close()
>>>
The server can open a socket without problem. As I though previously it
has to be something with the jailed envviroment. Your test had probe me
right (and wrong in my jail tests). It's very valuable. I know now where
I can dig more.
Thanks a lot
--
___________________________________________
Mailman's content filtering has removed the
following MIME parts from this message.
Content-Type: image/png
Name: firma-GHP-emails.png
Replaced multipart/alternative part with first alternative.
2 years

[MM3-users] Re: Urgent help needed...
by Darren Smith
So we have just found the culprit, or at least ONE of the culprits. The
calls that are being made to populate the date browse in the left hand side
of hyperkitty for a given mailing list was causing this query to be run.
I still don't know what changed from yesterday to today that is causing
postgres to freak out over this call - it used to work just fine.
On a different note, there appear to be a lot of issues in the system that
don't show up until the system is used at scale. As a question, is there
any sort of system of load testing that mailman/hyperkitty/postorious/etc.
can be put through so that we can find these issues before they bring down
our system in production?
And on a related note, we actually are in the process of setting up a
testing server that we are going to populate with our live data. We should
be able to run certain types of load testing against it. We won't really be
able to test the flow of the 150,000 emails per day that go through our
system, but testing the UI and what happens to it when it is under load,
that we can test.
-Darren
On Thu, May 24, 2018 at 12:57 PM, Simon Hanna <simon(a)hannaweb.eu> wrote:
> On 05/24/2018 06:21 PM, Darren Smith wrote:
> > Hello,
> >
> > This morning our Mailman 3/Hyperkitty/Postorius installation has become
> > unresponsive. When looking at the machine, postgres is pegging all 4 CPUs
> > on the machine.
> >
> > We did some digging in postgres, and here is the query that is causing
> > problems:
> >
> > "SELECT hyperkitty_email.date FROM hyperkitty_email WHERE
> > hyperkitty_email.mailinglist_id = 'fooey(a)rootsweb.com' ORDER BY
> > hyperkitty_email.date ASC LIMIT 1;"
> >
> > We have found that it doesn't matter what mailinglist_id is being used.
> >
> > We have also found that this might be an issue with the LIMIT 1 - our
> > investigation is showing that using LIMIT 1 in postgres makes things
> > execute very differently than if you use a limit 2 or more, and that this
> > is probably what is going on.
> >
> > Basically, every time this gets called, it pegs an entire CPU for 20-30
> > seconds. It appears to be called a LOT.
> >
> > So our users are getting 504 gateway timeouts right now.
> >
> > What has changed:
> >
> > We have been in the process of importing our 40 million archived emails
> > from our old mailman 2 archives.
> >
> > Questions:
> >
> > 1) We have tried doing a grep in the codebase - mailman3, hyperkitty,
> > postorius, django - basically anything that might be calling this code,
> but
> > we can't find it. Does anyone know what generates this query?
> It looks like the query is to get the date from the last email for a
> mailinglist.
> AFAIK Hyperkitty checks this when new emails get it (maybe even during
> import)
>
> It could also relate to the "active" state of mailinglists...
> _______________________________________________
> Mailman-users mailing list
> mailman-users(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>
6 years, 10 months

[MM3-users] Re: Gmail problems?
by Stephen Daniel
Danil --
I've learned something today. I did not know you could check the
authentication.
When I check a message that I received from the list I am told:
ARC-Authentication-Results: i=2; mx.google.com;
dkim=neutral (body hash did not verify) header.i=(a)bellsouth.net
header.s=s2048 header.b=nkq1aBRe;
arc=pass (i=1);
spf=pass (...
I also see this:
ARC-Authentication-Results: i=1; pb-mx22.pobox.com;
arc=none (no signatures found);
bimi=skipped (DMARC did not pass);
dkim=fail (message has been altered, 2048-bit rsa key sha256)
header.d=bellsouth.net header.i=(a)bellsouth.net header.b=nkq1aBRe
header.a=rsa-sha256 header.s=s2048 x-bits=2048;
dmarc=none policy.published-domain-policy=none
How do I fix this DKIM error?
Has the body changed because I add a footer to emails as they pass through?
Note that bellsouth.net is the original sender's email domain.
On Sun, Apr 23, 2023 at 3:41 AM Danil Smirnov <danil(a)smirnov.la> wrote:
> Hi Steve,
>
> Have you checked "Show original" page in Gmail for the messages coming from
> the list?
> Does it have SPF, DKIM, and DMARC checks all "PASS"?
>
> Have you checked if your mailing list server IP hasn't been caught by some
> anti-spam blacklist?
>
> I wouldn't consider the Promotions folder as the issue at all...
> It is not a punishment, just an imprecise classification caused by the
> message content most probably.
>
> With my best regards,
> Danil Smirnov
> Mailman3.com
>
> On Sat, Apr 22, 2023 at 6:03 PM Stephen Daniel <swd(a)pobox.com> wrote:
>
> > Mailman Gurus --
> >
> > I run a number of small lists for my neighborhood association. The
> largest
> > of these is ~120 users. Typical volumes are about 2 messages/day.
> >
> > In the past week or so a number of users who use gmail as their email
> > client have complained that list emails have been going to spam or
> > "promotions" folders. I've always had 1 or 2 users who had trouble
> > receiving mails, but this seems to be a significant percentage of all
> gmail
> > users.
> >
> > I have DMARC mitigation set to unconditional, and the DMARC action set to
> > "Replace From: with list address".
> >
> > My emails are sent using google workspace as my SMTP relay.
> >
> > I'm trying to teach my users to whitelist the list domain, but they are
> > not, in general, a tech-savvy bunch, so it is slow going.
> >
> > Anyone else suddenly having trouble with gmail?
> > Any suggestions?
> >
> > Thanks!!
> >
> > -- Steve
> > _______________________________________________
> > Mailman-users mailing list -- mailman-users(a)mailman3.org
> > To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> > https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> > Archived at:
> >
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
> >
> > This message sent to danil(a)smirnov.la
> >
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> Archived at:
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
>
> This message sent to swd(a)pobox.com
>
2 years

[MM3-users] compress failed (was Re: Solved Re: after last upgrade I've got a CSRF failed verification)
by Guillermo Hernandez (Oldno7)
El 28/10/22 a las 9:18, Guillermo Hernandez (Oldno7) via Mailman-users
escribió:
>
> El 27/10/22 a las 21:39, Mark Sapiro escribió:
>>> After that the compress part showed errors... but the postorius web
>>> maintenance was working well except for the CSRF error verification.
>>> I will trace the compress errors and will try to find the problem
>>> later.
>>
>>
>> Do you have `COMPRESS_ENABLED = True` in your settings? If that's not
>> the issue, it may be in the settings for COMPRESS_PRECOMPILERS
>
> While I'm tracing the problem out, this is the configuration I had
> working and the error it shows after upgrade:
>
> <------- snip of settings.py>
>
> #
> COMPRESS_PRECOMPILERS = (
> ('text/less', 'lessc {infile} {outfile}'),
> ('text/x-scss', 'sassc -t compressed {infile} {outfile}'),
> ('text/x-sass', 'sassc -t compressed {infile} {outfile}'),
> )
> # On a production setup, setting COMPRESS_OFFLINE to True will bring a
> # significant performance improvement, as CSS files will not need to be
> # recompiled on each requests. It means running an additional "compress"
> # management command after each code upgrade.
> #
> http://django-compressor.readthedocs.io/en/latest/usage/#offline-compression
> #### activo compresion 18/12/20
> COMPRESS_OFFLINE = True
> ###COMPRESS_OFFLINE = False
> <---------- end snip>
>
> And below is the error it shows:
>
> /usr/local/mailman3 # su -m mailman3 -c "python3 manage.py compress"
> Traceback (most recent call last):
> File "/usr/local/mailman3/manage.py", line 10, in <module>
> execute_from_command_line(sys.argv)
> File
> "/usr/local/lib/python3.9/site-packages/django/core/management/__init__.py",
> line 446, in execute_from_command_line
> utility.execute()
> File
> "/usr/local/lib/python3.9/site-packages/django/core/management/__init__.py",
> line 440, in execute
> self.fetch_command(subcommand).run_from_argv(self.argv)
> File
> "/usr/local/lib/python3.9/site-packages/django/core/management/__init__.py",
> line 279, in fetch_command
> klass = load_command_class(app_name, subcommand)
> File
> "/usr/local/lib/python3.9/site-packages/django/core/management/__init__.py",
> line 49, in load_command_class
> return module.Command()
> File
> "/usr/local/lib/python3.9/site-packages/django/core/management/base.py",
> line 274, in __init__
> raise TypeError("requires_system_checks must be a list or tuple.")
> TypeError: requires_system_checks must be a list or tuple.
>
>
After searching around, I've got a hint of what can be happening. It
seems a variable has changed in Django 4.1 its nature from boolean to a
tuple
https://github.com/painless-software/django-probes/issues/24
I've upgraded another server with mailman3 lists, with the same config
listed above, and it shows the same error in the "compress" part. I'm
not sure where to set the requires_system_checks variable as in one of
the comments of the link, and as it doesn't seems to break anything
more, I will wait for more info before trying to avoid it. I'm sure it
will have some repercusion on the performance, but I'll have to live
with it.
Thanks again for your supporting advices.
>
>
>
>
>
--
___________________________________________
Mailman's content filtering has removed the
following MIME parts from this message.
Content-Type: image/png
Name: firma-GHP-emails.png
Replaced multipart/alternative part with first alternative.
2 years, 5 months

[MM3-users] Re: Localization of auto-responses, question marks in welcome message
by Claus-Justus Heine
Am 25.04.22 um 08:41 schrieb Stephen J. Turnbull:
> Claus-Justus Heine via Mailman-users writes:
>
> > Kind thanks for the response. I have to apologize: my "test user" had
> > its preferred language set to en_US, so that was the reason for the
> > question marks. So this was indeed a user-error (i.e. my fault).
>
> But we'd like to have that user get the English version of the
> message. One of two things seems reasonable:
>
> 1. You have customized the German template, but not the English
> template. In that case, I think it makes sense for Mailman to
> assume the German template has important information that the
> English does not, and send the German template with its
> appropriate encoding (UTF-8, nowadays). The fact that en_US can
> be encoded in ASCII should not affect the encoding of the de
> template, ever.[1]
I have installed custom templates using the REST API and pointing MM3 to
some download URIs. So MM3 has custom templates for particular lists,
but I did not yet install different templates for different languages.
Still I would also prefer that MM3 would assume that all template text
are UTF-8, independent from the language.
>
> 2. You have not customized the German template. In that case the
> user should get the default English template.
>
> How do those sound to you, as goals for Mailman behavoir?
>
> So ISTM this is a Mailman issue, if Mailman is sending out the German
> message with question marks substituted for non-ASCII characters, or
> if Mailman is sending out the German message with US-ASCII as the
> Content-Type charset parameter. The only way I can see this as a user
> (admin) issue is if you overwrote the English template with German
> (and even then, it's nuts for Mailman not to use UTF-8 for English
> what with directed quotes, emoji, and all the other enhancements to
> the character repertoire that US English speakers use).
>
> Can you tell me a little more about whether you configured any custom
> templates, and if so, how? That is, did you use the Postorius text
> field or overwrite files directly?
I am installing download URLs pointing to a Nextcloud via the REST API
described here:
https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/rest/docs/…
However, I did not care to use URL placeholders for the language which
probably I should have done. However, the RTD page only talks here about
the list's preferred language, not the user's preferred language.
What strikes me more that for the localization of the auto-response
subjects the global setting default_language of the server seems to be
relevant and not the particular list's preferred language.
Claus
>
> Steve
>
>
> Footnotes:
> [1] Note to self: perhaps the admin UI can check the list of
> supported languages and warn if some but not all are customized.
>
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
--
Claus-Justus Heine himself(a)claus-justus-heine.de
http://www.claus-justus-heine.de/
Schatzmeister der Camerata Academica Freiburg e.V. --- www.cafev.de
2 years, 11 months

[MM3-users] mailman.cfg (use_https: yes) fails
by Wolfgang Bock
Hello,
I configuered 3 domains in postorius
https://[mydomain]/mailman3/postorius/domains/ ... also shown here:
https://[mydomain]/mailman3/admin/sites/site/ (django)
I installed mailman3 with debian command apt-get install mailman3-full.
The package mailman3-full is described as follows:
Paket: mailman3-full (3.2.1-1) (for debian-buster, W.B.)
...
Betreuer:
* Debian Mailman Team
<mailto:pkg-mailman-hackers@lists.alioth.debian.org> (QS-Seite
<https://qa.debian.org/developer.php?login=pkg-mailman-hackers%40lists.aliot…>,
E-Mail-Archiv
<https://lists.alioth.debian.org/pipermail/pkg-mailman-hackers/>)
* Pierre-Elliott Bécue <mailto:peb@debian.org> (QS-Seite
<https://qa.debian.org/developer.php?login=peb%40debian.org>)
* Jonas Meurer <mailto:jonas@freesources.org> (QS-Seite
<https://qa.debian.org/developer.php?login=jonas%40freesources.org>)
Full Mailman3 mailing list management suite (metapackage)
This is GNU Mailman, a mailing list management system. This metapackage
depends on all components of the full Mailman3 suite:
* mailman3: The core Mailman3 delivery engine
* mailman3-web: Django project integrating Mailman3 postorius and
hyperkitty
* python3-mailman-hyperkitty: Mailman3 server plugin for Hyperkitty
archiver
.....
That's the output of # mailman info
GNU Mailman 3.2.1 (La Villa Strangiato)
Python 3.7.3 (default, Apr 3 2019, 05:39:12)
[GCC 8.3.0]
config file: /etc/mailman3/mailman.cfg
db url:
mysql+pymysql://[-secret-][mydomain]/mailman3?charset=utf8&use_unicode=1
devmode: DISABLED
REST root url: http://localhost:8001/3.1/
REST credentials: restadmin:[-secret-]
I dont know what version of mailman client is included in the package.
Should I wait until an update includes a higher Version of the
mailman-client?
In this context I faced a strange behavior:
In the database mailman3web in table django_site are listed several
domains, either in the django-domain-management site
https://[mydomain]/mailman3/admin/sites/site/
id domain name
1 example.com Example.com
2 [mydomain-1] [mydomain_name_1]
3 [mydomain-2] [mydomain_name_2]
4 [mydomain-3] [mydomain_name_3]
In case I delete line 1 with the id 1, in the database or in the
django-web-site, postorius fails to work. After re-inserting this line,
postorius works again.
Regards
Wolfgang
Am 16.11.2019 um 01:02 schrieb Mark Sapiro:
> On 11/15/19 3:45 AM, Wolfgang Bock via Mailman-users wrote:
>> That doesn't solve the problem. I changed that in mailman-web.py
>> (MAILMAN_REST_API_URL = https://localhost:8001) and after that in
>> mailman.cfg (use_https: yes). But got the same errormessage on postorius
>> website.
>
> You posted this log excerpt:
>
> Nov 14 23:20:41 2019 (28590) 127.0.0.1 - - "GET
> /3.0/lists?advertised=true&count=0&page=1 HTTP/1.1" 200 90
> Nov 14 23:20:41 2019 (28590) 127.0.0.1 - - "GET
> /3.0/lists?advertised=true&count=10&page=1 HTTP/1.1" 200 606
> Nov 14 23:20:41 2019 (28590) 127.0.0.1 - - "GET /3.1/domains HTTP/1.1"
> 200 1438
> Nov 14 23:20:41 2019 (28590) 127.0.0.1 - - code 400, message Bad
> HTTP/0.9 request type
>
>
> The first 3 GETs are a normal sequence of GETs from Postorius when you
> go to the Mailing Lists view. That should be followed by a GET like "GET
> /3.1/domains/domain.tld HTTP/1.1" where domain.tld is a configured
> domain. Do you have any domains configured?/0.9'?
>
> I'm not sure what the issue is. You have an older version of
> mailmanclient < 3.2.3a1 which uses httplib2 rather than requests.
> https://pypi.org/project/httplib2/ says:
>
> HTTP and HTTPS
> HTTPS support is only available if the socket module was compiled
> with SSL support.
>
> but I don't think this can be the issue because the first 3 GETs work.
>
> You might try upgrading mailmanclient to 3.3.0. I don't know if that
> will help, but it may.
>
5 years, 5 months

[MM3-users] Re: Mailman3 not working following distribution upgrade from Debian 10 to 11.
by gordon@dickens.com
David Newman wrote:
> One general comment: Debian packages install files with a different
> owner than the pip install. You want to be sure all your directories and
> files are owned by the Mailman user ('mailman' on Debian).
Yes, I have checked the ownerships. The debian package installed everything in mailman3 as user "list" whereas I have now setup everything to run as user "mailman". As I previously mentioned, mailman3 (core) is running fine. In fact mailman3 has properly posted numerous messages to several of my mailing lists since I finished setting it up with pip. However, mailman3-web (or mailman-web) is not working, I think because of a permissions issue. The installation instructions specify that mailman3-web (or mailman-web) run as user=mailman and group=mailman. However, the debian installation specifies the data files as user=www-data and group=www-data which is what apache runs as. For instance, I have my static files stored in the /var/lib/mailman3/web/static directory and the previous Debian mailman3 version set all the ownerships and groups to www-data for /var/lib/mailman3/web, /var/lib/mailman3/web/static along with all of the directories and files in the static subdirectory. So, when I run "mailman-web collectstatic" it bombs on the following permissions error:
PermissionError: [Errno 13] Permission denied: '/var/lib/mailman3/web/static/hyperkitty/js/hyperkitty-common.js'
So, my question is as follows. Should I continue to run mailman3-web as user mailman and change the ownership of the /var/lib/mailman3/web directory to mailman or should I leave the permissions of the /var/lib/mailman3/web directory alone and have mailman3-web run as user and group www-data?
> Do you have anything further in any of the logs in /opt/mailman/web/logs ?
Yes, everytime that I try to start mailman3-web it posts this to the log and which includes a permission error as the last line:
*** Starting uWSGI 2.0.20 (64bit) on [Wed Jan 26 17:00:13 2022] ***
compiled with version: 10.2.1 20210110 on 24 January 2022 19:51:51
os: Linux-5.10.0-10-amd64 #1 SMP Debian 5.10.84-1 (2021-12-08)
nodename: slc.mailhub4u.com
machine: x86_64
clock source: unix
pcre jit disabled
detected number of CPU cores: 8
current working directory: /
detected binary path: /opt/mailman/venv/bin/uwsgi
chdir() to /usr/share/mailman3-web
your processes number limit is 31530
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)
bind(): Permission denied [core/socket.c line 230]
> This one might be due to a bug I hit as well. There's a problem with
> mistune, one of the components. If that's the issue here, this should
> address it, run as the mailman user:
> pip install mistune==2.0.0rc1
> mailman-web migrate
> mailman-web compress
> mailman-web collectstatic
> mailman-web compilemessages
Thanks for that tip David! Reverting mistune back to version 2.0.0rc1 allowed "mailman-web migrate" to work. I think that the balance of my problems are permissions related to running mailman3-web (or mailman-web) as user mailman versus www-data. So, please let me know, based on your installation, if I should change the permissions for /var/lib/mailman3/web/ to user/group mailman or should I run mailman3-web as user/group www-data.
Also, any other advice from David or anyone else would be very much appreciated.
Thanks!
Gordon
3 years, 2 months

[MM3-users] Re: integrating mm3 with postfix / lmtp
by Thor Atle Rustad
There is a way around it!
I have had two issues with the the maxking docker image. One is that the
regexp is not working properly. I reported that, and it has been fixed in
newer code. My other problem is that the docker image creates a user,
mailman, that receives uid 103. Well, uid 103 on my system is already taken
by systemd-bus-proxy (grep 103 /etc/passwd returns
"systemd-bus-proxy:x:103:105:systemd Bus
Proxy,,,:/run/systemd:/bin/false").
My solution includes downloading the corrected postfix.py, and replacing
the Dockerfile. I put the postfix.py in <docker-mailman>/core/assets/.
My Dockerfile:
FROM maxking/mailman-core
RUN grep mailman /etc/passwd && grep mailman /etc/group \
&& deluser mailman \
&& addgroup -S -g900 mailman \
&& adduser -S -u900 mailman mailman \
&& grep mailman /etc/passwd && grep mailman /etc/group
COPY assets/postfix.py
/usr/local/lib/python3.6/site-packages/mailman/mta/postfix.py
I then run docker build (with -t parameter, you must look up that
yourself). I use a different name for my images, so I end up with (note,
there are two tags per image):
root@mailer:/home/mailman/docker/docker-mailman_mods/core# docker images
REPOSITORY TAG IMAGE ID CREATED
SIZE
local/mailman_core_900 20171110_2 9649e84767e1 2 days
ago 176MB
local/mailman_core_900 latest 9649e84767e1 2 days
ago 176MB
local/mailman_web_900 20171110_2 07a9b3d7ddd6 2 days
ago 247MB
local/mailman_web_900 latest 07a9b3d7ddd6 2 days
ago 247MB
I do the same with the web image, as I need to change the user there, too.
Then, in docker-compose.yaml, I change the line(s) referring to the image
name(s):
services:
mailman-core:
image: local/mailman_core_900
container_name: mailman-core
hostname: mailman-core
mailman-web:
image: local/mailman_web_900
container_name: mailman-web
hostname: mailman-web
I don't know if this is a good solution, but at least it fixes some serious
issues with the 3.1's postfix integration that wouldn't otherwise be fixed
until the 3.2 release. The bottom line is that it works for me, but it adds
an additional layer of complication.
2017-11-03 19:40 GMT+01:00 Abhilash Raj <maxking(a)asynchronous.in>:
> On Fri, Nov 3, 2017, at 08:29 AM, Fabian A. Santiago wrote:
> > October 26, 2017 11:07 PM, "Mark Sapiro" <mark(a)msapiro.net> wrote:
> >
> > > On October 26, 2017 7:30:35 PM PDT, "Fabian A. Santiago" <
> fsantiago(a)garbage-juice.com> wrote:
> > >
> > >> That was it. Perfect. I manually modified my regexp map and it works
> > >> now. Excellent and Thank you. You're the man. Does mm3 ever refresh
> > >> those maps or only as I add new domains / lists?
> > >
> > > Only when you make changes to domains or lists.
> > >
> > > --
> > > Mark Sapiro <mark(a)msapiro.net>
> > > Sent from my Not_an_iThing with standards compliant, open source
> software.
> >
> > Mark,
> >
> > I've noticed that even simply restarting the mm3 components those alias
> > maps get rewritten and the problem returns until I can manually edit it.
>
> Yeah, that is true. Transport maps are re-generated everytime the
> container restarts.
>
> I don't think think there is any way around this right now :(
>
>
> --
> Abhilash Raj
> maxking(a)asynchronous.in
> _______________________________________________
> Mailman-users mailing list
> mailman-users(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>
7 years, 5 months

[MM3-users] Re: Postorius no connection to REST API
by Mark Sapiro
On 8/12/21 12:01 AM, Richard Rosner wrote:
> Mark Sapiro wrote:
>>> But whatever is listening on port 8001 is apparently not Mailman's rest
>> server. What does
>> ps -fww 14080
>> or whatever PID is currently listening on port 8001 show.
>
> UID PID PPID C STIME TTY STAT TIME CMD
> list 15972 15963 0 Aug11 ? Sl 0:13 /usr/bin/python3 /usr/lib/mailman3/bin/runner -C /etc/mailman3/mailman.cfg --runner=rest:0:1
I had asked "What does ps -fwwa|grep rest show?" and it didn't find
this. That was my error. I meant 'ps -fwwA|grep rest'
>>> OK.
>> Perhaps instead you should have
>> uid: list
>> gid: list
>> in your uwsgi configuration if you don't already.
>
> Tried that while also switching mailman3-web.service to list:list, exactly the same error. Also, I have /run/mailman3-web/uwsgi.sock owned by list:list now instead of www-data:www-data.
All the mailman processes should run as `list` and all mailman related
things should be readable and writable by `list`.
>>> I'm not familiar enough with this form of ProxyPass using sockets to
>> understand what the localhost:8001 does in this context, but uwsgi
>> should not be doing anything with port 8001. In a configuration using
>> TCP, it would listen on port 8000. Port 8001 is where Mailman's REST API
>> server listens. uwsgi should receive connects in your case via the unix
>> socket and then pass them to Django via the application in wsgi.py
>> Also, you may want other paths proxied to uwsgi, namely at least some of
>> hyperkitty, postorius, archives, accounts, admin and user-profile.
>
> Ok, I removed that port again, now it's exctly like in the automatically generated config file.
> And you mean like
>
> <IfModule mod_proxy_uwsgi.c>
> ProxyPass /mailman3/favicon.ico !
> ProxyPass /mailman3/static !
> ProxyPass /mailman3 unix:/run/mailman3-web/uwsgi.sock|uwsgi://localhost/
> ProxyPass /hyperkitty unix:/run/mailman3-web/uwsgi.sock|uwsgi://localhost/
> ProxyPass /postorius unix:/run/mailman3-web/uwsgi.sock|uwsgi://localhost/
> ProxyPass /admin unix:/run/mailman3-web/uwsgi.sock|uwsgi://localhost/
> ProxyPass /archives unix:/run/mailman3-web/uwsgi.sock|uwsgi://localhost/
> ProxyPass /accounts unix:/run/mailman3-web/uwsgi.sock|uwsgi://localhost/
> ProxyPass /user-profile unix:/run/mailman3-web/uwsgi.sock|uwsgi://localhost/
> </IfModule>
Yes, I meant if you want those URLs to work, you have to pass them to
uwsgi. You don't need all of them. `mailman2` and `postorius` are
synonyms as are `archives` and `hyperkitty`
However, you could try using TCP to communicate with uwsgi rather than a
Unix socket.
This means replacing
uwsgi-socket = /run/mailman3-web/uwsgi.sock
with
uwsgi-socket = 0.0.0.0:8000
in your uwsgi.ini file and using directives like
ProxyPass "/postorius" "http://127.0.0.1:8000/postorius"
ProxyPass "/hyperkitty" "http://127.0.0.1:8000/hyperkitty"
ProxyPass "/accounts" "http://127.0.0.1:8000/accounts"
ProxyPass "/django" "http://127.0.0.1:8000/django"
ProxyPass "/user-profile" "http://127.0.0.1:8000/user-profile"
ProxyPass "/mailman3" "http://127.0.0.1:8000/mailman3"
ProxyPass "/archives" "http://127.0.0.1:8000/archives"
in apache.
I am not familiar enough with apache/uwsgi configuration to be of more
help. Have you seen https://wiki.list.org/x/12812344 and have you asked
Debian for help with their package. They are the ones who should be
supporting it <https://www.debian.org/support>.
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
3 years, 8 months

[MM3-users] Re: using SSH/TLS with external MTA
by Odhiambo Washington
On Sun, Jul 28, 2024 at 8:35 PM Mark Sapiro <mark(a)msapiro.net> wrote:
> On 7/28/24 09:54, Roland Giesler via Mailman-users wrote:
> >
> > These settings from the Django docs look like the ones in mailman.cfg.
> > Do I have to set them somewhere else too?
>
>
> Yes. The settings in mailman.cfg only affect mail from Mailman. For mail
> from Django, you have to set things like
>
> EMAIL_HOST = 'box2.gtahardware.co.za'
> EMAIL_PORT = 465
> EMAIL_HOST_USER = 'roland(a)giesler.za.net'
> EMAIL_HOST_PASSWORD = '...'
>
> and possibly others as desired, See the links to the Django docs for these.
>
>
> > * |use_tls|:|EMAIL_USE_TLS|
> >
> > <
> https://docs.djangoproject.com/en/5.0/ref/settings/#std-setting-EMAIL_USE_T…
> >
> > * |use_ssl|:|EMAIL_USE_SSL|
> >
> > <
> https://docs.djangoproject.com/en/5.0/ref/settings/#std-setting-EMAIL_USE_S…
> >
> > * |timeout|:|EMAIL_TIMEOUT|
> >
> > <
> https://docs.djangoproject.com/en/5.0/ref/settings/#std-setting-EMAIL_TIMEO…
> >
> > * |ssl_keyfile|:|EMAIL_SSL_KEYFILE|
> >
> > <
> https://docs.djangoproject.com/en/5.0/ref/settings/#std-setting-EMAIL_SSL_K…
> >
> > * |ssl_certfile|:|EMAIL_SSL_CERTFILE|
> >
> > <
> https://docs.djangoproject.com/en/5.0/ref/settings/#std-setting-EMAIL_SSL_C…
> >
>
> This all goes in your Django settings which from other posts I gather is
> /etc/mailman3/mailman3-web.py. I'm guessing you are using the Debian
> packages and that's where the package puts the Django settings.
>
I am following this thread out of curiosity.
So I added the same lines to my /opt/mailman3/settings.py - on a virtualenv
install of the latest MM3 code.It's my test VM.
After adding the lines and restarting mailmanweb, I then entered the
virtualenv and did 'mailman-web createsuperuser' which completed
successfully, but NO MAIL!
As matter of fact, there isn't even anything in the logs of the MTA running
at w.kictanet.or.ke.
```
root@ubuntu24:/home/wash# su mailman
(venv) mailman@ubuntu24:~$ tail -n 5 /etc/mailman3/settings.py
EMAIL_HOST = 'gw.kictanet.or.ke'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'mailman(a)gw.kictanet.or.ke'
EMAIL_HOST_PASSWORD = 'XXXXXXYYYYYYYZZZZ'
(venv) mailman@ubuntu24:~$ mailman-web createsuperuser
Username (leave blank to use 'mailman'): mm3admin1
Email address: odhiambo(a)outlook.com
Password:
Password (again):
Superuser created successfully.
(venv) mailman@ubuntu24:~$ tail -n 5 /opt/mailman/web/logs/mailmanweb.log
[Nothing in that file]
(venv) mailman@ubuntu24:~$ tail -n 10 /opt/mailman/mm/var/logs/mailman.log
[2024-07-29 13:41:22 +0300] [301491] [INFO] Starting gunicorn 22.0.0
[2024-07-29 13:41:22 +0300] [301491] [INFO] Listening at:
http://127.0.0.1:8001 (301491)
[2024-07-29 13:41:22 +0300] [301491] [INFO] Using worker: sync
[2024-07-29 13:41:22 +0300] [301537] [INFO] Booting worker with pid: 301537
[2024-07-29 13:41:22 +0300] [301538] [INFO] Booting worker with pid: 301538
Jul 29 13:41:23 2024 (301485) bounces runner started.
[29/Jul/2024:13:45:52 +0300] "GET /3.1/domains HTTP/1.1" 200 333 "-" "GNU
Mailman REST client v3.3.5"
[29/Jul/2024:13:45:52 +0300] "GET /3.1/domains/lists.wash.lan HTTP/1.1" 200
228 "-" "GNU Mailman REST client v3.3.5"
[29/Jul/2024:13:45:52 +0300] "GET /3.1/users/odhiambo(a)gmail.com HTTP/1.1"
200 395 "-" "GNU Mailman REST client v3.3.5"
[29/Jul/2024:13:45:52 +0300] "POST /3.1/lists/find HTTP/1.1" 200 503 "-"
"GNU Mailman REST client v3.3.5"
--
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]
8 months, 3 weeks

[MM3-users] Re: Incoming command emails (i.e. listname-leave) routed to list itself
by Mark Sapiro
On 04/20/2017 05:37 PM, Mark Lindsay wrote:
>
> I'm new to Mailman 3 and Mailman in general, but I've got it up and
> running, and my external app is communicating quite well with the
> administrative REST API.
Cool.
> Here's the only problem I haven't been able to figure out:
>
> Say I have a list called "potato." List members can post to the list by
> emailing potato(a)lists.mydomain.org. This works fine. However, incoming mail
> for command addresses (e.g. potato-leave(a)lists.mydomain.org) is routed to
> the list too. The command email gets sent out to all members, as if the
> user who wanted to unsubscribe had just written to potato(a)lists.mydomain.org.
> This is also the case with the potato-request(a)lists.mydomain.org address.
>
> I am using exim4 on Ubuntu. I followed the instructions here:
> http://mailman.readthedocs.io/en/release-3.0/src/mailman/docs/MTA.html. The
> only change I had to make to the exim4 config files in the readthedocs
> instructions was in this line:
>
> MM3_LISTCHK=MM3_HOME/lists/${local_part}@${domain}
>
> I had to change it to:
>
> MM3_LISTCHK=MM3_HOME/lists/${local_part}.${domain}
>
> That is how the subdirectories are named in my lists directory. e.g.
> potato.lists.mydomain.org. If I use the exact MM3_LISTCHK value from
> readthedocs, I get 550 Unrouteable bounces.
OK. That document needs updating. Also, the '-admin' local_part_suffix
should not be there, but that's not related to your issue. '-admin' is
from MM 2.1 and isn't used in MM 3.
> Here are some baffling lines from /var/log/exim4/mainlog from the incoming
> potato-leave(a)lists.mydomain.org email:
>
> 2017-04-21 00:25:03 1d1MNj-0007OQ-5r DKIM: d=nervous-org.20150623.
> gappssmtp.com s=20150623 c=relaxed/relaxed a=rsa-sha256 [verification
> succeeded]
> 2017-04-21 00:25:03 1d1MNj-0007OQ-5r <= redacted(a)nervous.org H=
> mail-qk0-f170.google.com [209.85.220.170] P=esmtp S=2466 id=
> CABPy5zyQtJHXtCgrN37GHCUOjuo3J=DO_j0ZD03zm8gk+4shww(a)mail.gmail.com
> 2017-04-21 00:25:03 1d1MNj-0007OQ-5r => potato(a)lists.mydomain.org <
> potato-leave(a)lists.mydomain.org> R=mailman3_router T=mailman3_transport
> H=localhost [127.0.0.1] C="250 Ok"
> 2017-04-21 00:25:03 1d1MNj-0007OQ-5r Completed
>
> Why does it say `potato(a)lists.mydomain.org <potato-leave(a)lists.mydomain.org
>> `?
That's the key question. The transport is supposed to just relay the
message to Mailman via LMTP to MM3_LMTP_PORT, but it appears to be
rewriting the envelope recipient from potato-leave(a)lists.mydomain.org to
potato(a)lists.mydomain.org. I suspect the router is somehow stripping
local_part_suffix from the recipient address, but why, I don't know.
> I think this is actually an exim4 problem, so if the solution is to just
> switch to postfix, then I will definitely do that. But I'm just asking in
> case someone had a similar issue with exim4 and was able to work through it.
We want to make MM 3 work with Exim as an MTA. Unfortunately, I have not
used Exim as an MTA in a long time and not with Mailman 3 at all, so I
may not be much help. I think the person who set up Exim is on this list
and may reply. If not, I'll try to research this further.
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
8 years

[MM3-users] Re: Mailman sends Welcome emails, but does not send [List] postings emails
by Nelson Strother
Here are the (four identical, but for timestamps and process numbers, at
a glance) tracebacks, and some related info:
--- from /var/log/syslog
Jun 8 03:35:47 localhost mailman[13107]: Traceback (most recent call last):
Jun 8 03:35:48 localhost mailman[13107]: File
"/var/tmp/mailman/.local/bin/runner", line 8, in <module>
Jun 8 03:35:48 localhost mailman[13107]: sys.exit(main())
Jun 8 03:35:48 localhost mailman[13107]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/click/core.py",
line 1130, in __call__
Jun 8 03:35:48 localhost mailman[13107]: return self.main(*args,
**kwargs)
Jun 8 03:35:48 localhost mailman[13107]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/click/core.py",
line 1055, in main
Jun 8 03:35:48 localhost mailman[13107]: rv = self.invoke(ctx)
Jun 8 03:35:48 localhost mailman[13107]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/click/core.py",
line 1404, in invoke
Jun 8 03:35:48 localhost mailman[13107]: return
ctx.invoke(self.callback, **ctx.params)
Jun 8 03:35:48 localhost mailman[13107]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/click/core.py",
line 760, in invoke
Jun 8 03:35:48 localhost mailman[13107]: return __callback(*args,
**kwargs)
Jun 8 03:35:48 localhost mailman[13107]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/click/decorators.py",
line 26, in new_func
Jun 8 03:35:48 localhost mailman[13107]: return
f(get_current_context(), *args, **kwargs)
Jun 8 03:35:48 localhost mailman[13107]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/mailman/bin/runner.py",
line 160, in main
Jun 8 03:35:49 localhost mailman[13107]: initialize(config_file, verbose)
Jun 8 03:35:49 localhost mailman[13107]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/mailman/core/initialize.py",
line 231, in initialize
Jun 8 03:35:49 localhost mailman[13107]:
initialize_2(propagate_logs=propagate_logs)
Jun 8 03:35:49 localhost mailman[13107]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/mailman/core/initialize.py",
line 189, in initialize_2
Jun 8 03:35:49 localhost mailman[13107]: config.db =
getUtility(IDatabaseFactory, utility_name).create()
Jun 8 03:35:49 localhost mailman[13107]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/mailman/database/factory.py",
line 60, in create
Jun 8 03:35:49 localhost mailman[13107]: return database
Jun 8 03:35:49 localhost mailman[13107]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/flufl/lock/_lockfile.py",
line 470, in __exit__
Jun 8 03:35:49 localhost mailman[13107]: self.unlock()
Jun 8 03:35:49 localhost mailman[13107]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/flufl/lock/_lockfile.py",
line 420, in unlock
Jun 8 03:35:49 localhost mailman[13107]: raise
NotLockedError('Already unlocked')
Jun 8 03:35:49 localhost mailman[13107]:
flufl.lock._lockfile.NotLockedError: Already unlocked
Jun 8 03:35:49 localhost dhclient[633]: RCV: Advertise message on
ens192 from fe80::250:56ff:fe95:b457.
Jun 8 03:36:46 localhost mailman[13100]: Traceback (most recent call last):
Jun 8 03:36:46 localhost mailman[13100]: File
"/var/tmp/mailman/.local/bin/runner", line 8, in <module>
Jun 8 03:36:46 localhost mailman[13100]: sys.exit(main())
Jun 8 03:36:46 localhost mailman[13100]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/click/core.py",
line 1130, in __call__
Jun 8 03:36:46 localhost mailman[13100]: return self.main(*args,
**kwargs)
Jun 8 03:36:46 localhost mailman[13100]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/click/core.py",
line 1055, in main
Jun 8 03:36:46 localhost mailman[13100]: rv = self.invoke(ctx)
Jun 8 03:36:46 localhost mailman[13100]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/click/core.py",
line 1404, in invoke
Jun 8 03:36:46 localhost mailman[13100]: return
ctx.invoke(self.callback, **ctx.params)
Jun 8 03:36:46 localhost mailman[13100]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/click/core.py",
line 760, in invoke
Jun 8 03:36:46 localhost mailman[13100]: return __callback(*args,
**kwargs)
Jun 8 03:36:46 localhost mailman[13100]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/click/decorators.py",
line 26, in new_func
Jun 8 03:36:46 localhost mailman[13100]: return
f(get_current_context(), *args, **kwargs)
Jun 8 03:36:46 localhost mailman[13100]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/mailman/bin/runner.py",
line 160, in main
Jun 8 03:36:46 localhost mailman[13100]: initialize(config_file, verbose)
Jun 8 03:36:46 localhost mailman[13100]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/mailman/core/initialize.py",
line 231, in initialize
Jun 8 03:36:46 localhost mailman[13100]:
initialize_2(propagate_logs=propagate_logs)
Jun 8 03:36:46 localhost mailman[13100]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/mailman/core/initialize.py",
line 189, in initialize_2
Jun 8 03:36:46 localhost mailman[13100]: config.db =
getUtility(IDatabaseFactory, utility_name).create()
Jun 8 03:36:46 localhost mailman[13100]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/mailman/database/factory.py",
line 60, in create
Jun 8 03:36:46 localhost mailman[13100]: return database
Jun 8 03:36:46 localhost mailman[13100]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/flufl/lock/_lockfile.py",
line 470, in __exit__
Jun 8 03:36:46 localhost mailman[13100]: self.unlock()
Jun 8 03:36:46 localhost mailman[13100]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/flufl/lock/_lockfile.py",
line 420, in unlock
Jun 8 03:36:46 localhost mailman[13100]: raise
NotLockedError('Already unlocked')
Jun 8 03:36:46 localhost mailman[13100]:
flufl.lock._lockfile.NotLockedError: Already unlocked
Jun 8 03:36:56 localhost mailman[13109]: Traceback (most recent call last):
Jun 8 03:36:56 localhost mailman[13109]: File
"/var/tmp/mailman/.local/bin/runner", line 8, in <module>
Jun 8 03:36:56 localhost mailman[13109]: sys.exit(main())
Jun 8 03:36:56 localhost mailman[13109]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/click/core.py",
line 1130, in __call__
Jun 8 03:36:56 localhost mailman[13109]: return self.main(*args,
**kwargs)
Jun 8 03:36:56 localhost mailman[13109]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/click/core.py",
line 1055, in main
Jun 8 03:36:56 localhost mailman[13109]: rv = self.invoke(ctx)
Jun 8 03:36:56 localhost mailman[13109]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/click/core.py",
line 1404, in invoke
Jun 8 03:36:56 localhost mailman[13109]: return
ctx.invoke(self.callback, **ctx.params)
Jun 8 03:36:56 localhost mailman[13109]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/click/core.py",
line 760, in invoke
Jun 8 03:36:56 localhost mailman[13109]: return __callback(*args,
**kwargs)
Jun 8 03:36:56 localhost mailman[13109]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/click/decorators.py",
line 26, in new_func
Jun 8 03:36:56 localhost mailman[13109]: return
f(get_current_context(), *args, **kwargs)
Jun 8 03:36:56 localhost mailman[13109]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/mailman/bin/runner.py",
line 160, in main
Jun 8 03:36:56 localhost postfix/anvil[13147]: statistics: max
connection rate 1/60s for (smtp:163.123.143.10) at Jun 8 03:33:27
Jun 8 03:37:00 localhost postfix/anvil[13147]: statistics: max
connection count 1 for (smtp:163.123.143.10) at Jun 8 03:33:27
Jun 8 03:37:00 localhost mailman[13109]: initialize(config_file, verbose)
Jun 8 03:37:01 localhost mailman[13109]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/mailman/core/initialize.py",
line 231, in initialize
Jun 8 03:37:01 localhost mailman[13109]:
initialize_2(propagate_logs=propagate_logs)
Jun 8 03:37:01 localhost mailman[13109]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/mailman/core/initialize.py",
line 189, in initialize_2
Jun 8 03:37:01 localhost mailman[13109]: config.db =
getUtility(IDatabaseFactory, utility_name).create()
Jun 8 03:37:01 localhost mailman[13109]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/mailman/database/factory.py",
line 60, in create
Jun 8 03:37:01 localhost mailman[13109]: return database
Jun 8 03:37:01 localhost mailman[13109]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/flufl/lock/_lockfile.py",
line 470, in __exit__
Jun 8 03:37:01 localhost mailman[13109]: self.unlock()
Jun 8 03:37:01 localhost mailman[13109]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/flufl/lock/_lockfile.py",
line 420, in unlock
Jun 8 03:37:01 localhost mailman[13109]: raise
NotLockedError('Already unlocked')
Jun 8 03:37:01 localhost mailman[13109]:
flufl.lock._lockfile.NotLockedError: Already unlocked
Jun 8 03:37:01 localhost postfix/anvil[13147]: statistics: max cache
size 1 at Jun 8 03:33:27
Jun 8 03:37:01 localhost mailman[13110]: Traceback (most recent call last):
Jun 8 03:37:01 localhost mailman[13110]: File
"/var/tmp/mailman/.local/bin/runner", line 8, in <module>
Jun 8 03:37:01 localhost mailman[13110]: sys.exit(main())
Jun 8 03:37:01 localhost mailman[13110]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/click/core.py",
line 1130, in __call__
Jun 8 03:37:01 localhost mailman[13110]: return self.main(*args,
**kwargs)
Jun 8 03:37:01 localhost mailman[13110]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/click/core.py",
line 1055, in main
Jun 8 03:37:01 localhost mailman[13110]: rv = self.invoke(ctx)
Jun 8 03:37:01 localhost mailman[13110]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/click/core.py",
line 1404, in invoke
Jun 8 03:37:01 localhost mailman[13110]: return
ctx.invoke(self.callback, **ctx.params)
Jun 8 03:37:01 localhost mailman[13110]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/click/core.py",
line 760, in invoke
Jun 8 03:37:01 localhost mailman[13110]: return __callback(*args,
**kwargs)
Jun 8 03:37:01 localhost mailman[13110]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/click/decorators.py",
line 26, in new_func
Jun 8 03:37:01 localhost mailman[13110]: return
f(get_current_context(), *args, **kwargs)
Jun 8 03:37:01 localhost mailman[13110]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/mailman/bin/runner.py",
line 160, in main
Jun 8 03:37:01 localhost mailman[13110]: initialize(config_file, verbose)
Jun 8 03:37:01 localhost mailman[13110]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/mailman/core/initialize.py",
line 231, in initialize
Jun 8 03:37:01 localhost mailman[13110]:
initialize_2(propagate_logs=propagate_logs)
Jun 8 03:37:01 localhost mailman[13110]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/mailman/core/initialize.py",
line 189, in initialize_2
Jun 8 03:37:01 localhost mailman[13110]: config.db =
getUtility(IDatabaseFactory, utility_name).create()
Jun 8 03:37:01 localhost mailman[13110]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/mailman/database/factory.py",
line 60, in create
Jun 8 03:37:01 localhost mailman[13110]: return database
Jun 8 03:37:01 localhost mailman[13110]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/flufl/lock/_lockfile.py",
line 470, in __exit__
Jun 8 03:37:01 localhost mailman[13110]: self.unlock()
Jun 8 03:37:01 localhost mailman[13110]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/flufl/lock/_lockfile.py",
line 420, in unlock
Jun 8 03:37:01 localhost mailman[13110]: raise
NotLockedError('Already unlocked')
Jun 8 03:37:01 localhost mailman[13110]:
flufl.lock._lockfile.NotLockedError: Already unlocked
--- note that processes 13100, 13107, 13109, and 13110 are the ones
missing from the sequential process numbers shown by systemctl status
mailman below, were presumably momentarily the missing command, digests,
retry, and virgin runners ...
-- all of the recent lines from /var/tmp/mailman/logs/mailman.log :
Jun 08 03:24:17 2023 (4268) Master stopped
Jun 08 03:30:18 2023 (13093) Master started
Jun 08 03:43:31 2023 (13108) task runner started.
Jun 08 03:43:52 2023 (13108) Task runner evicted 0 expired pendings
Jun 08 03:43:52 2023 (13108) Task runner deleted 0 orphaned workflows
Jun 08 03:43:53 2023 (13108) Task runner deleted 0 orphaned requests
Jun 08 03:43:54 2023 (13108) Task runner deleted 0 orphaned messages
Jun 08 03:43:54 2023 (13108) Task runner evicted expired cache entries
Jun 08 03:44:17 2023 (13101) in runner started.
Jun 08 03:44:23 2023 (13105) pipeline runner started.
Jun 08 03:44:54 2023 (13103) nntp runner started.
Jun 08 03:45:59 2023 (13098) archive runner started.
Jun 08 03:46:06 2023 (13104) out runner started.
Jun 08 03:46:23 2023 (13099) bounces runner started.
Jun 08 03:46:43 2023 (13106) rest runner started.
[2023-06-08 03:46:43 +0000] [13106] [INFO] Starting gunicorn 20.1.0
[2023-06-08 03:46:43 +0000] [13106] [INFO] Listening at:
http://127.0.0.1:8001 (13106)
[2023-06-08 03:46:43 +0000] [13106] [INFO] Using worker: sync
[2023-06-08 03:46:44 +0000] [13345] [INFO] Booting worker with pid: 13345
[2023-06-08 03:46:44 +0000] [13346] [INFO] Booting worker with pid: 13346
Jun 08 03:46:46 2023 (13102) lmtp runner started.
Jun 08 04:44:04 2023 (13108) Task runner evicted 0 expired pendings
Jun 08 04:44:04 2023 (13108) Task runner deleted 0 orphaned workflows
Jun 08 04:44:05 2023 (13108) Task runner deleted 0 orphaned requests
Jun 08 04:44:05 2023 (13108) Task runner deleted 0 orphaned messages
Jun 08 04:44:05 2023 (13108) Task runner evicted expired cache entries
{with these last five lines being repeated hourly since ...}
--
root@localhost:~# systemctl status mailman
● mailman.service - GNU Mailing List Manager
Loaded: loaded (/etc/systemd/system/mailman.service; enabled;
vendor preset: enabled)
Active: active (running) since Thu 2023-06-08 03:30:18 UTC; 13h ago
Process: 13092 ExecStart=/var/tmp/mailman/.local/bin/mailman
--config /var/tmp/mailman/var/etc/mailman.cfg start (code=exited,
status=0/SUCCESS)
Main PID: 13093 (python3)
Tasks: 17 (limit: 465)
Memory: 73.5M
CPU: 15min 23.511s
CGroup: /system.slice/mailman.service
├─13093 /usr/bin/python3
/var/tmp/mailman/.local/bin/master -C /var/tmp/mailman/var/etc/mailman.cfg
├─13098 /usr/bin/python3
/var/tmp/mailman/.local/bin/runner -C
/var/tmp/mailman/var/etc/mailman.cfg --runner=archive:0:1
├─13099 /usr/bin/python3
/var/tmp/mailman/.local/bin/runner -C
/var/tmp/mailman/var/etc/mailman.cfg --runner=bounces:0:1
├─13101 /usr/bin/python3
/var/tmp/mailman/.local/bin/runner -C
/var/tmp/mailman/var/etc/mailman.cfg --runner=in:0:1
├─13102 /usr/bin/python3
/var/tmp/mailman/.local/bin/runner -C
/var/tmp/mailman/var/etc/mailman.cfg --runner=lmtp:0:1
├─13103 /usr/bin/python3
/var/tmp/mailman/.local/bin/runner -C
/var/tmp/mailman/var/etc/mailman.cfg --runner=nntp:0:1
├─13104 /usr/bin/python3
/var/tmp/mailman/.local/bin/runner -C
/var/tmp/mailman/var/etc/mailman.cfg --runner=out:0:1
├─13105 /usr/bin/python3
/var/tmp/mailman/.local/bin/runner -C
/var/tmp/mailman/var/etc/mailman.cfg --runner=pipeline:0:1
├─13106 /usr/bin/python3
/var/tmp/mailman/.local/bin/runner -C
/var/tmp/mailman/var/etc/mailman.cfg --runner=rest:0:1
├─13108 /usr/bin/python3
/var/tmp/mailman/.local/bin/runner -C
/var/tmp/mailman/var/etc/mailman.cfg --runner=task:0:1
├─13345 /usr/bin/python3
/var/tmp/mailman/.local/bin/runner -C
/var/tmp/mailman/var/etc/mailman.cfg --runner=rest:0:1
└─13346 /usr/bin/python3
/var/tmp/mailman/.local/bin/runner -C
/var/tmp/mailman/var/etc/mailman.cfg --runner=rest:0:1
Jun 08 03:37:01 localhost mailman[13110]:
initialize_2(propagate_logs=propagate_logs)
Jun 08 03:37:01 localhost mailman[13110]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/mailman/core/initialize.py",
line 189, in initialize_2
Jun 08 03:37:01 localhost mailman[13110]: config.db =
getUtility(IDatabaseFactory, utility_name).create()
Jun 08 03:37:01 localhost mailman[13110]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/mailman/database/factory.py",
line 60, in create
Jun 08 03:37:01 localhost mailman[13110]: return database
Jun 08 03:37:01 localhost mailman[13110]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/flufl/lock/_lockfile.py",
line 470, in __exit__
Jun 08 03:37:01 localhost mailman[13110]: self.unlock()
Jun 08 03:37:01 localhost mailman[13110]: File
"/var/tmp/mailman/.local/lib/python3.9/site-packages/flufl/lock/_lockfile.py",
line 420, in unlock
Jun 08 03:37:01 localhost mailman[13110]: raise
NotLockedError('Already unlocked')
Jun 08 03:37:01 localhost mailman[13110]:
flufl.lock._lockfile.NotLockedError: Already unlocked
root@localhost:~#
On 6/8/23 13:02, Mark Sapiro wrote:
> On 6/7/23 21:30, Nelson Strother wrote:
>>
>> Interestingly if I use `systemctl start mailman` thus far the results
>> are:
>> - the wall clock duration is shorter than when `mailman start` is
>> issued from the command line, and
>> -- either that all of the runners remain present once they are started,
>> -- or I can see in syslog a traceback from each missing runner
>> process starting from .../mailman/.local/bin/runner and ending with
>> "flufl.lock._lockfile.NotLockedError: Already unlocked".
>>
>> I do not yet understand how to make use of these clues, but at least
>> one can see an epitaph from each deceased process.
>
>
> The NotLockedError is most likely because a lock has been set with a
> lifetime and its lifetime has passed and some other process has broken
> the lock before the original process tries to unlock it. This probably
> has something to do with the long times to do start/restart.
>
> However, the only lock that should be involved is the master lock set
> by the master watcher, so I don't really understand what might be
> happening.
>
> What is the full traceback from these errors?
>
1 year, 10 months

[MM3-users] Re: Deliverability and Spam Filtering
by Tom @ Gather
Interesting! Does the `in` queue also work for emails to subaddresses like
foo-owner, etc? Or is it only for list posts?
Relatedly, why is `list_id` a required parameter? Isn't that information
contained in the email?
Struggling to understand this fully... Thanks for the help.
On Thu, Jan 30, 2020 at 4:06 PM Abhilash Raj <maxking(a)asynchronous.in>
wrote:
> On Thu, Jan 30, 2020, at 8:44 AM, tom(a)gather.coop wrote:
> > Hi folks! First time poster, long time Mailman user.
> >
> > I am setting up a new Mailman 3 instance, and am super excited about
> > the REST API. I plan to use it to enable tight integration with a
> > separate web app that I maintain.
> >
> > As I am setting up the mail server, I am wondering about two related
> > things: deliverability (for outgoing mail) and spam filtering (for
> > incoming mail).
> >
> > What solutions have folks used for these? I know it is generally common
> > now to outsource this critical task to a cloud provider like Mailgun or
> > etc. Have folks needed this or is running ones own incoming and
> > outgoing mail not a big deal? So many horror stories out there...
> >
> > As far as Mailgun goes, I think it should be straightforward to
> > configure it for outgoing mail, but I'm not sure how I'd use it for
> > incoming. Mailgun can forward mail via HTTP or to another email
> > address. Neither I think would work out of the box. It would be great
> > if there were a REST API endpoint for incoming mail, but I don't think
> > such a thing exists, right? Perhaps I could add one?
>
> There does exist a way to insert messages into Mailman via REST API, if
> you want to do that. It is done via Queue API, which exposes the internal
> store where messages sit after they are received from LMTP before they are
> processed.
>
> You can just inject the message in "IN" queue and it should be processed
> like a regular incoming message.
>
>
> https://mailman.readthedocs.io/en/latest/src/mailman/rest/docs/queues.html
>
> Although, it seems to only accept string representation of Email, which
> may not be ideal for your use case. It might be some work to make it work
> for raw bytes.
>
> >
> > Another thought I had was that I could write a simple HTTP server that
> > receives mail from Mailgun and forwards it to Mailman via LMTP. But it
> > seems simpler to go right to Mailman's core API given that one exist
> > already.
> >
> > Or am I thinking about this all wrong? Are there other more suitable
> > services out there? I looked for cloud MTA providers but didn't turn up
> > much except for in the large enterprise space, which I'm sure I can't
> > afford.
> >
> > Thanks for any thoughts!
> > _______________________________________________
> > Mailman-users mailing list -- mailman-users(a)mailman3.org
> > To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> > https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> >
>
> --
> thanks,
> Abhilash Raj (maxking)
>
5 years, 2 months

[MM3-users] Re: (Custom) Plugins: Proper file path(s) for adding a handler?
by Thomas Ward
On 10/23/23 23:03, Thomas Ward via Mailman-users wrote:
> On 10/23/23 22:57, Abhilash Raj wrote:
>> On 10/23/23 20:37, Thomas Ward via Mailman-users wrote:
>>> 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).
>>
>> https://gitlab.com/mailman/mailman/-/tree/master/src/mailman/plugins/testin…
>>
>>
>> https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/plugins/do…
>>
>>
>> These are two places you can find docs for an example plugin that
>> ships with Mailman's code. Adding a new "component", like a Handler,
>> works very similar to the "rules" in the example shown above.
> Yeah these're helpful, but the problem I was running into was file
> naming schema - I was not aware it's always
> PLUGIN/COMPONENT/COMPONENT.py in the naming, which it was not entirely
> clear about. It makes sense now that I look back, but it never hurts
> to get clarification.
>>
>> You will probably need a directory tree like:
>> ```
>> example/
>> __init__.py
>> hooks.py
>> handlers/
>> __init__.py
>> handlers.py
>> ```
>>
>> Installing the handler is same as per shown in docs using below (do
>> note that the above example is the name of the package that is
>> importable):
>>
>>
>> <snip>
>>
>> Finally, you can verify that your handler was loaded properly using
>> something along the lines of:
>>
>> ```
>> $ mailman shell
>> 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.
>>
>> >>> for each in config.handlers:
>> ... print(each)
>> ...
>> <snip>
>
> The only other thing that was missing is how to set up the proper code
> for a Handler implementation/class, which I used an existing mailman3
> core plugin as an example to just run with for testing purposes.
>
> There are notes in the example plugin on Gitlab and the documentation
> that "other components will be added as examples eventually" but that
> was well over a year ago, so we'll see how that ages.
>
>
> Thanks for the assist!
>
>
> Thomas
>
One last question:
This is in the Plugins documentation:
> Mailman defines a plugin as a Python package on sys.path that
provides components matching the IPlugin interface.
This means I can install the code to anywhere on `sys.path` that the
system can detect and it does not need to be in the Mailman3
library/directory space in the venv?
Thomas
1 year, 5 months

[MM3-users] Re: Message-Footer after migrating to Mailman3
by Mark Sapiro
On 5/24/21 10:43 AM, christopher.claus(a)tgcamberg1848.de wrote:
>
> I found the file
> [code]
> /usr/lib/python3.8/site-packages/mailman/templates/de/list:member:generic:footer.txt
> [/code]
> which includes the old footer:
> [code]
> _______________________________________________
> $display_name Mailingliste -- $listname
> Zur Abmeldung von dieser Mailingliste senden Sie eine Nachricht an ${short_listname}-leave@${domain}
> [/code]
>
> but no configuration item to disable this behaviour.
That is the default footer template that's part of the Mailman
distribution. That template is overridden by those in Mailman's
var/templates/ directory. Mailmnan's import21 process created footers
template in var/templates/lists/<LIST_ID>/list:member:regular:footer.txt
and var/templates/lists/<LIST_ID>/list:member:digest:footer.txt
> I created a new template list:member:regular:footer for the list to override the footer. But the old footer is still used
where did you put it?
> in detail: the resulting message sent to all subcribers of the list contains only the footer and the content sent to the list is an attachement of that "footer-message". This is the basic reason why I want to change it.
>
> In the logfiles I found an error and a warning:
> [code]
> ERROR 2021-05-24 16:22:22,895 1648 django.security.DisallowedHost Invalid HTTP_HOST header: 'tgc_mailman_web:8000'. The domain name provided is not valid according to RFC 1034/1035.
> WARNING 2021-05-24 16:22:22,896 1648 django.request Bad Request: /postorius/api/templates/list/homepage.gruppe.tgcamberg1848.de/list:member:regular:footer
> [/code]
It appears you created the new template with Postorius, but there is an
issue for Postorius templates. Possibly your Django setting for
POSTORIUS_TEMPLATE_BASE_URL needs to be adjusted.
> Obviously I have a problem with the hostname. I set
> [code]
> POSTORIUS_TEMPLATE_BASE_URL=http://tgc_mailman_web:8000
> [/code]
> where tgc_mailman_web is my container name. This URL ist stored in the DB-table "template" for the name=list:member:regular:footer. A call to my fqdn or to localhost
> [code]
> wget http://localhost:8000/postorius/api/templates/list/homepage.gruppe.tgcamber…
> [/code]
> will return the footer itself - this works fine. Therefore, should i set POSTORIUS_TEMPLATE_BASE_URL to http://localhost:8000?
If that works, yes.
> I think, resolving this issue will use the newly configured footer. But I started with the intention to remove alle footers due to the attachement situation described above.
>
> Does anybody have an idea how to change the configuration of my list? Are these problems probably related to the import? Currently we are using more then 25 lists with a lot of users. Manually recreating all lists is not possible an could only be a test for a single list.
The issue you are seeing has only to do with the fact that the footer is
non-empty. It is not related to footer content. It is because you are
posting other than text/plain messages and the MUAs you are viewing the
mail with are confused by the footer being a separate MIME part. See the
FAQ article at https://wiki.list.org/x/4030707 for discussion of this
issue in MM 2.1 which is also relevant to MM 3.
To disable adding footers entirely, sitewide, create an empty file,
readable by Mailman at Mailman's
```
var/templates/site/de/list:member:generic:footer.txt
```
More about templates and search rules is at
templates/de/list:member:generic:footer.txt and
https://gitlab.com/mailman/mailman/-/blob/master/src/mailman/utilities/i18n…
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
3 years, 10 months

[MM3-users] Re: Hyperkitty - Non-ascii sender address
by Thomas G
Hi,
https://gitlab.com/mailman/hyperkitty/blob/master/hyperkitty/lib/incoming.p…
I changed "sender" for this;
# Sender
try:
from_str = header_to_unicode(message['From'])
from_name, from_email = parseaddr(from_str)
from_name = unidecode.unidecode(from_name).strip()
except (UnicodeDecodeError, UnicodeEncodeError):
raise (ValueError("Non-ascii sender address", message))
try:
sender_address = from_email.encode('ascii').decode("ascii").strip()
except (UnicodeDecodeError, UnicodeEncodeError):
if from_name:
sender_address = re.sub("[^a-z0-9]", "", from_name.lower())
if not sender_address:
sender_address = "unknown(a)unknown.com"
else:
sender_address = "unknown(a)unknown.com"
print("Non-ascii sender addre -- Sender address replaced by ",
sender_address)
I got this output (example):
|Non-ascii sender address -- Sender address replaced by
stephaneblipblopstlablipblopgmailcom
It's not really perfect, I'm working to do something better, but basically
it's works.
I think that there is a issue in the original code:
Because : "" raise ValueError("Non-ascii sender address", message) ""
The second part will be never call:
if not sender_address:
if from_name:
sender_address = re.sub("[^a-z0-9]", "", from_name.lower())
if not sender_address:
sender_address = "unknown"
sender_address = "{}(a)example.com".format(sender_address)
else:
sender_address = "unknown(a)example.com"
If you bypass : "" raise ValueError("Non-ascii sender address", message)
"", by a simple print(), you will get an error due to an unassigned
variable (sender_address).
Le mar. 30 oct. 2018 à 04:10, Mark Sapiro <mark(a)msapiro.net> a écrit :
> On 10/28/18 12:03 PM, Guiseppin Thomas wrote:
> > Hi,
> >
> > I imported some mbox archives in Hyperkitty.
> >
> > I have lot issues like:
> >
> > /\Failed adding message <5b0900ab.1c69fb81.70ab.2f87(a)mx.google.com>:
> > ('Non-ascii sender address', <email.message.EmailMessage object at
> > 0x7f05f1606048>)//
> > //Non-ascii sender address from "Stéphane blipblop <stlablipblop at
> > gmail.com>" about [HATLAB][It] Re: A débarrasser ! /
> >
> > It's probably because "Stéphane".
>
>
> The 'Non-ascii sender address' message comes from
>
> > try:
> > from_str = header_to_unicode(message['From'])
> > from_name, from_email = parseaddr(from_str)
> > from_name = from_name.strip()
> > sender_address =
> from_email.encode('ascii').decode("ascii").strip()
> > except (UnicodeDecodeError, UnicodeEncodeError):
> > raise ValueError("Non-ascii sender address", message)
>
> Possibly the exception is thrown in parseaddr(), but much more likely,
> the email address, not the display name contains non-ascii.
>
> > Some advise to fix it ?
>
>
> All the other messages should have been imported. If you can find and
> fix the 'bad' ones in the mbox, you can make a new mbox with just those
> and import that. You could also import the entire mbox with fixed
> messages. The already added ones won't be re-imported because of
> duplicate Message-ID:, but it's extra processing.
>
> If the actual bad message From: header is
>
> From: Stéphane blipblop <stlablipblop(a)gmail.com>
>
> or
>
> From: Stéphane blipblop <stlablipblop at gmail.com>
>
> That shouldn't cause the error, so I'g guessing that 'blipblop' is not
> the actual value and the actual value in <stlablipblop at gmail.com> has
> non-ascii.
>
> --
> Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
> San Francisco Bay Area, California better use your sense - B. Dylan
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>
6 years, 5 months

[MM3-users] Moderated unsub requests are not provided by mailman3 service
by Joachim Schrod
Hello,
I'm new to Mailman3; being in the process of moving some mailing lists
from an ancient Mailman2 installation to a new host. (These lists are
not big; they are used to organize a yearly holiday of roughly 50
persons.) As part of the migration; I'm testing out actions that were
done on the previous Mailman2 instance.
Currently, I stumble over confirmation of unsubscribe requests.
Unsubscribe policy of the list is "Moderate". I subscribed an email
address and used "Mass operations - Mass removal" in Postorius to
unsubscribe it. (Actually, since it didn't work at first, I used that
dialog twice.) Now I, as the mailing list owner, get a daily email vom
Mailman3 that there are pending unsubscription requests that I shall
approve. (Both unsubscription requests for the same email requests are
listed in that email; doublettes are not handled properly.)
The unsubscriptions requests are not shown in the web interface. I
suppose they should appear in the UI section "Subscription requests",
either as "Pending Approval" or "Pending Confirmation". (Frankly, I
don't understand the difference between these two options at all.)
Tracing the communication between Postorius and mailman3 service, I
see that Postorius asks mailman3 about pending unsubscriptions with
the following requests:
1) GET /3.1/lists/MBOX@DOMAIN
This returns list information.
2) GET /3.1/lists/MBOX@DOMAIN/requests?token_owner=moderator
This returns a JSON structure with properties "start" 0 and
"total_size" 0.
3) GET /3.1/lists/MBOX@DOMAIN/requests/count?token_owner=moderator
This returns a JSON structure with count 0.
4) GET /3.1/lists/MBOX@DOMAIN/held/count
This also returns a JSON structure with count 0.
When one wants to see the "Subscriptions pending user confirmation",
there is also a GET to get the requests of token_owner=subscriber;
returning the same result as the request for token_owner=moderator
above.
Looking at the mailman3 database, there are 2 records in table
`workflowstate' that are in step `unsubscribe_from_restore' who
describe the open unsubscribe requests. I could not identify any other
database records that are obviously relevant to that issue. (Since
this is a fresh test setup, the database is small enough that I can
still look at any record in the database.)
Why does Mailman3 have no info in its JSON responses about the
unsubscription requests that I get informed about daily?
Any hints where I could look further are dearly accepted.
System information: mailman3 3.3.3; Postorius (mailman3-web) 1.3.4;
both on Debian 11 (bullseye).
I know that this is out of date; thus a definitive info "this is fixed
by now" is quite OK for me. (Debian upgrade is planned as the next
action after getting Mailman3 to work for that use case.)
Hope that someone can guide me towards a solution,
Joachim
PS: The list configuration that I actually want is something
completely different: mass unsubscription by the mailing list owner
without moderation; but moderation for individual unsubscription
requests. This is a mailing list where every year all subscribers are
setup anew. Subscribers are email-illiterate users who may know
WhatsApp at best, which brings its own problems. No person
(un)subscribes herself or himself; all is done by the list owner.
Unsubscription would mean cancelling the holiday participation -- the
list owner must then ask if that's really wanted...
--
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Joachim Schrod Email: joachim(a)schrod.org
Roedermark, Germany
``How do we persuade new users that spreading fonts across the page
like peanut butter across hot toast is not necessarily the route to
typographic excellence?'' -- Peter Flynn
4 months, 3 weeks

[MM3-users] Re: Mailman3 without Hyperkitty in docker
by Abhilash Raj
On Wed, Feb 27, 2019, at 12:04 PM, Danil Smirnov wrote:
> Hi,
>
> After upgrading my PostgreSQL from 9.2 to 9.6, I was able to up postorius container.
> But when I try to open UI, I'm getting 500 Internal Server Error all the time - either for /postorius/lists/ as well as for /admin/.
> I've checked all the logs but haven't found anything there which can bring some light at the issue. Just error 500...
>
> I've checked:
> - nginx logs: just error 500
> - mailman-web docker container logs: no errors
> - mailman-web (postorius) logs: mailmanweb.log is empty, uwsgi*.log with some errors
> - mailman-core logs: no errors
>
> I've also called curl localhost:8000 from inside the mailman-web container and got the same 500 Internal Server Error.
>
> Could you guys advise what else should I check?
We would need to figure out if it is Core or Web causing the 500 errors.
So, what errors are you looking at in uwsgi*.log?
Do you see any successful requests in mailman core's mailman.log?
>
> With my best regards,
> Danil
>
>
> пт, 22 февр. 2019 г. в 09:12, Danil Smirnov <danil(a)smirnov.la>:
>> Hi Abhilash,
>>
>> Thank you for the quick resolution, but I'm still unable t start the container:
>> https://github.com/maxking/docker-mailman/issues/309
>>
>> DB migrations are failing.
>>
>> Danil
>>
>> вс, 17 февр. 2019 г. в 12:21, Danil Smirnov <danil(a)smirnov.la>:
>>> Hi Abhilash,
>>>
>>> Thank you for the explanation, I've created a report:
>>> https://github.com/maxking/docker-mailman/issues/307
>>>
>>> Danil
>>>
>>>
>>>
>>> сб, 16 февр. 2019 г. в 18:40, Abhilash Raj <maxking(a)asynchronous.in>:
>>>> On Sat, Feb 16, 2019, at 4:50 AM, Danil Smirnov wrote:
>>>> > Hi,
>>>> >
>>>> > I'm interesting in Mailman3 deployment with archiving feature completely
>>>> > disabled.
>>>> >
>>>> > I've tried to deploy Core + Postorius using this docker-compose
>>>> > template:
>>>> > https://github.com/maxking/docker-mailman/blob/master/docker-compose-postor…
>>>> >
>>>> > Unfortunately Postorius version came with this template is quite outdated:
>>>> > 1.2.0a1 (as reported in page footer). In Hyperkitty-enabled docker image I
>>>> > see version 1.2.3.
>>>> >
>>>> > I've also checked image maxking/postorius:rolling but it seems
>>>> > irrelevant/broken (container exits with error).
>>>> >
>>>> > Are there newer Postorius docker image I can use?
>>>>
>>>> No, but if you could report the failure and error that you, maybe the Maintainer can help
>>>> fix that issue you have?
>>>>
>>>> P.S. I maintain those images. The Postorius image is kind of neglected since there are
>>>> fewer people using it, but I'd be happy to fix any error that you see.
>>>>
>>>> Package ugprades are merely a version number bump in Dockerfile :)
>>>>
>>>> --
>>>> thanks,
>>>> Abhilash Raj (maxking)
--
thanks,
Abhilash Raj (maxking)
6 years, 1 month

[MM3-users] Re: External MTA incoming mail: configuration
by Roland Giesler
On 2024/08/05 19:59, Mark Sapiro wrote:
> I see this reply is now moot as you have now configured list mail to
> go directly to the Mailman server, but ...
>
> On 8/5/24 03:44, Roland Giesler via Mailman-users wrote:
>>
>> In the logs of the MTA I see this however: warning: do not list
>> domain fast.za.net in BOTH virtual_mailbox_domains and relay_domains
>>
>> Mailman creates these entries, but postfix doesn't like it. I don't
>> see any mail delivered to the mailman yet. Is this the problem?
>
> Probably not. It is telling you that mail to the fast.za.net domain
> cannot both be delivered to local mailboxes (virtual_mailbox_domains)
> and relayed to foreign hosts (relay_domains)
>
Thanks, yes, I have since assumed that to be the case.
>
>> In the MTA postfix main.cf:
>>
>> relay_domains = hash:/etc/mailman3/data/postfix_domains
> >
>> cat /etc/mailman3/data/postfix_domains
>> ...
>>
>> and also
>>
>> local_recipient_maps=$virtual_mailbox_maps,
>> hash:/etc/mailman3/data/postfix_lmtp
>>
>> cat /etc/mailman3/data/postfix_lmtp
>> ...
>
> How about
>
> transport_maps = hash:/etc/mailman3/data/postfix_lmtp
I can't remove the $virtual_mailbox_maps entry, since Power-mailinbox
(PMiaB) uses that. It may make Mailman3 work, but break PMiaB).
>
>
>>
>> Then there's:
>> virtual_mailbox_domains=sqlite:/etc/postfix/virtual-mailbox-domains.cf
>>
>> cat /etc/postfix/virtual-mailbox-domains.cf
>> dbpath=/home/user-data/mail/users.sqlite
>> query = SELECT 1 FROM users WHERE email LIKE '%%@%s' UNION SELECT 1
>> FROM aliases WHERE source LIKE '%%@%s' UNION SELECT 1 FROM
>> auto_aliases WHERE source LIKE '%%@%s'
>>
>> When I run that query in sqlite3, it returns no records, so I'm not
>> sure how this is supposed to work. %s to me means that first
>> argument, so is this used in python and then %s is the argument sent
>> to this query?
>
>
> See https://www.postfix.org/sqlite_table.5.html
>
> `%%` is replaced with `%` which is a SQL wildcard matching anything
> and `%s` is replaced by the key postfix is looking for, i.e. the
> domain that it is asking about.
>
> So, that query becomes
>
> SELECT 1 FROM users WHERE email LIKE '%(a)fast.za.net' UNION SELECT 1
> FROM aliases WHERE source LIKE '%(a)fast.za.net' UNION SELECT 1 FROM
> auto_aliases WHERE source LIKE '%(a)fast.za.net'
>
> I.e, it returns true if any user or alias or auto_alias has an address
> ending in '@fast.za.net' and if that's true the mail to any
> '@fast.za.net' address including list mail will be stored locally.
Ah, thank you! I created a ticket at MiaB about this, so I'll post your
response there. The %s had be stumped at first, but now it's clear.
>
> If you really have local users on box2.gtahardware.co.za with
> addresses '@fast.za.net' and you want to relay list mail to lists
> '@fast.za.net', you need to see
> https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/docs/mta.h….
Thank you for that! From that it seems it may still be possible to use
PMiaB as my MTA after, but I'll work through that reference and test it
and report back.
8 months, 2 weeks

[MM3-users] Re: Bulk changes to delivery mode and moderation action
by David Newman
On 1/7/22 4:32 PM, Mark Sapiro wrote:
> On 1/7/22 3:41 PM, David Newman wrote:
>>
>> There are 24 messages in the shunt queue, the most recent of which is
>> a digest from 0000 hours today. The test messages I sent later today
>> are not there.
>>
>> There are also 13 messages in the out queue. I can't read these as the
>> filenames appear to change on every invocation of ls.
>
>
> I suspect an issue trying to connect to the MTA to send the messages.
> This can be caused by permission errors. Check permissions on Mailman's
> var/templates/*
Bingo. This list had regular and digest footer templates with 0644
permissions owned by root:root, and there was an exception and traceback
for the most recent message in shunt about the permissions issue.
I've changed ownership to mailman:mailman and restarted the mailman3
service.
As soon as I fixed this, my inbox filled with test messages...
>
>>> Are there errors and tracebacks in var/logs/mailman.log?
>
>
> Every message in the shunt queue should have an exception and traceback
> logged in mailman.log.
>
>
>> But the Postfix log doesn't show it being distributed to me or anyone
>> else.
>
>
> Is there a 'Cannot connect to SMTP server ... on port ...' anywhere in
> mailman.log?
Yes, lots. This might or might not be a different issue.
As I mentioned earlier, the most recent message in shunt was from 0000
hours today. There are many "Cannot connect" messages since then, but
none since fixing the issue above.
>
>
>> Oddly, neither of the two list owner emails (me and someone else) show
>> this message in the archive via the admin panel. However if I log in
>> as the list owner directly to the archives:
> >
>> https://lists.domain.tld/archives/
>>
>> I can see today's test posts if logged in as the list member, but do
>> not see the posts if logged directly into the archive as the Django
>> superuser.
>
>
> That seems strange, I don't know why the superuser would not be able to
> see things in the archive that a list owner or member can.
Seems OK now. The superuser sees all posts after the unshunt action.
Thanks very much for your help with this.
dn
>
>
>> The nondelivery of list mail is more serious than the archive problem,
>> though.
>
>
> Archiving is separate from delivery. messages can be archived and still
> fail delivery in the out runner which is what's happening here. The
> question is why?
>
> I suspect you have one or more 'Cannot connect to SMTP server ... on
> port ...' messages in mailman.log? and I suspect this is a misleading
> issue in this case caused by an inability to read some file in Mailman's
> var/templates/lists/<list_id>/en directory.
>
> I also suspect the shunted messages are from some prior condition which
> has possibly been fixed, but I can't be sure without exceptions and
> tracebacks from mailman.log (should be timestamped the same as the mod
> time if the shunted file). You can view them with `mailman qfile` and
> unshunt (reprocess) them with `mailman unshunt`.
>
3 years, 3 months

[MM3-users] Re: Mailman 3, postfix domains, and postgresql cannot authenticate user
by Odhiambo Washington
The nomenclature aside, if you follow the above link, you should have a
running MM3 without much ado, seeing as even your version of PostgreSQL is
less than 15, where a little nudging is required :)
On Thu, Jul 4, 2024 at 12:38 AM Keith Christian via Mailman-users <
mailman-users(a)mailman3.org> wrote:
> Odhiambo, Yes, trying to.
>
> Mark, I'll review your suggestions.
>
> Thanks.
>
> On Wed, Jul 3, 2024, 12:52 Mark Sapiro <mark(a)msapiro.net> wrote:
>
> > On 7/3/24 09:22, Keith Christian via Mailman-users wrote:
> > >
> >
> ---------------------------------------------------------------------------
> > > 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?
> >
> >
> > 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.
> >
> >
> > >
> >
> ---------------------------------------------------------------------------
> > > 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
> >
> >
> > I don't think you should have two /mailman3 at the end
> >
> > the form is `postgresql://user:password@host:port/database_name` The
> > default port is 5432.
> >
> > --
> > Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
> > San Francisco Bay Area, California better use your sense - B. Dylan
> >
> > _______________________________________________
> > Mailman-users mailing list -- mailman-users(a)mailman3.org
> > To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> > https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> > Archived at:
> >
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
> >
> > This message sent to keith1christian(a)gmail.com
> >
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> Archived at:
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
>
> This message sent to odhiambo(a)gmail.com
>
--
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]
9 months, 2 weeks

[MM3-users] Re: High memory usage
by Stephen Daniel
TL;DR: quite likely your system has plenty of memory and is operating
normally.
I'm not a Mailman expert, and don't know how much memory it needs to work.
However, monitoring memory usage on Linux can be subtle. Linux views
memory as a resource to be used. Any time data is read from or written to
a file the data is kept in memory, just in case it is needed in the
future. This feature fills up the memory with recently used "stuff". If
the memory is close to full, then data residing in memory that has not been
referenced in a while is discarded to make room for newer stuff. Linux
does *not* free up memory until there is some demand for it.
For this reason, Linux servers tend to operate with > 90% of memory "used".
In this context, "used" simply means some possibly useful data is in that
memory. However, just because Linux is keeping a lot of possible old stuff
in memory does not mean the system really needs all of that data in memory.
The purpose of memory is to make the system faster by avoiding reading data
from files, using a copy in memory instead. If your system is performing
well, you don't need to add memory. If the system is performing poorly,
and the bottleneck is CPU cycles, adding memory probably won't help much.
If, however, your system is not performing well and the bottleneck appears
to be storage, adding memory might improve performance, by allowing the
system to avoid paging to the swap disk and perhaps to avoid reading data
from files.
I use "vmstat" to begin looking at this. Consider:
# vmstat 1 3
procs -----------memory---------- ---swap-- -----io---- -system--
------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id
wa st
1 0 0 311260 133136 315388 0 0 143 39 136 242 4 2 94
1 0
0 0 0 309716 133136 315388 0 0 0 0 199 377 2 1 97
0 0
0 0 0 310512 133136 315388 0 0 0 0 200 365 3 1 97
0 0
This is an idle system, so not much going on. Ignore the first line of
data, it is historical.
The "si" and "so" columns indicate whether data is being paged out to the
swap disk. If this is going on, adding more memory will very likely help
performance. The "wa" column is the % of time the system has work to do
but is blocked waiting on something (storage) before it can make progress.
If your system has a high "wa" percentage, adding memory might improve
performance. OTOH if "us" + "sy" is approaching 100% you are running out
of CPU cycles. Memory is unlikely to help.
You can find a very nice discussion complete with examples of all this
here: https://access.redhat.com/solutions/1160343
-- Stephen
On Tue, Feb 15, 2022 at 5:28 AM Prasanth Nair <prasanth.nair(a)linaro.org>
wrote:
> Hi,
>
> We are having an issue with high memory usage on our Mailman3 server.
> Initially, our server had 16GB RAM and the memory usage went up from 5% to
> 92% within a week. So, we increased the memory capacity to 32GB RAM and we
> can see that the memory usage is going up in the same pattern.
>
> Any idea why it is happening? or any suggestions?
>
> Kind regards,
> Prasanth Nair
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>
3 years, 2 months

[MM3-users] Re: MM3 Docker
by Abhilash Raj
On Tue, Jan 8, 2019, at 5:52 AM, Odhiambo Washington wrote:
> On Tue, 8 Jan 2019 at 03:29, Mark Sapiro <mark(a)msapiro.net> wrote:
>
> > On 1/7/19 1:18 AM, Odhiambo Washington wrote:
> > > On Sun, 6 Jan 2019 at 23:39, Mark Sapiro <mark(a)msapiro.net> wrote:
> > >>
> > >> Please help me understand what steps are missing and I will try to
> > >> provide the information.
> > >
> > >
> > > Okay.
> > >
> > > At the installation stage, you say the following:
> > > "I already had some things set up in /opt/mailman including a git
> > > subdirectory containing clones of the GitLab mailman, mailmanclient,
> > > mailman-hyperkitty, hyperkitty, django-mailman3 and
> > > postorius projects. On the third server I have added mailman-suite
> > > because I use the settings.py from that project as the basis for mine."
> > >
> > > Please assume that the reader is a newbie to python3 virtualenv and give
> > the
> > > details of the commands they need to execute to (a) clone all the
> > projects
> > > needed
> > > and (b) create the virtualenv.
> > >
> > > The next steps are:
> > > mkdir /opt/mailman/mm
> > >
> > > Then you say "I then created a /opt/mailman/mm directory and within that
> > a
> > > Python 3.6 virtualenv"
> > > What happens here is something that needs clarification, because you are
> > > specific about "python3.6".
> > > I have googled and realized that one has to be specific about the python
> > > version they want to use in their virtualenv
> > > as shown here ->
> > >
> > https://stackoverflow.com/questions/45293436/how-to-specify-python-version-…
> > >
> > > exact command to execute to create the /opt/mailman/mm/venv
> > > exact command to execute to activate virtualenv
> >
> >
> > I have added a comment to the page which I hope gives you what you want.
> >
> > I also added a section on templates instead of referring to a prior
> > version of the page.
> >
>
> That makes it better.
> However, as a newbie, something is not yet clear:
>
> "When active in a particular shell, it can be deactivated with the command
>
> deactivate
> or by exiting that shell."
>
> HI am trying to understand the effect of detaching from a venv. I am
> assuming that a virtualenv is a container that is supposed to be always
> active for the services within to be accessible. Is that right? So, how do
> I ensure it's always running/up, or that does not matter as the scripts
> which run the services will always refer to the files?
virtualenv is not actually a container that is supposed to be active. It
is merely a set of settings that are applied to your SHELL when you are
in the virtual environment.
It is not supposed to be always active, only when you actually want to
run commands in that virtual environment. The services will keep on
running after you deactivate your shell and would function like other
normal services on your machine.
--
thanks,
Abhilash Raj (maxking)
6 years, 3 months

[MM3-users] Out runner not sending emails, stuck on recvFrom.
by 01ste02@gmail.com
My mta is logging a connection, which times out every three minutes. The strace for the out runner shows the following:
fstat(20, {st_mode=S_IFREG|0660, st_size=3063808, ...}) = 0
stat("/var/lib/mailman3/data/mailman.db", {st_mode=S_IFREG|0660, st_size=3063808, ...}) = 0
pread64(20, "SQLite format 3\0\20\0\1\1\0@ \0\0\1\32\0\0\2\354"..., 100, 0) = 100
fcntl(20, F_SETLK, {l_type=F_RDLCK, l_whence=SEEK_SET, l_start=1073741824, l_len=1}) = 0
fcntl(20, F_SETLK, {l_type=F_RDLCK, l_whence=SEEK_SET, l_start=1073741826, l_len=510}) = 0
fcntl(20, F_SETLK, {l_type=F_UNLCK, l_whence=SEEK_SET, l_start=1073741824, l_len=1}) = 0
stat("/var/lib/mailman3/data/mailman.db-journal", 0x7fff3e9a8120) = -1 ENOENT (No such file or directory)
stat("/var/lib/mailman3/data/mailman.db-wal", 0x7fff3e9a8120) = -1 ENOENT (No such file or directory)
fstat(20, {st_mode=S_IFREG|0660, st_size=3063808, ...}) = 0
pread64(20, "SQLite format 3\0\20\0\1\1\0@ \0\0\1\32\0\0\2\354"..., 4096, 0) = 4096
pread64(20, "\r\0\0\0\26\2\7\0\17\212\17E\16\372\16\230\16Y\f\220\n\240\n-\t\273\tI\10\300\10o"..., 4096, 106496) = 4096
pread64(20, "\0\0\0\0changes BOOLEAN, \n\tadministr"..., 4096, 32768) = 4096
pread64(20, "\r\v\234\0\23\0\333\0\r0\n\253\n5\t\240\10\201\7\370\6\324\6e\5\340\5\4\4\206\4\24"..., 4096, 114688) = 4096
pread64(20, "\r\0\330\0\24\0\231\0\v\266\vE\n\351\t\352\t\261\10f\7\305\0073\5,\4\305\4n\3\370"..., 4096, 208896) = 4096
fcntl(20, F_SETLK, {l_type=F_UNLCK, l_whence=SEEK_SET, l_start=0, l_len=0}) = 0
fcntl(20, F_SETLK, {l_type=F_RDLCK, l_whence=SEEK_SET, l_start=1073741824, l_len=1}) = 0
fcntl(20, F_SETLK, {l_type=F_RDLCK, l_whence=SEEK_SET, l_start=1073741826, l_len=510}) = 0
fcntl(20, F_SETLK, {l_type=F_UNLCK, l_whence=SEEK_SET, l_start=1073741824, l_len=1}) = 0
stat("/var/lib/mailman3/data/mailman.db-journal", 0x7fff3e9a92f0) = -1 ENOENT (No such file or directory)
pread64(20, "\0\0\1\32\0\0\2\354\0\0\0\0\0\0\0\0", 16, 24) = 16
stat("/var/lib/mailman3/data/mailman.db-wal", 0x7fff3e9a92f0) = -1 ENOENT (No such file or directory)
fstat(20, {st_mode=S_IFREG|0660, st_size=3063808, ...}) = 0
pread64(20, "\n\0\0\0\20\16\270\0\17\325\17N\17\304\179\17\262\17%\17\237\17\357\17\207\17\17\17w\16\371"..., 4096, 36864) = 4096
pread64(20, "\5\0\0\0\3\17\361\0\0\0\2\301\17\373\17\366\17\361\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096, 28672) = 4096
pread64(20, "\r\0\0\0\4\0020\0\0020\f\274\10a\5H\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096, 270336) = 4096
fcntl(20, F_SETLK, {l_type=F_UNLCK, l_whence=SEEK_SET, l_start=0, l_len=0}) = 0
fcntl(20, F_SETLK, {l_type=F_RDLCK, l_whence=SEEK_SET, l_start=1073741824, l_len=1}) = 0
fcntl(20, F_SETLK, {l_type=F_RDLCK, l_whence=SEEK_SET, l_start=1073741826, l_len=510}) = 0
fcntl(20, F_SETLK, {l_type=F_UNLCK, l_whence=SEEK_SET, l_start=1073741824, l_len=1}) = 0
stat("/var/lib/mailman3/data/mailman.db-journal", 0x7fff3e9a9390) = -1 ENOENT (No such file or directory)
pread64(20, "\0\0\1\32\0\0\2\354\0\0\0\0\0\0\0\0", 16, 24) = 16
stat("/var/lib/mailman3/data/mailman.db-wal", 0x7fff3e9a9390) = -1 ENOENT (No such file or directory)
fstat(20, {st_mode=S_IFREG|0660, st_size=3063808, ...}) = 0
pread64(20, "\2\r \0\31\fL\24\0\0\2\25\f\306\rO\17?\r\354\16-\ro\r\302\r\6\16d\r\211"..., 4096, 192512) = 4096
pread64(20, "\n\2\241\0\177\1k\1\17<\16\236\1\360\2\206\16\203\16h\16J\16.\1k\16\17\r\360\r\327"..., 4096, 1032192) = 4096
fcntl(20, F_SETLK, {l_type=F_UNLCK, l_whence=SEEK_SET, l_start=0, l_len=0}) = 0
clock_gettime(CLOCK_REALTIME, {tv_sec=1634752684, tv_nsec=599142985}) = 0
clock_gettime(CLOCK_REALTIME, {tv_sec=1634752684, tv_nsec=599473757}) = 0
getpid() = 1262375
write(17, "Oct 20 19:58:04 2021 (1262375) U"..., 101) = 101
clock_gettime(CLOCK_REALTIME, {tv_sec=1634752684, tv_nsec=600257524}) = 0
clock_gettime(CLOCK_REALTIME, {tv_sec=1634752684, tv_nsec=601667144}) = 0
getpid() = 1262375
write(17, "Oct 20 19:58:04 2021 (1262375) C"..., 59) = 59
socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, IPPROTO_TCP) = 21
connect(21, {sa_family=AF_INET, sin_port=htons(465), sin_addr=inet_addr("127.0.0.1")}, 16) = 0
recvfrom(21,
And the mailman smtp-log shows:
Oct 20 19:58:04 2021 (1262375) <163474270655.1243104.7078333516263200191@xxx> delivery to xxx@xxx failed with code 444, Connection unexpectedly closed
Oct 20 19:58:04 2021 (1262375) Using agent: <mailman.mta.bulk.BulkDelivery object at 0x7f219bf93310>
Oct 20 19:58:04 2021 (1262375) Connecting to 127.0.0.1:465
when it times out.
The debug log also shows this:
Oct 20 18:42:46 2021 (1262296) [OutgoingRunner] doing periodic
Oct 20 18:42:46 2021 (1262296) [OutgoingRunner] committing transaction
Oct 20 18:42:46 2021 (1262296) [OutgoingRunner] checking short circuit
Oct 20 18:42:46 2021 (1262296) [OutgoingRunner] short circuiting
Oct 20 18:42:46 2021 (1262296) [OutgoingRunner] ending oneloop: 29
I have no clue as to what is going on. Has anyone experienced this before?
3 years, 6 months

[MM3-users] Re: Speed up importing mailman2 lists
by Jeremy Stanley
On 2025-02-20 07:15:57 +0000 (+0000), Stephen J. Turnbull wrote:
[...]
> I've done two massive migrations in the last year. In the first (~20k
> lists), the lists were down for maybe two hours, but it took 22 hours
> for HyperKitty to populate, mostly in Xapian indexing we realized in
> post-mortem analysis. In the second (~1k lists), no perceptible
> downtime because they have their own bespoke archiver that has a
> list-manager-agnostic API.
Our sites didn't have nearly that many mailing lists, but we were
migrating from multiple side-by-side MM2 installs for domains hosted
on one server to a multi-domain MM3 deployment on another. In our
case we did piecemeal outages one domain at a time rather than
having one mass migration for everything all at once, and that kept
the impact to each individual domain/site minimal.
> The trick to zero delivery downtime is that you can configure your MTA
> to route to Mailman 3 if the list exists there, if not route to
> Mailman 2 if the list exists there, and if not continue to any lower
> priority routes. It worked as designed (mops sweat off brow ;-). We
> did take Postorius and the Mailman 2 management CGIs and email command
> addresses offline for the duration (3 hours in the first case, 30
> mminutes in the second). This is sraightforward if Mailman 2 and
> Mailman 3 are running on the same host. Life is more complex if
> you're spinning up Mailman 3 in a separate node but it should be
> possible.
Yes, our downtime included finalizing a warmed rsync over the
Internet and waiting for DNS changes to propagate (we tried to time
things so that the import occurred in parallel with DNS settling
out, even with lowered TTLs it helped some for larger sites). We
didn't have a lot of incentive to avoid downtime entirely in that
situation, and instead just warned the various communities in
advance when we'd scheduled their particular migration for and what
they should expect. We relied primarily on delivery deferrals
between taking a domain offline on one server and bringing up the
imported copy on the other, and just accepted that the associated
Web content would be offline during the maintenance window but that
posts anyone sent at that time would still make it to the lists once
they were back.
> I think if you're migrating to HyperKitty you can speed up the
> migration by shutting off indexing, and doing that later at the cost
> of confusing people who expect the lists to be indexed. I'm not sure
> if it's possible to migrate the archives concurrently with accepting
> new posts, or maybe to migrate archives in advance and backfill any
> posts that arrive during the list migration. And there's no reason
> why you can't leave the legacy Mailman 2 archives up for browsing
> as a backup for as long as needed.
In our case, "as long as needed" is approximately forever, but we
did install some redirects in Apache for things like list info pages
and archive roots. We drew the line at trying to develop an
automated mapping to redirect individual posts in the archives
though, which is the main reason we keep the pre-migration pipermail
content around, since we'd rather not break random links elsewhere
on the Web, e.g. in news articles that link to list discussions.
--
Jeremy Stanley
2 months

[MM3-users] Re: Moderation action "None" is misleading
by Stephen J. Turnbull
Adding mailman-users(a)mailman3.org.
Technical suggestions should go to distro channels or to Mailman's
issue tracker: https://gitlab.com/mailman/mailman/-/issues/1176.
Further discussion of technical details is best done there.
Thomas Krichel writes:
> Stephen J. Turnbull writes
> > Debian has traditionally been quite slow to update Mailman,
>
> And now it has the addition issue that Debian testing python
> standard it 3.13, so the nntplib is no longer supported.
> Thus the current Mailman debian testing appears broken.
That's Debian's problem, as we currently don't support Python 3.13,
although of course we intend to. This is the only issue that came up
in a quick search of Mailman's issue tracker for Python 3.13 (but I
did not check the other subprojects such as Postorius). I conclude
that not a lot of work has been done on supporting Python 3.13 (rather
than the optimistic "there's nothing to be done"). From Mailman's
point of view, users have two excellent options for the forseeable
future: (1) don't gateway list <-> newsgroups (2) install Mailman into
a Python 3.9--3.12 virtual environment.
I'm sympathetic to the needs of the Debian developers, and at this
point for 99% of software it's perfectly reasonable to aim to use 3.13
in the next Debian release. Unfortunately for Mailman users on Debian
hosts that's not high on our list of priorities since we recommend a
virtual environment installation in any case.
At present there seem to be three ways forward for Debian packaging:
1. Remove NNTP support. (In honor of larsi, I'd rather not.)
2. Add nntplib.py from the Python 3.12 nntplib, as a stopgap until
option 3 can be implemented. I can't speak for other developers
but we might be willing to add it as a contrib module, especially
if that might make life easier for distro packagers. It's
suboptimal though since that absolutely has to be considered
techical debt that will need to be paid someday.
3. Port Mailman to pynntp (that may need to be Debian packaged, too),
which has seen a revival of activity and two feature releases
since 2023.
My inclination as a Mailman core developer is not to participate
actively in development of NNTP support in Mailman for Python 3.13+
unless we see an outpouring of support from site admins. However, I
would be happy to answer questions and work on Mailman-side issues
that are blocking or inconvenient for the NNTP work. Mark and
Abhilash would undoubtedly contribute as well, on a time-available
basis.
> I certainly would love to build an alternative Mailman Debian
> package that would be more up-to-date, but I don't want
> to do it on my own.
Debian and Python are compatible free software; just take the existing
package metadata, in a recent Mailman (presumably the most recent
release) drop in the most recent nntplib, and change all the import
statements. mailman/src/mailman/mta/nntplib.py seems like a plausible
location. IWBNI you could keep all Mailmanisms out of nntplib
(because of the GPL) so any bugfixes or improvements could be
available to the Python community.
I think you could probably be up and running VERY quickly with that
approach. Of course it wouldn't just slot into the next iteration of
Debian because they have stringent QA (or maybe that could go into
unstable?). I'm pretty sure it would be useful right away to a whole
lot of people who are willing to use a PPA.
Regards,
Steve
2 months, 2 weeks

[MM3-users] Re: Template's encoding setup
by Ugnius S
Mark, You were 100% right for fixing. I was not sure what the
language setting were on list creating, but one of the lists was created a
day ago and I was doubt about it a little. So I made test: I have checked
that default language is lt, and then I created the new list for testing.
I had language issues with the HTML as well. Your recipe helped to resolve
the issue. :) I fixed all my lists.
I have stopped the mailman (just in case), than executed as You had told:
$ mailman shell -l test(a)example.com
Welcome to the GNU Mailman shell
The variable 'm' is the test(a)example.com mailing list
>>> m.preferred_language
<Language [en] English (USA)>
>>> m.preferred_language = 'lt'
>>>
<Ctrl>+D
Thank You very much. This fix made magic.
Kind regards
Ugnius
2019-09-14, št, 20:20 Mark Sapiro <mark(a)msapiro.net> rašė:
> On 9/14/19 4:06 AM, Ugnius S wrote:
>
> > Yes, I have made several tests. I have set charset: iso-8859-13
> > and default_language: lt in mailman.cfg.
>
> If you created the list before you set default_language: lt in
> mailman.cfg, the list's preferred_language is possibly 'en;' with
> character set us-ascii.
>
>
> > (Also I have set LANGUAGE_CODE = 'lt' in the settings_local.py, but I
> think
> > it is not related to this case.)
>
>
> Yes, LANGUAGE_CODE in settings_local.py is not relevant to this.
>
>
> > I have tried to set utf-8 as well in mailman.cfg as well. And I can
> > confirm - in all tested cases
> > text characters are correct (in footer as well) if sender sends text
> only.
>
> OK
>
>
> > If sender sends message in HTML (mostly all users send) then no
> > matter what the encoding is set in my mailman's
> > configuration or iso-8859-13, or utf-8 message body looks correct, but
> in
> > footer all national characters are replaced with
> > question marks " ? ".
>
>
> The addition of the footer is done by mailman/handlers/decorate.py. In
> the plain text case the message body is converted to unicode, the
> unicode footer is appended to the body and the new body is encoded for
> transmission. The encoding is the first of the list's character set, the
> incoming message's character set or utf-8 which produces no error.
>
>
> In the case where the incoming message is not a single plain text
> message part, the footer is added as a separate MIME part with the
> unicode footer encoded in the list's character set with
> errors='replace'. This is what produces the '?' characters. I suspect
> this happens because the list's preferred_language is 'en' with
> character set us-ascii.
>
> try running Mailman's
>
> bin/mailman shell -l your_list@domain
>
> at the prompt enter
>
> m.preferred_language
>
> if the response is not
>
> <Language [lt] Lithuanian>
>
> do
>
> m.preferred_language = 'lt'
>
> and then control-D to exit.
>
> --
> Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
> San Francisco Bay Area, California better use your sense - B. Dylan
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>
5 years, 7 months

[MM3-users] Re: About to Install MM3 -- Seeking clarification
by Onyeibo Oku
Hi Mark, thanks for your inputs. I am making progress.
On January 2, 2023 9:15:59 PM GMT+01:00, Mark Sapiro <mark(a)msapiro.net> wrote:
>On 1/2/23 11:56, Onyeibo wrote:
>> On Mon, 2 Jan 2023 09:57:45 -0800
>> Mark Sapiro <mark(a)msapiro.net> wrote:
>>>
>>> curl -urestadmin:restpass http://localhost:8001/3.1/lists
>>>
>>> It should return JSON with information about your lists.
>>>
>>
>> I get the following:
>> {"start": 0, "total_size": 0, "http_etag":
>> "\"678678567346533573674563786538\""}
>
>That is the expected response if you have no lists yet. So connection to
>Mailman's REST API works via curl, so why doesn't it work via
>mailmanclient? If Mailman core was running, it should work. I don't know
>why it doesn't. Perhaps you have some kind of firewall that's blocking it.
>
It turns out to be a fault from my settings. Postfix was not happy
with the default email for the admin (<root@localhost>) since I had
an operational virtual map for users. That connection error
disappeared when I added a functioning admin email address.
There are other issues, however.
(1) Mailman refuses to resolve to a preferred subdomain. If the
server's domain is "website.tld", I'd like mailman's homepage to be
at "list.website.tld". Mailman insists that I add "website.tld" to
the ALLOWED HOSTS, whereas "lists.website.tld" is already there as an
ALLOWED HOST (same VPS/IP address nonetheless). The result is that
the homepage ends up at "https://website.tld/mailman3/lists" when the
desired url is "https://lists.website.tld/mailman3/lists". This is a
conflict because the main domain is intended for another service. How
do I approach this?
(2) See the traceback below:
ERROR 2023-01-03 07:40:32,078 27926 django.request Internal Server
Error: /mailman3/lists/ Traceback (most recent call last):
File
"/opt/mailman/venv/lib64/python3.10/site-packages/django/core/handlers/exception.py",
line 55, in inner response = get_response(request) File
"/opt/mailman/venv/lib64/python3.10/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.10/site-packages/postorius/views/list.py",
line 980, in list_index return render(request, template, File
"/opt/mailman/venv/lib64/python3.10/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.10/site-packages/django/template/loader.py",
line 62, in render_to_string return template.render(context, request)
File
"/opt/mailman/venv/lib64/python3.10/site-packages/django/template/backends/django.py",
line 62, in render return self.template.render(context) File
"/opt/mailman/venv/lib64/python3.10/site-packages/django/template/base.py",
line 173, in render with context.bind_template(self): File
"/usr/lib64/python3.10/contextlib.py", line 135, in enter return
next(self.gen) File
"/opt/mailman/venv/lib64/python3.10/site-packages/django/template/context.py",
line 254, in bind_template updates.update(processor(self.request)) File
"/opt/mailman/venv/lib64/python3.10/site-packages/django_mailman3/context_processors.py",
line 32, in common context["site_name"] =
get_current_site(request).name File
"/opt/mailman/venv/lib64/python3.10/site-packages/django/contrib/sites/shortcuts.py",
line 16, in get_current_site return Site.objects.get_current(request)
File
"/opt/mailman/venv/lib64/python3.10/site-packages/django/contrib/sites/models.py",
line 59, in get_current return self._get_site_by_id(site_id) File
"/opt/mailman/venv/lib64/python3.10/site-packages/django/contrib/sites/models.py",
line 30, in _get_site_by_id site = self.get(pk=site_id) File
"/opt/mailman/venv/lib64/python3.10/site-packages/django/db/models/manager.py",
line 85, in manager_method return getattr(self.get_queryset(),
name)(*args, **kwargs) File
"/opt/mailman/venv/lib64/python3.10/site-packages/django/db/models/query.py",
line 650, in get raise self.model.DoesNotExist(
django.contrib.sites.models.Site.DoesNotExist: Site matching query does
not exist.
It seems a migration is missing. How should I approach this?
2 years, 3 months

[MM3-users] Re: Is there a way of recording bounce messages?
by Thomas Ward
Mark,
As a person fluent in MS365 they are a catchall. The MS server tends to always accept the message. It then triggers a bounce after the fact because of the multilayered transit patterns MS365 uses for handing off messages.
I know this because of custom mailing alert system integrations with MS365 not triggering SMTP transfer time alerts but receiving the bounces after MS365 has received the message and hands off to its edge transports to remote clients, then later sends a DSN. (I have spent three weeks digging on this for a FT Job task so I am unfortunately damned fluent in how MS365 processes SMTP to recipients that will decline or bounce...)
MS365's bounce handling is weird and they do not include a delivery report in the payload, instead they take the log data and append it as a text payload portion to the message. It's annoying and problematic when debugging (and likely triggers the mailman2 equivalent of "unprocessable bounce message").
If Andrew can provide the bounce message as an example in raw form (even off list) we can dissect it - myself probably more rapidly as I am fluent in reading them at this point from weeks worth of dealing with them - and that will probably yield the info you are looking for.
Thomas
Sent from my Galaxy
-------- Original message --------
From: Mark Sapiro <mark(a)msapiro.net>
Date: 9/21/23 19:36 (GMT-05:00)
To: mailman-users(a)mailman3.org
Subject: [MM3-users] Re: Is there a way of recording bounce messages?
On 9/21/23 15:01, Andrew Hodgson wrote:
> Mark Sapiro <mark(a)msapiro.net> wrote:
>
>> Can you provide one of the bounce report messages and the corresponding bounce message from the MTA log.
>
> I only have the message I would get as the owner of the list that the delivery has been disabled,
That's the one I'm interested in. If possible I'd like to see the actual
raw message, not some MUAs rendering of it.
> I don't have the original bounce message. One thing to note is the bounce messages coming in from Gmail are being generated by Office 365 (as that is the outbound smarthost for the Mailman server), so it may be due to the format of those NDRs why we aren't seeing the original bounce messages attached to the email.
So as I understand it, Office 365 is sending the mail to the gmail
recipient which is presumably rejecting the mail at SMTP with a 5xx status.
Does Office 365 report the failure to Mailman with a failure status at
SMTP time or later with an emailed DSN.
If the former, there should be log messages in Mailman's smtp.log
indicating the number of failures '$msgid post to $listname from
$sender, $size bytes, $refused failures' and the reason for each '$msgid
delivery to $recip failed with code $smtpcode, $smtpmsg'.
Also, we create a fake DSN. See
https://gitlab.com/mailman/mailman/-/blame/master/src/mailman/runners/outgo…
If the latter we have the DSN from Office 365. In either case, the DSN
should be attached to the notice. I don't know why it wouldn't be.
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
_______________________________________________
Mailman-users mailing list -- mailman-users(a)mailman3.org
To unsubscribe send an email to mailman-users-leave(a)mailman3.org
https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
Archived at: https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
This message sent to teward(a)thomas-ward.net
1 year, 7 months

[MM3-users] Re: Templates
by David Krantz
Hi again,
I had the problem with getting two footers, i.e. two expansions of the
template. After some digging in the source code I found out that the
decorator made one expansion (without personalization) and that the
delivery handling made another (with personalization). So I hacked
pipelines/builtin.py with a new pipeline that excluded the decorate
step, recompiled and changed to that pipeline for my personalized
list. That worked. Nothing like a bit of shotgun debugging in
production.
That solves my immediate problem. Is there a known and recommended way
of configuring personalized delivery so that you only get the
personalized footer? I have ideas, but I probably should share them
with the developer list instead. :-)
Of course this very nice functionality is a bit buried. I activated it
using the interactive python shell, seems less risky than changing the
database directly.
Cheers
// David
On Sat, Sep 23, 2017 at 10:39 PM, David Krantz <gazorg(a)gmail.com> wrote:
> On Sat, Sep 23, 2017 at 6:48 PM, Mark Sapiro <mark(a)msapiro.net> wrote:
>>
>> Have you tried restarting/reloading whatever dbm (MySQL, PostgreSQL, ?)
>> you are using?
>
> No, that would have been strange to me; the table in the database was
> up to date. But now I tried that, I got no effect this time but I
> probably could set up a better test.
>
> I also had another problem [solved]: I get the error message "Multiple
> rows were found for one_or_none" when I try TemplateManager.get(name,
> context) for the list. There is only one matching row in the templates
> table so something is fishy with the ORM. This occured when I changed
> to the previous uri value. As the database does not have any
> duplicates in the templates table I suspect either a broken join or
> that the cache retains the old value.
>
> The traceback looks like this in the mailman shell:
>>>> tm.get('list:member:regular:footer', 'test.example.com')
> Traceback (most recent call last):
> File "<console>", line 1, in <module>
> File ".../venv-3.5/lib/python3.5/site-packages/mailman-3.2.0a1-py3.5.egg/mailman/database/transaction.py",
> line 85, in wrapper
> return function(args[0], config.db.store, *args[1:], **kws)
> File ".../venv-3.5/lib/python3.5/site-packages/mailman-3.2.0a1-py3.5.egg/mailman/model/template.py",
> line 98, in get
> contents = cache_mgr.get(actual_uri)
> File ".../venv-3.5/lib/python3.5/site-packages/mailman-3.2.0a1-py3.5.egg/mailman/database/transaction.py",
> line 85, in wrapper
> return function(args[0], config.db.store, *args[1:], **kws)
> File ".../venv-3.5/lib/python3.5/site-packages/mailman-3.2.0a1-py3.5.egg/mailman/model/cache.py",
> line 125, in get
> CacheEntry.key == key).one_or_none()
> File ".../venv-3.5/lib/python3.5/site-packages/SQLAlchemy-1.2.0b2-py3.5-linux-x86_64.egg/sqlalchemy/orm/query.py",
> line 2814, in one_or_none
> "Multiple rows were found for one_or_none()")
> sqlalchemy.orm.exc.MultipleResultsFound: Multiple rows were found for
> one_or_none()
>
> Workaround: Delete cached files in .../var/cache and run delete from
> file_cache in postgresql. Then that works again. The culprit was that
> the file got cached twice so there is a bug in the cache function. I
> used the ITemplateManager-util in the shell to cause the problem.
>
>>> 2. the $user_delivered_to and $user_email do not expand for some
>>> reason. Known problem?
>>
>>
>> These require that the list delivery be personalized. See
>> <http://mailman.readthedocs.io/en/latest/src/mailman/runners/docs/outgoing.h…>.
>>
>
> That explains things. Thank you!
>
> Now I got two footers, first one without personalisation and one
> personalised. Interesting.
>
> best regards
> // David
7 years, 6 months

[MM3-users] Re: transport map (postfix_lmtp) does not update - new lists not working
by Nils
Thank you very much for your reply Odhiambo.
Sorry, it was all a mistake in my postfix configuration. Please forget it!
I forgot to update the pathes. They were still pointing to /var/lib/mailman.
Additionally I accidentally gave you wrong information. The transport
map at /opt/mailman/mm/var/data/postfix_lmtp DID update.
Sorry for the confusion.
Kind regards,
Nils
On 1/29/24 12:53, Odhiambo Washington wrote:
> On Mon, Jan 29, 2024 at 2:32 PM Nils <mailman(a)bugblatterbeast.de> wrote:
>
>> 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,
>> Nils
>>
> I am not any good with Postfix, nor am I an expert with MM3, but my
> thinking is that those files are updated by Mailman whenever you create a
> list.
> Postfix only reads them. Now the question lingering in my head is: How does
> Mailman know that it needs to create those files?
> I think that unless you tell Mailman - via mailman.cf - that you aren't
> using Exim or Sendmail or other MTA, then it assumes that you are using
> Postfix and so creates/updates those files.
> I am saying that because in my mailman.cfg I have this:
>
> [mta]
> verp_confirmations: yes
> verp_personalized_deliveries: yes
> verp_delivery_interval: 1
> verp_probes: yes
> incoming: mailman.mta.exim4.LMTP
> outgoing: mailman.mta.deliver.deliver
> lmtp_host: localhost
> smtp_host: localhost
> lmtp_port: 8024
> smtp_port: 25
> configuration: python:mailman.config.exim4 <============ I think this is
> probably what stops Mailman from creating those files on my server.
>
> Looking at
> https://docs.mailman3.org/en/latest/install/virtualenv.html#installing-mail…,
> I do not see the line starting with "configuration", so I am taking it that
> Mailman core presumes Postfix by default.
> Now the other question is why would it NOT update those files whenever you
> create a new list?
> And I am thinking that maybe the permissions on that directory, or the
> initial files changed during your reinstall and so they could not be
> written to/updated.
>
> This is just my guess. I am sure the proper explanation is on the way :-)
>
>
1 year, 2 months

[MM3-users] Re: New year releases!
by Odhiambo Washington
On two of my test VMs, I ran:
pip install --upgrade --upgrade-strategy eager abc ebd cde .... #
Everything went fine.
On Sat, Mar 18, 2023 at 8:15 PM Jeff <mm3(a)steele.com> wrote:
> I finally got around to doing this upgrade. I followed the instructions at:
>
> https://docs.mailman3.org/en/latest/upgrade-3.2.html
>
> Everything seemed to go fine but, mailman3 failed to start because
> “_BindParamClause” could not be found in sqlalchemy.sql.expression. It
> looks like alembic-1.6.2 is not completely compatible with
> SQLAlchemy-2.0.6. I fixed the problem by hacking sqla_compat.py in
> alembic-1.6.2, but should Mailman start requiring a newer version of
> alembic?
>
>
>
>
> > On Jan 4, 2023, at 4:59 AM, Abhilash Raj <maxking(a)asynchronous.in>
> wrote:
> >
> > Hello Everyone,
> >
> > Happy new year!
> >
> > I am pleased to announce several new releases for GNU Mailman project.
> >
> > 1. Mailman Core 3.3.8 [1]
> > 2. Postorius 1.3.8 [2]
> > 3. Hyperkitty 1.3.7 [3]
> > 4. Mailmanclient 3.3.5 [4]
> > 5. Django-mailman3 1.3.9 [5]
> > 6. Mailman-hyperkitty 1.2.1 [6]
> >
> > All the releases are published to PyPI and you can find links to all the
> PyPI projects:
> >
> > https://docs.mailman3.org/en/latest/
> >
> > A full list of change logs are available below:
> >
> > [1]:
> https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/docs/NEWS.…
> > [2]:
> https://docs.mailman3.org/projects/postorius/en/latest/news.html#news-1-3-8
> > [3]:
> https://docs.mailman3.org/projects/hyperkitty/en/latest/news.html#news-1-3-7
> > [4]:
> https://docs.mailman3.org/projects/mailmanclient/en/latest/src/mailmanclien…
> > [5]: https://gitlab.com/mailman/django-mailman3/-/blob/master/README.rst
> > [6]:
> https://gitlab.com/mailman/mailman-hyperkitty/-/blob/master/README.rst
> >
> > Finally, the minimum Python version required is 3.7, and all the
> components now support Python 3.7 to 3.11.
> >
> > Thanks to all the contributors for making this release possible!
> >
> > If you find any issues, you can report them at the respective bug
> tracker for the projects. The links to issue trackers are available
> > here: https://docs.mailman3.org/en/latest/
> >
> > Installation documentation is available at
> >
> > https://docs.mailman3.org/en/latest/install/install.html
> >
> > and if you are upgrading an existing virtualenv install you can refer
> >
> > https://docs.mailman3.org/en/latest/upgrade-3.2.html
> >
> >
> > --
> > thanks,
> > Abhilash Raj (maxking)
> > _______________________________________________
> > Mailman-users mailing list -- mailman-users(a)mailman3.org
> > To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> > https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> > Archived at:
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
> >
> > This message sent to mm3(a)steele.com
>
>
> ___________________________________________
> Mailman's content filtering has removed the
> following MIME parts from this message.
>
> Content-Type: image/vnd.microsoft.icon
> Name: favicon.ico
>
> Replaced multipart/alternative part with first alternative.
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> Archived at:
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
>
> This message sent to odhiambo(a)gmail.com
>
--
Best regards,
Odhiambo WASHINGTON,
Nairobi,KE
+254 7 3200 0004/+254 7 2274 3223
"Oh, the cruft.", egrep -v '^$|^.*#' ¯\_(ツ)_/¯ :-)
2 years, 1 month

[MM3-users] Re: [Mailman-Developers] Docker files for mailman
by Danil Smirnov
Hi Simon!
I've just tried to build docker image from the Dockerfile mentioned on page
https://wiki.list.org/DEV/Mailman%203.0/Mailman%203.0%20Suite%20Dockerfile
The building has stopped with the following error
Installing mailman.
> The executable python3.4 (from --python=python3.4) does not exist
> /tmp/tmpez1ftK/run: 2: /tmp/tmpez1ftK/run:
> /mailman3/mailman-bundler/venv-3.4/bin/pip: not found
> While:
> Installing mailman.
>
> An internal error occurred due to a bug in either zc.buildout or in a
> recipe being used:
> Traceback (most recent call last):
> File "/usr/local/lib/python2.7/dist-packages/zc/buildout/buildout.py",
> line 1995, in main
> getattr(buildout, command)(args)
> File "/usr/local/lib/python2.7/dist-packages/zc/buildout/buildout.py",
> line 666, in install
> installed_files = self[part]._call(recipe.install)
> File "/usr/local/lib/python2.7/dist-packages/zc/buildout/buildout.py",
> line 1410, in _call
> return f()
> File
> "/mailman3/mailman-bundler/eggs/collective.recipe.cmd-0.11-py2.7.egg/collective/recipe/cmd/__init__.py",
> line 56, in install
> self.execute()
> File
> "/mailman3/mailman-bundler/eggs/collective.recipe.cmd-0.11-py2.7.egg/collective/recipe/cmd/__init__.py",
> line 69, in execute
> run_commands(cmds, self.shell)
> File
> "/mailman3/mailman-bundler/eggs/collective.recipe.cmd-0.11-py2.7.egg/collective/recipe/cmd/__init__.py",
> line 39, in run_commands
> check_call('%s %s' % (shell, tmpfile), shell=True)
> File "/usr/lib/python2.7/subprocess.py", line 541, in check_call
> raise CalledProcessError(retcode, cmd)
> CalledProcessError: Command 'sh /tmp/tmpez1ftK/run' returned non-zero exit
> status 127
> The command '/bin/sh -c buildout' returned a non-zero code: 1
>
Do you have any clue what happens?
Danil
On 17 July 2016 at 20:06, Simon Hanna <simon.hanna(a)serve-me.info> wrote:
> Hi,
>
> I started working on docker files for Mailman.
>
> I created three repositories:
> - https://github.com/simonsmiley/postorius-docker
> Holds the files needed to create a postorius container
> - https://github.com/simonsmiley/mailman-docker
> Holds the files needed to create a core container
> - https://github.com/simonsmiley/mailman-compose
> Holds docker-compose files that greatly simply the process of running
> the containers
>
> * The mailman repo currently lacks documentation
> * Currently no emails can be sent.
> I still have to figure out what the best way is...
> * Hyperkitty will be added next
> (together with a complete "bundler" install)
>
>
> I pushed two images to the docker hub. Their names are
> thelinuxguy/postorius and thelinuxguy/mailman
>
> I created two organizations
> mailman on docker hub and gnu-mailman on github
> https://github.com/gnu-mailman
> https://hub.docker.com/u/mailman/
>
> I know we shouldn't use github, but there is no way around
> github/bitbucket for automated builds on docker hub.
>
> I post here to inform you about the docker images and I also to ask if
> I'm allowed to keep these two organizations and move my images/repos
> there. I'll happily give push/owner access to additional people if
> requested.
>
> The repositories could be mirrored to the gitlab mailman group,
> sadly the process doesn't work the other way round just yet.
>
> In case this request gets denied, I'll just remove the organizations and
> let the images be "unofficial".
>
> cheers,
> Simon
> _______________________________________________
> Mailman-Developers mailing list
> Mailman-Developers(a)python.org
> https://mail.python.org/mailman/listinfo/mailman-developers
> Mailman FAQ: http://wiki.list.org/x/AgA3
> Searchable Archives: http://www.mail-archive.com/
> mailman-developers%40python.org/
> Unsubscribe: https://mail.python.org/mailman/options/mailman-
> developers/danil%40smirnov.la
>
> Security Policy: http://wiki.list.org/x/QIA9
>
8 years, 5 months

[MM3-users] Re: ModuleNotFoundError: No module named 'mailman_web'
by Odhiambo Washington
On Thu, Nov 2, 2023 at 7:56 PM Stephen J. Turnbull <
turnbull.stephen.fw(a)u.tsukuba.ac.jp> wrote:
> gordon(a)dickens.com writes:
>
> > I am now running Python3.11 [using] the "apt autoremove" command
> > which I did use during the OS upgrade.
>
> This is not a problem, but you do have to upgrade your venv as well.
>
> > Why doesn't mailman3 work with Python3.11?
>
> It works fine with Python 3.11. The problem is that the point of a
> venv is to freeze everything -- including the Python binary -- "in
> place". However, because (a) Python is extremely stable across minor
> releases and (b) it is important to keep up with bug fixes, especially
> security fixes, in Python, the venv usually symlinks to the
> /usr/bin/python3.x binary (which is usually a symlink to a 3.x.y
> executable). If /usr/bin/python3.9 disappears, that will, of course,
> leave your Python 3.9 venv with a bunch of dangling symlinks and
> nothing in the venv will work.
>
> > Does this mean that I will need to rebuild mailman3's venv
> > everytime that python is upgraded?
>
> No.
>
> /path/to/new-python3.y -m venv --upgrade /path/to/venv
>
> should upgrade the venv to use Python 3.y, without changing any of the
> installed package sources. I believe it also recompiles all the
> source.py to __pycache__/source.cpython-3y.pyc files for you, but that
> is merely a minor time saving for the next time you start Mailman
> since Python will automatically recompile when you change versions.
>
> If you have upgraded the /usr/bin/python3 in place (apparently you
> did) you can simplify the above to
>
> python3 -m venv --upgrade /path/to/venv
>
> and venv will figure out the right symlink for you.
>
> Caveat, I have never tried this, I just don't uninstall the old Python
> installations because as a developer I need to test Mailman against
> them. But that's what "python3 -m venv --help" tells me. :-)
>
> If you don't trust my untested suggestions (and why should you? ;-),
> you can try
>
> PYTHONPATH=/path/to/venv/site-packages python3 -m pip freeze
>
> and if that looks sane (ie, a list of Mailman and Django related
> packages and their versions), you can redirect it into
> requirements.txt. Then if necessary you can blow away the original
> venv and start new with the upgraded Python 3 and exactly the same
> package versions you had before with
>
> python3 -m pip install -r requirements.txt
>
> You can also avoid the venv upgrade entirely by using
>
> python3 -m venv --copies /path/to/venv
>
> to build the venv in the first place, which as I understand it will
> copy the whole Python installation into the venv. But then you lose
> the benefit of Python bug fixes from your distro and of course the
> space saving of symlinks.
>
> Steve
>
Hello Steve,
Thank you very much for that lesson. Very helpful.
@Gordon Dickens <gordon(a)dickens.com>, subject to time availability, could
you please make a backup of the whole of your current /opt/mailman, then
test these options and share the test results with us?
--
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]
1 year, 5 months

[MM3-users] Re: config incoming email in my domain cpanel
by Rafael Mora
El jue., 3 ago. 2017 a las 16:25, tlhackque via Mailman-users (<
mailman-users(a)mailman3.org>) escribió:
> On 03-Aug-17 17:14, Rafael Mora wrote:
> >
> >
> > El jue., 3 ago. 2017 a las 16:07, tlhackque via Mailman-users
> > (<mailman-users(a)mailman3.org <mailto:mailman-users@mailman3.org>>)
> > escribió:
> >
> > You've said you're working with labbrands.com <http://labbrands.com
> >.
> >
> > labbrands.com <http://labbrands.com> has address
> 192.185.51.89
> > mail.labbrands.com <http://mail.labbrands.com> has address
> > 192.185.51.89
> > www.labbrands.com <http://www.labbrands.com> is an alias for
> > labbrands.com <http://labbrands.com>.
> >
> > telnet proves that Exim is running on that IP address. Either you're
> > running it, or hostgator is redirecting the SMTP ports.
> >
> > You added:
> > lists.labbrands.com <http://lists.labbrands.com> has address
> > 190.145.27.66
> >
> > Presumably that's a different machine.
> >
> > So that now needs an MX record, and a firewall routing.
> >
> >
> > I added the MX record on our hostgator hosting like this:
> > image.png
> >
> > Is it correct???
> >
> No. And sending images to the mailing list doesn't get you help.
>
> You set up lists.labbrands.com as a secondary server, not an independent
> mail domain. This will cause you serious grief.
>
Ok I will remove that MX record on my hostgator hosting. Thank for your
help.
>
> You need to get some help from a more suitable list. Setting this up is
> not mailman-specific, and getting it right is more than a quick note.
>
> Try the Postfix documentation & mailing lists.
>
> >
> >
> > And the SPF
> > records ... and spam and virus filters, and all the other stuff
> > you need
> > to setup an independent, public-facing smtp server.
> >
> > But at least you won't have to relay.
> >
> > Good luck.
> >
> > On 03-Aug-17 16:55, Rafael Mora wrote:
> > > El jue., 3 ago. 2017 a las 15:49, tlhackque via Mailman-users (<
> > > mailman-users(a)mailman3.org <mailto:mailman-users@mailman3.org>>)
> > escribió:
> > >
> > >> I think you're confused.
> > >>
> > >> You already have mail.labbrands.com <http://mail.labbrands.com>
> > set up as the MX record for
> > >> labbrands.com <http://labbrands.com>. And it has an A record
> > with the same address as your
> > >> webserver.
> > >>
> > > I'm working with the hostgator mailserver, we are not running a
> > local
> > > mailserver.
> > >
> > > As suggested I added an A record like this:
> > > [image: image.png]
> > >
> > > Is it correct? is it redirecting to my Ip so I can redirect it to
> my
> > > postfix/mm3 server?
> > >
> > >
> > >> So if you're getting e-mail on that domain, there's another e-mail
> > >> server running on that IP address. You can't have 2 servers
> > on port
> > >> 25. In that case, as has been noted before, you'll need to setup
> a
> > >> relay in that server, not a firewall redirect. Depending on
> > your MTA,
> > >> you would need to relay to your internal server. And make sure
> > your
> > >> firewall setup allows your MTA to do this.
> > >>
> > >> We can see it's EXIM:
> > >>
> > >> telnet mail.labbrands.com <http://mail.labbrands.com> 25
> > >> Trying 192.185.51.89...
> > >> Connected to mail.labbrands.com <http://mail.labbrands.com>
> > (192.185.51.89).
> > >> Escape character is '^]'.
> > >> help
> > >> 220-gator4137.hostgator.com
> > <http://220-gator4137.hostgator.com> ESMTP Exim 4.87 #1 Thu, 03
> > Aug 2017 15:47:48
> > >> -0500
> > >> 220-We do not authorize the use of this system to transport
> > unsolicited,
> > >> 220 and/or bulk e-mail.
> > >> 214-Commands supported:
> > >> 214 AUTH STARTTLS HELO EHLO MAIL RCPT DATA NOOP QUIT RSET HELP
> > >> quit
> > >> 221 gator4137.hostgator.com <http://gator4137.hostgator.com>
> > closing connection
> > >> Connection closed by foreign host.
> > >>
> > >> Or, consolidate all your e-mail to one server - which is a lot
> > easier to
> > >> manage unless you have a really big operation. Postfix is
> > probably the
> > >> right choice, but requires more setup.
> > >>
> > >> Although Mailman3 configuration is not well documented (as you've
> > >> discovered), you may want to get help from someone with more
> > general
> > >> network and mail experience. You're now into territory that is,
> as
> > >> Simon indicated, not Mailman-specific.
> > >>
> > >> On 03-Aug-17 16:28, Rafael Mora wrote:
> > >>> El jue., 3 ago. 2017 a las 15:26, Mark Sapiro
> > (<mark(a)msapiro.net <mailto:mark@msapiro.net>>)
> > >> escribió:
> > >>>> On 08/03/2017 01:22 PM, Rafael Mora wrote:
> > >>>>> El jue., 3 ago. 2017 a las 15:18, Mark Sapiro
> > (<mark(a)msapiro.net <mailto:mark@msapiro.net>>)
> > >>>> escribió:
> > >>>>>> You need to forward port 25 for SMTP mail delivery and if
> > you want the
> > >>>>>> web UI (Postorius and HyperKitty) accessible from the
> > outside, port 80
> > >>>>>> for http and/or port 443 for https
> > >>>>>> <
> > >>>>>>
> > >>
> >
> https://www.iana.org/assignments/service-names-port-numbers/service-names-p…
> > >>>>>>> .
> > >>>>> I mean for incoming mail redirected from my hostgator
> > hosting, because
> > >>>> when
> > >>>>> I suscribe an email address MM3 sends a confirmation email,
> > so I have
> > >> to
> > >>>>> reply to be suscribed to the list.
> > >>>> As I said, for mail delivery you need to forward port 25 to
> > the Mailman
> > >>>> server.
> > >>>>
> > >>> Ok so I'll redirect in my zentyal firewall the port 25 to my
> local
> > >> centos7
> > >>> with postfix and MM3 with IP 192.168.1.42. Thanks Mark.
> > >>>
> > >>>
> > >>>> --
> > >>>> Mark Sapiro <mark(a)msapiro.net <mailto:mark@msapiro.net>>
> > The highway is for gamblers,
> > >>>> San Francisco Bay Area, California better use your sense -
> > B. Dylan
> > >>>> _______________________________________________
> > >>>> Mailman-users mailing list
> > >>>> mailman-users(a)mailman3.org <mailto:mailman-users@mailman3.org>
> > >>>>
> >
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> > >>>>
> > >> --
> > >> This communication may not represent my employer's views,
> > >> if any, on the matters discussed.
> > >>
> > >> _______________________________________________
> > >> Mailman-users mailing list
> > >> mailman-users(a)mailman3.org <mailto:mailman-users@mailman3.org>
> > >>
> >
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> > >>
> >
> > --
> > This communication may not represent my employer's views,
> > if any, on the matters discussed.
> >
> > _______________________________________________
> > Mailman-users mailing list
> > mailman-users(a)mailman3.org <mailto:mailman-users@mailman3.org>
> >
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> >
> > --
> >
> > Atentamente / Best Regards
> >
> > Ing. Rafael Mora
> >
>
> --
> This communication may not represent my employer's views,
> if any, on the matters discussed.
>
> _______________________________________________
> Mailman-users mailing list
> mailman-users(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>
--
Atentamente / Best Regards
Ing. Rafael Mora
7 years, 8 months

[MM3-users] Some doc updates from Fedora install experience
by tlhackque@yahoo.com
Trying to get mailman3 setup round three. Some notes from a first timer that I hope will be of use.
These are in order of experience, and unfiltered.
I'm a bit confused about why you have a release that pip should
be able to install, but the advice I get is to pretend I'm developing
from git. But off we go:
Following http://docs.mailman3.org/en/latest/devsetup.html:
I'm using Fedora 25. Packaged Python is 2.7.13-2, 3.6.3-6,
2-setuptools 25.1.1-1, 2-virtualenv 15.0.3-2 nodejs-less 2.7.1-1 sassc 3.4.1-1
a) fedora now uses dnf rather than yum (and has for some time). Specify dnf install rather than yum install
b) sassc is packaged - just add it to the end of the dnf install string.
I'm using sendmail. Directly outbound. Inbound, a custom LMTP client.
It is possible to setup sendmail to use LMTP for local delivery - but if you do, it's the ONLY local delivery (or you're into some serious sendmail configuration hacking). Most installations use procmail and/or pipes. I could probably extract a pipe -> lmtp script from my project - but it's Perl, not Python.
The current install process assumes a lot of Python knowledge/interaction, which is a barrier to adoption.
Documentation should note that the virtualenv commands create directories of those names (I'm not a Python person, so everything is a surprise.)
To save typing, I defined:
alias p0='[ -n "$_OLD_VIRTUAL_PATH" ] && deactivate;cd ~mailman3'
alias p2='[ -n "$_OLD_VIRTUAL_PATH" ] && deactivate;cd ~/mailman3 && source venv-2.7/bin/activate'
alias p3='[ -n "$_OLD_VIRTUAL_PATH" ] && deactivate;cd ~/mailman3 && source venv-3.5/bin/activate'
I suggest using mailman3 as the top level in your examples, since there's also a mailman directory in the path, and mailman is easily confused with mailman/mailman Also, if you have mailman2 - or your distro has provision for it - 'mailman' has other semantics. (Including, but not limited to things like SeLinux contexts...)
I got tracebacks when I got to the "mailman info" command. After some experimentation/digging, resolved with
dnf install python3-dateutil
This was confusing because Python/pip seemed to think dateutil was installed - perhaps it fell back to the Python2 version?
mailman info works!
>> You can edit your mailman.cfg file
But which one? there's one in src/mailman/config and one in var/etc/mailman.cfg. Should specify. But var looks like the one to modify, the other.
The suggestion to look at the one in src for doc isn't very helpful, there are virtually no comments. So, look at the schema.
To get started, I set the following:
[mailman]
site_owner: admin(a)example.net
[devmode]
enabled: yes
[mta]
smtp_host: smtp.example.net
smtp_port: 587
#smtp_user:
#smtp_pass:
lmtp_host: 192.168.148.19
lmtp_port: 8024
### Note: LMTP needs security, preferably SSL.. Thiis is probably a bunch of config items that get fed into the Python library (e.g. use ssl, cert files (current openssl includes key w/cert, but often multiple certs - rsa + ecdsa) verify client, ca bundle, ca path, client ca.) Despite the list, these are all pass-through parameters, so should not be much work. Once you have SSL, a simple shared secret (e.g. password) can be used. Or (my preference) client verification (certificate). Maybe a proxy, but who needs another process to manage?
FWIW, my MTA runs on a separate VM from the MM instance, so assuming "localhost" is secure doesn't work. It also doesn't work on a multiuser machine.
mailman start got some things running. Telnet & LHLO wakes up LMTP!
I guess I should try to setup my first list.
More as it develops.
7 years, 10 months

[MM3-users] Re: Multiple domain problem
by Odhiambo Washington
Are you by any chance doing redirection to https in your VHOSTS? For me I
beg to see your VHOST configuration.
Also is it absolutely necessary to hide your domain names?
On Mon, Feb 13, 2023, 13:05 Lars Bjørndal <lars(a)lamasti.net> wrote:
> Hi, Marik!
>
> I realized that I had two variables in settings.py where the domains is
> listed, and one of them had a preceding https.
>
> I've now followed the documentation for configuring Apache here:
> https://docs.mailman3.org/en/latest/install/virtualenv.html#apache-configur….
> I want both domains to start mailman3 when contacting
> example1.com/mailman3 and example2.com/mailman3. I have the sam
> configuration in both virtualhost section in Apache. For
> example1.com/mailman3, it works perfectly. For example2.com/mailman3
> however, the browser (elinks), reports Host not found: example2.commailman3
> e.g. without a slash after the domain name. What could cause this to happen?
>
> Thanks
> Lars
>
> On Fri, Feb 10, 2023 at 11:59:02AM -0800, Mark Sapiro wrote:
> > On 2/10/23 01:43, Lars Bjørndal wrote:
> > > On Thu, Feb 09, 2023 at 02:05:09PM -0800, Mark Sapiro wrote:
> > > > On 2/9/23 13:21, Lars Bjørndal wrote:
> > > > >
> > > > > If I connect to example2.com, the title is example2.com, without
> the
> > > > > preceding List index. And the body says Page not found.
> > > >
> > > >
> > > > What's in the browser's address bar for that page?
> > >
> > > It's https://example2.com/mailman3/lists/
> >
> > And when you get the Page not found, is it a browser 404 error or a
> > Postorius error page?
> >
> >
> > >
> > > > What's in Postorius domains view?
> > >
> > > I realized that I have to change SIT_ID to 1 to be able to connect to
> http://localhost:8000/. Then, when checking Domains, I have both domains
> with different SIT_ID value (1 and 2).
> >
> >
> > Why are you going to http://localhost:8000/? You should be able to see
> the
> > domain's view at https://example1.com/mailman3/domains/ or
> > https://example1.com/mailman3/domains/ or by just clicking Domains in
> > Postorius top nav bar.
> >
> >
> > > Going to http://localhost:8000/admin and choosing Sites, I have both
> domains listed.
> >
> >
> > Again you should be able to go to https://example1.com/admin or
> > https://example2.com/admin. If these don't work, you need to add
> directives
> > in your web server to proxy them to http://localhost:8000/admin
> >
> > --
> > Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
> > San Francisco Bay Area, California better use your sense - B. Dylan
> >
> > _______________________________________________
> > Mailman-users mailing list -- mailman-users(a)mailman3.org
> > To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> > https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> > Archived at:
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
> >
> > This message sent to lars(a)lamasti.net
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> Archived at:
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
>
> This message sent to odhiambo(a)gmail.com
>
2 years, 2 months

[MM3-users] Re: Mailman3 on AlmaLinux 9 - Python3.9 errors
by willie.castillo@caemilusa.com
Mark first let me thank you for your assistance with this. I don't believe I mentioned that this is a fresh/new installation I'm performing on an AlmaLinux 9.4 VM. I have searched everywhere for a solid Mailman installation on AlmaLinux document/process but, I haven't had any luck. I tried following documentation on this site and I only found this https://docs.mailman3.org/en/latest/install/distro.html.
I have been trying to put all necessary pieces together (just like a puzzle) but, I haven't been successful in getting to the finish line.
Do you happen to know where I can find step-by-step Mailman3 installation for AlmaLinux
I have nginx, postfix running but, cannot get mailman3 running.
● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: disabled)
Active: active (running) since Thu 2024-07-18 13:54:17 EDT; 17min ago
Process: 1107 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
Process: 1110 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
Process: 1183 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
Main PID: 1185 (nginx)
Tasks: 5 (limit: 48930)
Memory: 6.9M
CPU: 377ms
CGroup: /system.slice/nginx.service
├─1185 "nginx: master process /usr/sbin/nginx"
├─1186 "nginx: worker process"
├─1187 "nginx: worker process"
├─1188 "nginx: worker process"
└─1189 "nginx: worker process"
Jul 18 13:54:17 tpalxinflstp01.caemilusa.com systemd[1]: Starting The nginx HTTP and reverse proxy server...
Jul 18 13:54:17 tpalxinflstp01.caemilusa.com nginx[1110]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Jul 18 13:54:17 tpalxinflstp01.caemilusa.com nginx[1110]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Jul 18 13:54:17 tpalxinflstp01.caemilusa.com systemd[1]: Started The nginx HTTP and reverse proxy server.
● postfix.service - Postfix Mail Transport Agent
Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled; preset: disabled)
Active: active (running) since Thu 2024-07-18 13:54:18 EDT; 17min ago
Process: 1094 ExecStartPre=/usr/sbin/restorecon -R /var/spool/postfix/pid (code=exited, status=0/SUCCESS)
Process: 1103 ExecStartPre=/usr/libexec/postfix/aliasesdb (code=exited, status=0/SUCCESS)
Process: 1153 ExecStartPre=/usr/libexec/postfix/chroot-update (code=exited, status=0/SUCCESS)
Process: 1160 ExecStart=/usr/sbin/postfix start (code=exited, status=0/SUCCESS)
Main PID: 1439 (master)
Tasks: 3 (limit: 48930)
Memory: 9.1M
CPU: 238ms
CGroup: /system.slice/postfix.service
├─1439 /usr/libexec/postfix/master -w
├─1471 pickup -l -t unix -u
└─1472 qmgr -l -t unix -u
Jul 18 13:54:17 tpalxinflstp01.caemilusa.com systemd[1]: Starting Postfix Mail Transport Agent...
Jul 18 13:54:18 tpalxinflstp01.caemilusa.com postfix/postfix-script[1427]: starting the Postfix mail system
Jul 18 13:54:18 tpalxinflstp01.caemilusa.com postfix/master[1439]: daemon started -- version 3.5.9, configuration /etc/postfix
Jul 18 13:54:18 tpalxinflstp01.caemilusa.com systemd[1]: Started Postfix Mail Transport Agent.
× mailman3.service - GNU Mailing List Manager
Loaded: loaded (/etc/systemd/system/mailman3.service; enabled; preset: disabled)
Active: failed (Result: exit-code) since Thu 2024-07-18 13:54:20 EDT; 17min ago
Process: 1477 ExecStart=/usr/bin/mailman3 start --force (code=exited, status=1/FAILURE)
CPU: 642ms
Jul 18 13:54:19 tpalxinflstp01.caemilusa.com mailman3[1496]: File "/usr/lib/python3.9/site-packages/alembic/script/base.py", line 435, in _upgrade_revs
Jul 18 13:54:19 tpalxinflstp01.caemilusa.com mailman3[1496]: return [
Jul 18 13:54:19 tpalxinflstp01.caemilusa.com mailman3[1496]: File "/usr/lib64/python3.9/contextlib.py", line 137, in __exit__
Jul 18 13:54:19 tpalxinflstp01.caemilusa.com mailman3[1496]: self.gen.throw(typ, value, traceback)
Jul 18 13:54:19 tpalxinflstp01.caemilusa.com mailman3[1496]: File "/usr/lib/python3.9/site-packages/alembic/script/base.py", line 259, in _catch_revision_errors
Jul 18 13:54:19 tpalxinflstp01.caemilusa.com mailman3[1496]: raise util.CommandError(resolution) from re
Jul 18 13:54:19 tpalxinflstp01.caemilusa.com mailman3[1496]: alembic.util.exc.CommandError: Can't locate revision identified by '2156fc3f6f7d'
Jul 18 13:54:20 tpalxinflstp01.caemilusa.com systemd[1]: mailman3.service: Control process exited, code=exited, status=1/FAILURE
Jul 18 13:54:20 tpalxinflstp01.caemilusa.com systemd[1]: mailman3.service: Failed with result 'exit-code'.
Jul 18 13:54:20 tpalxinflstp01.caemilusa.com systemd[1]: Failed to start GNU Mailing List Manager.
9 months

[MM3-users] Re: Sendgrid experiences
by Stephen Daniel
I'll check my notes. I don't think I did anything with mailman.
I am running postfix as my local MTA, and mailman talks to it as normal.
In /etc/postfix/main.cf I have
relayhost = smtp-relay.gmail.com:submission
set. It took a bit of playing around to get it running, but its been rock
solid since then.
Domains have not been a problem. My google workspace account is
MYDOMAIN.dev and all my email lists are MYDOMAIN.org, and everything
appears to work just fine.
I took a bunch of cryptic notes on how I got this working. As you would
expect, the hard part is getting the authentication and permissions set up.
I will send you a private message with a link to my notes.
On Thu, May 11, 2023 at 10:00 AM Andrew Hodgson <andrew(a)hodgson.io> wrote:
> Hi.
>
>
>
> Thanks for the recommendation on the Google Workspace. How did you set
> this up in terms of the domain, since I don’t want to use Google Workspace
> as the main email provider for this domain. Also did you have to set
> anything special in Mailman?
>
>
>
> Thanks.
>
> Andrew.
>
>
>
> *From:* Stephen Daniel <swd(a)pobox.com>
> *Sent:* Thursday, May 11, 2023 2:57 PM
> *To:* Andrew Hodgson <andrew(a)hodgson.io>
> *Cc:* Stephen J Turnbull <turnbull(a)sk.tsukuba.ac.jp>;
> mailman-users(a)mailman3.org
> *Subject:* Re: [MM3-users] Re: Sendgrid experiences
>
>
>
> I would definitely look for alternatives to SendGrid. I tried using them
> and had a very poor rate of people actually getting my emails, even when I
> temporarily upgraded to an expensive plan with a dedicated IP address.
>
> I'm currently hosting mailman in Google Cloud and relaying outbound mail
> through a Google Workspace account. It's working OK. The workspace
> account costs me $6/month for basically unlimited mail relay.
>
>
>
> On Thu, May 11, 2023 at 9:50 AM Andrew Hodgson <andrew(a)hodgson.io> wrote:
>
> Stephen J Turnbull wrote:
>
> >2023-05-10 03:49 に Andrew Hodgson wrote:
>
> >> Sendgrid is maintaining the Message-Id header which is good for
> >> archiving. It is re-writing the Return-Path header though which means
> >> that bounce handling in Mailman won't work, but I think all the
> >> services do this in some way so I am happy to live with that for the
> >> moment.
>
> >How does it rewrite the Return-Path? Returned mail is not something that
> such a service would be able to handle properly (although they can help
> with apparently returned spam). If mail is legitmately sent and returned
> as undeliverable, only the author or their agent will know how to handle
> it. So such >services should provide some way to find out about returned
> mail.
>
> An example:
> Return-Path:
> bounces+[Sendgrid GUID]-andrew=hodgson.io(a)em6096.lists.hodgsonfamily.org
>
> Sendgrid provide information about bounces but crucially that bounce isn't
> forwarded back to the original return-path sender (i.e, Mailman).
>
> A few people have pointed out they can provide list hosting at a cheaper
> cost than Sendgrid so I'm looking for alternatives again.
>
> Andrew.
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> Archived at:
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
>
> This message sent to swd(a)pobox.com
>
>
1 year, 11 months

[MM3-users] Rolling releases for Container Images and Funding Campaign for Mailman
by Abhilash Raj
Hi Everyone,
As you all know I have been working on container images for Mailman 3.
We now have a new "rolling" tag for both mailman-core and
mailman-web images. These images have latest source installed
for every Mailman component. You can find more information about them
on the website [3].
New images are available on quay.io and, moving forward, the rest of
the image builds will also be moved to Quay[4][5].
These images are built using git-heads *only* if they are passing our
test suite and are re-generated weekly. You should be aware that while
all these components are tested with their individual test suites, their
combination might sometimes not be stable. This will get you
updates/bug-fixes much faster :)
As most of you already know, Mailman 3 is the new and improved version
with extra features, better security and much better architecture. We
released Mailman Suite 3.0 in April 2015 and have come a long ways since
then. Mailman Suite 3.1, release May 2016, was aimed to provide
feature-parity with Mailman 2.x series and we think we _almost_ hit that
goal.
Apart from no monthly password reminders, Mailman 3 has a much better
Administrator/User interface, REST API for scripting, a really awesome
archiver, support for multiple domains, support for external plugins,
support for SSO/social login and so much more!
I love working on Mailman and would enjoy being able to do so full time
for next 6-8 weeks. Mailman 3 is not very far from becoming the default
version everyone would use, but it still needs some work to get there. I
need help from you, the users of Mailman, to get us there. If you or
your organization would like to move to (or, already moved to) Mailman
3, I urge you to donate[1] to us.
There are options to donate using Credit Card, Paypal, Bitcoin, Wire
Transfer
(of any currency), Check and money order.
If this campaign succeeds, here is a road map of what I intend to get
done:
- Move Django apps(UI/Archiver) to Python 3 (or bilingual)
- Fork `mailman import` command to provide an upgrade path to Mailman
3.x from Mailman 2.x
- Fix MySQL compatibility in Core
- Changes in Postorius:
- Add support for missing options that are already exposed in Core’s
API
- e.g. Support for setting templates
- Find the commonly used options that are not exposed in Core, add
them to Core's API and add to Postorius
- Add Admin Dashboard project from GSoC 2014 (maybe?)
- Add better testing of container images and provide deployment
instructions for Kubernetes & Docker Swarm
- Improve the container images to work with new micro-services
architecture,
to achieve scaling and redundancy in services.
- Administrator/User documentation for Postorius & Mailman
- (optional) Fork [mmcli](https://github.com/rajeevs1992/mailmancli)
project from Rajeev, fix if there is anything missing and add it as
an
additional command line tool to work with Mailman Core. Maybe pull it
under Mailman umbrella.
Except for these, if there is something more important that is
preventing the adoption of Mailman 3 from your end, we can discuss them.
I'd like to mention that I have been working on Mailman 3 for quite some
time now and I intend to implement every single item on the list. You
donations would help it get done much sooner, hopefully in time for 3.2
release schedule (at PyCon US 2018).
You can follow the progress of this campaign here[2].
[1]: https://my.fsf.org/civicrm/contribute/transact?reset=1&id=22
[2]: https://wiki.list.org/x/17892025
[3]: https://asynchronous.in/docker-mailman/#rolling-releases
[4]: https://quay.io/repository/maxking/mailman-web
[5]: https://quay.io/repository/maxking/mailman-core
--
Abhilash Raj
maxking(a)asynchronous.in
7 years, 5 months

[MM3-users] Re: Mailman3 on AlmaLinux 9 - Python3.9 errors
by willie.castillo@caemilusa.com
Not sure what's going on here. This is the output of the "mailman3 info". What am I doing wrong?
$ /usr/bin/mailman3 info
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'
9 months

[MM3-users] Re: Missing Base64 encoding from control message reply
by Jana Berger
On 23.09.2023 16:26, Stephen J. Turnbull wrote:
> Jana Berger writes:
>
> > You can see the same or similar result by opening the EML I
> > quoted. Does the list support attachments? Then I will attach the
> > file directly.
>
> No, I just misjudged the length of the email -- without the header
> it's way too short to generate that much mojibake. I'll take your
> word for it now.
>
> > I have multiple control messages, all received
>
> By whom? Through what other systems have they passed?
>
> Is this happening with any other domain than USERDOMAIN.NET? The
> remote MTA in the message you included earlier seems to be something
> called Nemesis, and Google suggests it may be a German homebrew MTA.
> That's another candidate for causing this issue.
It was (until now) only reported from this domain, but Nemesis is used
by GMX, one of the largest mail providers in Germany. I am reluctant to
pin this issue on their end for now.
>
> > from my instance which all contain the "Content-Transfer-Encoding:
> > base64" marker, their contents is plain text (Content-Type:
> > text/plain; charset="utf-8"), but they are still encoded using
> > base64.
>
> Yes. The question remains, where is it happening and why.
>
> As mentioned earlier, Mark tried to reproduce on one of his systems,
> but did not get the body in UTF-8/base64. It came out us-ascii/7bit,
> which is what we expect. Given Mark's experiments and the "all
> English" configuration you report, it seems unlikely to be from our
> distribution of Mailman.
>
> One possibility is that Mailman or Python is getting confused by
> something in your whole system configuration (not limited to Mailman).
> Where did you get Mailman? Did you install a OS distribution package,
> from PyPI, or from source? How about Python 3?
I am using the "docker-mailman" image from
https://github.com/maxking/docker-mailman
It is using Python 3.11 with Alpine 3.18 as its base.
>
> I wonder if some MTA is using SMTPUTF8 and to make life "easier" for
> themselves they convert everything to UTF-8, but gets confused about
> whether base64 encoding is done or not.
I am using Postfix as the main MTA which is set to "smtputf8_enable =
yes" together with "smtputf8_autodetect_classes = sendmail, verify". Is
this an issue?
>
> > Global "Preferred language" is "English (USA)", which is not
> > overridden by the list in question. I have not changed the default
> > encoding. Is there a surefire way to detect this?
>
> > My mailman.cfg has no section pertaining to encoding, and all
> > related files also do not mention encoding.
>
> Then everything is configured for UTF-8 except for English, which is
> US-ASCII.
>
> The only way to change the site default language or any charset is in
> mailman.cfg (or in the code). If you have a distro package of
> Mailman, you could check in site-packages/mailman/config/schema.cfg to
> see the settings for default_language (should be en) and immediately
> after [language.master] (charset should be us-ascii). I think that
> changing language.master.charset to utf-8 is probably very tempting
> for distros so that people can safely put emojis and smartquotes in
> their template messages in English.
I checked the schema.cfg and it has "charset: us-ascii" in its
"[language.master]" section, as well as "default_language: en".
1 year, 6 months

[MM3-users] Re: Mailman-web showing "An error occurred while processing your request."
by C. Souza
Hello Guys,
Thank you for the help.
Mark, I followed your recommendation running your code and it's done,
problem solved.
Just for curiosity, does anyone know the reasons for this kind of problem
and how to avoid it?
Thank you very much.
--
Carlos Adean
On Thu, Feb 9, 2023 at 1:55 AM Mark Sapiro <mark(a)msapiro.net> wrote:
> On 2/8/23 08:34, C. Souza wrote:
> > I'm trying to manage 2 held messages in a specific list and I'm getting
> > this error below when I click on /held_messages. It never happened
> before.
> ...
> > ==> mailmanweb.log <==
> > ERROR 2023-02-08 16:01:30,149 1516 django.request Internal Server Error:
> > /mailman3/lists/mylist.domain.com/held_messages
> > Traceback (most recent call last):
> ...
> > File
> >
> "/opt/mailman/venv/lib64/python3.6/site-packages/django/utils/dateparse.py",
> > line 107, in parse_datetime
> > match = datetime_re.match(value)
> > TypeError: expected string or bytes-like object
>
>
> I'm not certain, but it looks like one of the held messages has a bad or
> possibly missing Date: header. Working around this is tricky. You can do
> the following in mailman shell.
> ```
> $ mailman shell -l list(a)example.com
>
> 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.
> The variable 'm' is the list.example.com mailing list
> >>> requests = IListRequests(m)
> >>> msgstor = getUtility(IMessageStore)
> >>> for request in requests.held_requests:
> ... key, data = requests.get_request(request.id)
> ... if data['_request_type'] == 'held_message':
> ... print(f'request ID = {request.id}Message-ID = {key}\n '
> ... f'message = {msgstor.get_message_by_id(key)}')
> ...
> This will print for each held message output like
>
> request ID = nnn
> Message-ID = <the message id>
> message = the message content
>
>
> You can then handle these messages with
>
> >>> from mailman.app.moderator import handle_message
> >>> handle_message(m, nnn, action)
>
> where nnn is the request ID and action is either Action.discard to
> discard the message or Action.accept to accept it. And finally
>
> >>> commit()
> ```
> If you decide you want to edit the message content before accepting it,
> you could find the message in the file system. One of the headers in the
> displayed message is something like
>
> Message-ID-Hash: IWL2EUW3FT7IIUA3QYTZEX4W4JBZ26HL
>
> the message is saved as a python pickle in the file system in Mailman's
> var/messages/ directory. This has subdirectories of the first two
> characters of the Message-ID-Hash value and those have subdirectories of
> the second two characters of the Message-ID-Hash value, so if the above
> were the actual Message-ID-Hash the pickle would be at
> var/messages/IW/L2/IWL2EUW3FT7IIUA3QYTZEX4W4JBZ26HL. You would need to
> pickle the new message content and save that over the existing file.
>
> --
> Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
> San Francisco Bay Area, California better use your sense - B. Dylan
>
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> Archived at:
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
>
> This message sent to skooperit(a)gmail.com
>
2 years, 2 months

[MM3-users] Re: [External] Re: Re: Problem getting Mailman3 to work with Ubuntu 24.04.1 LTS
by Greg Newby
Hi Gilbert. Yes, the venv method worked well under Ubuntu 24.04 (fresh
install).
The big problems I had were with the Ubuntu/Debian packages.
~ Greg
On Fri, Sep 13, 2024 at 12:45 PM Sebenste, Gilbert <sebensteg(a)cod.edu>
wrote:
> Hi Greg,
>
> We are using the venv method. Did you get it working on that? Did you
> require a special configuration for mailmanweb?
>
> Gilbert
>
>
>
> Gilbert Sebenste
>
> Meteorology Support Analyst
>
>
>
> *From:* Greg Newby <gbnewby(a)petascale.org>
> *Sent:* Friday, September 13, 2024 2:17 PM
> *To:* Sebenste, Gilbert <sebensteg(a)cod.edu>
> *Cc:* mailman-users(a)mailman3.org
> *Subject:* [External] Re: [MM3-users] Re: Problem getting Mailman3 to
> work with Ubuntu 24.04.1 LTS
>
>
>
> CAUTION: This email originated from outside of COD’s system. Do not click
> links, open attachments, or respond with sensitive information unless you
> recognize the sender and know the content is safe.
>
>
>
> Hi Gilbert. I don't know the solution. However, FWIW, I found the Ubuntu
> 24.04 LTS packages to be unusable and not fit for purpose.
>
>
>
> I tried to get them running on a fresh installation of 24.04 and ran into
> huge problems. The packages include outdated versions of the Mailman
> software and dependencies, and components of Mailman are stored in places
> that are non-standard and undocumented. Among other things, there were
> problems with file ownership since the Ubuntu/Debian approach is different
> from the Mailman3 official documentation.
>
>
>
> After getting some guidance from this list (which you can see in the
> archives), I abandoned the effort and installed it in a virtual environment
> per the instructions. That worked fine. It's a non-trivial installation,
> even so - many configuration files need to be created or edited.
>
>
>
> I will be curious to learn whether you get Mailman3 working correctly from
> the Ubuntu packages. Like you, I needed to port existing lists (from
> Mailman 2.1) and I eventually gave up. With the packages, it was a
> situation where I would think I had solved "the" problem, and then other
> problems kept appearing.
>
> ~ Greg
>
>
>
> On Fri, Sep 13, 2024 at 11:59 AM <sebensteg(a)cod.edu> wrote:
>
> This got mailman3 working, but mailmanweb is still borked. Does anyone
> know what might cause this:
>
> > systemctl status mailmanweb
>
> mailmanweb.service - GNU Mailman Web UI
> Loaded: loaded (/etc/systemd/system/mailmanweb.service; enabled;
> preset: enabled)
> Active: failed (Result: exit-code) since Fri 2024-09-13 18:55:37 UTC;
> 12s ago
> Duration: 1ms
> Process: 562668 ExecStart=/opt/mailman/venv/bin/uwsgi --ini
> /etc/mailman3/uwsgi.ini (code=exited, status=203/EXEC)
> Main PID: 562668 (code=exited, status=203/EXEC)
> CPU: 700us
>
> Sep 13 18:55:37 server1 systemd[1]: Started mailmanweb.service - GNU
> Mailman Web UI.
> Sep 13 18:55:37 server1 systemd[1]: mailmanweb.service: Main process
> exited, code=exited, status=203/EXEC
> Sep 13 18:55:37 server1 systemd[1]: mailmanweb.service: Failed with result
> 'exit-code'.
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> Archived at:
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
>
> This message sent to gbnewby(a)petascale.org
>
>
___________________________________________
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.
7 months, 1 week

[MM3-users] Re: django-allauth failures, but only for some users (independent of browser?)
by Jered Floyd
The difference in behavior was using social login buttons for an existing account vs. creating a new account.
This is another damn django-allauth regression, starting in 0.57.0. It seem to be this commit that is to blame:
https://github.com/pennersr/django-allauth/commit/be779dfee5a328a3a42edc2c9…
In allauth/socialaccount/models.py:lookup(self):285 there is an attempt to look up the social account as one that already exists. If that fails, this commit calls self.account.get_provider() without passing the request object, which leads to the eventual error.
I believe this is a django-allauth bug, and have submitted a pull request to fix it here:
https://github.com/pennersr/django-allauth/pull/3548
Patch also included below.
--Jered
--- a/allauth/socialaccount/helpers.py
+++ b/allauth/socialaccount/helpers.py
@@ -205,7 +205,7 @@ def _add_social_account(request, sociallogin):
def complete_social_login(request, sociallogin):
assert not sociallogin.is_existing
- sociallogin.lookup()
+ sociallogin.lookup(request)
try:
get_adapter().pre_social_login(request, sociallogin)
signals.pre_social_login.send(
--- a/allauth/socialaccount/models.py
+++ b/allauth/socialaccount/models.py
@@ -274,12 +274,12 @@ class SocialLogin(object):
return False
return get_user_model().objects.filter(pk=self.user.pk).exists()
- def lookup(self):
+ def lookup(self, request=None):
"""Look up the existing local user account to which this social login
points, if any.
"""
if not self._lookup_by_socialaccount():
- provider_id = self.account.get_provider().id
+ provider_id = self.account.get_provider(request).id
if app_settings.EMAIL_AUTHENTICATION or app_settings.PROVIDERS.get(
provider_id, {}
).get("EMAIL_AUTHENTICATION", False):
----- On Dec 6, 2023, at 3:21 PM, Mark Sapiro mark(a)msapiro.net wrote:
> On 12/6/23 11:00, Jered Floyd wrote:
>> > 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!
>
> For me, on a test installation with SITE_ID = 0, this only occurs at
> https://example.com/accounts/social/connections/
>
> Other URLs such as https://example.com/accounts/password/change/ and
> https://example.com/accounts/email/ do not throw this exception.
>
> Here's the code:
> ```
> def get_current(self, request=None):
> """
> Return the current Site based on the SITE_ID in the project's
> settings.
> If SITE_ID isn't defined, return the site with domain matching
> request.get_host(). The ``Site`` object is cached the first
> time it's
> retrieved from the database.
> """
> from django.conf import settings
>
> if getattr(settings, "SITE_ID", ""):
> site_id = settings.SITE_ID
> return self._get_site_by_id(site_id)
> elif request:
> return self._get_site_by_request(request)
>
> raise ImproperlyConfigured(
> '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."
> )
> ```
>
> I tried patching it from
> ```
> if getattr(settings, "SITE_ID", ""):
> ```
> to
> ```
> if getattr(settings, "SITE_ID", None) is not None:
> ```
> but that's even worse. It throws a bunch of
> "django.contrib.sites.models.Site.DoesNotExist: Site matching query does
> not exist." errors.
>
> Somehow, get_current is being called without a request object in the
> cases where it fails.
>
> --
> Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
> San Francisco Bay Area, California better use your sense - B. Dylan
>
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> Archived at:
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
>
> This message sent to jered(a)convivian.com
1 year, 4 months

[MM3-users] Re: New Mailman 3 installation issues
by sarah.hartt@ionica.ca
Hi Mark,
Yes, that is the installation guide that I used. The nginx logs are clear aside from what I have listed and the now resolved permission denied entries from prior to moving static assets.
I am getting new entries in the django logs.
/opt/mailman/web/logs/mailmanweb.log
ERROR 2021-05-18 20:08:38,893 3078109 django.request Internal Server Error: /accounts/login/
Traceback (most recent call last):
File "/opt/mailman/venv/lib64/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request)
File "/opt/mailman/venv/lib64/python3.6/site-packages/django/core/handlers/base.py", line 145, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/opt/mailman/venv/lib64/python3.6/site-packages/django/core/handlers/base.py", line 143, in _get_response
response = response.render()
File "/opt/mailman/venv/lib64/python3.6/site-packages/django/template/response.py", line 105, in render
self.content = self.rendered_content
File "/opt/mailman/venv/lib64/python3.6/site-packages/django/template/response.py", line 83, in rendered_content
return template.render(context, self._request)
File "/opt/mailman/venv/lib64/python3.6/site-packages/django/template/backends/django.py", line 61, in render
return self.template.render(context)
File "/opt/mailman/venv/lib64/python3.6/site-packages/django/template/base.py", line 171, in render
return self._render(context)
File "/opt/mailman/venv/lib64/python3.6/site-packages/django/template/base.py", line 163, in _render
return self.nodelist.render(context)
File "/opt/mailman/venv/lib64/python3.6/site-packages/django/template/base.py", line 936, in render
bit = node.render_annotated(context)
File "/opt/mailman/venv/lib64/python3.6/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/opt/mailman/venv/lib64/python3.6/site-packages/django/template/loader_tags.py", line 150, in render
return compiled_parent._render(context)
File "/opt/mailman/venv/lib64/python3.6/site-packages/django/template/base.py", line 163, in _render
return self.nodelist.render(context)
File "/opt/mailman/venv/lib64/python3.6/site-packages/django/template/base.py", line 936, in render
bit = node.render_annotated(context)
File "/opt/mailman/venv/lib64/python3.6/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/opt/mailman/venv/lib64/python3.6/site-packages/django/template/loader_tags.py", line 150, in render
return compiled_parent._render(context)
File "/opt/mailman/venv/lib64/python3.6/site-packages/django/template/base.py", line 163, in _render
return self.nodelist.render(context)
File "/opt/mailman/venv/lib64/python3.6/site-packages/django/template/base.py", line 936, in render
bit = node.render_annotated(context)
File "/opt/mailman/venv/lib64/python3.6/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/opt/mailman/venv/lib64/python3.6/site-packages/compressor/templatetags/compress.py", line 143, in render
return self.render_compressed(context, self.kind, self.mode, forced=forced)
File "/opt/mailman/venv/lib64/python3.6/site-packages/compressor/templatetags/compress.py", line 97, in render_compressed
return self.render_offline(context)
File "/opt/mailman/venv/lib64/python3.6/site-packages/compressor/templatetags/compress.py", line 82, in render_offline
'is the original content:\n\n%s' % (key, original_content))
compressor.exceptions.OfflineGenerationError: You have offline compression enabled but key "fa788b08b65fd318d68cfc5afebc18acd3e93cebffadb54d863572ad1754f368" is missing from offline manifest. You may need to run "python manage.py compress". Here is the original content:
<link rel="stylesheet" href="/static/hyperkitty/libs/fonts/icomoon/icomoon.css" type="text/css" media="all" />
<link rel="stylesheet" href="/static/hyperkitty/libs/fonts/droid/droid.css" type="text/css" media="all" />
<link rel="stylesheet" href="/static/django-mailman3/css/main.css" />
<link rel="stylesheet" type="text/x-scss" media="all" href="/static/hyperkitty/sass/hyperkitty.scss" />
SELinux is disabled and when installed via dnf in oracle 8 RHEL it was not creating the postgres user correctly so I used their repo directly to avoid having to do so manually. This was suggested by a much more experienced admin when she took a look at the guide after I encountered issues.
If there is anything else I can provide to help diagnose the issue please let me know. if there are specific tables that I can check to ensure that they are/are not being populated to rule out a DB related issue or anything else you would suggest I try I greatly appreciate any assistance.
Sarah
3 years, 11 months

[MM3-users]Re: Request for assistance for fresh install of Mailman 3.0.3 and Python 3.4
by Rubén Rivero Capriles
Thanks Mark for your time. I will follow your recommendation and try
mailman bundler again, with care so that new conflicts won't occur as
happened yesterday.
Mailman bundler docs, in the first paragraph, refer to combined
installation of GNU Mailman, Postotius, and Hyperkitty. Does that mean that
mailman.client will be installed later separately?
My CentOs 7 distribution does not offer python3.4.pip.
https://pypi.python.org/pypi/pip offers pip 8.1.2 in two versions:
Python Wheel pip-8.1.2-py2.py3-none-any.whl (md5, pgp)
Source pip-8.1.2.tar.gz (md5, pgp)
Which one should I choose?
I also notice that postfix is required. yum offers the following options:
pcp-pmda-postfix.x86_64 : Performance Co-Pilot (PCP) metrics for the
Postfix (MTA)
postfix.x86_64 : Postfix Mail Transport Agent
postfix-perl-scripts.x86_64 : Postfix utilities written in perl
postfix-sysvinit.noarch : SysV initscript for postfix
spamass-milter-postfix.noarch : Postfix support for spamass-milter
postgrey.noarch : Postfix Greylisting Policy Server
pypolicyd-spf.noarch : SPF Policy Server for Postfix (Python implementation)
sqlgrey.noarch : Postfix grey-listing policy service
Which of these options are useful? Which ones are unnecessary?
Again, thanks very much for your time and hope that the other subscribers
in this list find this thread adequate. Haven't found the link on our
distribution list profile settings for uploading an avatar.
Best regards,
Rubén Rivero Capriles
http://www.rubenrivero.net (blog global - español)
http://www.rroopstr.com (global blog - English)
http://www.riverocooper.com (art & mining)
Rubén Rivero Capriles
http://www.rubenrivero.net (blog global - español)
http://www.rroopstr.com (global blog - English)
http://www.riverocooper.com (art & mining)
2016-05-28 14:06 GMT-04:00 Mark Sapiro <mark(a)msapiro.net>:
> On 05/28/2016 09:51 AM, Rubén Rivero Capriles wrote:
> >
> > In order to avoid compatibility issues, I reinstalled CentOs 7.
> Firewalld, Apache and BIND are operational. I also installed Python 3.4 at
> http://www.codeghar.com/blog/install-latest-python-on-centos-7.html;
> however I understand that Python 2.7 is still available and am confused
> about usage of each version.
>
>
> Mailman 3 consists of several pieces. There is a core engine which is
> Python 3. The core does the basic email list management and exposes many
> options and settings via a RESTful API.
>
> There is also mailman.client which provides Python bindings for the REST
> API. This is Python 2.
>
> We also provide a web management UI, Postorius and an archiver,
> HyperKitty. These are Django applications and all of this is Python 2.
>
> There are other pieces as well.
>
>
> > I downloaded the tarball for mailman 3.0.3. I will greatly appreciate if
> you quickly let me know how to install it. I do not wish to use mailman
> bundler.
>
>
> This is only the core. You can install it with
>
> python3 setup.py install
>
> either in a python 3 virtualenv or not, but this will only give you the
> core.
>
> I suggest you see the docs at <http://docs.list.org/en/latest/>, and if
> you don't want to use bundler, see
> <https://wiki.list.org/DEV/SetupDevEnvironment>, although bundler is the
> recommended way to set up a working, non-development Mailman suite.
>
> In short, the core requires Python 3.4, most of the rest of the suite
> requires Python 2.7 because of dependencies not yet ported to Python 3.
>
> --
> Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
> San Francisco Bay Area, California better use your sense - B. Dylan
> _______________________________________________
> Mailman-users mailing list
> mailman-users(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>
8 years, 10 months

[MM3-users] Detectors and Bounces
by summersan@nclack.k12.or.us
Hello All,
I've recently upgraded a Mailman 3 server from Debian 10.12 to Debian 11.4 [1].
In that process, I've also upgraded Mailman 3 from version 3.3.4 to version 3.3.5. I think the following guide was originally used when setting up Mailman 3 on the present server: https://wiki.list.org/DOC/Howto_Install_Mailman3_On_Debian10 .
After that upgrade process, I've noticed that at least one `mailman` process and one `postgres` process were at something like 40 %CPU or higher for extended periods of time (seen using `top` command). Upon further inspection, and through some research online, it seemed like the issue might have to do with bounces (maybe not processing or something) [2][3][4][5][6][7][8].
In my logcheck logs, I was seeing this message multiple times a second:
`Running detector: <class 'flufl.bounce._detectors.dsn.DSN'>`
I ended up trying to clear out the `/opt/mailman/mm/var/queue/bounces` and `/opt/mailman/mm/var/locks` directories to see if that would help.
There seemed to be some sort of positive change, because the log message "spamming" seemed to decrease. The high %CPU for the `mailman` and `postgres` processes in question also seemed to go down over time. But the related `mailman` process would still run at a high %CPU from time to time. I tried checking the `mailman` process using `strace` at some point, but I didn't see an easily evident cause for what was going on—from what I remember, there was something about a "POLLIN" or something that kept looping. When I go to check the same `mailman` process with `strace` today, I just see occasional messages like this:
`select(0, NULL, NULL, NULL, {tv_sec=45, tv_usec=43171}) = 0 (Timeout)`
My Questions:
Is it normal to see large amounts of `Running detector: <class 'flufl.bounce._detectors.dsn.DSN'>` lines in logs?
Should there normally be other detectors listed in the logs beyond the `DSN` one?
If so, is there a setting I can change somewhere to make this happen?
For reference, I can only find one other logcheck log that shows a `Running detector: <class 'flufl.bounce._detectors.dsn.DSN'>` line from before the recent Mailman 3 upgrade. In that past logcheck log, there are other detectors listed as well, which makes me wonder if something is still stuck with the new Mailman 3 install (or if maybe something needs to be changed in a setting file somewhere):
Here is an example of previous log lines:
Running detector: <class 'flufl.bounce._detectors.sina.Sina'>
Running detector: <class 'flufl.bounce._detectors.llnl.LLNL'>
Running detector: <class 'flufl.bounce._detectors.exim.Exim'>
Running detector: <class 'flufl.bounce._detectors.qmail.Qmail'>
Running detector: <class 'flufl.bounce._detectors.exchange.Exchange'>
Running detector: <class 'flufl.bounce._detectors.netscape.Netscape'>
Running detector: <class 'flufl.bounce._detectors.dsn.DSN'>
Running detector: <class 'flufl.bounce._detectors.caiwireless.Caiwireless'>
Running detector: <class 'flufl.bounce._detectors.aol.AOL'>
Running detector: <class 'flufl.bounce._detectors.yale.Yale'>
Running detector: <class 'flufl.bounce._detectors.smtp32.SMTP32'>
Running detector: <class 'flufl.bounce._detectors.groupwise.GroupWise'>
Running detector: <class 'flufl.bounce._detectors.simplewarning.SimpleWarning'>
Running detector: <class 'flufl.bounce._detectors.microsoft.Microsoft'>
Running detector: <class 'flufl.bounce._detectors.postfix.Postfix'>
Running detector: <class 'flufl.bounce._detectors.simplematch.SimpleMatch'>
Running detector: <class 'flufl.bounce._detectors.yahoo.Yahoo'>
Thank you for your time,
Andy
-----
Web References:
[1] https://www.debian.org/News/2022/2022032602
[2] https://mail.python.org/archives/list/mailman-developers@python.org/thread/…
[3] https://phabricator.wikimedia.org/T282348
[4] https://mail.python.org/archives/list/mailman-users@python.org/thread/MISUM…
[5] https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/thread/…
[6] https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
[7] https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/thread/…
[8] https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/thread/…
2 years, 8 months

[MM3-users] Re: Migration failure (2.1.29 to 3.3.8 on Debian testing)
by Odhiambo Washington
On Wed, Jun 7, 2023 at 10:36 PM {16/7} <acc(a)hexadecagram.org> wrote:
> Hello,
>
> I have both the mailman and mailman3-full packages installed on my machine
> and I'm following the migration guide located here:
> https://docs.mailman3.org/en/latest/migration.html
>
> Running the command { mailman import21 mylist(a)mysite.com
> /var/lib/mailman/lists/mylist/config.pck } completes once I create the list
> but states that it cannot convert the msg_footer and digest_footer mailing
> list attributes. (I might also point out that the { mailman create
> mylist(a)mysite.com } command isn't actually documented on that webpage.)
>
> I can't seem to find the manage.py script in my $PATH and after searching,
> I find it as part of the mailman3-web package. When I run { sudo -H -u list
> python manage.py hyperkitty_import mylist(a)mysite.com
> /var/lib/mailman/archives/private/mylist.mbox/mylist.mbox }, it fails with
> "ImportError: No module named django.core.management".
>
> If I run the script directly as { sudo -H -u list
> /usr/share/mailman3-web/manage.py ... }, I get "PermissionError: [Errno 13]
> Permission denied: '/usr/share/mailman3-web/settings_local.py'".
>
> By default, settings_local.py's group is www-data, and not knowing where
> to go next, I decided to try changing that file's group to list. When I
> re-ran the command (as user list), I got a Python traceback that gives
> "PermissionError: [Errno 13] Permission denied:
> '/var/log/mailman3/web/mailman-web.log'".
>
> Next, I changed the file's group back to list and decided to try running
> the manage.py script as the www-data user. This results in
> "/usr/lib/python3/dist-packages/django_q/conf.py:139: UserWarning: Retry
> and timeout are misconfigured." and "System check identified some issues:"
> followed by a list of "Auto-created primary key used when not defining a
> primary key type, by default 'django.db.models.AutoField'" warnings for a
> number of Django tables. At the end of this list is "CommandError: The list
> address must be given on the command-line". But it *was* given.
>
Without using the recommended installation method, helping you is gonna be
some effort!
That recommended method is detailed at:
https://docs.mailman3.org/en/latest/install/virtualenv.html#virtualenv-inst…
My questions are:
>
> 1. How do I undo any damage (if any) my efforts may have caused?
>
You should not be worried so much because the Mailman3 confusion does not
mess up your Mailman2.x install at all. If anything, I suppose just
changing ownership of Mailman2.x files back to list:list should get
Mailman2.x running.
2. What's the correct way to run manage.py?
>
Use the recommended installation method:
https://docs.mailman3.org/en/latest/install/virtualenv.html#virtualenv-inst…
.
Then from the virtualenv, you can migrate lists as follows:
1. Create the list: mailman create listname@domain
2. Import settings: mailman import21 listname@domains
/path/to/lists/listname/config.pck
3. Import archives: mailman-web hyperkitty_import -l listname@domain
/path/to/archives/private/listname.mbox/listname.mbox # This can take long,
if your archives are big
4. Reindex the archives: mailman-web update_index_one_list listname@domain
# This too can take long!
PS: You are right about migration. I have looked at
https://docs.mailman3.org/en/latest/migration.html and it really does not
to be updated to conform with the latest recommended documentation.
Don't worry, we all went through that difficult process. You will make it.
--
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]
1 year, 10 months

[MM3-users] Re: No emails distributed after mail received for a new list following https://docs.list.org/en/latest/install/virtualenv.html on new mailman3 Debian 12 installation
by Stephen J. Turnbull
Philip Bondi writes:
> I've never used the REST api before. I don't think it's working,
> yet, for me.
It pretty clearly is running and basically working.
> So I don't know how to dump my queues.
"Queues" in Mailman usually refers to email messages being processed.
As the name suggests, they are processed as soon as possible and in
order. You appear to be looking at the request pools, which aren't
queues: they are processed at any time and in any order an
administrator chooses to.
I don't think you need to be using mailmanclient for this problem.
First you should recheck the "held posts" on that list. Setting a
delivery option on the address does not release the held post, only
future posts are affected. You must *also* accept that post
explicitly to release it for delivery.
Second, you should check smtp.log. I believe it by default records
the LMTP connection setup and close for incoming messages (at least it
does on my own site), it records the number of recipients of the
distribution, and certain other events (if a subscriber bounces the message).
If that is not the situation, what Mark suggessted is to look in the
message queues, which are stored in the queue directories under
/opt/mailman/mm/var/queue. Files being currently processed by the
associated queue runner have the extension .bak. You can ignore
those, they will disappear within a few seconds (unless the list has
hundreds of subscribers). Files waiting to be processed have the
extension .pck. You can examine their content with "mailman qfile
path/to/queue/file.pck".
You're looking for files in queue/shunt or queue/bad (which indicates
some problem that makes that message require operator intervention
before they can be delivered) and files older than a few minutes in
queue/out or queue/in (which Mailman believes it can deliver but for
some reason are "stuck" in the queue).
In case none of that helps, some advice on mailmanclient usage:
> Here's my first try:
>
> (venv) mailman@shackleton12:~$ mailman info
> GNU Mailman 3.3.10 (Tom Sawyer)
> Python 3.11.2 (main, Nov 30 2024, 21:22:50) [GCC 12.2.0]
> config file: /etc/mailman3/mailman.cfg
> db url: postgresql://mailman:PASSWORDSNIPPED@localhost/mailman
> devmode: DISABLED
> REST root url: http://localhost:8001/3.1/
> REST credentials: restadmin:restpass
This all looks normal, except you should change the REST credentials.
> (venv) mailman@shackleton12:~$ python
> Python 3.11.2 (main, Nov 30 2024, 21:22:50) [GCC 12.2.0] on linux
> Type "help", "copyright", "credits" or "license" for more information.
> >>> from mailmanclient import Client
> >>> client = Client('http://localhost:8001/3.1', 'restadmin', 'restpass')
You can do this, but I find 'mailman shell' more convenient most of
the time. See
https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/docs/insta…
> >>> dump(client.system)
If you have omitted nothing you did, there is no "dump" function in
that environment. (I don't think one exists at all.) You need to
import such helpers. See
https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/rest/docs/…
Many examples of usage are here:
https://docs.mailman3.org/projects/mailmanclient/en/latest/src/mailmanclien…
All of the information you present from the site or logs looks
normal. So you should look at the more superficial data (on-disk
queues, the held messages, etc) first, and worry about poking around
with the internals (mailman shell, mailmanclient, REST API) later.
Steve
4 weeks

[MM3-users] multiple sites on a mailman3 server question
by William Oliver
So, I have successfully installed mailman3 and it's working great.
However, the way it works now, if someone goes to the domain website,
he or she will get the mailman page. I'd prefer that it work something
like:
My
www.example.com goes to a home page
lists.example.com goes to the mailman3 page
mail.example.com goes to a roundcube page
I'm using nginx, and this is the first time I've set up an nginx server
(I have traditionally done apache), and I'm still figuring out the
syntax.
My sites-available file is below, for the domain emergenus.com.
The behavior I'm getting is that if I go to mail.emergenus.com, it
still redirects to mail.emergenus.com/mailman3/lists, but gives a 404
page not found.
If I go to lists.emergenus.com, it redirects to
lists.emergenus.com/mailman3/lists and gives the nice postorius page,
and works fine.
So, I'm trying to figure out how to stop that redirect.
When I look at my nginx access.log file for mail.emergenus.com, I see:
174.212.104.153 - - [28/Dec/2021:21:03:21 -0500] "GET /mailman3/lists/
HTTP/1.1" 404 188 "-" "Mozilla/5.0 (X11; Linux x86_64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93
Safari/537.36"
Aha! says I. My ip address is 203.159.80.234, not 174.212.104.153.
Thus, uwsgi (I think) is sneaking in there and taking over regardless
of what I'm trying to do.
Is there a way to tell mailman to only take over for
lists.emergenus.com and not for www.emergenus.com or
mail.emergenus.com?
Here's my uwsgi.ini (without then env= PYTHONPATH change discussed in
another thread:
# /etc/mailman3/uwsgi.ini
#
[uwsgi]
# Port on which uwsgi will be listening.
http-socket = 0.0.0.0:8000
# If running uwsgi from the virtual environment ...
virtualenv = /opt/mailman/venv/
module=mailman_web.wsgi:application
# Add to python import path.
pythonpath = /etc/mailman3/
# The default settings module.
env = DJANGO_SETTINGS_MODULE=settings
# Setup default number of processes and threads per process.
master = true
processes = 2
threads = 2
# Setup the django_q related worker processes.
attach-daemon = /opt/mailman/venv/bin/mailman-web qcluster
# Setup the request log.
req-logger = file:/opt/mailman/web/logs/uwsgi.log
# Log qcluster commands separately.
logger = qcluster file:/opt/mailman/web/logs/uwsgi-qcluster.log
log-route = qcluster uwsgi-daemons
# Last log and it logs the rest of the stuff.
logger = file:/opt/mailman/web/logs/uwsgi-error.log
Here's my /etc/nginx/sites-enabled/emergenus.com looks like:
server {
root /var/www/html2;
index index.html index.htm index.nginx-debian.html;
server_name emergenus.com, mail.emergenus.com,
www.emergenus.com;
location /{
try_files $uri $uri/ =404;
}
##### added 12/19
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
##########
ssl_certificate /etc/letsencrypt/live/emergenus.com/fullchain.pem;
# managed by Certbot
ssl_certificate_key
/etc/letsencrypt/live/emergenus.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by
Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name lists.emergenus.com;
location /{
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
# proxy_set_header X-Forwarded-For
$proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
}
listen 443 ssl ;
listen [::]:443 ssl ;
location /static/ {
alias /opt/mailman/web/static/;
}
##########
ssl_certificate /etc/letsencrypt/live/emergenus.com/fullchain.pem;
# managed by Certbot
ssl_certificate_key
/etc/letsencrypt/live/emergenus.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by
Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = mail.emergenus.com) {
# return 301 https://$host$request_uri;
return 301 https://mail.emergenus.com;
} # managed by Certbot
if ($host = www.emergenus.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
if ($host = lists.emergenus.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80 ;
listen [::]:80 ;
server_name www.emergenus.com lists.emergenus.com
mail.emergenus.com emergenus.com;
return 404; # managed by Certbot
}
Thanks
billo
3 years, 3 months

[MM3-users] Re: New year releases!
by Dan Caballero
Thanks Mark. The migration completes after I updated the curls.py file.
I do see some warnings...
"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'."
2 years, 3 months

[MM3-users] Re: Set member.moderation_action via REST API as part of message approval?
by Mark Sapiro
On 3/3/25 14:27, Andy Matthews wrote:
> We're using Mailman 3.3.9.
>
> Entity<Form> data = Entity.entity(form, MediaType.APPLICATION_FORM_URLENCODED_TYPE);
> response = getTarget().path("lists/" + listId + "/config").request().method("PATCH", data);
You are patching the list's config and with that patch you are replacing
the old value of `accept_these_nonmembers` with the new, not appending
the new value. You would need to retrieve the existing value, update it
and PATCH that.
However, as you know, that setting is deprecated and exists only to
support the regexp and @list type of entries. For explicit email
addresses, the intent is to create a nonmember and set the nonmember's
moderation_action to `defer` - you normally don't want `accept` because
that bypasses all the subsequent checks such as administrivia,
implicit-dest, max_recipients, max_size, , no_subject, etc.
> The result of these two API calls is that both the subscribers and nonmembers properties of the mailing list are updated to include the new email (let's call it abc(a)123.com) The user can immediately send another email which is not held for moderation. The issue comes when a different nonmember sends an email and is approved (let's call it xyz(a)789.com) For some reason this blows out the "always accept" status of user abc(a)123.com and requires their email to be approved again.
>
> After some research I believe this is because the `accept_these_nonmembers` property has been deprecated (which seems valid because that property remains an empty array). Additional reading seems to indicate that we can now set `moderation_action` on each individual user which supercedes the mailing list's `default_nonmember_action` property (in our case it is `Action.hold`).
That is correct, and that is the intended way to deal with nonmember
moderation.
> The docs indicate that I should be able to submit a patch request to update the moderation action for any user:
> https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/rest/docs/…
>
> But it requires the user ID. And when trying to get the user_id for a nonmember it appears that it is not returned by the API. The following call:
> `/3.0/addresses/abc(a)123.com`
>
> returns
> ```
> {
> "email": "abc(a)123.com",
> "original_email": "abc(a)123.com",
> "registered_on": "2025-03-03T19:18:35.169703",
> "self_link": "https://0.0.0.0:8001/3.0/addresses/abc@123.com",
> "http_etag": "\"92c44d0b3b323450f3576e6352acb59b4cc5d6f0a\""
> }
> ```
> So I'm not sure how I would be able to update this particular record without a member or user id.
>
> So, all that said, I'm looking for information on how to do one of the following.
>
> 1. When submitting a user's email to the `accept_these_nonmembers`, is there a way to indicate that the `member.moderation_action` should be a specific value?
No. You can put the email in the appropriate *_these_nonmembers, but
that does only that. It doesn't affect the nonmember's
moderation_action, nor does it create a nonmember if there isn't one
already, but if there is a nonmember with non-None moderation_action,
that action takes precedence over *_these_nonmembers.
> 2. Retrieve a nonmember record and have it include a member or user id that I can use to explicitly update the `member.moderation_action` value?
You must be able to set a nonmember's moderation_action via REST. (The
docs may need updating.) Postorius does it, so it can be done, but I
don't offhand know the endpoint and I'm leaving the country for vacation
tomorrow and don't have time to research it.
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
1 month, 2 weeks

[MM3-users] Re: HyperKitty misreporting statistics
by Abhilash Raj
On Thu, Aug 24, 2017, at 10:09 AM, Abhilash Raj wrote:
> On Thu, Aug 24, 2017, at 09:42 AM, Cameron Smith wrote:
> > Abhilash,
> >
> > I think the location of the message, in the error log, is correct: in the
> > uwsci-cron.log, the entries show that the “minutely” jobs run for 32-33
> > seconds, whereas the entries in the error log show the jobs as running
> > for only 2 seconds, suggesting an error. (As an aside, what is “minutely”
> > doing that takes 32-33 seconds?)
Just as an FYI, my test server running the container images also has
minutely jobs taking 2 seconds and older entries in uwsgi-cron.log being
32-33 seconds.
Note that this change in time could be something that was changed in
Hyperkitty 1.1.1, I haven't yet read the changelog to infer that part
yet. Since this problem started happening once you upgraded to 0.1.1
images, which use HK 1.1.1.
>
> Yeah, if there are no entries going to uwsgi-cron at all, it looks like
> there is some configuration problem in log routing. T this[1] is the
> uwsgi configuration that is supposed to route the cron related logs to
> uwsgi-cron.log.
>
> Also, I am not exactly sure of what jobs run "minutely", [2] is the
> place where all of them are defined if you want to dive in yourself.
> Jobs (class) have a method "when" which defines when they run like
> "hourly", "daily" etc.
>
> [1]:
> https://github.com/maxking/docker-mailman/blob/master/web/mailman-web/uwsgi…
> [2]: https://gitlab.com/mailman/hyperkitty/tree/master/hyperkitty/jobs
>
> > How best can I diagnose the problem? If need be, I can simply tear down
> > the whole system, including deleting /opt/mailman on the host, start
> > again and see if the problem persists. I think it would, however, be more
> > helpful if we could figure out what has gone wrong.
>
> I am not sure what exactly is the problem, opening an issue with
> Hyperkitty[3] might be worth it to see if the devs have ideas about it.
> If this is a problem with Hyperkitty, I'd assume it would also be
> visible on the archives on this list, which runs on Mailman 3 (and not
> using containers AFAIK).
>
>
> [3]: https://gitlab.com/mailman/hyperkitty/issues
> >
> > > On 2017.08.20, at 14:34 , Abhilash Raj <maxking(a)asynchronous.in> wrote:
> > >
> > > On Sun, 20 Aug 2017 08:38:53 -0700
> > > Cameron Smith <ccsmith(a)cetsi.com> wrote:
> > >
> > >> Hmm… something is definitely not right.
> > >>
> > >> /opt/mailman/web/logs/uwsgi-cron.log has not been updated since Aug 11, which is when I installed the container images 0.1.1. However, /opt/mailman/web/logs/uwsg-error.log is being updated every minute with entries similar to this:
> > >>
> > >> Sun Aug 20 13:40:00 2017 - [uwsgi-cron] running "./manage.py runjobs minutely" (pid 123)
> > >> [uwsgi-cron] command “./manage.py runjobs minutely" running with pid 123 exited after 2 second(s)
> > >
> > >
> > > This seems like a bug in the uwsgi configuration, it should actually go to
> > > uwsgi-cron.log. I have opened a new bug[1] to track this problem.
> > >
> > > [1]: https://github.com/maxking/docker-mailman/issues/119
> > >
> >
> >
> > Cameron Smith
>
>
> --
> Abhilash Raj
> maxking(a)asynchronous.in
> _______________________________________________
> Mailman-users mailing list
> mailman-users(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
--
Abhilash Raj
maxking(a)asynchronous.in
7 years, 7 months

[MM3-users] Re: config incoming email in my domain cpanel
by Rafael Mora
Hello!
Just to let you know, the problem with the email reception was that I was
thinking that the email was coming from my hostgator panel, but I was
wrong, it's coming from Google (as I use gmail) so that was the problem, I
have to open the port 25 to any computer not just my hostgator server..
Have a great day. Bye.
On Thu, Aug 3, 2017, 16:25 tlhackque via Mailman-users <
mailman-users(a)mailman3.org> wrote:
> On 03-Aug-17 17:14, Rafael Mora wrote:
> >
> >
> > El jue., 3 ago. 2017 a las 16:07, tlhackque via Mailman-users
> > (<mailman-users(a)mailman3.org <mailto:mailman-users@mailman3.org>>)
> > escribió:
> >
> > You've said you're working with labbrands.com <http://labbrands.com
> >.
> >
> > labbrands.com <http://labbrands.com> has address
> 192.185.51.89
> > mail.labbrands.com <http://mail.labbrands.com> has address
> > 192.185.51.89
> > www.labbrands.com <http://www.labbrands.com> is an alias for
> > labbrands.com <http://labbrands.com>.
> >
> > telnet proves that Exim is running on that IP address. Either you're
> > running it, or hostgator is redirecting the SMTP ports.
> >
> > You added:
> > lists.labbrands.com <http://lists.labbrands.com> has address
> > 190.145.27.66
> >
> > Presumably that's a different machine.
> >
> > So that now needs an MX record, and a firewall routing.
> >
> >
> > I added the MX record on our hostgator hosting like this:
> > image.png
> >
> > Is it correct???
> >
> No. And sending images to the mailing list doesn't get you help.
>
> You set up lists.labbrands.com as a secondary server, not an independent
> mail domain. This will cause you serious grief.
>
> You need to get some help from a more suitable list. Setting this up is
> not mailman-specific, and getting it right is more than a quick note.
>
> Try the Postfix documentation & mailing lists.
>
> >
> >
> > And the SPF
> > records ... and spam and virus filters, and all the other stuff
> > you need
> > to setup an independent, public-facing smtp server.
> >
> > But at least you won't have to relay.
> >
> > Good luck.
> >
> > On 03-Aug-17 16:55, Rafael Mora wrote:
> > > El jue., 3 ago. 2017 a las 15:49, tlhackque via Mailman-users (<
> > > mailman-users(a)mailman3.org <mailto:mailman-users@mailman3.org>>)
> > escribió:
> > >
> > >> I think you're confused.
> > >>
> > >> You already have mail.labbrands.com <http://mail.labbrands.com>
> > set up as the MX record for
> > >> labbrands.com <http://labbrands.com>. And it has an A record
> > with the same address as your
> > >> webserver.
> > >>
> > > I'm working with the hostgator mailserver, we are not running a
> > local
> > > mailserver.
> > >
> > > As suggested I added an A record like this:
> > > [image: image.png]
> > >
> > > Is it correct? is it redirecting to my Ip so I can redirect it to
> my
> > > postfix/mm3 server?
> > >
> > >
> > >> So if you're getting e-mail on that domain, there's another e-mail
> > >> server running on that IP address. You can't have 2 servers
> > on port
> > >> 25. In that case, as has been noted before, you'll need to setup
> a
> > >> relay in that server, not a firewall redirect. Depending on
> > your MTA,
> > >> you would need to relay to your internal server. And make sure
> > your
> > >> firewall setup allows your MTA to do this.
> > >>
> > >> We can see it's EXIM:
> > >>
> > >> telnet mail.labbrands.com <http://mail.labbrands.com> 25
> > >> Trying 192.185.51.89...
> > >> Connected to mail.labbrands.com <http://mail.labbrands.com>
> > (192.185.51.89).
> > >> Escape character is '^]'.
> > >> help
> > >> 220-gator4137.hostgator.com
> > <http://220-gator4137.hostgator.com> ESMTP Exim 4.87 #1 Thu, 03
> > Aug 2017 15:47:48
> > >> -0500
> > >> 220-We do not authorize the use of this system to transport
> > unsolicited,
> > >> 220 and/or bulk e-mail.
> > >> 214-Commands supported:
> > >> 214 AUTH STARTTLS HELO EHLO MAIL RCPT DATA NOOP QUIT RSET HELP
> > >> quit
> > >> 221 gator4137.hostgator.com <http://gator4137.hostgator.com>
> > closing connection
> > >> Connection closed by foreign host.
> > >>
> > >> Or, consolidate all your e-mail to one server - which is a lot
> > easier to
> > >> manage unless you have a really big operation. Postfix is
> > probably the
> > >> right choice, but requires more setup.
> > >>
> > >> Although Mailman3 configuration is not well documented (as you've
> > >> discovered), you may want to get help from someone with more
> > general
> > >> network and mail experience. You're now into territory that is,
> as
> > >> Simon indicated, not Mailman-specific.
> > >>
> > >> On 03-Aug-17 16:28, Rafael Mora wrote:
> > >>> El jue., 3 ago. 2017 a las 15:26, Mark Sapiro
> > (<mark(a)msapiro.net <mailto:mark@msapiro.net>>)
> > >> escribió:
> > >>>> On 08/03/2017 01:22 PM, Rafael Mora wrote:
> > >>>>> El jue., 3 ago. 2017 a las 15:18, Mark Sapiro
> > (<mark(a)msapiro.net <mailto:mark@msapiro.net>>)
> > >>>> escribió:
> > >>>>>> You need to forward port 25 for SMTP mail delivery and if
> > you want the
> > >>>>>> web UI (Postorius and HyperKitty) accessible from the
> > outside, port 80
> > >>>>>> for http and/or port 443 for https
> > >>>>>> <
> > >>>>>>
> > >>
> >
> https://www.iana.org/assignments/service-names-port-numbers/service-names-p…
> > >>>>>>> .
> > >>>>> I mean for incoming mail redirected from my hostgator
> > hosting, because
> > >>>> when
> > >>>>> I suscribe an email address MM3 sends a confirmation email,
> > so I have
> > >> to
> > >>>>> reply to be suscribed to the list.
> > >>>> As I said, for mail delivery you need to forward port 25 to
> > the Mailman
> > >>>> server.
> > >>>>
> > >>> Ok so I'll redirect in my zentyal firewall the port 25 to my
> local
> > >> centos7
> > >>> with postfix and MM3 with IP 192.168.1.42. Thanks Mark.
> > >>>
> > >>>
> > >>>> --
> > >>>> Mark Sapiro <mark(a)msapiro.net <mailto:mark@msapiro.net>>
> > The highway is for gamblers,
> > >>>> San Francisco Bay Area, California better use your sense -
> > B. Dylan
> > >>>> _______________________________________________
> > >>>> Mailman-users mailing list
> > >>>> mailman-users(a)mailman3.org <mailto:mailman-users@mailman3.org>
> > >>>>
> >
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> > >>>>
> > >> --
> > >> This communication may not represent my employer's views,
> > >> if any, on the matters discussed.
> > >>
> > >> _______________________________________________
> > >> Mailman-users mailing list
> > >> mailman-users(a)mailman3.org <mailto:mailman-users@mailman3.org>
> > >>
> >
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> > >>
> >
> > --
> > This communication may not represent my employer's views,
> > if any, on the matters discussed.
> >
> > _______________________________________________
> > Mailman-users mailing list
> > mailman-users(a)mailman3.org <mailto:mailman-users@mailman3.org>
> >
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> >
> > --
> >
> > Atentamente / Best Regards
> >
> > Ing. Rafael Mora
> >
>
> --
> This communication may not represent my employer's views,
> if any, on the matters discussed.
>
> _______________________________________________
> Mailman-users mailing list
> mailman-users(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>
--
Atentamente / Best Regards
Ing. Rafael Mora
7 years, 8 months

[MM3-users] Mailman runners missing - nothing in logs
by Torge Riedel
Hi,
since migration from mailman2 to mailman3 I had twice the following, last time today:
When sending a mail to a list I get the following reply from postfix after a while:
connect to 127.0.0.1[127.0.0.1]:8024: Connection refused
Searched on that and found some posts, where the following shell command is named to check what is running:
ps -fwwu mailman
And I get this as output:
UID PID PPID C STIME TTY TIME CMD
mailman 1166 1 0 Jan07 ? 00:00:01 /opt/mailman/core/venv/bin/python3 /opt/mailman/core/venv/bin/master -C /opt/mailman/core/mailman.cfg
mailman 1180 1166 0 Jan07 ? 00:03:09 /opt/mailman/core/venv/bin/python3 /opt/mailman/core/venv/bin/runner -C /opt/mailman/core/mailman.cfg --runner=rest:0:1
mailman 1212 1180 0 Jan07 ? 00:01:10 /opt/mailman/core/venv/bin/python3 /opt/mailman/core/venv/bin/runner -C /opt/mailman/core/mailman.cfg --runner=rest:0:1
mailman 11039 11036 0 06:25 ? 00:00:03 /usr/bin/uwsgi-core --ini mailman3.ini
mailman 11064 11039 0 06:25 ? 00:00:00 /usr/bin/uwsgi-core --ini mailman3.ini
mailman 11065 11039 0 06:25 ? 00:00:01 /usr/bin/uwsgi-core --ini mailman3.ini
mailman 17257 1180 0 Jan12 ? 00:00:37 /opt/mailman/core/venv/bin/python3 /opt/mailman/core/venv/bin/runner -C /opt/mailman/core/mailman.cfg --runner=rest:0:1
Lots of expected runners are missing. After restarting the service the output of the same command is:
UID PID PPID C STIME TTY TIME CMD
mailman 11039 11036 0 06:25 ? 00:00:03 /usr/bin/uwsgi-core --ini mailman3.ini
mailman 11064 11039 0 06:25 ? 00:00:00 /usr/bin/uwsgi-core --ini mailman3.ini
mailman 11065 11039 0 06:25 ? 00:00:01 /usr/bin/uwsgi-core --ini mailman3.ini
mailman 14430 1 13 14:50 ? 00:00:01 /opt/mailman/core/venv/bin/python3 /opt/mailman/core/venv/bin/master -C /opt/mailman/core/mailman.cfg
mailman 14434 14430 18 14:50 ? 00:00:01 /opt/mailman/core/venv/bin/python3 /opt/mailman/core/venv/bin/runner -C /opt/mailman/core/mailman.cfg --runner=archive:0:1
mailman 14435 14430 20 14:50 ? 00:00:01 /opt/mailman/core/venv/bin/python3 /opt/mailman/core/venv/bin/runner -C /opt/mailman/core/mailman.cfg --runner=bounces:0:1
mailman 14436 14430 18 14:50 ? 00:00:01 /opt/mailman/core/venv/bin/python3 /opt/mailman/core/venv/bin/runner -C /opt/mailman/core/mailman.cfg --runner=command:0:1
mailman 14437 14430 17 14:50 ? 00:00:01 /opt/mailman/core/venv/bin/python3 /opt/mailman/core/venv/bin/runner -C /opt/mailman/core/mailman.cfg --runner=in:0:1
mailman 14438 14430 17 14:50 ? 00:00:01 /opt/mailman/core/venv/bin/python3 /opt/mailman/core/venv/bin/runner -C /opt/mailman/core/mailman.cfg --runner=lmtp:0:1
mailman 14439 14430 17 14:50 ? 00:00:01 /opt/mailman/core/venv/bin/python3 /opt/mailman/core/venv/bin/runner -C /opt/mailman/core/mailman.cfg --runner=nntp:0:1
mailman 14440 14430 19 14:50 ? 00:00:01 /opt/mailman/core/venv/bin/python3 /opt/mailman/core/venv/bin/runner -C /opt/mailman/core/mailman.cfg --runner=out:0:1
mailman 14441 14430 20 14:50 ? 00:00:01 /opt/mailman/core/venv/bin/python3 /opt/mailman/core/venv/bin/runner -C /opt/mailman/core/mailman.cfg --runner=pipeline:0:1
mailman 14442 14430 20 14:50 ? 00:00:01 /opt/mailman/core/venv/bin/python3 /opt/mailman/core/venv/bin/runner -C /opt/mailman/core/mailman.cfg --runner=rest:0:1
mailman 14443 14430 17 14:50 ? 00:00:01 /opt/mailman/core/venv/bin/python3 /opt/mailman/core/venv/bin/runner -C /opt/mailman/core/mailman.cfg --runner=retry:0:1
mailman 14444 14430 17 14:50 ? 00:00:01 /opt/mailman/core/venv/bin/python3 /opt/mailman/core/venv/bin/runner -C /opt/mailman/core/mailman.cfg --runner=virgin:0:1
mailman 14445 14430 18 14:50 ? 00:00:01 /opt/mailman/core/venv/bin/python3 /opt/mailman/core/venv/bin/runner -C /opt/mailman/core/mailman.cfg --runner=digest:0:1
So now back to good. I checked all the logs prior to restarting the service in directory /opt/mailman/var/log, but I do not see any errors. And the master was still running, I would expect that the master will start / restart a runner in case it died?
Fun fact: First time of this problem was two weeks from now, which was two weeks after migration to mailman3. I'm excited if it will happen in two weeks again.
Installed packages for core:
mailman (3.3.0)
mailman-hyperkitty (1.1.0)
Any suggestions where I should have a deeper look and maybe find the root cause of this problem?
Thanks in advance
Torge
5 years, 3 months

[MM3-users] Re: Pck files stuck in out queue
by Lieuallen, Thomas Otis
Mark,
You were (of course), absolutely on target, thank you!
I have a remaining issue that baffles me. With my test list, I created a template for ‘list:member:regular:header’. It just has text in it, keeping it simple. I create it and see the entries in the database tables and they are correct. However, when I send a test email, my template text is not inserted, but instead another simple text: “testing hello”. I do the same with list:member:regular:footer, and it works just fine. It is just the header that is working incorrectly. When I remove that postorius header template for the list, that ‘testing hello’ goes away. So, it’s only appearing when I have a postorius template setup for that list.
I have searched on the file system for any such templates and only see the default ones; all zero length files. There are no templates defined for the domain in postorius – but if there were, I’d expect to see that test header all the time.
I’m just baffled. Any clues?
I’m a relative newbie to mailman3. When I first set it up, I tried the postorius templates for the domain. They didn’t work (had to have been due to the POSTORIUS_TEMPLATE_BASE_URL being wrong. So, I scrapped that and went with templates in the file system.
Thank you
Tom Lieuallen
From: Mark Sapiro <mark(a)msapiro.net>
Date: Thursday, February 6, 2025 at 3:46 PM
To: mailman-users(a)mailman3.org <mailman-users(a)mailman3.org>
Subject: [MM3-users] Re: Pck files stuck in out queue
[This email originated from outside of OSU. Use caution with links and attachments.]
On 2/6/25 15:21, Lieuallen, Thomas Otis via Mailman-users wrote:
> Mark,
>
> There were no apparent permissions problems on templates. I was getting the ‘Cannot connect to SMTP server’ message in mailman.log.
>
> I did end up applying the patch to decorate.py and messages went through. I’ve since removed the patch, as I’m still looking for an answer and might as well let it queue up again.
Per the above, template access is definitely the problem.
> The only thing that is making me ponder at the moment is that the list owners setup a template for list:member:regular:footer in postorius. It appears that each list has a copy of that file. The modifications I see in postorius are not in their …/templates/list/<listname>/en/list:member:regular:footer.txt file. Are their modifications stored somewhere else and causing the problem?
Templates set in Postorius are stored in the database in the
postorius_emailtemplate table. At the same time an entry is made in the
template table with a uri to retrieve the template from a Postorius API.
The uri is something like
http(s)://host/mailman3/api/templates/list/LIST-ID/list:member:regular:footer
where the http(s)://host part is from the setting for
POSTORIUS_TEMPLATE_BASE_URL.
The issue is that uri is not retrievable probably because the setting
for POSTORIUS_TEMPLATE_BASE_URL is wrong.
You should look at the uris in the template table in the database and
figure out what they should be, probably by trying to retrieve one in a
browser with the scheme and host what you actually use to access
Postorius. Once you figure out what the correct uri is you can set
POSTORIUS_TEMPLATE_BASE_URL appropriately, but this won't fix the
existing template table entries. You can fix those manually in the
database or you can delete and recreate the templates in Postorius after
fixing POSTORIUS_TEMPLATE_BASE_URL and restarting the Mailman web service.
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
_______________________________________________
Mailman-users mailing list -- mailman-users(a)mailman3.org
To unsubscribe send an email to mailman-users-leave(a)mailman3.org
https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.mai…<https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/>
Archived at: https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.mai…<https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…>
This message sent to lieualth(a)oregonstate.edu
2 months, 2 weeks

[MM3-users] Re: Running customized version of Mailman 3
by tlhackque
On 03-Mar-20 15:08, Alan Kelm wrote:
> On 2/29/20 10:35 AM, tlhackque via Mailman-users wrote:
>> On 28-Feb-20 16:46, Alan Kelm wrote:
>>> Since 2005, our organization has been running a customized version of
>>> Mailman 2 with extensions that meet our particular needs. The main
>>> novelty is support for /fixed subscription lists/, in which the list
>>> members are predetermined (corresponding to a "committee"). Fixed list
>>> subscribers are not offered the opportunity to unsubscribe, nor can
>>> others add themselves to the list. A further enhancement is /hybrid
>>> lists/ which, for example, have both a fixed and opt-in part. (This is
>>> implemented as a fixed list residing within an opt-in one in a way which
>>> is transparent to users). Our customizations consist of code
>>> adjustments (patches) to 23 files.
>> FWIW: When I had similar requirements (MM2), I found it most convenient to populate the "fixed" list with a distribution list name. The distribution list was sourced from an LDAP group. That allowed the distribution to be populated based on job title, reporting relationship, committee membership - whatever.
>>
>> On the Mailman side, it's only one member (the distribution list) that had special treatment. Opt-in would be moderator approval, as was unsubscribe.
>>
>> But the moderator only had to remember the one "can't unsubscribe" name.
>>
>> That, or a variant might work for you - and probably can be done modifying fewer files... In minimal form, if you don't want to rely on a human, it seems like the minimal implementation is a "can't unsubscribe" bit for users and an admin interface to set it. You could also cause that user to have a different "language" - e.g. en-ZZ; then adjust the templates for that "language" to remove references to "unsubscribe". That's not functionally necessary - but prettier.
>>
> Thank you for explaining the approach which you took for making a hybrid
> list with both opt-in and "fixed" components. Including the address of
> the fixed distribution list as a single subscriber within the opt-in
> list sounds completely analogous to what we did. Our mechanism for
> identifying a fixed list was essentially a "can't unsubscribe" bit as
> you describe. Rather than using a separate language template without
> unsubscribe links for fixed lists, we did some coding to suppress that
> portion of the template for fixed lists.
>
> It certainly is nice that Mailman comes with source code and plenty of
> configuration options, so that special needs like this can be accommodated.
>
I meant to also mention that basing the 'fixed' subscriber on LDAP also
imported the LDAP permissions mechanisms. So control of who's in and who's
out can be limited, delegated, etc. And automated. (e.g. all 2nd level
reports of
the chief widget-counter.) Assuming you have an LDAP directory :-) In any
case, these groups tend to be maintained for other purposes (e.g. file
permissions,
purchasing authority, application access controls, etc). So keeping the
"fixed" list
maintenance external to Mailman can provide efficiencies - even reduce
errors.
The advantage of a language template is that fewer code changes are
required,
so upgrades are easier. Of course, you do have to maintain the modified
templates - there's a break-even point if you support a lot of
languages. But
since you're simply deleting subscription-related text, it's a lot less
error-prone
than patching code.
But the best solution in any given case will depend on local factors,
and open
source provides options.
Your mileage will vary.
5 years, 1 month

[MM3-users] Avoiding non-members to be saved.
by Stephen J. Turnbull
Guillermo Hernandez (Oldno7) via Mailman-users writes:
> Yesterday I had a problem with a private list. A spammer sent a mail
> forging one address that was a non-member (in fact was an "accept this
> no subscriber mails" from mailman 2.1 import) with very bad intentions
> and it was distributed.
If you upgrade from Mailman 2 to Mailman 3, the accept_these_nonmembers
list for each list is grandfathered into the Mailman 3 list (from
rules/moderation.py):
# Check the '*_these_nonmembers' properties first. XXX These are
# legacy attributes from MM2.1; their database type is 'pickle' and
# they should eventually get replaced.
for action_name in ('accept', 'hold', 'reject', 'discard'):
legacy_attribute_name = '{}_these_nonmembers'.format(
action_name)
> There were no list of "accept this non members" in the Postorius
> config
If there is no such list in Postorius, I would guess that some
developer thought "OK, this is a legacy feature and I'll get back to
it when we move it to the proper database" (unfortunate, but most of
us have open-subscription member-posts-only lists, and the current
workflow seems to work well, so this feature may not be so salient).
> I think it is solved now (deleting all and putting to hold just the
> non-members addresses that I would want to pass messages on)
This should not be necessary, unless there were pre-approved addresses
that are no longer appropriate. But Mailman can't know that!
> The fact is that any sender address of mails sent to the list is saved
> as a "non member", and it make me nervous as it will grow despite it is
> a legitimate message or not.
As far as I can see there is no other rule except that legacy rule
(and the rule that accepts all posts, which is rarely used) that will
accept a post from nonmembers.
> Anybody knows if there is a per list config to avoid saving all that
> addresses as non members? o a overall config?
No, there isn't, and there never will be. This is a basic design
decision about the representation of "people who participate in any
way in mailing lists". The only way to prevent creation of an Address
object for the sender of an email is to reject or discard the post (in
which case the "create an Address" path isn't entered), and don't set
a moderation action on the sender. Obviously if you set a moderation
action, that will create an Address in the database.
The problem you encountered is not preventable by any means
whatsoever: a malicious actor discovered an address that is allowed to
post. The specific case you're worried about, that nonmembers will
automatically be allowed to post, is not possible. The only way to
get on the list of "accept_these_nonmembers" is to be inherited from
accept_these_nonmembers on the parent Mailman 2 list, or an explicit
decision by a moderator.
The fact that this list is not exposed in Postorius is a bug, but I
can't say when it might be fixed. It appears that the current process
(the moderator can set the sender's persistent moderation action
separately from approving or rejecting a particular post) works fine,
since this is the first time I've heard of this issue, and as you
present it, Mailman is doing the best it can since Somebody Authorized
put that sender on the approved list in Mailman 2.
If a particular nonmember becomes a problem, you can access that
User or Address in Postorius and set them to Hold, Reject, or Discard.
The process of deleting all nonmembers has been more difficult than it
should be, but this is being fixed, IIRC in the next release.
Steve
3 years, 8 months

[MM3-users] Re: Mailman 3, postfix domains, and postgresql cannot authenticate user
by Odhiambo Washington
Going by the mailman.cfg you've presented, something is telling me that you
are not really following the guide at
https://docs.mailman3.org/en/latest/install/virtualenv.html. are you?
On Wed, Jul 3, 2024 at 7:23 PM Keith Christian via Mailman-users <
mailman-users(a)mailman3.org> wrote:
> ---------------------------------------------------------------------------
> 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
> 4
> 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 # 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 #
> ----------------------------------------------------------------------------------
> 21
> 22 [archiver.prototype]
> 23 enable: yes
> 24
> 25 # For the HyperKitty archiver.
> 26 [archiver.hyperkitty]
> 27 class: mailman_hyperkitty.Archiver
> 28 enable: yes
> 29 configuration: /opt/mailman3/mailman-hyperkitty.cfg
> 30
> 31 [shell]
> 32 history_file: $var_dir/history.py
> 33
> 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
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> Archived at:
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
>
> This message sent to odhiambo(a)gmail.com
>
--
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]
9 months, 2 weeks

[MM3-users] Re: Trying to configure a list (hosted)
by tokyoprogressive@mailbox.org
To Abilash Raj
Thank you for tour very clear comments.
I appreciate them.....
>
> That's right. Mailman is a mailing list manager and is primarily based around discussions using Emails. You can subscribe to mailing lists and send email to the list address, which then gets distributed to all the members. All the emails sent to the mailing lists are also archived usually in an archiver.
>
> The official archiver, a.k.a the one supported by us, also additionally supports posting to the mailing list via the Web interface. If anyone wants to use the web ui to post, they need to have an account and need to verify that they own the email address they are signing up with.
>
> Then, anything they post is sent as an email, on their behalf, to the mailing list and that's how you can get 2 ways to post.
>
> You don't need any account on the web interface if all you want is to post through email.
>
Great.The absence of a manual means a lot of guessing, which means I have to make a lot if test posts, but you have saved me a lit oftine. Thank you.
>
> It is slightly confusing, but let's separate sign-up into two terms and let me know if that is still confusing, "sign up to web interface", "subscribe to mailing list".
>
> - sign up to web interface: This is optional. This allows you, as an administrator to operate the mailing list and it's configuration. A user can sign up to the web interface and manage all the subscriptions they have, and also subscribe to mailing lists.
>
> - subscribe to mailing list: This is a user participating in a Mailing List. For this, they don't necessarily need to sign up via web interface as there are other ways to subscribe to a mailing list, like anonymous subscribe (which is your #2 above). Once they are subscribed, they are called "subscribers".
>
> Users will always have to "subscribe" before they can participate on a mailing list.
>
> There is currently no way to mandate "sign up on the web interface" for all "subscribers".
>
Thanks. This should definitely be in the manual and instructions to users.
So then, when I add my current subscribers from Dadamail, they will be anonymous unless they choose to sign up for the web interface?
>>
>
> If the archives are set to be private, only the "subscribers" can view the archives.
I think I have changed my thinking. Allowing everyone to view the archives will drive more people to my website and allow them to decide whether to sign up for the list and possibly subscribe to the interface.
>> Last, in my account settings what is the difference between a member
>> and a non member?
>
>
> "non-members" are people Mailman remembers who interacted with a MailingList in past. For example, I can ask an list owner to let my post through, without actually subscribing(because I don't want to get all the emails, just send a single email) by allowing me to be a "non-member" who is allowed to post.
Ok, got it. Now a person I import from my old dada mail list—-They are sign up for the list but do not yet have a sub to the web interface. That makes them anonymous I think, right? If so, once I add them I will not see them as members, right?
If so, doesn’t that mean they will not be exportable should I one day decide to move again? If so, I should keep that list.
Thanks a lot.
Paul
5 years, 7 months

[MM3-users] Re: Mailman backend maintenance task
by Eugenio Jordan (external)
Dear Robert.
Thanks so much for your prompt answer. I am afraid this is not
feasible, as this MTA is also serving other purposes, hence impacting
not only the messages addressed to distribution lists, but actually all
of them. Besides, we would not like to resort to relaying in mail
servers we do not control for retries, as they may have so
heterogeneous behaviours regarding how the subsequent attempts are
dealt.
I would you to also please confirm whether there is a way to stop just
Hyperkitty, or Django maintenance tasks. I would like you to please
confirm whether the runners need the backend available just to deliver
mails to the members of the distribution lists.
Many thanks for your time once more. Best regards.
-----"Robert Moody" <[1]robert(a)kneedrag.org> wrote: -----
To: [2]eugenio.jordan(a)esa.int
From: "Robert Moody" <[3]robert(a)kneedrag.org>
Date: 08/23/2021 06:09AM
Cc: [4]mailman-users(a)mailman3.org
Subject: Re: [MM3-users] Mailman backend maintenance task
A simple solution would be to stop the MTA in front of mailman. That is
assuming the MTA is only delivering to mailman and nothing else.
This would force any mails being sent during the maintenance to queue
up on the sending server and once the maintenance is done starting the
MTA will allow mails that were queued on the sending MTAs to get
delivered.
Downside is mails will be delayed based on the sending servers retry
settings.
Get [5]BlueMail for Android
On 23 Aug 2021, at 05:55, [6]eugenio.jordan(a)esa.int wrote:
Dear all.
My apologies if the answer to this question is obvious, but I am pretty
newbie for 3 version, and to be very honest I haven't had enough time
yet to have a deep look into the documentation.
Our customer is currently using PostGRESQL as backend, and we would
like to perform some maintenance tasks, namely running vacuum full, or
at least trying to rebuild hyperkitty_email primary key related index.
We have been asked on the real impact of putting in place such
initiative. Though the latter is related to archiving, I haven't found
a way to stop just Hyperkitty or Django related processes other than
stopping Mailman's core, hence preventing mails addressed to
distribution lists from being delivered, could you please confirm if I
am correct?
Regarding the former, as far as I have read, the "mappings" lists ->
addresses are stored just in the database, so if we run some kind of
procedure or task like vacuum which will lock exclusively tables, or
want anyway to have the database stopped for a cold backup or whatever,
Mailman willl not work, that is, again the mails addressed to the
distribution lists will not be delivered. Will you please confirm this
point, too?
Really wish we had a testing environment to have been able to check
this ourselves and not bothering others, but unfortunately we lack it,
and we need to provide an answer as soon as possible.
Thanks a lot for your time. Best regards.
__________________________________________________________________
Mailman-users mailing list -- [7]mailman-users(a)mailman3.org
To unsubscribe send an email to [8]mailman-users-leave(a)mailman3.org
[9]https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org
/
This message is intended only for the recipient(s) named above. It may contain p
roprietary information and/or
protected content. Any unauthorised disclosure, use, retention or dissemination
is prohibited. If you have received
this e-mail in error, please notify the sender immediately. ESA applies appropri
ate organisational measures to protect
personal data, in case of data privacy queries, please contact the ESA Data Prot
ection Officer (dpo(a)esa.int)
References
1. mailto:robert@kneedrag.org
2. mailto:eugenio.jordan@esa.int
3. mailto:robert@kneedrag.org
4. mailto:mailman-users@mailman3.org
5. https://bluemail.me/
6. mailto:eugenio.jordan@esa.int
7. mailto:mailman-users@mailman3.org
8. mailto:mailman-users-leave@mailman3.org
9. https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org
3 years, 8 months

[MM3-users] Cannot request password reset: "The e-mail address is not assigned to any user account"
by dave@aasv.org
I have set up Mailman Core Version GNU Mailman 3.3.5 with Mailman Core API Version 3.1 (Python 3.8.10) using the version 0.40 Docker images. I was able to get things set up and tested by requesting a password reset for the MAILMAN_ADMIN_USER specified in the docker.yaml.
Using the web API, I have created several mailing lists and I have added members to these lists also using the web API (most relevant: https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/rest/docs/…) specifying that each member is already pre_verified, pre_confirmed, and pre_approved. The lists themselves seem to be working fine.
The problem is when our staff try to reset their password (through Postorious) to get access and do moderation tasks. The error message "The e-mail address is not assigned to any user account" displays no matter which email address I enter (except the one from MAILMAN_ADMIN_USER which works). Using the MAILMAN_ADMIN_USER I can sign in, view the list of all the users, see their Addresses (one each) and Subscriptions, but even after toggling off "Verified" for the staff email address, clicking Update, then turning Verified back on and updating again, I still can't reset the password for that email address from the "forgot pasword" screen. Even tried adding that email address as another list owner.
I have not made any API calls specific to adding users because the API documentation says, "Since her email address is not yet known to Mailman, a user is created for her." This does seem to have happened; GET 127.0.0.1:8001/3.1/users does show everyone's display name and unique user_id strings.
I have tried using the API to PATCH a temporary password to the user but that didn't fix the inability to reset. The encrypted password does show in the /users/ data reported by the API (where previously there had been none), and a POST to users/<user_id>/login with that password return the 204 status shown to indicate success (instead of 403)... but I can't log in using Postorious with this user's email address and password. I also tried PATCHing the cleartext_password to /users/<email_address> and wasn't able to login or reset after that either.
According to the API, each of the users -- webadmin where I can reset the password and staff where I can't -- does have a single address. (In the following, I redacted the API username and password ; changed email addresses, and IP address. And the display name, but left the timestamps and user_ids )
$ curl --user xxxx:xxxx "127.0.0.1:8001/3.1/users/29bf1eef2ee14f39a7990757544f11a9/addresses"
{"start": 0, "total_size": 1, "entries": [{"email": "webadmin(a)example.com", "original_email": "webadmin(a)example.com", "registered_on": "2021-11-25T04:20:33.408184", "self_link": "http://1.2.3.4:8001/3.1/addresses/webadmin@example.com", "verified_on": "2021-11-25T04:20:33.960577", "user": "http://1.2.3.4:8001/3.1/users/29bf1eef2ee14f39a7990757544f11a9", "http_etag": "\"394c07148f3fd0479cc582358b63b919fd988e36\""}], "http_etag": "\"a6621373598d299c32aa946fef7e32167d796bf3\""}
$ curl --user xxxx:xxxx "127.0.0.1:8001/3.1/users/73235926306843ccb41f288d0464240a/addresses"
{"start": 0, "total_size": 1, "entries": [{"email": "staff(a)example.com", "original_email": "staff(a)example.com", "registered_on": "2021-12-15T02:25:24.055741", "self_link": "http://1.2.3.4:8001/3.1/addresses/staff@example.com", "display_name": "Staff Member", "verified_on": "2021-12-15T02:40:04.941153", "user": "http://1.2.3.4:8001/3.1/users/73235926306843ccb41f288d0464240a", "http_etag": "\"f24ba7ca9d71a7f814dc41d70c48ce947c1324be\""}], "http_etag": "\"e8d5b9f3ce0abbc7bbf51c03c69367f82679f93e\""}
I am probably missing something, but this second query seems to confirm that the address "staff(a)example.com" is assigned to the user 73235926306843ccb41f288d0464240a and so shouldn't I should be able to request a password reset for "staff(a)example.com"?
I've tried tailing all the log files I can find while attempting the reset and am not seeing any error messages, but I don't know exactly where to look.
Thank you for any suggestions for what to try next!
Dave
3 years, 2 months

[MM3-users] Re: Hyperkitty on Debian 12
by Markus Grandpré
short addendum: I was able to correct the following warnings when
performing database operations on the mailman-web database:
1)
/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.
2)
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'.
on our Debian 12 system in file </etc/mailman/mailman-web.cfg>:
1)
Q_CLUSTER = {
'orm': 'default',
'retry': 360,
'save_limit': 100,
'timeout': 300,
'worker': 2
}
2)
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
Best
Markus
Am 26.03.24 um 08:06 schrieb Markus Grandpré:
> Dear Mr Sapiro,
>
> thank you very much for your help. The required command is:
>
> # mailman-web hyperkitty_import \
> -l mailman21-migration-test-04(a)mailman.uni-konstanz.de \
> /var/mailman21/testlist.mbox
>
> Due to the following warnings, I still have to customize Hyperkitty:
>
> 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'.
> ...
>
> Can you give me another hint? As Linux admin I installed the packages
> mailman and mailman-web that were offered to me under Debian 12.
> Although during the installation of the packages user "list" was
> created, I cannot use it:
>
> # su - list
> This account is currently not available
>
> As with Mailman 2.1, I will probably have to continue working with
> Mailman3 as root. Too bad that there is no documentation for Debian
> admins like me, who don't want to dive too deep into the python
> framework. Or have I overlooked something?
>
> Best regards,
> Markus
>
>
>
> Am 25.03.24 um 18:56 schrieb Mark Sapiro:
>> On 3/25/24 07:58, Markus Grandpre wrote:
>>> 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
>>
>>
>> This depends on how you installed Mailman 3. You may or may not want
>> `python3 manage.py` at all. The required command could be something
>> like `django-admin` or `mailman-web`.
>>
>> Also the `#` prompt indicates you may be running as root. Mailman
>> related commands should be run as the Mailman user (could be `mailman`
>> or `list` or ... depending again on how you installed Mailman).
>> Running as root can create files owned by root that later can't be
>> read by the Mailman user.
>>
>
>
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> Archived at: https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
>
> This message sent to markus.grandpre(a)uni-konstanz.de
--
Markus Ludwig Grandpré
Universität Konstanz
Kommunikations-, Informations-, Medienzentrum (KIM)
Abteilung IT-Dienste Forschung und Lehre,
B803, Tel: ++49 7531 88 4342
1 year

[MM3-users] AWS SES and MM (was RE: Re: Docker or virtualenv?
by David Brown
I attempted to set up Amazon SES for our (paid) member-to-member veterinarian discussion list (run on mailman running on a Linode) and we were rejected automatically and again on appeal/explanation. (About 1000 members, fewer than 5 messages/day; can go weeks with no messages.) Mailing lists don't fit neatly into either "transactional" or "marketing" models and I suspect that because we weren't using their other services (unlike the blog you linked below) didn't help either.
If you get approved to use SES for MM delivery (or anyone else has been), I'd welcome hearing how people have successfully explained mailing lists to the (presumably) over-worked under-trained decision-making algorithms/employees at AWS.
Dave
--
David Brown, IT Specialist
dave(a)aasv.org
-----Original Message-----
From: Tim Cutts <tim(a)thecutts.org>
Sent: Saturday, December 31, 2022 9:24 AM
To: Stephen J. Turnbull <stephenjturnbull(a)gmail.com>
Cc: mailman-users(a)mailman3.org
Subject: [MM3-users] Re: Docker or virtualenv?
Sent from my iPhone
> On 31 Dec 2022, at 13:22, Stephen J. Turnbull <stephenjturnbull(a)gmail.com> wrote:
> Tim Cutts writes:
>
>> Has anyone considered whether it’s feasible to turn it into a bunch
>> of Lambda functions with a serverless database behind it?
>
> ... you just did. I'm not sure if "patches welcome" is appropriate
> for what looks to me to be a pretty radical idea, but someone could
> give it a try. :-)
>
> I don't think anybody in Mailman core has thought about it though. I
> don't really see the advantage for most sites.
Cost and simplifying security updates, principally. The more I think about it the more I suspect it would be too radical a re-write, and it would probably simpler to use Amazon’s SES to send the mail rather than a traditional MTA. People have done simple newsletter type lists this way (https://blog.marcolancini.it/2020/blog-serverless-mailing-list/) and they’re very cheap to run because there’s no permanently running infrastructure, and for smaller sites almost certain to sit within the free tier. Nowhere near as sophisticated in capabilities as Mailman, but easier to keep secure, since most of the underlying dependencies are gone. No operating system to patch, no database upgrades.
> Hosts, especially VMs,
> are cheap, and unless you're running the lists for a major university
> or the like, lowest tier hosts will do.
>
That was true until MM3. I had to double the size of VM I use when I went from MM2 to MM3. It’s still not huge, but you can’t easily run MM3 on a free tier VM on AWS any more, it needs too much RAM. I found 2GB is probably the practical minimum.
> As for "serverless databases", that depends on whether Django and
> SQLAlchemy support them. Mailman has a lot of code invested in those
> ORMs.
Which is why I thought it would actually require a fairly drastic re-write, although of course AWS does offer Pg and MySQL relational databases as a service. That increases the cost again compared to running the DB yourself inside the same VM, but at the benefit of not needing to patch and upgrade the database any more. SQLAlchemy can work with DynamoDB but I’m sure that would have behaviours somewhat different from Postgres or MySQL, and would need some work.
I’m just musing here really.
Regards,
Tim
(PS for full disclosure - I work for AWS, but these comments are in my personal capacity)
> Steve
_______________________________________________
Mailman-users mailing list -- mailman-users(a)mailman3.org To unsubscribe send an email to mailman-users-leave(a)mailman3.org https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
Archived at: https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
This message sent to dave(a)aasv.org
2 years, 3 months

[MM3-users] Re: Installing mailman 3
by Rafael Mora
Clever idea Abhilash! Thanks
El mié., 2 ago. 2017 a las 11:50, Abhilash Raj (<raj.abhilash1(a)gmail.com>)
escribió:
> When you set DEBUG=False, Django doesn't serve static files because of
> which you see only text and no styles.
>
>
> http://docs.mailman3.org/en/latest/pre-installation-guide.html#django-stati…
>
> If you do set DEBUG=False, you need to serve the static pages somehow.
>
> Alternatively in you case, you can remove the part of the `settings.py`
> which changes the Emailbackend when `DEBUG=False` so that you don't have
> to worry about serving static files and still send out emails.
>
> On Wed, Aug 2, 2017, at 09:46 AM, Rafael Mora wrote:
> > For testing purpose I turned back to false the DEBUG var and everything
> > started working fine with HyperKitty
> >
> > I don't understand... this is the trace when I click Login from Postorius
> > to HyperKitty
> >
> > [02/Aug/2017 16:43:42] "GET /postorius/lists/ HTTP/1.1" 200 3645
> > [02/Aug/2017 16:43:48] "GET /accounts/login/?next=/postorius/lists/
> > HTTP/1.1" 200 10950
> > [02/Aug/2017 16:43:49] "GET /static/CACHE/css/hyperkitty.2f591b4e31fe.css
> > HTTP/1.1" 200 156657
> >
> >
> > What should I check?
> >
> >
> >
> >
> >
> >
> >
> >
> > El mié., 2 ago. 2017 a las 10:56, Mark Sapiro (<mark(a)msapiro.net>)
> > escribió:
> >
> > > On 08/02/2017 07:55 AM, Rafael Mora wrote:
> > > > HyperKitty is looking for some files in /static/CACHE/... but it
> doesn't
> > > > find them:
> > > >
> > > > [02/Aug/2017 14:53:38] "GET /static/CACHE/css/b3547a2ab51b.css
> HTTP/1.1"
> > > > 404 107
> > > > [02/Aug/2017 14:53:38] "GET /static/CACHE/css/4c17bb8058aa.css
> HTTP/1.1"
> > > > 404 107
> > > > [02/Aug/2017 14:53:38] "GET /static/CACHE/css/2fa1cba00450.css
> HTTP/1.1"
> > > > 404 107
> > > > [02/Aug/2017 14:53:38] "GET /static/CACHE/js/4ce1260ef558.js
> HTTP/1.1"
> > > 404
> > > > 105
> > > > [02/Aug/2017 14:53:39] "GET /static/CACHE/js/4ce1260ef558.js
> HTTP/1.1"
> > > 404
> > > > 105
> > > >
> > > >
> > > > Should I run any command to activate the CACHE dir?
> > >
> > >
> > > You need to ensure you have a working sass compiler. As I said at
> > > <
> > >
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
> > > >,
> > > See the third bullet under
> > > <http://docs.list.org/en/latest/prodsetup.html#dependencies>.
> > >
> > > Then you need to run commands like
> > >
> > > django-admin collectstatic --clear
> > > django-admin compress
> > >
> > >
> > > --
> > > Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
> > > San Francisco Bay Area, California better use your sense - B. Dylan
> > > _______________________________________________
> > > Mailman-users mailing list
> > > mailman-users(a)mailman3.org
> > > https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> > >
> > --
> >
> > Atentamente / Best Regards
> >
> > Ing. Rafael Mora
> > _______________________________________________
> > Mailman-users mailing list
> > mailman-users(a)mailman3.org
> > https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>
>
> --
> thanks,
> Abhilash Raj
> _______________________________________________
> Mailman-users mailing list
> mailman-users(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>
--
Atentamente / Best Regards
Ing. Rafael Mora
7 years, 8 months

[MM3-users] Re: No e-mail distribution after import of archive
by Markus Grandpré
Dear Mr Odhiambo,
thank you very much for your reply.
In mailman.log I see:
Nov 12 09:46:02 2024 (698086) ACCEPT:
<d6723f50-7ca8-4ba9-85ef-bb5575dacd75(a)uni-konstanz.de>
[12/Nov/2024:09:46:03 +0100] "GET
/3.1/lists/import_mm3_testliste(a)mailman-test.uni-konstanz.de HTTP/1.1"
200 486 "-" "GNU Mailman REST client v3.3.5"
[12/Nov/2024:09:46:03 +0100] "GET
/3.1/lists/import_mm3_testliste(a)mailman-test.uni-konstanz.de/config
HTTP/1.1" 200 3446 "-" "GNU Mailman REST client v3.3.5"
[12/Nov/2024:09:46:03 +0100] "GET
/3.1/users/markus.grandpre(a)uni-konstanz.de HTTP/1.1" 200 285 "-" "GNU
Mailman REST client v3.3.5"
[12/Nov/2024:09:46:03 +0100] "GET
/3.1/lists/import_mm3_testliste.mailman-test.uni-konstanz.de/roster/owner
HTTP/1.1" 200 789 "-" "GNU Mailman REST client v3.3.5"
[12/Nov/2024:09:46:03 +0100] "GET
/3.1/addresses/markus.grandpre(a)uni-konstanz.de HTTP/1.1" 200 436 "-"
"GNU Mailman REST client v3.3.5"
[12/Nov/2024:09:46:03 +0100] "GET
/3.1/lists/import_mm3_testliste.mailman-test.uni-konstanz.de/roster/moderator
HTTP/1.1" 200 90 "-" "GNU Mailman REST client v3.3.5"
Nov 12 09:46:03 2024 (698083) HyperKitty archived message
<d6723f50-7ca8-4ba9-85ef-bb5575dacd75(a)uni-konstanz.de> to
https://mailman-test.uni-konstanz.de/mailman3/hyperkitty/list/import_mm3_te…
In smtp.log I found:
Nov 12 09:46:02 2024 (698087) Available AUTH mechanisms: LOGIN(builtin)
PLAIN(builtin)
Nov 12 09:46:02 2024 (698087) Peer: ('127.0.0.1', 57230)
Nov 12 09:46:02 2024 (698087) ('127.0.0.1', 57230) handling connection
Nov 12 09:46:02 2024 (698087) ('127.0.0.1', 57230) >> b'LHLO
mailman-app-test.kim.uni-konstanz.de'
Nov 12 09:46:02 2024 (698087) ('127.0.0.1', 57230) >> b'MAIL
FROM:<markus.grandpre(a)uni-konstanz.de> SIZE=9649 BODY=8BITMIME'
Nov 12 09:46:02 2024 (698087) ('127.0.0.1', 57230) sender:
markus.grandpre(a)uni-konstanz.de
Nov 12 09:46:02 2024 (698087) ('127.0.0.1', 57230) >> b'RCPT
TO:<Import_mm3_testliste(a)mailman-test.uni-konstanz.de>'
Nov 12 09:46:02 2024 (698087) ('127.0.0.1', 57230) recip:
Import_mm3_testliste(a)mailman-test.uni-konstanz.de
Nov 12 09:46:02 2024 (698087) ('127.0.0.1', 57230) >> b'DATA'
Nov 12 09:46:02 2024 (698087) ('127.0.0.1', 57230) >> b'QUIT'
Nov 12 09:46:02 2024 (698087) ('127.0.0.1', 57230) connection lost
Nov 12 09:46:02 2024 (698087) ('127.0.0.1', 57230) Connection lost
during _handle_client()
I have no idea why there is a "connection lost". What do you think? How
can I increase the log level?
With kind regards,
Markus
Am 12.11.24 um 09:38 schrieb Odhiambo Washington:
> On Tue, Nov 12, 2024 at 10:34 AM Markus Grandpré <
> markus.grandpre(a)uni-konstanz.de> wrote:
>
>> Dear Mr. Sapiro,
>>
>> on our test system we noticed the problem that after importing a mailing
>> list archive from a Mailman system v2.1 into a Mailman system v3.3.8,
>> e-mails are no longer distributed via this mailing list. E-mails that
>> are written to the list find their way into the archive, but they are
>> not sent to any member of the list.
>>
>> Before the archive was imported, writing an e-mail to the list and
>> distributing this e-mail via the list was not a problem. Unfortunately,
>> we cannot find any indication of this issue in the log of the mailman
>> system v3.3.8. Please help us to further analyze and solve this problem,
>> as we are planning to import 188 archives into our new productive
>> mailman system v3.3.8 during the next months.
>>
>
> Archives are imported into HyperKitty and should not in any way interfere
> with Mailman Core.
> From what I learnt recently, you can even import an archive into HyperKitty
> without having a ML in Core associated with it.
> So my starting point would be to look at mailman.log and see what goes in
> there. I could even up the debugging level if need be.
> For now, is there anything abnormal in mailman.log or smtp.log?
>
>
>
>
--
Markus Ludwig Grandpré
Universität Konstanz
Kommunikations-, Informations-, Medienzentrum (KIM)
Abteilung IT-Dienste Forschung und Lehre,
B803, Tel: ++49 7531 88 4342
5 months, 1 week

[MM3-users] postorius ssl-certificates for virtual hosts
by Wolfgang Bock
Hello,
On my server are several virtual hosts running with different lists per
host. The appropriate webaddress is in general:
https://lists.[domain]/mailman3/postorius/lists/[listname].lists.[domain].
My domains:
[domain-1] starts with a b*
[domain-2] starts with a s*
[domain-3] starts with a t*
If I use the webadress
https://lists.[domain-1]/mailman3/postorius/lists/[listname].lists.[domain-…
and I do a click on the https-symbol in the address line of my browser I
get the secury-information " every thing is ok" and the
certificate-information is about the wildcard-certificate I just created
for the right domain.
Different result is for the webadress
https://lists.[domain-2]/mailman3/postorius/lists/[listname].lists.[domain-….
In this case I get an information like "you are using a wrong
certificate" clicking on the https-symbol references tot he certificate
of [domain-1]
I set in my apache2 configuration a symbolic link to apache.conf in the
/etc/mailman3/directory and made this active.
What did I wrong??
If I set use_https to yes in mailman.cfg I get on the website for all lists:
postorius: Something went wrong
Mailman REST API not available. Please start Mailman core.
In the logs I found …
mailman.log
Nov 14 23:04:25 2019 (28584) command runner started.
Nov 14 23:20:41 2019 (28590) 127.0.0.1 - - "GET
/3.0/lists?advertised=true&count=0&page=1 HTTP/1.1" 200 90
Nov 14 23:20:41 2019 (28590) 127.0.0.1 - - "GET
/3.0/lists?advertised=true&count=10&page=1 HTTP/1.1" 200 606
Nov 14 23:20:41 2019 (28590) 127.0.0.1 - - "GET /3.1/domains HTTP/1.1"
200 1438
Nov 14 23:20:41 2019 (28590) 127.0.0.1 - - code 400, message Bad
HTTP/0.9 request type
('\x16\x03\x01\x02\x00\x01\x00\x01ü\x03\x03\x00³m\x98¶\x02¨\\Å^\x11£ì{\x94«§*\x
9cÅýÎk\x9f¡ã\x89s/õë')
Nov 14 23:20:41 2019 (28590) 127.0.0.1 - -
"........ü...³m.¶.¨\Å^.£ì{.«§*.ÅýÎk.¡ã.s/õë
.Ô$M...b¥øDR.Ï...G¹PpÖ.'W°û-Óìü¶.>......À,À0..̨̩̪À+À/..À$À(.kÀ#À'.gÀ" 400
mailman-web.log
ERROR 2019-11-14 22:20:41,471 1405 postorius.middleware Mailman REST API
not available
Traceback (most recent call last):
File
"/usr/lib/python3/dist-packages/mailmanclient/restbase/connection.py",
line 95, in call
response, content = Http().request(url, method, data_str, headers)
File "/usr/lib/python3/dist-packages/httplib2/__init__.py", line
1513, in request
(response, content) = self._request(conn, authority, uri,
request_uri, method, body, headers, redirections, cachekey)
File "/usr/lib/python3/dist-packages/httplib2/__init__.py", line
1263, in _request
(response, content) = self._conn_request(conn, request_uri, method,
body, headers)
File "/usr/lib/python3/dist-packages/httplib2/__init__.py", line
1186, in _conn_request
conn.connect()
File "/usr/lib/python3/dist-packages/httplib2/__init__.py", line
1012, in connect
self.sock = self._context.wrap_socket(sock, server_hostname=self.host)
File "/usr/lib/python3.7/ssl.py", line 412, in wrap_socket
session=session
File "/usr/lib/python3.7/ssl.py", line 853, in _create
self.do_handshake()
File "/usr/lib/python3.7/ssl.py", line 1117, in do_handshake
self._sslobj.do_handshake()
ssl.SSLError: [SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1056)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/django/core/handlers/base.py",
line 185, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/python3/dist-packages/postorius/views/list.py", line
706, in list_index
choosable_domains = _get_choosable_domains(request)
File "/usr/lib/python3/dist-packages/postorius/views/list.py", line
560, in _get_choosable_domains
return [(d.mail_host, d.mail_host) for d in domains]
File "/usr/lib/python3/dist-packages/postorius/views/list.py", line
560, in <listcomp>
return [(d.mail_host, d.mail_host) for d in domains]
File "/usr/lib/python3/dist-packages/mailmanclient/restbase/base.py",
line 121, in __getattr__
return self._get(name)
File "/usr/lib/python3/dist-packages/mailmanclient/restbase/base.py",
line 87, in _get
return self.rest_data.get(key)
File "/usr/lib/python3/dist-packages/mailmanclient/restbase/base.py",
line 76, in rest_data
response, content = self._connection.call(self._url)
File
"/usr/lib/python3/dist-packages/mailmanclient/restbase/connection.py",
line 109, in call
raise MailmanConnectionError('Could not connect to Mailman API')
mailmanclient.restbase.connection.MailmanConnectionError: Could not
connect to Mailman API
[pid: 1405|app: 0|req: 963/963] 2a02:8108:483f:b9c0:94f1:d2bb:9642:b6d0
() {62 vars in 1310 bytes}
22:20:41 2019] GET /mailman3/postorius/lists/ => generated 3901 bytes in
89 msecs (HTTP/1.1 503) 5 headers in 180 bytes (1 switches on core 0)
5 years, 5 months

[MM3-users] Re: Mailman, etc. upgrade woes and persistent bugs
by Stephen J. Turnbull
Brian Carpenter writes:
> I think treating all disabled options the same is short-sighted. They
> are all not the same.
>
> -- Some list members will disable their subscription for good reasons
> and will be really upset if a List Owner renables it through ignorance.
> So it is important to know a disable member is done by the member
> itself.
This is true in principle, but (1) I don't think that the user cares;
if they're looking at it, they know whether they want enabled or
disabled, how it got that way doesn't matter to them, and (2) I can't
see why an admin would disable delivery except on request from a user,
so I can't see why an admin would reenable except on request from a
user. The only case I can see would be a mass reenabling, but that's
not going to happen in the future (I hope).
> -- Some mailing lists will have multiple list owners managing them. So
> it is important for one List Owner to know when a subscription has been
> disabled by the actions of another List Owner.
I don't see why, see above.
> -- A List Owner may not know that some of his List Members are bouncing
> messages for various reasons, so reviewing their Membership roster, they
> see that they have some list members disabled due to bounces and can
> then address those particular problematic members.
This query is an important use case. But it's the only one, I think,
unless you really have List Owners arbitrarily disabling members'
subscriptions. And if you're thinking about reenabling from that
page, I think you need a lot more information. For example, if the
admin disabled, you need to know if that was a user request or
something else (what?). If bounce disabled, you want to know what the
bounce was ("no such mailbox"? probably not a good candidate for
reenabling), and when (5 minutes ago? ditto). I guess you could just
reenable and see what happens, but that could be risky (eg, sending
mail to non-existent users is frowned upon by some providers).
> @Abhilash, I highly recommend that you contact me off list about getting
> access to Affinity so you can see what I am talking about. I would love
> to show you what I have done for Member Management. I offered the same
> to Steve but he never was interested in taking a look.
It's not that I lack interest, it's that life got in the way.
Unfortunately, until I get enough time (man-weeks, I've never worked
on Postorius and very little in Django) to work on Postorius, or
somebody else starts to do it, a look at Affinity is low priority.
Also, it's pretty clear that a quick look isn't going to be very
helpful. The Mailman developers know what Mailman 2 looks like. I
think the benefits to a hands-on admin are pretty obvious vs the
current Postorius, as are Web 2.0 improvments like sorting on the
options. The more subtle improvements you've made are going to
require a guided tour and/or some study to identify and understand.
Aside: I have to assume that Postorius is aimed at the kind of
subscriber that most of us are, and that list administration was
something of an afterthought, and assumed to be mostly hands-off.
That's the only rationale I can come up with for the design where
list admins need to go to the individual pages to see user options --
it was easier to reuse the user option page and just give the admin
permission to access and change it, than to provide a (sortable) list
with user details.
Steve
4 years, 2 months

[MM3-users] Re: hello, Discussion on how to subscribe to themailing list
by 朱超
Thanks for you apply.
At 2023-01-18 02:50:09, "Stephen J. Turnbull" <stephenjturnbull(a)gmail.com> wrote:
>朱超 writes:
>
> > 1. It is not the MTA that refuses to send emails because the
> > recipient's mailbox is too long, but the MUA that refuses to
> > send the email because the recipient's mailbox is too long.
>
>That's still non-conforming to RFC 821, published in 1982. Seriously,
>those mail clients are garbage and I have no sympathy for their users.
>We're certainly willing to make some changes to Mailman to make things
>a little easier for mailing list owners who have to deal with such
>users, but there's no excuse for using those MUAs in 2023.
>
> > https://www.example.com/mailman3/lists/$list_id/confirm/?token=$token,
> > but he reported 404.
>
>If you mean that literally, of course it did. example.com, and its
>siblings in the org, net, and edu domains, as well as all subdomains,
>are domains reserved for examples in documentation. They all resolve
>to the same IP (owned by IANA), which simply provides a web page
>explaining what those domains are for. There's no Mailman there. :-)
>
>For that to get a response from Postorius, at minimum you need to
>substitute your Mailman web host for "www.example.com", and the list's
>ID (usually the same as the posting address with "." substituted for
>the "@") for $list_id. You may also need to change the URL path,
>depending on the top-level urls.py you use for Postorius.
Yes, I know why 404 is reported,The url should be postorius not be mailman3, https://www.example.com/postorius/lists/$list_id/confirm/?token=$token, and it report success. I am curious why there is no similar processing logic for unsubscribing in postorius。Can we optimize for this?
> > 2. It is recommended to modify postorius, in order to keep the
> > logic function of the underlying mailman-core unchanged,
>
>More important than the detailed functions of mailman-core are the
>original requirements and design. Core should handle email (both in
>and out), and Postorius should handle web requests. It's asking for
>trouble to have core send mail to confirm subscription requests by
>mail, and Postorius to send mail to confirm subscription requests by
>web. Among other things it violates "Don't Repeat Yourself": if we
>(or you) change the confirmation template in core, we (or you) need to
>also change the confirmation template in Postorius. But it's very
>easy to forget, and an annoyance for reviewers to check.
>
>It's possible that the other core devs will overrule me on this, but
>you shouldn't hold your breath waiting for that. I've been very good
>at channeling the consensus of the devs for around 20 years now. :-)
>
If you use mailman-web (include postorius and django-mailman3 and django-allauth and so on) to set the template information, the template obtained by mailman-core is obtained by requesting mailman-web, so mailman-web saves the template information and can be used by postorius Used to process subscription information, which will not violate the principle of repeating yourself, For other scenarios, it may be a bit troublesome, but at present, I can use the template confirmation information to help me solve my difficulties.
What we do is to make the mailman community better and better。
Thanks
>Steve
>_______________________________________________
>Mailman-users mailing list -- mailman-users(a)mailman3.org
>To unsubscribe send an email to mailman-users-leave(a)mailman3.org
>https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>Archived at: https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
>
>This message sent to tom_toworld(a)163.com
2 years, 3 months

[MM3-users] Re: Importing config and archives only partially succeeded?
by Mark Sapiro
On 12/13/20 7:11 AM, Eric Broens via Mailman-users wrote:
> Hi Mark,
> 1.Regarding the repeated access of /archives/api/mailman/urls seems to be related to mailman not being able to open port 25.
> This is weird because other mails have been distributed.
> The mailman log shows:Dec 12 22:16:48 2020 (1471) ACCEPT: < message id >
> Dec 12 22:16:52 2020 (1474) Cannot connect to SMTP server localhost on port 25
That message is in response to a socket.error exception in attempted
delivery. It is logged only once until there is a successful delivery,
but the message keeps being retried.
> webserver logs:<host > - - [12/Dec/2020:22:16:50 +0100] "GET /archives/api/mailman/urls ?mlist=...&key=*** HTTP/1.1" 200 64 "-" "python-requests/2.25.0"
> <host > - - [12/Dec/2020:22:16:52 +0100] "GET /archives/api/mailman/urls?mlist=...&msgid=< message id >&key=*** HTTP/1.1" 200 105 "-" "python-requests/2.25.0"
> This last entry is repeated forever (until I stop the mailserver for a few minutes, but later on this happens again for other mails too).
Those GETs are part of normal message processing. As I said, they result
from core handlers asking HyperKitty for the URL at which the message
will be archived so they can add that URL to the Archived-At: header and
maybe to a message header or footer.
Presumably the one that keeps repeating is the one message/message-id
that is throwing the socket.error and being continuously retried.
I would stop Mailman and move that one .pck or .bak file out of
Mailman's var/queue/out/ directory and then start mailman. You can then
examine the queue entry with `mailman qfile` and maybe see what the
issue is.
> 2..Regarding the mails on the archive page, for most of the lists it is solved now. So probably one of the periodic jobs fixed that.The mailinglist which showed 0 participants 0 subscribers, does show now 0 participants 66 discussions.I have checked the member tables, and the members for this mailinglist are included there.
OK.
> 3.What I notice now too is that the hourly runjobs tasks don't seem to finish.I would have to check what they exactly do. Can I somehow activate logging for these?
> mailman 300042 300016 1 08:00 ? 00:09:18 /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/django-admin runjobs hourly --pythonpath /opt/mailman/mailman-suite/mailman-suite_project --settings settingsmailman 302158 302149 2 09:00 ? 00:09:10 /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/django-admin runjobs hourly --pythonpath /opt/mailman/mailman-suite/mailman-suite_project --settings settingsmailman 304513 304506 2 10:00 ? 00:09:38 /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/django-admin runjobs hourly --pythonpath /opt/mailman/mailman-suite/mailman-suite_project --settings settingsmailman 308631 308620 3 11:00 ? 00:09:29 /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/django-admin runjobs hourly --pythonpath /opt/mailman/mailman-suite/mailman-suite_project --settings settingsmailman 312847 312832 3 12:00 ? 00:09:15 /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/django-admin runjobs hourly --pythonpath /opt/mailman/mailman-suite/mailman-suite_project --settings settingsmailman 317343 317332 4 13:00 ? 00:09:20 /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/django-admin runjobs hourly --pythonpath /opt/mailman/mailman-suite/mailman-suite_project --settings settingsmailman 320079 320072 7 14:00 ? 00:09:08 /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/django-admin runjobs hourly --pythonpath /opt/mailman/mailman-suite/mailman-suite_project --settings settingsmailman 322618 322610 13 15:00 ? 00:08:54 /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/django-admin runjobs hourly --pythonpath /opt/mailman/mailman-suite/mailman-suite_project --settings settingsmailman 325205 325198 84 16:00 ? 00:06:56 /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/django-admin runjobs hourly --pythonpath /opt/mailman/mailman-suite/mailman-suite_project --settings settings
/opt/mailman/venv/bin/django-admin runjobs --list
will show you what the jobs are. The hourly jobs are
new_lists_from_mailman, thread_starting_email and update_index. The one
running long is almost certainly update_index. I would stop running the
hourly jobs until you have successfully updated the search index for all
lists.
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
4 years, 4 months

[MM3-users] Postorius extremely slow on some of the mailinglists
by Stephen J. Turnbull
Eric Broens via Mailman-users writes:
> Mainly "GET /3.1/lists/<mailing_list>@<domain>/requests HTTP/1.1"
> takes a long time.
The only thing I can think of is that something weird is happening
with requests (held messages) on those lists. The runner is waiting
on the database server, and eventually timing out, I think.
I believe you will find the corresponding messages under
$var_dir/messages (var_dir is usually set in mailman.cfg, if not I
believe it defaults to /usr/local/mailman3/var). Unfortunately I
don't know how to link those entries to the messages in that directory
tree. You can "grep -ri '^list-id:.*<your.list.id>$' messages" for
held posts via the problem list if you have list ID on (that's the
default for recent Mailman) and if that's not going to work you could
use "grep -rF 'your(a)list.id' messages" for a less precise search.
It's not a good idea to delete them from the file system (I think
Mailman is robust to that but I'm not sure). However, if one looks
like spam you could try working at a slightly lower level than
Postorius by using mailmanclient directly. See
https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/rest/docs/….
If that doesn't work (for example listing the requests for a list
times out the same way in mailmanclient), you could try directly
querying the database server to see what's going on. The check for an
unusual number of requests that might be an attack is to connect to
the database server with its command line utility. I'm not on CLI
terms with MySQL but for PostgreSQL it's
$ su - mailman
$ psql
mailman=> select mailing_list_id, count(mailing_list_id) from _request group by mailing_list_id;
mailman=> select id, list_id from mailinglist;
and you can append " where id = $mailing_list_id" to the second to the
second one to find the List-Id for a specific mailing list. That's
just plain SQL including the count function as far as I know, so
should work in any backend that Mailman can use. If you're handy with
SQL you could do all that with a join but I'm not. ;-)
> Any idea why this happens and how it can be solved?
Aside from a really astonishingly large number of pending requests (as
tested above with count()), perhaps there's something in the requests
themselves. If there aren't literally thousands of requests for a
problem list you can list them with
mailman=> select key, mailing_list_id from _request;
Look for odd characters in the key field. One oddity that I'mm pretty
sure is not a problem is something of the form "\r\n <message-id>" (my
instance lists those fine). There's a bug in Exchange (IIRC) which
sometimes includes invalid characters (specifically "[" and "]") in
message IDs which I believe we worked around only quite recently,
although I don't recall if it affected APIs for requests. Control
characters and non-ASCII might also cause trouble,
If your database server is MySQL, is it set up to handle the full
range of Unicode (I think the option is utf8mbcs)? Lacking that is
known to cause problems when headers and maybe body contain emoticons
or other extended Unicode characters. Again I don't recall if
crashing the REST runner is a known symptom.
If none of the above works, there's always the "hit it with a hammmer"
approach. Have you tried restarting both Postorius and Mailman? How
about restarting the database server? How about all three?
As a last resort, it's probably possible to delete the requests from
the filesystem and the database by hand. But I don't want to think
about that unless absolutely necessary.
Steve
2 months, 1 week

[MM3-users] Re: Archiving error
by Enrique Terrazas
Excellent! Thanks again for your guidance.
I have a follow up question, I tried setting the base_url to https but received SSL errors in the mailman.log. The nginx.conf is using a valid certificate from a CA and the sites(Django admin, Postorius, Hyperkitty) all load with https in the browser, they are redirected from http as well. But it seems that internal communication is failing when I try to specify https in the base_url
Is this something that I should be concerned about and can be configured?
Thank you,
Enrique
On Oct 5, 2018, at 11:25 AM, Abhilash Raj <maxking(a)asynchronous.in<mailto:maxking@asynchronous.in>> wrote:
On Fri, Oct 5, 2018, at 8:25 AM, Enrique Terrazas wrote:
Thank you Abhilash,
The port was in fact the problem. Django is listening on a different port as specified in my uwsgi.ini file
To be sure I understand this correctly:
In uwsgi.ini I am specifying:
http-socket = my.host.name:8000
And in hyperkitty.cfg:
base_url: http://my.host.name:8000/hyperkitty/<https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmy.host.nam…>
That is the correct thing to do!
thanks,
Abhilash
Hyperkitty is now archiving messages as expected.
Best regards,
Enrique
On Oct 5, 2018, at 9:57 AM, Abhilash Raj <maxking(a)asynchronous.in<mailto:maxking@asynchronous.in>> wrote:
On Fri, Oct 5, 2018, at 12:06 AM, Enrique Terrazas wrote:
Hello,
I'm hoping someone can help me configure hyperkitty correctly. I've got
mailman3 installed and working. I created a test list and can send/
receive, moderate message. However, archiving does not seem to be
working. Below is a copy of my (sanitized) hyperkitty.cfg file and
settings.py file(edited) along with the errors being logged to
mailman.log
hyperkitty.cfg
-----
# Mailman-Hyperkitty Archiver plugin
[general]
base_url: http://localhost:8002/
Which PORT is your Django listening on? This seems like pointing to 8002 port, are you actually listening on that port?
The error below seems to suggest that either the Django isn't running or you are using wrong address.
api_key:
-----
settings.py
# Mailman API credentials
MAILMAN_REST_API_URL = 'http://localhost:8001<http://localhost:8001/>'
MAILMAN_REST_API_USER = ''
MAILMAN_REST_API_PASS = ''
MAILMAN_ARCHIVER_KEY = ''
MAILMAN_ARCHIVER_FROM = ('my.host.name', 'myIPaddress', '127.0.0.1', '::
1')
------
This is the error being sent to maillog.log
------
Oct 05 01:54:59 2018 (15127) Exception in "hyperkitty" archiver
Traceback (most recent call last):
File "/opt/mailman/mailman/lib64/python3.6/site-packages/urllib3/
connection.py", line 171, in _new_
conn
(self._dns_host, self.port), self.timeout, **extra_kw)
File "/opt/mailman/mailman/lib64/python3.6/site-packages/urllib3/util/
connection.py", line 79, in c
reate_connection
raise err
File "/opt/mailman/mailman/lib64/python3.6/site-packages/urllib3/util/
connection.py", line 69, in c
reate_connection
sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/mailman/mailman/lib64/python3.6/site-packages/urllib3/
connectionpool.py", line 600, in urlopen
chunked=chunked)
File "/opt/mailman/mailman/lib64/python3.6/site-packages/urllib3/
connectionpool.py", line 354, in _make_request
conn.request(method, url, **httplib_request_kw)
File "/opt/rh/rh-python36/root/usr/lib64/python3.6/http/client.py",
line 1239, in request
self._send_request(method, url, body, headers, encode_chunked)
File "/opt/rh/rh-python36/root/usr/lib64/python3.6/http/client.py",
line 1285, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File "/opt/rh/rh-python36/root/usr/lib64/python3.6/http/client.py",
line 1234, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "/opt/rh/rh-python36/root/usr/lib64/python3.6/http/client.py",
line 1026, in _send_output
self.send(msg)
File "/opt/rh/rh-python36/root/usr/lib64/python3.6/http/client.py",
line 964, in send
self.connect()
File "/opt/mailman/mailman/lib64/python3.6/site-packages/urllib3/
connection.py", line 196, in connect
conn = self._new_conn()
File "/opt/mailman/mailman/lib64/python3.6/site-packages/urllib3/
connection.py", line 180, in _new_conn
self, "Failed to establish a new connection: %s" % e)
urllib3.exceptions.NewConnectionError:
<urllib3.connection.HTTPConnection object at 0x7f0ba1c22048>: Failed to
establish a new connection: [Errno 111] Connection refused
During handling of the above exception, another exception occurred:
------
Thanks in advance,
Enrique J. Terrazas
_______________________________________________
Mailman-users mailing list -- mailman-users(a)mailman3.org<mailto:mailman-users@mailman3.org>
To unsubscribe send an email to mailman-users-leave(a)mailman3.org<mailto:mailman-users-leave@mailman3.org>
https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.mail…<https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.mail…>
--
thanks,
Abhilash Raj (maxking)
--
thanks,
Abhilash Raj (maxking)
6 years, 6 months

[MM3-users] Re: Can you use @list to include members in accept these non-members in v3?
by Odhiambo Washington
You can actually run the bleeding edge code (beta) at the moment.
It's rather stable, but you can report any bugs with a chance of them being
fixed pronto - before the release.
On Thu, 5 Sept 2024, 19:26 Lieuallen, Thomas Otis, <
Tom.Lieuallen(a)oregonstate.edu> wrote:
> Danil,
>
> That looks awesome, as do several other features and fixes. It doesn’t
> look like 3.3.10 is released yet, though. Any ideas on when that might
> happen?
>
> Thank you for directing me there.
>
> Tom Lieuallen
>
> From: Danil Smirnov via Mailman-users <mailman-users(a)mailman3.org>
> Date: Thursday, September 5, 2024 at 3:45 AM
> To: mailman-users(a)mailman3.org <mailman-users(a)mailman3.org>
> Subject: [MM3-users] Re: Can you use @list to include members in accept
> these non-members in v3?
> [This email originated from outside of OSU. Use caution with links and
> attachments.]
>
> Hi Tom,
>
> This feature has been added recently in version 3.3.10, see "New Features"
> in the changelog:
>
> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitlab.co…
> <
> https://gitlab.com/mailman/mailman/-/blob/master/src/mailman/docs/NEWS.rst
> >
>
> Sincerely,
> Danil Smirnov
> Mailman3.com
>
> On Thu, Sep 5, 2024 at 12:22 AM Lieuallen, Thomas Otis <
> Tom.Lieuallen(a)oregonstate.edu> wrote:
>
> > No answers yet on this, so I’m not hopeful that MM3 supports this
> > feature. I guess I’ll start on a script to update the list of allowed
> > senders.
> >
> > Thank you
> >
> > Tom Lieuallen
> >
> > From: Lieuallen, Thomas Otis <Tom.Lieuallen(a)oregonstate.edu>
> > Date: Thursday, August 29, 2024 at 2:35 PM
> > To: mailman-users(a)mailman3.org <mailman-users(a)mailman3.org>
> > Subject: Can you use @list to include members in accept these non-members
> > in v3?
> > In Mailman v2, one could use @listname in ‘accept_these_nonmembers’:
> >
> > A line consisting of the @ character followed by a list name specifies
> > another Mailman list in this installation, all of whose member addresses
> > will be accepted for this list.
> >
> > I don’t see this option listed in version 3. Is it no longer
> > supported/allowed? Is there another option?
> >
> > We often send email to lists of lists and have loved that @listname
> option
> > to help us deliver email to 20+ lists without needing to approve the
> emails
> > each time or reconfigure all the lists when another sender needs to be
> > added.
> >
> > Thank you
> >
> > Tom Lieuallen
> > Oregon State University
> > _______________________________________________
> > Mailman-users mailing list -- mailman-users(a)mailman3.org
> > To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> >
> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.mai…
> <https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/>
> > Archived at:
> >
> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.mai…
> <
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
> >
> >
> > This message sent to danil(a)smirnov.la
> >
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
>
> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.mai…
> <https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/>
> Archived at:
> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.mai…
> <
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
> >
>
> This message sent to lieualth(a)oregonstate.edu
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> Archived at:
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
>
> This message sent to odhiambo(a)gmail.com
>
7 months, 2 weeks

[MM3-users] Re: Ann: Postorius 1.3.6 is now out
by Guillermo Hernandez (Oldno7)
On 29/9/21 5:27, Abhilash Raj wrote:
> Hey Everyone,
>
> I just tagged and released Postorius 1.3.6. This release includes both bug fixes and
> new features.
Just to confirm that I've done a complete upgrade from last version
without any problem.
From the info page:
Mailman Core Version GNU Mailman 3.3.5 (Tom Sawyer)
Mailman Core API Version 3.1
Mailman Core Python Version 3.7.9 (default, Nov 6 2020, 21:14:59)
[Clang 8.0.1 (tags/RELEASE_801/final 366581)]
Documentación de Postorius <https://postorius.readthedocs.org> • GNU
Mailman <http://list.org> • Versión de Postorius 1.3.6
>
> Some of the notable features include
> - Ability to list and handle un-subscription requests to the list
> - Option to choose delivery mode and delivery_status directly when subscribing to a list
> - Addition of a user management interface, which allows updating a users password,
> manually verifying their email addresses, update user’s Display Name etc.
> - Expose a number of Bounce processing related options in List’s settings
>
> A full list of changes is available here
>
> https://docs.mailman3.org/projects/postorius/en/latest/news.html#news-1-3-6
>
> You can install this release using pip
>
> $ pip install postorius django-mailman3 mailmanclient —upgrade
>
> Do note that this release requires Mailman Core 3.3.5, so you need to upgrade
> Core before upgrading Postorius.
>
> The release tarball is available on PyPI as usual:
>
> https://pypi.org/project/postorius/1.3.6/#files
>
> Please also ensure to run the post-install commands as per the upgrade documentation:
>
> https://docs.mailman3.org/en/latest/upgrade-3.2.html#post-upgrade
>
> Thanks to all the folks who helped with this release!
>
> Abhilash
>
>> Please also ensure to run the post-install commands as per the upgrade documentation[4] (commands _after_ pip install, needs a post-install heading/anchor in there :-).
>> On Sep 19, 2021, at 8:48 PM, Abhilash Raj <maxking(a)asynchronous.in> wrote:
>>
>> Hey Everyone,
>>
>> I am pleased to announce that Postorius 1.3.6b1 is now out. This is the first pre-release for 1.3.6, which is slated to release next week soon after Mailman Core 3.3.5 release.
>>
>> This release requires Mailman Core 3.3.5 release, so if you are trying out this release, please also upgrade Mailman Core to 3.3.5rc1 (which was just released today).
>>
>> This release includes several new features and bug fixes. A full list of changes is available here[1].
>>
>> With this release, we have also improved on the localization of the interface, if you want to help out before the release of the stable 1.3.6, please see the instructions for translators here[2]. We use Weblate for translations, so if you are familiar with that, you can directly head over there[3].
>>
>> Since this is a pre-release version, you can install this using pip via:
>>
>> $ pip install --upgrade --pre postorius django-mailman3 mailmanclient
>>
>> Please also ensure to run the post-install commands as per the upgrade documentation[4] (commands _after_ pip install, needs a post-install heading/anchor in there :-).
>>
>> A release tarball is available on PyPI:
>>
>> https://pypi.org/project/postorius/1.3.6b1/#files
>>
>> Finally, thanks to all the folks who helped with this release in any capacity and made it possible.
>>
>> [1]: https://docs.mailman3.org/projects/postorius/en/latest/news.html#news-1-3-6
>> [2]: https://docs.mailman3.org/en/latest/translation.html
>> [3]: https://hosted.weblate.org/projects/gnu-mailman/postorius/
>> [4]: https://docs.mailman3.org/en/latest/upgrade-3.2.html#virtualenv-install
>>
>>
>> thanks,
>> Abhilash
> --
> thanks,
> Abhilash Raj (maxking)
>
>
>
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
--
3 years, 6 months

[MM3-users] Re: mailman3 postorius cannot retrieve template
by Wolfgang Bock
Hello Mark,
I reconstruct the configuration problems regarding the creation of templates
in mm3:
I installaed mailman3 via the debian bullseye package(s).
BTW: My experience is to install it step by step, not as mailman3-full, but
as mailman-3, mailman3-doc, mailman3-web and python3-django-mailman3.
In my case the full installation did not run clean, the step-by-step variant
run clean.
The debian bullseye variant comes with a nginx conf-file in
/etc/mailman3/nginx.conf
...
# This nginx config file is part of the mailman3-web package.
#
# This nginx configuration file is a vhost configuration.
...
# Nginx SSL snippet. To enable it, please uncomment and update the
server_name and the
...
server {
listen 443;
listen [::]:443;
server_name mailman.example.com;
server_tokens off;
#
# ## Strong SSL Security
# ## https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html &
https://cipherli.st/
ssl on;
ssl_certificate /etc/letsencrypt/live/mailman.example.com/fullchain.pem;
ssl_certificate_key
/etc/letsencrypt/live/mailman.example.com/privkey.pem;
#
...
The configuration "ssl on" is outdated as nginx -t comments.
The actual configuration should be:
/etc/nginx/
/etc/nginx/sites-available/nginx.lists.mydomain.ssl (and /sites-enabled)
....
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name lists.mydomain.com; # for example
server_tokens off;
ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem;
...
If you - as proposed in the mailman3 nginx.conf - include in
nginx.lists.mydomain.ssl the following:
....
upstream mailman3 {
server unix:/run/mailman3-web/uwsgi.sock fail_timeout=0;
}
....
you cannot in include this in another vhost-nginx configuration (for
example):
/etc/nginx/sites-available/nginx.lists.mydomain_2.ssl
as nginx -t says something like "no double entries please".
So I put this in another file like
/etc/nginx/sites-available/nginx.00.mailman3.upstream (and via symlink in
.../enabled/...) and both nginx-domain-files work.
The debian bullseye also serves a file mailman-web.py with an entry
...
POSTORIUS_TEMPLATE_BASE_URL = 'https://localhost/mailman3/'
...
As mentioned in a mail before that could not work:
1. letsencrypt doesnt serve an entry match for localhost. That floods your
syslog.
2. "localhost" doesnt match with the nginx.conf-proposal.
It must be something like
/etc/mailman3/mailman-web.py
....
POSTORIUS_TEMPLATE_BASE_URL = 'lists.mydomain.com/'
....
In this combination the creating of templates on the postorius website
works.
My conclusion:
I ask you to consider these experiences in an update for the mailman3
packages in debian bullseye. It would save time, questions and nerves.
Regards
Wolfgang
-----Ursprüngliche Nachricht-----
Von: Mark Sapiro <mark(a)msapiro.net>
Gesendet: Dienstag, 2. November 2021 23:44
An: mailman-users(a)mailman3.org
Betreff: [MM3-users] Re: mailman3 postorius cannot retrieve template
On 11/2/21 3:28 PM, Wolfgang Bock via Mailman-users wrote:
>
> I get an db-entry in the mailman3 table template which doesnt lead to
> a suitable link:
>
https://localhost/postorius/api/templates/list/testliste01.mydomain.de/list:
> member:regular:footer
>
> In the next stept it leads to a flood of entries in my syslog because
> django is asking for a certificate match for "localhost":
> Nov 2 11:47:49 myserver mailman3[175334]: Nov 02 11:47:49 2021
> (175334) Certificate did not match expected hostname: localhost.
Certificate: ...
>
> Letsencrypt cannot deliver this match for "localhost", it is
> impossible to configurate letsencrypt to do so.
>
> The running script must create a postgres INSERT database command
> which includes the correct domain-name including the correct path
> .../mailman3/api/templates .... and not ... postorius/api/....
>
> I dont know, where is the place to correct this.
> - in mailman-web.py ??
> ...
> ALLOWED_HOSTS ... '*'
> or
> MAILMAN_REST_API_URL = 'http://localhost:8001'
> or
> POSTORIUS_TEMPLATE_BASE_URL = 'https://localhost/mailman3/'
If you normally access Postorius on your site at something like
https://www.example.com/postorius, than set that as
POSTORIUS_TEMPLATE_BASE_URL
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
_______________________________________________
Mailman-users mailing list -- mailman-users(a)mailman3.org To unsubscribe send
an email to mailman-users-leave(a)mailman3.org
https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
3 years, 5 months

[MM3-users] SOLVED (was: compress failed...)
by Guillermo Hernandez (Oldno7)
El 30/10/22 a las 12:22, Guillermo Hernandez (Oldno7) via Mailman-users
escribió:
>
> El 28/10/22 a las 9:18, Guillermo Hernandez (Oldno7) via Mailman-users
> escribió:
>>
>> El 27/10/22 a las 21:39, Mark Sapiro escribió:
>>>> After that the compress part showed errors... but the postorius web
>>>> maintenance was working well except for the CSRF error
>>>> verification. I will trace the compress errors and will try to find
>>>> the problem later.
>>>
>>>
>>> Do you have `COMPRESS_ENABLED = True` in your settings? If that's
>>> not the issue, it may be in the settings for COMPRESS_PRECOMPILERS
>>
>> While I'm tracing the problem out, this is the configuration I had
>> working and the error it shows after upgrade:
>>
>> <------- snip of settings.py>
>>
>> #
>> COMPRESS_PRECOMPILERS = (
>> ('text/less', 'lessc {infile} {outfile}'),
>> ('text/x-scss', 'sassc -t compressed {infile} {outfile}'),
>> ('text/x-sass', 'sassc -t compressed {infile} {outfile}'),
>> )
>> # On a production setup, setting COMPRESS_OFFLINE to True will bring a
>> # significant performance improvement, as CSS files will not need to be
>> # recompiled on each requests. It means running an additional "compress"
>> # management command after each code upgrade.
>> #
>> http://django-compressor.readthedocs.io/en/latest/usage/#offline-compression
>> #### activo compresion 18/12/20
>> COMPRESS_OFFLINE = True
>> ###COMPRESS_OFFLINE = False
>> <---------- end snip>
>>
>> And below is the error it shows:
>>
>> /usr/local/mailman3 # su -m mailman3 -c "python3 manage.py compress"
>> Traceback (most recent call last):
>> File "/usr/local/mailman3/manage.py", line 10, in <module>
>> execute_from_command_line(sys.argv)
>> File
>> "/usr/local/lib/python3.9/site-packages/django/core/management/__init__.py",
>> line 446, in execute_from_command_line
>> utility.execute()
>> File
>> "/usr/local/lib/python3.9/site-packages/django/core/management/__init__.py",
>> line 440, in execute
>> self.fetch_command(subcommand).run_from_argv(self.argv)
>> File
>> "/usr/local/lib/python3.9/site-packages/django/core/management/__init__.py",
>> line 279, in fetch_command
>> klass = load_command_class(app_name, subcommand)
>> File
>> "/usr/local/lib/python3.9/site-packages/django/core/management/__init__.py",
>> line 49, in load_command_class
>> return module.Command()
>> File
>> "/usr/local/lib/python3.9/site-packages/django/core/management/base.py",
>> line 274, in __init__
>> raise TypeError("requires_system_checks must be a list or tuple.")
>> TypeError: requires_system_checks must be a list or tuple.
>>
>>
> After searching around, I've got a hint of what can be happening. It
> seems a variable has changed in Django 4.1 its nature from boolean to
> a tuple
>
> https://github.com/painless-software/django-probes/issues/24
>
> I've upgraded another server with mailman3 lists, with the same config
> listed above, and it shows the same error in the "compress" part. I'm
> not sure where to set the requires_system_checks variable as in one of
> the comments of the link, and as it doesn't seems to break anything
> more, I will wait for more info before trying to avoid it. I'm sure it
> will have some repercusion on the performance, but I'll have to live
> with it.
>
>
> Thanks again for your supporting advices.
I did a
pip install --upgrade --force-reinstall Django==4.0.8
downgrading Django from 4.1 and now a
su -m mailman3 -c "python3 manage.py compress"
worked without pain.
>
>>
>>
>>
>>
>>
--
___________________________________________
Mailman's content filtering has removed the
following MIME parts from this message.
Content-Type: image/png
Name: firma-GHP-emails.png
Replaced multipart/alternative part with first alternative.
2 years, 5 months

[MM3-users] Re: Docker mailman3 delete social logins, did something change?
by Abhilash Raj
On 9/15/21 7:37 AM, bob B wrote:
> I want to remove the social logins from mailman3 in docker.
Which version tag are you using?
>
> I found this info
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/thread/…
>
> but the link to the default shows
> ***************
> INSTALLED_APPS = []
> DEFAULT_APPS = [
> 'hyperkitty',
> 'postorius',
> 'django_mailman3',
> # Uncomment the next line to enable the admin:
> 'django.contrib.admin',
> # Uncomment the next line to enable admin documentation:
> # 'django.contrib.admindocs',
> 'django.contrib.auth',
> 'django.contrib.contenttypes',
> 'django.contrib.sessions',
> 'django.contrib.sites',
> 'django.contrib.messages',
> 'django.contrib.staticfiles',
> 'rest_framework',
> 'django_gravatar',
> 'compressor',
> 'haystack',
> 'django_extensions',
> 'django_q',
> 'allauth',
> 'allauth.account',
> 'allauth.socialaccount',
> ]
> *****************
The link to default is a dynamic one, so it changes as the changes are
made in the repo, unfortunately, this is basically the new stuff that
isn't out yet.
>
>
> However when I go to the bug https://github.com/maxking/docker-mailman/issues/283
>
> it shows
>
> *********
> INSTALLED_APPS = (
> 'hyperkitty',
> 'postorius',
> 'django_mailman3',
> # Uncomment the next line to enable the admin:
> 'django.contrib.admin',
> # Uncomment the next line to enable admin documentation:
> # 'django.contrib.admindocs',
> 'django.contrib.auth',
> 'django.contrib.contenttypes',
> 'django.contrib.sessions',
> 'django.contrib.sites',
> 'django.contrib.messages',
> 'django.contrib.staticfiles',
> 'rest_framework',
> 'django_gravatar',
> 'paintstore',
> 'compressor',
> 'haystack',
> 'django_extensions',
> 'django_q',
> 'allauth',
> 'allauth.account',
> 'allauth.socialaccount',
> 'django_mailman3.lib.auth.fedora',
> 'allauth.socialaccount.providers.openid',
> 'allauth.socialaccount.providers.github',
> 'allauth.socialaccount.providers.gitlab',
> 'allauth.socialaccount.providers.google',
> )
>
> ********
>
>
> The two examples are different so what should it be?
If you want to remove social auth applications, you basically want to
override INSTALLED_APPS configuraiton in your settings_local.py. In the
list above, you want to remove everything after
'django_mailman3.lib.auth.fedora' and set that as INSTALLED_APPS in your
settings_local.py.
>
> I tried to add it in both ways and when I do I get bad gateway and he mailman website is broke. I have not setup any domains yet, just setup the admin password,.
Bad gateway usually will emit some sort of logging error in the mailman
logs at /opt/mailman/web/logs/, what kind of exception are you seeing there?
The configuration above, while enables social auth, shouldn't *break*
the website. There must be errors/exceptions in logs to point in the
direction of what the error might be.
>
>
> For example this breaks my website
>
> cat /opt/mailman/web/settings_local.py
>
> ALLOWED_HOSTS = ['127.0.0.1','localhost','REDACTED','REDACTED','REDACTED','REDACTED','REDACTED']
> #ALLOWED_HOSTS = ['*']
> DEBUG = True
> #DEBUG = False
> EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
> EMAIL_HOST = 'REDACTED'
> EMAIL_PORT = 25
> INSTALLED_APPS = (
> 'hyperkitty',
> 'postorius',
> 'django_mailman3',
> # Uncomment the next line to enable the admin:
> 'django.contrib.admin',
> # Uncomment the next line to enable admin documentation:
> # 'django.contrib.admindocs',
> 'django.contrib.auth',
> 'django.contrib.contenttypes',
> 'django.contrib.sessions',
> 'django.contrib.sites',
> 'django.contrib.messages',
> 'django.contrib.staticfiles',
> 'rest_framework',
> 'django_gravatar',
> 'paintstore',
> 'compressor',
> 'haystack',
> 'django_extensions',
> 'django_q',
> 'allauth',
> 'allauth.account',
> 'allauth.socialaccount',
> 'django_mailman3.lib.auth.fedora',
> 'allauth.socialaccount.providers.openid',
> 'allauth.socialaccount.providers.github',
> 'allauth.socialaccount.providers.gitlab',
> 'allauth.socialaccount.providers.google',
> )
> *************************************************************************
> And I have even removed anything?
>
> What should my /opt/mailman/web/settings_local.py look like?
--
thanks,
Abhilash Raj (maxking)
3 years, 7 months

[MM3-users] Re: Hyperkitty messages stuck in spool
by Ruth Ivimey-Cook
There may be some benefit in exploring these notes on configuring the
linux memory managers:
https://gist.github.com/JPvRiel/bcc5b20aac0c9cce6eefa6b88c125e03
My thought in suggesting this is that if you can put some back pressure
on the processes running, to indicate that memory is indeed at a
premium, you may be able to extract more from the hardware you have. For
example, use 'ulimit' to prevent specific processes seeing all the
memory they would otherwise see.
In any case, to address the last point Mark makes, I would suggest
adding quite limited amount of swap - perhaps 200-300MB, rather than
1-2GB, for the same reason. You give the kernel somewhere to put things
at need without giving it the scope to go crazy!
Finally, I would suggest going through the installation and remove
everything you can manage that's not critical to running the mailing
list. For example, mysql often runs many threads with lots of buffers,
and on my MM install its virtual memory size (number of bytes it
theoretically could use) is just under 3GB. It's 'resident' size (the
amount it's actually using now) is however just 139MB, with another
2.3GB shared (with other processes on the system -- think c-lib, tls
etc). Tuning mysql to a smaller memory footprint would probably result
in several hundred MB lower use.
Similarly, the same VM is running 'snapd', which claims a virtual size
of 1.2GB and a resident size of 32K; perhaps it's not necessary to run
snapd permanently or even have it installed? It's also using 'lxcfs' the
linux containers framework, which while using very little resident is
still claiming 290MB virtual space.
My point is that all these virtual allocations add up, and while the
kernel will overcommit (to account for memory requested but never used)
and it tries hard, it cannot know which things to prioritise. Making
some of the choices for it can only help.
--
FWIW, my mail server VM is set up with 4 virtual CPUs, 5GB RAM (of which
about 1.7G is actively used and the rest is file block buffer, some of
which will be for shared code files) and 4GB swap (of which it's using
260K). It's running a fairly default setup of mariadb, dovecot,
mailman3, exim4, fail2ban, and spamassassin, and is quite stable. NB I
don't run postorius or django on this server... they're elsewhere. I do
recall adding more RAM a while back, having initially allocated 2GB, and
at the same time adding the swap space; it looks from these numbers the
swap isn't needed and I could if I wanted have just given it 3GB rather
than 5GB RAM (but the server has 64GB and I'm not bothered!).
HTH,
Ruth
On 19/11/2021 16:20, Mark Dadgar wrote:
> On Nov 19, 2021, at 5:47 AM, Andrew Hodgson <andrew(a)hodgson.io> wrote:
>> Thanks for this it was due to changing cloud providers. My old provider I installed Debian from an ISO file which created the swap partition but on the new provider I used their cloud image with no swap. Swap now created and everything is back to normal. Its running on an instance with 2GB of RAM and based on how I am seeing the usage running I would see this as an absolute minimum for a standard Mailman 3 stack.
>
> I had this same experience on Digital Ocean. The short-term fix was enabling swap and the long-term fix was upping my service level to something with more memory. Without swap, I don’t think 2GB is realistically sufficient to run a full mm3 instance.
>
> The cloud providers really don’t like you to run swap because it hammers their SSDs.
>
> - Mark
> -----
> mark(a)pdc-racing.net | 408-348-2878
>
>
> --
> Software Manager & Engineer
> Tel: 01223 414180
> Blog: http://www.ivimey.org/blog
> LinkedIn: http://uk.linkedin.com/in/ruthivimeycook/
3 years, 5 months

[MM3-users] Custom templates (was: Re: Re: nginx configuration on a multitasking server)
by David Newman
On 12/23/21 10:39 AM, Mark Sapiro wrote:
> On 12/23/21 9:57 AM, David Newman wrote:
>>
>> The task-pending message that MM3 sends to list owners and moderators
>> just says generically to check the dashboard, without providing a URL.
>>
>> Can that be modified to provide an explicit URL, something like this?
>>
>> https://lists.example.com/mailman3/lists/listname
>
>
> Yes, That particular message is built from the list:admin:action:post
> template. You may wish to make custom versions of that and other
> templates. The templates and their default values are at
> https://gitlab.com/mailman/mailman/-/tree/master/src/mailman/templates/en
>
> You can make custom versions of templates in two ways. You can create if
> necessary a /opt/mailman/mm/var/templates directory (it probably already
> exists). Within that directory, sitewide English templates are put in
> the site/en/ directory, domain specific English templates are put in the
> domains/<domain_name>/en/ directory and list specific English templates
> are put in the lists/<list_id>/en/ directory.
>
> For templates like this, you probably want sitewide ones. E.g.,
> site/en/list:admin:action:post.txt
> ---------------------------------------------------------------
> As list administrator, your authorization is requested for the
> following mailing list posting:
>
> List: $listname
> From: $sender_email
> Subject: $subject
>
> The message is being held because:
>
> $reasons
>
> At your convenience, visit
> https://lists.example.com/mailman3/lists/$list_id/held_messages
> to approve or deny the request.
> ---------------------------------------------------------------
>
> The other way to create custom templates is via Postotrius, but
> Postorius only creates list and domain specific templates. Also, if you
> create a template in Postorius, it overrides any in
> /opt/mailman/mm/var/templates/ until you delete it in Postorius.
>
> Info about templates and what substitution variables can be used is at
> https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/rest/docs/…
Following up on this thread from a few weeks ago, a custom subscribe
template I defined is not getting sent out.
I created a pending subscription request on a test list. Here is the
text I'm using in a file called 'list:admin:action:subscribe.txt' (minus
the rows of hypens):
----------
As list administrator, your authorization is required for a mailing list
subscription request approval:
For: $member
List: $listname
At your convenience, visit:
https://${domain}/mailman/admindb/lists/${short_listname}.${domain}/
to approve or deny the request.
----------
Instead the message that goes out at midnight daily reads like this:
----------
The test(a)lists.domain.tld list has 1 moderation requests waiting.
Held Subscriptions:
User: letmein(a)domain.tld
Please attend to this at your earliest convenience.
----------
On successive nights I have placed copies of the
'list:admin:action:subscribe.txt' file above in these locations:
mm/var/templates/lists/test.lists.domain.tld/en
/opt/mailman/mm/var/templates/site/en
and then in Postorius, with the same contents as above. The file
versions are owned by the mailman user, and have 0644 permissions. Not
sure this is necessary but I've restarted the mailman3 and mailmanweb
services each time after a change.
There is no sign of trouble in the MM3 or web logs. The only thing I see
is in the Postfix log, where the shorter and less helpful message goes
out each night. I don't see anything in the template docs about this.
Questions:
1. What to do to get the custom message working?
2. Is there a way to trigger a subscribe reminder for one list only?
Asking because there are other lists on this server with other requests
pending, and I don't want to bother other moderators with multiple
reminders per day. Not a big deal, but it would be nice to test this
with one list rather than waiting up to 24 hours after each change.
Thank you!
dn
3 years, 3 months

[MM3-users] Re: Installing mailman 3
by Rafael Mora
The confirmation email says:
Hello from example.com!
Where can I change example.com to mydomain.com ????
Thanks
El mié., 2 ago. 2017 a las 11:50, Abhilash Raj (<raj.abhilash1(a)gmail.com>)
escribió:
> When you set DEBUG=False, Django doesn't serve static files because of
> which you see only text and no styles.
>
>
> http://docs.mailman3.org/en/latest/pre-installation-guide.html#django-stati…
>
> If you do set DEBUG=False, you need to serve the static pages somehow.
>
> Alternatively in you case, you can remove the part of the `settings.py`
> which changes the Emailbackend when `DEBUG=False` so that you don't have
> to worry about serving static files and still send out emails.
>
> On Wed, Aug 2, 2017, at 09:46 AM, Rafael Mora wrote:
> > For testing purpose I turned back to false the DEBUG var and everything
> > started working fine with HyperKitty
> >
> > I don't understand... this is the trace when I click Login from Postorius
> > to HyperKitty
> >
> > [02/Aug/2017 16:43:42] "GET /postorius/lists/ HTTP/1.1" 200 3645
> > [02/Aug/2017 16:43:48] "GET /accounts/login/?next=/postorius/lists/
> > HTTP/1.1" 200 10950
> > [02/Aug/2017 16:43:49] "GET /static/CACHE/css/hyperkitty.2f591b4e31fe.css
> > HTTP/1.1" 200 156657
> >
> >
> > What should I check?
> >
> >
> >
> >
> >
> >
> >
> >
> > El mié., 2 ago. 2017 a las 10:56, Mark Sapiro (<mark(a)msapiro.net>)
> > escribió:
> >
> > > On 08/02/2017 07:55 AM, Rafael Mora wrote:
> > > > HyperKitty is looking for some files in /static/CACHE/... but it
> doesn't
> > > > find them:
> > > >
> > > > [02/Aug/2017 14:53:38] "GET /static/CACHE/css/b3547a2ab51b.css
> HTTP/1.1"
> > > > 404 107
> > > > [02/Aug/2017 14:53:38] "GET /static/CACHE/css/4c17bb8058aa.css
> HTTP/1.1"
> > > > 404 107
> > > > [02/Aug/2017 14:53:38] "GET /static/CACHE/css/2fa1cba00450.css
> HTTP/1.1"
> > > > 404 107
> > > > [02/Aug/2017 14:53:38] "GET /static/CACHE/js/4ce1260ef558.js
> HTTP/1.1"
> > > 404
> > > > 105
> > > > [02/Aug/2017 14:53:39] "GET /static/CACHE/js/4ce1260ef558.js
> HTTP/1.1"
> > > 404
> > > > 105
> > > >
> > > >
> > > > Should I run any command to activate the CACHE dir?
> > >
> > >
> > > You need to ensure you have a working sass compiler. As I said at
> > > <
> > >
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
> > > >,
> > > See the third bullet under
> > > <http://docs.list.org/en/latest/prodsetup.html#dependencies>.
> > >
> > > Then you need to run commands like
> > >
> > > django-admin collectstatic --clear
> > > django-admin compress
> > >
> > >
> > > --
> > > Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
> > > San Francisco Bay Area, California better use your sense - B. Dylan
> > > _______________________________________________
> > > Mailman-users mailing list
> > > mailman-users(a)mailman3.org
> > > https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> > >
> > --
> >
> > Atentamente / Best Regards
> >
> > Ing. Rafael Mora
> > _______________________________________________
> > Mailman-users mailing list
> > mailman-users(a)mailman3.org
> > https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>
>
> --
> thanks,
> Abhilash Raj
> _______________________________________________
> Mailman-users mailing list
> mailman-users(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>
--
Atentamente / Best Regards
Ing. Rafael Mora
7 years, 8 months

[MM3-users] Re: Mails are not archived at all -- how to check if Hyperkitty is running or not?
by Tamas HOLCZER
Hi Franklin,
when I installed mailman3 on Debian I had some issues. One was about
MAILMAN_ARCHIVER_FROM. It turned out, that the request to Hyperkitty was
sent from one of the real IPs of the machine (not from localhost). This
depends on the interfaces and the routing of that machine. In my case
the solution was something like:
MAILMAN_ARCHIVER_FROM = ('127.0.0.1', '::1', '1.2.3.4', '1.2.3.5') ,
where 1.2.3.4 and 1.2.3.5 are the IP addresses of the machine running
mailman3 (I have not debugged if it is using .4 or .5 in reality I left
both of them there). Give it a try with your IPs.
Tamás
2019. 10. 30. 8:52 keltezéssel, Franklin Weng írta:
> Hi,
>
> It looks like to have some clues now.
>
> Mark Sapiro <mark(a)msapiro.net> 於 2019年10月30日 週三 13:07 寫道:
>
>> On 10/29/19 8:21 PM, Franklin Weng wrote:
>>> Yes, it is checked.
>> Have you checked Mailman's logs - Mailman's var/logs/mailman.log in
>> particular?
>>
> I found some hyperkitty URL error:
>
> The default settings of base_url in mailman-hyperkitty.cfg is defined as
>
> base_url: http://localhost/mailman/hyperkitty/
>
> In the mailman.log there are messages like:
>
> Oct 30 13:53:43 2019 (14259) HyperKitty failure on
> http://localhost/mailman3/hyperkitty/api/mailman/archive: <!DOCTYPE HTML
> PUBLIC "-//IETF//
> DTD HTML 2.0//EN">
> <html><head>
> <title>404 Not Found</title>
> </head><body>
> <h1>Not Found</h1>
> <p>The requested URL was not found on this server.</p>
>
> I changed it to
>
> base_url: https://localhost/mailman3/hyperkitty/
>
> then the log became
>
> File "/usr/lib/python3/dist-packages/requests
> /adapters.py", line 514, in send
> raise SSLError(e, request=request)
> requests.exceptions.SSLError: HTTPSConnectionPool(host='localhost',
> port=443): Max retries exceeded with url:
> /mailman3/hyperkitty/api/mailman/archive?key=xxx (Caused by
> SSLError(SSLCertVerification Error("hostname 'localhost' doesn't match '
> lists.slat.org'")))
>
> which makes sense because the SSL certificate applied from Letsencrypt is
> for lists.slat.org.
>
> If I use
>
> base_url: https://lists.slat.org/mailman3/hyperkitty/
>
> The log became
>
> Oct 30 15:25:50 2019 (6256) HyperKitty failure on
> https://lists.slat.org/mailman3/hyperkitty/api/mailman/urls:
> <html><title>Auth required</title><body>
>
> <h1>Authorization Required</h1>
> </body></html> (401)
>
> In my mailman-web.py:
>
> MAILMAN_ARCHIVER_KEY = 'my-key,same as in mailman-hyperkitty.cfg'
> MAILMAN_ARCHIVER_FROM = ('127.0.0.1', '::1')
>
> Not sure what to change here.
>
>
>> Do messages received from the list have an Archived-At: header?
>>
> Yes, but it's empty
>
>
> List-Id: 測試論壇 <slat-list.lists.slat.org>
> Archived-At: <>
> List-Archive: <>
> List-Help: <mailto:slat-list-request@lists.slat.org?subject=help>
> List-Post: <mailto:slat-list@lists.slat.org>
> List-Subscribe: <mailto:slat-list-join@lists.slat.org>
> List-Unsubscribe: <mailto:slat-list-leave@lists.slat.org>
>
>
>
>> What's in /etc/mailman3/mailman-hyperkitty.cfg? In particular does the
>> [general] setting base_url define a URL that accesses hyperkitty
>
> It seems to be the question…
>
>
> and
>> does the [general] setting api_key match the MAILMAN_ARCHIVER_KEY
>> setting in /etc/mailman3/mailman-web.py, but note that the
>> MAILMAN_ARCHIVER_KEY setting is quotes because it is a Python string
>> assignment and the api_key setting is not quoted
>>
> Yes, it's single quoted.
>
>
> Thanks for all your help!
>
>
> Franklin
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
5 years, 5 months

[MM3-users] Re: Wrong info in moderation mail when held due to match of a header rule
by tlhackque
On 17-Oct-20 18:40, Mark Sapiro wrote:
> On 10/17/20 1:31 PM, tlhackque via Mailman-users wrote:
>> I might also add the rule number or config filename:line, as in
>>
>> Header "{name}": rule in {file}:{n} matched value "{value}"
>>
>> This would be helpful when backtracking from a rejected message to the
>> cause.
>>
>> A sample expansion might be:
>>
>> Header "X-Spam": rule in foo.conf:83 matched value "yes"
>
> These rules are not in a configuration file. They are in the headermatch
> table in the database and the rules for a particular list are exposed on
> the Header filters tab in Postorius or at the REST
> lists/LISTNAME/header-matches endpoint.
>
> Perhaps something like
>
> {name}: header match rule, pattern "{pattern}" matched value "{value}"
>
> example:
>
> subject: header match rule, pattern "sex|long|list|of|other|bad|words"
> matched value "This is a post about filtering based on words like sex in
> the subject."
>
> but that could be just adding more clutter.
>
I considered including the regex in each message, but that seemed
redundant - and potentially long. Thus the pointer. Perhaps number the
rules for each list, and use that index? The ROWID would seem to be a
candidate for the number.
Then Postorius could simply number the rules in its tab; the REST API
can add the ROWID as a rule_ID field in the returned JSON. (The fact
that it's a ROWID rather than an index or unique name is an
implementation detail.)
If many rules are anticipated, it might want an endpoint or option to
fetch a rule by ID. Then it would be easy to drill down on a specific
event for diagnosis.
e.g.
shunt_reason: (or whatever) {
cause: "header_match"
header: "subject"
header_value: "This is a post about filtering based on words like sex
in the subject."
rule_id: 47 /* or pattern_id? */
}
displays as
subject: header match rule 47, matched value "This is a post about
filtering based on words like sex in
the subject."
and
lists/LISTNAME/header-matches/47 returns {
rule_id: 47
pattern: "sex|long|list|of|other|bad|words"
position: 3
/* Whatever else is in your table... I haven't looked since I postponed
using MM3. eg */
comment:"Required by policy 869.202"
last_updated_by: "Corporate Prude"
last_updated_on: "1-Apr-1762"
}, while
lists/LISTNAME/header-matches returns an array of those structures,
presumably as today.
With those capabilities, the UI can be enhanced so that clicking on a
shunted message gives the summary reason, and clicking on the summary
gives the regex. I expect that the header and value will be sufficient
for understanding an issue most of the time. Looking at the regex is
less common, and only necessary when it needs to be updated...
I still think that it is more readable and less verbose to order the
message as a declarative sentence:
Header "subject": rule 47 matched value "sex"
but that may be a matter of personal taste. The UI can sort that out...
Note that from your description, using ROWID may cause rules in a
particular list to have gaps in the rule numbering. I don't think
that's a big issue, though Postorious could paper that over - perhaps
use the position attribute. Doesn't seem worth doing something more
complex. The advantage is that it doesn't require any DB change now.
But aliasing it to "rule_id" allows for any future demand to name the
rules or use some other numbering scheme.
I may have some details wrong - I found mm3 not ready for my needs and
am thus out of date - but I hope the high level approach that I outlined
is useful.
4 years, 6 months

[MM3-users] Re: Still unable to get mailman3 working on Ubuntu 20.04 LTS
by Michael Heseltine
Hi Philip, Stephen, anyone,
I've read a little further, and from what I gather this HAYSTACK play some part in providing a full text search for mailing list messages. But I cannot find any indication whatsoever how to set it. As I understand it, HAYSTACK_CENNECTIONS is a variable to be set in settings.py, but no matter what I set there be that (from https://django-haystack.readthedocs.io/en/master/settings.html)
> HAYSTACK_CONNECTIONS = {
> 'default': {
> 'ENGINE': 'haystack.backends.solr_backend.SolrEngine',
> 'URL': 'http://localhost:9001/solr/default',
> 'TIMEOUT': 60 * 5,
> 'INCLUDE_SPELLING': True,
> 'BATCH_SIZE': 100,
> 'EXCLUDED_INDEXES': ['thirdpartyapp.search_indexes.BarIndex'],
> },
> 'autocomplete': {
> 'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine',
> 'PATH': '/opt/mailman/mm/whoosh_index',
> 'STORAGE': 'file',
> 'POST_LIMIT': 128 * 1024 * 1024,
> 'INCLUDE_SPELLING': True,
> 'BATCH_SIZE': 100,
> 'EXCLUDED_INDEXES': ['thirdpartyapp.search_indexes.BarIndex'],
> },
> 'slave': {
> 'ENGINE': 'xapian_backend.XapianEngine',
> 'PATH': '/opt/mailman/mm/xapian_index',
> 'INCLUDE_SPELLING': True,
> 'BATCH_SIZE': 100,
> 'EXCLUDED_INDEXES': ['thirdpartyapp.search_indexes.BarIndex'],
> },
> 'db': {
> 'ENGINE': 'haystack.backends.simple_backend.SimpleEngine',
> 'EXCLUDED_INDEXES': ['thirdpartyapp.search_indexes.BarIndex'],
> }
> }
(which seems wrong to me because the mailman3 HowTo makes no mention of anything else than whoosh)
or just the default from https://docs.mailman3.org/projects/mailman-web/en/latest/settings.html :
> {'default': {'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine',
> 'PATH': 'fulltext_index'}}
I seem to get the same error message:
> # /opt/mailman/mm/bin/mailman-post-update
> + '[' False == False ']'
> + mkdir -p /opt/mailman/mm/static
> + /opt/mailman/mm/bin/django-admin collectstatic --clear --noinput --verbosity 0
> Traceback (most recent call last):
> File "/opt/mailman/mm/venv/bin/django-admin", line 8, in <module>
> sys.exit(execute_from_command_line())
> File "/opt/mailman/mm/venv/lib/python3.8/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line
> utility.execute()
> File "/opt/mailman/mm/venv/lib/python3.8/site-packages/django/core/management/__init__.py", line 395, in execute
> django.setup()
> File "/opt/mailman/mm/venv/lib/python3.8/site-packages/django/__init__.py", line 24, in setup
> apps.populate(settings.INSTALLED_APPS)
> File "/opt/mailman/mm/venv/lib/python3.8/site-packages/django/apps/registry.py", line 114, in populate
> app_config.import_models()
> File "/opt/mailman/mm/venv/lib/python3.8/site-packages/django/apps/config.py", line 301, in import_models
> self.models_module = import_module(models_module_name)
> File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module
> return _bootstrap._gcd_import(name[level:], package, level)
> File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
> File "<frozen importlib._bootstrap>", line 991, in _find_and_load
> File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
> File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
> File "<frozen importlib._bootstrap_external>", line 848, in exec_module
> File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
> File "/opt/mailman/mm/venv/lib/python3.8/site-packages/compressor/models.py", line 1, in <module>
> from compressor.conf import CompressorConf # noqa
> File "/opt/mailman/mm/venv/lib/python3.8/site-packages/compressor/conf.py", line 9, in <module>
> class CompressorConf(AppConf):
> File "/opt/mailman/mm/venv/lib/python3.8/site-packages/appconf/base.py", line 73, in __new__
> new_class._configure()
> File "/opt/mailman/mm/venv/lib/python3.8/site-packages/appconf/base.py", line 102, in _configure
> value = callback(value)
> File "/opt/mailman/mm/venv/lib/python3.8/site-packages/compressor/conf.py", line 115, in configure_url
> if not value.endswith('/'):
> AttributeError: 'NoneType' object has no attribute 'endswith'
which looks to me like a parsing error (though I don't know which error, nor which file is being parsed).
What am I doing wrong here? Is there any default or sample setting for HAYSTACK_CONNECTIONS that I can use? Or else, can I disable haystack/whoosh altogether? I really just want to get two small mailing lists up and running on this site, with no bells and whistles whatsoever. But these error messages wouldn't be any less clearer to me if they were written in Mandarin. :-(
Cheers, Michael.
3 years, 3 months

[MM3-users] Re: Sendgrid experiences
by Andrew Hodgson
Thanks for this. Another option I am thinking of is buying a cheap Linode or other host which isn’t on as many blocklists as Hetzner for outbound mail relay purposes. Hetzner provide a good cheap VPS but their Ips are on a lot of blacklists.
Andrew.
From: Stephen Daniel <swd(a)pobox.com>
Sent: Thursday, May 11, 2023 3:14 PM
To: Andrew Hodgson <andrew(a)hodgson.io>
Cc: Stephen J Turnbull <turnbull(a)sk.tsukuba.ac.jp>; mailman-users(a)mailman3.org
Subject: Re: [MM3-users] Re: Sendgrid experiences
I'll check my notes. I don't think I did anything with mailman.
I am running postfix as my local MTA, and mailman talks to it as normal.
In /etc/postfix/main.cf<http://main.cf> I have
relayhost = smtp-relay.gmail.com:submission
set. It took a bit of playing around to get it running, but its been rock solid since then.
Domains have not been a problem. My google workspace account is MYDOMAIN.dev and all my email lists are MYDOMAIN.org, and everything appears to work just fine.
I took a bunch of cryptic notes on how I got this working. As you would expect, the hard part is getting the authentication and permissions set up.
I will send you a private message with a link to my notes.
On Thu, May 11, 2023 at 10:00 AM Andrew Hodgson <andrew(a)hodgson.io<mailto:andrew@hodgson.io>> wrote:
Hi.
Thanks for the recommendation on the Google Workspace. How did you set this up in terms of the domain, since I don’t want to use Google Workspace as the main email provider for this domain. Also did you have to set anything special in Mailman?
Thanks.
Andrew.
From: Stephen Daniel <swd(a)pobox.com<mailto:swd@pobox.com>>
Sent: Thursday, May 11, 2023 2:57 PM
To: Andrew Hodgson <andrew(a)hodgson.io<mailto:andrew@hodgson.io>>
Cc: Stephen J Turnbull <turnbull(a)sk.tsukuba.ac.jp<mailto:turnbull@sk.tsukuba.ac.jp>>; mailman-users(a)mailman3.org<mailto:mailman-users@mailman3.org>
Subject: Re: [MM3-users] Re: Sendgrid experiences
I would definitely look for alternatives to SendGrid. I tried using them and had a very poor rate of people actually getting my emails, even when I temporarily upgraded to an expensive plan with a dedicated IP address.
I'm currently hosting mailman in Google Cloud and relaying outbound mail through a Google Workspace account. It's working OK. The workspace account costs me $6/month for basically unlimited mail relay.
On Thu, May 11, 2023 at 9:50 AM Andrew Hodgson <andrew(a)hodgson.io<mailto:andrew@hodgson.io>> wrote:
Stephen J Turnbull wrote:
>2023-05-10 03:49 に Andrew Hodgson wrote:
>> Sendgrid is maintaining the Message-Id header which is good for
>> archiving. It is re-writing the Return-Path header though which means
>> that bounce handling in Mailman won't work, but I think all the
>> services do this in some way so I am happy to live with that for the
>> moment.
>How does it rewrite the Return-Path? Returned mail is not something that such a service would be able to handle properly (although they can help with apparently returned spam). If mail is legitmately sent and returned as undeliverable, only the author or their agent will know how to handle it. So such >services should provide some way to find out about returned mail.
An example:
Return-Path:
bounces+[Sendgrid GUID]-andrew=hodgson.io(a)em6096.lists.hodgsonfamily.org<mailto:hodgson.io@em6096.lists.hodgsonfamily.org>
Sendgrid provide information about bounces but crucially that bounce isn't forwarded back to the original return-path sender (i.e, Mailman).
A few people have pointed out they can provide list hosting at a cheaper cost than Sendgrid so I'm looking for alternatives again.
Andrew.
_______________________________________________
Mailman-users mailing list -- mailman-users(a)mailman3.org<mailto:mailman-users@mailman3.org>
To unsubscribe send an email to mailman-users-leave(a)mailman3.org<mailto:mailman-users-leave@mailman3.org>
https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
Archived at: https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
This message sent to swd(a)pobox.com<mailto:swd@pobox.com>
1 year, 11 months

[MM3-users] Re: Mailman, etc. upgrade woes and persistent bugs
by Abhilash Raj
On Sun, Feb 14, 2021, at 8:59 AM, Allan Hansen wrote:
> Mark,
>
> Thank you for this reminder, but it’s not really sufficient for most.
> The ‘Mailman Settings’ dialog does, indeed show the other preferences
> tags, and yes, as you say, the dialog for ‘List-based preferences’ only
> shows values that are not inherited and when you set a value there, it
> shows.
>
> There a two problems with this:
>
> a. Once a value is overridden on the ‘List-based preferences’ dialog,
> you cannot go back to it being inherited by removing the override.
Yes! This is something we've known for a while and haven't been able
to fix properly.
https://gitlab.com/mailman/postorius/-/issues/414
https://gitlab.com/mailman/postorius/-/issues/195
There more than one open issue for this. And one of the reasons it
hasn't been fixed yet is that it is larger problem than most low hanging
fruits that gets fixed in the available time window for the us to work
on issue.
This is a long weekend for me, so I'll start some work on this, but not
sure if that would be enough to finish.
> b. You cannot see, on this dialog, what the inherited value is.
https://gitlab.com/mailman/postorius/-/issues/476
I opened an issue for this too, but this might be a little bit longer of
a task because the whole inheritance and calculation of effective
preference/setting happens in Core. It would require that Core
expose the effective values.
We do have some calculation of preferences in Postorius to display
the "Global Mailman preferences" page for a User.
> This is not user-friendly.
>
> May I suggest the following:
>
> That each option shows the following:
>
> o Value 1
> o Value 2
> (or the equivalent for pull-down menus)
>
> A box showing inheritance status:
> [ ] Use inherited value from address-based preference: Value2
>
> If the ‘Use inherited value’ is chosen, then the inherited value shows.
> but the value radio buttons become non-selectable.
It is a good idea, might need Javascript skills that I don't have ;-) I'll still
try to take a stab at implementing such a view.
> If not, then whatever value the value radio box has become the value
> for the list,
>
> From what I see, the ‘Use inherited value’ is the default for new
> lists/addresses. To change a value, the user would
> uncheck this box, making the radio buttons selectable, and then set the
> desired value.
>
> Yours,
>
> Allan
>
>
> > On Feb 12, 2021, at 11:52 , Mark Sapiro <mark(a)msapiro.net> wrote:
> >
> >> I then looked at several of the disabled accounts, but the subscription info page in Postorius had no information about whether an account was enabled or disabled. Why is this not displayed???. The members can't see if their account is enabled. Is this another example of the disconnect between Mailman and Postorius?
> >
> >
> > If the user has a Django account, she can see all that info at (e.g. for
> > this list) <https://lists.mailman3.org/mailman3/accounts/subscriptions/ <https://lists.mailman3.org/mailman3/accounts/subscriptions/>>
> > She gets there from `Mailman settings` in the dropdown under her user
> > name. She can also get there via the `Manage Subscription` button on the
> > list's Info page. That takes her to `List-based preferences` for the
> > list. Any setting not selected there is inherited from the Address-based
> > preferences or Global Mailman preferences
>
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>
--
thanks,
Abhilash Raj (maxking)
4 years, 2 months

[MM3-users] mailman3 in a FreeBSD jailed host IPv6 problem[SOLVED] (was Re: upgrading in FreeBSD 13.1-p7: problem with aiosmtpd and lmtp runner)
by Guillermo Hernandez (Oldno7)
(I left the relevant part of the previous thread at bottom to give context)
(Knowing that this could be of less interest to the majority os
suscribers in this list, I write it down for someone that could be
searching for a solution out there)
I you have mailman3 in a FreeBSD jailed server, and your lmtp runner
stops working after mailman3.3.8 upgrade the most probably cause is the
IPv6 config of the jail and the "::1" IP of the localhost.
Disclaimer: I find the next to work, but as I don't use IPv6 (and know
nothing about its complexities), it could be a mistaken config. But I
asume that if you have the same problem, it is in a no IPv6 aware
server, otherwise you would not have this situation.
In the jail config of the parent host I configured explicitily this IPv6 IP
ip6.addr = "::2";
And in the /etc/hosts definitions of the jailed host
#::1 localhost localhost.yourserver.com
::2 localhost localhost.yourserver.com
After that, restarted the jail and the lmpt runner will work again as
it's expected
And the rest of the services will work too.
Thanks for your patience.
El 3/4/23 a las 8:02, Guillermo Hernandez (Oldno7) via Mailman-users
escribió:
>
>> Also, I don't think the problem is with Mailman per se. The
>> underlying issue is in the Python library socket module. Try the
>> following in a Python 3 shell
>> ```
>> $ python3
>> Python 3.9.16 (main, Dec 11 2022, 12:49:23)
>> [GCC 9.4.0] on linux
>> Type "help", "copyright", "credits" or "license" for more information.
>> >>> from socket import AF_INET6, SOCK_STREAM, socket as makesock
>> >>> sock = makesock(AF_INET6, SOCK_STREAM)
>> >>> sock.bind(("::1", 0))
>> >>> sock.close()
>> ```
>> This is essentially what aiosmtpd does and I expect that `sock =
>> makesock(AF_INET6, SOCK_STREAM)` will throw the `OSError: [Errno 43]
>> Protocol not supported` exception.
>>
> And you are right (ther is more down of this):
>
> Python 3.9.16 (main, Dec 15 2022, 09:41:07)
> [Clang 13.0.0 (git@github.com:llvm/llvm-project.git
> llvmorg-13.0.0-0-gd7b669b3a on freebsd13
> Type "help", "copyright", "credits" or "license" for more information.
> >>> from socket import AF_INET6, SOCK_STREAM, socket as makesock
> >>> sock = makesock(AF_INET6, SOCK_STREAM)
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> File "/usr/local/lib/python3.9/socket.py", line 232, in __init__
> _socket.socket.__init__(self, family, type, proto, fileno)
> OSError: [Errno 43] Protocol not supported
>
> Buuuuuut, if I do the same in the "father" server:
>
> Python 3.9.16 (main, Dec 15 2022, 09:41:07)
> [Clang 13.0.0 (git@github.com:llvm/llvm-project.git
> llvmorg-13.0.0-0-gd7b669b3a on freebsd13
> Type "help", "copyright", "credits" or "license" for more information.
> >>> from socket import AF_INET6, SOCK_STREAM, socket as makesock
> >>> sock = makesock(AF_INET6, SOCK_STREAM)
> >>> sock.bind(("::1", 0))
> >>> sock.close()
> File "<stdin>", line 1
> sock.close()
> IndentationError: unexpected indent
> >>> sock.close()
> >>>
>
> The server can open a socket without problem. As I though previously
> it has to be something with the jailed envviroment. Your test had
> probe me right (and wrong in my jail tests). It's very valuable. I
> know now where I can dig more.
>
> Thanks a lot
>
>
--
___________________________________________
Mailman's content filtering has removed the
following MIME parts from this message.
Content-Type: image/png
Name: firma-GHP-emails.png
Replaced multipart/alternative part with first alternative.
2 years

[MM3-users] Re: Apache Conf
by Abhilash Raj
On Fri, Oct 19, 2018, at 12:29 PM, Thomas G wrote:
> Yes, of course.
>
> Nginx and Apache works on the same server. (Nginx is stopped)
> I would like switch to Apache to add in front of hyperkitty a ldap
> connection.> I need to re-compile nginx for this feature. It's directly available
> in apache with a module.
Not sure the reason for this, the docs mention that what you had
initially and also what Mark mentioned should have worked. Both of them
seem to be supported syntax from the docs[1].
The only difference that I can see is quotes, not sure if that would
affect things.
[1]: https://httpd.apache.org/docs/2.4/mod/mod_alias.html#alias
>
> In fact, a tried directly to integrade LDAP with django
> (https://gitlab.com/mailman/postorius/issues/132) without results.>
>
>
>
>
>
>
>
> Le ven. 19 oct. 2018 à 20:18, Abhilash Raj <maxking(a)asynchronous.in>
> a écrit :>>
>>
>> On Fri, Oct 19, 2018, at 12:17 PM, Thomas G wrote:
>> > Hi tried both.
>> >
>> > Same result.
>> >
>> > xxxx - - [19/Oct/2018:21:14:22 +0200] "GET
>> > /static/postorius/js/script.js>> > HTTP/1.1" 404 4051 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:60.0)
>> > Gecko/20100101 Firefox/60.0"
>>
>>
>> And, you have verified that the files exist at `/opt/mailman/static`
>> on your host?>>
>> >
>> >
>> > Le ven. 19 oct. 2018 à 18:59, Mark Sapiro <mark(a)msapiro.net> a
>> > écrit :>> >
>> > > On 10/19/18 10:29 AM, Guiseppin Thomas wrote:
>> > > > Hi,
>> > > > Currently, I use a nginx configuration for mailman. It's work
>> > > > perfectly.>> > > >
>> > > > I tried to do the same with Apache, but the statics files are
>> > > > not>> > > > delivered (404).
>> > > ...
>> > > > <VirtualHost *:80>
>> > > > ServerName mailing.ddd.fr
>> > > >
>> > > > ErrorLog ${APACHE_LOG_DIR}/mailing.error.log
>> > > > CustomLog ${APACHE_LOG_DIR}/mailing.access.log combined
>> > > >
>> > > > <Location /static/>
>> > > > Alias "/opt/mailman/static/"
>> > > > </Location>
>> > > >
>> > > > <Location />
>> > > > ProxyPass http://localhost:8000/
>> > > > ProxyPassReverse http://localhost:8000/
>> > > > ProxyPreserveHost On
>> > > > </Location>
>> > > > </VirtualHost>/
>> > >
>> > >
>> > > In Apache, location
>> > > <http://httpd.apache.org/docs/2.4/mod/core.html#location> is not>> > > appropriate for resources in the file system.
>> > >
>> > > Try
>> > >
>> > > Alias /static/ /opt/mailman/static/
>> > >
>> > > not within a location block.
>> > >
>> > > --
>> > > Mark Sapiro <mark(a)msapiro.net> The highway is for
>> > > gamblers,>> > > San Francisco Bay Area, California better use your sense - B.
>> > > Dylan>> > > _______________________________________________
>> > > Mailman-users mailing list -- mailman-users(a)mailman3.org
>> > > To unsubscribe send an email to mailman-users-leave(a)mailman3.org>> > > https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/>> > >
>> > _______________________________________________
>> > Mailman-users mailing list -- mailman-users(a)mailman3.org
>> > To unsubscribe send an email to mailman-users-leave(a)mailman3.org
>> > https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/>>
>>
>> --
>> thanks,
>> Abhilash Raj (maxking)
--
thanks,
Abhilash Raj (maxking)
6 years, 6 months

[MM3-users] Re: docker mailman-core mailman3 image not responding on port 8024
by Abhilash Raj
Sorry for stepping in this very late.
The problems here are possibly due to the recent changes in the docker-mailman related to removal of static IPs in the container images. The changes have been reported working by some folks, but i know that they aren’t really using the docker-compose.yaml provided in the repo or have highly customized versions of those so the combination of both might be broken.
It is also a problem that the documentation isn’t versioned properly to signify the difference that has been made in the repo since the last released version of the container image :(
Either way, can you share the contents of /etc/mailman.cfg from inside the mailman-core container? That is most definitive source of truth for what actually configuration is being passed to Mailman Core to infer which actual host:port is the LMTP runner listening to and if the configuration being passed to it are what we expect.
Abhilash
> On Aug 17, 2021, at 7:17 AM, bob B <bader(a)cchmc.org> wrote:
>
> Ok, I took a step back and started fresh... So the issue appears to be that mailman-core docker image is not replying on port 8024.
>
> I did a packet capture and it shows (172.23.01 is the gateway for the docker network on the host, 172.23.03 is the IP of mailman-core when I did the capture)
> ***************************************
> 1 2021-08-16 14:15:14.865053 172.23.0.1 172.23.0.3 TCP 74 34066 → 8024 [SYN] Seq=0 Win=29200 Len=0 MSS=1460 SACK_PERM=1 TSval=985607751 TSecr=0 WS=128
> 2 2021-08-16 14:15:14.865084 172.23.0.3 172.23.0.1 TCP 54 8024 → 34066 [RST, ACK] Seq=1 Ack=1 Win=0 Len=0
> ***************************************
>
> The above show the docker host sending/relaying mail to mailman-core, but mailman-core does not acknowledge on port 8024.
>
> The images are up i.e
> ***************************************
> 58923db6fb9f maxking/mailman-core:0.3 "docker-entrypoint.s…" 26 minutes ago Up 25 minutes 127.0.0.1:8001->8001/tcp, 127.0.0.1:8024->8024/tcp mailman-core
> ***************************************
>
>
>
> Docker yamel has the port setup (8024)
> ***************************************
> services:
> mailman-core:
> image: maxking/mailman-core:0.3
> container_name: mailman-core
> hostname: mailman-core
> .
> .
> ports:
> - "127.0.0.1:8001:8001" # API
> - "127.0.0.1:8024:8024" # LMTP - incoming emails
> networks:
> mailman:
> ***************************************
>
> I can nc to the ports for docker web & 8001 on core and they are listening
>
> But 8024 is not responding
> ***************************************
> #>docker-mailman-host]# nc -v 172.23.0.4 8000
> Ncat: Version 7.50 ( https://nmap.org/ncat )
> Ncat: Connected to 172.23.0.4:8000.
> ^C
> #>docker-mailman-host]# nc -v 172.23.0.4 8080
> Ncat: Version 7.50 ( https://nmap.org/ncat )
> Ncat: Connected to 172.23.0.4:8080.
> ^C
> #>docker-mailman-host]# nc -v 172.23.0.3 8001
> Ncat: Version 7.50 ( https://nmap.org/ncat )
> Ncat: Connected to 172.23.0.3:8001.
> ^C
>
> #>docker-mailman-host]# nc -v 172.23.0.3 8024
> Ncat: Version 7.50 ( https://nmap.org/ncat )
> Ncat: Connection refused
> ***************************************
>
> Docker logs show postfix is up on mailman-core
> ***************************************
> sudo docker logs mailman-core
> List of databases
> Name | Owner | Encoding | Collate | Ctype | Access privileges
> -----------+---------+----------+------------+------------+---------------------
> mailmandb | mailman | UTF8 | en_US.utf8 | en_US.utf8 |
> postgres | mailman | UTF8 | en_US.utf8 | en_US.utf8 |
> template0 | mailman | UTF8 | en_US.utf8 | en_US.utf8 | =c/mailman +
> | | | | | mailman=CTc/mailman
> template1 | mailman | UTF8 | en_US.utf8 | en_US.utf8 | =c/mailman +
> | | | | | mailman=CTc/mailman
> (4 rows)
>
> Postgres is up - continuing
> Using Postfix configuration
> Found configuration file at /opt/mailman/mailman-extra.cfg
> HYPERKITTY_URL not set, using the default value of http://mailman-web:8000/hyperkitty
>
> ***************************************
>
>
>
> Any ideas is there anything else I can do to troubleshoot? Is the issue with the mailman-core image?
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
--
thanks,
Abhilash Raj (maxking)
3 years, 8 months

[MM3-users] Re: Still unable to get mailman3 working on Ubuntu 20.04 LTS
by Mark Sapiro
On 1/8/22 12:31 PM, Michael Heseltine wrote:
> Hi Mark, Stephen,
> in fact, there isn't anything running on port 8000, even though I added the service description files under "/lib/systemd/system" as detailed in the HowTo.
>
> Looking at "journalctl -xe", both the "gunicorn" and the "qcluster" service run into errors i don't understand:
>
> (qcluster)
>> Jan 08 21:22:23 lists.mydomain.com systemd[1]: qcluster.service: Start request repeated too quickly.
>> Jan 08 21:22:23 lists.mydomain.com systemd[1]: qcluster.service: Failed with result 'exit-code'.
>> -- Subject: Unit failed
>> -- Defined-By: systemd
>> -- Support: http://www.ubuntu.com/support
>> --
>> -- The unit qcluster.service has entered the 'failed' state with result 'exit-code'.
>> Jan 08 21:22:23 lists.mydomain.com systemd[1]: Failed to start HyperKitty async tasks runner.
>> -- Subject: A start job for unit qcluster.service has failed
>> -- Defined-By: systemd
>> -- Support: http://www.ubuntu.com/support
>> --
>> -- A start job for unit qcluster.service has finished with a failure.
>> --
>> -- The job identifier is 734836 and the job result is failed.
This isn't your immediate problem, but it is an issue. The above isn't
too informative. What do you get if you run
/opt/mailman/mm/bin/django-admin qcluster
manually?
> (gunicorn)
>> Jan 08 21:24:58 lists.mydomain.com systemd[1]: gunicorn.service: Failed with result 'exit-code'.
>> -- Subject: Unit failed
>> -- Defined-By: systemd
>> -- Support: http://www.ubuntu.com/support
>> --
>> -- The unit gunicorn.service has entered the 'failed' state with result 'exit-code'.
>> ...skipping...
>> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: File "/opt/mailman/mm/bin/gunicorn", line 14, in>
>> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: sys.exit(gunicorn.app.wsgiapp.run())
>> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: File "/opt/mailman/mm/venv/lib/python3.8/site-pa>
>> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: WSGIApplication("%(prog)s [OPTIONS] [APP_MODUL>
>> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: File "/opt/mailman/mm/venv/lib/python3.8/site-pa>
>> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: super().run()
>> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: File "/opt/mailman/mm/venv/lib/python3.8/site-pa>
>> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: Arbiter(self).run()
>> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: File "/opt/mailman/mm/venv/lib/python3.8/site-pa>
>> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: self.halt(reason=inst.reason, exit_status=inst>
>> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: File "/opt/mailman/mm/venv/lib/python3.8/site-pa>
>> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: self.stop()
>> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: File "/opt/mailman/mm/venv/lib/python3.8/site-pa>
>> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: time.sleep(0.1)
>> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: File "/opt/mailman/mm/venv/lib/python3.8/site-pa>
>> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: self.reap_workers()
>> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: File "/opt/mailman/mm/venv/lib/python3.8/site-pa>
>> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: raise HaltServer(reason, self.WORKER_BOOT_ERRO>
>> Jan 08 21:24:57 lists.mydomain.com gunicorn[3707354]: gunicorn.errors.HaltServer: <HaltServer 'Worker fa>
>> Jan 08 21:24:58 lists.mydomain.com systemd[1]: gunicorn.service: Main process exited, code=exited, statu>
>> -- Subject: Unit process exited
>> -- Defined-By: systemd
>> -- Support: http://www.ubuntu.com/support
>> --
>> -- An ExecStart= process belonging to unit gunicorn.service has exited.
>> --
>> -- The process' exit code is 'exited' and its exit status is 1.
It would help to see the full traceback, not truncated at the right. You
can scroll the display to the right with the right arrow key or just
find the messages in /var/log/syslog.
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
3 years, 3 months

[MM3-users] Re: Remove old bounces in bouncedir
by Stephan Krinetzki
Mark Sapiro wrote:
> On 3/10/22 00:31, Stephan Krinetzki wrote:
> > Mark Sapiro wrote:
> > If you are referring to messages in Mailman's bounces queue, if these
> > are not processed and removed within 15 minutes of arrival, Mailman's
> > bounce runner is not running.
> > Well, it is the queue.Our var directory is under /opt/mailman/var and the /opt/mailman/var/queue/bounces is over 8GB big. There are *.pck messages and some of them are very old (>3 Years). The bounce seems to be running:
> > Mar 10 09:24:53 2022 (376) Member xxx@xxx already scored a bounce on list list.lists.example.com today.
> > Mar 10 09:25:00 2022 (376) Member xxx@xxx already scored a bounce on list list.lists.example.com today.
> > Mar 10 09:25:06 2022 (376) Member xxx@xxx already scored a bounce on list list.lists.example.com today.
> > Mar 10 09:25:12 2022 (376) Member xxx@xxx already scored a bounce on list list.lists.example.com today.
> > Mar 10 09:25:18 2022 (376) Member xxx@xxx already scored a bounce on list list.lists.example.com today.
> > Mar 10 09:25:24 2022 (376) Member xxx@xxx already scored a bounce on list list.lists.example.com today.
> > Mar 10 09:25:30 2022 (376) Member xxx@xxx already scored a bounce on list list.lists.example.com today.
> > Mar 10 09:25:36 2022 (376) Member xxx@xxx already scored a bounce on list list.lists.example.com today.
> > Mar 10 09:25:43 2022 (376) Member xxx@xxx already scored a bounce on list list.lists.example.com today.
> > Mar 10 09:25:49 2022 (376) Member xxx@xxx already scored a bounce on list list.lists.example.com today.
> >
> > The process it self is there
> > mailman 376 99.4 19.1 6578312 6279000 ? R 09:17 10:52 venv/bin/python3 venv/bin/runner -C mailman.cfg --runner=bounces:0:1
> >
> > I don't understand what's happening. If the bounces runner is processing
> it's queue, those .pck files should be processed and deleted.
> Are there errors in /opt/mailman/var/logs/mailman?
Nope. Only the daily info, that it runs. For today:
Mar 14 03:15:34 2022 (21507) Task runner evicted 25336 expired pendings
Mar 14 03:15:43 2022 (21507) Task runner deleted 3696 orphaned workflows
Mar 14 03:16:09 2022 (21507) Task runner deleted 7965 orphaned requests
Seems to be okay
> If you examine (some of) those files with mailman qfile do you see
> anything strange?
Nope. Just regular Bounce Files.
> Is there an ownership/permissions issue? Sometimes people run Mailman or
> some Mailman command as root and things get owned by root and then
> when Mailman is later run as mailman it can't delete or maybe even
> read them.
Nope:
/opt/mailman/var/queue/bounces
ls -altrh | head
total 12G
-rw-rw---- 1 mailman mailman 37K Jan 5 09:51 1641372708.3212914+fc901998d5e2ace166db31ace6d77081b0c7650c.pck
-rw-rw---- 1 mailman mailman 42K Jan 5 09:52 1641372768.1659493+7afbcddc270547485732252874adcc27e04c9983.pck
-rw-rw---- 1 mailman mailman 42K Jan 5 09:52 1641372768.2633681+73c527870449492689fd30502b73f455a191701e.pck
-rw-rw---- 1 mailman mailman 7.7K Jan 5 09:58 1641373138.119037+2d5dd400e989db3303517b900d7f2b312d4cd7b5.pck
-rw-rw---- 1 mailman mailman 7.7K Jan 5 09:58 1641373139.585048+ee824dec757735ef8bd8139ee0cd858cc7c92606.pck
-rw-rw---- 1 mailman mailman 288K Jan 5 09:58 1641373139.846666+d75af26011eb1a8ef5673d9ee13c5425daec2bd4.pck
-rw-rw---- 1 mailman mailman 288K Jan 5 09:59 1641373140.024808+be60d1d97590d77eaec46751524d1bfe7a2f9ee7.pck
-rw-rw---- 1 mailman mailman 289K Jan 5 09:59 1641373140.8432257+678f545d176008a5483b8bc6747aebc2b84a7f4e.pck
-rw-rw---- 1 mailman mailman 288K Jan 5 09:59 1641373141.505824+c253072ebeb3f07b2b455725ace225abdd621b22.pck
As you can see, there are old messages (not 3 years old, but some months old)
> > If you are referring to bounce messages in the message store
> > (var/messages/), there have been issues with those not being removed,
> > but Mailman core >= 3.3.5 should clean those up.
> > SInce the messages are hashed or otherwise stored, i can't verify or deny this.
> > Is the size of the /opt/mailman/var/messages directory very big?
Nope, it's 1.9GB at the moment. I don't think that's big.
Is there anyway to run the bounce runner manually and get the debug output of it?
3 years, 1 month

[MM3-users] Re: Another interesting error...
by Darren Smith
"It's in Mailman's database in the 'message' table."
I can see the message table - is there a way to see where it is marked as
"held"? All I'm seeing in that table is id, message_id, message_id_hash,
and path.
I'm wanting to be able to query for held messages for a given mailing list,
as there are currently over 98,000 entries in the message table.
-Darren
On Mon, Apr 23, 2018 at 3:17 PM, Mark Sapiro <mark(a)msapiro.net> wrote:
> On 04/23/2018 01:31 PM, Darren Smith wrote:
> > So it appears that there was a message sent to one of our mailing lists
> > that was put into the held message queue. However, when attempting to go
> to
> > the message to do the moderation, the web page returns and Error 500.
> >
> > Looking in the mailman log, I found this:
> >
> > Apr 23 14:21:02 2018 (17878) REST request handler error:
> > Traceback (most recent call last):
> > File "/opt/mailman3/conda/lib/python3.6/wsgiref/handlers.py", line
> 137,
> > in run
> > self.result = application(self.environ, self.start_response)
> > File
> > "/opt/mailman3/conda/lib/python3.6/site-packages/
> mailman/database/transac
> > tion.py", line 50, in wrapper
> > rtn = function(*args, **kws)
> > File
> > "/opt/mailman3/conda/lib/python3.6/site-packages/
> mailman/rest/wsgiapp.py"
> > , line 214, in __call__
> > return super().__call__(environ, start_response)
> > File "/opt/mailman3/conda/lib/python3.6/site-packages/falcon/api.py",
> > line 227 , in __call__
> > responder(req, resp, **params)
> > File
> > "/opt/mailman3/conda/lib/python3.6/site-packages/
> mailman/rest/post_modera
> > tion.py", line 167, in on_get
> > resource = self._make_collection(request)
> > File
> > "/opt/mailman3/conda/lib/python3.6/site-packages/
> mailman/rest/helpers.py"
> > , line 159, in _make_collection
> > for resource in collection]
> > File
> > "/opt/mailman3/conda/lib/python3.6/site-packages/
> mailman/rest/helpers.py"
> > , line 159, in <listcomp>
> > for resource in collection]
> > File
> > "/opt/mailman3/conda/lib/python3.6/site-packages/
> mailman/rest/post_modera
> > tion.py", line 157, in _resource_as_dict
> > resource = self._make_resource(request.id)
> > File
> > "/opt/mailman3/conda/lib/python3.6/site-packages/
> mailman/rest/post_modera
> > tion.py", line 100, in _make_resource
> > make_header(decode_header(resource['subject'])))
> > File "/opt/mailman3/conda/lib/python3.6/email/header.py", line 174, in
> > make_he ader
> > h.append(s, charset)
> > File "/opt/mailman3/conda/lib/python3.6/email/header.py", line 295, in
> > append
> > s = s.decode(input_charset, errors)
> > UnicodeDecodeError: 'gb2312' codec can't decode byte 0x87 in position 2:
> > illegal multibyte sequence
> >
> > It LOOKS as if there might be a character in the email somewhere -
> possibly
> > in the subject or sender fields? - that is somehow unexpected.
>
>
> It appears that the Subject: header is RFC 2047 encoded and there is an
> encoded word with charset gb2312 that contains an invalid encoding.
>
> The message is apparently defective, but this kind of defect shouldn't
> cause a 500 error.
>
> I can't tell for sure from the traceback if this is Postorius or some
> other application accessing the REST api. Is it Postorius or something
> else?
>
>
> > I am attempting to find the held message - can someone point me where I
> can
> > go to see the message so that I can see what might be causing the
> problem?
>
>
> It's in Mailman's database in the 'message' table.
>
> --
> Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
> San Francisco Bay Area, California better use your sense - B. Dylan
> _______________________________________________
> Mailman-users mailing list
> mailman-users(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>
7 years

[MM3-users] Re: Email verification
by Abhilash Raj
> On Feb 9, 2020, at 12:47, Allan Hansen <hansen(a)rc.org> wrote:
>
> They go out but are not received or found. The addresses are valid.
>
> I’m just looking for a way to help them over this hump. The error message indicates that ‘we’ can help.
>
I guess we in this case is ‘You’, the administrator of the service. And help in this case was intended to check if there are problems with settings and outgoing emails, which you have already done :)
Finally, if you go into the Django’s admin interface, https://example.com/admin, you’ll find an EmailAddress table, where you can find and manually verify the user’s email address (check box to select “verified” and hit save).
Hope that is helpful!
Abhilash
> Yours,
>
> Allan Hansen
> hansen(a)rc.org
>
>
>
>
>> On Feb 9, 2020, at 9:54 , Abhilash Raj <maxking(a)asynchronous.in> wrote:
>>
>>
>>
>>> On Sun, Feb 9, 2020, at 9:38 AM, Allan Hansen wrote:
>>> Thank you, Abhilash.
>>> Yes. People are getting these messages. I just got a message from one who had the issue. I asked her to try to sign in again and then she got the verification message.
>>>
>>> It’s just that some have issues, and I’d like to be able to help.
>>
>> Can you check your MTA logs to see if those confirmation emails were indeed sent out?
>>
>> It would help figure out of the email was never sent out or whether they didn't receive it.
>>
>>> Yours,
>>>
>>> Allan Hansen
>>> hansen(a)rc.org
>>>
>>>
>>>
>>>> On Feb 9, 2020, at 9:12 , Abhilash Raj <maxking(a)asynchronous.in> wrote:
>>>>
>>>>
>>>>
>>>>> On Sun, Feb 9, 2020, at 8:05 AM, Allan Hansen wrote:
>>>>> Some members cannot get past the email verification when they create
>>>>> their accounts.
>>>>> They insist that they have looked in their spam folders. Their email
>>>>> addresses they entered are correct - the are able to log into their
>>>>> accounts with the right email address. But they get the message saying
>>>>> that a confirmation message was sent and if they don’s see it to
>>>>> contact us.
>>>>
>>>> Is your Django configured to send out emails?
>>>>
>>>> https://docs.mailman3.org/en/latest/config-web.html#setting-up-email-requir…
>>>>
>>>>
>>>>>
>>>>> 1. Who is ‘us’? My members are asking...
>>>>> 2. How do I help them?
>>>>>
>>>>> I tried subscribing them to a bogus list with pre-verified email, but
>>>>> that did not work, so both they and I are stuck.
>>>>> Tried finding help in archive, but did not see anything.
>>>>>
>>>>> Yours,
>>>>>
>>>>> Allan Hansen
>>>>> hansen(a)rc.org
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Mailman-users mailing list -- mailman-users(a)mailman3.org
>>>>> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
>>>>> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>>>>
>>>> --
>>>> thanks,
>>>> Abhilash Raj (maxking)
>>>> _______________________________________________
>>>> Mailman-users mailing list -- mailman-users(a)mailman3.org
>>>> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
>>>> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>>
>> --
>> thanks,
>> Abhilash Raj (maxking)
>>
>>
>
5 years, 2 months

[MM3-users] Mm3 - new adventure
by SP2L
Greetings.
I have up&running Mailman-2.1.23 on my web site.
Lately started adventurous journey with Mailman3
which is way, way different already from the beginning.
Used Mailman bundler to install GNU Mailman, Postorius and HyperKitty
testing instance in virtual environment, mainly relaying on belows recipe:
https://gitlab.com/mailman/mailman-bundler/
Present status.
Above trio and MySQLServer are "talking" to each other
but because there isproper database on MySQLServer
I am facing strange and unexpected issues, Hi!
Executing last two commands:
(venv)$ ./bin/mailman start
(venv)$ ./bin/mailman-web-django-admin runserver 0.0.0.0:8000 &
I see Postorius and HyperKitty up & runningbut...
Belowvery condensed messages from the console:
/HyperKitty/
DEBUG = False
[12/Mar/2017 18:59:43] "GET /archives/ HTTP/1.1" 200 8002
WARNING Not Found:
/static/hyperkitty/libs/jquery/smoothness/jquery-ui-1.10.3.custom.min.css
WARNING Not Found:
/static/hyperkitty/libs/jquery/smoothness/jquery-ui-1.10.3.custom.min.css
WARNING Not Found:
/static/hyperkitty/libs/font-awesome/css/font-awesome.min.css
WARNING Not Found: /static/CACHE/css/cbbaa5c82a81.css
WARNING Not Found:
/static/hyperkitty/libs/font-awesome/css/font-awesome.min.css
[12/Mar/2017 18:59:43] "GET
/static/hyperkitty/libs/jquery/smoothness/jquery-ui-1.10.3.custom.min.css
HTTP/1.1" 404 146
WARNING Not Found: /static/hyperkitty/libs/icomoon/icomoon.css
WARNING Not Found: /static/CACHE/css/cbbaa5c82a81.css
WARNING Not Found:
/static/hyperkitty/libs/jquery/jquery-ui-1.10.3.custom.min.js
WARNING Not Found: /static/CACHE/js/e6cc5c334937.js
WARNING Not Found: /static/hyperkitty/libs/icomoon/icomoon.css
WARNING Not Found:
/static/hyperkitty/libs/jquery/jquery-ui-1.10.3.custom.min.js
[12/Mar/2017 18:59:43] "GET
/static/hyperkitty/libs/font-awesome/css/font-awesome.min.css HTTP/1.1"
404 134
WARNING Not Found: /static/CACHE/js/e6cc5c334937.js
[12/Mar/2017 18:59:43] "GET /static/CACHE/css/cbbaa5c82a81.css HTTP/1.1"
404 107
[12/Mar/2017 18:59:43] "GET
/static/hyperkitty/libs/jquery/jquery-ui-1.10.3.custom.min.js HTTP/1.1"
404 134
[12/Mar/2017 18:59:43] "GET /static/hyperkitty/libs/icomoon/icomoon.css
HTTP/1.1" 404 116
[12/Mar/2017 18:59:43] "GET /static/CACHE/js/e6cc5c334937.js HTTP/1.1"
404 105
WARNING Not Found: /static/hyperkitty/img/logo.png
WARNING Not Found: /static/hyperkitty/img/logo.png
[12/Mar/2017 18:59:43] "GET /static/hyperkitty/img/logo.png HTTP/1.1"
404 104
WARNING Not Found:
/static/hyperkitty/libs/jquery/jquery-ui-1.10.3.custom.min.js
WARNING Not Found:
/static/hyperkitty/libs/jquery/jquery-ui-1.10.3.custom.min.js
[12/Mar/2017 18:59:43] "GET
/static/hyperkitty/libs/jquery/jquery-ui-1.10.3.custom.min.js HTTP/1.1"
404 134
WARNING Not Found: /static/CACHE/js/e6cc5c334937.js
WARNING Not Found: /static/CACHE/js/e6cc5c334937.js
[12/Mar/2017 18:59:43] "GET /static/CACHE/js/e6cc5c334937.js HTTP/1.1"
404 105
DEBUG = True
[12/Mar/2017 19:01:49] "GET /archives/ HTTP/1.1" 200 8762
[12/Mar/2017 19:01:49] "GET
/static/hyperkitty/libs/bootstrap/javascripts/bootstrap.min.js HTTP/1.1"
304 0
[12/Mar/2017 19:01:49] "GET /static/hyperkitty/libs/jquery.expander.js
HTTP/1.1" 304 0
[12/Mar/2017 19:01:49] "GET /static/hyperkitty/libs/d3.v2.min.js
HTTP/1.1" 304 0
[12/Mar/2017 19:01:49] "GET /static/hyperkitty/libs/jquery.hotkeys.js
HTTP/1.1" 304 0
[12/Mar/2017 19:01:49] "GET /static/hyperkitty/js/hyperkitty-common.js
HTTP/1.1" 304 0
[12/Mar/2017 19:01:49] "GET /static/hyperkitty/js/hyperkitty-index.js
HTTP/1.1" 304 0
[12/Mar/2017 19:01:49] "GET /static/hyperkitty/js/hyperkitty-overview.js
HTTP/1.1" 304 0
[12/Mar/2017 19:01:49] "GET /static/hyperkitty/js/hyperkitty-thread.js
HTTP/1.1" 304 0
[12/Mar/2017 19:01:49] "GET
/static/hyperkitty/js/hyperkitty-userprofile.js HTTP/1.1" 304 0
[12/Mar/2017 19:01:49] "GET /static/hyperkitty/libs/icomoon/icomoon.css
HTTP/1.1" 200 699
[12/Mar/2017 19:01:49] "GET
/static/hyperkitty/libs/jquery/smoothness/jquery-ui-1.10.3.custom.min.css
HTTP/1.1" 200 18334
[12/Mar/2017 19:01:49] "GET
/static/hyperkitty/libs/jquery/jquery-ui-1.10.3.custom.min.js HTTP/1.1"
200 58173
[12/Mar/2017 19:01:49] "GET
/static/CACHE/css/hyperkitty.fe05f9db56f4.css HTTP/1.1" 200 196499
[12/Mar/2017 19:01:49] "GET
/static/hyperkitty/libs/font-awesome/css/font-awesome.min.css HTTP/1.1"
200 17780
[12/Mar/2017 19:01:49] "GET /static/hyperkitty/img/logo.png HTTP/1.1"
200 21168
/mailman3/
DEBUG = False
Server Error (500)
DEBUG = True
HTTP Error 500: A server error occurred. Please contact the administrator.
Exception Location:
/var/lib/mailman3/mailman-bundler/eggs/mailmanclient-1.0.1-py2.7.egg/mailmanclient/_client.py
in call, line 109
Then VERY, verylong list...
By means of PhpMyAdmin I created manually mailman3 database
and few tables (looking at 0001_initial.py) , but it is not working O.K.
This handmade table is not doing it's job.
How I can export skeleton of Mm3 database to MySQLServer, please?
How to solve Server Error (500)? Where to look first?
Best regards.
--
Tom - SP2L
------------------------------------
It is nice to be important.
But it is more important to be nice!
8 years, 1 month

[MM3-users] Re: Installing Mailman3 on Debian Bullseye
by Stephen J. Turnbull
Franklin Weng writes:
> Thanks for your comments!
Thank you for following up on my queries.
> > As far as I know, Debian packages use the system Python and the
> > system Django. Is that correct?
>
> Correct.
This means that you're stuck with the Debian version of the Mailman 3
suite until they update which can be slow. Mailman 3 is now mature
enough that if you're still happy with the Debian version a month
after installing, you'll probably still be happy with it when Debian
updates. It's a good tradeoff for the majority.
But for example mixing a "testing" Mailman with a "stable" Python is
likely to end badly because we frequently upgrade required levels of
dependencies. So you either have to get a Debian upgrade of Mailman
of your current Debian version, or you need to move to a whole
not-stable Debian system. Not a pleasant choice if you think you need
new features or a bugfix *now*.
This is why we recommend the venv or other isolated installations.
They allow you to upgrade the dependencies as well as the core
packages without interfering with the rest of your system.
> IIRC I got some errors about handling characters encoding if I
> don't set up charset in language.master and language.en
> section. But the memory is vague and I don't want to go back
> retesting that...
I suspect that you set up charset in .master and realized that it
doesn't work because .en overrides it with ASCII, and then fixed .en.
That's what happened to me.
> Honestly I was totally confused by all these, and as I have said,
> the MM3/Django/Hyperkitty/... documents didn't help much.
Upstream documents are rarely very helpful with whole sets of large
packages from distros in my experience. You install the packages, you
go through a bunch of configuration screens, and you finish knowing
*nothing about how anything works*. Then you need a little tweak that
the configuration screens don't deal with, and you don't even have the
vocabulary to grep or Google effectively. :-( Then again, I'm the
kind of person who prepares to sleep by reading software manuals. ;-)
But I do think you lose quite a bit of knowledge by using packages,
and it's painful to find obscure details without it.
Django doesn't actually show its face much in Mailman, so Django docs
are not much use even to the site admin, unless you actually hack on
Mailman. The only exceptions are authentication and the template
language. Authentication is just hard, with more details then the
Lego set in the Lego store. The templating docs are pretty good, IMO.
The Mailman docs are in somewhat sad state. The content is actually
quite comprehensive and detailed as these things go, but much of it is
hard to discover. The original idea was to keep the docs in the
sources, as doctests for examples and in the docs directory for
exposition. These docs are more developer-oriented, obviously. Then
there were several attempts to create a suite package which would
require core, Postorius, and HyperKitty and streamline the setup
process. The "mailman-suite" version came with a companion
"mailman-suite-docs" package, which I think is now the basis for
mailman.readthedocs.io aka docs.mailman3.org. However mailman-suite
turned out to more trouble than it was worth, and mailman-web was
developed to address the more useful approach of unifying some
mailman-to-Django APIs for Postorius and HyperKitty (the
django_mailman3 package) and configuration (a unified settings.py, as
well as standardized top-level urls.py and views.py). Of course each
of these contributed more documentation, some of it redundant, older
versions left to slowly become obsolete (ie, incorrect) ....
"Someday" I'd like get the documents reorganized, eliminate as much
redundancy as possible and make things more discoverable. But it's a
mammoth task.
Steve
1 year, 7 months

[MM3-users] List is down - RemovedInDjango30Warning
by Mark Dadgar
So I did the latest mailman upgrades within my venv (per the instructions got from Brian Carpenter when he installed it for me) to the latest version. I had a strange CPU pegging issue that turned out to be mailman struggling with a malformed message but in the process of debugging that I downgraded to the previous mailman release.
The resulted in a broken web interface.
Today, while debugging, I did a pip install --upgrade of all the components as listed in a previous thread. Now none of the mailman3 processes will start.
Doing a bin/mailman-post-update results in the error message below, which are consistent with the issues I saw earlier when trying to access the web interface.
Anyone got a solution to this?
I suspect it’s something simple, but django is just not my area of expertise.
Thanks!
- Mark
-----
mark(a)pdc-racing.net | 408-348-2878
———
(venv) mailman@mail:/opt/mailman/mm/bin$ ./mailman-post-update
+ '[' False == False ']'
+ mkdir -p /opt/mailman/mm/static
+ /opt/mailman/mm/bin/django-admin collectstatic --clear --noinput --verbosity 0
+ /opt/mailman/mm/bin/django-admin compress
Traceback (most recent call last):
File "/opt/mailman/mm/venv/lib/python3.8/site-packages/django/template/utils.py", line 66, in __getitem__
return self._engines[alias]
KeyError: 'django'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/mailman/mm/venv/lib/python3.8/site-packages/django/template/backends/django.py", line 121, in get_package_libraries
module = import_module(entry[1])
File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 783, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/opt/mailman/mm/venv/lib/python3.8/site-packages/django/contrib/admin/templatetags/admin_static.py", line 5, in <module>
from django.utils.deprecation import RemovedInDjango30Warning
ImportError: cannot import name 'RemovedInDjango30Warning' from 'django.utils.deprecation' (/opt/mailman/mm/venv/lib/python3.8/site-packages/django/utils/deprecation.py)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/mailman/mm/venv/bin/django-admin", line 8, in <module>
sys.exit(execute_from_command_line())
File "/opt/mailman/mm/venv/lib/python3.8/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
utility.execute()
File "/opt/mailman/mm/venv/lib/python3.8/site-packages/django/core/management/__init__.py", line 395, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/opt/mailman/mm/venv/lib/python3.8/site-packages/django/core/management/base.py", line 328, in run_from_argv
self.execute(*args, **cmd_options)
File "/opt/mailman/mm/venv/lib/python3.8/site-packages/django/core/management/base.py", line 369, in execute
output = self.handle(*args, **options)
File "/opt/mailman/mm/venv/lib/python3.8/site-packages/compressor/management/commands/compress.py", line 277, in handle
self.handle_inner(**options)
File "/opt/mailman/mm/venv/lib/python3.8/site-packages/compressor/management/commands/compress.py", line 300, in handle_inner
offline_manifest, block_count, results = self.compress(engine, extensions, verbosity, follow_links, log)
File "/opt/mailman/mm/venv/lib/python3.8/site-packages/compressor/management/commands/compress.py", line 100, in compress
if not self.get_loaders():
File "/opt/mailman/mm/venv/lib/python3.8/site-packages/compressor/management/commands/compress.py", line 50, in get_loaders
for e in engines.all():
File "/opt/mailman/mm/venv/lib/python3.8/site-packages/django/template/utils.py", line 90, in all
return [self[alias] for alias in self]
File "/opt/mailman/mm/venv/lib/python3.8/site-packages/django/template/utils.py", line 90, in <listcomp>
return [self[alias] for alias in self]
File "/opt/mailman/mm/venv/lib/python3.8/site-packages/django/template/utils.py", line 81, in __getitem__
engine = engine_cls(params)
File "/opt/mailman/mm/venv/lib/python3.8/site-packages/django/template/backends/django.py", line 25, in __init__
options['libraries'] = self.get_templatetag_libraries(libraries)
File "/opt/mailman/mm/venv/lib/python3.8/site-packages/django/template/backends/django.py", line 43, in get_templatetag_libraries
libraries = get_installed_libraries()
File "/opt/mailman/mm/venv/lib/python3.8/site-packages/django/template/backends/django.py", line 108, in get_installed_libraries
for name in get_package_libraries(pkg):
File "/opt/mailman/mm/venv/lib/python3.8/site-packages/django/template/backends/django.py", line 123, in get_package_libraries
raise InvalidTemplateLibrary(
django.template.library.InvalidTemplateLibrary: Invalid template library specified. ImportError raised when trying to load 'django.contrib.admin.templatetags.admin_static': cannot import name 'RemovedInDjango30Warning' from 'django.utils.deprecation' (/opt/mailman/mm/venv/lib/python3.8/site-packages/django/utils/deprecation.py)
4 years, 2 months

[MM3-users] Re: upgrading in FreeBSD 13.1-p7: problem with aiosmtpd and lmtp runner
by Odhiambo Washington
On Sun, Apr 2, 2023 at 11:35 AM Guillermo Hernandez (Oldno7) via
Mailman-users <mailman-users(a)mailman3.org> wrote:
> As you could have read yesterday, I had problems upgrading to the last
> versions of mailman3 related apps. The lmtp runner stopped after upgrade
> and showed and error in aiosmtpd package.
>
> the O.S. version running may servers is FreeBSD 13.1-p7
>
> That was in a mailman3 server with few lists and traffic. O did the
> upgrade today in the server that has many lists and hard traffic. When I
> restarted mailman it showed this trace:
>
> Generating MTA alias maps
> /usr/local/mailman3 # Traceback (most recent call last):
> File "/usr/local/bin/runner", line 33, in <module>
> sys.exit(load_entry_point('mailman==3.3.8', 'console_scripts',
> 'runner')())
> File "/usr/local/lib/python3.9/site-packages/click/core.py", line
> 1130, in __call__
> return self.main(*args, **kwargs)
> File "/usr/local/lib/python3.9/site-packages/click/core.py", line
> 1055, in main
> rv = self.invoke(ctx)
> File "/usr/local/lib/python3.9/site-packages/click/core.py", line
> 1404, in invoke
> return ctx.invoke(self.callback, **ctx.params)
> File "/usr/local/lib/python3.9/site-packages/click/core.py", line
> 760, in invoke
> return __callback(*args, **kwargs)
> File "/usr/local/lib/python3.9/site-packages/click/decorators.py",
> line 26, in new_func
> return f(get_current_context(), *args, **kwargs)
> File "/usr/local/lib/python3.9/site-packages/mailman/bin/runner.py",
> line 184, in main
> runner = make_runner(*runner_spec, once=once)
> File "/usr/local/lib/python3.9/site-packages/mailman/bin/runner.py",
> line 70, in make_runner
> return runner_class(name, slice)
> File
> "/usr/local/lib/python3.9/site-packages/mailman/runners/lmtp.py", line
> 295, in __init__
> self.lmtp = LMTPController(LMTPHandler(), hostname=hostname,
> port=port)
> File "/usr/local/lib/python3.9/site-packages/aiosmtpd/controller.py",
> line 417, in __init__
> self._localhost = get_localhost()
> File "/usr/local/lib/python3.9/site-packages/aiosmtpd/controller.py",
> line 66, in get_localhost
> with makesock(AF_INET6, SOCK_STREAM) as sock:
> File "/usr/local/lib/python3.9/socket.py", line 232, in __init__
> _socket.socket.__init__(self, family, type, proto, fileno)
> OSError: [Errno 43] Protocol not supported
>
> As Mark pointed it can be circunverted modifying
> /PATH_TO_YOUR_PYTHON/site-packages/aiosmtpd/controller.py and changing
> the 49th line as this:
>
> # Helper function to assist in mocking^M
> ## return has_ipv6^M
> return False
>
> After that, restarting mailman 3 works perfectly.
>
> It seems that FreeBSD is handling IPv6 in a way that other OSs dont. It
> surprise me, because FreeBSD was the first OS where IPv6 was deployed,
> but it is what it is.
>
> Thaks to everybody for your patience, specially Odhiambo and Mark.
>
@Guillermo Hernandez (Oldno7) <guillermo(a)querysoft.es>
Thanks for the update. However, I don't think I would entirely blame
FreeBSD for this. As Mark pointed out, something did not upgrade completely.
This could be some quirk within your FreeBSD ports and you may need to
ensure everything related to your Python version is updated.
Why am I saying this?
I am running MM3 in a virtualenv on FreeBSD (13.1-p6) and I did upgrade to
the bleeding-edge MM3 by running all components from git, and I don't have
this problem you had.
Could you possibly fully update your Python libraries by following the
entry dated 20220626 in /usr/ports/UPDATING? Could you run all the steps,
do away with the workaround, and see if that fixes the issue?
PS: I don't even think many people are running MM3 on FreeBSD, leave alone
from the ports. I have come to learn that even in Linux, using the distro's
packages is usually problematic.
Running MM3 from virtualenv is quite safe and to be honest, you can migrate
your setup from where it is now to a virtualenv and you will not lose
anything.
--
Best regards,
Odhiambo WASHINGTON,
Nairobi,KE
+254 7 3200 0004/+254 7 2274 3223
"Oh, the cruft.", egrep -v '^$|^.*#' ¯\_(ツ)_/¯ :-)
2 years

[MM3-users] Re: Post-installation documentation?
by David Newman
On 11/24/21 2:36 PM, Mark Sapiro wrote:
> On 11/24/21 9:40 AM, David Newman wrote:
>>
>> IMO post-installation docs for list admins would be a big help in
>> Mailman3 adoption. I'm willing to help with this.
>
>
> Thank you for being willing to contribute. I think the place for list
> admin docs would be in the https://gitlab.com/mailman/mailman-suite-doc
> project which is the source for https://docs.mailman3.org/en/latest/.
> There is currently a userguide there at source/userguide.rst and
> referenced from source/index.rst. the addition of an adminguide.rst
> would be welcom if you want to work on that.
Thanks, will get into this ASAP. Am happy to contribute once I acquire a
bit more clue.
>
>
>> When I say "working": I'm looking to migrate Mailman2 mailing lists to
>> Mailman3, but am struggling with even basic setup tasks before we
>> attempt list migtration.
>>
>> For example, on admin page I've set up two lists, one public and one
>> private (each with unique list IDs), but neither appear in the site's
>> list index.
>
>
> Here are the steps to migrate a 2.1 list named `alist(a)example.com` and
> its archives.
>
> run Mailman's `bin/mailman create alist(a)example.com`
>
> follow that with
> ```
> bin/mailman import21 alist(a)example.com
> /path/to/mailman2.1/lists/alist/config.pck
> ```
> That will create the list and import its members and settings.
>
> To import archives run the Django admin command with arguments
> ```
> hyperkitty_import -l alist(a)example.com
> /path/to/mailman2.1/archives/private/alist.mbox/alist.mbox
Good up to here, but ... hyperkitty_import not found.
This wasn't covered in the venv docs:
https://docs.mailman3.org/en/latest/install/virtualenv.html
or in the web frontend docs [1]:
https://docs.mailman3.org/en/latest/config-web.html
or in the howto Brian Carpenter (RIP) wrote for Debian 10:
https://wiki.list.org/DOC/Howto_Install_Mailman3_On_Debian10
Also, I had previously created two other lists under the site admin
page. These do not appear in the site's mailing lists page, nor does the
list I successfully imported from MM 2.1 appear in the admin page, under
mailing lists.
> ```
>
>> And I don't know where to add list members.
>
>
> For imported lists, they are already added, but for new lists, you can
> add them in Postorius under Mass operations -> Mass subscribe or via the
> bin/mailman commands `addmembers` or `syncmembers`. See
> https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/commands/d…
>
>
>
>> And clicking the site archives link throws this error:
>>
>> django.urls.exceptions.NoReverseMatch: Reverse for 'hk_list_overview'
>> with keyword arguments '{'mlist_fqdn': 'wheee'}' not found. 1
>> pattern(s) tried: ['archives/list/(?P<mlist_fqdn>[^/@]+@[^/@]+)/$']
>
>
> Did you specify the list's fqdn as in
> https://www.example.com/archives/list/list@example.com/
No. I clicked the archives icon at the top of a Postorious page. This is
possibly related to the hyperkitty_import issue above.
Thanks again.
dn
[1] In addition to the web frontend docs, there is also a hyperkitty
docs page:
https://docs.mailman3.org/projects/hyperkitty/en/latest/install.html
I found this page unhelpful. For example it starts with this command:
sudo python setup.py install
but doesn't say where setup.py resides, or which directory the command
should be run from. (And yes, different OSs use different locations. I'd
setting for one being named, along with a YMMV disclaimer.)
Then this doc goes to database setup, with this example:
django-admin migrate --pythonpath example_project --settings settings
Again, this is unclear. I don't know what "example_project" is, or in
what context it's used here.
This doc also describes a different, and less straightforward,
import-from-2.1 procedure than Mark described above.
It's possible the hyperkitty doc is now outdated. I'd be glad to help
bring the various different install guides together and update them --
once I better understand how they work. Thanks.
3 years, 4 months

[MM3-users] Re: mailman 3.x upgrade and downgrade
by C. Souza
On Tue, Jul 12, 2022 at 12:21 PM Mark Sapiro <mark(a)msapiro.net> wrote:
> On 7/12/22 6:12 AM, skooperit(a)gmail.com wrote:
> > Hi all,
> >
> > I have a few contradictory questions.
> >
> > 1. How to upgrade the 3.x version?
> >
> > 2. Is it possible to migrate (downgrade) the lists from mailman 3.x to
> 2.1?
> >
> > 3. If so, what would be the best way to do that?
> >
> >
> > My mailing list server is running on a CenOS-7x with postgreSQL and the
> following mailman packages:
> >
> > django-mailman3 1.3.5
> > mailman 3.3.2
> > mailman-hyperkitty 1.1.0
> > mailman-web 0.0.3
> > mailmanclient 3.3.2
> > postorius 1.3.3
> >
> > We have ~200 lists with more than a decade of history.
>
>
> So you have installed Mailman 3, apparently following
> https://docs.mailman3.org/en/latest/install/virtualenv.html. There is a
> caveat. Current released versions of HyperKitty (I don't see your
> version above) don't work with mistune >= 2.0.0.
>
> This is https://gitlab.com/mailman/hyperkitty/-/issues/431, fixed by
> https://gitlab.com/mailman/hyperkitty/-/merge_requests/379 but not yet
> released.
>
> If your installed mistune is not 2.0.0rc1, you can work around this with
> this patch
> ```
> --- a/hyperkitty/lib/renderer.py
> +++ b/hyperkitty/lib/renderer.py
> @@ -4,7 +4,7 @@ from django.conf import settings
>
> import mistune
> from mistune.plugins.extra import plugin_url
> -from mistune.scanner import escape_html, escape_url
> +from mistune.util import escape_html, escape_url
>
>
> class MyRenderer(mistune.HTMLRenderer):
> ```
> Or you can downgrade mistune with
> ```
> pip install mistune==2.0.0rc1
> ```
> in your virtualenv.
>
> To answer your questions, to migrate your lists, you use `mailman
> import21` and to migrate archives, `mailman-web hyperkitty_import`. Give
> these commands with the `--help` option for more info.
>
> Downgrading lists from Mailman 3 to Mailman 2.1 is not currently
> possible. There is no inverse to `mailman import21`. You can export a
> HyperKitty archive as a mbox to use as input to Mailman 2.1s bin/arch.
>
> --
> Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
> San Francisco Bay Area, California better use your sense - B. Dylan
>
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
Thanks Mark.
You're right it was installed in a virtualenv using pip.
I can't see the mistune package, maybe it wasn't a requirement for that
version of mm3.
1 Package Version
2 ------------------- ----------
3 aiosmtpd 1.2.4
4 alembic 1.5.3
5 arrow 0.17.0
6 asgiref 3.3.1
7 atpublic 2.1.2
8 authheaders 0.13.0
9 authres 1.2.0
10 bleach 3.3.0
11 blessed 1.17.12
12 certifi 2020.12.5
13 cffi 1.14.4
14 chardet 4.0.0
15 click 7.1.2
16 cmarkgfm 0.5.2
17 cryptography 3.3.1
18 decorator 4.4.2
19 defusedxml 0.6.0
20 Django 3.0.12
21 django-allauth 0.44.0
22 django-appconf 1.0.4
23 django-compressor 2.4
24 django-extensions 3.1.0
25 django-gravatar2 1.4.4
26 django-haystack 3.0
27 django-mailman3 1.3.5
28 django-picklefield 3.0.1
29 django-q 1.3.4
30 djangorestframework 3.12.2
31 dkimpy 1.0.5
32 dnspython 2.1.0
33 docutils 0.16
34 falcon 2.0.0
35 flufl.bounce 3.0.1
36 flufl.i18n 2.0.2
37 flufl.lock 3.2
38 gunicorn 20.0.4
39 HyperKitty 1.3.3
40 idna 2.10
41 importlib-resources 5.1.0
42 lazr.config 2.2.3
43 lazr.delegates 2.0.4
44 mailman 3.3.2
45 mailman-hyperkitty 1.1.0
46 mailman-web 0.0.3
47 mailmanclient 3.3.2
48 Mako 1.1.4
49 MarkupSafe 1.1.1
50 networkx 2.5
51 nose 1.3.7
52 oauthlib 3.1.0
53 packaging 20.9
54 passlib 1.7.4
55 pip 21.0.1
56 postorius 1.3.3
57 psycopg2-binary 2.8.6
58 publicsuffix2 2.20191221
59 pycparser 2.20
60 Pygments 2.7.4
61 PyJWT 2.0.1
62 pyparsing 2.4.7
63 python-dateutil 2.8.1
64 python-editor 1.0.4
65 python3-openid 3.2.0
66 pytz 2021.1
67 rcssmin 1.0.6
68 readme-renderer 28.0
69 requests 2.25.1
70 requests-oauthlib 1.3.0
71 rjsmin 1.1.0
72 robot-detection 0.4
73 setuptools 39.2.0
74 six 1.15.0
75 SQLAlchemy 1.3.23
76 sqlparse 0.4.1
77 typing-extensions 3.7.4.3
78 urllib3 1.26.3
79 uWSGI 2.0.19.1
80 wcwidth 0.2.5
81 webencodings 0.5.1
82 wheel 0.36.2
83 Whoosh 2.7.4
84 zipp 3.4.0
85 zope.component 4.6.2
86 zope.configuration 4.4.0
87 zope.deferredimport 4.3.1
88 zope.deprecation 4.4.0
89 zope.event 4.5.0
90 zope.hookable 5.0.1
91 zope.i18nmessageid 5.0.1
92 zope.interface 5.2.0
93 zope.proxy 4.3.5
94 zope.schema 6.0.1
2 years, 9 months

[MM3-users] Re: Mailman, etc. upgrade woes and persistent bugs
by Mark Sapiro
On 2/11/21 10:22 PM, hansen(a)rc.org wrote:
> I just had my Mailman suite upgraded. When it got started, I starting receiving messages that hundreds of subscribers to the lists had been disables, including several of the list moderators. This version started supporting bounce processing, but how in the world was this upgrade allowed to act on bounces that were being collected PRIOR to enabling bounce processing??
I'm sorry about that. It's too late now, but the avoidance is discussed
at
<https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/thread/…>.
> I got many angry emails, messages and phone calls asking what was going on, as they were bona fide list members. I was very surprised myself.
>
> I then looked at several of the disabled accounts, but the subscription info page in Postorius had no information about whether an account was enabled or disabled. Why is this not displayed???. The members can't see if their account is enabled. Is this another example of the disconnect between Mailman and Postorius?
If the user has a Django account, she can see all that info at (e.g. for
this list) <https://lists.mailman3.org/mailman3/accounts/subscriptions/>
She gets there from `Mailman settings` in the dropdown under her user
name. She can also get there via the `Manage Subscription` button on the
list's Info page. That takes her to `List-based preferences` for the
list. Any setting not selected there is inherited from the Address-based
preferences or Global Mailman preferences
> Further, even after the upgrade, the moderators still cannot access the list memberships even though all the lists are set to allow that. I would have asked the moderators to do this if this access bug had been fixed, but they can't get there.
You've already reported this at
<https://gitlab.com/mailman/postorius/-/issues/462>, and it's been
previously reported at <https://gitlab.com/mailman/postorius/-/issues/369>.
> As a result of these bugs, after consulting with Brian, who helped with the upgrade, I spent many hours re-enabling the several hundred accounts that had been disabled. I had to go through each email notification to find the address of a disabled account, then find the list, then the member, in Postorius, and finally enable the account (at which time Postorius DID show the enabled status).
I'm sorry you had to go through this. The potential issue and the
avoidances should be better documented. Unfortunately, they aren't.
> Please, can the next upgrade include these very basic fixes/enhancements, which I requested a long time ago:
>
> a. The ability of moderators to see the list membership (a bug).
As I note above, this is a known issue. We are a small project with very
feew core developers, all of whom are volunteers. There is a merge
request at <https://gitlab.com/mailman/postorius/-/merge_requests/423>
which purports to fix
<https://gitlab.com/mailman/postorius/-/issues/369>, but as you can see
from the comment thread, it is not complete and the author has
apparently disappeared.
If you would like to take it over and address the deficiencies, we would
welcome that.
> b. The ability of members to change their addresses for all lists they are subscribed to.
Users can add addresses to their account and can then change their
subscribed address at (again, e.g. for this list)
<https://lists.mailman3.org/mailman3/accounts/list-options/mailman-users.mai…>
(Get there via the `Manage Subscription` button on the list's Info page.)
If one is subscribed to lists via their `primary` address, one can go to
`E-mail Addresses` in their account settings and make a new address
`primary` and that will change all their subscriptions.
> and further, now:
>
> c. That when members go to look at their subscription info, they can actually see the settings.
They can if they go to `Mailman settings` in the dropdown or the `Manage
Subscription` button on the list's Info page and look at all the tabs.
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
4 years, 2 months

[MM3-users] Re: confirm-email: error NoReverseMatc
by Peter Münster
On Wed, Jan 31 2018, Simon Hanna wrote:
> It's complaining about an empty url used for reversing. Do you mind sharing
> your settings.py file? we don't need the secret key and logins for stuff, so
> you can mask those. the rest should be ok to make public.
Ok, here are the settings (mainly from mailman-suite):
--8<---------------cut here---------------start------------->8---
import os
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
SECRET_KEY = 'xxx'
DEBUG = False
ADMINS = (
('Mailman Suite Admin', 'root@localhost'),
)
ALLOWED_HOSTS = [
"localhost", # Archiving API from Mailman, keep it.
"x1", "x2",
]
MAILMAN_REST_API_URL = 'http://localhost:8001'
MAILMAN_REST_API_USER = 'x'
MAILMAN_REST_API_PASS = 'y'
MAILMAN_ARCHIVER_KEY = 'z'
MAILMAN_ARCHIVER_FROM = ('127.0.0.1')
INSTALLED_APPS = (
'hyperkitty',
'postorius',
'django_mailman3',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'django_gravatar',
'paintstore',
'compressor',
'haystack',
'django_extensions',
'django_q',
'allauth',
'allauth.account',
'allauth.socialaccount',
)
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django_mailman3.middleware.TimezoneMiddleware',
'postorius.middleware.PostoriusMiddleware',
)
ROOT_URLCONF = 'urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.i18n',
'django.template.context_processors.media',
'django.template.context_processors.static',
'django.template.context_processors.tz',
'django.template.context_processors.csrf',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'django_mailman3.context_processors.common',
'hyperkitty.context_processors.common',
'postorius.context_processors.postorius',
],
},
},
]
WSGI_APPLICATION = 'wsgi.application'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db/mailman.db'),
}
}
AUTH_PASSWORD_VALIDATORS = [
{
'NAME':
'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME':
'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME':
'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME':
'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
LANGUAGE_CODE = 'fr'
TIME_ZONE = 'Europe/Paris'
USE_I18N = True
USE_L10N = True
USE_TZ = True
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'
STATICFILES_DIRS = (
)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'compressor.finders.CompressorFinder',
)
SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer'
LOGIN_URL = 'account_login'
LOGIN_REDIRECT_URL = ''
LOGOUT_URL = 'account_logout'
DEFAULT_FROM_EMAIL = 'abc'
SERVER_EMAIL = 'abc'
from django.contrib.messages import constants as messages # flake8: noqa
MESSAGE_TAGS = {
messages.ERROR: 'danger'
}
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
)
ACCOUNT_AUTHENTICATION_METHOD = "username_email"
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_EMAIL_VERIFICATION = "mandatory"
ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATION = True
ACCOUNT_LOGIN_ON_PASSWORD_RESET = True
ACCOUNT_DEFAULT_HTTP_PROTOCOL = "https"
ACCOUNT_UNIQUE_EMAIL = True
SOCIALACCOUNT_PROVIDERS = {
'openid': {
'SERVERS': [
dict(id='yahoo',
name='Yahoo',
openid_url='http://me.yahoo.com'),
],
},
'google': {
'SCOPE': ['profile', 'email'],
'AUTH_PARAMS': {'access_type': 'online'},
},
'facebook': {
'METHOD': 'oauth2',
'SCOPE': ['email'],
'FIELDS': [
'email',
'name',
'first_name',
'last_name',
'locale',
'timezone',
],
'VERSION': 'v2.4',
},
}
COMPRESS_PRECOMPILERS = (
('text/less', 'lessc {infile} {outfile}'),
('text/x-scss', 'sassc -t compressed {infile} {outfile}'),
('text/x-sass', 'sassc -t compressed {infile} {outfile}'),
)
COMPRESS_OFFLINE = True
HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine',
'PATH': os.path.join(BASE_DIR, "fulltext_index"),
},
}
REST_FRAMEWORK = {
'DEFAULT_FILTER_BACKENDS': (
'rest_framework.filters.OrderingFilter',
),
}
Q_CLUSTER = {
'timeout': 300,
'save_limit': 100,
'orm': 'default',
}
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse'
}
},
'handlers': {
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'django.utils.log.AdminEmailHandler'
},
'file':{
'level': 'INFO',
#'class': 'logging.handlers.RotatingFileHandler',
'class': 'logging.handlers.WatchedFileHandler',
'filename': os.path.join(BASE_DIR, 'logs', 'mailman.log'),
'formatter': 'verbose',
},
'console': {
'class': 'logging.StreamHandler',
'formatter': 'simple',
},
},
'loggers': {
'django.request': {
'handlers': ['mail_admins', 'file'],
'level': 'ERROR',
'propagate': True,
},
'django': {
'handlers': ['file'],
'level': 'ERROR',
'propagate': True,
},
'hyperkitty': {
'handlers': ['file'],
'level': 'DEBUG',
'propagate': True,
},
'postorius': {
'handlers': ['console', 'file'],
'level': 'INFO',
},
},
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(process)d %(name)s %(message)s'
},
'simple': {
'format': '%(levelname)s %(message)s'
},
},
}
if DEBUG == True:
EMAIL_BACKEND = 'django.core.mail.backends.filebased.EmailBackend'
EMAIL_FILE_PATH = os.path.join(BASE_DIR, 'emails')
FILTER_VHOST = True
try:
from settings_local import *
except ImportError:
pass
--8<---------------cut here---------------end--------------->8---
--
Peter
7 years, 2 months

[MM3-users] Re: SPF check fails for lists subdomain
by Jan Eden
On 2023-01-04 15:07, Mark Sapiro wrote:
> On 1/4/23 14:02, Jan Eden via Mailman-users wrote:
> > Although I could specify the IP address in my SPF records directly (as
> > you suggested), I do hope that my understanding of DNS records laid out
> > above is not entirely misguided. My current setup does work as expected
> > for eden.one, after all.
>
> As I said at <https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…>
> I was misreading your DNS and now I am as puzzled as you about the failure.
It gets even more mysterious. I tried sending messages from both
lists.eden.one and janeden.net (my other domain) to a gmail account and
to another mail provider. Both messages passed the SPF checks on both
services (s. the relevant headers quoted below). Now because I send
those messages via my SMTP user (smtpuser(a)eden.one) and use SRS, the SPF
check operates (and succeeds) on e.g.
srs0=jdm+=5c=lists.eden.one=testlist-bounces+gmailuser=googlemail.com(a)eden.one
(and not on somethingsomething(a)lists.eden.one or
somethingsomething(a)janeden.net) Could this be the reason for the failed
SPF checks in Yahoo's and Google's DMARC reports?
- Jan
==============================
Authentication-Results: posteo.de; dmarc=pass (p=quarantine dis=none) header.from=lists.eden.one
Authentication-Results: posteo.de; spf=pass smtp.mailfrom=eden.one
Authentication-Results: posteo.de;
dkim=pass (2048-bit key) header.d=lists.eden.one header.i=(a)lists.eden.one header.b=8FtNB1m3;
dkim-atps=neutral
------------------------------
Delivered-To: gmailuser(a)gmail.com
Received: by 2002:a05:7022:4584:b0:4b:2a9c:6c6f with SMTP id cf4csp83532dlb;
Wed, 4 Jan 2023 23:29:12 -0800 (PST)
ARC-Authentication-Results: i=1; mx.google.com;
dkim=pass header.i=(a)lists.eden.one header.s=s42 header.b=lrjRRPic;
spf=pass (google.com: domain of srs0=jdm+=5c=lists.eden.one=testlist-bounces+gmailuser=googlemail.com(a)eden.one designates 123.123.123.123 as permitted sender) smtp.mailfrom="SRS0=JDm+=5C=lists.eden.one=testlist-bounces+gmailuser=googlemail.com(a)eden.one";
dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=lists.eden.one
Received-SPF: pass (google.com: domain of srs0=jdm+=5c=lists.eden.one=testlist-bounces+gmailuser=googlemail.com(a)eden.one designates 123.123.123.123 as permitted sender) client-ip=123.123.123.123;
Authentication-Results: mx.google.com;
dkim=pass header.i=(a)lists.eden.one header.s=s42 header.b=lrjRRPic;
spf=pass (google.com: domain of srs0=jdm+=5c=lists.eden.one=testlist-bounces+gmailuser=googlemail.com(a)eden.one designates 123.123.123.123 as permitted sender) smtp.mailfrom="SRS0=JDm+=5C=lists.eden.one=testlist-bounces+gmailuser=googlemail.com(a)eden.one";
dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=lists.eden.one
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=lists.eden.one; s=s42; t=1672903751; h=from:from:reply-to:reply-to:subject:subject:date:date:
message-id:message-id:to:to:cc:mime-version:mime-version:
content-type:content-type:list-id:list-help:list-owner:
list-unsubscribe:list-subscribe:list-post; bh=q4JtVWzFRbBZ12C26k1xKRRVOBGue+2uV43xiHohi3M=; b=lrjRRPicpiyGUP11wjj76yIg8qHib1aUAS99+RNhSwYE9HzXctedXbdMXeY7WJyUc1gE2Z PFkDPZD6YMGIAY9N35fzgzoMgrgNAWkTLqDF7i5d0kEXEhEuQ+hLbRHKMcsD8XDVff41iY vLnygg85AKj5L4dvq/p5o4TEjmfaXHadRJ6ZI6qY67Yys1D+LqZzbfIQyvgUH+U986d0Ed SO3POUWJLcYNwwQk0UzTc4iIenM7042alew/wXoncDc1lnMQrAYHY/lPwGHFyqqyPebkLZ bE3nM4g8pM9ODXBbn0Vs7602SzCFkHs2l1QScFtV9+pZbPaKgYL5TW6Q8BT0MA==
Received: from client.eden.one (unknown [195.37.242.24]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
Date: Thu, 5 Jan 2023 08:29:05 +0100
To: testlist(a)lists.eden.one
Subject: [Testlist] Test (Listenmail)
From: Jan Eden via Testlist <testlist(a)lists.eden.one>
Reply-To: Jan Eden <mailuser(a)eden.one>
==============================
==============================
Authentication-Results: posteo.de; dmarc=pass (p=quarantine dis=none) header.from=janeden.net
Authentication-Results: posteo.de; spf=pass smtp.mailfrom=eden.one
Authentication-Results: posteo.de;
dkim=pass (2048-bit key) header.d=janeden.net header.i=(a)janeden.net header.b=VV5k+gN7;
dkim-atps=neutral
------------------------------
Delivered-To: gmailuser(a)gmail.com
ARC-Authentication-Results: i=1; mx.google.com;
dkim=pass header.i=(a)janeden.net header.s=s42 header.b=B8NPELsC;
spf=pass (google.com: domain of srs0=xtlx=5c=janeden.net=mailuser(a)eden.one designates 123.123.123.123 as permitted sender) smtp.mailfrom="SRS0=Xtlx=5C=janeden.net=mailuser(a)eden.one";
dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=janeden.net
Received-SPF: pass (google.com: domain of srs0=xtlx=5c=janeden.net=mailuser(a)eden.one designates 123.123.123.123 as permitted sender) client-ip=123.123.123.123;
Authentication-Results: mx.google.com;
dkim=pass header.i=(a)janeden.net header.s=s42 header.b=B8NPELsC;
spf=pass (google.com: domain of srs0=xtlx=5c=janeden.net=mailuser(a)eden.one designates 123.123.123.123 as permitted sender) smtp.mailfrom="SRS0=Xtlx=5C=janeden.net=mailuser(a)eden.one";
dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=janeden.net
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=janeden.net; s=s42; t=1672903599; h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
to:to:cc:mime-version:mime-version:content-type:content-type; bh=wE7NXSkgnx9PGiavN4OZhJztvkqPDlemV3OGuEnLwNo=; b=B8NPELsC7r7WI62YOpEFUhESxumSjhP/aQNOlWRmusnTHgbHgjEHeCKNRhEDUeh+fRRVZw JnRVZx9WAU58/3UXx0XJIN6ivLYJnOtJ9vw3r1nVAzU6wk7RCE1Zx6zTJLybwHNijHcCn4 A2cRJZc1IUfJTAok3RHclBB8c10difp5SNPKVGRtNEPAOEFnG5vaNecPvQWc0+4EyHNCYX WSEARKApxpL31gBcojCEHjtdAFgmcknReosUN9I3PUiQQIxqFQ6uU9hA6XWyg6qCsEAll7 E1sGL9HopGIHQA2pHXPanQ9FZxOFou8BcjwN4w65Vygr78hAO5e2Ru6tDFwr4g==
Date: Thu, 5 Jan 2023 08:26:37 +0100
From: Jan Eden <mailuser(a)janeden.net>
To: gmailuser(a)googlemail.com
Subject: Test
==============================
2 years, 3 months

[MM3-users] Re: More Mailman releases!
by Kyriakos Terzopoulos
Also looking good from here. Thanks to all involved for your great work!
On Mon, 23 Oct 2023, 16:53 Jered Floyd, <jered(a)convivian.com> wrote:
>
> Everything looks good to me in my multi-site install!
>
> I've updated my simple container install to pin the new versions:
> https://github.com/jeredfloyd/mailman-container
>
> --Jered
>
>
> ----- On Oct 22, 2023, at 2:10 AM, Abhilash Raj maxking(a)asynchronous.in
> wrote:
>
> > Hello,
> >
> > I missed one important merge request in django-mailman3, so here are a
> > couple more versions.
> >
> > I've released Django-mailman3 1.3.11 and Mailman-web 0.0.8 (which
> > requires django-mailman >= 1.3.11).
> >
> > Gitlab releases are available here:
> >
> > Mailman-web: https://gitlab.com/mailman/mailman-web/-/releases/0.0.8
> > Django-mailman3:
> > https://gitlab.com/mailman/django-mailman3/-/releases/v1.3.11
> >
> > I have also yanked mailman-web 0.0.7 since that'll cause spurious errors
> > due to change in session serializer.
> >
> > Abhilash
> >
> >
> > On 10/22/23 00:05, Abhilash Raj wrote:
> >> Hello Everyone,
> >>
> >> I am pleased to announce several new releases for GNU Mailman project.
> >> Thanks to all the contributors for making these releases possible!
> >>
> >> 1. Postorius 1.3.10 [1]
> >> 2. Hyperkitty 1.3.8 [2]
> >> 3. Django-mailman3 1.3.10 [3]
> >> 4. Mailman-web 0.0.7 [4]
> >>
> >> All the releases are published to PyPI and you can find links to all the
> >> PyPI projects:
> >>
> >> https://docs.mailman3.org/en/latest/
> >>
> >> A full list of change logs are available below:
> >>
> >> [1]:
> >>
> https://docs.mailman3.org/projects/postorius/en/latest/news.html#news-1-3-10
> >> [2]:
> >>
> https://docs.mailman3.org/projects/hyperkitty/en/latest/news.html#news-1-3-8
> >> [3]:
> https://gitlab.com/mailman/django-mailman3/-/blob/master/README.rst
> >> [4]: https://gitlab.com/mailman/mailman-web/-/blob/master/README.rst
> >>
> >> Do note that for Postorius, I released 1.3.9, but I forgot to update
> >> dependency metadata to require `django-mailman3>=1.3.10` (which is
> >> required for the new bootstrap 5 upgrade across packages) and so I also
> >> released Postorius 1.3.10 just after.
> >>
> >> Installation documentation is available at
> >>
> >> https://docs.mailman3.org/en/latest/install/install.html
> >>
> >> and if you are upgrading an existing virtualenv install you can refer
> >>
> >> https://docs.mailman3.org/en/latest/upgrade-3.2.html
> >>
> >> If you find any issues, you can report them at the respective bug
> >> tracker for the projects. The links to issue trackers are available
> >> at https://docs.mailman3.org/en/latest/.
> >>
> >> Finally, similar to Mailman Core, note that PyPI doesn't accept
> >> signatures anymore so each packages' release page now has the tarball
> >> uploaded to them along with the signature:
> >>
> >> Django-mailman3:
> >> https://gitlab.com/mailman/django-mailman3/-/releases/v1.3.10
> >> Hyperkitty: https://gitlab.com/mailman/hyperkitty/-/releases/v1.3.8
> >> Postorius: https://gitlab.com/mailman/postorius/-/releases/v1.3.10
> >> Mailman-web: https://gitlab.com/mailman/mailman-web/-/releases/0.0.7
> >>
> >
> > --
> > thanks,
> > Abhilash Raj (maxking)
> >
> > _______________________________________________
> > Mailman-users mailing list -- mailman-users(a)mailman3.org
> > To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> > https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> > Archived at:
> >
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
> >
> > This message sent to jered(a)convivian.com
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> Archived at:
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
>
> This message sent to kyriakos.terzopoulos(a)gmail.com
>
1 year, 6 months

[MM3-users] moderation notices for list-owner being redirected to mailman address
by Philippe B
We have seen a very strange behavior on 2 separate occasions/lists over the past month.
A SENDER(a)SOME.DOMAIN emails OURLIST(a)OUR.DOMAIN, and that post is (correctly) held for moderation.
The moderation notification is sent by OURLIST-owner(a)OUR.DOMAIN to OURLIST-owner(a)OUR.DOMAIN, and everything works fine.
But in a few very rare cases, at some point during the convoluted delivery path to the mailbox of the actual human owner of OURLIST, the recipient is changed from OURLIST-owner(a)OUR.DOMAIN to mailman(a)OUR.DOMAIN.
I am going to paste full headers below (with fake public IPs), but I think that these 2 particular lines highlight the problem:
X-MailFrom: OURLIST-bounces+OURLIST-owner=OUR.DOMAIN(a)OUR.DOMAIN
X-MailFrom: OURLIST-bounces+mailman=OUR.DOMAIN(a)OUR.DOMAIN
because only the first one is present normally.
We know from the headers that the recipient gets changed on the Mailman host, but we have no idea why or how, because all the aliases are set up correctly, and there is no connection between OURLIST's (non-)members/etc and mailman(a)OUR.DOMAIN.
Do you have any troubleshooting suggestions? Thanks.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Note: ec2-12-34-56-78.us-west-2.compute.amazonaws.com, lists.OUR.DOMAIN, and MAILMAN-SERVER.OUR.DOMAIN are different ways of addressing essentially the same system.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Received: from SMTP-SERVER.OUR.DOMAIN (SMTP-SERVER.OUR.DOMAIN [6.7.8.9])
by MAILMAN-SERVER.OUR.DOMAIN (Postfix) with ESMTP id 2B6E51A288F
for <mailman(a)lists.OUR.DOMAIN>; Tue, 1 Feb 2022 07:10:52 -0800 (PST)
Received: by SMTP-SERVER.OUR.DOMAIN (Postfix)
id E825C207053B; Tue, 1 Feb 2022 07:10:51 -0800 (PST)
Delivered-To: mailman(a)OUR.DOMAIN
Received: from SMTP-SERVER.OUR.DOMAIN (localhost [127.0.0.1])
by SMTP-SERVER.OUR.DOMAIN (Postfix) with ESMTP id D468B2070A45
for <mailman(a)OUR.DOMAIN>; Tue, 1 Feb 2022 07:10:51 -0800 (PST)
X-Spam-Scanned: at OUR-ORGANIZATION on SMTP-SERVER.OUR.DOMAIN by amavisd-new
Authentication-Results: SMTP-SERVER.OUR.DOMAIN (amavisd-new);
dkim=pass (1024-bit key) header.d=OUR.DOMAIN header.b="********";
dkim=pass (1024-bit key) header.d=OUR.DOMAIN header.b="********"
Received: from filter-send ([127.0.0.1])
by SMTP-SERVER.OUR.DOMAIN (SMTP-SERVER.OUR.DOMAIN [127.0.0.1]) (amavisd-new, port 12345)
with LMTP id YgQELyXHaR1X for <mailman(a)OUR.DOMAIN>;
Tue, 1 Feb 2022 07:10:51 -0800 (PST)
Received: from [172.17.0.2] (ec2-12-34-56-78.us-west-2.compute.amazonaws.com [12.34.56.78])
by SMTP-SERVER.OUR.DOMAIN (Postfix) with ESMTP id 9E8DE207053B
for <mailman(a)OUR.DOMAIN>; Tue, 1 Feb 2022 07:10:51 -0800 (PST)
DKIM-Filter: OpenDKIM Filter v2.11.0 SMTP-SERVER.OUR.DOMAIN 9E8DE207053B
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=OUR.DOMAIN;
s=unixmail; t=**********;
bh=*******************************************=;
h=Subject:From:To:Date:List-Id:List-Help:List-Owner:List-Subscribe:
List-Unsubscribe:From;
b=*****************************************************************
******************************************************************
****************************************=
Received: from SMTP-SERVER.OUR.DOMAIN (SMTP-SERVER.OUR.DOMAIN [6.7.8.9])
by MAILMAN-SERVER.OUR.DOMAIN (Postfix) with ESMTP id B138C1A288F
for <OURLIST-owner(a)lists.OUR.DOMAIN>; Tue, 1 Feb 2022 07:10:49 -0800 (PST)
Received: by SMTP-SERVER.OUR.DOMAIN (Postfix)
id 7766E207053B; Tue, 1 Feb 2022 07:10:49 -0800 (PST)
Delivered-To: OURLIST-owner(a)OUR.DOMAIN
Received: from SMTP-SERVER.OUR.DOMAIN (localhost [127.0.0.1])
by SMTP-SERVER.OUR.DOMAIN (Postfix) with ESMTP id 676682070A73
for <OURLIST-owner(a)OUR.DOMAIN>; Tue, 1 Feb 2022 07:10:49 -0800 (PST)
X-Spam-Scanned: at OUR-ORGANIZATION on SMTP-SERVER.OUR.DOMAIN by amavisd-new
Received: from filter-send ([127.0.0.1])
by SMTP-SERVER.OUR.DOMAIN (SMTP-SERVER.OUR.DOMAIN [127.0.0.1]) (amavisd-new, port 12345)
with LMTP id j2xEFERoaVLS for <OURLIST-owner(a)OUR.DOMAIN>;
Tue, 1 Feb 2022 07:10:49 -0800 (PST)
Received: from [172.17.0.2] (ec2-12-34-56-78.us-west-2.compute.amazonaws.com [12.34.56.78])
by SMTP-SERVER.OUR.DOMAIN (Postfix) with ESMTP id 2C264207053B
for <OURLIST-owner(a)OUR.DOMAIN>; Tue, 1 Feb 2022 07:10:49 -0800 (PST)
DKIM-Filter: OpenDKIM Filter v2.11.0 SMTP-SERVER.OUR.DOMAIN 2C264207053B
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=OUR.DOMAIN;
s=unixmail; t=**********;
bh=*******************************************=;
h=Subject:From:To:Date:List-Id:List-Help:List-Owner:List-Subscribe:
List-Unsubscribe:From;
b=*****************************************************************
******************************************************************
****************************************=
Subject: OURLIST(a)OUR.DOMAIN post from SENDER(a)SOME.DOMAIN requires approval
From: OURLIST-owner(a)OUR.DOMAIN
To: OURLIST-owner(a)OUR.DOMAIN
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="===============6658935924254827098=="
Message-ID: <164372824697.288.9427163605184740636@MAILMAN-SERVER>
Date: Tue, 01 Feb 2022 07:10:46 -0800
Precedence: bulk
X-Mailman-Version: 3.3.5
List-Id: <OURLIST.OUR.DOMAIN>
List-Help: <mailto:OURLIST-request@OUR.DOMAIN?subject=help>
List-Owner: <mailto:OURLIST-owner@OUR.DOMAIN>
List-Subscribe: <mailto:OURLIST-join@OUR.DOMAIN>
List-Unsubscribe: <mailto:OURLIST-leave@OUR.DOMAIN>
X-MailFrom: OURLIST-bounces+OURLIST-owner=OUR.DOMAIN(a)OUR.DOMAIN
X-MailFrom: OURLIST-bounces+mailman=OUR.DOMAIN(a)OUR.DOMAIN
X-Mailman-Rule-Hits: implicit-dest
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-mailman.OUR.DOMAIN-0; nonmember-moderation; administrivia; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
3 years, 2 months

[MM3-users] Re: Ansible role to install Mailman3
by Ruth Ivimey-Cook
Hi,
Yes, my (rivimey/ansible-mailman3) version is more complex, although a
lot of things have sane defaults.
The split allows for a two-way split, with email on one IP and web (both
P and H) on another. This is because the email and web servers that
would be interacting with mailman are already on different IPs and I
felt it was inappropriate to merge them. I also enabled a lot more
options for configuration, though with equivalent defaults defined. I
recall a lot of hassle with the config merge stuff but can't really
remember what that was about.
My installer code installs all the code of mailman on both servers,
because this was easier than trying to work out which parts were needed
and which weren't and then maintain the split. However, only the needed
processes on each server are run.
My install uses exim4 and mysqld, exim is installed with another of my
ansible roles while mysql is using geerlingguy's. I use nginx as a
reverse proxy to access postorius. I don't think I made any changes
which disfavour postgres or postfix, but haven't tried to do an install
with them.
There is one patch needed for mailman code, for me: I add a new
parameter to the django webserver so it can listen on ::0/0, without
this it will only listen on one specific IP. FWIW I've attached it to
this mail.
If you have a play and get confused or stuck, let me know!
As regards to maintenance, the role gets tweaked every so often and
somewhat less often I push the current state to github. If someone
reaches out to contact me I may well be able to help. I use it on a
currently active mailing list...
Ruth
On 03/08/2023 22:52, samuel.d.darwin(a)gmail.com wrote:
> Hi,
> Before installing the Mailman Suite, I searched on https://galaxy.ansible.com/ for Ansible roles that might automate the whole process. https://github.com/galaxyproject/ansible-mailman3 turned out to be quite good. However, it was slightly out-of-date. I cloned it, made a few bug fixes, and corrected linting errors. Then, going further, added optional basic installations of Nginx, Postfix, PostgreSQL into the role. If anyone is installing Mailman they are welcome to try it out.
>
> https://github.com/cppalliance/ansible-mailman3
>
> Now, I see there was a discussion on this very list about
>
> https://github.com/rivimey/ansible-mailman3
>
> which was also a fork of natefoo's repo.
>
> What are the differences? As Stephen Turnbull wrote: "her (rivimey's) setup may be more complicated than most folks need (IIRC, she has a multi-homed setup with Mailman core, Postorius, and HyperKitty on three separate IPs on a separate subnet in the DMZ, while Mailman was really designed for three Mailman applications running on the same host, along with the database server and MTA)."
>
> My version of the role didn't follow the tactic of "three separate IPs on a separate subnet in the DMZ". Mainly, it adds postfix and postgres. Fixes small errors. Also, in a git branch of the repository named mailman3-core, I removed all the web code, so there is a version of the role that only installs core. We will use that while bundling the web components into another Django app, already deployed with docker.
>
> There is an open question about maintenance. Among the three roles mentioned here, which is being actively kept up-to-date? Perhaps there are no guarantees from any of them. At this instant in time, https://github.com/cppalliance/ansible-mailman3 is the most recent. Would it make sense to mention these roles in the official documentation? Not sure. Installing mailman3 is complicated and because of that, is a good fit for Ansible.
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> Archived at: https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
>
> This message sent to ruth(a)ivimey.org
--
Software Manager & Engineer
Tel: 01223 414180
Blog: http://www.ivimey.org/blog
LinkedIn: http://uk.linkedin.com/in/ruthivimeycook/
1 year, 8 months

[MM3-users] Re: Non-ascii characters missing from Pipermail archive txt and gz downloads
by Ruth Ivimey-Cook
Hi Mark
I'm not sure, but I think the problems are to do with the program you
are using to view the txt file.
A modern mail reader understands the Content-type: header and will
adjust its character processing accordingly, but a .txt file has no
default character encoding, so any text editor will have to "use its
best judgement". Some will default to utf-8, because that is compatible
with 7-bit ASCII (NOT Latin1) while others will just put characters out
and hope for the best (esentially leaving the result to the encoding of
the font).
In theory, a UTF-encoded text file can begin with the "BOM" marker, a
sequence of characters which is supposed to indicate which variety of
Unicode is in use, but this is rarely present, especially for UTF-8.
Try looking at your text file with a UTF-8 capable text editor **and
ensure that you tell the editor to use the UTF-8 encoding**. I expect it
will look ok then.
Hope this helps,
Ruth
On 09/04/2021 13:52, Mark Dale via Mailman-users wrote:
> Mailman 2.1.34
> Debian 10
> Postfix
>
> Hi
>
> I'm hoping someone can shine a light on character encoding issue I've encountered.
>
> A plain-text email with non-ascii characters in the body gets posted to the list.
>
> As per Mark Sapiro's guide I've captured the incoming message to file.
>
> - https://www.mail-archive.com/mailman-users@python.org/msg73469.html
>
> The message is received by Mailman with the non-ascii characters displaying correctly.
>
> The header of that message has:
>
> User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101
> Thunderbird/78.9.0
> MIME-Version: 1.0
> Content-Type: text/plain; charset=utf-8
> Content-Language: en-AU
> Content-Transfer-Encoding: 8bit
>
> In the list's mbox file and archive webpage, the message displays the non-ascii characters correctly.
>
> In the archive's downloaded .txt (and also .gz) file, the non-ascii characters are missing and displayed as "?".
>
> I've copied the message text in below, from both the correct one from the email and the erroneous .txt file. Hopefully they won't get scrambled up when I send this.
>
> Any advice on getting the non-ascii characters written into the archive .txt file would be gratefully received.
>
> Thanks,
> Mark
>
>
> === Message text as okay in mbox and as shown on the archive webpage ===
>
> If one goes by the definition of veḷippaṭai as given in the Tamil Lexicon that the meaning of an ambiguous word should be disambiguated by a qualifying word, then aruvi āmpal does not conform to that definition since in the case of aruvi āmpal in Patiṟṟuppattu 63, aruvi is really made up of aru+vi, a compound. Moreover, the expression aṭai aṭuppu aṟiyā is already there to clarify that āmpal is a number and not a flower. Thus, aruvi simply provides information in addition to aṭai aṭuppu aṟiyā that āmpal is not a flower. The modern commentator Aruḷampalavaṉār also does not call it veḷippaṭai.
>
> ===
>
> === Message text with missing characters in te archive's txt and gz downloads ==
>
> If one goes by the definition of ve?ippa?ai as given in the Tamil Lexicon that the meaning of an ambiguous word should be disambiguated by a qualifying word, then aruvi ?mpal does not conform to that definition since in the case of aruvi ?mpal in Pati??uppattu 63, aruvi is really made up of aru+vi, a compound. Moreover, the expression a?ai a?uppu a?iy? is already there to clarify that ?mpal is a number and not a flower. Thus, aruvi simply provides information in addition to a?ai a?uppu a?iy? that ?mpal is not a flower. The modern commentator Aru?ampalava??r also does not call it ve?ippa?ai.
>
> ===
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
--
Software Manager & Engineer
Tel: 01223 414180
Blog: http://www.ivimey.org/blog
LinkedIn: http://uk.linkedin.com/in/ruthivimeycook/
4 years

[MM3-users] Re: MM3 Docker
by Odhiambo Washington
On Tue, Jan 8, 2019, 20:34 Abhilash Raj <maxking(a)asynchronous.in wrote:
> On Tue, Jan 8, 2019, at 5:52 AM, Odhiambo Washington wrote:
> > On Tue, 8 Jan 2019 at 03:29, Mark Sapiro <mark(a)msapiro.net> wrote:
> >
> > > On 1/7/19 1:18 AM, Odhiambo Washington wrote:
> > > > On Sun, 6 Jan 2019 at 23:39, Mark Sapiro <mark(a)msapiro.net> wrote:
> > > >>
> > > >> Please help me understand what steps are missing and I will try to
> > > >> provide the information.
> > > >
> > > >
> > > > Okay.
> > > >
> > > > At the installation stage, you say the following:
> > > > "I already had some things set up in /opt/mailman including a git
> > > > subdirectory containing clones of the GitLab mailman, mailmanclient,
> > > > mailman-hyperkitty, hyperkitty, django-mailman3 and
> > > > postorius projects. On the third server I have added mailman-suite
> > > > because I use the settings.py from that project as the basis for
> mine."
> > > >
> > > > Please assume that the reader is a newbie to python3 virtualenv and
> give
> > > the
> > > > details of the commands they need to execute to (a) clone all the
> > > projects
> > > > needed
> > > > and (b) create the virtualenv.
> > > >
> > > > The next steps are:
> > > > mkdir /opt/mailman/mm
> > > >
> > > > Then you say "I then created a /opt/mailman/mm directory and within
> that
> > > a
> > > > Python 3.6 virtualenv"
> > > > What happens here is something that needs clarification, because you
> are
> > > > specific about "python3.6".
> > > > I have googled and realized that one has to be specific about the
> python
> > > > version they want to use in their virtualenv
> > > > as shown here ->
> > > >
> > >
> https://stackoverflow.com/questions/45293436/how-to-specify-python-version-…
> > > >
> > > > exact command to execute to create the /opt/mailman/mm/venv
> > > > exact command to execute to activate virtualenv
> > >
> > >
> > > I have added a comment to the page which I hope gives you what you
> want.
> > >
> > > I also added a section on templates instead of referring to a prior
> > > version of the page.
> > >
> >
> > That makes it better.
> > However, as a newbie, something is not yet clear:
> >
> > "When active in a particular shell, it can be deactivated with the
> command
> >
> > deactivate
> > or by exiting that shell."
> >
> > HI am trying to understand the effect of detaching from a venv. I am
> > assuming that a virtualenv is a container that is supposed to be always
> > active for the services within to be accessible. Is that right? So, how
> do
> > I ensure it's always running/up, or that does not matter as the scripts
> > which run the services will always refer to the files?
>
> virtualenv is not actually a container that is supposed to be active. It
> is merely a set of settings that are applied to your SHELL when you are
> in the virtual environment.
>
> It is not supposed to be always active, only when you actually want to
> run commands in that virtual environment. The services will keep on
> running after you deactivate your shell and would function like other
> normal services on your machine.
>
> --
> thanks,
> Abhilash Raj (maxking)
>
Thank you for clarifying.
So once I have a venv created, the services will just run as long as the
startup scripts are running even when I'm logged out of the system?
>
6 years, 3 months

[MM3-users] Re: Race condition when mass subscribing same email addresses to two lists?
by Abhilash Raj
> On Oct 28, 2021, at 6:46 AM, Stephen J. Turnbull <stephenjturnbull(a)gmail.com> wrote:
>
> Alan So writes:
>
>> 1) Create two lists with default setting
>> 2) Prepare a list of 1000 fresh email addresses not added to the
>> system before
>> 3) Mass subscribe both lists of these 1000 email addresses around
>> the same time with all three Pre (confirm, approved, verified)
>> checked
> [...]
>> (psycopg2.errors.UniqueViolation) duplicate key value violates
>> unique constraint "ix_address_email"
>> DETAIL: Key (email)=(testemail999(a)example.com) already exists.
>
> I think there's some kind of race condition. I would bet it's in
> Mailman core, not in the RDMBS code or the ORM. The process is
>
> 1. Check if the address is known.
> 2. If yes:
> a. Get the address's user.
> b. Add the subscription pair (address, list) to the user.
> c. Add the address to the list.
> 3. If no:
> a. Create the address object.
> b. Create a user for the address, and link them together.
> c. Add the subscription pair (address, list) to the user.
> d. Add the address to the list.
>
> Each line is a separate database query, I suspect, so the race is
> between 1 and 3a. If two requests for the same new address arrive at
> the "same" time, both will try to create the address, only one can
> succeed.
>
> I guess we should catch the error and retry. Raising and handling
> exceptions in Python is relatively slow, so even in your well
> constructed worst case, this shouldn't happen on every address, so I
> don't think having a separate queue or putting the whole thing in a
> transaction would be better. If you still have the log, I'd be
> curious to know how many unique errors you got.
So, at this point, the mass subscribe feature will call the API once for
each address. Each REST call in Core is wrapped in a transaction, so
when one address is already created by a separate web worker, it
will fail the transaction when others try to create.
I am not sure if we have an easy way to handle this kind of races. From
the purposes of the API code, they both were able to successfully subscribe
the user and create the address but the database rejected the changes
from being committed and transaction was rolled back as it violated the
constraints. By the time this exception is raised, the entire API code is
done executing, so where do handle the psycopg2.errors.UniqueViolation
exception is a big question.
With the multiprocessing model of runners and multiple web workers,
this kind of situation is basically what we would want where the integrity
of the database is preserved by constraints we put in the table definitions
and the runners/web workers can continue to work assuming they have
the full control of the database without separately synchronizing with
each other.
The code for this lives here[1], which subscribes a new address to a
mailing list. It is the POST /3.1/members endpoint handler in API.
This is how we wrap every call to the WSGI app, i.e. each API call into
a transaction[2].
[1]: https://gitlab.com/mailman/mailman/-/blob/master/src/mailman/rest/members.p…
[2]: https://gitlab.com/mailman/mailman/-/blob/master/src/mailman/rest/wsgiapp.p…
Being able to prevent this kind of race condition is difficult if we want
to continue the support for multiple web workers for performance. I’ll
think more about how we can re-try on such errors though. It could
be either a client side re-try if we can figure out a way to signal the
client that this error was re-tryable.
Whether or not we are able to translate a UniqueViolation directly into
a retryable error code for Client really depends on whether there is
code in Core that relies on EAFP from database for functioning correctly,
since in those situations, the error, if raised, wouldn’t really be re-tryable
IMO. Fun problem to solve!
A pretty obvious workaround is to subscribed users serially instead of
parallell.
--
thanks,
Abhilash Raj (maxking)
3 years, 5 months

[MM3-users] Re: integrating mm3 with postfix / lmtp
by Abhilash Raj
On Nov 13 2017, at 1:34 am, Thor Atle Rustad <thor.rustad(a)gmail.com> wrote:
> There is a way around it!
>
> I have had two issues with the the maxking docker image. One is that the regexp is not working properly. I reported that, and it has been fixed in newer code. My other problem is that the docker image creates a user, mailman, that receives uid 103. Well, uid 103 on my system is already taken by systemd-bus-proxy (grep 103 /etc/passwd returns "systemd-bus-proxy:x:103:105:systemd Bus Proxy,,,:/run/systemd:/bin/false").
Containers usually run with uid namespace, so it doesn't really matter what uid is used outside of container.
Unless, you mount /etc/shadow from host in to the container, which isn't really needed for the images.
>
> My solution includes downloading the corrected postfix.py, and replacing the Dockerfile. I put the postfix.py in <docker-mailman>/core/assets/.
>
> My Dockerfile:
> FROM maxking/mailman-core
>
> RUN grep mailman /etc/passwd && grep mailman /etc/group \
> && deluser mailman \
> && addgroup -S -g900 mailman \
> && adduser -S -u900 mailman mailman \
> && grep mailman /etc/passwd && grep mailman /etc/group
> COPY assets/postfix.py /usr/local/lib/python3.6/site-packages/mailman/mta/postfix.py
>
>
> I then run docker build (with -t parameter, you must look up that yourself). I use a different name for my images, so I end up with (note, there are two tags per image):
> root@mailer:/home/mailman/docker/docker-mailman_mods/core# docker images
> REPOSITORY TAG IMAGE ID CREATED SIZE
> local/mailman_core_900 20171110_2 9649e84767e1 2 days ago 176MB
> local/mailman_core_900 latest 9649e84767e1 2 days ago 176MB
> local/mailman_web_900 20171110_2 07a9b3d7ddd6 2 days ago 247MB
> local/mailman_web_900 latest 07a9b3d7ddd6 2 days ago 247MB
>
>
> I do the same with the web image, as I need to change the user there, too.
>
> Then, in docker-compose.yaml, I change the line(s) referring to the image name(s):
>
> services:
> mailman-core:
> image: local/mailman_core_900
> container_name: mailman-core
> hostname: mailman-core
>
>
>
> mailman-web:
> image: local/mailman_web_900
> container_name: mailman-web
> hostname: mailman-web
>
>
> I don't know if this is a good solution, but at least it fixes some serious issues with the 3.1's postfix integration that wouldn't otherwise be fixed until the 3.2 release. The bottom line is that it works for me, but it adds an additional layer of complication.
>
> 2017-11-03 19:40 GMT+01:00 Abhilash Raj <maxking(a)asynchronous.in (mailto:maxking@asynchronous.in)>:
> > On Fri, Nov 3, 2017, at 08:29 AM, Fabian A. Santiago wrote:
> > > October 26, 2017 11:07 PM, "Mark Sapiro" <mark(a)msapiro.net (mailto:mark@msapiro.net)> wrote:
> > >
> > > > On October 26, 2017 7:30:35 PM PDT, "Fabian A. Santiago" <fsantiago(a)garbage-juice.com (mailto:fsantiago@garbage-juice.com)> wrote:
> > > >
> > > >> That was it. Perfect. I manually modified my regexp map and it works
> > > >> now. Excellent and Thank you. You're the man. Does mm3 ever refresh
> > > >> those maps or only as I add new domains / lists?
> > > >
> > > > Only when you make changes to domains or lists.
> > > >
> > > > --
> > > > Mark Sapiro <mark(a)msapiro.net (mailto:mark@msapiro.net)>
> > > > Sent from my Not_an_iThing with standards compliant, open source software.
> > >
> > > Mark,
> > >
> > > I've noticed that even simply restarting the mm3 components those alias
> > > maps get rewritten and the problem returns until I can manually edit it.
> >
> > Yeah, that is true. Transport maps are re-generated everytime the
> > container restarts.
> >
> > I don't think think there is any way around this right now :(
> >
> >
> > --
> > Abhilash Raj
> > maxking(a)asynchronous.in (mailto:maxking@asynchronous.in)
> > _______________________________________________
> > Mailman-users mailing list
> > mailman-users(a)mailman3.org (mailto:mailman-users@mailman3.org)
> > https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>
7 years, 5 months

[MM3-users] Re: I need professional help to get virtualenv Mailman3 installation running
by Guillermo Hernandez (Oldno7)
On 8/8/21 23:02, John Seifarth via Mailman-users wrote:
> Hello,
>
> I have been running Linux mailman2 servers for about 10 years, and sendmail/postfix servers for over 20 years.
>
> I have a client who wants to upgrade to Mailman 3 from their current Mailman2 system. I wanted to avoid the disruption of an upgrade, so I implemented a series of test servers with different names (leaving the mailman2 server in production at its historical address) running Ubuntu 18 and Ubuntu 20, using the mailman3 packages (3.1and 3.2 respectively). I sort of got it running with mailman 3.2 on Ubuntu 20, but couldn’t get Hyperkitty archiving to work.
>
> Plus the fact that mail bounce handling isn’t implemented prior to mailman 3.3.2, I decided to install the latest mailman version available in a venv environment, using the instructions at https://docs.mailman3.org/en/latest/install/virtualenv.html
>
> I followed the instructions carefully using the same paths, and tracked down and fixed errors as each step progressed. I finally set up a WSGI server according to the instructions, searched for and found (fragmentary) instructions for setting up the Apache configuration, started the mailman3 and mailman web services, and now have no errors in the /opt/mailman/web/logs files, the /var/log/apache files, and in syslog.
>
> But when I try to connect via the Web, I get the message "Server error An error occurred while processing your request.” in my browser. No other clues. I’m completely stuck, and I need help to conclude this rapidly, the client really needs the new service up and running ASAP.
That sounds as a config errors in Apache (did you load the uswgi apache
module, review the ports have been opened and other things related?).
I dn't really believe that you have to be an "expert" programmer in
Python to make mailman3 works. I'm not, and I did it. But I understand
that the lack of confidence in an area could be overwhelming.
I could point you to a thread I wrote in FreeBSD forums where I posted
config examples of all. It's not the same O.S. but the config files
would apply the same.
https://forums.FreeBSD.org/threads/mailman-3.61050/post-488122
The first post is about the things I did 'nt made well, and the second
is about what did work well.
Maybe it helps.
>
> I’m at the limit of my competence. I’ve been learning Python on and off (insufficient available time), and I installed Django and ran the tutorials. I still am woefully unskilled in the subtleties of a complex Python project like Mailman/Posterious/Hyperkitty, and I really need the help of an expert who can log into the server and see for themselves where the problem(s) are, and fix them.
>
> What I need is an experienced Python programmer, who has installed, run, and upgraded venv mailman3 installations. Of course, I will pay for this expertise, and charge it to the end client. In other words, I will pay you directly, and then I will worry about getting paid myself later. I am ready to pay €60/h for your skills, paid directly to your bank account, after receipt of your invoice. It shouldn’t be all that much work, since everything has been installed according to instructions, I’m just not a good enough Python programmer to get all the parts to work together correctly.
>
> It’s important to note that the end client is an organisation of European political parties, the virtual machine running the Ubuntu 20 server is hosted at OVH in France. Thus the professional with whom I would work should preferably also be based in the EU, and subject to EU law.
>
> Practically speaking, if anyone is interested, please send me a direct email with your email address and phone number, and then we can discuss how to do this practically in terms of SSH access, passwords, etc.
>
> Thanks for taking the time to read this, and I hope some Python Mailman pro can come to my aid.
>
> John
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>
--
3 years, 8 months

[MM3-users] Re: Mailman3 moving to new server, not able to establish SMTP connection
by Andrew Hodgson
Guys,
This has been fixed and was nothing to do with the SMTP server.
I stepped through the code of the outgoing runner and found that an exception was being handled and giving an unhelpful error message. Once I got to the real exception I found it was due to this error:
https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
downgrading importlib_resources fixed the issue straight away.
Thanks.
Andrew.
From: Andrew Hodgson
Sent: 28 March 2020 16:41
To: mailman-users(a)mailman3.org
Subject: Mailman3 moving to new server, not able to establish SMTP connection
Hi,
Whilst we are all stuck in doors I have started a project to move Mailman3 from a Docker installation to a new server using a Python venv. Old server was Debian Jessie and the new one is Buster. Using Exim with stock config.
Everything seems to be going ok but mail isn't delivering (cannot connect to SMTP server).
I have /opt/mailman which I did chown -R list:list
mailman.cfg has following MTA settings:
[mta]
incoming: mailman.mta.exim4.LMTP
configuration: python:mailman.config.exim4
I wrote a Systemd unit which starts Mailman from the venv and started up Mailman once I got Postgres sorted so it would create the necessary files in the var directory structure.
One thing I noticed and had to fix is that it doesn't creat the directories for existing lists, and the Exim config examples out there check for the existance of those directories to identify whether the address exists. I created those anyway and set ownership perms as before.
Once I fixed that I sent a test message to the owner address and that routed correctly and the headers indicated the message was sent back to localhost by Mailman.
However I can't get it to route a list message, here is a log showing the start of the Mailman master processes and me sending a test message from Outlook (so incoming mail is routing ok):
Mar 28 16:03:20 2020 (21877) Master started
Mar 28 16:03:32 2020 (21889) lmtp runner started.
Mar 28 16:03:32 2020 (21896) virgin runner started.
Mar 28 16:03:32 2020 (21887) command runner started.
Mar 28 16:03:32 2020 (21890) nntp runner started.
Mar 28 16:03:32 2020 (21886) bounces runner started.
Mar 28 16:03:33 2020 (21892) pipeline runner started.
Mar 28 16:03:33 2020 (21888) in runner started.
Mar 28 16:03:33 2020 (21895) retry runner started.
Mar 28 16:03:34 2020 (21894) rest runner started.
[2020-03-28 16:03:34 +0000] [21894] [INFO] Starting gunicorn 20.0.4
[2020-03-28 16:03:34 +0000] [21894] [INFO] Listening at: http://127.0.0.1:8001 (21894)
[2020-03-28 16:03:34 +0000] [21894] [INFO] Using worker: sync
[2020-03-28 16:03:34 +0000] [21963] [INFO] Booting worker with pid: 21963
Mar 28 16:03:34 2020 (21885) archive runner started.
[2020-03-28 16:03:34 +0000] [21965] [INFO] Booting worker with pid: 21965
Mar 28 16:03:34 2020 (21897) digest runner started.
Mar 28 16:03:36 2020 (21891) out runner started.
Mar 28 16:04:25 2020 (21888) ACCEPT:
<AM0PR08MB39085771D0E2D9114FDE8E83AFCD0(a)AM0PR08MB3908.eurprd08.prod.outlook.com<mailto:AM0PR08MB39085771D0E2D9114FDE8E83AFCD0@AM0PR08MB3908.eurprd08.prod.outlook.com>>
Mar 28 16:04:26 2020 (21885) HyperKitty archived message <AM0PR08MB39085771D0E2D9114FDE8E83AFCD0(a)AM0PR08MB3908.eurprd08.prod.outlook.com<mailto:AM0PR08MB39085771D0E2D9114FDE8E83AFCD0@AM0PR08MB3908.eurprd08.prod.outlook.com>> to https://lists.hodgsonfamily.org/hyperkitty/list/blind-sysadmins@lists.hodgs…
[28/Mar/2020:16:04:26 +0000] "GET /3.0/lists/blind-sysadmins(a)lists.hodgsonfamily.org<mailto:/3.0/lists/blind-sysadmins@lists.hodgsonfamily.org> HTTP/1.1" 200 445 "-" "GNU Mailman REST client v3.3.0"
Mar 28 16:04:27 2020 (21891) Cannot connect to SMTP server localhost on port 25
[28/Mar/2020:16:04:27 +0000] "GET /3.0/lists/blind-sysadmins(a)lists.hodgsonfamily.org/config<mailto:/3.0/lists/blind-sysadmins@lists.hodgsonfamily.org/config> HTTP/1.1" 200 2595 "-" "GNU Mailman REST client v3.3.0"
[28/Mar/2020:16:04:27 +0000] "GET /3.0/users/andrew(a)hodgson.io<mailto:/3.0/users/andrew@hodgson.io> HTTP/1.1" 200 439 "-" "GNU Mailman REST client v3.3.0"
Now in the out queue I have this:
root@elrond:/opt/mailman# ls -la /opt/mailman/var/queue/out
total 32
drwxrwx--- 2 list list 4096 Mar 28 16:34 .
drwxr-xr-x 14 list list 4096 Mar 28 13:25 ..
-rw-rw---- 1 list list 11152 Mar 28 16:34 1585413255.2412584+390ab148e589108ed9e849445e5e90410f69def3.bak
-rw-rw---- 1 list list 11152 Mar 28 16:34 1585413255.4891446+75bde47331619263b05f582c28ceb85a13bb5265.pck.tmp
There is no connection attempt in the Exim log from Mailman and I can connect to localhost:25.
This is a dualstack machine and I was wondering whether we had any IPV6 issues (I had an issue with Gunicorn and Nginx routing traffic due to this earlier that I had to sort), but as owner addresses are working I don't know what is different on that.
Any suggestions?
Thanks.
Andrew.
5 years

[MM3-users] Re: Still unable to get mailman3 working on Ubuntu 20.04 LTS
by Michael Heseltine
> This isn't your immediate problem, but it is an issue. The above isn't
> too informative. What do you get if you run
>
> /opt/mailman/mm/bin/django-admin qcluster
>
> manually?
I get the following:
> # /opt/mailman/mm/bin/django-admin qcluster
> 11:50:41 [Q] INFO Q Cluster autumn-sixteen-tango-march starting.
> 11:50:41 [Q] INFO Process-1:1 ready for work at 3725610
> 11:50:41 [Q] INFO Process-1:2 ready for work at 3725611
> 11:50:42 [Q] INFO Process-1:3 ready for work at 3725612
> 11:50:42 [Q] INFO Process-1:4 ready for work at 3725613
> 11:50:42 [Q] INFO Process-1:5 monitoring at 3725614
> 11:50:42 [Q] INFO Process-1 guarding cluster autumn-sixteen-tango-march
> 11:50:42 [Q] INFO Process-1:6 pushing tasks at 3725615
> 11:50:42 [Q] INFO Q Cluster autumn-sixteen-tango-march running.
And then nothing until I end the command with Ctrl-C.
> It would help to see the full traceback, not truncated at the right. You
> can scroll the display to the right with the right arrow key or just
> find the messages in /var/log/syslog.
Sorry, I didn't realize that they were truncated. Here are ( I hope) the full logs from /var/log/syslog:
> Jan 8 21:24:57 lists systemd[1]: Started GNU Mailman web interfaces.
> Jan 8 21:24:57 lists gunicorn[3707354]: !!!
> Jan 8 21:24:57 lists gunicorn[3707354]: !!! WARNING: configuration file should have a valid Python extension.
> Jan 8 21:24:57 lists gunicorn[3707354]: !!!
> Jan 8 21:24:57 lists gunicorn[3707354]: Traceback (most recent call last):
> Jan 8 21:24:57 lists gunicorn[3707354]: File "/opt/mailman/mm/venv/lib/python3.8/site-packages/gunicorn/arbiter.py", line 209, in run
> Jan 8 21:24:57 lists gunicorn[3707354]: self.sleep()
> Jan 8 21:24:57 lists gunicorn[3707354]: File "/opt/mailman/mm/venv/lib/python3.8/site-packages/gunicorn/arbiter.py", line 357, in sleep
> Jan 8 21:24:57 lists gunicorn[3707354]: ready = select.select([self.PIPE[0]], [], [], 1.0)
> Jan 8 21:24:57 lists gunicorn[3707354]: File "/opt/mailman/mm/venv/lib/python3.8/site-packages/gunicorn/arbiter.py", line 242, in handle_chld
> Jan 8 21:24:57 lists gunicorn[3707354]: self.reap_workers()
> Jan 8 21:24:57 lists gunicorn[3707354]: File "/opt/mailman/mm/venv/lib/python3.8/site-packages/gunicorn/arbiter.py", line 525, in reap_workers
> Jan 8 21:24:57 lists gunicorn[3707354]: raise HaltServer(reason, self.WORKER_BOOT_ERROR)
> Jan 8 21:24:57 lists gunicorn[3707354]: gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>
> Jan 8 21:24:57 lists gunicorn[3707354]: During handling of the above exception, another exception occurred:
> Jan 8 21:24:57 lists gunicorn[3707354]: Traceback (most recent call last):
> Jan 8 21:24:57 lists gunicorn[3707354]: File "/opt/mailman/mm/bin/gunicorn", line 14, in <module>
> Jan 8 21:24:57 lists gunicorn[3707354]: sys.exit(gunicorn.app.wsgiapp.run())
> Jan 8 21:24:57 lists gunicorn[3707354]: File "/opt/mailman/mm/venv/lib/python3.8/site-packages/gunicorn/app/wsgiapp.py", line 67, in run
> Jan 8 21:24:57 lists gunicorn[3707354]: WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]").run()
> Jan 8 21:24:57 lists gunicorn[3707354]: File "/opt/mailman/mm/venv/lib/python3.8/site-packages/gunicorn/app/base.py", line 231, in run
> Jan 8 21:24:57 lists gunicorn[3707354]: super().run()
> Jan 8 21:24:57 lists gunicorn[3707354]: File "/opt/mailman/mm/venv/lib/python3.8/site-packages/gunicorn/app/base.py", line 72, in run
> Jan 8 21:24:57 lists gunicorn[3707354]: Arbiter(self).run()
> Jan 8 21:24:57 lists gunicorn[3707354]: File "/opt/mailman/mm/venv/lib/python3.8/site-packages/gunicorn/arbiter.py", line 229, in run
> Jan 8 21:24:57 lists gunicorn[3707354]: self.halt(reason=inst.reason, exit_status=inst.exit_status)
> Jan 8 21:24:57 lists gunicorn[3707354]: File "/opt/mailman/mm/venv/lib/python3.8/site-packages/gunicorn/arbiter.py", line 342, in halt
> Jan 8 21:24:57 lists gunicorn[3707354]: self.stop()
> Jan 8 21:24:57 lists gunicorn[3707354]: File "/opt/mailman/mm/venv/lib/python3.8/site-packages/gunicorn/arbiter.py", line 393, in stop
> Jan 8 21:24:57 lists gunicorn[3707354]: time.sleep(0.1)
> Jan 8 21:24:57 lists gunicorn[3707354]: File "/opt/mailman/mm/venv/lib/python3.8/site-packages/gunicorn/arbiter.py", line 242, in handle_chld
> Jan 8 21:24:57 lists gunicorn[3707354]: self.reap_workers()
> Jan 8 21:24:57 lists gunicorn[3707354]: File "/opt/mailman/mm/venv/lib/python3.8/site-packages/gunicorn/arbiter.py", line 525, in reap_workers
> Jan 8 21:24:57 lists gunicorn[3707354]: raise HaltServer(reason, self.WORKER_BOOT_ERROR)
> Jan 8 21:24:57 lists gunicorn[3707354]: gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>
> Jan 8 21:24:58 lists systemd[1]: gunicorn.service: Main process exited, code=exited, status=1/FAILURE
> Jan 8 21:24:58 lists systemd[1]: gunicorn.service: Failed with result 'exit-code'.
3 years, 3 months

[MM3-users] Re: How to remove global ban using API?
by Nathan Dixon
For those who are interested. To be able to use global_bans =
IBanManager(None) and not get the following error:
Traceback (most recent call last): File "<stdin>", line 1, in
<module>TypeError: ('Could not adapt', None, <InterfaceClass
mailman.interfaces.bans.IBanManager>)
You need to use:
mailman shell
Not a standard python3 session.
To actually update the global bans not via the API, which has some
limitations at the moment (see the issue on Gitlab), I have done the
following workaround (later I will put in checks for an existing ban to do
an update instead, or a delete then create of the new ban):
1) I create a python script within the docker container within the existing
PYTHONPATH that will be the module that runs when I want to create or
update my ban (in this case under /usr/bin/)
#!/bin/env python
def create_valid_domains_ban(valid_domains_regex):
from mailman.interfaces.bans import IBanManager
global_bans = IBanManager(None)
global_bans.ban(valid_domains_regex)
print(list(global_bans.bans)[0].email)
2) I can then invoke this as a mailman module from the server using
docker exec mailman-core mailman shell -r create_valid_domains_ban
$valid_domains_regex
On Wed, 15 May 2019 at 21:21, Mark Sapiro <mark(a)msapiro.net> wrote:
> On 5/15/19 9:46 AM, Nathan Dixon wrote:
> >
> > I can create the ban fine by the following:
> >
> > from mailmanclient import Client
> > client = Client(URI,apiuser,apipass)
> >
> client.bans.add("^(?!.*[(a)\.](validdomain1\.com|validdomain2\.org|validdomain3\.co\.uk)")
>
>
> This is apparently a typo - missing ')' - in the re as you have it
> correct below.
>
>
> > However, I cannot seem to be able to remove it using the api:
> >>>> client.bans[0].delete()
> ...
> >>>> client.bans.remove(str(client.bans[0]))
> ...
> >>>>
> >
> client.bans.remove("^(?!.*[(a)\.](validdomain1\.com|validdomain2\.org|validdomain3\.co\.uk))")
>
>
> All of the above work for me with both API 3.0 and 3.1 in a non-docker
> install of the current GitLab HEADs
>
>
> > And also, when I now try and go into the mailman-core docker image to use
> > the mailman.interfaces.bans, it will not let me see the global bans:
> >
> >>>> from mailman.interfaces.bans import IBanManager
> >>>> global_bans = IBanManager(None)
> > Traceback (most recent call last):
> > File "<stdin>", line 1, in <module>
> > TypeError: ('Could not adapt', None, <InterfaceClass
> > mailman.interfaces.bans.IBanManager>)
>
>
> I don't see this either.
>
>
> > I have opened an issue in Gitlab for this as I feel it may be a bug
> related
> > to regex and global bans (there was a similar one for list banned
> > addresses): https://gitlab.com/mailman/mailman/issues/598
>
>
> I also commented on the GitLab issue. I think this must be an issue with
> the docker images.
>
> --
> Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
> San Francisco Bay Area, California better use your sense - B. Dylan
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>
--
*Nathan Dixon* MEng
Senior Software Architect
m: +44 (0)7402 690311
t: +44 (0)20 81231252
e: nathan.dixon(a)evadon.com
w: www.evadon.com
This e-mail and any attachments are confidential and may be protected by
legal, professional or other privilege. If you are not the intended
recipient you should not store it, copy it, re-transmit it, use it or
disclose its contents, but should return it to the sender immediately and
delete your copy from your system. The views expressed are those of the
sender and not necessarily those of Evadon. Please note that whilst we scan
all e-mails for viruses we cannot guarantee that any e-mail is virus-free.
Please be advised that we expressly reserve the right to monitor email
content for the purposes of ensuring compliance with legal requirements and
company policies and your sending to, or receiving from, us of any email
constitutes your agreement to these terms.
Evadon Dynamics Limited, registered in England No. 09494097. Registered
Office: Electric Works, Sheffield Digital Campus, 3 Concourse Way, Sheffield,
S1 2BJ
5 years, 11 months

[MM3-users] Re: How to hide sender completely
by Bill Oliver
You can rewrite almost anything using your mailserver. For instance
in postfix, see:
https://serverfault.com/questions/344104/rewrite-from-address-of-all-outgoi…
However, I have found that this doesn't work in a practical sense a lot
of the time because spam filters and blacklists notice it -- reverse
name resolution doesn't work.
I run a very small mailinglist for forensic pathologists to allow them
to discuss cases anonymously. Since many of our cases can have
political burdens (e.g. George Floyd), and because of the current
political climate in the US, we sometimes cannot speak freely when
discussing cases -- and it's important to get "curbside consults" on
difficult cases. So I set up an anonymous mailinglist to allow those
discussions without as much fear of being persecuted.
My solution has been to go to one of those vendors who will rent you an
anonymous vps, buy it with cryptocurrency, get an anonymus domain name
(for instance from najalla.la), and set up a server there. My current
server is supposedly owned by some name in Turkey. The practical
downside of this is that you have to be careful which vendor you use.
I got my first server from a vendor that was fairly notorious for
supporting spammers, and I found that my ip address was on a number of
blacklists -- not because of what *I* had done but because servers on
nearby numbers had been spamming and blacklist services now often block
broad swaths of numbers on either side of the offender. Thus, if
1.2.3.4 is the spammer and I am at 1.2.3.101, I will still get
blacklisted. Yahoo, gmail, att, bellsouth, and others are *very*
restrictive.
In order to get around *that* I ended up relaying from my anonymous
vendor through one of my non-anonymous servers. Some isps will also
block mail that is relayed as well, though.
In fact, one of my not-anonymous servers was a vps hosted by bluehost.
I found that I could not even ping or ssh one of my anonymous servers
from there. I opened a ticket and found out that the entire class C
address range had been firewalled by bluehost.
For awhile, I had aserver on the onion network, and routed my mail:
anonymous clearnet -> onion site -> anonymous clearnet -> users
But -- I'm not sure onionmail is worth the work. It was exhausting to
set that up and get it working. I took it down after a few months.
I strongly suggested to my users that they get anonymous email
addresses from places like protonmail, whch are sometimes also less
restrictive when it comes to blacklisting. Unfortunately, many of my
users are not very sophisticated, and insisted on using things like
gmail or yahoo.
So, in the end, I had to tailor my relaying and routing for each of the
major ISPs. Mail to users from my anonymous site that went to
bellsouth went through a different process than those who went to gmail
recipients.
Finally, remember that no matter what you do, you will always leave
*some* breadcrumbs. One of the nice things about some of these
anonymous vps vendors is that you can destroy and create servers on a
whim. So, I close down old servers and open up new ones every few
months, and transfer the mail service from machine to machine. It
requires having disposable domain names and such, and making sure users
whitelist them, but they are now a dime a dozen as long as you don't
mind having nonsense names.
billo
On Tue, 2023-05-09 at 11:00 +0200, Roland Miyamoto via Mailman-users
wrote:
> Dear community,
>
> Could anyone tell me whether there is a way to hide
> the sender address of list mails completely from the recipients.
>
> Even for an anonymous list, the sender still occurs in two fields
>
> envelope-from <sender(a)sender-domain.tld>
> X-MailFrom: sender(a)sender-domain.tld
>
> of the mail header.
> Is there a way to suppress this information?
>
> Best wishes, Roland
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> Archived at:
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
>
> This message sent to billo(a)billoblog.com
1 year, 11 months

[MM3-users] converting bulk accept_these_nonmembers in migration from mailman 2 to 3
by Lucio Chiappetti
I have been instructed by Mark Sapiro to subscribe to this list to post
questions related to mailman3.
On Mon, 31 Jan 2022, Mark Sapiro wrote:
> On 1/31/22 06:20, Lucio Chiappetti wrote:
>> One of the lists of which I am a co-moderator has been moved from
>> mailman 2 to 3.
Actually the migration has been made operative yesterday (and so we got
the first problems ...).
Basic background. There are a number of lists within my institution (a
nationwide research institution with many seats across our country), some
are institutional (all staff subscribed ex officio) and managed by staff
in one seat, some other are non-institutional (subscription is optional)
and are managed by a few volunteers in other cities different from the
seat where the mailman server runs.
> In particular, the list settings for *_these_nonmembers are at Settings
> -> Message Acceptance, but these settings in particular are deprecated
> in Mailman 3 except for regexps. In Mailman 3 the preferred way to say
> accept a nonmember is to create a nonmember for that user and set it's
> Moderation action to Default Processing. If, a nonmember posts, the
> nonmember record is automatically created,
Let me explain our case, and how it was managed in mailman2.
- originally our staff (of the order of 1000) had addresses like
user(a)place.inaf.it or user(a)place.astro.it. Some had even two (say
place1.inaf.it and place2.inaf.it), so they subscribed with ONE of their
work addresses
- later we got addresses like name.surname(a)inaf.it. New users subscribe
with this address but MANY of the old ones continue to use the PREVIOUS
address.
- we implemented a spam filtering policy as follows:
- staff (and former staff) can SUBSCRIBE with any address or CHANGE
their address. Any subscribed address will be recognised. Mail
is NOT held in moderation unless too bulky, or has undisclosed
recipients
- mail from non members with any address in the .it TLD or in the
tng.iac.es domain (where some of our staff work) goes into
moderation (this is achieved via regexp in hold_these_nonmembers)
- anything else is silently discarded as spam
(generic_nonmember_action = discard)
- when some staff posts from a non-subscribed address (be it the
home address, or one of the alternate addresses described above)
it therefore goes into moderation because of hold_these_nonmembers
- in mailman2 we could let them pass "manually" (if we recognised the
person) or (in case they used an alternate address) tick to add
them permanently to accept_these_nonmembers
(in one tick)
- at the end we got somehow fed up of this but we did NOT want to
accept any address of the form ^.+@.+\.inaf.it (which could be
forged) but found that we could simply put in accept_these_nonmembers
two entries like @list1 @list2
where list1 and list2 are two institutional lists on the same
server which contain all permanent and temporary staff or assimilated
with their official address (these lists are automagically generated
each week)
(so at least any VALID EXISTING official address is accepted)
What I found now (after the migration done by the administrators of the
central seat) is that in mailman3:
- accept_these_nonmembers is empty
- there are 189 entries listed in Non-members (which look those
formerly in accept_these_nonmembers)
- hold_these_nonmembers was copied identical with the same regexp's
as in mailman2
- I have inspected a few of them and found that they have
Administration options Moderation set to List default
- the effect of this apparently was that a post from some.guy(a)inaf.it
(whose subscription address is guy(a)somewhere.inaf.it) was hold for
moderation
is this due to a loop with the regexp in hold_these_nonmembers ?
the default action would be to let it pass
Or should we set Administration options Moderation to Accept
immediately ?
- if so, how can we do it automatically for all 189 entries ?
- or move back the 189 addresses to accept_these_nonmembers ?
- or for the future have persons posting with alternate addrresses
accepted for the future WITH ONE CLICk ?
- AND LAST BUT NOT LEAST would the syntax @list1 in
accept_these_nonmembers work in mailman3 ?
already putting it back will save a lot of work.
Many thanks
--
Lucio Chiappetti - INAF/IASF - via Corti 12 - I-20133 Milano (Italy)
For more info : http://www.iasf-milano.inaf.it/~lucio/personal.html
------------------------------------------------------------------------
"All that is google does not glitter
Nor all who use alpine/procmail are lost"
3 years, 2 months

[MM3-users] Re: MASS mailing list import - 900 ezmlm lists to Mailman
by Stephen Turnbull
Hi, Grant,
Aside from Mark's suggestions, a few comments. First, I wouldn't depend on any software to help you with GDPR; it's still an labor-intensive regulation, and conforming to it doesn't even guarantee you won't violate the regulations of member countries. For some lists Mailman's anonymous list configuration may help you preserve privacy, it's pretty good at removing PII from the (usually invisible, but trivial to expose) message header.
Second, apparently you have the necessary authorization to install software on the new host. If so you should consider going straight to Mailman 3. Who knows when cPanel will make the jump, but I can say they have been watching Mailman 3 development for a few years now, and with both Mailman 2 and Python 2 EOL they're probably thinking seriously about it within the life of your lists.
One advantage to Mailman 3 over Mailman 2 is that there are several UIs and APIs for configuring lists, giving you more options for batch configuration. Installation is pretty straightforward, configuration is somewhat complicated but anybody subscribed to this list can help (and frequently does before the devs get to it). Both versions of Mailman support announcement lists and plain old discussion lists well. I forget about Mailman 2, but Mailman 3 has a "style" you can select at list creation time to set it up for announcements.
Third, if the ezmlm list configuration database is well-documented, I don't see why it would be difficult to write a batch script to mass-convert ezmlm lists to Mailman 3 lists. We already have one to do that for Mailman 2 to Mailman 3 that would serve as a template. I don't know what the level of tech for conversion *to* Mailman *2* is, there might be something already available (I haven't managed anything but Mailman lists since 1997... 😮). Unfortunately, if anybody would know if *we* would have such a thing, Mark would, so since he didn't mention one I guess you have to look elsewhere.
Fourth, Mailman 2 doesn't use an external database (configurations are in a Python-specific format and the archives are just a static website), but Mailman 3 plays well with the usual suspects = MySQL and PostgreSQL, and also supports SQLite3. ISTR either seeing list members talking about using Oracle or some documentation of it; presumably you can use anything that the SQLAlchemy Python package supports.
The only potential disadvantage I can see to Mailman 3 over Mailman 2 is that if you ever need to redact stuff from the archives, for Mailman 2 you can use an ordinary editor but for Mailman 3's bundled archiver HyperKitty it's a database operation, so you'll need to either learn those skills or befriend/pay for someone who has them.
Be happy to help with more specific questions.
________________________________
From: grant(a)horizonsunlimited.com <grant(a)horizonsunlimited.com>
Sent: Wednesday, April 19, 2023 9:41 AM
To: mailman-users(a)mailman3.org <mailman-users(a)mailman3.org>
Subject: [MM3-users] MASS mailing list import - 900 ezmlm lists to Mailman
Hi,
I hope someone can help.
I have 900-ish, mostly small lists, basically all locations round the globe where people have volunteered to help particular people passing though. Those lists have 2 to 200 people. There are about 50 lists of up to 1000 people each we use for announcements. So two different setups, and a whole lot of manual work.
I am moving from an old, now unreliable, host to a new one. Hopefully reliable, certainly cheaper, and better for privacy GDPR etc regs.
Mailman is already installed, appears to be version 82?? on cPanel 108.0.15. Ezmlm, no surprise, is not. Installing and configuring it is not something trivial, also have to install gmail etc. Yuck.
So, Mailman... going through to create one, I can see that 900 will be my life's work.
I'm not a programmer, but reasonably technical, write html, css skills poor but adequate, command line isn't tooo scary, MySQL I don't go near. DOS batch files no problem! :)
ANY IDEAS / suggestions appreciated!
Thanks, Grant
_______________________________________________
Mailman-users mailing list -- mailman-users(a)mailman3.org
To unsubscribe send an email to mailman-users-leave(a)mailman3.org
https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
Archived at: https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
This message sent to turnbull.stephen.fw(a)u.tsukuba.ac.jp
2 years

[MM3-users] Re: Does hyperkitty show JPEGs in line and what about attachments?
by tlhackque
On 12-Jul-17 12:39, Mark Sapiro wrote:
>
> Also, with respect to Mailman 2.1, if you want the scrubber to preserve
> file names and extensions, set the following in mm_cfg.py
>
> SCRUBBER_DONT_USE_ATTACHMENT_FILENAME = False
> SCRUBBER_USE_ATTACHMENT_FILENAME_EXTENSION = True
>
> and if you want scrubbed HTML to not be HTML escaped so it renders
> rather than looking like raw html, set
>
> ARCHIVE_HTML_SANITIZER = 3
>
> but note this comment from Defaults.py
>
>> # 3 - Remove text/html as attachments but don't HTML-escape them. Note: this
>> # is very dangerous because it essentially means anybody can send an HTML
>> # email to your site containing evil JavaScript or web bugs, or other
>> # nasty things, and folks viewing your archives will be susceptible. You
>> # should only consider this option if you do heavy moderation of your list
>> # postings.
>
> This is an issue with HyperKitty as it appears this is what HyperKitty
> does and there's no way to turn it off.
>
This warning seems a bit dated, though it's not completely wrong. It
comes from the days when HTML was new, browsers were fragile, and
javascript treated with suspicion. And virus/spam scanners for email
were non-existent.
Today, it's a very rare website that doesn't rely on javascript
(Postorious and Hyperkitty use JS). Browsers, while they still have
bugs, are much more defensive. And there are plenty of truly evil sites
that they have to defend against.
It is certainly true that archived e-mail can turn your site into an
unknowing distributor of malware: FLASH bugs, documents with embedded
buffer overflows, cross-site scripting and the other many ills of the
day. Wikis deal with this frequently.
However, in these cases, your mailing list has distributed the same bits
to your subscribers - a community that you probably care more about than
a random visitor to your (open) archive.
I wouldn't run a list - public or private - where the traffic doesn't go
through SPAM and virus filtering before Mailman sees it. (SpamAssassin
and ClamAV are good open-source solutions.) And once you've done that
(and Mailman 3's optional DMARC), most of these attacks are
defanged/mitigated. This is essentially automated moderation - to a point.
Note that all the Djano authentication schemes packaged with Mailman
(facebook, google, etc) rely on javascript and are sites littered with
what the comment refers to as "webbugs" - Google Analytics, tracking
cookies, browser fingerprinting, 0 size images (the original webbug).
They make money (and have become mainstream) using technologies that
were considered anti-social when that warning was written. (Personally,
I still think of them as anti-social, but the public has chosen to pay
for services with privacy...)
While some may elect to stick with the highly restrictive policies of
"plain text only", this limits the information content and applicability
of the the platform. Whether this is acceptable depends on the
community that you serve. Mailman can be an effective mechanism to
deliver rich media on a "push" basis. And that's "rich" by 1980
standards (bold, well-formatted tables, an attached agenda or document
package); not even "rich" by today's (sleeping cat videos...).
I think that Mailman has to be able to handle today's rich media with a
reasonable degree of safety and convenience. Including in the
archives. I thought that was one of the goals for Mailman Version 3...
I also think that the advice quoted above should be modified to better
reflect these realities. Mailman isn't the only tool available to
protect users from evil content, and aggressively filtering to plaintext
is a very blunt instrument. Including anti-spam, anti-virus, DNS
blacklisting, DKIM/DMARC tests in the delivery pipeline (most of which
can be/is done before Mailman touches a post) should be strongly
recommended.
Checks for headers indicating checked-by local (anti-spam/anti-virus)
agents should be available in the Mailman rulesets (and require some
cooperation from the MTA to ensure that they can't be passed through
from outside.)
There is nothing wrong with running a plain text only site, if it serves
your community. But if Mailman wants to be relevant in today's
environment, it has to adapt to rich content as more than an unwelcome
guest. (As I have :0)
7 years, 9 months

[MM3-users] Re: Apache+mod_wsgi issue
by Eggert Ehmke
Am Montag, 26. Dezember 2022, 16:08:42 CET schrieb Odhiambo Washington:
> On Mon, Dec 26, 2022 at 5:07 PM Eggert Ehmke <eggert(a)eehmke.de> wrote:
> > Ok,
> >
> > I hope this is readable. I just copíed the content of some files into the
> > pastebin, don't know if it is possible to post tar.gz there.
> > https://pastebin.ubuntu.com/p/mmRJJwKDc3/
> >
> > Just tell me if this works for you, and when something is missing.
> > Most of the settings are copied from some other sites and just adjusted
> > for my
> > needs.
> > Good luck!
>
> So it seems your WSGIDaemonProcess is defined somewhere outside the VHOST,
> right? Or it wasn't necessary?
I have no settings for WSGIDaemon whatsoever. It's all handled by the uwsgi
inside the venv.
> And what does your urls.py look like?
Which of the various urls.py files do you need?
>
> My setup is PUBLIC for everyone so I will not hide the domain name :-)
>
> In my setup, MM3 is installed in /opt/mailman/mm/. and mod_wsgi is enabled
> in Apache.
> I am running uwsgi on a TCP socket, not unix socket.
>
> The whole of my *VHOST:*
> <CUT>
> WSGIDaemonProcess mailman-web display-name=mailman-web
> maximum-requests=1000 umask=0002 user=mailman group=mailman
> python-path=/opt/mailman/mm:/opt/mailman/mm/venv/lib/python3.9/site-packages
> :/opt/mailman/mm/venv/lib/python3.9 python-home=/opt/mailman/mm/venv
> home=/opt/mailman/mm/var
> WSGIRestrictSignal Off
> <VirtualHost *:443>
> ServerName mm3-lists.kictanet.or.ke
>
> SSLEngine on
> SSLCertificateFile "/usr/local/etc/letsencrypt/live/
> mm3-lists.kictanet.or.ke/cert.pem"
> SSLCertificateKeyFile "/usr/local/etc/letsencrypt/live/
> mm3-lists.kictanet.or.ke/privkey.pem"
> SSLCertificateChainFile "/usr/local/etc/letsencrypt/live/
> mm3-lists.kictanet.or.ke/chain.pem"
> CustomLog /var/log/mm3-lists-access.log combined
> ErrorLog /var/log/mm3-lists-error.log
> LogLevel info
> Alias /favicon.ico /opt/mailman/mm/static/hyperkitty/img/favicon.ico
> Alias /static "/opt/mailman/mm/static"
> <Directory "/opt/mailman/mm/static">
> Require all granted
> </Directory>
> WSGIScriptAlias / /opt/mailman/mm/wsgi.py
> <Directory "/opt/mailman/mm/">
> <Files wsgi.py>
> Order deny,allow
> Allow from all
> Require all granted
> </Files>
> WSGIProcessGroup mailman-web
> </Directory>
> </VirtualHost>
> </CUT>
>
> *2. uwsgi.ini:*
> <CUT>
> [uwsgi]
> http-socket = 127.0.0.1:8000
> pidfile = /opt/mailman/mm/var/uwsgi.pid
> chdir = /opt/mailman/mm/
> virtualenv = /opt/mailman/mm/venv/
> module=mailman_web.wsgi:application
> env =PYTHONPATH=/opt/mailman/mm/
> env =DJANGO_SETTINGS_MODULE=settings
> master = true
> process = 2
> threads = 2
> attach-daemon = /opt/mailman/mm/venv/bin/mailman-web qcluster
> req-logger = file:/opt/mailman/mm/var/logs/uwsgi.log
> logger = qcluster file:/opt/mailman/mm/var/logs/uwsgi-qcluster.log
> log-route = qcluster uwsgi-daemons
> logger = cron file://opt/mailman/mm/var/logs/uwsgi-cron.log
> log-route = cron uwsgi-cron
> logger = file:/opt/mailman/mm/var/logs/uwsgi-error.log
> uid = mailman
> gid = mailman
> </CUT>
>
> *3. uwsgi - *Running supervised (supervisord):
> <CUT>
> [program:uwsgi]
> directory=/opt/mailman/mm/
> environment=PYTHONPATH=/opt/mailman/mm/
> command=/usr/bin/su -m mailman -c '/opt/mailman/mm/venv/bin/uwsgi --ini
> /opt/mailman/mm/uwsgi.ini' 2>&1 | logger -t uwsgi
> autostart=true
> autorestart=true
> user=mailman
> group=mailman
> stopasgroup=true
> killasgroup=true
> </CUT>
>
> *4. urls.py*:
> <CUT>
> from django.conf.urls import include
> from django.urls import re_path
> from django.contrib import admin
> from django.urls import reverse_lazy
> from django.views.generic import RedirectView
> from django_mailman3.views.profile import delete_account, user_profile
> urlpatterns = [
> re_path(r'^$', RedirectView.as_view(
> url=reverse_lazy('list_index'),
> permanent=True)),
> re_path(r'^postorius/', include('postorius.urls')),
> re_path(r'^hyperkitty/', include('hyperkitty.urls')),
> re_path(r'^user-profile/delete$', delete_account,
> name='mm_user_account_delete'),
> re_path(r'^user-profile/$', user_profile, name='mm_user_profile'),
> re_path(r'^accounts/', include('allauth.urls')),
> re_path(r'^admin/', admin.site.urls),
> re_path(r'^mm/', include('postorius.urls')),
> re_path(r'^archives/', include('hyperkitty.urls')),
> ]
> </CUT>
>
> And that's pretty much what I am using on my FreeBSD server.
>
>
> PS: Possible to bottom-post instead of top-posting? :)
2 years, 3 months

[MM3-users] Re: Getting connection refused on postfix trying to connect to mailman-core:lmtp
by Abhilash Raj
On Thu, Oct 5, 2017, at 08:56 PM, Dmitry Makovey wrote:
> On 10/05/2017 07:20 PM, Abhilash Raj wrote:
> > On Thu, Oct 5, 2017, at 05:36 PM, Dmitry Makovey wrote:
> >> On 10/05/2017 03:20 PM, Abhilash Raj wrote:
> >>> On Thu, Oct 5, 2017, at 03:08 PM, Dmitry Makovey wrote:
> >>>>
> >>>> I've got a setup where postfix runs inside one VM(container) and mailman
> >>>> runs inside another one (maxking containers). I've wired everything
> >>>> according to docs yet I'm getting:
> >>>>
> >>>> postfix/lmtp[266]: 66A72800A87: to=<somelist(a)lists.here.stanford.edu>,
> >>>> relay=none, delay=0.5, delays=0.48/0.01/0/0, dsn=4.4.1, status=deferred
> >>>> (connect to mailman-01.stanford.edu[1.2.3.4]:8024: Connection refused)
> >
> > I found this in your settings:
> >
> > [mta] lmtp_host: mailman-01.stanford.edu
> > [mta] lmtp_port: 8024
> >
> >
> > And the log message above.
> >
> > I believe that the LMTP runner died because it wasn't able to bind to
> > `mailman-01.stanford.edu`, which I am assuming is the hostname assigned
> > to the host running these containers.
> >
> > `MM_HOSTNAME` env variable in the docker containers should be something
> > that the process inside mailman-core container can bind to and can be
> > reached by postfix (which can run either on host or on another
> > container). (Now that I read it myself, I agree that the name of the
> > variable sounds not-so-intuitive.)
>
> thank you so much for the hints! I've changed docker-compose to include
> MM_HOSTNAME variable *and* made sure that for the mailman-core I've got:
>
> services:
> mailman-core:
> hostname: mailman-01
> domainname: stanford.edu
> ...
> environment:
> ...
> MM_HOSTNAME: mailman-01.stanford.edu
>
>
> that solved the issue while keeping the mentioned mailman config. Is
> that what you've had in mind? I was looking for a quick hack, but still
> would like to find out proper solution if that isn't the one.
If that is the address that can be used to reach the container from
postfix, nothing else is needed. That is the proper solution.
>
> > The default configuration (and docker-compose.yaml) sets this value to
> > the IP Address of the container (172.19.199.2), which is reachable from
> > the host. If you set this value to whatever IP the mailman-core is
> > assigned and re-create the containers (or just re-start and run `mailman
> > aliases` in mailman-core to re-generate transport_maps), it would work
> > out.
>
> if I understand above correctly that means semi-manual mangling of
> postfix aliases file which I'd rather not do.
Not exactly manual, next time you re-create the container, these aliases
should be generated correctly. I asked for re-generating aliases as
you'd have wrong ones. BUT, because `mailman-01.stanford.edu` was
actually the correct address, it probably wasn't needed.
> Using above technique
> mailman-core does generate proper aliases while binding to the
> appropriate IP. kind of icky but seems to work.
>
> >
> > Also, I see your docker-compose.yaml configuration (`MAILMAN_CORE_IP:
> > 172.19.199.2`) is not consistent with your output of `mailman
> > conf`([webservice] hostname: 172.19.199.5`). I am not sure how that
> > happened though, just wanted to point it out. This *might* cause the
> > rest runner to die to and thus Postorius/HK wouldn't work.
>
> right, some of the IPs keep on popping at me and I've got to look for
> them - I intentionally removed direct IP assignment in
> docker-compose.yaml yet I get the feeling that someplace there's another
> IP assignement I've missed.
>
> > Hope that was helpful!
>
> very much so! thanks for your quick responses - provided my existing
> deadlines I value them that much more :)
>
> --
> Sr System and DevOps Engineer SoM IRT
>
> Email had 1 attachment:
> + signature.asc
> 1k (application/pgp-signature)
--
Abhilash Raj
maxking(a)asynchronous.in
7 years, 6 months

[MM3-users] Re: E-mail every minute: "Cron <www-data@sharky5> ..."
by Odhiambo Washington
On Sun, Jul 7, 2024 at 8:43 PM Robert Heller <heller(a)deepsoft.com> wrote:
> At Sun, 7 Jul 2024 19:48:02 +0300 Odhiambo Washington <odhiambo(a)gmail.com>
> wrote:
>
> >
> > On Sun, Jul 7, 2024 at 7:16 PM Robert Heller <heller(a)deepsoft.com>
> wrote:
> >
> > > At Sun, 7 Jul 2024 18:52:05 +0300 Odhiambo Washington <
> odhiambo(a)gmail.com>
> > > wrote:
> > >
> > > >
> > > > On Sun, Jul 7, 2024 at 4:12 PM Robert
> Heller <heller(a)deepsoft.com>
> > > wrote:
> > > >
> > > > > 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).
> > > > >
> > > >
> > > > Which docs are you relying on?
> > >
> > > https://docs.mailman3.org/en/latest/config-web.html
> > >
> > > I presume these are the official docs for mailman3 -- maybe they
> aren't?
> > >
> > > >
> > > > How about this -
> > > https://docs.mailman3.org/en/latest/install/virtualenv.html
> > > > ??
> > >
> > > I'm not using a virtual environment. I'm using all native Debian 12
> > > packages,
> > > installed via apt. The virtual environment docs are actually even worse
> > > (even
> > > more confusing).
> >
> >
> > Worse? :-)
>
> Even more confusing. Both sets of docs make various assumptions and don't
> really explain things properly. Like everywhere where "settings.py" is
> mentioned, it really means "/etc/mailman3/mailman-web.py"
>
No! It means /etc/mailman3/settings.py - literally!
> In any case, the virtual environment docs are hard to relate to a "native"
> install and are generally hard to follow, since they seem to jump all over
> the
> place.
When one day you'll be able to internalize what a Python virtual
environment is, you'll realize that it's VERY convenient.
You will actually embrace it from that point onwards.
(Spaghetti docs?) And it is hard to replace the various (and not
> always consistent) virtual environment paths and settings files to the
> "native"
> paths.
Actually, if you're this inclined to run everything natively, MM3 is
perhaps not for you. Why? Because you'll not easily find help here.
We focus on the virtual environment only as the standard.. Why? Because no
one is willing to deal with ALL the OS-centric packaging
out there. Python virtual environment is universal across all the OSes, I
can say.
> The "official" docs are just not useful to me, since I am not using a
> virtual
> environment. If a virtual environment is recomended, what is the point of
> the
> Debian 12 packages?
We cannot answer that here. I guess they are meant for people like you who
strive under pain :-)
With the Python virtual environment, I can install and manage MM3 in almost
any *nix OS.
> Are they just not meant to be used? Really? Do you mean that I should use
> a separate package management system for Mailman3? That
> really sucks.
>
Yes, they are meant to be used. Noone denies that. However, they are not
packaged by the Mailman Developers.
Did you read one response from Mark Sapiro where he said, and I quote:
```
If you prefer to use the Debian packages, that's fine, but if using the
Debian packages, your primary resource for support, documentation, bug
reports, etc. should be Debian. See https://wiki.list.org/x/12812344
```
So yes, go ahead and use the Debian packages. No one is stopping you.
--
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]
9 months, 2 weeks

[MM3-users] import21 / hyperkitty_import: sqlalchemy.orm.exc.MultipleResultsFound: Multiple rows were found for one_or_none()
by Christian Schwarz
Hi all,
after upgrading from Mailman 2.1 to Mailman 3 (Debian Buster), one (but not all) of the lists causes the following exception.
The list was imported using import21 and archives were imported using manage.py hyperkitty_import.
Jul 29 10:19:43 2019 (761) REST request handler error:
Traceback (most recent call last):
File "/usr/lib/python3.7/wsgiref/handlers.py", line 137, in run
self.result = application(self.environ, self.start_response)
File "/usr/lib/python3/dist-packages/mailman/database/transaction.py", line 50, in wrapper
rtn = function(*args, **kws)
File "/usr/lib/python3/dist-packages/mailman/rest/wsgiapp.py", line 216, in __call__
return super().__call__(environ, start_response)
File "falcon/api.py", line 215, in falcon.api.API.__call__
File "falcon/api.py", line 189, in falcon.api.API.__call__
File "/usr/lib/python3/dist-packages/mailman/rest/lists.py", line 402, in on_get
archiver_set = IListArchiverSet(self._mlist)
File "/usr/lib/python3/dist-packages/zope/interface/interface.py", line 135, in __call__
adapter = self.__adapt__(obj)
File "/usr/lib/python3/dist-packages/zope/interface/interface.py", line 151, in __adapt__
adapter = hook(self, obj)
File "/usr/lib/python3/dist-packages/zope/component/_api.py", line 156, in adapter_hook
return sitemanager.queryAdapter(object, interface, name, default)
File "/usr/lib/python3/dist-packages/zope/interface/registry.py", line 348, in queryAdapter
return self.adapters.queryAdapter(object, interface, name, default)
File "/usr/lib/python3/dist-packages/zope/interface/adapter.py", line 353, in queryAdapter
return self.adapter_hook(provided, object, name, default)
File "/usr/lib/python3/dist-packages/zope/interface/adapter.py", line 363, in adapter_hook
result = factory(object)
File "/usr/lib/python3/dist-packages/mailman/database/transaction.py", line 85, in wrapper
return function(args[0], config.db.store, *args[1:], **kws)
File "/usr/lib/python3/dist-packages/mailman/model/mailinglist.py", line 607, in __init__
ListArchiver.name == archiver_name).one_or_none()
File "/usr/lib/python3/dist-packages/sqlalchemy/orm/query.py", line 3017, in one_or_none
"Multiple rows were found for one_or_none()"
sqlalchemy.orm.exc.MultipleResultsFound: Multiple rows were found for one_or_none()
I got that from the log file /var/log/mailman3/mailman.log.
The Installation also sends emails to me, indicating some kind of exception in the except branch (see below).
What can I do to debug this?
Thanks,
Christian
---------------------------------------------
Internal Server Error: /postorius/lists/LISTNAMEREDACTED/
KeyError at /postorius/lists/LISTNAMEREDACTED/
'file'
Traceback:
File "/usr/lib/python3/dist-packages/django/core/handlers/exception.py" in inner
41. response = get_response(request)
File "/usr/lib/python3/dist-packages/django/core/handlers/base.py" in _get_response
187. response = self.process_exception_by_middleware(e, request)
File "/usr/lib/python3/dist-packages/django/core/handlers/base.py" in _get_response
185. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/python3/dist-packages/django/views/generic/base.py" in view
68. return self.dispatch(request, *args, **kwargs)
File "/usr/lib/python3/dist-packages/postorius/views/generic.py" in dispatch
65. return super(MailingListView, self).dispatch(request, *args, **kwargs)
File "/usr/lib/python3/dist-packages/django/views/generic/base.py" in dispatch
88. return handler(request, *args, **kwargs)
File "/usr/lib/python3/dist-packages/postorius/views/list.py" in get
252. 'hyperkitty' in self.mailing_list.archivers and # noqa: W504
File "/usr/lib/python3.7/_collections_abc.py" in __contains__
666. self[key]
File "/usr/lib/python3/dist-packages/mailmanclient/restbase/base.py" in __getitem__
151. return self._get(key)
File "/usr/lib/python3/dist-packages/mailmanclient/restbase/base.py" in _get
90. return self.rest_data[key]
File "/usr/lib/python3/dist-packages/mailmanclient/restbase/base.py" in rest_data
76. response, content = self._connection.call(self._url)
File "/usr/lib/python3/dist-packages/mailmanclient/restbase/connection.py" in call
99. raise HTTPError(url, response.status, content, response, None)
During handling of the above exception (HTTP Error 500: b'A server error occurred. Please contact the administrator.'), another exception occurred:
File "/usr/lib/python3/dist-packages/django/core/handlers/exception.py" in inner
41. response = get_response(request)
File "/usr/lib/python3/dist-packages/postorius/middleware.py" in __call__
39. return self.get_response(request)
File "/usr/lib/python3/dist-packages/django/core/handlers/exception.py" in inner
43. response = response_for_exception(request, exc)
File "/usr/lib/python3/dist-packages/django/core/handlers/exception.py" in response_for_exception
93. response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
File "/usr/lib/python3/dist-packages/django/core/handlers/exception.py" in handle_uncaught_exception
135. extra={'status_code': 500, 'request': request},
File "/usr/lib/python3.7/logging/__init__.py" in error
1412. self._log(ERROR, msg, args, **kwargs)
File "/usr/lib/python3.7/logging/__init__.py" in _log
1519. self.handle(record)
File "/usr/lib/python3.7/logging/__init__.py" in handle
1529. self.callHandlers(record)
File "/usr/lib/python3.7/logging/__init__.py" in callHandlers
1591. hdlr.handle(record)
File "/usr/lib/python3.7/logging/__init__.py" in handle
905. self.emit(record)
File "/usr/lib/python3/dist-packages/django/utils/log.py" in emit
118. reporter = ExceptionReporter(request, is_email=True, *exc_info)
File "/usr/lib/python3/dist-packages/django/views/debug.py" in __init__
246. self.template_info = getattr(self.exc_value, 'template_debug', None)
File "/usr/lib/python3.7/tempfile.py" in __getattr__
614. file = self.__dict__['file']
Exception Type: KeyError at /postorius/lists/LISTNAMEREDACTED/
Exception Value: 'file'
5 years, 8 months

[MM3-users] Re: UnpicklingError on mailman lists command
by Bryan Loniewski
Okay, so the issue has been fixed by updating the data to an empty list equivalent (after finding, confirming and copying another lists empty value):
MySQL [mailman]> SELECT accept_these_nonmembers INTO @newatn FROM mailinglist WHERE list_name='foo_is_a_good_list_with_emptyval';
MySQL [mailman]> UPDATE mailinglist SET accept_these_nonmembers=@newatn WHERE list_name='the_borked_list';
Query OK, 1 row affected (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 0
Thanks for the help on troubleshooting that!
Based on your import21 comments, I'm realizing the issue may be caused by multiple runs of import21. I have been (although I've stopped it for some time now) running import21 nightly to sync up my Mailman3 list data with Mailman2. I've been doing the same for archiving as well.
I've noticed now that some lists have duplicate acceptable alias entries (looks to be like <number of aliases> x <number of import21 runs>) and the same goes for *_these_nonmembers entries.
Is this a symptom of running the old(er) import21 command pre-3.3.2? Will the 3.3.2 import21 work as expected w/out the duplications if I was to clear out the appropriate lists col data (i.e., is it okay to run import21 multiple times)? I tried to figure out if there were any other duplicative data, but did not come across any. Is there more that I'm missing?
________________________
Bryan Loniewski
Rutgers University
OIT:EAS:Messaging and Collaboration Services
System Administrator
________________________________________
From: Mark Sapiro <mark(a)msapiro.net>
Sent: Tuesday, August 3, 2021 12:28 PM
To: mailman-users(a)mailman3.org
Subject: [MM3-users] Re: UnpicklingError on mailman lists command
On 8/3/21 7:35 AM, Bryan Loniewski wrote:
> Okay, that helped identify possible culprits. Three of our lists are hitting/over the max BLOB length (65,535 bytes) for accept_these_nonmembers. I executed this SQL command for each of the BLOB cols you referenced and only accept_these_nonmembers is borked:
>
> MySQL [mailman]> SELECT list_name, OCTET_LENGTH(accept_these_nonmembers) as howManyBytes from mailinglist where OCTET_LENGTH(accept_these_nonmembers) > 64000;
> +---------------+--------------+
> | list_name | howManyBytes |
> +---------------+--------------+
> | <snip> | 65535 |
> | <snip> | 65535 |
> | <snip> | 65535 |
> +---------------+--------------+
> 3 rows in set (0.01 sec)
>
> So, putting aside *why* these lists are so large wrt that column, can or should I alter the col type(s) to MEDIUMBLOB? If yes, would that remain on suite upgrades? If no, is there a better alternative? Or some recommendation in between?
Modifying the column type at this point will not help because the data
has already been truncated and the missing piece is gone. It may help
avoid future issues, but I suspect it's not necessary. It would probably
'stick' on an upgrade as long as there were no new migration affecting
those columns, but if there were such a migration, it could fail due to
the existing type not being as expected.
I suspect these lists were imported from Mailman 2.1 with the `mailman
import21` command. The goal of that is to import the addresses as
non-members with the appropriate action and put only the regexps in the
MM 3 *_these_nonmembers. Prior to Mailman 3.3.2, import21 would add the
entire 2.1 *_these_nonmembers and then delete the non-regexps. Possibly
something went wrong in that process because of the truncation and left
the new *_these_nonmembers in a broken state. Or possibly you just have
a huge number of regexps in these list's accept_these_nonmembers.
I suggest you use mysql to update this column's data for these three
lists. to a value which unpickles as an empty list. This value is the
python bytes b'\x80\x04\x5d\x94\x2e' (i.e. 5 bytes with hex values 80,
04, 5d, 94 and 2e). I'm not sure how that is stored in a MySQL BLOB, but
I'm sure you can determine that. This will allow you to actually access
those lists in Mailman.
Also note that beginning with Postorius 1.3.3, the *_these_nonmembers
settings are exposed on the List Settings -> Message Acceptance form.
If you still have the original MM 2.1 config.pck files, you can examine
them with Mailman 2.1's bin/dumpdb command to see what was in
accept_these_nonmembers, and then see if the appropriate MM 3 nonmembers
were created and if the remaining regexps are not too long, add them. If
you need help with this, I will help.
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
_______________________________________________
Mailman-users mailing list -- mailman-users(a)mailman3.org
To unsubscribe send an email to mailman-users-leave(a)mailman3.org
https://nam02.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.mai…
3 years, 8 months

[MM3-users] Re: Hyperkitty performance problem
by Greg Newby
Hi monochromec. I have a similar installation and was also having various
problems and delays. I'm on a similarly sized system (Ubuntu 24.04 with
venv installations of mailman3; 32GB memory).
What I found was that tuning of the resources made a very significant
impact. Out of the box tuning parameters for the various components were
not sufficient to keep mail flowing.
The "system info" tab in the web interface tells you where things are held
up, if they are. I was having trouble with the 'out' queue getting slow,
and the postfix 'mailq' was showing thousands of messages waiting to be
delivered. I was running out of smtpd processes. Archiving was delayed
(though not as much as yours).
Some of the things I did:
- Increase PostgreSQL resource limits. Some of the parameters in my
configuration files:
# Tuning, via https://pgtune.leopard.in.ua/ for 'data warehouse' app.
max_connections = 100 # default
shared_buffers = 8GB
effective_cache_size = 24GB
maintenance_work_mem = 2GB
# wal_buffers = 16MB
default_statistics_target = 500
effective_io_concurrency = 2
work_mem = 26214kB
min_wal_size = 4GB
max_wal_size = 16GB
max_parallel_workers_per_gather = 4
max_parallel_maintenance_workers = 4
- Increase the number of mailman processes in mailman.cfg
# Note: Values need to be a power of 2. Make sure PostgreSQL allows more
connections than the # of instances
[runner.in]
class: mailman.runners.incoming.IncomingRunner
instances: 16
# instances: 8
[runner.out]
class: mailman.runners.outgoing.OutgoingRunner
instances: 64
The "out" setting, notably, decreased mail delivery times.
- Increase postfix resources. Notably in main.cf:
# https://www.postfix.org/TUNING_README.html
# default_process_limit = 100 # default
default_process_limit = 250
Maybe these will point you in the right direction. I realize you are
focused on hyperkitty, and my experience was that all the major components
(database, MTA and mailman3) all needed more resources.
~ Greg
On Sat, Dec 28, 2024 at 7:26 AM monochromec via Mailman-users <
mailman-users(a)mailman3.org> wrote:
> Following the root cause analysis which Tobias started all those weeks ago
> we (the admin team behind the installation) are still struggling with the
> following phenomenon: messages on average take more than 24 hours to be
> processed, more precisely, the average lifetime of a pickled message object
> in `/var/lib/mailman3/queue/pipeline` clocks in at around 26 hours).
>
> Couple of stats of the installation: standard installation from Bookworm
> OS repos, Hyperkitty as archiver and Postorius as web frontend as explained
> above, running Python 3.11.2 from the standard systemd service as packaged
> with the Bookworm deb file. All backends (Core + Hyperkitty) are supported
> by Postgres version 15+248. The MTA is a standard Postfix installation,
> again from OS packages.
>
> The underlying VM has 7 cores with just under 24 GB of main memory. This
> production instance is handling less than 130 mailing list (MLs) with an
> average of less than 10 postings per day per ML. CPU core utilisation
> hovers around 50% with the lion share allocated to the four pipeline
> runners as part of the MM configuration.
>
> OS resource utilisation is well below bounds (approx. 8 GB of main memory
> allocated to running processes), plenty of available sockets space (I
> noticed some transient `Connection lost during _handle_client()` warnings
> in the logs so I checked that the SMTP runner can connect to Postfix for
> delivering the messages after processing by checked the socket allocation
> of the running processes).
>
> Cursory review of the corresponding Core classes (runner + pipeline
> implementation in addition to `posting_pipeline`) didn't reveal any further
> pointers. What I did notice though that increasing the logging levels of
> the components (namely `smtp`, `pipeline` and `lmtp` to `debug`) in
> `/etc/mailman3/mailman.cfg` didn't add any useful information to the logs
> as configured after restarting the Core.
>
> As outlined above, Hyperkitty doesn't seem to do a check based on ML and
> message ID before archiving a message in the database. But this only add a
> REST roundtrip and Postgres communication through Hyperkitty's underlying
> Django framework to the overall system load and the driving UWSGI instance
> is well within CPU cycle bounds.
>
> Any pointers are appreciated - more than happy to provide more info if
> required.
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> Archived at:
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
>
> This message sent to gbnewby(a)petascale.org
>
3 months, 3 weeks

[MM3-users] Re: Hyperkitty CPU usage
by Abhilash Raj
On Sat, Apr 27, 2019, at 6:22 PM, Alain Kohli wrote:
> I'm running a custom image which is based on an older version of the one
> here: https://github.com/maxking/docker-mailman. I attached it below.
> But I separated postorius and hyperkitty, so hyperkitty is running in
> its own container. I'm deploying the image with a plain 'docker run'
> behind nginx. I made fulltext_index persistent now, but it didn't get
> populated with anything yet. I don't really have an error traceback
> because there is never an error thrown. The only thing with some content
> is uwsgi-error.log, which you can find below. I'm also still getting the
> "A string literal cannot contain NUL (0x00) characters." messages. I
> also noticed that it takes incredibly long for the webinterface to load
> (several minutes) even though there doesn't seem to be any process
> consuming notable resources apart from the minutely job.
>
> Funnily enough, I have the exact same image deployed on a second server
> as well for testing. On that one everything works fine. The only
> difference is that on the problematic one I have a lot more mailing
> lists/archives and that I imported them from mailman2. Could something
> have gone wrong during the import? I used the regular hyperkitty_import
> command.
Yes, this is because `whoosh`, the library set by default to run fulltext
indexing is a pure python implementation and quite slow in busy lists.
We do support more backends though, see [1] for a list of all the supported
search backends. Something like Xapian(C++) or Elasticsearch/Solr(Java)
should be much better in terms of performance.
[1]: https://django-haystack.readthedocs.io/en/master/backend_support.html
>
> uwsgi-error.log:
>
> *** Starting uWSGI 2.0.18 (64bit) on [Sat Apr 27 22:50:17 2019] ***
> compiled with version: 6.4.0 on 27 April 2019 22:48:42
> os: Linux-4.9.0-8-amd64 #1 SMP Debian 4.9.144-3.1 (2019-02-19)
> nodename: hyperkitty.docker
> machine: x86_64
> clock source: unix
> detected number of CPU cores: 4
> current working directory: /home/hyperkitty
> detected binary path: /usr/local/bin/uwsgi
> !!! no internal routing support, rebuild with pcre support !!!
> setgid() to 82
> setuid() to 82
> chdir() to /home/hyperkitty
> your memory page size is 4096 bytes
> detected max file descriptor number: 1048576
> lock engine: pthread robust mutexes
> thunder lock: disabled (you can enable it with --thunder-lock)
> uwsgi socket 0 bound to TCP address 0.0.0.0:8081 fd 8
> uwsgi socket 1 bound to TCP address 0.0.0.0:8080 fd 9
> Python version: 3.6.8 (default, Jan 30 2019, 23:54:38) [GCC 6.4.0]
> Python main interpreter initialized at 0x55dfaa41c980
> python threads support enabled
> your server socket listen backlog is limited to 100 connections
> your mercy for graceful operations on workers is 60 seconds
> [uwsgi-cron] command "./manage.py runjobs minutely" registered as
> cron task
> [uwsgi-cron] command "./manage.py runjobs quarter_hourly" registered
> as cron task
> [uwsgi-cron] command "./manage.py runjobs hourly" registered as cron
> task
> [uwsgi-cron] command "./manage.py runjobs daily" registered as cron task
> [uwsgi-cron] command "./manage.py runjobs monthly" registered as
> cron task
> [uwsgi-cron] command "./manage.py runjobs weekly" registered as cron
> task
> [uwsgi-cron] command "./manage.py runjobs yearly" registered as cron
> task
> mapped 208576 bytes (203 KB) for 4 cores
> *** Operational MODE: threaded ***
> WSGI app 0 (mountpoint='') ready in 1 seconds on interpreter
> 0x55dfaa41c980 pid: 1 (default app)
> *** uWSGI is running in multiple interpreter mode ***
> spawned uWSGI master process (pid: 1)
> spawned uWSGI worker 1 (pid: 40, cores: 4)
> Sat Apr 27 22:50:18 2019 - [uwsgi-cron] running "./manage.py runjobs
> minutely" (pid 45)
> [uwsgi-daemons] spawning "./manage.py qcluster" (uid: 82 gid: 82)
> 22:50:21 [Q] INFO Q Cluster-47 starting.
> 22:50:21 [Q] INFO Process-1:1 ready for work at 59
> 22:50:21 [Q] INFO Process-1:2 ready for work at 60
> 22:50:21 [Q] INFO Process-1:3 ready for work at 61
> 22:50:21 [Q] INFO Process-1:4 ready for work at 62
> 22:50:21 [Q] INFO Process-1:5 monitoring at 63
> 22:50:21 [Q] INFO Process-1 guarding cluster at 58
> 22:50:21 [Q] INFO Process-1:6 pushing tasks at 64
> 22:50:21 [Q] INFO Q Cluster-47 running.
> 22:59:31 [Q] INFO Enqueued 3403
> 22:59:31 [Q] INFO Process-1:1 processing [update_from_mailman]
> 22:59:33 [Q] INFO Processed [update_from_mailman]
> Sat Apr 27 23:00:00 2019 - [uwsgi-cron] running "./manage.py runjobs
> quarter_hourly" (pid 73)
> Sat Apr 27 23:00:00 2019 - [uwsgi-cron] running "./manage.py runjobs
> hourly" (pid 74)
> [uwsgi-cron] command "./manage.py runjobs quarter_hourly" running
> with pid 73 exited after 64 second(s)
> 23:01:28 [Q] INFO Enqueued 3404
> 23:01:29 [Q] INFO Process-1:2 processing
> [rebuild_mailinglist_cache_recent]
> [uwsgi-cron] command "./manage.py runjobs hourly" running with pid
> 74 exited after 91 second(s)
> Sat Apr 27 23:01:36 2019 - uwsgi_response_write_body_do(): Broken
> pipe [core/writer.c line 341] during GET / (212.203.58.154)
> OSError: write error
> 23:01:36 [Q] INFO Processed [rebuild_mailinglist_cache_recent]
> Sat Apr 27 23:15:00 2019 - [uwsgi-cron] running "./manage.py runjobs
> quarter_hourly" (pid 88)
> [uwsgi-cron] command "./manage.py runjobs quarter_hourly" running
> with pid 88 exited after 4 second(s)
> 23:28:24 [Q] INFO Enqueued 3405
> 23:28:24 [Q] INFO Process-1:3 processing [update_from_mailman]
> 23:28:25 [Q] INFO Processed [update_from_mailman]
> Sat Apr 27 23:30:00 2019 - [uwsgi-cron] running "./manage.py runjobs
> quarter_hourly" (pid 96)
> [uwsgi-cron] command "./manage.py runjobs quarter_hourly" running
> with pid 96 exited after 4 second(s)
> 23:44:40 [Q] INFO Enqueued 3406
> 23:44:40 [Q] INFO Process-1:4 processing [update_from_mailman]
> 23:44:41 [Q] INFO Processed [update_from_mailman]
> Sat Apr 27 23:45:00 2019 - [uwsgi-cron] running "./manage.py runjobs
> quarter_hourly" (pid 104)
> [uwsgi-cron] command "./manage.py runjobs quarter_hourly" running
> with pid 104 exited after 4 second(s)
> Sun Apr 28 00:00:00 2019 - [uwsgi-cron] running "./manage.py runjobs
> quarter_hourly" (pid 113)
> Sun Apr 28 00:00:00 2019 - [uwsgi-cron] running "./manage.py runjobs
> hourly" (pid 114)
> Sun Apr 28 00:00:00 2019 - [uwsgi-cron] running "./manage.py runjobs
> daily" (pid 115)
> Sun Apr 28 00:00:00 2019 - [uwsgi-cron] running "./manage.py runjobs
> weekly" (pid 116)
> [uwsgi-cron] command "./manage.py runjobs quarter_hourly" running
> with pid 113 exited after 55 second(s)
> [uwsgi-cron] command "./manage.py runjobs weekly" running with pid
> 116 exited after 55 second(s)
> 00:01:36 [Q] INFO Enqueued 3407
> 00:01:36 [Q] INFO Process-1:1 processing
> [rebuild_mailinglist_cache_recent]
> [uwsgi-cron] command "./manage.py runjobs hourly" running with pid
> 114 exited after 99 second(s)
> 00:01:50 [Q] INFO Processed [rebuild_mailinglist_cache_recent]
> 00:04:52 [Q] INFO Enqueued 3408
> 00:04:52 [Q] INFO Process-1:2 processing [update_from_mailman]
> 00:04:54 [Q] INFO Processed [update_from_mailman]
>
> Dockerfile:
>
> FROM python:3.6-alpine3.7 # Add startup script to container COPY
> assets/docker-entrypoint.sh /usr/local/bin/ # Install packages and
> dependencies for hyperkitty and add user for executing apps. # It's
> important that the user has the UID/GID 82 so nginx can access the
> files. RUN set -ex \&& apk add --no-cache --virtual .build-deps gcc
> libc-dev linux-headers git \postgresql-dev \&& apk add --no-cache
> --virtual .mailman-rundeps bash sassc mailcap \postgresql-client
> curl \&& pip install -U django==2.2 \&& pip install
> git+https://gitlab.com/eestec/mailmanclient
>
> \git+https://gitlab.com/mailman/hyperkitty@c9fa4d4bfc295438d3e01cd93090064d004cf44d
> \git+https://gitlab.com/eestec/django-mailman3 \whoosh \uwsgi
> \psycopg2 \dj-database-url \typing \&& apk del .build-deps \&&
> addgroup -S -g 82 hyperkitty \&& adduser -S -u 82 -G hyperkitty
> hyperkitty \&& chmod u+x /usr/local/bin/docker-entrypoint.sh# Add
> needed files for uwsgi server + settings for django COPY
> assets/__init__.py /home/hyperkittyCOPY assets/manage.py
> /home/hyperkittyCOPY assets/urls.py /home/hyperkittyCOPY
> assets/wsgi.py /home/hyperkittyCOPY assets/uwsgi.ini
> /home/hyperkittyCOPY assets/settings.py /home/hyperkitty# Change
> ownership for uwsgi+django files and set execution rights for
> management script RUN chown -R hyperkitty /home/hyperkitty && chmod
> u+x /home/hyperkitty/manage.py# Make sure we are in the correct
> working dir WORKDIR /home/hyperkittyEXPOSE 8080 8081# Use stop
> signal for uwsgi server STOPSIGNAL SIGINTENTRYPOINT
> ["docker-entrypoint.sh"]CMD ["uwsgi", "--ini",
> "/home/hyperkitty/uwsgi.ini"]
>
> On 4/27/19 7:58 PM, Abhilash Raj wrote:
> > On Sat, Apr 27, 2019, at 9:40 AM, Alain Kohli wrote:
> >> I have run "python manage.py rebuild_index" before, doesn't that do
> >> clear_index as well? Apart from that, I run hyperkitty in a docker
> >> container and didn't know fulltext_index should be persistent, so that
> >> got deleted after every version update for sure.
> > Which images are you using and how are you deploying them?
> >
> > You should persist fulltext_index, yes, and possibly logs if you need
> > them for debugging later.
> >
> > Can you paste the entire error traceback?
> >
> >>
> >> On 4/26/19 10:18 PM, Mark Sapiro wrote:
> >>> On 4/26/19 11:14 AM, Alain Kohli wrote:
> >>>> I see loads of "A string literal cannot contain NUL (0x00) characters."
> >>>> messages, but I haven't found missing messages in the archives yet. Not
> >>>> sure how that could be related, though. Apart from that I don't see
> >>>> anything unusual. The other jobs (quarter_hourly, hourly, etc.) seem to
> >>>> run and finish normally.
> >>> Did you upgrade from a Python 2.7 version of HyperKitty to a Python 3
> >>> version? The Haystack/Whoosh search engine databases are not compatible
> >>> between the two and "A string literal cannot contain NUL (0x00)
> >>> characters." is the symptom.
> >>>
> >>> You need to run 'python manage.py clear_index' or just remove all the
> >>> files from the directory defined as 'PATH' under HAYSTACK_CONNECTIONS in
> >>> your settings file (normally 'fulltext_index' in the same directory that
> >>> contains your settings.py.
> >>>
> >> _______________________________________________
> >> Mailman-users mailing list -- mailman-users(a)mailman3.org
> >> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> >> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> >>
>
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>
--
thanks,
Abhilash Raj (maxking)
5 years, 11 months

[MM3-users] Re: Post installation issues (recipients refused) with Exim4 in a virtual host environment
by Kyriakos Terzopoulos
Hi,
I have the following in my mailman log
[11/Oct/2023:12:31:39 +0300] "GET /3.1/lists/
testlist(a)myproject.eu/held/count HTTP/1.1" 200 73 "-" "GNU Mailman REST
client v3.3.5"
[11/Oct/2023:12:31:43 +0300] "GET /3.1/lists/testlist.myproject.eu HTTP/1.1"
200 425 "-" "GNU Mailman REST client v3.3.5"
[11/Oct/2023:12:31:43 +0300] "GET /3.1/lists/testlist(a)myproject.eu/config
HTTP/1.1" 200 3111 "-" "GNU Mailman REST client v3.3.5"
[11/Oct/2023:12:31:43 +0300] "GET /3.1/lists/testlist.myproject.eu/archivers
HTTP/1.1" 200 100 "-" "GNU Mailman REST client v3.3.5"
[11/Oct/2023:12:31:51 +0300] "GET /3.1/lists/testlist.myproject.eu HTTP/1.1"
200 425 "-" "GNU Mailman REST client v3.3.5"
Oct 11 12:31:51 2023 (1534165) deque: do_confirm_verify
Traceback (most recent call last):
File
"/opt/mailman/venv/lib/python3.10/site-packages/mailman/app/workflow.py",
line 69, in __next__
return step()
File
"/opt/mailman/venv/lib/python3.10/site-packages/mailman/app/subscriptions.py",
line 382, in _step_send_confirmation
raise StopIteration
StopIteration
[11/Oct/2023:12:31:51 +0300] "POST /3.1/members HTTP/1.1" 202 143 "-" "GNU
Mailman REST client v3.3.5"
[11/Oct/2023:12:31:51 +0300] "GET /3.1/lists/testlist.myproject.eu HTTP/1.1"
200 425 "-" "GNU Mailman REST client v3.3.5"
[11/Oct/2023:12:31:51 +0300] "GET /3.1/lists/testlist(a)myproject.eu/config
HTTP/1.1" 200 3111 "-" "GNU Mailman REST client v3.3.5"
[11/Oct/2023:12:31:51 +0300] "GET /3.1/lists/testlist.myproject.eu/archivers
HTTP/1.1" 200 100 "-" "GNU Mailman REST client v3.3.5"
*Kyriakos Terzopoulos
*Web developer / e-learning expert
*Tel:*+30 211 213 9858
*Mobile:* +30 694 526 4512
* E-mail: *kyriakos.terzopoulos(a)gmail.com
* Skype:* kyriakos.terzopoulos
Find me on Facebook <http://www.facebook.com/cirrus3d>
Follow me on Twitter <http://twitter.com/#%21/cirrus3d>
On Wed, 11 Oct 2023 at 11:54, Odhiambo Washington <odhiambo(a)gmail.com>
wrote:
> On Wed, Oct 11, 2023 at 11:15 AM Kyriakos Terzopoulos <
> kyriakos.terzopoulos(a)gmail.com> wrote:
>
> > Hi,
> >
> > I have set up (I believe successfully) and configured the following in a
> > Virtualhost environment (with HestiaCP):
> >
> > - A record for lists.mydomain.com
> > - Venv
> > - Mailman core
> > - Mailman web (run migrate, collectstatic, compress, compilemessages)
> > Postorius
> > - gunicorn, hyperkitty
> > - Nginx
> > - SMTP exim4 conf
> >
> > I can see Posrorius and I have logged in and created my first mailing
> list:
> >
> > [image: Screenshot 2023-10-11 at 10.57.31 AM.png]
> >
> > My issue is that even though I have subscribed to my list as you can see
> > above, I am not receiving the confirmation email. I get a "recipients
> > refused" error. The smtp log for mailman is as follows:
> >
> > Oct 11 10:41:20 2023 (1533666)
> > <169701007904.1534165.14569329382406660776@localhost> recipients
> refused:
> > {'
> > kyriakos.terzopoulos(a)gmail.com': (550, b'Verification failed for
> > <testlist-bounces+kyriakos.terzopoulos=gmail.com(a)myproject.eu
> > >\nUnrouteable
> > address\nSender verify failed')}
> >
> > Oct 11 10:41:20 2023 (1533666)
> > <169701007904.1534165.14569329382406660776@localhost> smtp to
> > testlist(a)myproject.eu for 1 recips, completed in 0.26796579360961914
> > seconds
> >
> > Oct 11 10:41:20 2023 (1533666)
> > <169701007904.1534165.14569329382406660776@localhost> post to
> > testlist(a)myproject.eu from
> > testlist-confirm+c9b20c5290bec43147a7e96a6b8cd825daf913d7(a)myproject.eu,
> > 1667 bytes, 1 failures
> >
> > Oct 11 10:41:20 2023 (1533666)
> > <169701007904.1534165.14569329382406660776@localhost> delivery to
> > kyriakos.terzopoulos(a)gmail.com failed with code 550, b'Verification
> failed
> > for <testlist-bounces+kyriakos.terzopoulos=gmail.com(a)myproject.eu
> > >\nUnrouteable
> > address\nSender verify failed'
> >
> > I have used the configuration for exim that is here
> > <
> >
> https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/docs/mta.h…
> > >
> > and
> > I have also tested with the alternative approach that is documented in
> >
>
> What do you have in the Exim's mainlog?
>
>
> --
> Best regards,
> Odhiambo WASHINGTON,
> Nairobi,KE
> +254 7 3200 0004/+254 7 2274 3223
> "Oh, the cruft.", egrep -v '^$|^.*#' ¯\_(ツ)_/¯ :-)
> [How to ask smart questions:
> http://www.catb.org/~esr/faqs/smart-questions.html]
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> Archived at:
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
>
> This message sent to kyriakos.terzopoulos(a)gmail.com
>
1 year, 6 months

[MM3-users] Re: Postorius extremely slow on some of the mailinglists
by Eric Broens
Dear Stephen,
Thank you for your reply.
I have finally found what caused the problem after encountering the "HTTP
Error 409: Subscription request already pending".
Thanks to the archives of the mailman-users mailing list, I found out that
there was a long list of pending confirmations for the slow mailinglists,
mostly from non-real subscribers.
Postorius functioned as expected again after having deleted these using the
cli.
Best regards,
Eric
-----Original Message-----
From: Stephen J. Turnbull <turnbull(a)sk.tsukuba.ac.jp>
Sent: Monday, 10 February 2025 15:55
To: eric.broens(a)skynet.be
Cc: mailman-users(a)mailman3.org
Subject: [MM3-users] Postorius extremely slow on some of the mailinglists
Eric Broens via Mailman-users writes:
> Mainly "GET /3.1/lists/<mailing_list>@<domain>/requests HTTP/1.1"
> takes a long time.
The only thing I can think of is that something weird is happening with
requests (held messages) on those lists. The runner is waiting on the
database server, and eventually timing out, I think.
I believe you will find the corresponding messages under $var_dir/messages
(var_dir is usually set in mailman.cfg, if not I believe it defaults to
/usr/local/mailman3/var). Unfortunately I don't know how to link those
entries to the messages in that directory tree. You can "grep -ri
'^list-id:.*<your.list.id>$' messages" for held posts via the problem list
if you have list ID on (that's the default for recent Mailman) and if that's
not going to work you could use "grep -rF 'your(a)list.id' messages" for a
less precise search.
It's not a good idea to delete them from the file system (I think Mailman is
robust to that but I'm not sure). However, if one looks like spam you could
try working at a slightly lower level than Postorius by using mailmanclient
directly. See
https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/rest/docs/p
ost-moderation.html.
If that doesn't work (for example listing the requests for a list times out
the same way in mailmanclient), you could try directly querying the database
server to see what's going on. The check for an unusual number of requests
that might be an attack is to connect to the database server with its
command line utility. I'm not on CLI terms with MySQL but for PostgreSQL
it's
$ su - mailman
$ psql
mailman=> select mailing_list_id, count(mailing_list_id) from _request group
by mailing_list_id; mailman=> select id, list_id from mailinglist;
and you can append " where id = $mailing_list_id" to the second to the
second one to find the List-Id for a specific mailing list. That's just
plain SQL including the count function as far as I know, so should work in
any backend that Mailman can use. If you're handy with SQL you could do all
that with a join but I'm not. ;-)
> Any idea why this happens and how it can be solved?
Aside from a really astonishingly large number of pending requests (as
tested above with count()), perhaps there's something in the requests
themselves. If there aren't literally thousands of requests for a problem
list you can list them with
mailman=> select key, mailing_list_id from _request;
Look for odd characters in the key field. One oddity that I'mm pretty sure
is not a problem is something of the form "\r\n <message-id>" (my instance
lists those fine). There's a bug in Exchange (IIRC) which sometimes
includes invalid characters (specifically "[" and "]") in message IDs which
I believe we worked around only quite recently, although I don't recall if
it affected APIs for requests. Control characters and non-ASCII might also
cause trouble,
If your database server is MySQL, is it set up to handle the full range of
Unicode (I think the option is utf8mbcs)? Lacking that is known to cause
problems when headers and maybe body contain emoticons or other extended
Unicode characters. Again I don't recall if crashing the REST runner is a
known symptom.
If none of the above works, there's always the "hit it with a hammmer"
approach. Have you tried restarting both Postorius and Mailman? How about
restarting the database server? How about all three?
As a last resort, it's probably possible to delete the requests from the
filesystem and the database by hand. But I don't want to think about that
unless absolutely necessary.
Steve
1 month, 3 weeks

[MM3-users] Re: Broken web UI after upgrade - SOLVED
by Odhiambo Washington
On Sat, Dec 17, 2022 at 9:59 AM Odhiambo Washington <odhiambo(a)gmail.com>
wrote:
>
>
> On Sat, Dec 17, 2022 at 9:33 AM Mark Sapiro <mark(a)msapiro.net> wrote:
>
>> On 12/16/22 22:21, Mark Sapiro wrote:
>> >
>> > I suggest you look at ownership and permissions.
>> >
>> > ```
>> > find /opt/mailman/mm/static/ -not -user mailman
>> > find /opt/mailman/mm/static/ -not -perm -u+rw
>> > find /opt/mailman/mm/static/ -type d -not -perm -u+x
>> > ```
>> > and the same on
>> > /opt/mailman/mm/venv/lib/python3.9/site-packages/hyperkitty/
>> >
>> >
>> >> If the above doesn't reveal anything substantial, then let me know and
>> I
>> >> can bump up the verbosity.
>> >
>> >
>> > I don't know if --verbosity 3 will reveal anything or not. You could
>> try.
>>
>>
>> Did you see the post at
>> <
>> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…>?
>>
>> Have you tried
>> ```
>> django-admin clear_cache
>>
>
> (venv) mailman@list:~$ /opt/mailman/mm/bin/django-admin clear_cache
> Cache "default" has been cleared!
> (venv) mailman@list:~$ ls -al /opt/mailman/mm/static/CACHE/
> total 16
> drwxr-xr-x 4 mailman mailman 4096 Dec 16 22:01 .
> drwxr-xr-x 9 mailman mailman 4096 Dec 4 06:38 ..
> drwxr-xr-x 2 mailman mailman 4096 Dec 16 22:01 css
> drwxr-xr-x 2 mailman mailman 4096 Dec 16 22:01 js
> (venv) mailman@list:~$ ls -al /opt/mailman/mm/static/CACHE/css/
> total 8
> drwxr-xr-x 2 mailman mailman 4096 Dec 16 22:01 .
> drwxr-xr-x 4 mailman mailman 4096 Dec 16 22:01 ..
> (venv) mailman@list:~$ ls -al /opt/mailman/mm/static/CACHE/js/
> total 8
> drwxr-xr-x 2 mailman mailman 4096 Dec 16 22:01 .
> drwxr-xr-x 4 mailman mailman 4096 Dec 16 22:01 ..
> (venv) mailman@list:~$
>
> So all the css files that were in /opt/mailman/mm/static/CACHE/css/ are
> gone after running `django-admin clear_cache`.
>
> After that, I did run my mailman-post-update script again which created
> dirfferent files under CACHE/css/ as the date shows
> (venv) mailman@list:~$ ls -al /opt/mailman/mm/static/CACHE/
> total 20
> drwxr-xr-x 4 mailman mailman 4096 Dec 16 22:46 .
> drwxr-xr-x 9 mailman mailman 4096 Dec 4 06:38 ..
> drwxr-xr-x 2 mailman mailman 4096 Dec 16 22:46 css
> drwxr-xr-x 2 mailman mailman 4096 Dec 16 22:46 js
> -rw-r--r-- 1 mailman mailman 621 Dec 16 22:46 manifest.json
> (venv) mailman@list:~$ ls -al /opt/mailman/mm/static/CACHE/css/
> total 176
> drwxr-xr-x 2 mailman mailman 4096 Dec 16 22:46 .
> drwxr-xr-x 4 mailman mailman 4096 Dec 16 22:46 ..
> -rw-r--r-- 1 mailman mailman 162923 Dec 16 22:46 output.1d3a3c0dd51d.css
> -rw-r--r-- 1 mailman mailman 1209 Dec 16 22:46 output.9a7b11621c5a.css
> -rw-r--r-- 1 mailman mailman 569 Dec 16 22:46 output.e68c4908b3de.css
> (venv) mailman@list:~$
>
> I then rebooted the system just to be sure everything is restarted.
>
> And the PROBLEM IS SOLVED :-)
>
> Thank you very much for your time spent in following this up with me to
> the conclusion.
>
So just for the record, I have added the clear_cache option to the script.
Maybe this will benefit someone else one day.
<CUT>
#!/bin/bash
set -e
BINDIR="/opt/mailman/mm/bin"
CONFDIR="/opt/mailman/mm"
SETTINGS="settings"
DJANGO_CONTROL_SCRIPT="$BINDIR/django-admin"
STATIC_DIR="$CONFDIR/static"
DEBUG="False"
set -x
if [ "$DEBUG" == "False" ]; then
mkdir -p "$STATIC_DIR" || :
"$DJANGO_CONTROL_SCRIPT" clear_cache
"$DJANGO_CONTROL_SCRIPT" collectstatic --clear --noinput --verbosity 0
"$DJANGO_CONTROL_SCRIPT" compress
"$DJANGO_CONTROL_SCRIPT" compilemessages
fi
syncdb_cmd="$DJANGO_CONTROL_SCRIPT migrate"
if [[ ! -t 1 ]]; then
# stdout is not a terminal
syncdb_cmd="$syncdb_cmd --noinput"
fi
$syncdb_cmd
echo 'Do you want to rebuild the search index? This takes a long time.'
echo 'Type "Yes" to continue; anything else to quit.'
read -p "> " response
if [ "x$response" != "xYes" ] ; then exit; fi
"$DJANGO_CONTROL_SCRIPT" update_index
</CUT>
The important thing here is that after an update, it helps to run the
following 4 options with your "django-admin" script (whatever it is named)
- clear_cache, collectstatic, compress, compilemessages.
--
Best regards,
Odhiambo WASHINGTON,
Nairobi,KE
+254 7 3200 0004/+254 7 2274 3223
"Oh, the cruft.", egrep -v '^$|^.*#' ¯\_(ツ)_/¯ :-)
2 years, 4 months

[MM3-users] Fwd: Re: Removing a mail addresses and users
by Allan Hansen
All,
This disconnect between Mailman Core and Django and Postorius is, by far, the weakest and, for subscribers, most confusing aspect of MM3
(once it has been installed, which is extremely hard and confusing).
In a true account-centric system, you set up a web account and from there manage your emails and, for each email, your subscriptions.
Subscription options would be hierarchical: account/email/list, with lower levels inheriting/overriding settings from/the level above.
That’s really what I had expected when I pushed for us to move our 50 email lists to MM3 and I was very excited about the prospect,
as it would solve a lot of system/subscriber management issues I had managing MM2.
Alas, I was very surprised that that’s not how MM3 works. Some things got harder, even, such as the inability to change subscription addresses, which should have been a showstopper from the start!
I still hope that MMxx OOTB will get there, but I guess it’ll be along haul. Would we be talking about MM4 to be released 20 years from now?
Some dedicated and skilled developers are currently investing heavily in a replacement for Postorius, but I really believe that any work is better spent transforming Mailman Core etc. into a true account-based system. Then, and only then, will it make sense to build new and better interfaces on top, as, without a healthy core, such interface will currently may have to inherit the confusion and disconnect that currently is so aggravating.
The above is not meant to aggravate the MM3 development team, for which I have utmost respect and gratitude, and which I admire for their tireless support given over decades to the community of admins. Software development is devilishly hard and time consuming.
Yours,
Allan Hansen
hansen(a)rc.org
> Begin forwarded message:
>
> From: Mark Sapiro <mark(a)msapiro.net>
> Subject: [MM3-users] Re: Removing a mail addresses and users
> Date: June 10, 2020 at 12:46:01 PDT
> To: mailman-users(a)mailman3.org
>
> On 6/10/20 10:23 AM, Abhijith PA via Mailman-users wrote:
>> Hello.
>>
>> I tried to remove random email address signing ups (which I signed up
>> while testing) via admin panel. After removing I tried to sign up again,
>> but I am getting,
>>
>> 'A user is already registered with this e-mail address'
>
> You removed the user's subscription from the list, but you didn't remove
> the user from the system.
>
> Mailman3 has a concept of `user` which didn't exist in Mailman 2.1.
> User's have addresses and a user or one of the user's addresses can
> belong to a list with one or more roles (non-member, member, moderator
> or owner)
>
>
>> Combing through the database, I found auth_user table in mailman3web db
>> still contain those mail address. How to wipe email address entirely
>> from the db so I can signup again without the 'forget password' method
>
> There are a couple of things. If you log in to the web UI as a django
> superuser, you can go to the django admin UI -> Users section and delete
> the User, but I think that will only delete the web user and not delete
> the user from Mailman core.
>
> You can also log in to the web UI as the user and go to
> <https://lists.mailman3.org/user-profile/delete>, but that again only
> deletes the web user, and if you could do that, you could just subscribe
> once you're logged in, so I assume that's what you want to avoid.
>
> I don't think there is a way for a user as opposed to a site admin to
> delete her user record from Mailman core and even for a site admin,
> there's no way in Postorius to delete a user from core. It has to be
> done via REST
> <https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/rest/docs/…>
> or `mailman shell`.
>
> --
> Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
> San Francisco Bay Area, California better use your sense - B. Dylan
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
4 years, 10 months

[MM3-users] MM3 + Postfix + Dovecot + PostfixAdmin
by maztec@gmail.com
System: Debian Buster
Install: Functioning Postfix w/ Dovecot using PostfixAdmin for virtual domain and mailbox management
Definitions: Host.TLD = my server's domain name; List.TLD = listserv's domain name; ListName = list's name.
Issue: Postfix LMTP does not pass messages onto MM3:LMTP. Instead the behavior summary is as follows:
postfix/lmtp[...]: ###: to=<mailman3:[127.0.0.1]:8024@Host.TLD>, orig_to=<ListName-confirm+###(a)ListServer.TLD>, relay=Host.TLD[private/dovecot-lmtp], delay=439, delays=439/0.03/0.01/0.01, dsn=5.1.1, status=bounced (host Host.TLD[private/dovecot-lmtp] said: 550 5.1.1 <"mailman3:[127.0.0.1]:8024"@Host.TLD> User doesn't exist: mailman3:[127.0.0.1]:8024@Host.TLD (in reply to RCPT TO command))
The problem appears to be that Postfix defaults the relay to being private/dovecot-lmtp and not the general lmtp protocol or the mailman3 dedicated lmtp protocol.
----------------------------------------
----------------------------------------
Details:
# cat /proc/version
Linux version 4.19.0-5-amd64 (debian-kernel(a)lists.debian.org) (gcc version 8.3.0 (Debian 8.3.0-6)) #1 SMP Debian 4.19.37-5+deb10u1 (2019-07-19)
----------------------------------------
# postconf -n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
broken_sasl_auth_clients = yes
compatibility_level = 2
debug_peer_level = 4
html_directory = /usr/share/doc/postfix/html
inet_interfaces = all
inet_protocols = ipv4
local_recipient_maps = $virtual_mailbox_maps,regexp:/var/lib/mailman3/data/postfix_lmtp
local_transport = virtual
mailbox_size_limit = 0
mydestination = localhost
myhostname = rijr.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
owner_request_special = no
policy-spf_time_limit = 3600s
readme_directory = /usr/share/doc/postfix
recipient_delimiter = +
relay_domains = $mydestination,regexp:/var/lib/mailman3/data/postfix_domains
relayhost =
smtp_tls_loglevel = 1
smtp_tls_security_level = may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $mydomain
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_tls_security_options = $smtpd_sasl_security_options
smtpd_sasl_type = dovecot
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/ssl/private/vmail.crt
smtpd_tls_key_file = /etc/ssl/private/vmail.key
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
transport_maps = hash:/etc/postfix/transport,regexp:/var/lib/mailman3/data/postfix_lmtp
virtual_alias_domains = proxy:mysql:/etc/postfix/virtual_alias_domains.cf
virtual_alias_maps = proxy:mysql:/etc/postfix/virtual_alias_maps.cf,proxy:mysql:/etc/postfix/virtual_alias_domains_maps.cf,regexp:/var/lib/mailman3/data/postfix_lmtp
virtual_gid_maps = static:5000
virtual_mailbox_base = /home/vmail
virtual_mailbox_domains = proxy:mysql:/etc/postfix/virtual_mailbox_domains.cf
virtual_mailbox_limit = 512000000
virtual_mailbox_maps = regexp:/var/lib/mailman3/data/postfix_lmtp,proxy:mysql:/etc/postfix/virtual_mailbox_maps.cf
virtual_minimum_uid = 5000
virtual_transport = lmtp:unix:private/dovecot-lmtp
virtual_uid_maps = static:5000
# cat master.cf [grep'd for lmtp and mailman3]
lmtp unix - - y - - lmtp
mailman3 unix - - - - - lmtp
-o lmtp_send_xforward_command=yes
-o disable_dns_lookups=yes
----------------------------------------
# cat mailman.cfg [mta section only]
[mta]
incoming: mailman.mta.postfix.LMTP
outgoing: mailman.mta.deliver.deliver
smtp_host: localhost
smtp_port: 25
lmtp_host: 127.0.0.1
lmtp_port: 8024
configuration: /etc/mailman3/postfix-mailman.cfg
----------------------------------------
# cat /var/lib/mailman3/data/postfix_lmtp
# AUTOMATICALLY GENERATED BY MAILMAN ON 2019-08-06 06:39:21
#
# This file is generated by Mailman, and is kept in sync with the binary hash
# file. YOU SHOULD NOT MANUALLY EDIT THIS FILE unless you know what you're
# doing, and can keep the two files properly in sync. If you screw it up,
# you're on your own.
# Aliases which are visible only in the @List.TLD domain.
/^List(a)List\.TLD$/ mailman3:[127.0.0.1]:8024
/^List-bounces(\+.*)?(a)List\.TLD$/ mailman3:[127.0.0.1]:8024
/^List-confirm(\+.*)?(a)List\.TLD$/ mailman3:[127.0.0.1]:8024
/^List-join(a)List\.TLD$/ mailman3:[127.0.0.1]:8024
/^List-leave(a)List\.TLD$/ mailman3:[127.0.0.1]:8024
/^List-owner(a)List\.TLD$/ mailman3:[127.0.0.1]:8024
/^List-request(a)List\.TLD$/ mailman3:[127.0.0.1]:8024
/^List-subscribe(a)List\.TLD$/ mailman3:[127.0.0.1]:8024
/^List-unsubscribe(a)List\.TLD$/ mailman3:[127.0.0.1]:8024
----------------------------------------
# cat postfix-mailman.cfg
[postfix]
# if I don't have postmap_command set, mailman errors out, even though transport_file_type is regex.
postmap_command: /usr/sbin/postmap
transport_file_type: regex
----------------------------------------
# cat mail.debug
Aug 6 01:03:28 Host dovecot: lmtp(23055): Connect from local
Aug 6 01:03:28 Host dovecot: auth: Debug: master in: USER#0112#011mailman3:[127.0.0.1]:8024@Host.TLD#011service=lmtp
Aug 6 01:03:28 Host dovecot: auth: userdb(?): Username character disallowed by auth_username_chars: 0x3a (username: mailman3:[127.0.0.1]:8024@Host.TLD)
Aug 6 01:03:28 Host dovecot: auth: Debug: userdb out: NOTFOUND#0112
Aug 6 01:03:28 Host postfix/cleanup[22970]: 2937FB0: message-id=<20190806080328.2937FB0(a)rijr.com>
Aug 6 01:03:28 Host postfix/lmtp[23054]: CA030AA: to=<mailman3:[127.0.0.1]:8024@rijr.com>, orig_to=<gilman-clan-confirm+51c0564a95aa31a8840305bec77e9023baa46477(a)List.TLD>, relay=Host.TLD[private/dovecot-lmtp], delay=439, delays=439/0.03/0.01/0.01, dsn=5.1.1, status=bounced (host Host.TLD[private/dovecot-lmtp] said: 550 5.1.1 <"mailman3:[127.0.0.1]:8024"@Host.TLD> User doesn't exist: mailman3:[127.0.0.1]:8024@Host.TLD (in reply to RCPT TO command))
Aug 6 01:03:28 Host dovecot: lmtp(23050): Disconnect from local: Client has quit the connection (state=READY)
Aug 6 01:03:28 Host postfix/lmtp[22981]: C0EEEA8: to=<mailman3:[127.0.0.1]:8024@Host.TLD>, orig_to=<ListName-confirm+51c0564a95aa31a8840305bec77e9023baa46477(a)List.TLD>, relay=Host.TLD[private/dovecot-lmtp], delay=566, delays=566/0.04/0.01/0.01, dsn=5.1.1, status=bounced (host Host.com[private/dovecot-lmtp] said: 550 5.1.1 <"mailman3:[127.0.0.1]:8024"@Host.TLD> User doesn't exist: mailman3:[127.0.0.1]:8024@Host.TLD (in reply to RCPT TO command))
----------------------------------------
I have played with dozens of variations on the configuration files and tracing what is going on. The only reason I see that relay=Host.TLD[private/dovecot-lmtp] is because of:
virtual_transport = lmtp:unix:private/dovecot-lmtp
Hopefully I can get this figured out ....
- Jay
5 years, 8 months

[MM3-users] Re: psycopg2 error?
by Odhiambo Washington
On Fri, Oct 27, 2023 at 4:38 AM Mark Sapiro <mark(a)msapiro.net> wrote:
> On 10/26/23 01:03, Odhiambo Washington wrote:
> >
> > <CUT>
> > 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.
> > </CUT>
>
> Is your database PostgreSQL or some other? If it's not PostgreSQL, see
> the thread at
>
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/thread/…
> - particularly
>
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
>
> Also see
>
> https://docs.mailman3.org/en/latest/install/virtualenv.html#installing-mail…
> where it now says in part "This will install latest release of Mailman
> Core, and Python bindings for Postgresql database. If you are using a
> different database manager, do not install psycopg2-binary."
>
So my database is PostgreSQL-15:
```
postgres@debian12:~$ psql
psql (15.3 (Debian 15.3-0+deb12u1))
Type "help" for help.
postgres=#
```
Below is the output of `mailman info` which for some reason I forgot to
attach in the initial post. Maybe it contains something useful?
```
(venv) mailman@debian12:~$ mailman info
Traceback (most recent call last):
File "/opt/mailman/venv/bin/mailman", line 33, in <module>
sys.exit(load_entry_point('mailman==3.3.9', 'console_scripts',
'mailman')())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
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
1077, in main
with self.make_context(prog_name, args, **extra) as ctx:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/mailman/venv/lib/python3.11/site-packages/click/core.py", line
943, in make_context
self.parse_args(ctx, args)
File "/opt/mailman/venv/lib/python3.11/site-packages/click/core.py", line
1644, in parse_args
rest = super().parse_args(ctx, args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/mailman/venv/lib/python3.11/site-packages/click/core.py", line
1408, in parse_args
value, args = param.handle_parse_result(ctx, opts, args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/mailman/venv/lib/python3.11/site-packages/click/core.py", line
2400, in handle_parse_result
value = self.process_value(ctx, value)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/mailman/venv/lib/python3.11/site-packages/click/core.py", line
2362, in process_value
value = self.callback(ctx, self, value)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File
"/opt/mailman/venv/lib/python3.11/site-packages/mailman/bin/mailman.py",
line 95, in initialize_config
initialize(value)
File
"/opt/mailman/venv/lib/python3.11/site-packages/mailman/core/initialize.py",
line 229, in initialize
initialize_2(propagate_logs=propagate_logs)
File
"/opt/mailman/venv/lib/python3.11/site-packages/mailman/core/initialize.py",
line 187, in initialize_2
config.db = getUtility(IDatabaseFactory, utility_name).create()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File
"/opt/mailman/venv/lib/python3.11/site-packages/mailman/database/factory.py",
line 57, in create
database.initialize()
File
"/opt/mailman/venv/lib/python3.11/site-packages/mailman/database/base.py",
line 117, in initialize
self.engine = create_engine(
^^^^^^^^^^^^^^
File "<string>", line 2, in create_engine
File
"/opt/mailman/venv/lib/python3.11/site-packages/sqlalchemy/util/deprecations.py",
line 281, in warned
return fn(*args, **kwargs) # type: ignore[no-any-return]
^^^^^^^^^^^^^^^^^^^
File
"/opt/mailman/venv/lib/python3.11/site-packages/sqlalchemy/engine/create.py",
line 601, in create_engine
dbapi = dbapi_meth(**dbapi_args)
^^^^^^^^^^^^^^^^^^^^^^^^
File
"/opt/mailman/venv/lib/python3.11/site-packages/sqlalchemy/dialects/postgresql/psycopg2.py",
line 690, in import_dbapi
import psycopg2
File
"/opt/mailman/venv/lib/python3.11/site-packages/psycopg2/__init__.py", line
51, in <module>
from psycopg2._psycopg import ( # noqa
SystemError: initialization of _psycopg raised unreported exception
```
--
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]
1 year, 5 months

[MM3-users] Re: [Mailman-Developers] Docker files for mailman
by Danil Smirnov
Okay I've found that image can be built if you base on Ubuntu Trusty distro
(line 6 of the Dockerfile: "FROM ubuntu:trusty") and add ruby-sass to the
set of packages to install (line 13: "apt-get install -y git python3-dev
python3-pip python-dev python-pip python-virtualenv ruby-sass").
I'm not sure whether I need to change it in the Wiki...
On 18 November 2016 at 16:08, Danil Smirnov <danil(a)smirnov.la> wrote:
> Hi Simon!
>
> I've just tried to build docker image from the Dockerfile mentioned on page
> https://wiki.list.org/DEV/Mailman%203.0/Mailman%203.0%20Suite%20Dockerfile
>
> The building has stopped with the following error
>
> Installing mailman.
>> The executable python3.4 (from --python=python3.4) does not exist
>> /tmp/tmpez1ftK/run: 2: /tmp/tmpez1ftK/run: /mailman3/mailman-bundler/venv-3.4/bin/pip:
>> not found
>> While:
>> Installing mailman.
>>
>> An internal error occurred due to a bug in either zc.buildout or in a
>> recipe being used:
>> Traceback (most recent call last):
>> File "/usr/local/lib/python2.7/dist-packages/zc/buildout/buildout.py",
>> line 1995, in main
>> getattr(buildout, command)(args)
>> File "/usr/local/lib/python2.7/dist-packages/zc/buildout/buildout.py",
>> line 666, in install
>> installed_files = self[part]._call(recipe.install)
>> File "/usr/local/lib/python2.7/dist-packages/zc/buildout/buildout.py",
>> line 1410, in _call
>> return f()
>> File "/mailman3/mailman-bundler/eggs/collective.recipe.cmd-0.
>> 11-py2.7.egg/collective/recipe/cmd/__init__.py", line 56, in install
>> self.execute()
>> File "/mailman3/mailman-bundler/eggs/collective.recipe.cmd-0.
>> 11-py2.7.egg/collective/recipe/cmd/__init__.py", line 69, in execute
>> run_commands(cmds, self.shell)
>> File "/mailman3/mailman-bundler/eggs/collective.recipe.cmd-0.
>> 11-py2.7.egg/collective/recipe/cmd/__init__.py", line 39, in run_commands
>> check_call('%s %s' % (shell, tmpfile), shell=True)
>> File "/usr/lib/python2.7/subprocess.py", line 541, in check_call
>> raise CalledProcessError(retcode, cmd)
>> CalledProcessError: Command 'sh /tmp/tmpez1ftK/run' returned non-zero
>> exit status 127
>> The command '/bin/sh -c buildout' returned a non-zero code: 1
>>
>
> Do you have any clue what happens?
>
> Danil
>
>
> On 17 July 2016 at 20:06, Simon Hanna <simon.hanna(a)serve-me.info> wrote:
>
>> Hi,
>>
>> I started working on docker files for Mailman.
>>
>> I created three repositories:
>> - https://github.com/simonsmiley/postorius-docker
>> Holds the files needed to create a postorius container
>> - https://github.com/simonsmiley/mailman-docker
>> Holds the files needed to create a core container
>> - https://github.com/simonsmiley/mailman-compose
>> Holds docker-compose files that greatly simply the process of running
>> the containers
>>
>> * The mailman repo currently lacks documentation
>> * Currently no emails can be sent.
>> I still have to figure out what the best way is...
>> * Hyperkitty will be added next
>> (together with a complete "bundler" install)
>>
>>
>> I pushed two images to the docker hub. Their names are
>> thelinuxguy/postorius and thelinuxguy/mailman
>>
>> I created two organizations
>> mailman on docker hub and gnu-mailman on github
>> https://github.com/gnu-mailman
>> https://hub.docker.com/u/mailman/
>>
>> I know we shouldn't use github, but there is no way around
>> github/bitbucket for automated builds on docker hub.
>>
>> I post here to inform you about the docker images and I also to ask if
>> I'm allowed to keep these two organizations and move my images/repos
>> there. I'll happily give push/owner access to additional people if
>> requested.
>>
>> The repositories could be mirrored to the gitlab mailman group,
>> sadly the process doesn't work the other way round just yet.
>>
>> In case this request gets denied, I'll just remove the organizations and
>> let the images be "unofficial".
>>
>> cheers,
>> Simon
>> _______________________________________________
>> Mailman-Developers mailing list
>> Mailman-Developers(a)python.org
>> https://mail.python.org/mailman/listinfo/mailman-developers
>> Mailman FAQ: http://wiki.list.org/x/AgA3
>> Searchable Archives: http://www.mail-archive.com/ma
>> ilman-developers%40python.org/
>> Unsubscribe: https://mail.python.org/mailman/options/mailman-developers/
>> danil%40smirnov.la
>>
>> Security Policy: http://wiki.list.org/x/QIA9
>>
>
>
8 years, 5 months

[MM3-users] Re: Importing config and archives only partially succeeded?
by Eric Broens
Hi Mark,
1.Regarding the repeated access of /archives/api/mailman/urls seems to be related to mailman not being able to open port 25.
This is weird because other mails have been distributed.
The mailman log shows:Dec 12 22:16:48 2020 (1471) ACCEPT: < message id >
Dec 12 22:16:52 2020 (1474) Cannot connect to SMTP server localhost on port 25
webserver logs:<host > - - [12/Dec/2020:22:16:50 +0100] "GET /archives/api/mailman/urls ?mlist=...&key=*** HTTP/1.1" 200 64 "-" "python-requests/2.25.0"
<host > - - [12/Dec/2020:22:16:52 +0100] "GET /archives/api/mailman/urls?mlist=...&msgid=< message id >&key=*** HTTP/1.1" 200 105 "-" "python-requests/2.25.0"
This last entry is repeated forever (until I stop the mailserver for a few minutes, but later on this happens again for other mails too).
2..Regarding the mails on the archive page, for most of the lists it is solved now. So probably one of the periodic jobs fixed that.The mailinglist which showed 0 participants 0 subscribers, does show now 0 participants 66 discussions.I have checked the member tables, and the members for this mailinglist are included there.
3.What I notice now too is that the hourly runjobs tasks don't seem to finish.I would have to check what they exactly do. Can I somehow activate logging for these?
mailman 300042 300016 1 08:00 ? 00:09:18 /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/django-admin runjobs hourly --pythonpath /opt/mailman/mailman-suite/mailman-suite_project --settings settingsmailman 302158 302149 2 09:00 ? 00:09:10 /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/django-admin runjobs hourly --pythonpath /opt/mailman/mailman-suite/mailman-suite_project --settings settingsmailman 304513 304506 2 10:00 ? 00:09:38 /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/django-admin runjobs hourly --pythonpath /opt/mailman/mailman-suite/mailman-suite_project --settings settingsmailman 308631 308620 3 11:00 ? 00:09:29 /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/django-admin runjobs hourly --pythonpath /opt/mailman/mailman-suite/mailman-suite_project --settings settingsmailman 312847 312832 3 12:00 ? 00:09:15 /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/django-admin runjobs hourly --pythonpath /opt/mailman/mailman-suite/mailman-suite_project --settings settingsmailman 317343 317332 4 13:00 ? 00:09:20 /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/django-admin runjobs hourly --pythonpath /opt/mailman/mailman-suite/mailman-suite_project --settings settingsmailman 320079 320072 7 14:00 ? 00:09:08 /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/django-admin runjobs hourly --pythonpath /opt/mailman/mailman-suite/mailman-suite_project --settings settingsmailman 322618 322610 13 15:00 ? 00:08:54 /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/django-admin runjobs hourly --pythonpath /opt/mailman/mailman-suite/mailman-suite_project --settings settingsmailman 325205 325198 84 16:00 ? 00:06:56 /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/django-admin runjobs hourly --pythonpath /opt/mailman/mailman-suite/mailman-suite_project --settings settings
Best Regards,Eric On Sunday, December 13, 2020, 06:29:19 AM GMT+1, Mark Sapiro <mark(a)msapiro.net> wrote:
On 12/12/20 7:40 PM, Eric Broens via Mailman-users wrote:
> There are no messages in var/archives/hyperkitty/spool/. At this time of the night (4:40 AM local time), there is no incoming mail.
I'm not sure what is causing the repeated access of
/archives/api/mailman/urls... This call comes from Mailman core in order
to request the URL at which a message will be archived. It is called
from mailman/src/mailman/handlers/rfc_2369.py when adding the
Archived-At: header and from mailman/src/mailman/handlers/decorate.py in
order to get the hyperkitty_url replacement value.
I don't understand why it would be called repeatedly for the same
message. Are there any clues in mailman.log.
> I just noticed when clicking on "All Threads" or "Threads by month", the emails are displayed. The statistic however shows that there were no mails in the past month, while there actually are.When clicking "Recent", "Most Active", etc. the page shows "No discussions this month (yet)."
What if you look at "threads by month" and select the current month?
> Another observation. For one list, which is one of the more active ones, the bar diagram is not empty, while showing 0 participants and 0 discussions (see attached screenshot).This one however shows the mailthreads when opening the list.
I think the basic issue is when you see no messages, HyperKitty, for
whatever reason thinks there are no current messages. I'm not sure, but
if there are recent posts, are they all in threads started more than 30
days ago?
As far as all the participants/discussions counts being zero, I think
one of the periodic jobs will fix that (possibly the daily
recent_threads_cache job)
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
_______________________________________________
Mailman-users mailing list -- mailman-users(a)mailman3.org
To unsubscribe send an email to mailman-users-leave(a)mailman3.org
https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
4 years, 4 months

[MM3-users] Re: ModuleNotFoundError: No module named 'settings'
by Michela
Hi. Thank you for your replies, everyone!
Perhaps I should first mention that I checked uwsgi.ini and it is set to /etc/mailman3/, which is where my configuration files actually are. I had a typo in my message to the list about that (but not on the server), where I accidentally omitted the "3" in the directory path. So everything was actually in order there. Good catch in any case! :)
The start of the uwsgi.ini file is as follows:
> *** Starting uWSGI 2.0.19.1 (64bit) on [Mon May 10 11:11:01 2021] ***
> compiled with version: 8.3.1 20191121 (Red Hat 8.3.1-5.0.2) on 10 May 2021 00:42:28
> os: Linux-5.4.17-2102.200.13.el8uek.x86_64 #2 SMP Sun Mar 28 14:48:36 PDT 2021
> nodename: hostname
> machine: x86_64
> clock source: unix
> detected number of CPU cores: 2
> current working directory: /
> detected binary path: /opt/mailman/venv/bin/uwsgi
> !!! no internal routing support, rebuild with pcre support !!!
> your processes number limit is 6642
> 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 10
> Python version: 3.6.8 (default, Mar 9 2021, 15:28:46) [GCC 8.3.1 20191121 (Red Hat 8.3.1-5.0.1)]
> PEP 405 virtualenv detected: /opt/mailman/venv/
> Set PythonHome to /opt/mailman/venv/
> Python main interpreter initialized at 0x10ccf30
> 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 250032 bytes (244 KB) for 4 cores
> *** Operational MODE: preforking+threaded ***
> added /etc/mailman3/ to pythonpath.
> Traceback (most recent call last):
> File "/opt/mailman/venv/lib64/python3.6/site-packages/mailman_web/wsgi.py", line 16, in <module>
> application = get_wsgi_application()
> File "/opt/mailman/venv/lib64/python3.6/site-packages/django/core/wsgi.py", line 12, in get_wsgi_application
> django.setup(set_prefix=False)
> File "/opt/mailman/venv/lib64/python3.6/site-packages/django/__init__.py", line 19, in setup
> configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
> File "/opt/mailman/venv/lib64/python3.6/site-packages/django/conf/__init__.py", line 76, in __getattr__
> self._setup(name)
> File "/opt/mailman/venv/lib64/python3.6/site-packages/django/conf/__init__.py", line 63, in _setup
> self._wrapped = Settings(settings_module)
> File "/opt/mailman/venv/lib64/python3.6/site-packages/django/conf/__init__.py", line 142, in __init__
> mod = importlib.import_module(self.SETTINGS_MODULE)
> File "/usr/lib64/python3.6/importlib/__init__.py", line 126, in import_module
> return _bootstrap._gcd_import(name[level:], package, level)
> ModuleNotFoundError: No module named 'settings'
> unable to load app 0 (mountpoint='') (callable not found or import error)
> *** no app loaded. going in full dynamic mode ***
> *** uWSGI is running in multiple interpreter mode ***
> spawned uWSGI master process (pid: 38878)
> spawned uWSGI worker 1 (pid: 38882, cores: 2)
> spawned uWSGI worker 2 (pid: 38883, cores: 2)
> [uwsgi-daemons] spawning "/opt/mailman/venv/bin/mailman-web qcluster" (uid: 1002 gid: 1002)
> Traceback (most recent call last):
> File "/opt/mailman/venv/lib64/python3.6/site-packages/django/core/management/__init__.py", line 224, in fetch_command
> app_name = commands[subcommand]
> KeyError: 'qcluster'
Running qcluster interactively does appear to work properly:
> (venv) [mailman@hostname ~]$ /opt/mailman/venv/bin/mailman-web qcluster
> /opt/mailman/venv/lib64/python3.6/site-packages/django_q/conf.py:138: 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.
> See https://django-q.readthedocs.io/en/latest/configure.html#retry for details.""")
> 20:16:21 [Q] INFO Q Cluster berlin-angel-south-california starting.
> 20:16:21 [Q] INFO Process-1:1 ready for work at 57948
> 20:16:21 [Q] INFO Process-1:2 ready for work at 57949
> 20:16:21 [Q] INFO Process-1:3 monitoring at 57950
> 20:16:21 [Q] INFO Process-1 guarding cluster berlin-angel-south-california
> 20:16:21 [Q] INFO Q Cluster berlin-angel-south-california running.
> 20:16:21 [Q] INFO Process-1:4 pushing tasks at 57951
My uwsgi.ini file:
> # /etc/mailman3/uwsgi.ini
> #
> [uwsgi]
> # Port on which uwsgi will be listening.
> uwsgi-socket = 0.0.0.0:8000
> # If running uwsgi from the virtual environment ...
> virtualenv = /opt/mailman/venv/
>
> module=mailman_web.wsgi:application
> # Add to python import path.
> pythonpath = /etc/mailman3/
> # The default settings module.
> env = DJANGO_SETTINGS_MODULE=settings
>
> # Setup default number of processes and threads per process.
> master = true
> processes = 2
> threads = 2
>
> # Setup the django_q related worker processes.
> attach-daemon = /opt/mailman/venv/bin/mailman-web qcluster
>
> # Setup the request log.
> req-logger = file:/opt/mailman/web/logs/uwsgi.log
>
> # Log qcluster commands separately.
> logger = qcluster file:/opt/mailman/web/logs/uwsgi-qcluster.log
> log-route = qcluster uwsgi-daemons
>
> # Last log and it logs the rest of the stuff.
> logger = file:/opt/mailman/web/logs/uwsgi-error.log
Files in /etc/mailman3/
> (venv) [mailman@hostname ~]$ ls /etc/mailman3/
> mailman.cfg __pycache__/ settings.py uwsgi.ini
Regarding Steve's comment on WSGI vs. Gunicorn, we used WSGI as the application server for Mailman 3 because that's what the Mailman 3 venv instructions say to use -- I did my best to follow them exactly (the only difference is in the way I installed PostgreSQL -- I used the official EL PostgreSQL repository for that). So, hopefully, the developers consider it okay for us to use UWSGI (at least for now). :D
Thank you for your help!!
Michela
‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Monday, May 10, 2021 10:08 PM, Abhilash Raj <maxking(a)asynchronous.in> wrote:
>
>
> > On May 10, 2021, at 8:11 PM, Stephen J. Turnbull turnbull.stephen.fw(a)u.tsukuba.ac.jp wrote:
> > Michela via Mailman-users writes:
> >
> > > The log file, /opt/mailman/web/logs/uwsgi-error.log, contains the
> > > following stack trace, however. Note the bit toward the bottom:
> > > "ModuleNotFoundError: No module named 'settings'"
> >
> > Given that you can run the applications from the command line as
> > systemd services, this almost certainly localizes the problem to uwsgi
> > itself. Note that uwsgi has been problematic lately. I don't recall
> > the details. I think there's a preference for gunicorn as the SGI
> > provider among the Mailman 3 developers (and it's what core uses
> > internally to provide the REST interface) so uwsgi may not get "beta"
> > testing in production from us.
> > Specifically, is this line
> > pythonpath = /etc/mailman3/
> > present, correct, and not commented out in uswgi.ini?
> >
> > > My configuration files outside of the Mailman virtual environment
> > > are in /etc/mailman/:
> >
> > Is it possible you have /etc/mailman/ instead of /etc/mailman3/ in
> > uwsgi.ini as in the above quote? (I am pretty sure that's a typo in
> > the post, but gotta check everything.) On the other hand, maybe we
> > did a typo, and there should be no trailing slash on /etc/mailman3 in
> > this statement. (Usually trailing slashes aren't a problem,
> > applications mostly ignore them, but there is no trailing slash on any
> > directory in my sys.path, so it's worth a try.)
>
> Yeah, it would be good to share the full contents of /etc/mailman3/uwsgi.ini,
> for some reason what is listed in the docs[1] is working on one of my test
> servers. Although, given that there are more than one reports of the same
> error, it is possible something is wrong or missing in the docs.
>
> The trailing slashes in this case isn’t really a problem I think.
>
> If you can share some initial parts of your uwsgi-error.log part where uwsgi
> initializes that would be useful too. I am looking something that looks like
> this:
>
> *** Starting uWSGI 2.0.19.1 (64bit) on [Thu Jan 21 08:49:16 2021] ***
> compiled with version: 9.3.0 on 21 January 2021 08:40:15
> os: Linux-5.4.0-1036-azure #38-Ubuntu SMP Wed Jan 6 18:26:25 UTC 2021
> nodename: mailman
> machine: x86_64
> clock source: unix
> detected number of CPU cores: 2
> current working directory: /opt/mailman3
> detected binary path: /opt/mailman3/venv/bin/uwsgi
> !!! no internal routing support, rebuild with pcre support !!!
> your processes number limit is 15571
> 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 127.0.0.1:8000 fd 8
> Python version: 3.8.5 (default, Jul 28 2020, 12:59:40) [GCC 9.3.0]
> PEP 405 virtualenv detected: /opt/mailman3/venv/
> Set PythonHome to /opt/mailman3/venv/
> Python main interpreter initialized at 0x56002ba3aed0
> 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 166688 bytes (162 KB) for 2 cores
> *** Operational MODE: threaded ***
> added /etc/mailman3/ to pythonpath.
> WSGI app 0 (mountpoint='') ready in 1 seconds on interpreter 0x56002ba3aed0 pid: 715893 (default app)
> *** uWSGI is running in multiple interpreter mode ***
> spawned uWSGI master process (pid: 715893)
> spawned uWSGI worker 1 (pid: 715897, cores: 2)
> [uwsgi-daemons] spawning "mailman-web qcluster" (uid: 1001 gid: 1001)
> 08:49:18 [Q] INFO Q Cluster december-nebraska-helium-montana starting.
> 08:49:18 [Q] INFO Process-1:1 ready for work at 715904
> 08:49:18 [Q] INFO Process-1:2 ready for work at 715905
>
>
> Please ignore that the paths in my logs are`/opt/mailman3/*`, I have
> multiple installations on my test server, the docs say it should be `/opt/mailman/*`. It
> doesn’t really matter as long as they are consistent in all places.
>
> Also, what happens if you run the command "/opt/mailman/venv/bin/mailman-web qcluster” as
> a “mailman” user on your machine? Do you see the traceback like above or does it start a
> process like this?
>
> mailman@mailman:~$ /opt/mailman3/venv/bin/mailman-web qcluster
> 05:05:29 [Q] INFO Q Cluster april-east-hot-potato starting.
> 05:05:29 [Q] INFO Process-1:1 ready for work at 3364005
> 05:05:29 [Q] INFO Process-1:2 ready for work at 3364006
> 05:05:29 [Q] INFO Process-1 guarding cluster april-east-hot-potato
> 05:05:29 [Q] INFO Process-1:3 monitoring at 3364007
> 05:05:29 [Q] INFO Q Cluster april-east-hot-potato running.
> 05:05:29 [Q] INFO Process-1:4 pushing tasks at 3364008
>
>
> [1]:https://docs.mailman3.org/en/latest/install/virtualenv.html#setting-up-a…
>
> > If it's none of the above, I'm out of ideas. Maybe Mark or Abhilash
> > has more experience.
> > Steve
> >
> > Mailman-users mailing list -- mailman-users(a)mailman3.org
> > To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> > https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>
> --
>
> thanks,
> Abhilash Raj (maxking)
3 years, 11 months

[MM3-users] Problems with web interface after upgrade
by Victoriano Giralt
Hi, I just applied all the recipes that have been recently posted for
upgrading (pip install --upgrade of all pieces, migrate, collectstatic)
The compress part refuses to work "OFF_LINE", whatever that is. I tried
with mailman running and stopped.
I can access hte main Postorius page and the basic list information,
but I cannot login nor access the archives. Operations end on two
exceptions logged to the log file (and two mail messages to the owner =
me). Very similar to what I get if I try to --force the "compress".
I'm sure I'm missing somethning, but do not know what ...
Thanks!
Traceback:
ERROR 2021-02-09 19:57:41,414 726 django.request Internal Server Error:
/listas/accounts/login/
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/compressor/base.py",
line 263, in precompile
mod = import_module(mod_name)
File "/usr/lib64/python3.6/importlib/__init__.py", line 126, in
import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 953, in
_find_and_load_unlocked
ModuleNotFoundError: No module named 'sassc -t compressed {infile}
{outfile}'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-
packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request)
File "/usr/local/lib/python3.6/site-
packages/django/core/handlers/base.py", line 145, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/usr/local/lib/python3.6/site-
packages/django/core/handlers/base.py", line 143, in _get_response
response = response.render()
File "/usr/local/lib/python3.6/site-
packages/django/template/response.py", line 106, in render
self.content = self.rendered_content
File "/usr/local/lib/python3.6/site-
packages/django/template/response.py", line 83, in rendered_content
content = template.render(context, self._request)
File "/usr/local/lib/python3.6/site-
packages/django/template/backends/django.py", line 61, in render
return self.template.render(context)
File "/usr/local/lib/python3.6/site-
packages/django/template/base.py", line 171, in render
return self._render(context)
File "/usr/local/lib/python3.6/site-
packages/django/template/base.py", line 163, in _render
return self.nodelist.render(context)
File "/usr/local/lib/python3.6/site-
packages/django/template/base.py", line 937, in render
bit = node.render_annotated(context)
File "/usr/local/lib/python3.6/site-
packages/django/template/base.py", line 904, in render_annotated
return self.render(context)
File "/usr/local/lib/python3.6/site-
packages/django/template/loader_tags.py", line 150, in render
return compiled_parent._render(context)
File "/usr/local/lib/python3.6/site-
packages/django/template/base.py", line 163, in _render
return self.nodelist.render(context)
File "/usr/local/lib/python3.6/site-
packages/django/template/base.py", line 937, in render
bit = node.render_annotated(context)
File "/usr/local/lib/python3.6/site-
packages/django/template/base.py", line 904, in render_annotated
return self.render(context)
File "/usr/local/lib/python3.6/site-
packages/django/template/loader_tags.py", line 150, in render
return compiled_parent._render(context)
File "/usr/local/lib/python3.6/site-
packages/django/template/base.py", line 163, in _render
return self.nodelist.render(context)
File "/usr/local/lib/python3.6/site-
packages/django/template/base.py", line 937, in render
bit = node.render_annotated(context)
File "/usr/local/lib/python3.6/site-
packages/django/template/base.py", line 904, in render_annotated
return self.render(context)
File "/usr/local/lib/python3.6/site-
packages/compressor/templatetags/compress.py", line 131, in render
return self.render_compressed(context, self.kind, self.mode,
forced=forced)
File "/usr/local/lib/python3.6/site-
packages/compressor/templatetags/compress.py", line 107, in
render_compressed
rendered_output = compressor.output(mode, forced=forced)
File "/usr/local/lib/python3.6/site-packages/compressor/css.py", line
49, in output
ret.append(subnode.output(*args, **kwargs))
File "/usr/local/lib/python3.6/site-packages/compressor/css.py", line
51, in output
return super(CssCompressor, self).output(*args, **kwargs)
File "/usr/local/lib/python3.6/site-packages/compressor/base.py",
line 295, in output
output = '\n'.join(self.filter_input(forced))
File "/usr/local/lib/python3.6/site-packages/compressor/base.py",
line 235, in filter_input
for hunk in self.hunks(forced):
File "/usr/local/lib/python3.6/site-packages/compressor/base.py",
line 205, in hunks
precompiled, value = self.precompile(value, **options)
File "/usr/local/lib/python3.6/site-packages/compressor/base.py",
line 268, in precompile
return True, filter.input(**kwargs)
File "/usr/local/lib/python3.6/site-
packages/compressor/filters/base.py", line 229, in input
return super(CachedCompilerFilter, self).input(**kwargs)
File "/usr/local/lib/python3.6/site-
packages/compressor/filters/base.py", line 196, in input
raise FilterError(err)
compressor.exceptions.FilterError: Error: It's not clear which file to
import for '@import "../libs/bootstrap/stylesheets/bootstrap"'.
Candidates:
../libs/bootstrap/stylesheets/_bootstrap.scss
../libs/bootstrap/stylesheets/bootstrap.scss
Please delete or rename all but one of these files.
on line 4 of static/hyperkitty/sass/hyperkitty.scss
>> @import "../libs/bootstrap/stylesheets/bootstrap";
^
--
Victoriano Giralt Innovation Director
Digital Transformation Vicerectorate University of Malaga
+34952131415 SPAIN
==================================================================
Note: signature.asc is the electronic signature of present message
A: Yes.
> Q: Are you sure ?
>> A: Because it reverses the logical flow of conversation.
>>> Q: Why is top posting annoying in email ?
4 years, 2 months

[MM3-users] Re: admin/login/ cannot be accessed
by jean-christophe manciot
- Django version is 2.2.6-1ubuntu1
- Disabling HTTP2 in nginx means disabling it for all server blocks
listening on the same IP, which would degrade all other servers.
- Doing so leads to another error:
This page isn’t working
<mysite> didn’t send any data.
ERR_EMPTY_RESPONSE
- I cannot run nginx and apache on the same <ip_address>:443 port either.
I found no error in mailman3 or syslog logs.
In ```/etc/mailman3/mailman.cfg```, I have:
```
[logging.debian]
format: %(asctime)s (%(process)d) %(message)s
datefmt: %b %d %H:%M:%S %Y
propagate: no
level: debug
path: mailman.log
```
Yet, mailman.log does not seem to show debug level information.
On Wed, Dec 11, 2019 at 7:04 PM Abhilash Raj <maxking(a)asynchronous.in>
wrote:
>
>
> On Wed, Dec 11, 2019, at 9:25 AM, jean-christophe manciot wrote:
> > Ubuntu 20.04
> > python3-django 2:2.2.6-1ubuntu1
> > python3-django-hyperkitty 1.3.1 (built from sources)
> > mailman3-full 3.2.2-1
>
> Which version of Django are you using?
>
> >
> > Nginx server configuration:
> > ```
> > ...
> > ########
> > # Static
> > ########
> > location /favicon.ico
> > {
> > alias <mysite_dir>/static/hyperkitty/img/favicon.ico;
> > }
> > location /static/favicon.ico
> > {
> > alias <mysite_dir>/static/postorius/img/favicon.ico;
> > }
> > location /static/
> > {
> > alias <mysite_dir>/static/;
> > }
> >
> > #######################
> > # Upstream uwsgi server
> > #######################
> > location /
> > {
> > include /etc/nginx/uwsgi_params;
> > uwsgi_pass 127.0.0.1:<uwsgi_server_port>;
> > }
> > ...
> > ```
> > where:
> > - <mysite_dir> is a symlink to <django_dir>/static
> > - <uwsgi_server_port> matches the one defined in
> ```/etc/mailman3/uwsgi.ini```:
> > ```
> > [uwsgi]
> > # Port on which uwsgi will be listening.
> > uwsgi-socket = 127.0.0.1:<uwsgi_server_port>
> > ```
> >
>
> The config looks good to me in a quick glance.
>
>
> > All 3 systemd services run fine:
> > - mailman3
> > - mailman3-web
> > - qcluster
> >
> > I'm trying to login to the django administration pages.
> > I get the django administration login page at:
> > https://mysite/admin/login/
> > Logging in with the admin credentials leads to:
> > ```
> > This site can’t be reached
> > The webpage at https://mysite/admin/login/ might be temporarily down or
> > it may have moved permanently to a new web address.
> > ERR_HTTP2_PROTOCOL_ERROR
> > ```
> > This is very strange because it is the URL which I used to get the
> > login page in the first place.
>
>
> Looking at the error, it seems like something somewhere is re-directing to
> HTTP/2 or the request is based off of HTTP/2 and all the components in the
> stack don't support HTTP/2, leading to the error message.
>
> I haven't played a lot with HTTP/2 yet so I am not sure which specific
> component in the stack could be incompatible here.
>
> >
> > If I launch a test web server at another port with:
> > ```
> > <django_dir># python3 manage.py runserver <mysite_ip_address>:8080
> > Performing system checks...
> >
> > System check identified no issues (0 silenced).
> > December 11, 2019 - 17:50:48
> > Django version 2.2.6, using settings 'settings'
> > Starting development server at http://<mysite_ip_address>:8080/
> > Quit the server with CONTROL-C.
> > ```
> > and access it at ```http://<mysite_ip_address>:8080/admin/login/``` to
> > login with the same credentials as before, I get through and all the
> > django administration lines appear, although in a degraded layout:
> > ```
> > Site administration
> > Accounts
> > Email addresses Add Change
> > Authentication and Authorization
> > Groups Add Change
> > Users Add Change
> > Django Mailman 3
> > Mail domains Add Change
> > Profiles Add Change
> > ...
> > ```
> > Any idea what could be happening here?
>
>
> Degraded layout is due to missing static files since the development
> server that you spun off doesn't serve static files. So, that is okay.
> > _______________________________________________
> > Mailman-users mailing list -- mailman-users(a)mailman3.org
> > To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> > https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> >
>
> --
> thanks,
> Abhilash Raj (maxking)
>
--
Jean-Christophe
5 years, 4 months

[MM3-users] Re: Mailman3 not working following distribution upgrade from Debian 10 to 11.
by gordon@dickens.com
Hi Mark,
Thanks very much for your prompt and helpful reply!
I made the change to the mailman3 configuration for Apache that you recommended since I am using uwsgi. Now, I am able to start/status/stop the mailman3-web service without errors. However, now, when I then attempt to access the mailman installation on my server with my browser, I get the following message in the browser window:
Internal Server Error
I am unable to find any errors in the mailman3 logs or in the Apache error logs. However the Apache access logs have the following:
173.165.166.34 - - [04/Feb/2022:17:06:20 -0500] "GET /mailman3 HTTP/1.1" 500 21
Do you have any idea as to what is going on now? Any suggestions for troubleshooting this?
Here is my /etc/mailman3/settings.py file where I have obfuscated sensitive info:
# Mailman Web configuration file.
# /etc/mailman3/settings.py
from mailman_web.settings.base import *
from mailman_web.settings.mailman import *
#: Default list of admins who receive the emails from error logging.
ADMINS = (
('Mailman Suite Admin', 'root@localhost'),
)
# mysql database setup.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mailman3web',
'USER': 'mailman',
# TODO: Replace this with the password.
'PASSWORD': 'my_password',
'HOST': 'localhost',
'PORT': '',
# GLD - add utf8mb4 character set for emoticons to work.
'OPTIONS': {'charset': 'utf8mb4',},
}
}
# 'collectstatic' command will copy all the static files here.
# Alias this location from your webserver to `/static`
STATIC_ROOT = '/var/lib/mailman3/web/static'
# Make sure that this directory is created or Django will fail on start.
LOGGING['handlers']['file']['filename'] = '/var/log/mailman3/web/mailman-web.log'
#: See https://docs.djangoproject.com/en/dev/ref/settings/#allowed-hosts
ALLOWED_HOSTS = [
"localhost", # Archiving API from Mailman, keep it.
# "lists.your-domain.org",
# Add here all production domains you have.
]
#: Current Django Site being served. This is used to customize the web host
#: being used to serve the current website. For more details about Django
#: site, see: https://docs.djangoproject.com/en/dev/ref/contrib/sites/
SITE_ID = 1
# Set this to a new secret value.
SECRET_KEY = 'secret_key_value'
# Set this to match the api_key setting in
# /opt/mailman/mm/mailman-hyperkitty.cfg (quoted here, not there).
MAILMAN_ARCHIVER_KEY = 'archiver_key'
# The sender of emails from Django such as address confirmation requests.
# Set this to a valid email address.
DEFAULT_FROM_EMAIL = 'postmaster(a)tld.com'
# The sender of error messages from Django. Set this to a valid email
# address.
SERVER_EMAIL = 'postmaster(a)tld.com'
And here is my uwsgi.ini file:
[uwsgi]
# Port on which uwsgi will be listening.
uwsgi-socket = /run/mailman3-web/uwsgi.sock
# http-socket = 0.0.0.0:8000
# http = 0.0.0.0:8000
# If running uwsgi from the virtual environment ...
virtualenv = /opt/mailman/venv/
module=mailman_web.wsgi:application
# Set PYTHONPATH
env = PYTHONPATH=/etc/mailman3/
# The default settings module.
env = DJANGO_SETTINGS_MODULE=settings
#Enable threading for python
# GLD - remove the following line from debian uwsgi.ini
# enable-threads = true
# Move to the directory wher the django files are.
# GLD - remove the following line from debian uwsgi.ini
# chdir = /usr/share/mailman3-web
# Use the wsgi file provided with the django project.
# GLD - remove the following line from debian uwsgi.ini
#wsgi-file = wsgi.py
# Setup default number of processes and threads per process.
master = true
process = 2
threads = 2
# Drop privielges and don't run as root.
# GLD
uid = www-data
gid = www-data
# plugins = python3
# Setup the django_q related worker processes.
# attach-daemon = python3 manage.py qcluster
attach-daemon = /opt/mailman/venv/bin/mailman-web qcluster
# Setup hyperkitty's cron jobs.
#unique-cron = -1 -1 -1 -1 -1 ./manage.py runjobs minutely
#unique-cron = -15 -1 -1 -1 -1 ./manage.py runjobs quarter_hourly
#unique-cron = 0 -1 -1 -1 -1 ./manage.py runjobs hourly
#unique-cron = 0 0 -1 -1 -1 ./manage.py runjobs daily
#unique-cron = 0 0 1 -1 -1 ./manage.py runjobs monthly
#unique-cron = 0 0 -1 -1 0 ./manage.py runjobs weekly
#unique-cron = 0 0 1 1 -1 ./manage.py runjobs yearly
# Setup the request log.
req-logger = file:/var/log/mailman3/web/mailman-web.log
# Log cron seperately.
#logger = cron file:/var/log/mailman3/web/mailman-web-cron.log
#log-route = cron uwsgi-cron
# Log qcluster commands seperately.
# GLD - Add the following two lines from mailman3 venv instructions.
logger = qcluster file:/var/log/mailman3/web/mailman-web-qcluster.log
log-route = qcluster uwsgi-daemons
# Last log and it logs the rest of the stuff.
# GLD - Add the following line from mailman3 venv instructions.
logger = file:/var/log/mailman3/web/mailman-web-error.log
# GLD - remove the following line from debian uwsgi.ini
# logto = /var/log/mailman3/web/mailman-web.log
3 years, 2 months

[MM3-users] Re: migrate MM3 list from an old server to a new one
by IEM Network Operation Center (IOhannes m zmölnig)
On 8/7/24 12:27, Odhiambo Washington via Mailman-users wrote:
> On Wed, Aug 7, 2024 at 11:52 AM IEM Network Operation Center (IOhannes m
> zmölnig) <noc(a)iem.at> wrote:
>
>> is a feature-request warranted, or am i worrying too much?
>>
>
> A feature to automate your migrations? Have you consulted ChatGPT yet? :-)
>
should i ?-P
anyhow, i'm happy to say that my migrations have completed by now, and
my new instance is now running with mailinglists previously hosted on
either an MM2 instance or an older MM3 instance.
so far i have not discovered any problems (well, apart from xapian
eating all my (rather small, as this is only a VM) partition; but that
is of course not related to anything we discussed here).
what i did was in a nutshell:
- create a dump of the database of the old mm3 instance (e.g. 'pg_dump
-Fc mailman3web')
- drop any existing databases from the new mm3 instance
- import the dump into the new instance
- run db migrations
- import pck files from the old mm2 instance
- import archives from the old mm2 instance
thanks again, Odhiambo and Mark for your hints!
however, i can report that my fears about migrating between mm3
instances by means of DB dumps have (at least partially) become true.
0. i'm using mailman3 as packaged in Debian, and PostgreSQL as the
backend. before running the actual migrations, i've experimented a bit
on the new instance (creating and deleting test lists), to see if the
core configuration is working as expected. so i already had the
databases up and running, filled with a bit of data, before attempting
the migrations.
1. for whatever reasons, the db-names have changed between 3.2.1
("mailman3", "mailman3web") and 3.3.8 ("mailman3.db", "mailman3web.db").
i strongly suspect that this is a problem of the Debian packaging of
mailman3 (i'm pretty sure that i only ever accepted the defaults when
installing the mailman3 Debian packages).
2. since the db names changed, i tried to be clever (but i'm not a
knowledgeable postgreSQL admin) and tried to only import the data-part
of the dump ("pg_restore --data"), re-using the existing tables.
this of course miserably failed.
3. my next attempt to import the data into an existing DB, was to rename
the new db to the old name, import and rename back.
this also failed miserably, most notably because the import insisted on
assigning key IDs that were already in use. (that is: because i had
already created and tested test-lists, the new instance already
contained an email with hyperkitty_email.id=1; the dump from the old
instance also contained an email with hyperkitty_email.id=1; so the
import failed. this example is made up from memory, as i have not kept
all the error logs).
so this also failed.
4. i ended up, deleting the entire database, and import it from scratch.
after that, ran 'mailman-web migrate' to update the DB schema to the
current one.
this again failed with one hyperkitty-related migration that would
create new tables.
it turned out, that the new hosts uses postgreSQL-15.7.0 (the old one
uses postgresql-11), and afaik since psql15 only a database *owner* can
create new tables. after i made my mailman3-db-user the owner, all
migrations succeeded.
5. finally i imported my mm2 mailinglists and archives, which went
rather smoothly.
some of my problems obviously come from me not being a DB-manager by
profession (e.g. new constraints in psql15,...)
but others, like "3.", seem to hint at a core problem in the suggested
migration strategy: if the to-be-imported db contains unique-keys that
are already taken, the import simply fails (or at best, you get a
partial import). i do not see how such a migration can ever work if you
try to merge to mm3 instances where the dbs have a considerable amount
of entries in the same tables (as you will always get constraint conflicts).
to summarize, migrations must:
- *first* import old mm3 data into an *empty* database
(so you cannot import multiple mm3 instances into a single new one)
- import mm2 data afterwards
hence my idea for a special export/import format (and command), that
would only contain the actual structured data, but without all the extra
db-specific things (like unique ids for referencing between tables).
gfmasrd
IOhannes
___________________________________________
Die Inhaltsfilterung von Mailman hat die folgenden
MIME-Teile aus dieser Nachricht entfernt.
Content-Type: application/pgp-keys
Name: OpenPGP_0xB65019C47F7A36F8.asc
8 months, 2 weeks

[MM3-users] Re: Mailman, etc. upgrade woes and persistent bugs
by Abhilash Raj
On Fri, Feb 12, 2021, at 8:52 PM, Stephen J. Turnbull wrote:
> Abhilash Raj writes:
>
> > The is definitely a bug, caused due to the fact that "Delivery Status" field
> > only has two options, "Enabled" and "Disabled". Internally, this field can
> > have 4 values, "enabled", "by_user" (maps to "Disabled" in Postorius),
> > "by_admin" (means disabled by admin) and "by_bounces" (means
> > disabled due to bounces). So, when the value of the field is among
> > the last two options, it appears as "unset" with no options selected,
> > which unfortunately is also how it looks by default since all options
> > are "unset" from start.
> >
> > The "fix" for this issue would be simply adding a new choice to the
> > delivery_status field with a caveat that it is only a Readonly option to
>
> I don't see why most users would care (there will always be somebody
> who cares "just because", of course). For those who don't care, I
> expect it will be confusing. I think it's better just to treat all of
> the disabled settings as just "disabled" in the UI for members.
I don't have any strong opinions on treating all disabled options as just
disabled for the user. Would List admins be interested in knowing more
details about that or should it be the same for them? I feel they might
be interested in such details. Brian mentioned that Affinity actually
details explicit value of the delivery_status, so maybe it is useful
for them?
>
> > We could also go a step further and show it on the List's info page
> > when their delivery is disabled due to excessive bounce and allow
> > the them to re-enable it themselves without admin intervention.
>
> This is probably a good idea, but in a situation where we know the
> problem is excessive bouncing we should caution them that there is
> almost certainly a probably with delivery *to their specific address*
> and that Mailman and the admins *can do nothing about that*, so if
> that isn't fixed they'll just get disabled again. I suppose it would
> be good to add that frequently these are due to occasional problems
> like disk full that "management" at their site normally takes care of,
> so there's little if any harm to just reenabling.
Yeah, a link to an FAQ entry in documentation perhaps?
I am thinking that most addresses disabled due to bounces would
really either be spam subscriptions or abandoned/invalid email
addresses that once were working. There would be few with problems
with delivery which would want to re-enable as soon as they can, but
definitely letting them know that there is an issue with delivery is a
good idea.
>
> > to the list's info page, but I guess that is the first place you'd go to
> > debug when you get an email that your delivery was disabled?
>
> Surely we can help them go directly there?
I guess yes, but that brings up the whole discussion about how does
Core know about the URLs. Custom templates can help get there
easily, but that will not solve the problem, only put the onus on list/server
admins to set that on a per-installation basis.
Although, we can add "Goto your list subscriptions to re-enable" your
subscription. Maybe even a new email command that allows re-enabling
subscription without logging into P?
>
> > https://gitlab.com/mailman/postorius/-/issues/470
> >
> > I don't know if there are any downsides to letting users re-enable
> > their delivery on their own.
>
> I don't see any myself. Maybe if the list is planning a surprise
> party for them? ;-)
Oh just Ban them in that case ;-)
> There is a specific downside, which is that if you only allow them to
> reenable if they disabled it themselves, you have to show them the
> other cases.
I was initially thinking that maybe we can disable changing the delivery
status if it was disabled by an admin ("by_admin" value), but AFAIK, there
is really no way to even set that right now and no real use case for that
has come up, so I am going to punt on that idea until someone really
asks for it with a valid use case ;-)
--
thanks,
Abhilash Raj (maxking)
4 years, 2 months

[MM3-users] Re: Errors while importing mm2 list archives
by Mark Sapiro
On 12/10/22 01:13, Odhiambo Washington wrote:
> On Thu, Dec 8, 2022 at 10:41 PM Mark Sapiro <mark(a)msapiro.net> wrote:
>>
>> In the DATABASES['default'] definition, you need to set `'OPTIONS':
>> {'charset': 'utf8mb4'}`
>>
>
> I added that:
>
> [database]
> class: mailman.database.mysql.MySQLDatabase
> url: mysql+pymysql://mailman_user:XXXXXXXXX@localhost
> /mailmansuite?charset=utf8mb4&use_unicode=1
The above is for Mailman core. It doesn't affect HyperKitty. For that
you need to look at the DATABASES definition in
/etc/mailman3/settings.py
<https://docs.mailman3.org/projects/mailman-web/en/latest/settings.html#mail…>
and ensure that in addition to the other settings under `default {` you have
```
'OPTIONS': {'charset': 'utf8mb4'},
```
...
>> You might also need to modify the tables, particularly hyperkitty_email
>> with something like
>> ```
>> ALTER TABLE hyperkitty_email
>> DEFAULT CHARACTER SET utf8mb4,
>> MODIFY subject varchar(512)
>> CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
>> MODIFY content
>> CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
>>
>
>
> So I removed my list, dropped the database, and proceeded as follows:
>
> create database mailmansuite CHARACTER SET utf8mb4 COLLATE
> utf8mb4_0900_ai_ci;
> ALTER TABLE hyperkitty_email DEFAULT CHARACTER SET utf8mb4;
> ALTER TABLE hyperkitty_email MODIFY subject varchar(512) CHARACTER SET
> utf8mb4 COLLATE utf8mb4_unicode_ci;
> ALTER TABLE hyperkitty_email MODIFY content longtext CHARACTER SET utf8mb4
> COLLATE utf8mb4_unicode_ci;
> ALTER TABLE hyperkitty_email MODIFY sender_name varchar(255) CHARACTER SET
> utf8mb4 COLLATE utf8mb4_unicode_ci;
> ALTER TABLE hyperkitty_email MODIFY in_reply_to varchar(255) CHARACTER SET
> utf8mb4 COLLATE utf8mb4_unicode_ci;
>
> I did all those (although looks overzealous) just to be on the safe side. I
> have seen people putting emojis in their names.
None of that should be necessary. `mailman-web migrate` should create
the database and tables as needed.
> After that, I did the mailman-web migrate, created the list, imported the
> config from MM2 and then proceeded to import the archives.
> However, the errors still are there, and several messages were not imported
Do you have the OPTIONS setting in your DATABASES definition in settings.py?
...
> Warming up cache
> Traceback (most recent call last):
> File "/opt/mailman/mm/venv/bin/django-admin", line 8, in <module>
> sys.exit(execute_from_command_line())
> File
> "/opt/mailman/mm/venv/lib/python3.9/site-packages/django/core/management/__init__.py",
> line 446, in execute_from_command_line
> utility.execute()
> File
> "/opt/mailman/mm/venv/lib/python3.9/site-packages/django/core/management/__init__.py",
> line 440, in execute
> self.fetch_command(subcommand).run_from_argv(self.argv)
> File
> "/opt/mailman/mm/venv/lib/python3.9/site-packages/django/core/management/base.py",
> line 402, in run_from_argv
> self.execute(*args, **cmd_options)
> File
> "/opt/mailman/mm/venv/lib/python3.9/site-packages/django/core/management/base.py",
> line 448, in execute
> output = self.handle(*args, **options)
> File
> "/opt/mailman/mm/venv/lib/python3.9/site-packages/hyperkitty/management/commands/hyperkitty_import.py",
> line 411, in handle
> call_command("hyperkitty_warm_up_cache", list_address)
> File
> "/opt/mailman/mm/venv/lib/python3.9/site-packages/django/core/management/__init__.py",
> line 198, in call_command
> return command.execute(*args, **defaults)
> File
> "/opt/mailman/mm/venv/lib/python3.9/site-packages/django/core/management/base.py",
> line 448, in execute
> output = self.handle(*args, **options)
> File
> "/opt/mailman/mm/venv/lib/python3.9/site-packages/hyperkitty/management/commands/hyperkitty_warm_up_cache.py",
> line 53, in handle
> self.warm_up_mlist(mlist, options)
> File
> "/opt/mailman/mm/venv/lib/python3.9/site-packages/hyperkitty/management/commands/hyperkitty_warm_up_cache.py",
> line 61, in warm_up_mlist
> for thread in mlist.recent_threads:
> File
> "/opt/mailman/mm/venv/lib/python3.9/site-packages/hyperkitty/models/mailinglist.py",
> line 162, in recent_threads
> return self.cached_values["recent_threads"]()
> File
> "/opt/mailman/mm/venv/lib/python3.9/site-packages/hyperkitty/models/common.py",
> line 58, in __call__
> return self.get_or_set(*args, **kwargs)
> File
> "/opt/mailman/mm/venv/lib/python3.9/site-packages/hyperkitty/models/mailinglist.py",
> line 317, in get_or_set
> return [Thread.objects.get(pk=pk) for pk in thread_ids]
> File
> "/opt/mailman/mm/venv/lib/python3.9/site-packages/hyperkitty/models/mailinglist.py",
> line 317, in <listcomp>
> return [Thread.objects.get(pk=pk) for pk in thread_ids]
> File
> "/opt/mailman/mm/venv/lib/python3.9/site-packages/django/db/models/manager.py",
> line 85, in manager_method
> return getattr(self.get_queryset(), name)(*args, **kwargs)
> File
> "/opt/mailman/mm/venv/lib/python3.9/site-packages/django/db/models/query.py",
> line 650, in get
> raise self.model.DoesNotExist(
> hyperkitty.models.thread.Thread.DoesNotExist: Thread matching query does
> not exist.
> (venv) [mailman@gw ~/mm]$
I have no idea what would cause this in a newly created database with no
archives before running hyperkitty_import.
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
2 years, 4 months

[MM3-users] Re: Verification emails 'helo' rejected
by Greg Newby
Definitely it's venv. It might be that mailman-web.py is an artifact of an
earlier attempt with Ubuntu packages, since settings.py and mailman-web.py
are quite similar.
I do have the other config files you mention, all under /etc/mailman3/
Thanks for any further thoughts...
~ Greg
On Wed, Oct 16, 2024 at 3:47 AM Odhiambo Washington <odhiambo(a)gmail.com>
wrote:
>
>
> On Wed, Oct 16, 2024 at 8:15 AM Greg Newby via Mailman-users <
> mailman-users(a)mailman3.org> wrote:
>
>> Thanks for this, Odhiambo. Unfortunately it doesn't address my situation.
>> See below:
>>
>>
>>
>> On Tue, Oct 15, 2024 at 3:21 AM Odhiambo Washington <odhiambo(a)gmail.com>
>> wrote:
>>
>> >
>> >
>> > On Mon, Oct 14, 2024 at 10:43 PM Greg Newby via Mailman-users <
>> > mailman-users(a)mailman3.org> wrote:
>> >
>> >> Hi friends.
>> >>
>> >> I'm now getting a 500 server error upon signing up a new username on
>> the
>> >> web-based front end. The username is created in the back end, but the
>> >> verification email does not get sent.
>> >>
>> >> This is GNU Mailman 3.3.9 (Tom Sawyer), venv, Ubuntu 24.04LTS,
>> PostgreSQL,
>> >> Postfix
>> >>
>> >> Here are the corresponding logfile entries from mailmanweb.log:
>> >> smtplib.SMTPRecipientsRefused: {'redacted(a)gmail.com': (504, b'5.5.2
>> >> <mail>:
>> >> Helo command rejected: need fully-qualified hostname')}
>> >>
>> >> and from mail.log:
>> >> Oct 14 12:06:26 domain postfix/smtpd[722764]: NOQUEUE: reject: RCPT
>> from
>> >> localhost[127.0.0.1]: 504 5.5.2 <mail>: Helo command rejected: need
>> >> fully-qualified hostname; from=<root(a)lists.domain.tld>
>> to=<root@localhost
>> >> >
>> >> proto=ESMTP helo=<mail>
>> >>
>> >
>>
>> ^^^^ Note the problem isn't the "From:" address. That is being correctly
>> configured from mailman-web.py and settings.py via the variables below.
>>
>> The problem is it's going "To:" root@localhost. I don't know why this is
>> happening - shouldn't it be going to redacted(a)gmail.com?
>>
>> Also, based on settings below shouldn't this be From:
>> postorius(a)lists.domain.tld
>> not From: root(a)lists.domain.tld?
>>
>> More:
>>
>>
>>
>> >
>> >> lists.domain.tld is the domain for Mailman3. I don't know why it's
>> trying
>> >> to send email from root@.
>> >>
>> >> I've seen places where 'localhost' appears in the Mailman settings
>> >> (settings.py, mailman.cfg, mailman-web.py), and tried changing them to
>> the
>> >> host's FQDN and restarting mailman3 and mailman3-web, but the problem
>> >> persists.
>> >>
>> >
>> > Find and fix these values to what they should be as explained.
>> >
>> > # The sender of emails from Django such as address confirmation
>> requests.
>> > # Set this to a valid email address.
>> > DEFAULT_FROM_EMAIL = 'johndoe(a)domain.name'
>> >
>> > # The sender of error messages from Django. Set this to a valid email
>> > # address.
>> > SERVER_EMAIL = 'johndoe(a)domain.name'
>> >
>> > I use listmaster(a)lists.domain.name in my servers.
>> >
>>
>> In the default files via the venv installation, these were already set
>> properly:
>>
>> EMAILNAME='lists.domain.tld' <-- I set this myself
>>
>> These were default in settings.py and mailman-web.py:
>> DEFAULT_FROM_EMAIL = 'postorius@{}'.format(EMAILNAME)
>> SERVER_EMAIL = 'root@{}'.format(EMAILNAME)
>>
>
> For the venv installation, I rarely hear a mention of mailman-web.py.
> I only know about settings.py, mailman,cfg and mailman-hyperkitty.cfg
> files in /etc/mailman3/
>
> Are you really using the venv install?
>
> --
> 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]
>
6 months, 1 week

[MM3-users] Re: Another interesting error...
by Darren Smith
As for the traceback - I'm assuming it's from postorius, as this happens
when attempting to load the held messages in the Postorius UI.
On Mon, Apr 23, 2018 at 3:29 PM, Darren Smith <silas.crutherton(a)gmail.com>
wrote:
> "It's in Mailman's database in the 'message' table."
>
> I can see the message table - is there a way to see where it is marked as
> "held"? All I'm seeing in that table is id, message_id, message_id_hash,
> and path.
>
> I'm wanting to be able to query for held messages for a given mailing
> list, as there are currently over 98,000 entries in the message table.
>
> -Darren
>
>
> On Mon, Apr 23, 2018 at 3:17 PM, Mark Sapiro <mark(a)msapiro.net> wrote:
>
>> On 04/23/2018 01:31 PM, Darren Smith wrote:
>> > So it appears that there was a message sent to one of our mailing lists
>> > that was put into the held message queue. However, when attempting to
>> go to
>> > the message to do the moderation, the web page returns and Error 500.
>> >
>> > Looking in the mailman log, I found this:
>> >
>> > Apr 23 14:21:02 2018 (17878) REST request handler error:
>> > Traceback (most recent call last):
>> > File "/opt/mailman3/conda/lib/python3.6/wsgiref/handlers.py", line
>> 137,
>> > in run
>> > self.result = application(self.environ, self.start_response)
>> > File
>> > "/opt/mailman3/conda/lib/python3.6/site-packages/mailman/
>> database/transac
>> > tion.py", line 50, in wrapper
>> > rtn = function(*args, **kws)
>> > File
>> > "/opt/mailman3/conda/lib/python3.6/site-packages/mailman/
>> rest/wsgiapp.py"
>> > , line 214, in __call__
>> > return super().__call__(environ, start_response)
>> > File "/opt/mailman3/conda/lib/python3.6/site-packages/falcon/api.py",
>> > line 227 , in __call__
>> > responder(req, resp, **params)
>> > File
>> > "/opt/mailman3/conda/lib/python3.6/site-packages/mailman/
>> rest/post_modera
>> > tion.py", line 167, in on_get
>> > resource = self._make_collection(request)
>> > File
>> > "/opt/mailman3/conda/lib/python3.6/site-packages/mailman/
>> rest/helpers.py"
>> > , line 159, in _make_collection
>> > for resource in collection]
>> > File
>> > "/opt/mailman3/conda/lib/python3.6/site-packages/mailman/
>> rest/helpers.py"
>> > , line 159, in <listcomp>
>> > for resource in collection]
>> > File
>> > "/opt/mailman3/conda/lib/python3.6/site-packages/mailman/
>> rest/post_modera
>> > tion.py", line 157, in _resource_as_dict
>> > resource = self._make_resource(request.id)
>> > File
>> > "/opt/mailman3/conda/lib/python3.6/site-packages/mailman/
>> rest/post_modera
>> > tion.py", line 100, in _make_resource
>> > make_header(decode_header(resource['subject'])))
>> > File "/opt/mailman3/conda/lib/python3.6/email/header.py", line 174,
>> in
>> > make_he ader
>> > h.append(s, charset)
>> > File "/opt/mailman3/conda/lib/python3.6/email/header.py", line 295,
>> in
>> > append
>> > s = s.decode(input_charset, errors)
>> > UnicodeDecodeError: 'gb2312' codec can't decode byte 0x87 in position 2:
>> > illegal multibyte sequence
>> >
>> > It LOOKS as if there might be a character in the email somewhere -
>> possibly
>> > in the subject or sender fields? - that is somehow unexpected.
>>
>>
>> It appears that the Subject: header is RFC 2047 encoded and there is an
>> encoded word with charset gb2312 that contains an invalid encoding.
>>
>> The message is apparently defective, but this kind of defect shouldn't
>> cause a 500 error.
>>
>> I can't tell for sure from the traceback if this is Postorius or some
>> other application accessing the REST api. Is it Postorius or something
>> else?
>>
>>
>> > I am attempting to find the held message - can someone point me where I
>> can
>> > go to see the message so that I can see what might be causing the
>> problem?
>>
>>
>> It's in Mailman's database in the 'message' table.
>>
>> --
>> Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
>> San Francisco Bay Area, California better use your sense - B. Dylan
>> _______________________________________________
>> Mailman-users mailing list
>> mailman-users(a)mailman3.org
>> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>>
>
>
7 years

[MM3-users] Re: Attachement processings questions
by Lars Schimmer
On 2020-02-03 20:24, Mark Sapiro wrote:
> On 2/3/20 4:27 AM, Lars Schimmer wrote:
>>
>> In a mailinglist it seems some mails are not forwarded to a member, but
>> is listed in archive in hyperkitty.
>> That mail did include a PDF attachement, but HyperKitty does not list
>> any attachement.
>
>
> There are two issues here. Why wasn't the message delivered to list
> members?, and why is there no attachment in Hyperkitty?
>
> For the first issue, you need to examine mailman.log for the time of the
> post looking for errors and tracebacks. Also, the MTA logs may have
> useful info if the messages were sent but not delivered.
Thank you so far, I maye found the issue:
Uncaught runner exception: 'ascii' codec can't encode character '\xe9'
in position 109: ordinal not in range(128)
Uncaught runner exception: 'ascii' codec can't encode character '\xa0'
in position 37: ordinal not in range(128)
Seems to be the problemm, as it happens the same moment as the
problematic email arrives in exim4:
2020-01-31 03:02:41 1ixLdp-0003Mo-5z => user(a)abc.de R=mailman3_router
T=mailman3_transport H=localhost [127.0.0.1] C="250 Ok"
2020-01-31 03:02:41 1ixLdp-0003Mo-5z Completed
and nothing more. No sign of mailman3 sending out any mail via this list.
Other emails getting to that list will be send out via user-bounces(a)abc.de.
Those mails are in the mailinglist archives, not on hold or anything.
Just the attachement missing.
So, please, howto fix the ascii encoding error in mailman3?
Full trace:
Jan 31 03:02:43 2020 (32591) Uncaught runner exception: 'ascii' codec
can't encode character '\xe9' in position 109: ordinal not in range(128)
Jan 31 03:02:43 2020 (32591) Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/mailman/core/runner.py", line
173, in _one_iteration
self._process_one_file(msg, msgdata)
File "/usr/lib/python3/dist-packages/mailman/core/runner.py", line
266, in _process_one_file
keepqueued = self._dispose(mlist, msg, msgdata)
File "/usr/lib/python3/dist-packages/mailman/runners/pipeline.py",
line 37, in _dispose
process(mlist, msg, msgdata, pipeline)
File "/usr/lib/python3/dist-packages/mailman/core/pipelines.py", line
50, in process
handler.process(mlist, msg, msgdata)
File "/usr/lib/python3/dist-packages/mailman/handlers/to_digest.py",
line 48, in process
mbox.add(msg)
File "/usr/lib/python3.7/mailbox.py", line 603, in add
self._toc[self._next_key] = self._append_message(message)
File "/usr/lib/python3.7/mailbox.py", line 758, in _append_message
offsets = self._install_message(message)
File "/usr/lib/python3.7/mailbox.py", line 830, in _install_message
self._dump_message(message, self._file, self._mangle_from_)
File "/usr/lib/python3.7/mailbox.py", line 215, in _dump_message
gen.flatten(message)
File "/usr/lib/python3.7/email/generator.py", line 116, in flatten
self._write(msg)
File "/usr/lib/python3.7/email/generator.py", line 181, in _write
self._dispatch(msg)
File "/usr/lib/python3.7/email/generator.py", line 214, in _dispatch
meth(msg)
File "/usr/lib/python3.7/email/generator.py", line 432, in _handle_text
super(BytesGenerator,self)._handle_text(msg)
File "/usr/lib/python3.7/email/generator.py", line 249, in _handle_text
self._write_lines(payload)
File "/usr/lib/python3.7/email/generator.py", line 155, in _write_lines
self.write(line)
File "/usr/lib/python3.7/email/generator.py", line 406, in write
self._fp.write(s.encode('ascii', 'surrogateescape'))
UnicodeEncodeError: 'ascii' codec can't encode character '\xe9' in
position 109: ordinal not in range(128)
> For the second, there are many content filtering settings not (yet)
> exposed in Postorius. These include filter_extensions, filter_types,
> pass_extensions and pass_types which control which MIME parts are
> removed. For a newly created Mailman 3 list, these four settings are
> empty, but importing a Mailman 2.1 list will set them according to the
> corresponding MM 2.1 list's settings.
>
>
>> All I found was "convert HTML to plaintext", but does this setting
>> remove attachements?
>
>
> It would only affect HTML parts, not pdfs.
>
>
>> Is there any generel documentation about attachement processing in MM3?
>
>
> <https://mailman.readthedocs.io/en/latest/src/mailman/handlers/docs/filterin…>.
>
>
>
>> I would like this mailinglist to accept mails with attachements, send it
>> to the members and archvie the attachments in HyperKitty, to.
>
>
> You can set Settings -> Alter Messages -> Filter content to No in
> Postorius to not do any content filtering at all. This will override the
> Collapse alternatives and Convert html to plaintext settings and pass
> the message without removing any MIME parts.
>
> But, I think you must have other issues, either with this mail in
> particular or in general as evidenced by the mail not being received by
> list members.
Ok, first fix the ascii encode error for me. Any idea how?
thank you.
MfG,
Lars Schimmer
--
-------------------------------------------------------------
TU Graz, Institut für ComputerGraphik & WissensVisualisierung
Tel: +43 316 873-5405 E-Mail: l.schimmer(a)cgv.tugraz.at
Fax: +43 316 873-5402 PGP-Key-ID: 0x4A9B1723
5 years, 2 months

[MM3-users] Re: Sendgrid experiences
by Stephen Daniel
Also, once I got things running I added some stuff to my DNS records that
appears to help with delivery:
MYDOMAIN.org TXT 10 minutes "v=spf1 include:_spf.google.com ~all"
On Thu, May 11, 2023 at 10:16 AM Andrew Hodgson <andrew(a)hodgson.io> wrote:
> Thanks for this. Another option I am thinking of is buying a cheap Linode
> or other host which isn’t on as many blocklists as Hetzner for outbound
> mail relay purposes. Hetzner provide a good cheap VPS but their Ips are on
> a lot of blacklists.
>
>
>
> Andrew.
>
>
>
> *From:* Stephen Daniel <swd(a)pobox.com>
> *Sent:* Thursday, May 11, 2023 3:14 PM
> *To:* Andrew Hodgson <andrew(a)hodgson.io>
> *Cc:* Stephen J Turnbull <turnbull(a)sk.tsukuba.ac.jp>;
> mailman-users(a)mailman3.org
> *Subject:* Re: [MM3-users] Re: Sendgrid experiences
>
>
>
> I'll check my notes. I don't think I did anything with mailman.
>
> I am running postfix as my local MTA, and mailman talks to it as normal.
>
> In /etc/postfix/main.cf I have
>
> relayhost = smtp-relay.gmail.com:submission
>
> set. It took a bit of playing around to get it running, but its been
> rock solid since then.
>
>
>
> Domains have not been a problem. My google workspace account is
> MYDOMAIN.dev and all my email lists are MYDOMAIN.org, and everything
> appears to work just fine.
>
>
>
> I took a bunch of cryptic notes on how I got this working. As you would
> expect, the hard part is getting the authentication and permissions set up.
>
> I will send you a private message with a link to my notes.
>
>
>
>
>
> On Thu, May 11, 2023 at 10:00 AM Andrew Hodgson <andrew(a)hodgson.io> wrote:
>
> Hi.
>
>
>
> Thanks for the recommendation on the Google Workspace. How did you set
> this up in terms of the domain, since I don’t want to use Google Workspace
> as the main email provider for this domain. Also did you have to set
> anything special in Mailman?
>
>
>
> Thanks.
>
> Andrew.
>
>
>
> *From:* Stephen Daniel <swd(a)pobox.com>
> *Sent:* Thursday, May 11, 2023 2:57 PM
> *To:* Andrew Hodgson <andrew(a)hodgson.io>
> *Cc:* Stephen J Turnbull <turnbull(a)sk.tsukuba.ac.jp>;
> mailman-users(a)mailman3.org
> *Subject:* Re: [MM3-users] Re: Sendgrid experiences
>
>
>
> I would definitely look for alternatives to SendGrid. I tried using them
> and had a very poor rate of people actually getting my emails, even when I
> temporarily upgraded to an expensive plan with a dedicated IP address.
>
> I'm currently hosting mailman in Google Cloud and relaying outbound mail
> through a Google Workspace account. It's working OK. The workspace
> account costs me $6/month for basically unlimited mail relay.
>
>
>
> On Thu, May 11, 2023 at 9:50 AM Andrew Hodgson <andrew(a)hodgson.io> wrote:
>
> Stephen J Turnbull wrote:
>
> >2023-05-10 03:49 に Andrew Hodgson wrote:
>
> >> Sendgrid is maintaining the Message-Id header which is good for
> >> archiving. It is re-writing the Return-Path header though which means
> >> that bounce handling in Mailman won't work, but I think all the
> >> services do this in some way so I am happy to live with that for the
> >> moment.
>
> >How does it rewrite the Return-Path? Returned mail is not something that
> such a service would be able to handle properly (although they can help
> with apparently returned spam). If mail is legitmately sent and returned
> as undeliverable, only the author or their agent will know how to handle
> it. So such >services should provide some way to find out about returned
> mail.
>
> An example:
> Return-Path:
> bounces+[Sendgrid GUID]-andrew=hodgson.io(a)em6096.lists.hodgsonfamily.org
>
> Sendgrid provide information about bounces but crucially that bounce isn't
> forwarded back to the original return-path sender (i.e, Mailman).
>
> A few people have pointed out they can provide list hosting at a cheaper
> cost than Sendgrid so I'm looking for alternatives again.
>
> Andrew.
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> Archived at:
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
>
> This message sent to swd(a)pobox.com
>
>
1 year, 11 months

[MM3-users] Re: integrating mm3 with postfix / lmtp
by Thor Atle Rustad
I will try to get a grip on uid namespaces then...
2017-11-13 10:49 GMT+01:00 Abhilash Raj <maxking(a)asynchronous.in>:
> On Nov 13 2017, at 1:34 am, Thor Atle Rustad <thor.rustad(a)gmail.com>
> wrote:
>
>> There is a way around it!
>>
>> I have had two issues with the the maxking docker image. One is that the
>> regexp is not working properly. I reported that, and it has been fixed in
>> newer code. My other problem is that the docker image creates a user,
>> mailman, that receives uid 103. Well, uid 103 on my system is already taken
>> by systemd-bus-proxy (grep 103 /etc/passwd returns
>> "systemd-bus-proxy:x:103:105:systemd Bus Proxy,,,:/run/systemd:/bin/
>> false").
>>
>
> Containers usually run with uid namespace, so it doesn't really matter
> what uid is used outside of container.
>
> Unless, you mount /etc/shadow from host in to the container, which isn't
> really needed for the images.
>
>
>> My solution includes downloading the corrected postfix.py, and replacing
>> the Dockerfile. I put the postfix.py in <docker-mailman>/core/assets/.
>>
>> My Dockerfile:
>> FROM maxking/mailman-core
>>
>> RUN grep mailman /etc/passwd && grep mailman /etc/group \
>> && deluser mailman \
>> && addgroup -S -g900 mailman \
>> && adduser -S -u900 mailman mailman \
>> && grep mailman /etc/passwd && grep mailman /etc/group
>> COPY assets/postfix.py /usr/local/lib/python3.6/site-
>> packages/mailman/mta/postfix.py
>>
>> I then run docker build (with -t parameter, you must look up that
>> yourself). I use a different name for my images, so I end up with (note,
>> there are two tags per image):
>> root@mailer:/home/mailman/docker/docker-mailman_mods/core# docker images
>> REPOSITORY TAG IMAGE ID CREATED
>> SIZE
>> local/mailman_core_900 20171110_2 9649e84767e1 2 days
>> ago 176MB
>> local/mailman_core_900 latest 9649e84767e1 2 days
>> ago 176MB
>> local/mailman_web_900 20171110_2 07a9b3d7ddd6 2 days
>> ago 247MB
>> local/mailman_web_900 latest 07a9b3d7ddd6 2 days
>> ago 247MB
>>
>> I do the same with the web image, as I need to change the user there, too.
>>
>> Then, in docker-compose.yaml, I change the line(s) referring to the image
>> name(s):
>>
>> services:
>> mailman-core:
>> image: local/mailman_core_900
>> container_name: mailman-core
>> hostname: mailman-core
>>
>>
>> mailman-web:
>> image: local/mailman_web_900
>> container_name: mailman-web
>> hostname: mailman-web
>>
>> I don't know if this is a good solution, but at least it fixes some
>> serious issues with the 3.1's postfix integration that wouldn't otherwise
>> be fixed until the 3.2 release. The bottom line is that it works for me,
>> but it adds an additional layer of complication.
>>
>> 2017-11-03 19:40 GMT+01:00 Abhilash Raj <maxking(a)asynchronous.in>:
>>
>> On Fri, Nov 3, 2017, at 08:29 AM, Fabian A. Santiago wrote:
>> > October 26, 2017 11:07 PM, "Mark Sapiro" <mark(a)msapiro.net> wrote:
>> >
>> > > On October 26, 2017 7:30:35 PM PDT, "Fabian A. Santiago" <
>> fsantiago(a)garbage-juice.com> wrote:
>> > >
>> > >> That was it. Perfect. I manually modified my regexp map and it works
>> > >> now. Excellent and Thank you. You're the man. Does mm3 ever refresh
>> > >> those maps or only as I add new domains / lists?
>> > >
>> > > Only when you make changes to domains or lists.
>> > >
>> > > --
>> > > Mark Sapiro <mark(a)msapiro.net>
>> > > Sent from my Not_an_iThing with standards compliant, open source
>> software.
>> >
>> > Mark,
>> >
>> > I've noticed that even simply restarting the mm3 components those alias
>> > maps get rewritten and the problem returns until I can manually edit it.
>>
>> Yeah, that is true. Transport maps are re-generated everytime the
>> container restarts.
>>
>> I don't think think there is any way around this right now :(
>>
>>
>> --
>> Abhilash Raj
>> maxking(a)asynchronous.in
>> _______________________________________________
>> Mailman-users mailing list
>> mailman-users(a)mailman3.org
>> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>>
>>
>>
7 years, 5 months

[MM3-users] Re: Archiving error
by Abhilash Raj
On Fri, Oct 5, 2018, at 8:25 AM, Enrique Terrazas wrote:
> Thank you Abhilash,
> The port was in fact the problem. Django is listening on a different
> port as specified in my uwsgi.ini file>
> To be sure I understand this correctly:
> In uwsgi.ini I am specifying:
> http-socket = my.host.name:8000
>
> And in hyperkitty.cfg:
> base_url: http://my.host.name:8000/hyperkitty/
That is the correct thing to do!
thanks,
Abhilash
> Hyperkitty is now archiving messages as expected.
>
> Best regards,
> Enrique
>
>
>> On Oct 5, 2018, at 9:57 AM, Abhilash Raj
>> <maxking(a)asynchronous.in> wrote:>>
>>
>>
>> On Fri, Oct 5, 2018, at 12:06 AM, Enrique Terrazas wrote:
>>
>>> Hello,
>>> I'm hoping someone can help me configure hyperkitty correctly.
>>> I've got>>> mailman3 installed and working. I created a test list and can send/>>> receive, moderate message. However, archiving does not seem to be>>> working. Below is a copy of my (sanitized) hyperkitty.cfg file and>>> settings.py file(edited) along with the errors being logged to
>>> mailman.log
>>> hyperkitty.cfg
>>> -----
>>> # Mailman-Hyperkitty Archiver plugin
>>> [general]
>>> base_url: http://localhost:8002/
>>
>> Which PORT is your Django listening on? This seems like pointing to
>> 8002 port, are you actually listening on that port?>>
>> The error below seems to suggest that either the Django isn't running
>> or you are using wrong address.>>
>>
>>
>>> api_key:
>>> -----
>>> settings.py
>>> # Mailman API credentials
>>> MAILMAN_REST_API_URL = 'http://localhost:8001'
>>> MAILMAN_REST_API_USER = ''
>>> MAILMAN_REST_API_PASS = ''
>>> MAILMAN_ARCHIVER_KEY = ''
>>> MAILMAN_ARCHIVER_FROM = ('my.host.name', 'myIPaddress',
>>> '127.0.0.1', '::>>> 1')
>>> ------
>>> This is the error being sent to maillog.log
>>> ------
>>> Oct 05 01:54:59 2018 (15127) Exception in "hyperkitty" archiver
>>> Traceback (most recent call last):
>>> File "/opt/mailman/mailman/lib64/python3.6/site-packages/urllib3/>>> connection.py", line 171, in _new_
>>> conn
>>> (self._dns_host, self.port), self.timeout, **extra_kw)
>>> File "/opt/mailman/mailman/lib64/python3.6/site-
>>> packages/urllib3/util/>>> connection.py", line 79, in c
>>> reate_connection
>>> raise err
>>> File "/opt/mailman/mailman/lib64/python3.6/site-
>>> packages/urllib3/util/>>> connection.py", line 69, in c
>>> reate_connection
>>> sock.connect(sa)
>>> ConnectionRefusedError: [Errno 111] Connection refused
>>>
>>> During handling of the above exception, another exception occurred:>>>
>>> Traceback (most recent call last):
>>> File "/opt/mailman/mailman/lib64/python3.6/site-packages/urllib3/>>> connectionpool.py", line 600, in urlopen
>>> chunked=chunked)
>>> File "/opt/mailman/mailman/lib64/python3.6/site-packages/urllib3/>>> connectionpool.py", line 354, in _make_request
>>> conn.request(method, url, **httplib_request_kw)
>>> File "/opt/rh/rh-
>>> python36/root/usr/lib64/python3.6/http/client.py",>>> line 1239, in request
>>> self._send_request(method, url, body, headers, encode_chunked)
>>> File "/opt/rh/rh-
>>> python36/root/usr/lib64/python3.6/http/client.py",>>> line 1285, in _send_request
>>> self.endheaders(body, encode_chunked=encode_chunked)
>>> File "/opt/rh/rh-
>>> python36/root/usr/lib64/python3.6/http/client.py",>>> line 1234, in endheaders
>>> self._send_output(message_body, encode_chunked=encode_chunked)
>>> File "/opt/rh/rh-
>>> python36/root/usr/lib64/python3.6/http/client.py",>>> line 1026, in _send_output
>>> self.send(msg)
>>> File "/opt/rh/rh-
>>> python36/root/usr/lib64/python3.6/http/client.py",>>> line 964, in send
>>> self.connect()
>>> File "/opt/mailman/mailman/lib64/python3.6/site-packages/urllib3/>>> connection.py", line 196, in connect
>>> conn = self._new_conn()
>>> File "/opt/mailman/mailman/lib64/python3.6/site-packages/urllib3/>>> connection.py", line 180, in _new_conn
>>> self, "Failed to establish a new connection: %s" % e)
>>> urllib3.exceptions.NewConnectionError:
>>> <urllib3.connection.HTTPConnection object at 0x7f0ba1c22048>:
>>> Failed to>>> establish a new connection: [Errno 111] Connection refused
>>>
>>> During handling of the above exception, another exception occurred:>>> ------
>>>
>>> Thanks in advance,
>>> Enrique J. Terrazas
>>> _______________________________________________
>>> Mailman-users mailing list -- mailman-users(a)mailman3.org
>>> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
>>> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.mail…>>
>>
>> --
>> thanks,
>> Abhilash Raj (maxking)
--
thanks,
Abhilash Raj (maxking)
6 years, 6 months

[MM3-users] Re: Migrating mailman3 to latest ubuntu lts
by Helio Loureiro
Hi,
And here we have it:
(venv) mailman@new=server ~ (v3.3.9)> mailman-web migrate
System check identified some issues:
WARNINGS:
account.EmailAddress: (models.W036) MariaDB does not support unique
constraints with conditions.
HINT: A constraint won't be created. Silence this warning if you don't care
about it.
account.EmailAddress: (models.W043) MariaDB does not support indexes on
expressions.
HINT: An index won't be created. Silence this warning if you don't care
about it.
Operations to perform:
Apply all migrations: account, admin, auth, contenttypes,
django_mailman3, django_q, hyperkitty, postorius, sessions, sites,
socialaccount
Running migrations:
Applying account.0004_alter_emailaddress_drop_unique_email... 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
tl;dr: it was the database.
So the django was spitting out absolutely horrible traceback errors to
diagnose the issue. I modified the code to print the query and then raise
exception (what is expected from an error, not only "I just failed, sorry
do whatever").
Then I got the query and tried manually. And it failed.
(venv) mailman@new-server ~ (v3.3.9)> mailman-web migrate
System check identified some issues:
WARNINGS:
account.EmailAddress: (models.W036) MariaDB does not support unique
constraints with conditions.
HINT: A constraint won't be created. Silence this warning if you don't care
about it.
account.EmailAddress: (models.W043) MariaDB does not support indexes on
expressions.
HINT: An index won't be created. Silence this warning if you don't care
about it.
Operations to perform:
Apply all migrations: account, admin, auth, contenttypes,
django_mailman3, django_q, hyperkitty, postorius, sessions, sites,
socialaccount
Running migrations:
Applying account.0004_alter_emailaddress_drop_unique_email...Error
running query: b'*ALTER** TABLE `account_emailaddress` DROP INDEX `email`'*
Traceback (most recent call last):
File
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/utils.py",
line 89, in _execute
return self.cursor.execute(sql, params)
File
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/mysql/base.py",
line 75, in execute
return self.cursor.execute(query, args)
File
"/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
179, in execute
res = self._query(mogrified_query)
[...]
(venv) mailman@new-server ~ (v3.3.9) [0|1]> mysql -umailman3web -p -h
localhost mailman3web
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 32
Server version: 10.6.12-MariaDB-0ubuntu0.22.04.1 Ubuntu 22.04
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input
statement.
MariaDB [mailman3web]> *ALTER TABLE `account_emailaddress` DROP INDEX
`email`;*
ERROR 2013 (HY000): Lost connection to server during query
MariaDB [mailman3web]> *ALTER TABLE `account_emailaddress` DROP INDEX
`email`;*
ERROR 2006 (HY000): Server has gone away
No connection. Trying to reconnect...
Connection id: 32
Current database: mailman3web
ERROR 2013 (HY000): Lost connection to server during query
So I looked to the mysql error logs and searched Internet for the issue.
It recommended to run a "mysql_upgrade", which failed with another error:
root@seliius26224 /e/mailman3# mysql_upgrade -u root --force
Phase 1/7: Checking and upgrading mysql database
Processing databases
mysql
mysql.column_stats OK
mysql.columns_priv OK
mysql.db OK
mysql.engine_cost
Error : Table 'mysql.engine_cost' doesn't exist
status : Operation failed
mysql.event OK
mysql.func OK
[...]
sys.x$wait_classes_global_by_avg_latency OK
sys.x$wait_classes_global_by_latency OK
sys.x$waits_by_host_by_latency OK
sys.x$waits_by_user_by_latency OK
sys.x$waits_global_by_latency OK
Phase 4/7: Running 'mysql_fix_privilege_tables'
ERROR 1932 (42S02) at line 477: Table 'mysql.innodb_index_stats' doesn't
exist in engine
FATAL ERROR: Upgrade failed
I searched again the Internet and found a fix:
https://stackoverflow.com/questions/37856155/mysql-upgrade-failed-innodb-ta…
Now migration is progressing.
Thanks for all the patience and support.
Best Regards,
Helio Loureiro
https://helio.loureiro.eng.br
https://github.com/helioloureiro
https://mastodon.social/@helioloureiro
On Tue, 19 Dec 2023 at 15:23, Mark Sapiro <mark(a)msapiro.net> wrote:
> On 12/19/23 3:11 AM, Helio Loureiro wrote:
> > Hi,
> >
> > No luck :(
> >
> > (venv) mailman@new-server ~ (v3.3.9)> *pip install -U
> > django-allauth==0.58.0*
>
> You need to install django-allauth<0.58.0 as in
> ```
> pip install django-allauth\<0.58
> ```
>
> --
> Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
> San Francisco Bay Area, California better use your sense - B. Dylan
>
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> Archived at:
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
>
> This message sent to helio(a)loureiro.eng.br
>
1 year, 4 months

[MM3-users] Re: Importing config and archives only partially succeeded?
by Eric Broens
`mailman qfile` on the 5 pck files that were in the /out directory looked OK, although I am not sure if I should have looked at something specific.
The bak file disappeared as soon as I stopped mailman. When I started mailman again the name of the bak file had changed, and it changed every time I listed the directory.After stopping and starting mailman once more it didn't appear anymore.
There are also 6 files in the shunt directory. I don't know what this directory is used for.
For now I have disabled the hourly jobs.I will rebuild the search index for each mailinglist separately since the update_index was apparently killed before it finished.
Best Regards,Eric
On Sunday, December 13, 2020, 06:18:21 PM GMT+1, Mark Sapiro <mark(a)msapiro.net> wrote:
On 12/13/20 7:11 AM, Eric Broens via Mailman-users wrote:
> Hi Mark,
> 1.Regarding the repeated access of /archives/api/mailman/urls seems to be related to mailman not being able to open port 25.
> This is weird because other mails have been distributed.
> The mailman log shows:Dec 12 22:16:48 2020 (1471) ACCEPT: < message id >
> Dec 12 22:16:52 2020 (1474) Cannot connect to SMTP server localhost on port 25
That message is in response to a socket.error exception in attempted
delivery. It is logged only once until there is a successful delivery,
but the message keeps being retried.
> webserver logs:<host > - - [12/Dec/2020:22:16:50 +0100] "GET /archives/api/mailman/urls ?mlist=...&key=*** HTTP/1.1" 200 64 "-" "python-requests/2.25.0"
> <host > - - [12/Dec/2020:22:16:52 +0100] "GET /archives/api/mailman/urls?mlist=...&msgid=< message id >&key=*** HTTP/1.1" 200 105 "-" "python-requests/2.25.0"
> This last entry is repeated forever (until I stop the mailserver for a few minutes, but later on this happens again for other mails too).
Those GETs are part of normal message processing. As I said, they result
from core handlers asking HyperKitty for the URL at which the message
will be archived so they can add that URL to the Archived-At: header and
maybe to a message header or footer.
Presumably the one that keeps repeating is the one message/message-id
that is throwing the socket.error and being continuously retried.
I would stop Mailman and move that one .pck or .bak file out of
Mailman's var/queue/out/ directory and then start mailman. You can then
examine the queue entry with `mailman qfile` and maybe see what the
issue is.
> 2..Regarding the mails on the archive page, for most of the lists it is solved now. So probably one of the periodic jobs fixed that.The mailinglist which showed 0 participants 0 subscribers, does show now 0 participants 66 discussions.I have checked the member tables, and the members for this mailinglist are included there.
OK.
> 3.What I notice now too is that the hourly runjobs tasks don't seem to finish.I would have to check what they exactly do. Can I somehow activate logging for these?
> mailman 300042 300016 1 08:00 ? 00:09:18 /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/django-admin runjobs hourly --pythonpath /opt/mailman/mailman-suite/mailman-suite_project --settings settingsmailman 302158 302149 2 09:00 ? 00:09:10 /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/django-admin runjobs hourly --pythonpath /opt/mailman/mailman-suite/mailman-suite_project --settings settingsmailman 304513 304506 2 10:00 ? 00:09:38 /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/django-admin runjobs hourly --pythonpath /opt/mailman/mailman-suite/mailman-suite_project --settings settingsmailman 308631 308620 3 11:00 ? 00:09:29 /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/django-admin runjobs hourly --pythonpath /opt/mailman/mailman-suite/mailman-suite_project --settings settingsmailman 312847 312832 3 12:00 ? 00:09:15 /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/django-admin runjobs hourly --pythonpath /opt/mailman/mailman-suite/mailman-suite_project --settings settingsmailman 317343 317332 4 13:00 ? 00:09:20 /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/django-admin runjobs hourly --pythonpath /opt/mailman/mailman-suite/mailman-suite_project --settings settingsmailman 320079 320072 7 14:00 ? 00:09:08 /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/django-admin runjobs hourly --pythonpath /opt/mailman/mailman-suite/mailman-suite_project --settings settingsmailman 322618 322610 13 15:00 ? 00:08:54 /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/django-admin runjobs hourly --pythonpath /opt/mailman/mailman-suite/mailman-suite_project --settings settingsmailman 325205 325198 84 16:00 ? 00:06:56 /opt/mailman/venv/bin/python3 /opt/mailman/venv/bin/django-admin runjobs hourly --pythonpath /opt/mailman/mailman-suite/mailman-suite_project --settings settings
/opt/mailman/venv/bin/django-admin runjobs --list
will show you what the jobs are. The hourly jobs are
new_lists_from_mailman, thread_starting_email and update_index. The one
running long is almost certainly update_index. I would stop running the
hourly jobs until you have successfully updated the search index for all
lists.
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
_______________________________________________
Mailman-users mailing list -- mailman-users(a)mailman3.org
To unsubscribe send an email to mailman-users-leave(a)mailman3.org
https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
4 years, 4 months

[MM3-users] Re: I have issue where it does not send emails on to people in the list I create.
by Mark Sapiro
On 4/30/20 8:30 AM, john_warland(a)hotmail.com wrote:
> Hello,
>
> I am quite new to Mailman3 and have been trying to get a working local test setup on a single VM (Centos07)
>
> I have issue where if I send an email to the list. it does not send emails on to the people subscribed to that list.
>
> Note the steps below were put together from memory after a few days of repeatably trying different things so there will be some inaccuracies
>
>
> I have mailman running on same local box as postfix, postorius and hyperkitty.
>
> I have root as the superuser in Postorius and have tried the following:
>
> In unix shell created new user 'developer'
> In unix shell created new user 'tester'
>
> In shell send an email from developer user to tester:
> echo 'Hello' | mailx -s 'Hello Subject line' tester(a)sandbox.mytest.com
>
> Confirmed user tester received email in cat /home/tester/Maildir/new/ folder:
>
> Return-Path: <developer(a)cloud7.sandbox.mytest.com>
> X-Original-To: tester(a)cloud7.sandbox.mytest.com
> Delivered-To: tester(a)cloud7.sandbox.mytest.com
> Received: by cloud7.sandbox.mytest.com (Postfix, from userid 1000)
>
> In Postorius web frontend:
>
> Signed up as root
> Received confirmation email in /root/Maildir/new/ folder so cut and pasted the Url in the email to activate account.
> Created new list called testlist(a)sandbox.mytest.com
> Logged out
>
> Signed up as tester
> Received confirmation email in /home/tester/Maildir/new/ folder so cut and pasted the Url to activate account.
> Subscribed tester to the testlist.
>
> Next in unix shell su as developer and send an email to testlist(a)sandbox.mytest.com
>
> The root user gets the following email
>
> Content-Transfer-Encoding: 7bit
> Subject: Your message to testlist(a)cloud7.sandbox.mytest.com awaits moderator approval
> From: testlist-bounces(a)cloud7.sandbox.mytest.com
> To: developer(a)cloud7.sandbox.mytest.com
> Message-ID: <158824480291.3035.17408340520496115243(a)localhost.localdomain>
> Date: Thu, 30 Apr 2020 11:06:42 +0000
> Precedence: bulk
> X-Mailman-Version: 3.3.0
>
> Your mail to 'testlist(a)cloud7.sandbox.mytest.com' with the subject
>
> hello there 2
>
> Is being held until the list moderator can review it for approval.
>
> The message is being held because:
>
> The message is not from a list member
>
> Either the message will get posted to the list, or you will receive notification of the moderator's decision.
>
> Once I have gone back into Postorius as root and approved the message, root user gets a second email:
>
> Return-Path: <testlist-bounces(a)cloud7.sandbox.mytest.com>
> X-Original-To: root(a)cloud7.sandbox.mytest.com
> Delivered-To: root(a)cloud7.sandbox.mytest.com
> Received: from localhost.localdomain (localhost [IPv6:::1])
> by cloud7.sandbox.mytest.com (Postfix) with ESMTP id E056A84CE4
> for <root(a)cloud7.sandbox.mytest.com>; Thu, 30 Apr 2020 11:09:10 +0000 (UTC)
> Received: by cloud7.sandbox.mytest.com (Postfix, from userid 1000)
> id 8F1B684CE4; Thu, 30 Apr 2020 11:06:41 +0000 (UTC)
> Date: Thu, 30 Apr 2020 11:06:41 +0000
> To: testlist(a)cloud7.sandbox.mytest.com
> User-Agent: Heirloom mailx 12.5 7/5/10
> MIME-Version: 1.0
> Message-Id: <20200430110641.8F1B684CE4(a)sandbox.mytest.com>
> From: developer(a)cloud7.sandbox.mytest.com
> X-MailFrom: developer(a)cloud7.sandbox.mytest.com
> X-Mailman-Rule-Hits: nonmember-moderation
> X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation
> Message-ID-Hash: FAPTJKJRZG2ELSOSBRBIDOBWXP3Y5QAY
> X-Message-ID-Hash: FAPTJKJRZG2ELSOSBRBIDOBWXP3Y5QAY
> X-Mailman-Approved-At: Thu, 30 Apr 2020 11:09:10 +0000
> X-Mailman-Version: 3.3.0
> Precedence: list
>
> Subject: [Testlist] hello there 2
>
> List-Id: A test list <testlist.sandbox.mytest.com>
> List-Help: <mailto:testlist-request@sandbox.mytest.com?subject=help>
> List-Post: <mailto:testlist@sandbox.mytest.com>
> List-Subscribe: <mailto:testlist-join@sandbox.mytest.com>
> List-Unsubscribe: <mailto:testlist-leave@sandbox.mytest.com>
> Content-Type: text/plain; charset="us-ascii"
> Content-Transfer-Encoding: 7bit
>
> A test email 2
> _______________________________________________
> Testlist mailing list -- testlist(a)sandbox.mytest.com
> To unsubscribe send an email to testlist-leave(a)sandbox.mytest.com
>
>
> At no point does the email appear in the tester(a)sandbox.mytest.com Maildir
Why does root get the list post? Is root also a member of the list.
What's in logs? Mailman's logs and the MTA logs
>
> Configs as follows..
tl;dr and mostly irrelevant.
What do the following shell commands show
mailman members testlist.sandbox.mytest.com
mailman members -r testlist.sandbox.mytest.com
mailman members -n any testlist.sandbox.mytest.com
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
4 years, 11 months

[MM3-users] Re: Error -- postorius Un-handled exception
by Odhiambo Washington
On Sat, Jan 27, 2024 at 8:17 AM Mark <imark(a)posteo.net> wrote:
>
> -----------------------
> > >
> >
> "/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/
>
> ---------------------------
>
> > Try running all the system initializations with "mailman info" and
> > "mailman conf". This often will elicit errors if the system is messed
> > up. More likely to get this error would be "mailman withlist $LIST"
> > (maybe you need an '-l' option to specify the list, I forget). If
> > that doesn't elicit the error, then check that Mailman's runners are
> > running with ps. Since it's Debian, I guess they should be running as
> > the 'list' user. Are Mailman's files and directories owned by 'list'
> > or sometimes 'www-data' for log files?
>
> Debian yes, but venv/pip installation so running as "mailman".
>
> >
> > The log is saying that when Postorius tried to look up that list, it
> > tried to call out to Mailman core via HTTP to the API to get the
> > information and that access failed with HTTP status 500. I think the
> > actual error is likely to be reported in mailman.log (or it might be
> > in error.log, "grep '05:41:46' *.log" in Mailman's log directory will
> > probably find it). I'm pretty sure there will be relevant log
> > entries, probably a matching traceback.
>
> ----------------------------
>
> Hi,
>
> Thank you Steve, Mark, Odhiambo for your responses.
>
> After working my way through your suggestions with no joy I discovered
> to my embarrassment that I hadn't created the "mailman-hyperkitty.cfg"
> file. Once created all was well.
>
> This was of course after I had begun the installation process again from
> scratch. My apologies for the waste of bandwidth and your time.
>
> Regarding my installation, (following the docs at
> https://docs.mailman3.org/en/latest/install/virtualenv.html) I found a
> couple of issues that others might also stumble over:
>
> 1. Installing Xapian needed clang. It didn't like gcc
> 2. Being a fresh Debian 12 OS, I needed to also install make,
> build-essential
> 3. For the user "mailman" to access the databases I needed to change the
> owner to mailman (even though all privileges has been granted) ...
postgres=# create database mailman;
> CREATE DATABASE
> postgres=# create database mailmanweb;
> CREATE DATABASE
> postgres=# create user mailman with encrypted password '<PASSWORD>';
> CREATE ROLE
> postgres=# grant all privileges on database mailman to mailman;
> GRANT
> postgres=# grant all privileges on database mailmanweb to mailman;
> GRANT
>
> psql -d mailman -U mailman -W
> $ psql -d mailman -U mailman -W
> Password:
>
> psql: error: connection to server on socket
> "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: Peer authentication
> failed for user "mailman"
>
> sudo -u postgres psql
> ALTER DATABASE mailman OWNER TO mailman;
> \q
>
> $ psql -h localhost -d mailman -U mailman -W
> Password:
>
> psql (15.5 (Debian 15.5-0+deb12u1))
> SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384,
> compression: off)
> Type "help" for help.
>
> ... and same for mailmanweb
>
> So far, so good.
>
> Thanks and apologies once again,
> Mark
>
The issue you're dealing with in that case is this change in PostgreSQL-15
discussed in this blog:
https://www.cybertec-postgresql.com/en/error-permission-denied-schema-publi…
I have never needed to do `psql -d mailman -U mailman -W`.
I used the steps documented above to enable mailman user to write to the
database.
postgres=# \c mailmanweb postgres
You are now connected to database "mailmanweb" as user "postgres".
mailmanweb=# GRANT ALL ON SCHEMA public TO mailman;
GRANT
mailmanweb=# \c mailman postgres
You are now connected to database "mailman" as user "postgres".
mailmanweb=# GRANT ALL ON SCHEMA public TO mailman;
GRANT
TBH, I am not sure which method is the best although I think this option is
:)
--
Best regards,
Odhiambo WASHINGTON,
Nairobi,KE
+254 7 3200 0004/+254 7 2274 3223
In an Internet failure case, the #1 suspect is a constant: DNS.
"Oh, the cruft.", egrep -v '^$|^.*#' ¯\_(ツ)_/¯ :-)
[How to ask smart questions:
http://www.catb.org/~esr/faqs/smart-questions.html]
1 year, 2 months

[MM3-users] Re: Errors while importing mm2 list archives
by Odhiambo Washington
On Thu, Dec 8, 2022 at 10:41 PM Mark Sapiro <mark(a)msapiro.net> wrote:
> On 12/8/22 07:23, Odhiambo Washington wrote:
> > MM3-3.3.7, Hyperkitty-1.3.6
> >
> > While importing, I encountered several of this error:
> >
> > <CUT>
> > MySQLdb.OperationalError: (1366, "Incorrect string value:
> > '\\xF0\\x9F\\x98\\x8A, ...' for column 'content' at row 1")
> > The above exception was the direct cause of the following exception:
> ...
> > File
> >
> "/opt/mailman/mm/venv/lib/python3.9/site-packages/django/db/backends/mysql/base.py",
>
>
> That's a 4-byte utf-8 encoding for an emoji. MySQL and MariaDB have to be
> told to accept 4-byte encodings.
>
> In the DATABASES['default'] definition, you need to set `'OPTIONS':
> {'charset': 'utf8mb4'}`
>
I added that:
[database]
class: mailman.database.mysql.MySQLDatabase
url: mysql+pymysql://mailman_user:XXXXXXXXX@localhost
/mailmansuite?charset=utf8mb4&use_unicode=1
> Also, although it doesn't affect this, see
>
> https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/docs/datab…
I read this too. Did not pick much from there.
> You might also need to modify the tables, particularly hyperkitty_email
> with something like
> ```
> ALTER TABLE hyperkitty_email
> DEFAULT CHARACTER SET utf8mb4,
> MODIFY subject varchar(512)
> CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci,
> MODIFY content
> CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
>
So I removed my list, dropped the database, and proceeded as follows:
create database mailmansuite CHARACTER SET utf8mb4 COLLATE
utf8mb4_0900_ai_ci;
ALTER TABLE hyperkitty_email DEFAULT CHARACTER SET utf8mb4;
ALTER TABLE hyperkitty_email MODIFY subject varchar(512) CHARACTER SET
utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE hyperkitty_email MODIFY content longtext CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
ALTER TABLE hyperkitty_email MODIFY sender_name varchar(255) CHARACTER SET
utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE hyperkitty_email MODIFY in_reply_to varchar(255) CHARACTER SET
utf8mb4 COLLATE utf8mb4_unicode_ci;
I did all those (although looks overzealous) just to be on the safe side. I
have seen people putting emojis in their names.
After that, I did the mailman-web migrate, created the list, imported the
config from MM2 and then proceeded to import the archives.
However, the errors still are there, and several messages were not imported
- I have several "failed to import" warnings.
<CUT>
django.db.utils.OperationalError: (1366, "Incorrect string value:
'\\xF0\\x9F\\x98\\x8A, ...' for column 'content' at row 1")
Message 253d9d44-cc3e-fed1-144b-34da88c52b39(a)emailplus.org failed to
import, skipping *<================== several of these "failed to import"
messages*
Computing thread structure
Synchronizing properties with Mailman
905 emails left to refresh, checked 0
765 emails left to refresh, checked 0
Warming up cache
Traceback (most recent call last):
File "/opt/mailman/mm/venv/bin/django-admin", line 8, in <module>
sys.exit(execute_from_command_line())
File
"/opt/mailman/mm/venv/lib/python3.9/site-packages/django/core/management/__init__.py",
line 446, in execute_from_command_line
utility.execute()
File
"/opt/mailman/mm/venv/lib/python3.9/site-packages/django/core/management/__init__.py",
line 440, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File
"/opt/mailman/mm/venv/lib/python3.9/site-packages/django/core/management/base.py",
line 402, in run_from_argv
self.execute(*args, **cmd_options)
File
"/opt/mailman/mm/venv/lib/python3.9/site-packages/django/core/management/base.py",
line 448, in execute
output = self.handle(*args, **options)
File
"/opt/mailman/mm/venv/lib/python3.9/site-packages/hyperkitty/management/commands/hyperkitty_import.py",
line 411, in handle
call_command("hyperkitty_warm_up_cache", list_address)
File
"/opt/mailman/mm/venv/lib/python3.9/site-packages/django/core/management/__init__.py",
line 198, in call_command
return command.execute(*args, **defaults)
File
"/opt/mailman/mm/venv/lib/python3.9/site-packages/django/core/management/base.py",
line 448, in execute
output = self.handle(*args, **options)
File
"/opt/mailman/mm/venv/lib/python3.9/site-packages/hyperkitty/management/commands/hyperkitty_warm_up_cache.py",
line 53, in handle
self.warm_up_mlist(mlist, options)
File
"/opt/mailman/mm/venv/lib/python3.9/site-packages/hyperkitty/management/commands/hyperkitty_warm_up_cache.py",
line 61, in warm_up_mlist
for thread in mlist.recent_threads:
File
"/opt/mailman/mm/venv/lib/python3.9/site-packages/hyperkitty/models/mailinglist.py",
line 162, in recent_threads
return self.cached_values["recent_threads"]()
File
"/opt/mailman/mm/venv/lib/python3.9/site-packages/hyperkitty/models/common.py",
line 58, in __call__
return self.get_or_set(*args, **kwargs)
File
"/opt/mailman/mm/venv/lib/python3.9/site-packages/hyperkitty/models/mailinglist.py",
line 317, in get_or_set
return [Thread.objects.get(pk=pk) for pk in thread_ids]
File
"/opt/mailman/mm/venv/lib/python3.9/site-packages/hyperkitty/models/mailinglist.py",
line 317, in <listcomp>
return [Thread.objects.get(pk=pk) for pk in thread_ids]
File
"/opt/mailman/mm/venv/lib/python3.9/site-packages/django/db/models/manager.py",
line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File
"/opt/mailman/mm/venv/lib/python3.9/site-packages/django/db/models/query.py",
line 650, in get
raise self.model.DoesNotExist(
hyperkitty.models.thread.Thread.DoesNotExist: Thread matching query does
not exist.
(venv) [mailman@gw ~/mm]$
It therefore means I have several broken threads in the archives.
I am still willing to try other solutions if they are suggested.
And what do I make of the final error -
*hyperkitty.models.thread.Thread.DoesNotExist:
Thread matching query does not exist*. ??
--
Best regards,
Odhiambo WASHINGTON,
Nairobi,KE
+254 7 3200 0004/+254 7 2274 3223
"Oh, the cruft.", egrep -v '^$|^.*#' ¯\_(ツ)_/¯ :-)
2 years, 4 months

[MM3-users] Re: How to delete non-users
by Mark Sapiro
On 9/16/22 16:40, Allan Hansen wrote:
> Hi Mark,
>
> Thank you for looking into it.
>
> We are very strict about memberships, which we are because of spam, bots and malicious contributors and because we don't want anyone to think that our lists are used for spam:
>
> When a user applies, the server sends a message to the moderator.
> The moderator communicates with the potential member and accepts or does not accept the application.
So Subscription policy is Moderate or Confirm, then moderate.
> At this point, if the user has not been accepted, but tried to send a message to the list, a non-member membership is created.
Yes. This is expected.
> When he/she logs in to list his/her account, the list to which he/she holds non-memberships will be listed and the user will think that he/she has been properly subscribed (why else are the lists listed).
I'm guessing you are talking about the
https://www.example.com/mailman3/accounts/subscriptions/ page. On that
page, all membership roles (owner, moderator, member, nonmember) are listed.
Note that if the user goes instead to info page for the list,
appropriate pronoun will be presented with a subscribe form.
> Noone notices the column that shows the role as 'nonmember.' So he/she thinks that the subscription request has been accepted, but nothing is working. That's why the 'non-member' record is an issue. I also don't see why non-members are automatically added, filling up the database with junk (at least from our point of view, with all respect).
That's the way Mailman 3 is designed. Changing it would be a major
undertaking.
Consider the case where default nonmember action is hold rather than
discard. Then when handling a nonmember post, the moderator can set the
nonmember's moderation to default processing to essentially accept
future posts from that nonmember if the nonmember has a legitimate
reason to post, or to discard if the nonmember is a spammer.
If you think it would help, you might consider colorizing the roles on
that page so perhaps nonmember could be in red. This should be a simple
patch to Postorius.
> But our lists don't accept messages from non-members. Such messages are quietly discarded, as most are spam, as mentioned above.
> So now the user is neither getting emails from the lists nor is unable to send messages to the list.
> The next step for the user is to complain to me. ☹
Why didn't you (or the moderator) accept the held subscription at the
beginning?
> I have looked for a template that could be used to warn someone when he/she is added as a non-member, but did not find one. It's also not clear that I'd want one, as most of these non-subscriptions are by spammers and I prefer not to reply to spammers. __
>
> I tried your suggestion below, Mark.
> Here's my transcript:
>
> **********
> 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.
>
>>>> lm = getUtility(IListManager)
>>>> for l in lm:
> ... for nm in l.nonmembers.members:
> ... nm.unsubscribe()
> ...
>>>>
> **********
> I did this twice, once with commit() and once typing ctrl/d (ctrl/D) just gave me a beep.
> Calling commit() did not return to the ... as in your example, but showed the >>> prompt, so I tried ctrl/D (beep) and then ctrl/d (exit).
My example did not show a `...` in response to commit(). Commit() was
followed by three backticks which is markup for the end if the literal
text. The >>> following commit() is expected.
Either calling commit() explicitly or exiting with ctrl-D should commit
the changes.
> I then went to the Postorius page for one of the lists and found that all the non-members were still present.
I don't know why this would be. I tested that script and it worked for me.
My original point is the presence of a nonmember role should not prevent
the user from subscribing. If there is an issue with subscribing it is
probably because of the outstanding subscription request waiting
moderator approval.
I understand that you would like the nonmember role to disappear, but
that isn't going to happen in the distribution, and I can't undertake
the extensive effort required to figure out how you can do it for your site.
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
2 years, 7 months

[MM3-users] Re: MTA setup
by Arte Chambers
Looks like the from header is the email address I am using for testing: From:
Arte Chambers <paul.m.robey(a)gmail.com>
```
$mailman qfile
/opt/mailman/mm/var/archives/hyperkitty/spool/1734973370.5060537+806f73d2a296b0293228a9489b81129740d7afea.pck
[----- start pickle -----]
<----- start object 1 ----->
Received: from mail-lj1-f182.google.com (mail-lj1-f182.google.com
[209.85.208.182])
by list.louisvillecommunitygrocery.com (Postfix) with ESMTPS id 3E36381ED2
for <testing(a)list.louisvillecommunitygrocery.com>; Mon, 23 Dec 2024
17:02:48 +0000 (UTC)
Received: by mail-lj1-f182.google.com with SMTP id
38308e7fff4ca-3003e203acaso44323081fa.1
for <testing(a)list.louisvillecommunitygrocery.com>; Mon, 23 Dec 2024
09:02:48 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1734973367; x=1735578167; darn=
list.louisvillecommunitygrocery.com;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:from:to:cc:subject:date:message-id:reply-to;
bh=s882asm7tHdBcEIXrLEFEIU3397InleNrytAF0sRzBA=;
b=SFr5MsvE4S5GUIy9pEuqDHdEW5nW16briFnXG6ARqjLiFgAX12TU5ozUgw5NCJobcx
RQWkL64TyXv2C2CTKHjcBH26jiLo1p7h2edLXSBCmd374QbRYQPbv5yZb4jmwX5kfMzr
fc/I3pSk6ruN/j+JPGLVxBJBreyLRDV+YL0rDJts83a8hcPHghGMkRTmi2Z1vLYgqThA
2fV/IYwrOe/q4c2+/AwlKQFUuClaxFN4AniNi++Hk7eql7q4ceDtURp1pHW/h4+8UXgJ
2DQ+zwPapOiU5POtfka1fAHTJgykuOoMCmO0YiwfP9p51lXmr4GmdFjFgDOiQwzhx8dH
vAEw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1734973367; x=1735578167;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
:reply-to;
bh=s882asm7tHdBcEIXrLEFEIU3397InleNrytAF0sRzBA=;
b=IwucO1D8XfIbWVT6dQ/LdKNsesrSsiekzj0khFI38CLd6WryQGJOQftxOLR5AvneNs
9gUbVvFAe0VENzTbMrelFr4H5DTI9HrKbNVYEbleeMrbuPypsTdtqWTrjizGhMQROhvs
vOxl3T+UfRjDywLj9OuYBiWKTDIIaTpeQ7rR4u1lT8iMGTUre0V8kikm1BsFXwRRzl+U
e0ghdIaZYN5kfu/bfR5veCCQhU0l0IF+DvoZzdJCgLkYgImIPhB/X7Zv0wQiUnKoebJo
h1UFAEQIrVx2iMFHzLsHiqBhKHvJqG72PAa1bMiG0K3EsYvSJHu5zjrkTjoHXazAci4c
trXg==
X-Gm-Message-State: AOJu0Yz8oZOnap/9jvXAOcFZnjYoReVHBQrfUnC9u6Mi6M2Ea7dkofrs
4mAlHtOuQYGEyFxJZIOdFybTI20qdBoQBJAPF7FHL6d4mAGrLbPMgTZy3/hWFtmXfOo93a74CSu
YsRCZKH5ixK5jPHn4Vye0i/h0oilWXQ==
X-Gm-Gg: ASbGncsYG3zr9300F+iwV6VLqHlMKoLuiS2mnT5tGiid8o6Ojd4JIrOBQI0BVNx1aeO
FVisNFC7AKewms0adY+Ug4HLKEtg8GwSIz0i32IOtPNA+tNxEAac47wHBGkcv+H2EfTOMsD/p
X-Google-Smtp-Source:
AGHT+IFNyfqXALTZ0zcO0GJZfpIf/4WT9IZ2EG3oThjt5aoZP3sdPhxjN2UOMTqwI2axiu9io1WSiFszsjxPLHtLIs8=
X-Received: by 2002:a05:6512:1190:b0:53e:37e4:1457 with SMTP id
2adb3069b0e04-54229550e25mr4737922e87.33.1734973365282; Mon, 23 Dec 2024
09:02:45 -0800 (PST)
MIME-Version: 1.0
References: <77112962-9e9b-4692-bc81-05f1957fb823(a)smtp-relay.sendinblue.com>
In-Reply-To: <77112962-9e9b-4692-bc81-05f1957fb823(a)smtp-relay.sendinblue.com
>
From: Arte Chambers <paul.m.robey(a)gmail.com>
Date: Mon, 23 Dec 2024 12:02:08 -0500
Message-ID: <CAM05vAepJnJQengX825dZ4E1PVVxeEgv4ogUcmifP9tqh1i=
mg(a)mail.gmail.com>
To: Arte Chambers <paul.m.robey(a)gmail.com>
Content-Type: multipart/alternative; boundary="00000000000021f3da0629f2f7aa"
Message-ID-Hash: T3RQI2JNPUFO4WGGVSJTMYLTHPGOXOAG
X-Message-ID-Hash: T3RQI2JNPUFO4WGGVSJTMYLTHPGOXOAG
X-MailFrom: paul.m.robey(a)gmail.com
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop;
banned-address; emergency; member-moderation; nonmember-moderation;
administrivia; implicit-dest; max-recipients; max-size; news-moderation;
no-subject; digests; suspicious-header
CC: testing(a)list.louisvillecommunitygrocery.com
X-Mailman-Version: 3.3.10
Precedence: list
Subject: [Testing] Re: test 12.23.24 11.57
List-Id: For testing mailing list software <
testing.list.louisvillecommunitygrocery.com>
Archived-At: <>
List-Archive: <>
List-Help: <mailto:testing-request@list.louisvillecommunitygrocery.com
?subject=help>
List-Owner: <mailto:testing-owner@list.louisvillecommunitygrocery.com>
List-Post: <mailto:testing@list.louisvillecommunitygrocery.com>
List-Subscribe: <mailto:testing-join@list.louisvillecommunitygrocery.com>
List-Unsubscribe: <mailto:testing-leave@list.louisvillecommunitygrocery.com>
--00000000000021f3da0629f2f7aa
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Thank you,
Paul 'Arte Chambers' Robey
502-408-6922
On Mon, Dec 23, 2024 at 2:24 PM Mark Sapiro <mark(a)msapiro.net> wrote:
> On 12/23/24 09:01, Arte Chambers via Mailman-users wrote:
> > Output from mailman log after sending a test message to the list:
> >
> > Dec 23 16:52:23 2024 (684048) Traceback (most recent call last):
> > File
> >
> "/opt/mailman/venv/lib/python3.12/site-packages/mailman_hyperkitty/__init__.py",
> > line 158, in _archive_message
> > url = self._send_message(mlist, msg)
> > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> > File
> >
> "/opt/mailman/venv/lib/python3.12/site-packages/mailman_hyperkitty/__init__.py",
> > line 228, in _send_message
> > raise ValueError(result.text)
> > ValueError:
> > <!doctype html>
> > <html lang="en">
> > <head>
> > <title>Bad Request (400)</title>
> > </head>
> > <body>
> > <h1>Bad Request (400)</h1><p></p>
> > </body>
> > </html>
>
> mailman_hyperkitty is sending the message to hyperkitty to be archived
> and receiving the 400 response. Presumably it has previously requested
> and received the list_url and the permalink to put in the message
> headers. This can be confirmed by the presence of List-Archive: and
> Archived-At: headers with values in the messages from the list. So the
> configuration seems to be correct to allow mailman_hyperkitty to
> communicate with hyperkitty. It is not clear why, but this code
>
> https://gitlab.com/mailman/hyperkitty/-/blob/master/hyperkitty/views/mailma…
> is getting the ValueError. That can come from one of three places in
>
> https://gitlab.com/mailman/hyperkitty/-/blob/master/hyperkitty/lib/incoming….
>
> The lack of a Message-ID: is not it because Mailman's lmtp runner will
> add one. Most likely it is the non-ascii sender address from
>
> https://gitlab.com/mailman/hyperkitty/-/blob/master/hyperkitty/lib/incoming…
>
> What do you get from
> ```
> mailman qfile var/archives/hyperkitty/spool/xxx.pck
> ```
> where xxx.pck is one of the (hopefully smaller) files. In particular,
> what is the From: header in that?
>
> --
> Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
> San Francisco Bay Area, California better use your sense - B. Dylan
>
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> Archived at:
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
>
> This message sent to paul.m.robey(a)gmail.com
>
3 months, 4 weeks

[MM3-users] Re: Archive Policy not reflecting in Hyperkitty
by Nathan Dixon
The change to the archiving policy aren't reflected in Hyperkitty after
many days for all the lists.
The only error that I am seeing in the /web/mailmanweb.log is:
INFO 2019-05-02 14:16:55,062 38 hyperkitty.tasks AsyncTask task "<function
unlock_and_call at 0x7f5d8851f048>" with args "(<function
update_from_mailman at 0x7f5d88544a60>, 'task:status:%s:%s', '<list
address>')" and kwargs "{}" finished with errors.
I'm not sure if that could be related? (I have changed the actual list
address to <list address> for security reasons)
Thank you
On Sat, 4 May 2019 at 16:24, Abhilash Raj <maxking(a)asynchronous.in> wrote:
> On Fri, May 3, 2019, at 8:38 AM, Nathan Dixon wrote:
> > So the issue I am seeing is that when I set a lists archive policy to
> > prviate, it isn't reflecting that in Hyperkitty.
> >
> > I am running the docker installation of Mailman, postorius and
> hyperkitty.
> > So I go into the docker instance of mailman-core and run this:
> >
> > python3 manage.py shell from hyperkitty.models.mailinglist import
> > MailingList MailingList.objects.all().values_list('name',
> 'archive_policy')
> >
> > And all my lists are showing '2', regardless of how I set the mailing
> list
> > archive policy.
> >
> > This might be a duplicate of
> >
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/thread/…
> >
> > Am I missing something in my install? Or is this a bug?
>
> It can take upto an hour for this change to reflect in Hyperkitty. Did you
> wait
> for that long?
>
> This happens because Hyperkitty stores it's own data, and queries Mailman
> Core periodically to fetch updates every hour. In future, we might be able
> to
> do this in more realtime fashion by using an event based pub/sub model.
> But,
> we are not there yet.
>
>
> >
> > Many thanks for your attention,
> >
> > --
> >
> > *Nathan Dixon* MEng
> > Senior Software Architect
> > m: +44 (0)7402 690311
> >
> > t: +44 (0)20 81231252
> > e: nathan.dixon(a)evadon.com
> > w: www.evadon.com
> >
> > This e-mail and any attachments are confidential and may be protected by
> > legal, professional or other privilege. If you are not the intended
> > recipient you should not store it, copy it, re-transmit it, use it or
> > disclose its contents, but should return it to the sender immediately and
> > delete your copy from your system. The views expressed are those of the
> > sender and not necessarily those of Evadon. Please note that whilst we
> scan
> > all e-mails for viruses we cannot guarantee that any e-mail is
> virus-free.
> > Please be advised that we expressly reserve the right to monitor email
> > content for the purposes of ensuring compliance with legal requirements
> and
> > company policies and your sending to, or receiving from, us of any email
> > constitutes your agreement to these terms.
> >
> >
> > Evadon Dynamics Limited, registered in England No. 09494097. Registered
> > Office: Electric Works, Sheffield Digital Campus, 3 Concourse Way,
> Sheffield,
> > S1 2BJ
> > _______________________________________________
> > Mailman-users mailing list -- mailman-users(a)mailman3.org
> > To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> > https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> >
>
> --
> thanks,
> Abhilash Raj (maxking)
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>
--
*Nathan Dixon* MEng
Senior Software Architect
m: +44 (0)7402 690311
t: +44 (0)20 81231252
e: nathan.dixon(a)evadon.com
w: www.evadon.com
This e-mail and any attachments are confidential and may be protected by
legal, professional or other privilege. If you are not the intended
recipient you should not store it, copy it, re-transmit it, use it or
disclose its contents, but should return it to the sender immediately and
delete your copy from your system. The views expressed are those of the
sender and not necessarily those of Evadon. Please note that whilst we scan
all e-mails for viruses we cannot guarantee that any e-mail is virus-free.
Please be advised that we expressly reserve the right to monitor email
content for the purposes of ensuring compliance with legal requirements and
company policies and your sending to, or receiving from, us of any email
constitutes your agreement to these terms.
Evadon Dynamics Limited, registered in England No. 09494097. Registered
Office: Electric Works, Sheffield Digital Campus, 3 Concourse Way, Sheffield,
S1 2BJ
5 years, 11 months

[MM3-users] Re: Mailman, etc. upgrade woes and persistent bugs
by Brian Carpenter
On 2/13/21 11:39 AM, Stephen J. Turnbull wrote:
> Brian Carpenter writes:
>
> > I think treating all disabled options the same is short-sighted. They
> > are all not the same.
> >
> > -- Some list members will disable their subscription for good reasons
> > and will be really upset if a List Owner renables it through ignorance.
> > So it is important to know a disable member is done by the member
> > itself.
>
> This is true in principle, but (1) I don't think that the user cares;
> if they're looking at it, they know whether they want enabled or
> disabled, how it got that way doesn't matter to them, and (2) I can't
> see why an admin would disable delivery except on request from a user,
> so I can't see why an admin would reenable except on request from a
> user. The only case I can see would be a mass reenabling, but that's
> not going to happen in the future (I hope).
>
> > -- Some mailing lists will have multiple list owners managing them. So
> > it is important for one List Owner to know when a subscription has been
> > disabled by the actions of another List Owner.
>
> I don't see why, see above.
>
> > -- A List Owner may not know that some of his List Members are bouncing
> > messages for various reasons, so reviewing their Membership roster, they
> > see that they have some list members disabled due to bounces and can
> > then address those particular problematic members.
>
> This query is an important use case. But it's the only one, I think,
> unless you really have List Owners arbitrarily disabling members'
> subscriptions. And if you're thinking about reenabling from that
> page, I think you need a lot more information. For example, if the
> admin disabled, you need to know if that was a user request or
> something else (what?). If bounce disabled, you want to know what the
> bounce was ("no such mailbox"? probably not a good candidate for
> reenabling), and when (5 minutes ago? ditto). I guess you could just
> reenable and see what happens, but that could be risky (eg, sending
> mail to non-existent users is frowned upon by some providers).
>
> > @Abhilash, I highly recommend that you contact me off list about getting
> > access to Affinity so you can see what I am talking about. I would love
> > to show you what I have done for Member Management. I offered the same
> > to Steve but he never was interested in taking a look.
>
> It's not that I lack interest, it's that life got in the way.
> Unfortunately, until I get enough time (man-weeks, I've never worked
> on Postorius and very little in Django) to work on Postorius, or
> somebody else starts to do it, a look at Affinity is low priority.
> Also, it's pretty clear that a quick look isn't going to be very
> helpful. The Mailman developers know what Mailman 2 looks like. I
> think the benefits to a hands-on admin are pretty obvious vs the
> current Postorius, as are Web 2.0 improvments like sorting on the
> options. The more subtle improvements you've made are going to
> require a guided tour and/or some study to identify and understand.
>
> Aside: I have to assume that Postorius is aimed at the kind of
> subscriber that most of us are, and that list administration was
> something of an afterthought, and assumed to be mostly hands-off.
> That's the only rationale I can come up with for the design where
> list admins need to go to the individual pages to see user options --
> it was easier to reuse the user option page and just give the admin
> permission to access and change it, than to provide a (sortable) list
> with user details.
>
> Steve
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
I was going to respond in detail but it will be an effort in futility.
My opinions are DEFINITELY not valued by you and that is your right as
it my right to leave Postorius behind, permanently. Moving to my own
interface was one of the best decisions I made and that decision
continues to be shown to be a great one when I read threads like this.
--
Brian Carpenter
Harmonylists.com
Emwd.com
4 years, 2 months

[MM3-users] Re: Installing mailman 3
by Rafael Mora
Thanks for the settings and suggestions. I want just to try it, if it
doesn't work out I will move to mailchimp.
I really appreciate your willingness to help me.
Do you know another program for mailing mailchimp/mailman like?
Thanks
El sáb., 22 jul. 2017 a las 10:00, tlhackque via Mailman-users (<
mailman-users(a)mailman3.org>) escribió:
> On 22-Jul-17 09:30, Rafael Mora wrote:
> > What would be the config for a simple one way announcement type list ????
> >
> Here is a possible list configuration (this doesn't go in any particular
> file; it's a dump from the REST API, but you should be able to find the
> corresponding settings in the GUI):
> |
> ||# Phantom list 41||
> ||# ---------------||
> ||acceptable_aliases = []||
> ||admin_immed_notify = true||
> ||admin_notify_mchanges = true||
> ||administrivia = true||
> ||advertised = true||
> ||allow_list_posts = false||
> ||anonymous_list = false||
> ||archive_policy = "public"||
> ||autorespond_owner = "none"||
> ||autorespond_postings = "respond_and_discard"||
> ||autorespond_requests = "none"||
> ||autoresponse_grace_period = "45d"||
> ||autoresponse_owner_text = ""||
> ||autoresponse_postings_text = "This is an announce-only list"||
> ||autoresponse_request_text = ""||
> ||bounces_address = "phantomtbonesq-list-bounces(a)example.net"||
> ||collapse_alternatives = false||
> ||convert_html_to_plaintext = false||
> ||created_at = "2017-06-28T00:33:14.031754"||
> ||default_member_action = "discard"||
> ||default_nonmember_action = "discard"||
> ||description = "well, you see it's like this"||
> ||digest_last_sent_at = null||
> ||digest_send_periodic = true||
> ||digest_size_threshold = 5000||
> ||digest_volume_frequency = "weekly"||
> ||digests_enabled = true||
> ||display_name = "Phantom list 41"||
> ||dmarc_mitigate_action = "no_mitigation"||
> ||dmarc_mitigate_unconditionally = false||
> ||dmarc_moderation_notice = ""||
> ||dmarc_wrapped_message_text = ""||
> ||filter_content = false||
> ||first_strip_reply_to = false||
> ||fqdn_listname = "phantomtbonesq-list(a)example.net"||
> ||http_etag = '"ad12b8647391aa81563c67a164c57156e10efca0"'||
> ||include_rfc2369_headers = true||
> ||info = " The wind in the willows||
> ||talked in the pillows||||"
> ||join_address = "phantomtbonesq-list-join(a)example.net"||
> ||last_post_at = null||
> ||leave_address = "phantomtbonesq-list-leave(a)example.net"||
> ||list_name = "phantomtbonesq-list"||
> ||mail_host = "example.net"||
> ||moderator_password = null||
> ||next_digest_number = 1||
> ||no_reply_address = "noreply(a)example.net"||
> ||owner_address = "phantomtbonesq-list-owner(a)example.net"||
> ||post_id = 1||
> ||posting_address = "phantomtbonesq-list(a)example.net"||
> ||posting_pipeline = "default-posting-pipeline"||
> ||reply_goes_to_list = "no_munging"||
> ||reply_to_address = ""||
> ||request_address = "phantomtbonesq-list-request(a)example.net"||
> ||send_welcome_message = false||
> ||subject_prefix = ""||
> ||subscription_policy = "confirm"||
> ||volume = 1|
>
> The key items are:
>
> allow_list_posts = false
> autorespond_postings = "respond_and_discard"
> autorespond_requests = "none"
> autoresponse_postings_text = "This is an announce-only list"
> default_member_action = "discard"
> default_nonmember_action = "discard"
>
> You don't need to worry about DMARC, since you're the only poster.
>
> Deciding about VERP (bounce verification) will require some thought -
> it's a tradeoff of cost vs. accuracy. It's discussed in the documentation.
>
> In addition, you need to define a subscriber with "moderation_action =
> accept", from which you post to the list.
>
> This is from a Mailman 3 application that's still being developed, so it
> may not be fully debugged.
>
> FWIW, your difficulties getting MM3 working are not unique. I have had
> similar problems - and I'm not done yet. I've run Mailman 2.1 lists for
> many years, but 3.1 is a lot more complex to set up. In fact, pretty
> much everyone who has tried to use MM3 has had similar problems.
>
> MM3 is in early stages of adoption & development. You should expect the
> challenges of any early adopter of complex software. There will
> undoubtedly be bugs - some serious, some not so. But if you continue to
> provide feedback, there's hope that the developers will improve it.
>
> On the other hand, if you want a more stable platform and are willing to
> settle for fewer features, you might consider using MM2.1. It's widely
> deployed and quite stable. Your distribution will have it packaged &
> easy to set up. You can always migrate when 3.1 is more mature.
>
> Finally, as others have noted, Mailman is fine for distributing moderate
> volumes of e-mail. For high volume, you need to tune your mailserver
> and platform - this may not be cost effective in terms of your time and
> investment in bandwidth and hardware. Also, Mailman doesn't provide the
> "services" that many people expect from mass mailing services such as
> MailChimp - e.g. beacons indicating how many people open your mail,
> correlation with purchases, tests to see how it fares with spam filters,
> compatibility tests with common e-mail clients, and so on.
>
> If an open loop system meets your needs, Mailman can work well. If you
> need feedback, it may not meet your needs.
>
>
> _______________________________________________
> Mailman-users mailing list
> mailman-users(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>
--
Atentamente / Best Regards
Ing. Rafael Mora
7 years, 9 months

[MM3-users] Re: Possible SQLAlchemy 2.0.23 incompatibility (requires investigation)
by Jered Floyd
Doing some investigation, this is due to this change in 2.0.23:
https://github.com/sqlalchemy/sqlalchemy/issues/10492
Which changes to using an ping() interface without an argument, which likely does not exist in the pymysql 0.10.1 that is part of RHEL 8.
So, generally not a Mailman issue.
--Jered
----- On Nov 15, 2023, at 4:13 PM, Jered Floyd jered(a)convivian.com wrote:
> 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'
>
>
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> Archived at:
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
>
> This message sent to jered(a)convivian.com
1 year, 5 months

[MM3-users] Re: ModuleNotFoundError: No module named 'settings'
by Abhilash Raj
> On May 10, 2021, at 8:11 PM, Stephen J. Turnbull <turnbull.stephen.fw(a)u.tsukuba.ac.jp> wrote:
>
> Michela via Mailman-users writes:
>
>> The log file, /opt/mailman/web/logs/uwsgi-error.log, contains the
>> following stack trace, however. Note the bit toward the bottom:
>> "ModuleNotFoundError: No module named 'settings'"
>
> Given that you can run the applications from the command line as
> systemd services, this almost certainly localizes the problem to uwsgi
> itself. Note that uwsgi has been problematic lately. I don't recall
> the details. I think there's a preference for gunicorn as the SGI
> provider among the Mailman 3 developers (and it's what core uses
> internally to provide the REST interface) so uwsgi may not get "beta"
> testing in production from us.
>
> Specifically, is this line
>
> pythonpath = /etc/mailman3/
>
> present, correct, and not commented out in uswgi.ini?
>
>> My configuration files outside of the Mailman virtual environment
>> are in /etc/mailman/:
>
> Is it possible you have /etc/mailman/ instead of /etc/mailman3/ in
> uwsgi.ini as in the above quote? (I am pretty sure that's a typo in
> the post, but gotta check everything.) On the other hand, maybe we
> did a typo, and there should be no trailing slash on /etc/mailman3 in
> this statement. (Usually trailing slashes aren't a problem,
> applications mostly ignore them, but there is no trailing slash on any
> directory in my sys.path, so it's worth a try.)
Yeah, it would be good to share the full contents of /etc/mailman3/uwsgi.ini,
for some reason what is listed in the docs[1] is working on one of my test
servers. Although, given that there are more than one reports of the same
error, it is possible something is wrong or missing in the docs.
The trailing slashes in this case isn’t really a problem I think.
If you can share some initial parts of your uwsgi-error.log part where uwsgi
initializes that would be useful too. I am looking something that looks like
this:
```
*** Starting uWSGI 2.0.19.1 (64bit) on [Thu Jan 21 08:49:16 2021] ***
compiled with version: 9.3.0 on 21 January 2021 08:40:15
os: Linux-5.4.0-1036-azure #38-Ubuntu SMP Wed Jan 6 18:26:25 UTC 2021
nodename: mailman
machine: x86_64
clock source: unix
detected number of CPU cores: 2
current working directory: /opt/mailman3
detected binary path: /opt/mailman3/venv/bin/uwsgi
!!! no internal routing support, rebuild with pcre support !!!
your processes number limit is 15571
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 127.0.0.1:8000 fd 8
Python version: 3.8.5 (default, Jul 28 2020, 12:59:40) [GCC 9.3.0]
PEP 405 virtualenv detected: /opt/mailman3/venv/
Set PythonHome to /opt/mailman3/venv/
Python main interpreter initialized at 0x56002ba3aed0
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 166688 bytes (162 KB) for 2 cores
*** Operational MODE: threaded ***
added /etc/mailman3/ to pythonpath.
WSGI app 0 (mountpoint='') ready in 1 seconds on interpreter 0x56002ba3aed0 pid: 715893 (default app)
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 715893)
spawned uWSGI worker 1 (pid: 715897, cores: 2)
[uwsgi-daemons] spawning "mailman-web qcluster" (uid: 1001 gid: 1001)
08:49:18 [Q] INFO Q Cluster december-nebraska-helium-montana starting.
08:49:18 [Q] INFO Process-1:1 ready for work at 715904
08:49:18 [Q] INFO Process-1:2 ready for work at 715905
```
Please ignore that the paths in my logs are `/opt/mailman3/*`, I have
multiple installations on my test server, the docs say it should be `/opt/mailman/*`. It
doesn’t really matter as long as they are consistent in all places.
Also, what happens if you run the command "/opt/mailman/venv/bin/mailman-web qcluster” as
a “mailman” user on your machine? Do you see the traceback like above or does it start a
process like this?
```
mailman@mailman:~$ /opt/mailman3/venv/bin/mailman-web qcluster
05:05:29 [Q] INFO Q Cluster april-east-hot-potato starting.
05:05:29 [Q] INFO Process-1:1 ready for work at 3364005
05:05:29 [Q] INFO Process-1:2 ready for work at 3364006
05:05:29 [Q] INFO Process-1 guarding cluster april-east-hot-potato
05:05:29 [Q] INFO Process-1:3 monitoring at 3364007
05:05:29 [Q] INFO Q Cluster april-east-hot-potato running.
05:05:29 [Q] INFO Process-1:4 pushing tasks at 3364008
```
[1]: https://docs.mailman3.org/en/latest/install/virtualenv.html#setting-up-a-ws…
>
> If it's none of the above, I'm out of ideas. Maybe Mark or Abhilash
> has more experience.
>
> Steve
>
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
--
thanks,
Abhilash Raj (maxking)
3 years, 11 months

[MM3-users] Re: Core, Hyperkitty and Postorius releases
by Odhiambo Washington
On Fri, May 14, 2021 at 2:41 PM Odhiambo Washington <odhiambo(a)gmail.com>
wrote:
>
>
> On Wed, Feb 3, 2021 at 5:00 AM Abhilash Raj <maxking(a)asynchronous.in>
> wrote:
>
>> Hey Everyone,
>>
>> I am pleased to announce new stable releases for Mailman Core, Postorius,
>> Hyperkitty.
>>
>> These include both new features and bug fixes. Complete change log for
>> each components:
>>
>> Mailman Core 3.3.3:
>> https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/docs/NEWS.…
>> Postorius 1.3.4
>> https://docs.mailman3.org/projects/postorius/en/latest/news.html
>> Hyperkitty 1.3.4 :
>> https://docs.mailman3.org/projects/hyperkitty/en/latest/news.html
>>
>> Minimum supported Python version is 3.6.
>>
>> You can install them using:
>>
>> $ pip install --upgrade postorius hyperkitty mailman
>>
>
> I don't know if this is necessary, but I used to do it with another update
> method documented by Mark.
> After running the upgrade script (from that method) I would run these too:
>
> /opt/mailman/mm/bin/django-admin collectstatic --clear --noinput
> --verbosity 0
> /opt/mailman/mm/bin/django-admin compress
> /opt/mailman/mm/bin/django-admin compilemessages
> /opt/mailman/mm/bin/django-admin migrate
>
> Now I did run them and got an error and I wonder if I should be worried:
>
>
> (venv) [mailman3@gw ~]$ /opt/mailman/mm/bin/django-admin compress
> CommandError: *An error occurred during rendering
> /opt/mailman/mm/venv/lib/python3.7/site-packages/django_allauth-0.42.0-py3.7.egg/allauth/templates/account/password_reset.html:
> /bin/sh: sass: Permission denied*
> Compressing... (venv) [mailman3@gw ~]$
>
It actually turns out to be a show-stopper:
ERROR 2021-05-14 11:48:12,691 7086 django.request Internal Server Error:
/mm3/accounts/login/
Traceback (most recent call last):
File
"/opt/mailman/mm/venv/lib/python3.7/site-packages/Django-3.0.8-py3.7.egg/django/core/handlers/exception.py",
line 34, in inner
response = get_response(request)
File
"/opt/mailman/mm/venv/lib/python3.7/site-packages/Django-3.0.8-py3.7.egg/django/core/handlers/base.py",
line 145, in _get_response
response = self.process_exception_by_middleware(e, request)
File
"/opt/mailman/mm/venv/lib/python3.7/site-packages/Django-3.0.8-py3.7.egg/django/core/handlers/base.py",
line 143, in _get_response
response = response.render()
File
"/opt/mailman/mm/venv/lib/python3.7/site-packages/Django-3.0.8-py3.7.egg/django/template/response.py",
line 105, in render
self.content = self.rendered_content
File
"/opt/mailman/mm/venv/lib/python3.7/site-packages/Django-3.0.8-py3.7.egg/django/template/response.py",
line 83, in rendered_content
return template.render(context, self._request)
File
"/opt/mailman/mm/venv/lib/python3.7/site-packages/Django-3.0.8-py3.7.egg/django/template/backends/django.py",
line 61, in render
return self.template.render(context)
File
"/opt/mailman/mm/venv/lib/python3.7/site-packages/Django-3.0.8-py3.7.egg/django/template/base.py",
line 171, in render
return self._render(context)
File
"/opt/mailman/mm/venv/lib/python3.7/site-packages/Django-3.0.8-py3.7.egg/django/template/base.py",
line 163, in _render
return self.nodelist.render(context)
File
"/opt/mailman/mm/venv/lib/python3.7/site-packages/Django-3.0.8-py3.7.egg/django/template/base.py",
line 936, in render
bit = node.render_annotated(context)
File
"/opt/mailman/mm/venv/lib/python3.7/site-packages/Django-3.0.8-py3.7.egg/django/template/base.py",
line 903, in render_annotated
return self.render(context)
File
"/opt/mailman/mm/venv/lib/python3.7/site-packages/Django-3.0.8-py3.7.egg/django/template/loader_tags.py",
line 150, in render
return compiled_parent._render(context)
File
"/opt/mailman/mm/venv/lib/python3.7/site-packages/Django-3.0.8-py3.7.egg/django/template/base.py",
line 163, in _render
return self.nodelist.render(context)
File
"/opt/mailman/mm/venv/lib/python3.7/site-packages/Django-3.0.8-py3.7.egg/django/template/base.py",
line 936, in render
bit = node.render_annotated(context)
File
"/opt/mailman/mm/venv/lib/python3.7/site-packages/Django-3.0.8-py3.7.egg/django/template/base.py",
line 903, in render_annotated
return self.render(context)
File
"/opt/mailman/mm/venv/lib/python3.7/site-packages/Django-3.0.8-py3.7.egg/django/template/loader_tags.py",
line 150, in render
return compiled_parent._render(context)
File
"/opt/mailman/mm/venv/lib/python3.7/site-packages/Django-3.0.8-py3.7.egg/django/template/base.py",
line 163, in _render
return self.nodelist.render(context)
File
"/opt/mailman/mm/venv/lib/python3.7/site-packages/Django-3.0.8-py3.7.egg/django/template/base.py",
line 936, in render
bit = node.render_annotated(context)
File
"/opt/mailman/mm/venv/lib/python3.7/site-packages/Django-3.0.8-py3.7.egg/django/template/base.py",
line 903, in render_annotated
return self.render(context)
File
"/opt/mailman/mm/venv/lib/python3.7/site-packages/django_compressor-2.4-py3.7.egg/compressor/templatetags/compress.py",
line 143, in render
return self.render_compressed(context, self.kind, self.mode,
forced=forced)
File
"/opt/mailman/mm/venv/lib/python3.7/site-packages/django_compressor-2.4-py3.7.egg/compressor/templatetags/compress.py",
line 97, in render_compressed
return self.render_offline(context)
File
"/opt/mailman/mm/venv/lib/python3.7/site-packages/django_compressor-2.4-py3.7.egg/compressor/templatetags/compress.py",
line 82, in render_offline
'is the original content:\n\n%s' % (key, original_content))
compressor.exceptions.OfflineGenerationError: You have offline compression
enabled but key
"fa788b08b65fd318d68cfc5afebc18acd3exxxxxx54d863572ad1754f368" is missing
from offline manifest. You may need to run "python manage.py compress".
Here is the original content:
<link rel="stylesheet"
href="/static/hyperkitty/libs/fonts/icomoon/icomoon.css" type="text/css"
media="all" />
<link rel="stylesheet"
href="/static/hyperkitty/libs/fonts/droid/droid.css" type="text/css"
media="all" />
<link rel="stylesheet" href="/static/django-mailman3/css/main.css"
/>
<link rel="stylesheet" type="text/x-scss" media="all"
href="/static/hyperkitty/sass/hyperkitty.scss" />
--
Best regards,
Odhiambo WASHINGTON,
Nairobi,KE
+254 7 3200 0004/+254 7 2274 3223
"Oh, the cruft.", egrep -v "^$|^.*#" :-)
3 years, 11 months

[MM3-users] Trouble in Debian11 after import mailman2 archive
by qro@xs4all.nl
Hi
I am struggling with Mainman3 to get it running on Debian11
On a clean VPS I have up and running Apache, mysql and postfix
Also the installation mailman3 went fine for the mailman3-full package
Then I setup mailman3-web via dpkg-reconfigure mailman3-web, modify in
mailman-hyperkitty.cfg MAILMAN_ARCHIVER_KEY. In mailman.config add the
[archiver.hyperkitty] things
At this point I made a clone for the VPS.
On clone 1 I import a mailman2 list:
mailman create test(a)xxx.nl
mailman import21 test@xxx /peter/mailman/lists/test/config.pck
/usr/share/mailman3-web/manage.py hyperkitty_import -l test(a)xxx.nl
/peter/mailman/archives/private/test.mbox/test.mbox
/usr/share/mailman3-web/manage.py update_index
So far so good.
I can access the list and its config via the web page,see 1 subscriber
(me :-) and can walk though the archive.
But when I send an email to the list, its not resend or archived
A snip from log files:
/var/log/mail.log
May 22 20:03:36 server postfix/smtpd[1614]: connect from
ewsoutbound.kpnmail.nl[195.121.94.170]
May 22 20:03:36 server postfix/smtpd[1614]: 8ECFF80BF9:
client=ewsoutbound.kpnmail.nl[195.121.94.170]
May 22 20:03:36 server postfix/cleanup[1616]: 8ECFF80BF9:
message-id=<d89bf2f7-1519-9e0a-eb41-9211ff6f6a24(a)xs4all.nl>
May 22 20:03:36 server postfix/qmgr[1510]: 8ECFF80BF9:
from=<peter(a)xxxl.nl>, size=23317, nrcpt=1 (queue active)
May 22 20:03:36 server postfix/smtpd[1614]: disconnect from
ewsoutbound.kpnmail.nl[195.121.94.170] ehlo=2 starttls=1 mail=1 rcpt=1
data=1 quit=1 commands=7
May 22 20:03:36 server postfix/lmtp[1630]: 8ECFF80BF9:
to=<test(a)xxx.net>, relay=127.0.0.1[127.0.0.1]:8024, delay=0.23,
delays=0.15/0.01/0/0.07, dsn=2.0.0, status=sent (250 Ok)
May 22 20:03:36 server postfix/qmgr[1510]: 8ECFF80BF9: removed
/var/log/mailman3/smtp.log
May 22 20:03:36 2022 (1359) Available AUTH mechanisms: LOGIN(builtin)
PLAIN(builtin)
May 22 20:03:36 2022 (1359) Peer: ('127.0.0.1', 46148)
May 22 20:03:36 2022 (1359) ('127.0.0.1', 46148) handling connection
May 22 20:03:36 2022 (1359) ('127.0.0.1', 46148) Data: b'LHLO
server.xxx.net'
May 22 20:03:36 2022 (1359) ('127.0.0.1', 46148) Data: b'MAIL
FROM:<peter(a)xxx.nl>'
May 22 20:03:36 2022 (1359) ('127.0.0.1', 46148) sender: peter(a)xxx.nl
May 22 20:03:36 2022 (1359) ('127.0.0.1', 46148) Data: b'RCPT
TO:<test(a)xxx.net>'
May 22 20:03:36 2022 (1359) ('127.0.0.1', 46148) recip: test(a)xxx.net
May 22 20:03:36 2022 (1359) ('127.0.0.1', 46148) Data: b'DATA'
May 22 20:03:36 2022 (1359) ('127.0.0.1', 46148) Data: b'QUIT'
May 22 20:03:36 2022 (1359) ('127.0.0.1', 46148) connection lost
May 22 20:03:36 2022 (1359) Connection lost during _handle_client()
Second attempt.
There are no changes in Postfix or Mailman3!
On clone 2 I did create a new list via the webpage/mailman3
This list is working fine. Does resend the message and add it tot the
archive.
The difference in the log between an imported list an new created is
below the ----------- line
/var/log/mail.log
May 25 08:22:50 server postfix/smtpd[1430]: connect from
ewsoutbound.kpnmail.nl[195.121.94.168]
May 25 08:22:50 server postfix/smtpd[1430]: 81A0FA0091:
client=ewsoutbound.kpnmail.nl[195.121.94.168]
May 25 08:22:50 server postfix/cleanup[1434]: 81A0FA0091:
message-id=<7c7b1770-db6d-9fc8-5e84-d09315d31124(a)xs4all.nl>
May 25 08:22:50 server postfix/qmgr[1355]: 81A0FA0091:
from=<peter(a)xxx.nl>, size=6029, nrcpt=1 (queue active)
May 25 08:22:50 server postfix/smtpd[1430]: disconnect from
ewsoutbound.kpnmail.nl[195.121.94.168] ehlo=2 starttls=1 mail=1 rcpt=1
data=1 quit=1 commands=7
May 25 08:22:50 server postfix/lmtp[1435]: 81A0FA0091:
to=<test(a)xxx.net>, relay=127.0.0.1[127.0.0.1]:8024, delay=0.18,
delays=0.06/0.01/0/0.11, dsn=2.0.0, status=sent (250 Ok)
May 25 08:22:50 server postfix/qmgr[1355]: 81A0FA0091: removed
-------------
May 25 08:22:52 server postfix/smtpd[1430]: connect from
localhost[127.0.0.1]
May 25 08:22:52 server postfix/smtpd[1430]: ACE58A0091:
client=localhost[127.0.0.1]
May 25 08:22:52 server postfix/cleanup[1434]: ACE58A0091:
message-id=<7c7b1770-db6d-9fc8-5e84-d09315d31124(a)xs4all.nl>
May 25 08:22:52 server postfix/qmgr[1355]: ACE58A0091:
from=<test-bounces(a)xxx.net>, size=7804, nrcpt=1 (queue active)
May 25 08:22:52 server postfix/smtpd[1430]: disconnect from
localhost[127.0.0.1] ehlo=1 mail=1 rcpt=1 data=1 quit=1 commands=5
May 25 08:22:53 server postfix/smtp[1437]: ACE58A0091:
to=<peter(a)xxx.nl>, relay=mx.kpnmail.nl[195.121.65.158]:25, delay=0.33,
delays=0/0.01/0.2/0.12, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as
de93fca3-dc03-11ec-bee3-005056998415)
May 25 08:22:53 server postfix/qmgr[1355]: ACE58A0091: removed
/var/log/mailman3/smtp.log
May 25 08:22:50 2022 (1361) Available AUTH mechanisms: LOGIN(builtin)
PLAIN(builtin)
May 25 08:22:50 2022 (1361) Peer: ('127.0.0.1', 54298)
May 25 08:22:50 2022 (1361) ('127.0.0.1', 54298) handling connection
May 25 08:22:50 2022 (1361) ('127.0.0.1', 54298) Data: b'LHLO
server.xxx.net'
May 25 08:22:50 2022 (1361) ('127.0.0.1', 54298) Data: b'MAIL
FROM:<peter(a)xxx.nl>'
May 25 08:22:50 2022 (1361) ('127.0.0.1', 54298) sender: peter(a)xxx.nl
May 25 08:22:50 2022 (1361) ('127.0.0.1', 54298) Data: b'RCPT
TO:<test(a)xxx.net>'
May 25 08:22:50 2022 (1361) ('127.0.0.1', 54298) recip: test(a)xxx.net
May 25 08:22:50 2022 (1361) ('127.0.0.1', 54298) Data: b'DATA'
May 25 08:22:50 2022 (1361) ('127.0.0.1', 54298) Data: b'QUIT'
May 25 08:22:50 2022 (1361) ('127.0.0.1', 54298) connection lost
May 25 08:22:50 2022 (1361) Connection lost during _handle_client()
-------------------
May 25 08:22:52 2022 (1363)
<7c7b1770-db6d-9fc8-5e84-d09315d31124(a)xs4all.nl> smtp to test(a)xxx.net
for 1 recips, completed in 0.0590972900390625 seconds
May 25 08:22:52 2022 (1363)
<7c7b1770-db6d-9fc8-5e84-d09315d31124(a)xs4all.nl> post to test(a)xxx.net
from peter(a)xxx.nl, 6199 bytes
Question:
Where do I have to look/make changes so I can import the old archive and
can send email to it?
Greetings
Peter
2 years, 10 months

[MM3-users] Docker Mailman3 installation frustration
by ccsmith@cetsi.com
I've been working on installing Mailman3 for several weeks now, with limited success. I have tried various installation methods following instructions on numerous different web pages. My experience has been that the instructions are often conflicting and never complete.
My best success has been with the Docker version, so that's what I'm going to concentrate on here.
I'm running Ubuntu 16.04 (under Citrix XenServer), with Apache httpd and postfix.
Following the instructions on https://asynchronous.in/docker-mailman/, I did the following:
* created the directories "/opt/mailman/core" and "/opt/mailman/web",
* created "/opt/mailman/core/mailman-extra.cfg" and inserted the suggested [mta] directives,
* inserted the "transport_maps", "local-recipient_maps", and "relay_domains" entries in the /etc/postfix/main.cf file,
* created the necessary apache config files,
* cloned "https://github.com/maxking/docker-mailman",
* ran "docker-compose up -d"
At this point, I am able to connect with Postorius. All of the text and icons show up properly; all is well. It tells me (correctly) that "There are currently no mailing lists."
When I click on the "Login" link at the top right, the "Sign In" page displays correctly. (Aside: Why do so many apps/sites have difficulty with choosing between "login" and "sign in" and, in fact, use both terms? It can really be off-putting to non-tech users... and me.) If I input an incorrect login, I receive (correctly) the message "The username and/or password you specified are not correct." However, if I input the correct sign-in, I receive: "Server Error (500)".
Running "sudo docker exec -it mailman-web cat ../mailman-web-data/logs/mailmanweb.log" shows me:
ERROR 2017-07-12 20:34:25,073 25 django.request Internal Server Error: /accounts/login/
Traceback (most recent call last):
File "/usr/local/lib/python2.7/site-packages/django/core/handlers/exception.py", line 39, in inner
response = get_response(request)
... more stuff ...
File "/usr/local/lib/python2.7/smtplib.py", line 747, in sendmail
raise SMTPRecipientsRefused(senderrs)
SMTPRecipientsRefused: {u'pacetechadmin(a)cetsi.com': (451, '4.3.0 <pacetechadmin(a)cetsi.com>: Temporary lookup failure')}
On the Docker host (ubuntuServer2), /var/log/mail.log shows:
Jul 12 13:48:53 ubuntuServer2 postfix/smtpd[19931]: error: open /opt/mailman/core/var/data/postfix_domains: No such file or directory
Jul 12 13:48:53 ubuntuServer2 postfix/smtpd[19931]: error: open /opt/mailman/core/var/data/postfix_lmtp: No such file or directory
Jul 12 13:48:53 ubuntuServer2 postfix/smtpd[19931]: connect from unknown[172.19.199.3]
Jul 12 13:48:53 ubuntuServer2 postfix/trivial-rewrite[19843]: warning: regexp:/opt/mailman/core/var/data/postfix_domains is unavailable. open /opt/mailman/core/var/data/postfix_domains: No such file or directory
Jul 12 13:48:53 ubuntuServer2 postfix/trivial-rewrite[19843]: warning: relay_domains: regexp:/opt/mailman/core/var/data/postfix_domains: table lookup problem
Jul 12 13:48:53 ubuntuServer2 postfix/trivial-rewrite[19843]: warning: relay_domains lookup failure
Jul 12 13:48:53 ubuntuServer2 postfix/trivial-rewrite[19843]: warning: regexp:/opt/mailman/core/var/data/postfix_domains is unavailable. open /opt/mailman/core/var/data/postfix_domains: No such file or directory
Jul 12 13:48:53 ubuntuServer2 postfix/trivial-rewrite[19843]: warning: relay_domains: regexp:/opt/mailman/core/var/data/postfix_domains: table lookup problem
Jul 12 13:48:53 ubuntuServer2 postfix/trivial-rewrite[19843]: warning: relay_domains lookup failure
Jul 12 13:48:53 ubuntuServer2 postfix/smtpd[19931]: NOQUEUE: reject: RCPT from unknown[172.19.199.3]: 451 4.3.0 <pacetechadmin(a)cetsi.com>: Temporary lookup failure; from=<postorius(a)localhost.local> to=<pacetechadmin(a)cetsi.com> proto=ESMTP helo=<mailman-web>
Jul 12 13:48:54 ubuntuServer2 postfix/smtpd[19932]: error: open /opt/mailman/core/var/data/postfix_domains: No such file or directory
Jul 12 13:48:54 ubuntuServer2 postfix/smtpd[19932]: error: open /opt/mailman/core/var/data/postfix_lmtp: No such file or directory
Jul 12 13:48:54 ubuntuServer2 postfix/smtpd[19932]: connect from unknown[172.19.199.3]
Jul 12 13:48:54 ubuntuServer2 postfix/trivial-rewrite[19843]: warning: regexp:/opt/mailman/core/var/data/postfix_domains is unavailable. open /opt/mailman/core/var/data/postfix_domains: No such file or directory
Jul 12 13:48:54 ubuntuServer2 postfix/trivial-rewrite[19843]: warning: relay_domains: regexp:/opt/mailman/core/var/data/postfix_domains: table lookup problem
Jul 12 13:48:54 ubuntuServer2 postfix/trivial-rewrite[19843]: warning: relay_domains lookup failure
Jul 12 13:48:54 ubuntuServer2 postfix/trivial-rewrite[19843]: warning: regexp:/opt/mailman/core/var/data/postfix_lmtp is unavailable. open /opt/mailman/core/var/data/postfix_lmtp: No such file or directory
Jul 12 13:48:54 ubuntuServer2 postfix/trivial-rewrite[19843]: warning: regexp:/opt/mailman/core/var/data/postfix_lmtp lookup error for "root@localhost"
Jul 12 13:48:54 ubuntuServer2 postfix/trivial-rewrite[19843]: warning: transport_maps lookup failure
Jul 12 13:48:54 ubuntuServer2 postfix/smtpd[19932]: NOQUEUE: reject: RCPT from unknown[172.19.199.3]: 451 4.3.0 <root@localhost>: Temporary lookup failure; from=<root(a)localhost.local> to=<root@localhost> proto=ESMTP helo=<mailman-web>
Jul 12 13:48:54 ubuntuServer2 postfix/smtpd[19932]: disconnect from unknown[172.19.199.3] ehlo=1 mail=1 rcpt=0/1 rset=1 quit=1 commands=4/5
Jul 12 13:48:54 ubuntuServer2 postfix/smtpd[19931]: lost connection after RSET from unknown[172.19.199.3]
Jul 12 13:48:54 ubuntuServer2 postfix/smtpd[19931]: disconnect from unknown[172.19.199.3] ehlo=1 mail=1 rcpt=0/1 rset=1 commands=3/4
And /var/log/mail.err is filling up with:
Jul 12 13:48:53 ubuntuServer2 postfix/smtpd[19931]: error: open /opt/mailman/core/var/data/postfix_domains: No such file or directory
Jul 12 13:48:53 ubuntuServer2 postfix/smtpd[19931]: error: open /opt/mailman/core/var/data/postfix_lmtp: No such file or directory
Jul 12 13:48:54 ubuntuServer2 postfix/smtpd[19932]: error: open /opt/mailman/core/var/data/postfix_domains: No such file or directory
Jul 12 13:48:54 ubuntuServer2 postfix/smtpd[19932]: error: open /opt/mailman/core/var/data/postfix_lmtp: No such file or directory
Any thoughts on what the problem is? Have I missed a step?
7 years, 9 months

[MM3-users] Re: Archive Policy not reflecting in Hyperkitty
by Nathan Dixon
Ok, I've figured out how to run the job manually. And here's the error I'm
getting (list name and domain has been changed to <listname> and
<domain>.com for security reasons):
From within mailman-web container:
bash-4.4# python3 manage.py runjob sync_mailman
ERROR OCCURED IN JOB: sync_mailman (APP: None)
START TRACEBACK:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line
85, in _execute
return self.cursor.execute(sql, params)
psycopg2.IntegrityError: null value in column "description" violates
not-null constraint
DETAIL: Failing row contains (4, <listname>@<domain>.com, <LISTNAME>,
null, [<LISTNAME>] , 1, 2019-03-12 10:23:20.293675+00,
<listname>.<domain>.com).
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File
"/usr/lib/python3.6/site-packages/django_extensions/management/commands/runjob.py",
line 35, in runjob
job().execute()
File "/usr/lib/python3.6/site-packages/hyperkitty/jobs/sync_mailman.py",
line 35, in execute
sync_with_mailman()
File "/usr/lib/python3.6/site-packages/hyperkitty/lib/mailman.py", line
131, in sync_with_mailman
mlist.update_from_mailman()
File "/usr/lib/python3.6/site-packages/hyperkitty/models/mailinglist.py",
line 192, in update_from_mailman
self.save()
File "/usr/lib/python3.6/site-packages/django/db/models/base.py", line
718, in save
force_update=force_update, update_fields=update_fields)
File "/usr/lib/python3.6/site-packages/django/db/models/base.py", line
748, in save_base
updated = self._save_table(raw, cls, force_insert, force_update, using,
update_fields)
File "/usr/lib/python3.6/site-packages/django/db/models/base.py", line
812, in _save_table
forced_update)
File "/usr/lib/python3.6/site-packages/django/db/models/base.py", line
861, in _do_update
return filtered._update(values) > 0
File "/usr/lib/python3.6/site-packages/django/db/models/query.py", line
712, in _update
return query.get_compiler(self.db).execute_sql(CURSOR)
File "/usr/lib/python3.6/site-packages/django/db/models/sql/compiler.py",
line 1383, in execute_sql
cursor = super().execute_sql(result_type)
File "/usr/lib/python3.6/site-packages/django/db/models/sql/compiler.py",
line 1065, in execute_sql
cursor.execute(sql, params)
File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line
68, in execute
return self._execute_with_wrappers(sql, params, many=False,
executor=self._execute)
File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line
77, in _execute_with_wrappers
return executor(sql, params, many, context)
File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line
85, in _execute
return self.cursor.execute(sql, params)
File "/usr/lib/python3.6/site-packages/django/db/utils.py", line 89, in
__exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line
85, in _execute
return self.cursor.execute(sql, params)
django.db.utils.IntegrityError: null value in column "description" violates
not-null constraint
DETAIL: Failing row contains (4, <listname>@<domain.com>, <LISTNAME>,
null, [LISTNAME] , 1, 2019-03-12 10:23:20.293675+00,
<listname>.<domain>.com).
END TRACEBACK
So it looks like there's a null in one of the columns.
This list was created using the Postorius interface. I had sent a couple of
messages to the list while the archive attribute was set to public and then
I changed it to private and sent some more test mails to it.
Hopefully this will help us find a solution to this.
Thanks
On Tue, 7 May 2019 at 10:40, Nathan Dixon <nathan.dixon(a)evadon.com> wrote:
> I'm not sure if it's also related, but within the mailman-web and
> mailman-core docker containers, crontab -e only shows these entries:
> # do daily/weekly/monthly maintenance
> # min hour day month weekday command
> */15 * * * * run-parts /etc/periodic/15min
> 0 * * * * run-parts /etc/periodic/hourly
> 0 2 * * * run-parts /etc/periodic/daily
> 0 3 * * 6 run-parts /etc/periodic/weekly
> 0 5 1 * * run-parts /etc/periodic/monthly
>
> And all of those folders are empty.
>
> I'm not sure where the synchronisation task for Hyperkitty should actually
> being run from?
>
> Thank you
>
> On Tue, 7 May 2019 at 10:20, Nathan Dixon <nathan.dixon(a)evadon.com> wrote:
>
>> The change to the archiving policy aren't reflected in Hyperkitty after
>> many days for all the lists.
>>
>> The only error that I am seeing in the /web/mailmanweb.log is:
>> INFO 2019-05-02 14:16:55,062 38 hyperkitty.tasks AsyncTask task
>> "<function unlock_and_call at 0x7f5d8851f048>" with args "(<function
>> update_from_mailman at 0x7f5d88544a60>, 'task:status:%s:%s', '<list
>> address>')" and kwargs "{}" finished with errors.
>>
>> I'm not sure if that could be related? (I have changed the actual list
>> address to <list address> for security reasons)
>>
>> Thank you
>>
>> On Sat, 4 May 2019 at 16:24, Abhilash Raj <maxking(a)asynchronous.in>
>> wrote:
>>
>>> On Fri, May 3, 2019, at 8:38 AM, Nathan Dixon wrote:
>>> > So the issue I am seeing is that when I set a lists archive policy to
>>> > prviate, it isn't reflecting that in Hyperkitty.
>>> >
>>> > I am running the docker installation of Mailman, postorius and
>>> hyperkitty.
>>> > So I go into the docker instance of mailman-core and run this:
>>> >
>>> > python3 manage.py shell from hyperkitty.models.mailinglist import
>>> > MailingList MailingList.objects.all().values_list('name',
>>> 'archive_policy')
>>> >
>>> > And all my lists are showing '2', regardless of how I set the mailing
>>> list
>>> > archive policy.
>>> >
>>> > This might be a duplicate of
>>> >
>>> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/thread/…
>>> >
>>> > Am I missing something in my install? Or is this a bug?
>>>
>>> It can take upto an hour for this change to reflect in Hyperkitty. Did
>>> you wait
>>> for that long?
>>>
>>> This happens because Hyperkitty stores it's own data, and queries Mailman
>>> Core periodically to fetch updates every hour. In future, we might be
>>> able to
>>> do this in more realtime fashion by using an event based pub/sub model.
>>> But,
>>> we are not there yet.
>>>
>>>
>>> >
>>> > Many thanks for your attention,
>>> >
>>> > --
>>> >
>>> > *Nathan Dixon* MEng
>>> > Senior Software Architect
>>> > m: +44 (0)7402 690311
>>> >
>>> > t: +44 (0)20 81231252
>>> > e: nathan.dixon(a)evadon.com
>>> > w: www.evadon.com
>>> >
>>> > This e-mail and any attachments are confidential and may be protected
>>> by
>>> > legal, professional or other privilege. If you are not the intended
>>> > recipient you should not store it, copy it, re-transmit it, use it or
>>> > disclose its contents, but should return it to the sender immediately
>>> and
>>> > delete your copy from your system. The views expressed are those of the
>>> > sender and not necessarily those of Evadon. Please note that whilst we
>>> scan
>>> > all e-mails for viruses we cannot guarantee that any e-mail is
>>> virus-free.
>>> > Please be advised that we expressly reserve the right to monitor email
>>> > content for the purposes of ensuring compliance with legal
>>> requirements and
>>> > company policies and your sending to, or receiving from, us of any
>>> email
>>> > constitutes your agreement to these terms.
>>> >
>>> >
>>> > Evadon Dynamics Limited, registered in England No. 09494097. Registered
>>> > Office: Electric Works, Sheffield Digital Campus, 3 Concourse Way,
>>> Sheffield,
>>> > S1 2BJ
>>> > _______________________________________________
>>> > Mailman-users mailing list -- mailman-users(a)mailman3.org
>>> > To unsubscribe send an email to mailman-users-leave(a)mailman3.org
>>> > https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>>> >
>>>
>>> --
>>> thanks,
>>> Abhilash Raj (maxking)
>>> _______________________________________________
>>> Mailman-users mailing list -- mailman-users(a)mailman3.org
>>> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
>>> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>>>
>>
>>
>> --
>>
>> *Nathan Dixon* MEng
>> Senior Software Architect
>> m: +44 (0)7402 690311
>>
>> t: +44 (0)20 81231252
>> e: nathan.dixon(a)evadon.com
>> w: www.evadon.com
>>
>> This e-mail and any attachments are confidential and may be protected by
>> legal, professional or other privilege. If you are not the intended
>> recipient you should not store it, copy it, re-transmit it, use it or
>> disclose its contents, but should return it to the sender immediately and
>> delete your copy from your system. The views expressed are those of the
>> sender and not necessarily those of Evadon. Please note that whilst we scan
>> all e-mails for viruses we cannot guarantee that any e-mail is virus-free.
>> Please be advised that we expressly reserve the right to monitor email
>> content for the purposes of ensuring compliance with legal requirements and
>> company policies and your sending to, or receiving from, us of any email
>> constitutes your agreement to these terms.
>>
>>
>> Evadon Dynamics Limited, registered in England No. 09494097. Registered
>> Office: Electric Works, Sheffield Digital Campus, 3 Concourse Way, Sheffield,
>> S1 2BJ
>>
>
>
> --
>
> *Nathan Dixon* MEng
> Senior Software Architect
> m: +44 (0)7402 690311
>
> t: +44 (0)20 81231252
> e: nathan.dixon(a)evadon.com
> w: www.evadon.com
>
> This e-mail and any attachments are confidential and may be protected by
> legal, professional or other privilege. If you are not the intended
> recipient you should not store it, copy it, re-transmit it, use it or
> disclose its contents, but should return it to the sender immediately and
> delete your copy from your system. The views expressed are those of the
> sender and not necessarily those of Evadon. Please note that whilst we scan
> all e-mails for viruses we cannot guarantee that any e-mail is virus-free.
> Please be advised that we expressly reserve the right to monitor email
> content for the purposes of ensuring compliance with legal requirements and
> company policies and your sending to, or receiving from, us of any email
> constitutes your agreement to these terms.
>
>
> Evadon Dynamics Limited, registered in England No. 09494097. Registered
> Office: Electric Works, Sheffield Digital Campus, 3 Concourse Way, Sheffield,
> S1 2BJ
>
--
*Nathan Dixon* MEng
Senior Software Architect
m: +44 (0)7402 690311
t: +44 (0)20 81231252
e: nathan.dixon(a)evadon.com
w: www.evadon.com
This e-mail and any attachments are confidential and may be protected by
legal, professional or other privilege. If you are not the intended
recipient you should not store it, copy it, re-transmit it, use it or
disclose its contents, but should return it to the sender immediately and
delete your copy from your system. The views expressed are those of the
sender and not necessarily those of Evadon. Please note that whilst we scan
all e-mails for viruses we cannot guarantee that any e-mail is virus-free.
Please be advised that we expressly reserve the right to monitor email
content for the purposes of ensuring compliance with legal requirements and
company policies and your sending to, or receiving from, us of any email
constitutes your agreement to these terms.
Evadon Dynamics Limited, registered in England No. 09494097. Registered
Office: Electric Works, Sheffield Digital Campus, 3 Concourse Way, Sheffield,
S1 2BJ
5 years, 11 months

[MM3-users] Re: Postorius no connection to REST API
by Richard Rosner
Mark Sapiro wrote:
> > You are in a better position to answer that than am I.
> What does sudo netstat -lntp show?
A lot. But since most of that isn't relevant here:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN 20241/master
tcp 0 0 127.0.0.1:8024 0.0.0.0:* LISTEN 14076/python3
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 20241/master
tcp 0 0 127.0.0.1:8001 0.0.0.0:* LISTEN 14080/python3
tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN 20241/master
tcp6 0 0 :::80 :::* LISTEN 13882/apache2
tcp6 0 0 :::465 :::* LISTEN 20241/master
tcp6 0 0 :::25 :::* LISTEN 20241/master
tcp6 0 0 :::443 :::* LISTEN 13882/apache2
tcp6 0 0 :::587 :::* LISTEN 20241/master
> What does ps -fwwa|grep rest show?
root 15055 14843 0 12:58 pts/1 00:00:00 grep rest
So whatever it's supposed to find, it's not there
> > mailman3-web.service must also run as list.
I changed that. It didn't like it.
systemctl status mailman3-web.service
● mailman3-web.service - Mailman3-web uWSGI service
Loaded: loaded (/lib/systemd/system/mailman3-web.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Wed 2021-08-11 13:05:39 CEST; 32s ago
Docs: file:///usr/share/doc/mailman3-web/README.rst
Process: 15570 ExecStart=/usr/bin/uwsgi --plugin python3 --ini /etc/mailman3/uwsgi.ini (code=exited, status=1/FAILURE)
Main PID: 15570 (code=exited, status=1/FAILURE)
Status: "initializing uWSGI"
Aug 11 13:05:39 mail systemd[1]: Starting Mailman3-web uWSGI service...
Aug 11 13:05:39 mail systemd[1]: mailman3-web.service: Main process exited, code=exited, status=1/FAILURE
Aug 11 13:05:39 mail systemd[1]: mailman3-web.service: Failed with result 'exit-code'.
Aug 11 13:05:39 mail systemd[1]: Failed to start Mailman3-web uWSGI service.
Aug 11 13:05:39 mail systemd[1]: mailman3-web.service: Service RestartSec=100ms expired, scheduling restart.
Aug 11 13:05:39 mail systemd[1]: mailman3-web.service: Scheduled restart job, restart counter is at 5.
Aug 11 13:05:39 mail systemd[1]: Stopped Mailman3-web uWSGI service.
Aug 11 13:05:39 mail systemd[1]: mailman3-web.service: Start request repeated too quickly.
Aug 11 13:05:39 mail systemd[1]: mailman3-web.service: Failed with result 'exit-code'.
Aug 11 13:05:39 mail systemd[1]: Failed to start Mailman3-web uWSGI service.
> > So, what do you have in your apache config for proxying to uwsgi and
> what's your uwsgi configuration.
lists-ssl.conf:
<VirtualHost *:443>
ServerAdmin admin(a)domain.de
ServerName lists.domain.de
Alias /mailman3/favicon.ico /var/lib/mailman3/web/static/postorius/img/favicon.ico
Alias /mailman3/static /var/lib/mailman3/web/static
<Directory "/var/lib/mailman3/web/static">
Require all granted
</Directory>
<IfModule mod_proxy_uwsgi.c>
ProxyPass /mailman3/favicon.ico !
ProxyPass /mailman3/static !
ProxyPass "/mailman3" "unix:/run/mailman3-web/uwsgi.sock|uwsgi://localhost:8001/"
</IfModule>
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
SSLCertificateFile /etc/ssl/certs/lists.domain.de.cert.pem
SSLCertificateKeyFile /etc/ssl/private/lists.domain.de.private.pem
SSLCertificateChainFile /etc/ssl/certs/dfnca.pem
SSLCACertificateFile /etc/ssl/certs/rwthcert.pem
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
Protocols h2 http/1.1
SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256
SSLHonorCipherOrder off
#RewriteEngine on
#RewriteRule ^/$ https://lists.domain.de/listinfo
Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
Header always set X-Frame-Options: "SAMEORIGIN"
Header always set X-Xss-Protection "1; mode=block"
Header always set X-Content-Type-Options "nosniff"
Header always set Content-Security-Policy "default-src 'self' *.domain.de; script-src 'self' *.domain.de; connect-src 'self' *.domain.de; img-src 'self' *.domain.de; style-src 'self' 'unsafe-inline' *.domain.de; object-src 'self' *.domain.de; frame-src 'self' *.domain.de;"
Header always set Referrer-Policy "no-referrer-when-downgrade"
</VirtualHost>
<VirtualHost *:80>
RewriteEngine On
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
</VirtualHost>
I guess with uwsgi config you mean the /etc/mailman3/uwsgi.ini file?
[uwsgi]
# Port on which uwsgi will be listening.
uwsgi-socket = /run/mailman3-web/uwsgi.sock
#Enable threading for python
enable-threads = true
# Move to the directory wher the django files are.
chdir = /usr/share/mailman3-web
# Use the wsgi file provided with the django project.
wsgi-file = wsgi.py
# Setup default number of processes and threads per process.
master = true
process = 2
threads = 2
# Drop privielges and don't run as root.
uid = www-data
gid = www-data
plugins = python3
# Setup the django_q related worker processes.
attach-daemon = python3 manage.py qcluster
# Setup hyperkitty's cron jobs.
#unique-cron = -1 -1 -1 -1 -1 ./manage.py runjobs minutely
#unique-cron = -15 -1 -1 -1 -1 ./manage.py runjobs quarter_hourly
#unique-cron = 0 -1 -1 -1 -1 ./manage.py runjobs hourly
#unique-cron = 0 0 -1 -1 -1 ./manage.py runjobs daily
#unique-cron = 0 0 1 -1 -1 ./manage.py runjobs monthly
#unique-cron = 0 0 -1 -1 0 ./manage.py runjobs weekly
#unique-cron = 0 0 1 1 -1 ./manage.py runjobs yearly
# Setup the request log.
#req-logger = file:/var/log/mailman3/web/mailman-web.log
# Log cron seperately.
#logger = cron file:/var/log/mailman3/web/mailman-web-cron.log
#log-route = cron uwsgi-cron
# Log qcluster commands seperately.
#logger = qcluster file:/var/log/mailman3/web/mailman-web-qcluster.log
#log-route = qcluster uwsgi-daemons
# Last log and it logs the rest of the stuff.
#logger = file:/var/log/mailman3/web/mailman-web-error.log
logto = /var/log/mailman3/web/mailman-web.log
3 years, 8 months

[MM3-users] Re: Debian 11 mailman3 installation question
by William Oliver
One more-one more thing...
Here's /var/lib/mailman3/data/postfix_lmtp:
root@emergenis:/var/lib/mailman3/data# more postfix_lmtp
# AUTOMATICALLY GENERATED BY MAILMAN ON 2022-10-11 21:00:15
#
# This file is generated by Mailman, and is kept in sync with the
binary hash
# file. YOU SHOULD NOT MANUALLY EDIT THIS FILE unless you know what
you're
# doing, and can keep the two files properly in sync. If you screw it
up,
# you're on your own.
So.. if it can write that, it shouldn't be a permissons problem...
billo
On Tue, 2022-10-11 at 15:39 -0400, William Oliver wrote:
>
>
> One more thing, I'm using the README.Debian addition to
> /etc/postfix/main.cf rather than the one in the instructions
> at
> https://docs.mailman3.org/en/latest/config-core.html#configuring-mta
> .
>
> In other words, mine reads:
>
>
> # Mailman related settings
> owner_request_special = no
> transport_maps = hash:/var/lib/mailman3/data/postfix_lmtp
> local_recipient_maps = proxy:unix:passwd.byname $alias_maps
> hash:/var/lib/mailman3/data/postfix_lmtp
> relay_domains = ${{$compatibility_level} < {2} ? {$mydestination} :
> {}}
> hash:/var/lib/mailman3/data/postfix_dom
> ains
>
> instead of:
>
>
> # Support the default VERP delimiter.
> recipient_delimiter = +
> unknown_local_recipient_reject_code = 550
> owner_request_special = no
> transport_maps =
> hash:/path-to-mailman/var/data/postfix_lmtp
> local_recipient_maps =
> hash:/path-to-mailman/var/data/postfix_lmtp
> relay_domains =
> hash:/path-to-mailman/var/data/postfix_domains
>
>
> .... but they both give the same error.
>
>
>
>
> On Tue, 2022-10-11 at 15:31 -0400, William Oliver wrote:
> >
> > I have had an installation of mailman3 running for a year or so
> > with
> > no problems. This was a manual installation. I ended up having to
> > change machines, so I decided to install using the debian 11
> > package.
> >
> > It seems to have gone well except.... when I restart mailman3
> > service,
> > I get the following fail and error message:
> >
> > oot@emergenis:/etc/nginx/sites-enabled# systemctl restart mailman3
> > Job for mailman3.service failed because the control process exited
> > with
> > error code.
> > See "systemctl status mailman3.service" and "journalctl -xe" for
> > details.
> > root@emergenis:/etc/nginx/sites-enabled# systemctl status mailman3
> > ● mailman3.service - Mailman3 server
> > Loaded: loaded (/lib/systemd/system/mailman3.service; enabled;
> > vendor
> > preset: enabled)
> > Active: failed (Result: exit-code) since Tue 2022-10-11 15:09:45
> > EDT;
> > 8s ago
> > Docs: man:mailman(1)
> > https://mailman.readthedocs.io/
> > Process: 1056 ExecStart=/usr/bin/mailman -C
> > /etc/mailman3/mailman.cfg
> > start --force (code=exited, status=1/FAILURE)
> > CPU: 9.193s
> >
> > Oct 11 15:09:43 emergenis.com mailman3[1056]: File
> > "/usr/lib/python3/dist-packages/mailman/commands/cli_control.py",
> > line
> > 109, in start
> > Oct 11 15:09:43 emergenis.com mailman3[1056]:
> > call_name(config.mta.incoming).regenerate()
> > Oct 11 15:09:43 emergenis.com mailman3[1056]: File
> > "/usr/lib/python3/dist-packages/mailman/mta/postfix.py", line 133,
> > in
> > regenerate
> > Oct 11 15:09:43 emergenis.com mailman3[1056]: raise
> > RuntimeError(NL.join(errors))
> > Oct 11 15:09:43 emergenis.com mailman3[1056]: RuntimeError: command
> > failure: /usr/sbin/postmap /var/lib/mailman3/data/postfix_lmtp, 1,
> > Operation not permitted
> > Oct 11 15:09:43 emergenis.com mailman3[1056]: command failure:
> > /usr/sbin/postmap /var/lib/mailman3/data/postfix_domains, 1,
> > Operation
> > not permitted
> > Oct 11 15:09:45 emergenis.com systemd[1]: mailman3.service: Control
> > process exited, code=exited, status=1/FAILURE
> > Oct 11 15:09:45 emergenis.com systemd[1]: mailman3.service: Failed
> > with
> > result 'exit-code'.
> > Oct 11 15:09:45 emergenis.com systemd[1]: Failed to start Mailman3
> > server.
> > Oct 11 15:09:45 emergenis.com systemd[1]: mailman3.service:
> > Consumed
> > 9.193s CPU time.
> >
> >
> > Heres the ls for /var/lib/mailman3/data:
> >
> > root@emergenis:/var/lib/mailman3/data# ls -l
> > total 8
> > -rw-rw---- 1 list list 315 Oct 11 15:09 postfix_domains
> > -rw-rw---- 1 list list 318 Oct 11 15:09 postfix_lmtp
> >
> > The web interface comes up and seems to "work" but of course
> > complains
> > that mailman3 isn't actually running.
> >
> > I assume there's some posfix config I haven't done right, but I am
> > clueless as to what it is.
> >
> > Thanks in advance for any pointers.
> >
> > billo
> >
> > _______________________________________________
> > Mailman-users mailing list -- mailman-users(a)mailman3.org
> > To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> > https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
2 years, 6 months

[MM3-users] Re: LTMP to Postfix problem
by Brian Carpenter
On 6/18/20 7:36 PM, Mark Sapiro wrote:
> Check your system logs to see if there's anything about the OS killing
> the process. Also check the Postfix log for deliveries to mailman just
> before it died. Just stabbing in the dark, but maybe some huge message
> caused it to grow beyond some memory limit and get killed by the OS.
I am replying off list at this point. It is definitely a OOM issue. Here
are the log entries right before ltmp crashed:
Jun 18 00:00:12 mm4 kernel: [19548549.158382] postgres invoked
oom-killer: gfp_mask=0x6200ca(GFP_HIGHUSER_MOVABLE), nodemask=(null),
order=0, oom_score_adj=0
Jun 18 00:00:12 mm4 kernel: [19548549.160719] postgres cpuset=/
mems_allowed=0
Jun 18 00:00:12 mm4 kernel: [19548549.161524] CPU: 0 PID: 7243 Comm:
postgres Not tainted 4.19.0-6-amd64 #1 Debian 4.19.67-2
Jun 18 00:00:12 mm4 kernel: [19548549.163047] Hardware name: QEMU
Standard PC (Q35 + ICH9, 2009), BIOS
rel-1.12.0-0-ga698c8995f-prebuilt.qemu.org 04/01/2014
Jun 18 00:00:12 mm4 kernel: [19548549.164885] Call Trace:
Jun 18 00:00:12 mm4 kernel: [19548549.165402] dump_stack+0x5c/0x80
Jun 18 00:00:12 mm4 kernel: [19548549.166097] dump_header+0x6b/0x283
Jun 18 00:00:12 mm4 kernel: [19548549.167019] ?
do_try_to_free_pages+0x2ec/0x370
Jun 18 00:00:12 mm4 kernel: [19548549.167864]
oom_kill_process.cold.30+0xb/0x1cf
Jun 18 00:00:12 mm4 kernel: [19548549.168760] ? oom_badness+0x23/0x140
Jun 18 00:00:12 mm4 kernel: [19548549.169534] out_of_memory+0x1a5/0x430
Jun 18 00:00:12 mm4 kernel: [19548549.170174]
__alloc_pages_slowpath+0xbd8/0xcb0
Jun 18 00:00:12 mm4 kernel: [19548549.171060]
__alloc_pages_nodemask+0x28b/0x2b0
Jun 18 00:00:12 mm4 kernel: [19548549.171973] filemap_fault+0x3bd/0x780
Jun 18 00:00:12 mm4 kernel: [19548549.172643] ? alloc_set_pte+0xf2/0x560
Jun 18 00:00:12 mm4 kernel: [19548549.173369] ?
filemap_map_pages+0x1ed/0x3a0
Jun 18 00:00:12 mm4 kernel: [19548549.174404]
ext4_filemap_fault+0x2c/0x40 [ext4]
Jun 18 00:00:12 mm4 kernel: [19548549.175259] __do_fault+0x36/0x130
Jun 18 00:00:12 mm4 kernel: [19548549.175930] __handle_mm_fault+0xe6c/0x1270
Jun 18 00:00:12 mm4 kernel: [19548549.176765] handle_mm_fault+0xd6/0x200
Jun 18 00:00:12 mm4 kernel: [19548549.177644] __do_page_fault+0x249/0x4f0
Jun 18 00:00:12 mm4 kernel: [19548549.178407] ? async_page_fault+0x8/0x30
Jun 18 00:00:12 mm4 kernel: [19548549.179156] async_page_fault+0x1e/0x30
Jun 18 00:00:12 mm4 kernel: [19548549.179915] RIP: 0033:0x55d875a3fe10
Jun 18 00:00:12 mm4 kernel: [19548549.180569] Code: Bad RIP value.
Jun 18 00:00:12 mm4 kernel: [19548549.181181] RSP: 002b:00007ffcad32f248
EFLAGS: 00010206
Jun 18 00:00:12 mm4 kernel: [19548549.182132] RAX: 000055d877d512b0 RBX:
000055d877d60b93 RCX: 00007ffcad32f2c0
Jun 18 00:00:12 mm4 kernel: [19548549.183365] RDX: 0000000000000005 RSI:
000055d877d60b93 RDI: 000055d877d512b0
Jun 18 00:00:12 mm4 kernel: [19548549.184712] RBP: 00007ffcad32f270 R08:
0000000000000001 R09: 00007ffcad32f388
Jun 18 00:00:12 mm4 kernel: [19548549.186338] R10: 00007f2585002d40 R11:
0000000000000000 R12: 0000000000000005
Jun 18 00:00:12 mm4 kernel: [19548549.187583] R13: 000055d877d4b3a0 R14:
00007f2581ad05b8 R15: 0000000000000000
Jun 18 00:00:12 mm4 kernel: [19548549.188952] Mem-Info:
Jun 18 00:00:12 mm4 kernel: [19548549.189468] active_anon:197899
inactive_anon:206498 isolated_anon:0
Jun 18 00:00:12 mm4 kernel: [19548549.189468] active_file:253
inactive_file:278 isolated_file:23
Jun 18 00:00:12 mm4 kernel: [19548549.189468] unevictable:0 dirty:0
writeback:0 unstable:0
Jun 18 00:00:12 mm4 kernel: [19548549.189468] slab_reclaimable:21867
slab_unreclaimable:55017
Jun 18 00:00:12 mm4 kernel: [19548549.189468] mapped:17008 shmem:24450
pagetables:4890 bounce:0
Jun 18 00:00:12 mm4 kernel: [19548549.189468] free:13184 free_pcp:340
free_cma:0
Jun 18 00:00:12 mm4 kernel: [19548549.195739] Node 0
active_anon:791596kB inactive_anon:825992kB active_file:1012kB
inactive_file:1112kB unevictable:0kB isolated(anon):0kB
isolated(file):92kB mapped:68032kB dirty$
Jun 18 00:00:12 mm4 kernel: [19548549.200559] Node 0 DMA free:8152kB
min:352kB low:440kB high:528kB active_anon:1056kB inactive_anon:5048kB
active_file:0kB inactive_file:0kB unevictable:0kB writepending:0kB prese$
Jun 18 00:00:12 mm4 kernel: [19548549.204993] lowmem_reserve[]: 0 1950
1950 1950 1950
Jun 18 00:00:12 mm4 kernel: [19548549.205877] Node 0 DMA32 free:44584kB
min:44700kB low:55872kB high:67044kB active_anon:790540kB
inactive_anon:820944kB active_file:1012kB inactive_file:1112kB
unevictable:0kB wri$
Jun 18 00:00:12 mm4 kernel: [19548549.211109] lowmem_reserve[]: 0 0 0 0 0
Jun 18 00:00:12 mm4 kernel: [19548549.211826] Node 0 DMA: 8*4kB (UE)
31*8kB (UME) 20*16kB (UME) 22*32kB (UME) 13*64kB (UME) 5*128kB (UME)
5*256kB (UM) 4*512kB (UM) 2*1024kB (UM) 0*2048kB 0*4096kB = 8152kB
Jun 18 00:00:12 mm4 kernel: [19548549.214414] Node 0 DMA32: 378*4kB
(UMEH) 472*8kB (UEH) 412*16kB (UEH) 196*32kB (UMEH) 63*64kB (UMEH)
63*128kB (UE) 16*256kB (UE) 4*512kB (ME) 0*1024kB 2*2048kB (M) 1*4096kB
(M) =$
Jun 18 00:00:12 mm4 kernel: [19548549.217336] Node 0 hugepages_total=0
hugepages_free=0 hugepages_surp=0 hugepages_size=1048576kB
Jun 18 00:00:12 mm4 kernel: [19548549.218937] Node 0 hugepages_total=0
hugepages_free=0 hugepages_surp=0 hugepages_size=2048kB
Jun 18 00:00:12 mm4 kernel: [19548549.220513] 39729 total pagecache pages
Jun 18 00:00:12 mm4 kernel: [19548549.221286] 14715 pages in swap cache
Jun 18 00:00:12 mm4 kernel: [19548549.222022] Swap cache stats: add
10809560, delete 10794845, find 18524127383/18527544787
Jun 18 00:00:12 mm4 kernel: [19548549.223482] Free swap = 0kB
Jun 18 00:00:12 mm4 kernel: [19548549.224081] Total swap = 524284kB
Jun 18 00:00:12 mm4 kernel: [19548549.224712] 524154 pages RAM
Jun 18 00:00:12 mm4 kernel: [19548549.225222] 0 pages HighMem/MovableOnly
Jun 18 00:00:12 mm4 kernel: [19548549.225894] 13385 pages reserved
Then there was this little bit of info:
Jun 18 00:00:12 mm4 kernel: [19548549.442555] Out of memory: Kill
process 29676 (python3) score 37 or sacrifice child
Jun 18 00:00:12 mm4 kernel: [19548549.444508] Killed process 29676
(python3) total-vm:192224kB, anon-rss:93084kB, file-rss:0kB, shmem-rss:0kB
Jun 18 00:00:12 mm4 kernel: [19548549.464907] oom_reaper: reaped process
29676 (python3), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
I suspect the above process was ltmp.
So the server has 2 gig of ram with about a dozen MM3 lists on it. Is
this an issue with tuning performance of the Postgresql server or do I
need to add more memory. I am curious how much ram your server is
running and if you had run into any OOM of problems.
If you want me to post this to the list, I will.
--
Please let me know if you need further assistance.
Thank you for your business. We appreciate our clients.
Brian Carpenter
EMWD.com
--
EMWD's Knowledgebase:
https://clientarea.emwd.com/index.php/knowledgebase
EMWD's Community Forums
http://discourse.emwd.com/
4 years, 10 months

[MM3-users] Re: users, users and users (was Re: Re: Cannot request password reset: "The e-mail address is not assigned to any user account")
by Mark Sapiro
On 1/28/22 00:41, IOhannes m zmölnig wrote:
>
> i'm afraid i still do not fully understand which types of "users" there
> are.
>
>
> afaics, there are three different types:
> - django users
> this is what get's listed under
> <https://lists.mailman3.org/admin/auth/user/>
Correct.
> - mailman accounts
> this is what is created when you visit
> <https://lists.mailman3.org/accounts/signup/>
No. That creates a Django user, not a Mailman user. What you think of as
a Mailman account is actually a Django account.
> - email addresses
> this is what is created when i subscribe to a list *without* having
> an account.
> e.g. via the "Subscribe" button on
> <https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/>
Mailman core has users and addresses. A user has one or more associated
addresses. When you subscribe to a list without having an account in
that way, or via email to list-join or list-subscribe or by being mass
subscribed by the list admin or by being imported by `mailman import21`,
assuming you are previously unknown, this creates a Mailman user with an
associated address and subscribes the user or address.
Each user has a primary address and zero or more additional linked
addresses. The user can be subscribed to a list as a user in which case,
delivery if any is to the user's primary address, or can be subscribed
as an address.
> afaiu, (multiple) "email addresses" can be associated with a single
> "mailman account" (but this is strictly optional).
Yes, see above.
> if an "email address" is first used to subscribe to a list without a
> mailman account, and later a mailman account is created with that very
> email address, they get automatically associated.
> a single "email address" cannot be associated with more than one
> "mailman accounts".
Based on the above, your "mailman accounts" are actually Django
accounts. With that in mind, the above is correct, but there is no real
link between Mailman users and Django users. When you are logged in to
the web UI you are logged in as a Django user, and Postorius and
HyperKitty know that user's email address and can therefore know if it
is a list member and know what address to subscribe or unsubscribe as
requested.
> i think i got this one right (as it seems pretty straightforward).
>
> what i don't fully grasp yet is the relation between "django users" and
> "mailman accounts".
As I have said, what you are calling a mailman account is a Django user
and not a Mailman user.
> intuitively, i would have thought that they are identical.
They are, but they are not Mailman core users.
> now mark wrote:
> > a Django user, which is distinct from a Mailman user. The users you
> > added via the web API are Mailman users, but in order to access their
> > lists via the web UI they have to `sign up` to create a Django
> > account.
>
> that seems to indicate, that a "django user" is a (strict) superset of a
> "mailman account".
No. A Django user is the same thing as what you call a mailman account.
A Mailman core user is a separate thing entirely.
> you (as admin) can create "mailman accounts" via the web API¹, but they
> are only expanded to "mailman accounts" if you (as user) go through the
> "Sign Up" process.
No. An admin can create Mailman users via the Postorius UI. A Django
superuser can also create Django users through the Django admin UI.
> otoh, if you create an initial "django user" by signing up, you
> automatically create a "mailman account".
Because they are the same thing. When you go to the Sign-up link on a
Postorius or Hyperkitty page you go to
https://example.com/accounts/signup/, and that's Django, not Mailman.
> so are the two distinct concepts that are just associated via some
> common property (e.g. the email address), or is there some intrinsic
> relationship between the two (e.g. parent-child inheritance relationship)?
They are distinct. Django users have email addresses and Mailman users
have email addresses and they can be associated in that way. There is no
other link.
> so my recent experiment (comparing the output of
> <https://lists.example.com/admin/auth/user/> with that of `[u for u in
> getUtility(IUserManager).users]`) indicates that they are indeed
> distinct objects that *can* be associated with each other.
>
> could you please clarify this?
I hope I have.
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
3 years, 2 months

[MM3-users] Re: search this list searches more then just this list
by Marco van Tol
Op 26 jan 2024, om 22:55 heeft Mark Sapiro <mark(a)msapiro.net> het volgende geschreven:
> On 1/26/24 02:44, Marco van Tol wrote:
>> Op 25 jan 2024, om 14:16 heeft Marco van Tol <mvantol(a)ripe.net> het volgende geschreven:
>>>
>>> Okay, so, I got a bit further, but something still gets stuck.
>>>
>>> Here’s what I did.
>>> Keep in mind I’m using containers that are built from some CI/CD pipeline, so I updated the pipeline to apply the patch attached to this email to `/usr/lib/python3.11/site-packages/xapian_backend.py`.
>>>
>>> Before I had 2 list servers with the “Term too long” issue, 1 got resolved by this, and the other did not.
>>> I opened a shell in the newly deployed container to confirm the patch was applied in it.
>>>
>>> The other attachment to this email is a copy/paste from the full error from `./manage.py rebuild_index`.
>>>
>>> Is there something else special in the email that makes it choke that evades the xapian patch?
>>>
>>> Thank you very much in advance!
>
> The message above with the attached "full error" never got to the list. What is the error report?
Hm, I see. Not sure why. The reply I got from mail.mailman3.org <http://mail.mailman3.org/> at 2024-01-25 13:16:25.486 UTC was:
"250 2.0.0 Ok: 12772 bytes queued as 55AFD105C02”
I’m pasting it at the bottom of this email. Sorry it didn’t come through.
>> I tried to change to ‘hash’, but the code in that bit of the function has not been tested enough.
>> For example `hole = sha224(hole.encode('utf8')).hexdigest()` comes back with that the bytes object hole does not have an encode() method.
>> When I change it to `hole = sha224(hole).hexdigest()`, the following error is:
>
> That's only part of it. You need
>
> hole = sha224(hole).hexdigest().encode('utf8')
I ended up changing it to this, which fixed that bit, and led to the next issue. :)
>> text = text[:match.start()] + hole + text[match.end():]
>> TypeError: can't concat str to bytes
>> The ‘hash’ part of that function needs some debugging.
>
>
> Yes, presumably because no one sets `XAPIAN_LONG_TERM_METHOD=hash` in the environment. Do you have a reason for this?
I wanted to check and see if I could avoid the “Term too long (>245)" issue this way, but I haven’t gotten to the point where xapian is successful.
Right now I’m back at the original issue as I see no other solution than to go back to whoosh.
Thanks!
Marco van Tol
Paste:
----
Indexing 194620 emails
[ERROR/MainProcess] Failed indexing 156001 - 157000 (retry 5/5): Term too long (> 245): XSUBJECThttp://www.google.com/url?q=%68%74%74%70%73%3a%2f%2f%68%64%72%65%64… (pid 32): Term too long (> 245): XSUBJECThttp://www.google.com/url?q=%68%74%74%70%73%3a%2f%2f%68%64%72%65%64…
Traceback (most recent call last):
File "/usr/lib/python3.11/site-packages/haystack/management/commands/update_index.py", line 119, in do_update
backend.update(index, current_qs, commit=commit)
File "/usr/lib/python3.11/site-packages/xapian_backend.py", line 98, in wrapper
func(self, *args, **kwargs)
File "/usr/lib/python3.11/site-packages/xapian_backend.py", line 505, in update
database.replace_document(document_id, document)
xapian.InvalidArgumentError: Term too long (> 245): XSUBJECThttp://www.google.com/url?q=%68%74%74%70%73%3a%2f%2f%68%64%72%65%64…
[ERROR/MainProcess] Error updating hyperkitty using default
Traceback (most recent call last):
File "/usr/lib/python3.11/site-packages/haystack/management/commands/update_index.py", line 297, in handle
self.update_backend(label, using)
File "/usr/lib/python3.11/site-packages/haystack/management/commands/update_index.py", line 342, in update_backend
max_pk = do_update(
^^^^^^^^^^
File "/usr/lib/python3.11/site-packages/haystack/management/commands/update_index.py", line 119, in do_update
backend.update(index, current_qs, commit=commit)
File "/usr/lib/python3.11/site-packages/xapian_backend.py", line 98, in wrapper
func(self, *args, **kwargs)
File "/usr/lib/python3.11/site-packages/xapian_backend.py", line 505, in update
database.replace_document(document_id, document)
xapian.InvalidArgumentError: Term too long (> 245): XSUBJECThttp://www.google.com/url?q=%68%74%74%70%73%3a%2f%2f%68%64%72%65%64…
Traceback (most recent call last):
File "/opt/mailman-web/./manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/usr/lib/python3.11/site-packages/django/core/management/__init__.py", line 446, in execute_from_command_line
utility.execute()
File "/usr/lib/python3.11/site-packages/django/core/management/__init__.py", line 440, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/lib/python3.11/site-packages/django/core/management/base.py", line 402, in run_from_argv
self.execute(*args, **cmd_options)
File "/usr/lib/python3.11/site-packages/django/core/management/base.py", line 448, in execute
output = self.handle(*args, **options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/site-packages/haystack/management/commands/rebuild_index.py", line 65, in handle
call_command("update_index", **update_options)
File "/usr/lib/python3.11/site-packages/django/core/management/__init__.py", line 198, in call_command
return command.execute(*args, **defaults)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/site-packages/django/core/management/base.py", line 448, in execute
output = self.handle(*args, **options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/site-packages/haystack/management/commands/update_index.py", line 297, in handle
self.update_backend(label, using)
File "/usr/lib/python3.11/site-packages/haystack/management/commands/update_index.py", line 342, in update_backend
max_pk = do_update(
^^^^^^^^^^
File "/usr/lib/python3.11/site-packages/haystack/management/commands/update_index.py", line 119, in do_update
backend.update(index, current_qs, commit=commit)
File "/usr/lib/python3.11/site-packages/xapian_backend.py", line 98, in wrapper
func(self, *args, **kwargs)
File "/usr/lib/python3.11/site-packages/xapian_backend.py", line 505, in update
database.replace_document(document_id, document)
xapian.InvalidArgumentError: Term too long (> 245): XSUBJECThttp://www.google.com/url?q=%68%74%74%70%73%3a%2f%2f%68%64%72%65%64…
----
1 year, 2 months

[MM3-users] Re: External MTA incoming mail: configuration
by Odhiambo Washington
On Tue, Aug 6, 2024 at 10:46 AM Roland Giesler via Mailman-users <
mailman-users(a)mailman3.org> wrote:
> On 2024/08/05 19:59, Mark Sapiro wrote:
> > I see this reply is now moot as you have now configured list mail to
> > go directly to the Mailman server, but ...
> >
> > On 8/5/24 03:44, Roland Giesler via Mailman-users wrote:
> >>
> >> In the logs of the MTA I see this however: warning: do not list
> >> domain fast.za.net in BOTH virtual_mailbox_domains and relay_domains
> >>
> >> Mailman creates these entries, but postfix doesn't like it. I don't
> >> see any mail delivered to the mailman yet. Is this the problem?
> >
> > Probably not. It is telling you that mail to the fast.za.net domain
> > cannot both be delivered to local mailboxes (virtual_mailbox_domains)
> > and relayed to foreign hosts (relay_domains)
> >
> Thanks, yes, I have since assumed that to be the case.
> >
> >> In the MTA postfix main.cf:
> >>
> >> relay_domains = hash:/etc/mailman3/data/postfix_domains
> > >
> >> cat /etc/mailman3/data/postfix_domains
> >> ...
> >>
> >> and also
> >>
> >> local_recipient_maps=$virtual_mailbox_maps,
> >> hash:/etc/mailman3/data/postfix_lmtp
> >>
> >> cat /etc/mailman3/data/postfix_lmtp
> >> ...
> >
> > How about
> >
> > transport_maps = hash:/etc/mailman3/data/postfix_lmtp
> I can't remove the $virtual_mailbox_maps entry, since Power-mailinbox
> (PMiaB) uses that. It may make Mailman3 work, but break PMiaB).
> >
> >
> >>
> >> Then there's:
> >> virtual_mailbox_domains=sqlite:/etc/postfix/virtual-mailbox-domains.cf
> >>
> >> cat /etc/postfix/virtual-mailbox-domains.cf
> >> dbpath=/home/user-data/mail/users.sqlite
> >> query = SELECT 1 FROM users WHERE email LIKE '%%@%s' UNION SELECT 1
> >> FROM aliases WHERE source LIKE '%%@%s' UNION SELECT 1 FROM
> >> auto_aliases WHERE source LIKE '%%@%s'
> >>
> >> When I run that query in sqlite3, it returns no records, so I'm not
> >> sure how this is supposed to work. %s to me means that first
> >> argument, so is this used in python and then %s is the argument sent
> >> to this query?
> >
> >
> > See https://www.postfix.org/sqlite_table.5.html
> >
> > `%%` is replaced with `%` which is a SQL wildcard matching anything
> > and `%s` is replaced by the key postfix is looking for, i.e. the
> > domain that it is asking about.
> >
> > So, that query becomes
> >
> > SELECT 1 FROM users WHERE email LIKE '%(a)fast.za.net' UNION SELECT 1
> > FROM aliases WHERE source LIKE '%(a)fast.za.net' UNION SELECT 1 FROM
> > auto_aliases WHERE source LIKE '%(a)fast.za.net'
> >
> > I.e, it returns true if any user or alias or auto_alias has an address
> > ending in '@fast.za.net' and if that's true the mail to any
> > '@fast.za.net' address including list mail will be stored locally.
>
> Ah, thank you! I created a ticket at MiaB about this, so I'll post your
> response there. The %s had be stumped at first, but now it's clear.
>
>
> >
> > If you really have local users on box2.gtahardware.co.za with
> > addresses '@fast.za.net' and you want to relay list mail to lists
> > '@fast.za.net', you need to see
> >
> https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/docs/mta.h…
> .
>
> Thank you for that! From that it seems it may still be possible to use
> PMiaB as my MTA after, but I'll work through that reference and test it
> and report back.
>
I think that ALL MTAs have the concept of local domains (for which mails
are delivered to 'local mailboxes') and remote domains (aka relay domains)
for which mail is relayed to another host which has the mailboxes.
So in your case box2.gtahardware.co.za (this is FQDN) could be handling
local emails, e.g roland(a)gtahardware.co.za, johndoe(a)gtahardware.co.za, etc.
Those are local, and so gtahardware.co.za is a local domain. However,
fast.za.net is a relay domain and all mail to XXX(a)fast.za.net should be
relayed to the MM3 server.
If your MTA does not have this concept, then it's either not ready for
prime time or it wasn't intended to have such ability.
--
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]
8 months, 2 weeks

[MM3-users] Re: Installing mailman 3
by Rafael Mora
Dear Kyle,
I did what you suggested and this is what I got:
[root@localhost ~]# rpm -qa | grep -i mailman
[root@localhost ~]# rm -rf /var/lib/mailman
[root@localhost ~]# find / -name mailman
/run/lock/mailman
/etc/selinux/targeted/active/modules/100/mailman
/etc/selinux/targeted/tmp/modules/100/mailman
/root/mailman
/root/mailman/src/mailman
/root/mailman/venv/bin/mailman
/root/dev/mailman
/root/dev/mailman/venv3/bin/mailman
/root/dev/mailman/mailman
/root/dev/mailman/mailman/src/mailman
/var/log/mailman
/var/spool/mailman
/usr/local/lib/python3.6/site-packages/mailman-3.2.0a1-py3.6.egg/mailman
/mailman
/mailman/mailman
/mailman/mailman/src/mailman
/mailman/mailman/build/lib/mailman
How do I wipe all other mailman directories? using rm -rf???
I don't think I can start with a brand new centos 7 for the moment.
Thank you
El jue., 13 jul. 2017 a las 10:13, Kyle Richardson (<
kylerichardson2(a)gmail.com>) escribió:
> Rafael,
>
> Apologies for the delay. I would certainly encourage you to stick with
> mailman3 :-). Thanks for providing all of the details of your current
> environment. Let me try and answer each of your questions as best I can.
>
> You can check if mailman2 is already installed via rpms with the following
> command:
>
> # rpm -qa | grep -i mailman
>
> Based on your `find` results, it looks as though you have multiple
> locations where you have cloned or copied mailman3. At this point, it might
> be easiest to start fresh. You mentioned you're using a CentOS 7 VM. Is it
> possible to start from a clean build or snapshot?
>
> Once you have a clean build, you should be able to follow Simon's
> instructions to get a working mailman3 instance (steps reproduced below for
> clarity).
>
> # useradd -r -m -d /var/lib/mailman mailman
> # su - mailman
> $ python3 -m venv env
> $ source env/bin/activate
> $ pip install mailman
> $ mailman info
>
> From there you can adjust the layout in your mailman.cfg file at
> /var/lib/mailman/var/etc/ (snippet below).
>
> [mailman]
> layout: dev
>
> If you can't start from a clean CentOS 7 VM, then you should be able to
> just wipe out your existing /var/lib/mailman directory and still use
> Simon's instructions.
>
> # rm -rf /var/lib/mailman
>
> Hopefully this will help you get up and going.
>
> -Kyle
>
> On Thu, Jul 13, 2017 at 10:16 AM, Rafael Mora <rafael.mora.guti(a)gmail.com>
> wrote:
>
>> Hello Kyle,
>>
>> What steps do you suggest in order to install mailman v2 via rpm's??
>>
>> Thank you.
>>
>> El mar., 11 jul. 2017 a las 15:13, Kyle Richardson (<
>> kylerichardson2(a)gmail.com>) escribió:
>>
>>> Looks like you are using the fhs (filesystem hierarchy standard) layout;
>>> is that what you intend? I would suggest changing the layout to "dev" for
>>> testing purposes. This will use your mailman.cfg/../.. as the var directory.
>>>
>>> Is it possible you also have mailman v2 installed via rpms?
>>>
>>> -Kyle
>>>
>>> On Tue, Jul 11, 2017 at 3:41 PM, Rafael Mora <rafael.mora.guti(a)gmail.com
>>> > wrote:
>>>
>>>> Hello,
>>>>
>>>> Here it's mailman info:
>>>> [root@localhost bin]# ./mailman info
>>>> GNU Mailman 3.2.0a1 (La Villa Strangiato)
>>>> Python 3.6.0 (default, Jul 7 2017, 11:59:56)
>>>> [GCC 4.8.5 20150623 (Red Hat 4.8.5-11)]
>>>> config file: /etc/mailman.cfg
>>>> db url: sqlite:////var/lib/mailman/data/mailman.db
>>>> devmode: DISABLED
>>>> REST root url: http://localhost:8001/3.1/
>>>> REST credentials: restadmin:restpass
>>>>
>>>>
>>>> Here it's mailman conf:
>>>> [root@localhost bin]# ./mailman conf
>>>> [antispam] header_checks:
>>>> [antispam] jump_chain: hold
>>>> [archiver.mail_archive] class: mailman.archiving.mailarchive.MailArchive
>>>> [archiver.mail_archive] clobber_date: maybe
>>>> [archiver.mail_archive] clobber_skew: 1d
>>>> [archiver.mail_archive] configuration:
>>>> python:mailman.config.mail_archive
>>>> [archiver.mail_archive] enable: no
>>>> [archiver.master] class:
>>>> [archiver.master] clobber_date: maybe
>>>> [archiver.master] clobber_skew: 1d
>>>> [archiver.master] configuration: changeme
>>>> [archiver.master] enable: no
>>>> [archiver.mhonarc] class: mailman.archiving.mhonarc.MHonArc
>>>> [archiver.mhonarc] clobber_date: maybe
>>>> [archiver.mhonarc] clobber_skew: 1d
>>>> [archiver.mhonarc] configuration: python:mailman.config.mhonarc
>>>> [archiver.mhonarc] enable: no
>>>> [archiver.prototype] class: mailman.archiving.prototype.Prototype
>>>> [archiver.prototype] clobber_date: maybe
>>>> [archiver.prototype] clobber_skew: 1d
>>>> [archiver.prototype] configuration: changeme
>>>> [archiver.prototype] enable: no
>>>> [bounces] register_bounces_every: 15m
>>>> [database] class: mailman.database.sqlite.SQLiteDatabase
>>>> [database] debug: no
>>>> [database] url: sqlite:///$DATA_DIR/mailman.db
>>>> [devmode] enabled: no
>>>> [devmode] recipient:
>>>> [devmode] testing: no
>>>> [devmode] wait: 60s
>>>> [digests] mime_digest_keep_headers:
>>>> Date From To Cc Subject Message-ID Keywords
>>>> In-Reply-To References Content-Type MIME-Version
>>>> Content-Transfer-Encoding Precedence Reply-To
>>>> Message List-Post
>>>> [digests] plain_digest_keep_headers:
>>>> Message Date From
>>>> Subject To Cc
>>>> Message-ID Keywords
>>>> Content-Type
>>>> [dmarc] cache_lifetime: 7d
>>>> [dmarc] org_domain_data_url:
>>>> https://publicsuffix.org/list/public_suffix_list.dat
>>>> [dmarc] resolver_lifetime: 5s
>>>> [dmarc] resolver_timeout: 3s
>>>> [language.ar] charset: utf-8
>>>> [language.ar] description: Arabic
>>>> [language.ar] enabled: yes
>>>> [language.ast] charset: iso-8859-1
>>>> [language.ast] description: Asturian
>>>> [language.ast] enabled: yes
>>>> [language.ca] charset: utf-8
>>>> [language.ca] description: Catalan
>>>> [language.ca] enabled: yes
>>>> [language.cs] charset: iso-8859-2
>>>> [language.cs] description: Czech
>>>> [language.cs] enabled: yes
>>>> [language.da] charset: iso-8859-1
>>>> [language.da] description: Danish
>>>> [language.da] enabled: yes
>>>> [language.de] charset: iso-8859-1
>>>> [language.de] description: German
>>>> [language.de] enabled: yes
>>>> [language.el] charset: iso-8859-7
>>>> [language.el] description: Greek
>>>> [language.el] enabled: yes
>>>> [language.es] charset: iso-8859-1
>>>> [language.es] description: Spanish
>>>> [language.es] enabled: yes
>>>> [language.et] charset: iso-8859-15
>>>> [language.et] description: Estonian
>>>> [language.et] enabled: yes
>>>> [language.eu] charset: iso-8859-15
>>>> [language.eu] description: Euskara
>>>> [language.eu] enabled: yes
>>>> [language.fi] charset: iso-8859-1
>>>> [language.fi] description: Finnish
>>>> [language.fi] enabled: yes
>>>> [language.fr] charset: iso-8859-1
>>>> [language.fr] description: French
>>>> [language.fr] enabled: yes
>>>> [language.gl] charset: utf-8
>>>> [language.gl] description: Galician
>>>> [language.gl] enabled: yes
>>>> [language.he] charset: utf-8
>>>> [language.he] description: Hebrew
>>>> [language.he] enabled: yes
>>>> [language.hr] charset: iso-8859-2
>>>> [language.hr] description: Croatian
>>>> [language.hr] enabled: yes
>>>> [language.hu] charset: iso-8859-2
>>>> [language.hu] description: Hungarian
>>>> [language.hu] enabled: yes
>>>> [language.ia] charset: iso-8859-15
>>>> [language.ia] description: Interlingua
>>>> [language.ia] enabled: yes
>>>> [language.it] charset: iso-8859-1
>>>> [language.it] description: Italian
>>>> [language.it] enabled: yes
>>>> [language.ja] charset: euc-jp
>>>> [language.ja] description: Japanese
>>>> [language.ja] enabled: yes
>>>> [language.ko] charset: euc-kr
>>>> [language.ko] description: Korean
>>>> [language.ko] enabled: yes
>>>> [language.lt] charset: iso-8859-13
>>>> [language.lt] description: Lithuanian
>>>> [language.lt] enabled: yes
>>>> [language.nl] charset: iso-8859-1
>>>> [language.nl] description: Dutch
>>>> [language.nl] enabled: yes
>>>> [language.no] charset: iso-8859-1
>>>> [language.no] description: Norwegian
>>>> [language.no] enabled: yes
>>>> [language.pl] charset: iso-8859-2
>>>> [language.pl] description: Polish
>>>> [language.pl] enabled: yes
>>>> [language.pt] charset: iso-8859-1
>>>> [language.pt] description: Protuguese
>>>> [language.pt] enabled: yes
>>>> [language.pt_BR] charset: iso-8859-1
>>>> [language.pt_BR] description: Protuguese (Brazil)
>>>> [language.pt_BR] enabled: yes
>>>> [language.ro] charset: iso-8859-2
>>>> [language.ro] description: Romanian
>>>> [language.ro] enabled: yes
>>>> [language.ru] charset: koi8-r
>>>> [language.ru] description: Russian
>>>> [language.ru] enabled: yes
>>>> [language.sk] charset: utf-8
>>>> [language.sk] description: Slovak
>>>> [language.sk] enabled: yes
>>>> [language.sl] charset: iso-8859-2
>>>> [language.sl] description: Slovenian
>>>> [language.sl] enabled: yes
>>>> [language.sr] charset: utf-8
>>>> [language.sr] description: Serbian
>>>> [language.sr] enabled: yes
>>>> [language.sv] charset: iso-8859-1
>>>> [language.sv] description: Swedish
>>>> [language.sv] enabled: yes
>>>> [language.tr] charset: iso-8859-9
>>>> [language.tr] description: Turkish
>>>> [language.tr] enabled: yes
>>>> [language.uk] charset: utf-8
>>>> [language.uk] description: Ukrainian
>>>> [language.uk] enabled: yes
>>>> [language.vi] charset: utf-8
>>>> [language.vi] description: Vietnamese
>>>> [language.vi] enabled: yes
>>>> [language.zh_CN] charset: utf-8
>>>> [language.zh_CN] description: Chinese
>>>> [language.zh_CN] enabled: yes
>>>> [language.zh_TW] charset: utf-8
>>>> [language.zh_TW] description: Chinese (Taiwan)
>>>> [language.zh_TW] enabled: yes
>>>> [logging.archiver] datefmt: %b %d %H:%M:%S %Y
>>>> [logging.archiver] format: %(asctime)s (%(process)d) %(message)s
>>>> [logging.archiver] level: info
>>>> [logging.archiver] path: mailman.log
>>>> [logging.archiver] propagate: no
>>>> [logging.bounce] datefmt: %b %d %H:%M:%S %Y
>>>> [logging.bounce] format: %(asctime)s (%(process)d) %(message)s
>>>> [logging.bounce] level: info
>>>> [logging.bounce] path: bounce.log
>>>> [logging.bounce] propagate: no
>>>> [logging.config] datefmt: %b %d %H:%M:%S %Y
>>>> [logging.config] format: %(asctime)s (%(process)d) %(message)s
>>>> [logging.config] level: info
>>>> [logging.config] path: mailman.log
>>>> [logging.config] propagate: no
>>>> [logging.database] datefmt: %b %d %H:%M:%S %Y
>>>> [logging.database] format: %(asctime)s (%(process)d) %(message)s
>>>> [logging.database] level: warn
>>>> [logging.database] path: mailman.log
>>>> [logging.database] propagate: no
>>>> [logging.debug] datefmt: %b %d %H:%M:%S %Y
>>>> [logging.debug] format: %(asctime)s (%(process)d) %(message)s
>>>> [logging.debug] level: info
>>>> [logging.debug] path: debug.log
>>>> [logging.debug] propagate: no
>>>> [logging.error] datefmt: %b %d %H:%M:%S %Y
>>>> [logging.error] format: %(asctime)s (%(process)d) %(message)s
>>>> [logging.error] level: info
>>>> [logging.error] path: mailman.log
>>>> [logging.error] propagate: no
>>>> [logging.fromusenet] datefmt: %b %d %H:%M:%S %Y
>>>> [logging.fromusenet] format: %(asctime)s (%(process)d) %(message)s
>>>> [logging.fromusenet] level: info
>>>> [logging.fromusenet] path: mailman.log
>>>> [logging.fromusenet] propagate: no
>>>> [logging.http] datefmt: %b %d %H:%M:%S %Y
>>>> [logging.http] format: %(asctime)s (%(process)d) %(message)s
>>>> [logging.http] level: info
>>>> [logging.http] path: mailman.log
>>>> [logging.http] propagate: no
>>>> [logging.locks] datefmt: %b %d %H:%M:%S %Y
>>>> [logging.locks] format: %(asctime)s (%(process)d) %(message)s
>>>> [logging.locks] level: info
>>>> [logging.locks] path: mailman.log
>>>> [logging.locks] propagate: no
>>>> [logging.mischief] datefmt: %b %d %H:%M:%S %Y
>>>> [logging.mischief] format: %(asctime)s (%(process)d) %(message)s
>>>> [logging.mischief] level: info
>>>> [logging.mischief] path: mailman.log
>>>> [logging.mischief] propagate: no
>>>> [logging.root] datefmt: %b %d %H:%M:%S %Y
>>>> [logging.root] format: %(asctime)s (%(process)d) %(message)s
>>>> [logging.root] level: info
>>>> [logging.root] path: mailman.log
>>>> [logging.root] propagate: no
>>>> [logging.runner] datefmt: %b %d %H:%M:%S %Y
>>>> [logging.runner] format: %(asctime)s (%(process)d) %(message)s
>>>> [logging.runner] level: info
>>>> [logging.runner] path: mailman.log
>>>> [logging.runner] propagate: no
>>>> [logging.smtp] datefmt: %b %d %H:%M:%S %Y
>>>> [logging.smtp] every: $msgid smtp to $listname for $recip recips,
>>>> completed
>>>> in $time seconds
>>>> [logging.smtp] failure: $msgid delivery to $recip failed with code
>>>> $smtpcode, $smtpmsg
>>>> [logging.smtp] format: %(asctime)s (%(process)d) %(message)s
>>>> [logging.smtp] level: info
>>>> [logging.smtp] path: smtp.log
>>>> [logging.smtp] propagate: no
>>>> [logging.smtp] refused: $msgid post to $listname from $sender, $size
>>>> bytes,
>>>> $refused failures
>>>> [logging.smtp] success: $msgid post to $listname from $sender, $size
>>>> bytes
>>>> [logging.subscribe] datefmt: %b %d %H:%M:%S %Y
>>>> [logging.subscribe] format: %(asctime)s (%(process)d) %(message)s
>>>> [logging.subscribe] level: info
>>>> [logging.subscribe] path: mailman.log
>>>> [logging.subscribe] propagate: no
>>>> [logging.vette] datefmt: %b %d %H:%M:%S %Y
>>>> [logging.vette] format: %(asctime)s (%(process)d) %(message)s
>>>> [logging.vette] level: info
>>>> [logging.vette] path: mailman.log
>>>> [logging.vette] propagate: no
>>>> [mailman] cache_life: 7d
>>>> [mailman] default_language: en
>>>> [mailman] email_commands_max_lines: 10
>>>> [mailman] filtered_messages_are_preservable: no
>>>> [mailman] html_to_plain_text_command: /usr/bin/lynx -dump $filename
>>>> [mailman] layout: fhs
>>>> [mailman] listname_chars: [-_.0-9a-z]
>>>> [mailman] noreply_address: noreply
>>>> [mailman] pending_request_life: 3d
>>>> [mailman] post_hook:
>>>> [mailman] pre_hook:
>>>> [mailman] sender_headers: from from_ reply-to sender
>>>> [mailman] site_owner: changeme(a)example.com
>>>> [mta] configuration: python:mailman.config.postfix
>>>> [mta] delivery_retry_period: 5d
>>>> [mta] incoming: mailman.mta.postfix.LMTP
>>>> [mta] lmtp_host: 127.0.0.1 # IP where Mailman should listen
>>>> for
>>>> emails from MTA
>>>> [mta] lmtp_port: 8024
>>>> [mta] max_autoresponses_per_day: 10
>>>> [mta] max_delivery_threads: 0
>>>> [mta] max_recipients: 500
>>>> [mta] max_sessions_per_connection: 0
>>>> [mta] outgoing: mailman.mta.deliver.deliver
>>>> [mta] remove_dkim_headers: no
>>>> [mta] smtp_host: 127.0.0.1 # IP Where MTA is listening for
>>>> emails
>>>> [mta] smtp_pass:
>>>> [mta] smtp_port: 25
>>>> [mta] smtp_user:
>>>> [mta] verp_confirm_format: $address+$cookie
>>>> [mta] verp_confirm_regexp:
>>>> ^(.*<)?(?P<addr>[^+]+?)\+(?P<cookie>[^@]+)@.*$
>>>> [mta] verp_confirmations: no
>>>> [mta] verp_delimiter: +
>>>> [mta] verp_delivery_interval: 0
>>>> [mta] verp_format: ${bounces}+${local}=${domain}
>>>> [mta] verp_personalized_deliveries: no
>>>> [mta] verp_probe_format: $bounces+$token@$domain
>>>> [mta] verp_probe_regexp: ^(?P<bounces>[^+]+?)\+(?P<token>[^@]+)@.*$
>>>> [mta] verp_probes: no
>>>> [mta] verp_regexp:
>>>> ^(?P<bounces>[^+]+?)\+(?P<local>[^=]+)=(?P<domain>[^@]+)@.*$
>>>> [nntp] host:
>>>> [nntp] password:
>>>> [nntp] port:
>>>> [nntp] remove_headers:
>>>> nntp-posting-host nntp-posting-date x-trace
>>>> x-complaints-to xref date-received posted
>>>> posting-version relay-version received
>>>> [nntp] rewrite_duplicate_headers:
>>>> To X-Original-To
>>>> CC X-Original-CC
>>>> Content-Transfer-Encoding X-Original-Content-Transfer-Encoding
>>>> MIME-Version X-MIME-Version
>>>> [nntp] user:
>>>> [passwords] configuration: python:mailman.config.passlib
>>>> [passwords] password_length: 8
>>>> [shell] banner: Welcome to the GNU Mailman shell
>>>> [shell] history_file:
>>>> [shell] prompt: >>>
>>>> [shell] use_ipython: no
>>>> [styles] default: legacy-default
>>>> [styles] paths:
>>>> mailman.styles
>>>> [webservice] admin_pass: restpass
>>>> [webservice] admin_user: restadmin
>>>> [webservice] api_version: 3.1
>>>> [webservice] hostname: localhost
>>>> [webservice] port: 8001
>>>> [webservice] show_tracebacks: yes
>>>> [webservice] use_https: no
>>>>
>>>>
>>>> What do you suggest? Thank you
>>>>
>>>> El mar., 11 jul. 2017 a las 14:31, Simon Hanna (<
>>>> simon.hanna(a)serve-me.info>)
>>>> escribió:
>>>>
>>>> > Below is how I would recommend to run Mailman for production using a
>>>> > virtualenv
>>>> >
>>>> > # useradd -r -m -d /var/lib/mailman mailman
>>>> >
>>>> > # su - mailman
>>>> >
>>>> >
>>>> > $ python3 -m venv env
>>>> > $ source env/bin/activate
>>>> > $ pip install mailman
>>>> > $ mailman info
>>>> >
>>>> > Now you should have a working configuration in /var/lib/mailman/var/
>>>> >
>>>> > to run mailman you don't need to activate the virtualenv, just use the
>>>> > executable /var/lib/mailman/env/bin/mailman
>>>> >
>>>> > cheers,
>>>> > Simon
>>>> > _______________________________________________
>>>> > Mailman-users mailing list
>>>> > mailman-users(a)mailman3.org
>>>> > https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>>>> >
>>>> --
>>>>
>>>> Atentamente / Best Regards
>>>>
>>>> Ing. Rafael Mora
>>>> _______________________________________________
>>>> Mailman-users mailing list
>>>> mailman-users(a)mailman3.org
>>>> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>>>>
>>>
>>> --
>>
>> Atentamente / Best Regards
>>
>> Ing. Rafael Mora
>>
>
> --
Atentamente / Best Regards
Ing. Rafael Mora
7 years, 9 months

[MM3-users] Re: very few moderation capabilities for moderators
by Guillermo Hernandez (Oldno7)
On 18/9/21 7:10, Stephen J. Turnbull wrote:
> Guillermo Hernandez (Oldno7) via Mailman-users writes:
>
> > But? I'm talking about a moderator can put a member mails in hold when
> > it is marked to accept. To prevent putting more gas in the fire.
>
> Not sure what you want here. I don't see how this is supposed to work
> -- if a subscriber is set to accept, the moderator will never see the
> posts until they're distributed to the subscribers.
I'll try to explain:
In my experience, the most useful tool to cool down a thread that has
converted in a flame is to stop free distribution (hold) new mails
coming from some suscribers (the most infuriated, or maybe the more
infuriating -I don't know if this word, infuriating, makes sense in
english-). You need to slow down the interchange of burning mails, and
perhaps discard some of them. Make announcements to the rest of the
suscribers and try to reconduce the waters. Yes: it can be done by the
owner or the list or administrators. But this admin capability cannot be
done by a so called "moderator". The moderators, in mailman, cannot
moderate the flux of a overheated list.
I'm talking about lists that otherwise have a normal and pausated
exchange of mails, but some subject becomes a battlefield, and in a
period of minutes you have hundreds of mails...
And the admins are sleeping (because in their timezone are 03:00 am) and
the moderators that are awake have their hands tied.
A moderator doesn't have to be capable of configuring lists, but they
would have to be capable to moderate the flux of mails when it's necessary.
The rest of your post is very appreciated, as always.
Thanks a lot.
>
> But that inspires a short rant ;-) a little about the implied feature
> request.
>
> First let me point out that there are a lot of lists out there where
> the owner is relatively laissez faire, and some moderators are a lot
> more activist. In the modern environment, it turns out to be
> important for many lists to vet new subscribers' first posts, and
> moderators basically function to give prompt response to non-spam
> first posts. So I don't want to just give moderators the same
> privileges as owners here, because they'll impose restrictions that
> the owner doesn't want, and the current low-privilege moderators seem
> to work just fine for a lot of lists.
>
> I don't object in principle to allowing *owners* to give moderators
> more privileges. On the one hand, it's often case that owners trust
> their colleagues with owner-level privileges. So that's an option we
> already have -- no moderators, all owners.
>
> So maybe you *don't* like the all-owners strategy (and it's obvious
> why many owners won't, no need to bend my ear on that). The design
> problem is that there are a lot of capabilities, and it's not obvious
> to me that there's a specific collection of them that owners want to
> grant to their moderators. Maybe we can get rough consensus on that
> list, and then it's not hard to get to working code. I'm not going to
> start the conversation here (I don't personally have such a list), but
> I'm happy to listen, and provide advice to anyone who wants to submit
> a merge request.
>
> If there isn't consensus, then we're going to need a framework for
> moderator capability management so that owners can pick and choose.
> That's something I'd be interested in working on myself if there's
> user demand for it. (There's a long list of things I'm interested in,
> and not a lot of work actually done recently, so no promises. But it
> could happen! ;-) It could also end up on the GSoC idea list for next
> year. :-)
>
> Another capability I have an interest in is closing replies to
> specific posts and to whole threads. Again, that's going to require
> some thinking about the administration interface. It's easy enough to
> do the basics if there's an archive (allow the moderator to click on a
> post, and either disable replies to that post or replies to all thread
> descendents), but I can imagine lots of related capabilities (reenable
> replies for "sane" subthreads, automatic expiration of the
> restriction, ...).
>
> And of course all of the above (except unconditionally granting
> moderators the capability to apply a HOLD to users) requires REST
> updates, I suspect.
>
> As always: code contributions welcome.
>
> Steve
>
>
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
--
3 years, 7 months

[MM3-users] Re: config.pck from mailman2 has characters that won't import with import21
by Mark Sapiro
On 7/20/24 10:19 PM, Greg Newby wrote:
> Hi. I've set up MM3 in a venv successfully and am importing my legacy lists.
>
> I no longer have a running instance of mailman2, so don't know how I can
> change the offending list settings (i.e., in config.pck).
>
> The problem seems to be a digest footer from the previous incarnation of
> the list (list name is edited below, to protect the innocent):
That's not the issue.
> (venv) mailman@mail:~$ mailman import21 abc(a)lists.abcabcabc.org
> /var/lib/mailman/lists/abc/config.pck
> Unable to convert mailing list attribute: msg_footer with value
> "_______________________________________________
> ${display_name} mailing list -- ${listname}
> To unsubscribe send an email to ${short_listname}-leave@${domain}
> %(web_page_url)slistinfo/%(_internal_name)s"
> Unable to convert mailing list attribute: digest_footer with value
> "_______________________________________________
> ${display_name} mailing list -- ${listname}
> To unsubscribe send an email to ${short_listname}-leave@${domain}
> %(web_page_url)slistinfo/%(_internal_name)s"
The above are non-fatal. The importer just won't make list specific
templates for those. If you need the footers to be different from the
defaults, you will need to create them manually.
> Importing members [------------------------------------] 0%
> Traceback (most recent call last):
> File "/opt/mailman/venv/bin/mailman", line 8, in <module>
> sys.exit(main())
> ^^^^^^
> File "/opt/mailman/venv/lib/python3.12/site-packages/click/core.py", line
> 1157, in __call__
> return self.main(*args, **kwargs)
> ^^^^^^^^^^^^^^^^^^^^^^^^^^
> File "/opt/mailman/venv/lib/python3.12/site-packages/click/core.py", line
> 1078, in main
> rv = self.invoke(ctx)
> ^^^^^^^^^^^^^^^^
> File
> "/opt/mailman/venv/lib/python3.12/site-packages/mailman/bin/mailman.py",
> line 69, in invoke
> return super().invoke(ctx)
> ^^^^^^^^^^^^^^^^^^^
> File "/opt/mailman/venv/lib/python3.12/site-packages/click/core.py", line
> 1688, in invoke
> return _process_result(sub_ctx.command.invoke(sub_ctx))
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> File "/opt/mailman/venv/lib/python3.12/site-packages/click/core.py", line
> 1434, in invoke
> return ctx.invoke(self.callback, **ctx.params)
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> File "/opt/mailman/venv/lib/python3.12/site-packages/click/core.py", line
> 783, in invoke
> return __callback(*args, **kwargs)
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^
> File
> "/opt/mailman/venv/lib/python3.12/site-packages/click/decorators.py", line
> 33, in new_func
> return f(get_current_context(), *args, **kwargs)
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> File
> "/opt/mailman/venv/lib/python3.12/site-packages/mailman/commands/cli_import.py",
> line 89, in import21
> import_config_pck(mlist, config_dict)
> File
> "/opt/mailman/venv/lib/python3.12/site-packages/mailman/utilities/importer.py",
> line 578, in import_config_pck
> import_roster(mlist, config_dict, members, MemberRole.member)
> File
> "/opt/mailman/venv/lib/python3.12/site-packages/mailman/utilities/importer.py",
> line 625, in import_roster
> _import_roster(mlist, config_dict, iterator, role, action=action)
> File
> "/opt/mailman/venv/lib/python3.12/site-packages/mailman/utilities/importer.py",
> line 645, in _import_roster
> if IBanManager(mlist).is_banned(email):
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> File
> "/opt/mailman/venv/lib/python3.12/site-packages/mailman/database/transaction.py",
> line 106, in wrapper
> return function(args[0], config.db.store, *args[1:], **kws)
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> File
> "/opt/mailman/venv/lib/python3.12/site-packages/mailman/model/bans.py",
> line 103, in is_banned
> re.match(ban.email, email, re.IGNORECASE) is not None):
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> File "/usr/lib/python3.12/re/__init__.py", line 167, in match
> return _compile(pattern, flags).match(string)
> ^^^^^^^^^^^^^^^^^^^^^^^^
> File "/usr/lib/python3.12/re/__init__.py", line 307, in _compile
> p = _compiler.compile(pattern, flags)
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> File "/usr/lib/python3.12/re/_compiler.py", line 745, in compile
> p = _parser.parse(p, flags)
> ^^^^^^^^^^^^^^^^^^^^^^^
> File "/usr/lib/python3.12/re/_parser.py", line 979, in parse
> p = _parse_sub(source, state, flags & SRE_FLAG_VERBOSE, 0)
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> File "/usr/lib/python3.12/re/_parser.py", line 460, in _parse_sub
> itemsappend(_parse(source, state, verbose, nested + 1,
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> File "/usr/lib/python3.12/re/_parser.py", line 690, in _parse
> raise source.error("multiple repeat",
> re.error: multiple repeat at position 11
The list's ban_list has an invalid regexp.
Do the following in Mailman 3's `mailman shell`
```
bin/mailman shell
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.
>>> import pickle
>>> from contextlib import ExitStack
>>> from mailman.commands.cli_import import _Mailman, _Bouncer
>>> from mailman.utilities.modules import hacked_sys_modules
>>> with ExitStack() as resources:
... resources.enter_context(hacked_sys_modules('Mailman', _Mailman))
... resources.enter_context(
... hacked_sys_modules('Mailman.Bouncer', _Bouncer))
... with open('/path/to/config.pck', 'rb+') as fp:
... data = pickle.load(fp)
... print(data['ban_list'])
... data['ban_list'] = []
... fp.seek(0)
... pickle.dump(data, fp)
...
>>>
```
This will print the ban_list so you can see it and then save the
config.pck with an empty ban_list. That config.pck will no longer be
usable in Mailman 2.1 because the pickle protocol is too high and the
bounce_info items if any will be corrupted, but it should work with
import21.
Note that all the ExitStack and hacked_sys_modules stuff is only needed
if there is bounce_info in the config.pck, but it doesn't hurt in any case.
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
9 months

[MM3-users] Re: The message is larger than the 40 KB maximum size
by Mohsen Masoudfar
It seems something is fundamentally wrong with Hyperkitty:
From /var/log/mailman3/mailman.log
---
49 Sep 21 21:49:25 2020 (24925) HyperKitty failure on http://localhost/mailman3/hyperkitty/api/mailman/urls: <html><title>Auth required</title><body>
50 <h1>Authorization Required</h1></body></html> (401)
51 Sep 21 21:49:25 2020 (24925) HyperKitty failure on http://localhost/mailman3/hyperkitty/api/mailman/urls: <html><title>Auth required</title><body>
52 <h1>Authorization Required</h1></body></html> (401)
53 Sep 21 21:49:25 2020 (24925) HyperKitty failure on http://localhost/mailman3/hyperkitty/api/mailman/urls: <html><title>Auth required</title><body>
54 <h1>Authorization Required</h1></body></html> (401)
55 Sep 21 21:49:26 2020 (24918) HyperKitty failure on http://localhost/mailman3/hyperkitty/api/mailman/archive: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2. 0//EN">
56 <html><head>
57 <title>503 Service Unavailable</title>
58 </head><body>
59 <h1>Service Unavailable</h1>
60 <p>The server is temporarily unable to service your
61 request due to maintenance downtime or capacity
62 problems. Please try again later.</p>
63 <hr>
64 <address>Apache/2.4.29 (Ubuntu) Server at localhost Port 80</address>
65 </body></html>
66 (503)
67 Sep 21 21:49:26 2020 (24918) Exception in the HyperKitty archiver: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
68 <html><head>
69 <title>503 Service Unavailable</title>
70 </head><body>
71 <h1>Service Unavailable</h1>
72 <p>The server is temporarily unable to service your
73 request due to maintenance downtime or capacity
74 problems. Please try again later.</p>
75 <hr>
76 <address>Apache/2.4.29 (Ubuntu) Server at localhost Port 80</address>
77 </body></html>
78 Sep 21 21:49:26 2020 (24918) Traceback (most recent call last):
79 File "/usr/lib/python3/dist-packages/mailman_hyperkitty/__init__.py", line 154, in _archive_message
80 url = self._send_message(mlist, msg)
81 File "/usr/lib/python3/dist-packages/mailman_hyperkitty/__init__.py", line 210, in _send_message
82 raise ValueError(result.text)
83 ValueError: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
84 <html><head>
85 <title>503 Service Unavailable</title>
86 </head><body>
87 <h1>Service Unavailable</h1>
88 <p>The server is temporarily unable to service your
89 request due to maintenance downtime or capacity
90 problems. Please try again later.</p>
---
Thanks
Mohsen
-----Original Message-----
From: Mohsen Masoudfar <mmasoudf(a)aaas.org>
Sent: Monday, September 21, 2020 12:24 PM
To: Mark Sapiro <mark(a)msapiro.net>; mailman-users(a)mailman3.org
Subject: [MM3-users] Re: The message is larger than the 40 KB maximum size
[EXTERNAL EMAIL]
Hi Mark,
Thank you Mark and Phil for your help.
It seems I got stuck!
1- I tried to set up the max_message_size in WUI under: listname > settings > Message Acceptance > Maximum message size to 0.
After hitting save button, I got the error message: " An error occured: Unknown attribute: max_message_size"
2- I checked the python files and found this file, where, it seems, the default value is defined:
/usr/lib/python3/dist-packages/mailman/styles/base.py : mlist.max_message_size = 40
I changed this value to 0, saved the file, restarted the mailman and postgresql (not sure if needed) and sent an email with a large attachment to my test list with just two members. I got the response email:
The message is being held because: The message is larger than the 40 KB maximum size
3- I totally agree that the most important issue is the fact that the message vanished with the production list.
I repeated the same with a (test) list which has two members, I got the email mentioning the 40 KB limit and I could release it. This is how I am running my tests now. I repeated it with the original list (with 197 members) the message disappeared again. I can send an email to the list with 197 members, without this attachment and it works.
4- I checked the folders, under /var/lib/mailman3/queue/, all folders are empty: archive/ bad/ bounces/ command/ digest/ in/ nntp/ out/ pipeline/ retry/ shunt/ virgin/
Thanks
Mohsen
-----Original Message-----
From: Mark Sapiro <mark(a)msapiro.net>
Sent: Friday, September 18, 2020 4:00 PM
To: mailman-users(a)mailman3.org
Subject: [MM3-users] Re: The message is larger than the 40 KB maximum size
[EXTERNAL EMAIL]
On 9/18/20 12:48 PM, Phil Stracchino wrote:
> On 2020-09-18 15:32, Mohsen Masoudfar wrote:
>> Hi,
>>
>> I am trying to find how I may change this. I have an attachment of 800 KB, and when I post it to the list, I do not get any response and nothing is hold. It looks like the message is just dropped.
>
>
> Assuming that this works roughly the same in mm3 as it does in mm2,
> you can set max_message_size in your list configuration. It defaults
> to 40; units are KB.
Yes, and you can set it to zero for "unlimited", but even if that is a satisfactory workaround, the much more interesting question, at least to me, is why does the message "disappear".
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
_______________________________________________
Mailman-users mailing list -- mailman-users(a)mailman3.org To unsubscribe send an email to mailman-users-leave(a)mailman3.org
https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.mai…
_______________________________________________
Mailman-users mailing list -- mailman-users(a)mailman3.org To unsubscribe send an email to mailman-users-leave(a)mailman3.org
https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.mai…
4 years, 7 months

[MM3-users] Pd CRON mailman gatenews
by Pierre Malard
Hello,
Our infrastructure:
VM Debian 11
Mailman3 3.3.3-1 from BullsEye Main repository
We have recently been receiving this kind of messages from CRON with the execution of "mailman gatenews" :
——————————————————————————————————————————————————
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/flufl/lock/_lockfile.py", line 321, in lock
os.link <http://os.link/>(self._claimfile, self._lockfile)
FileExistsError: [Errno 17] File exists: '/var/lib/mailman3/locks/dbcreate.lck|listesman.int.cines.teledetection.fr <http://listesman.int.cines.teledetection.fr/>|466566|5365511256557879875' -> '/var/lib/mailman3/locks/dbcreate.lck'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/bin/mailman", line 33, in <module>
sys.exit(load_entry_point('mailman==3.3.3', 'console_scripts', 'mailman')())
File "/usr/lib/python3/dist-packages/click/core.py", line 829, in __call__
return self.main(*args, **kwargs)
File "/usr/lib/python3/dist-packages/click/core.py", line 781, in main
with self.make_context(prog_name, args, **extra) as ctx:
File "/usr/lib/python3/dist-packages/click/core.py", line 700, in make_context
self.parse_args(ctx, args)
File "/usr/lib/python3/dist-packages/click/core.py", line 1212, in parse_args
rest = Command.parse_args(self, ctx, args)
File "/usr/lib/python3/dist-packages/click/core.py", line 1048, in parse_args
value, args = param.handle_parse_result(ctx, opts, args)
File "/usr/lib/python3/dist-packages/click/core.py", line 1630, in handle_parse_result
value = invoke_param_callback(self.callback, ctx, self, value)
File "/usr/lib/python3/dist-packages/click/core.py", line 123, in invoke_param_callback
return callback(ctx, param, value)
File "/usr/lib/python3/dist-packages/mailman/bin/mailman.py", line 94, in initialize_config
initialize(value)
File "/usr/lib/python3/dist-packages/mailman/core/initialize.py", line 218, in initialize
initialize_2(propagate_logs=propagate_logs)
File "/usr/lib/python3/dist-packages/mailman/core/initialize.py", line 177, in initialize_2
config.db = getUtility(IDatabaseFactory, utility_name).create()
File "/usr/lib/python3/dist-packages/mailman/database/factory.py", line 50, in create
with Lock(os.path.join(config.LOCK_DIR, 'dbcreate.lck')):
File "/usr/lib/python3/dist-packages/flufl/lock/_lockfile.py", line 439, in __enter__
self.lock()
File "/usr/lib/python3/dist-packages/flufl/lock/_lockfile.py", line 353, in lock
elif self._read() == self._claimfile:
File "/usr/lib/python3/dist-packages/flufl/lock/_lockfile.py", line 502, in _read
with open(self._lockfile) as fp:
PermissionError: [Errno 13] Permission denied: '/var/lib/mailman3/locks/dbcreate.lck'
——————————————————————————————————————————————————
CRON content:
——————————————————————————————————————————————————
# /etc/cron.d/mailman3: crontab entries for the mailman3 package
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# At 8AM, send out notifices of pending requests to list moderators
0 8 * * * list if [ -x /usr/bin/mailman ]; then /usr/bin/mailman notify; fi
# At 12AM, send mail digests for lists that do periodic as well as threshold delivery
0 12 * * * list if [ -x /usr/bin/mailman ]; then /usr/bin/mailman digests --periodic; fi
# Every 15 minutes, gate messages from usenet to those lists which have the gateway configured
*/15 * * * * list if [ -x /usr/bin/mailman ]; then /usr/bin/mailman gatenews; fi
——————————————————————————————————————————————————
I thought, given the last line, a problem of rights. It is not the case ! The directory and the files contained in /var/lib/mailman3/locks belong to the user "list".
When I run "/usr/bin/mailman gatenews" by hand everything is correct.
The questions I have are these:
We have 8000 files "dbcreate.lck..." in the directory "/var/lib/mailman3/locks".
What are they for?
Can we delete them?
We have 2 files "master.lck..." dated from the day after tomorrow !
What is this date?
Aren't these files the problem?
Thanks for your help
--
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
À propos de nos chers économistes :
«Les habiles, dans notre siècle, se sont décernés a eux-mêmes la
qualification d’homme d’état. [...] ces politiques, ingénieux
a mettre aux fictions profitables un masque de nécessité.»
Victor Hugo : “Les misérables”, La pléiade, Gallimard, P. 843
|\ _,,,---,,_
/,`.-'`' -. ;-;;,_
|,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 <--
--
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
«Le courage, c'est de chercher la vérité et de la dire,
c'est de ne pas subir la loi du mensonge triomphant qui passe
et de ne pas faire écho de notre âme, de notre bouche et de nos mains
aux applaudissements imbéciles et aux huées fanatiques.»
Jean Jaures - "Discours de jeunesse" - 1903
("`-/")_.-'"``-._
. . `; -._ )-;-,_`)
(v_,)' _ )`-.\ ``-'
_.- _..-_/ / ((.'
((,.-' ((,/ π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.
2 years, 1 month

[MM3-users] Re: Question about adding addresses using the REST API
by Stephen Daniel
Thanks for the thoughtful feedback. It's really helpful.
The organization's current website is old, and at some point due for major
upgrades. At the moment, my task is to move it from a set of servers
operated privately by one of our members onto resources we control, and
update the software stack to something current. So I'm moving it to Google
Cloud and using Mailman3 instead of Mailman2. There is some urgency to
this task, so I'm planning to live within the well-defined callouts the
site makes for "subscribe" and "unsubscribe".
Once this transition is done I need to do a major overhaul, starting with
formal requirements gathering, leading to design improvements, etc. During
this phase I will tackle tighter coupling of the website database and
mailman3's database. I expect this to include allowing people access to
the Postorious interface, allowing them to manage their subscriptions with
Postorious, if they choose, while continuing to support the simple
checkboxes in the website for people who want to keep it simple and don't
want to learn new things.
In this context, I will certainly design around your comments that the
mapping should be between website user and mailman3 user.
Thanks again!
-- Stephen
On Sat, Jan 15, 2022 at 10:45 PM Stephen J. Turnbull <
stephenjturnbull(a)gmail.com> wrote:
> Stephen Daniel writes:
>
> > I am in the process of porting a web site that is used to manage a small
> > organization. The web site maintains a directory of users
> >
> > The one-source-of-truth is the website's database. The website code has
> > callouts for "subscribe <address> to <list>" and "unsubscribe <address>
> > from <list>".
>
> Are users identified by their email addresses? That is, is it
> intentional that they never have more than one email address for
> organizational use? What happens if someone changes their address?
>
> In your use case, it probably doesn't make much difference, but if
> there's more to a user in the directory than their email address, and
> they have an identity separate from the address (eg, they can change
> their address and keep their identity), mapping directory users to
> Mailman users is probably conceptually cleaner, even though you use
> the email address as the "name" of the user in talking to Mailman.
>
> > I am trying to minimize the amount of code I write to implement the web
> > site's callouts, to initialize the mailing lists when I port the
> > organization to this new implementation, and make it relatively easy to
> > keep the website's database and mailman3's database in sync.
>
> In your place, I would design the interface so that the user's primary
> address (not the specific address, but the user's attribute) is the
> only address used to subscribe to the lists.[1] Then if a user changes
> address, you change the primary address attribute, and automatically
> all the user's lists will go there. If you use "bare" Address
> objects, you will need to change each subscription individually.
>
> I don't know if there's any use to having continuity of users, if all
> users have the same settings. But if some users want and get
> different settings, this allows them to keep those settings across
> address changes and across subscriptions, changing them only in one
> place as necessary. At present your users don't care, but (in
> general, your organization may be different) there may be future
> requests for extensions to the website, and I think directory user <->
> Mailman user will make those simpler.
>
> > The impression I had from the docs was that unlinked addresses were
> > a first class object.
>
> They are, in the sense that to Python they exist as objects and to
> Mailman there is a collection of them that can be searched and
> enumerated. But Mailman is designed with the "sophisticated user" in
> mind: people with multiple addresses, who want to customize their
> subscriptions per-subscription, and in that sense Mailman manages user
> objects and delegates subscription and address management to the user.
>
> > Since my website callouts only deal with addresses, this
> > seemed a good mapping. However, I understand from this email thread
> that
> > unlinked addresses are not the way to go, so I'll map <address> in the
> > website database to <user>/<address> in mailman3.
>
> I would think of this as a join of the user tables on <address>, since
> in both your directory and Mailman each address identifies a unique user.
> That's true as long as you have no "free-standing" Addresses in
> Mailman.
>
> Steve
>
> Footnotes:
> [1] IIRC, this is implemented internally by subscribing the User
> object rather than an Address object to the list.
>
>
3 years, 3 months

[MM3-users] Re: Non-ascii characters missing from Pipermail archive txt and gz downloads
by Mark Dale
Hi Ruth,
Apologies for the late response. I posted my message to the MM3 list in error and have since reposted it to the MM2 list.
However, thank you for taking the trouble to reply.
The problem lies outside the choice of editor as both files are being viewed in the same editor -- with one correct and the other not.
Mark Sapiro has explained (on the MM2 list) what is causing the problem. Armed with that information I just have to now find a way ....
Regards,
Mark
-------- Original Message --------
From: Ruth Ivimey-Cook [mailto:ruth@ivimey.org]
Sent: Friday, April 9, 2021, 15:24 UTC
To: mark(a)postmark.io, Mailman users
Subject: [MM3-users] Non-ascii characters missing from Pipermail archive txt and gz downloads
> Hi Mark
>
> I'm not sure, but I think the problems are to do with the program you are using to view the txt file.
>
> A modern mail reader understands the Content-type: header and will adjust its character processing accordingly, but a .txt file has no default character encoding, so any text editor will have to "use its best judgement". Some will default to utf-8, because that is compatible with 7-bit ASCII (NOT Latin1) while others will just put characters out and hope for the best (esentially leaving the result to the encoding of the font).
>
> In theory, a UTF-encoded text file can begin with the "BOM" marker, a sequence of characters which is supposed to indicate which variety of Unicode is in use, but this is rarely present, especially for UTF-8.
>
> Try looking at your text file with a UTF-8 capable text editor **and ensure that you tell the editor to use the UTF-8 encoding**. I expect it will look ok then.
>
>
> Hope this helps,
>
> Ruth
>
>
> On 09/04/2021 13:52, Mark Dale via Mailman-users wrote:
>> Mailman 2.1.34
>> Debian 10
>> Postfix
>>
>> Hi
>>
>> I'm hoping someone can shine a light on character encoding issue I've encountered.
>>
>> A plain-text email with non-ascii characters in the body gets posted to the list.
>>
>> As per Mark Sapiro's guide I've captured the incoming message to file.
>>
>> - https://www.mail-archive.com/mailman-users@python.org/msg73469.html
>>
>> The message is received by Mailman with the non-ascii characters displaying correctly.
>>
>> The header of that message has:
>>
>> User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101
>> Thunderbird/78.9.0
>> MIME-Version: 1.0
>> Content-Type: text/plain; charset=utf-8
>> Content-Language: en-AU
>> Content-Transfer-Encoding: 8bit
>>
>> In the list's mbox file and archive webpage, the message displays the non-ascii characters correctly.
>>
>> In the archive's downloaded .txt (and also .gz) file, the non-ascii characters are missing and displayed as "?".
>>
>> I've copied the message text in below, from both the correct one from the email and the erroneous .txt file. Hopefully they won't get scrambled up when I send this.
>>
>> Any advice on getting the non-ascii characters written into the archive .txt file would be gratefully received.
>>
>> Thanks,
>> Mark
>>
>>
>> === Message text as okay in mbox and as shown on the archive webpage ===
>>
>> If one goes by the definition of veḷippaṭai as given in the Tamil Lexicon that the meaning of an ambiguous word should be disambiguated by a qualifying word, then aruvi āmpal does not conform to that definition since in the case of aruvi āmpal in Patiṟṟuppattu 63, aruvi is really made up of aru+vi, a compound. Moreover, the expression aṭai aṭuppu aṟiyā is already there to clarify that āmpal is a number and not a flower. Thus, aruvi simply provides information in addition to aṭai aṭuppu aṟiyā that āmpal is not a flower. The modern commentator Aruḷampalavaṉār also does not call it veḷippaṭai.
>>
>> ===
>>
>> === Message text with missing characters in te archive's txt and gz downloads ==
>>
>> If one goes by the definition of ve?ippa?ai as given in the Tamil Lexicon that the meaning of an ambiguous word should be disambiguated by a qualifying word, then aruvi ?mpal does not conform to that definition since in the case of aruvi ?mpal in Pati??uppattu 63, aruvi is really made up of aru+vi, a compound. Moreover, the expression a?ai a?uppu a?iy? is already there to clarify that ?mpal is a number and not a flower. Thus, aruvi simply provides information in addition to a?ai a?uppu a?iy? that ?mpal is not a flower. The modern commentator Aru?ampalava??r also does not call it ve?ippa?ai.
>>
>> ===
>> _______________________________________________
>> Mailman-users mailing list -- mailman-users(a)mailman3.org
>> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
>> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>
4 years