Search results for query "dO"
- 5105 messages

[MM3-users] Multi-domain oddities in Hyperkitty and Postorius
by Jeremy Stanley
In the OpenDev Collaboratory we've got a bunch of separate Mailman
2.1 vhosts we've started migrating into a single Mailman 3.3.7
server, desiring to take full advantage of its improved multi-domain
support. For the most part everything is working great (kudos to
everyone who maintains the software and documentation, it's
excellent).
One of the things our users noticed fairly quickly was Hyperkitty on
the second vhost was incorrectly showing the FQDN of the first vhost
near the top of its pages. This is covered in the FAQ of course, and
seems to imply that what we want is to switch the SITE_ID from 1 to
0 in our settings.py in order to take advantage of magic
domain-guessing behavior. So far so good.
Unfortunately, SITE_ID = 0 seems to explicitly require the addition
of "mail hosts" (or "mail domains" from Django's perspective), and
all the web routing returns error pages for any list sites besides
the first one since, by default, our server did not have these
predefined. What's odd is that, if I log into Postorius as admin and
visit the "manage domains" page, suddenly the database gets
populated with mail hosts for all of the FQDNs associated with our
imported mailing lists. I would not have expected merely visiting
that page as an admin to have a side effect of adding entries for
the "missing" mail hosts, is that an intentional behavior or merely
a bug?
Once these entries are automatically added by visiting that page,
they're all associated with the one "web host" ("site" in Django) we
have for the server, and now the list filtering functionality in
Postorius breaks and any of the vhosts all display the full set of
mailing lists on the server rather than only those associated with a
particular vhost (note that this seems to only be confusing
Postorius, Hyperkitty has them correctly filtered still).
Okay, so it looks like this is because the mail hosts are all tied
to the one web host. We can create additional "sites" in the Django
admin UI and then switch the association of the mail hosts to those
distinct web hosts. But after doing so, the first vhost still seems
to show an unfiltered list of all lists in Postorius (Hyperkitty
continues to be fine), while Postorius on the other vhosts correctly
shows their filtered sets of lists instead.
I also noticed when mailman-web is starting up, its log claims the
first site is being set as the "default domain," so have to wonder
if that's related to this behavior. Should we create an extra web
host to serve as the "default" so that all our typical vhosts get
the expected list filtering behavior, or am I completely off-base
and there's a much better approach I've missed?
Sorry this is so long, I feel like I have at most a tenuous grasp of
the details and variables involved, but hopefully it makes sense to
someone. Thanks in advance for any recommendations or guidance.
--
Jeremy Stanley
2 years, 5 months

[MM3-users] Re: MM3 templates
by Odhiambo Washington
On Wed, Feb 15, 2023 at 7:26 PM Mark Sapiro <mark(a)msapiro.net> wrote:
> On 2/15/23 08:09, Odhiambo Washington wrote:
> >
> > [18:47 ~ ]$ ls -al /opt/mailman/mm/var/templates/lists/
> kictanet.lists.kictanet.or.ke/en/
> > total 48
> > drwxr-xr-x 2 mailman mailman 512 Feb 14 08:53 .
> > drwxr-xr-x 3 mailman mailman 512 Feb 14 08:54 ..
> > -rw------- 1 mailman mailman 615 Jan 17 13:57
> domain:admin:notice:new-list.txt
>
> This template is used in a domain context. It will never be accessed
> here. It needs to be in /opt/mailman/mm/var/templates/site/en/ or
> /opt/mailman/mm/var/templates/domains/lists.kictanet.or.ke/en/
The last time I referred to the link, I deliberately duplicated the <LC>
folder in two locations:
[09:51 ~ ]$ ls -al /opt/mailman/mm/var/templates/site/en/
total 48
drwxr-xr-x 2 mailman mailman 512 Feb 14 08:53 .
drwxr-xr-x 3 mailman mailman 512 Feb 14 08:53 ..
-rw------- 1 mailman mailman 615 Jan 17 13:57
domain:admin:notice:new-list.txt
-rw------- 1 mailman mailman 341 Jan 17 13:54 list:admin:action:post.txt
-rw------- 1 mailman mailman 158 Dec 17 13:32
list:member:digest:footer.txt
-rw------- 1 mailman mailman 452 Jan 17 13:54
list:member:digest:masthead.txt
-rw------- 1 mailman mailman 137 Jan 17 13:55
list:member:generic:footer.txt
-rw------- 1 mailman mailman 1219 Dec 8 15:12
list:member:regular:footer.txt
-rw------- 1 mailman mailman 944 Jan 17 15:50
list:user:action:subscribe.txt
-rw------- 1 mailman mailman 247 Jan 17 13:56 list:user:notice:post.txt
-rw------- 1 mailman mailman 802 Jan 17 13:56 list:user:notice:probe.txt
-rw------- 1 mailman mailman 639 Jan 17 13:57
list:user:notice:welcome.txt
Yet, it is NOT being picked. So definitely something is wrong somewhere.
> > -rw------- 1 mailman mailman 341 Jan 17 13:54
> list:admin:action:post.txt
> > -rw------- 1 mailman mailman 158 Dec 17 13:32
> list:member:digest:footer.txt
> > -rw------- 1 mailman mailman 452 Jan 17 13:54
> list:member:digest:masthead.txt
> > -rw------- 1 mailman mailman 137 Jan 17 13:55
> list:member:generic:footer.txt
>
> The generic footer is used for both regular messages and digests if
> there isn't a specific regular or digest footer. In this case, you have
> both so the generic footer won't ever be used.
>
Thank you for clarifying that. I actually will delete the generic footer in
this case because I don't need it.
> > -rw------- 1 mailman mailman 1219 Dec 8 15:12
> list:member:regular:footer.txt
> > -rw------- 1 mailman mailman 944 Jan 17 15:50
> list:user:action:subscribe.txt
> > -rw------- 1 mailman mailman 247 Jan 17 13:56
> list:user:notice:post.txt
> > -rw------- 1 mailman mailman 802 Jan 17 13:56
> list:user:notice:probe.txt
> > -rw------- 1 mailman mailman 639 Jan 17 13:57
> list:user:notice:welcome.txt
>
> Are the other templates such as list:member:regular:footer.txt used?
>
I do see that in posts to the list, but I believe that is perhaps only
working because the list had that footer when it was imported from MM2.
--
Best regards,
Odhiambo WASHINGTON,
Nairobi,KE
+254 7 3200 0004/+254 7 2274 3223
"Oh, the cruft.", egrep -v '^$|^.*#' ¯\_(ツ)_/¯ :-)
2 years, 3 months

[MM3-users] List Digest - Subject line
by Stephen J. Turnbull
smorytko(a)gmail.com writes:
> Is there a way to optionally cause the Subject line to display with
> the text body and as a summary at the top of the digest?
It will always appear in the summary, I believe. Unless someone at
your site has changed the configuration for mime_digest_keep_headers
and/or plain_digest_keep_headers, it is already included, and should
be displayed in the individual messages. I suspect this is a user
agent (mail client) problem.
> Again I'm wondering if this is a web front-end function, a MM3 core
> function, or perhaps both? I ask because if it's not a MM3 core
> function I'll need to ask our developer for an Empathy
> modification.
The digest message is a core function. When a message arrives for a
digest-able list, Mailman core will add that to a separate mailbox,
signalling the digest runner. The digest runner then decides if it's
time and if so, reads the mailbox and assembles and sends the digest
message. Digest creation and distribution is therefore entirely done
by Mailman core.
Display is another matter. As with all received mail, the Harvard Law
applies:
Under the most rigorously controlled conditions of pressure,
temperature, volume, humidity, and other variables the [mail
client] will do as it damn well pleases.
Digest display is notoriously awful in common consumer mail clients.
Many frustrated admins simply turn off the feature to quiet their
subscribers.
> Below is an example from an Empathy-base list
The web interface doesn't matter. As far as I know it is impossible
for the archive interfaces (Empathy, HyperKitty, etc) to view digests,
because they receive each post individually and have no way to know
the digesting schedule, so they can't calculate one either. That's
certainly true of HyperKitty.
So I assume you are viewing the digest in your own mail client?
There are two possibilities.
1. Your mail client is refusing to display the headers in the
digested messages even though they are present. I think this is
more likely; the digest header configuration is rarely if ever
changed.
2. The list is configured not to keep any headers. If you have
access to the Mailman configuration files, the defaults are in the
[digests] section of schema.cfg, and local changes, if any, are in
the [digests] section of mailman.cfg. (Local changes completely
override the configuration in schema.py.) If you don't, you'll
have to ask the admin to check.
Here are the schema.cfg defaults from a fairly fresh update of the
Mailman sources (I doubt these lines have changed since being
written):
[digests]
# Headers which should be kept in both RFC 1153 (plain) and MIME digests. RFC
# 1153 also specifies these headers in this exact order, so order matters.
# These are space separated and case insensitive.
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
plain_digest_keep_headers:
Message Date From
Subject To Cc
Message-ID Keywords
Content-Type
("Space separated" includes newlines and tabs.) As you can see,
Subject is in both.
Steve
4 years

[MM3-users] Re: Apple Mail encoding again
by Rainer Herbst
Dear all,
my first post was to optimistic - the user tested some other combinations
and when he tries to send a signed HTML mail, the server again refuses to
accept it with "Diagnostic-Code: smtp; 501 Message has defects".
The user suggested that the problem is caused by a line containing only "--
" somewhere in the text, but I can not confirm this.
Please find enclosed the refused mail (anonymized).
Regards
Rainer
On Mi, 20 Apr 2022 10:51:38 +0200
Rainer Herbst <rainer.herbst(a)aip.de> wrote:
> Dear all,
>
> as the original poster, I have asked the user to send a test mail
>through our mailman3 system (docker image
> maxking/mailman-core:0.4.2) and the mail passed.
>
> The user is now on Apple Mail 16, maybe that does the trick. Please
>find enclosed the anonymizied mail source.
>
> Best regards and thanks for caring even if the problems seems to
>affect only a small number of users!
> Rainer
>
> On Fr, 15 Apr 2022 09:03:41 -0700
> Mark Sapiro <mark(a)msapiro.net> wrote:
>> On 4/14/22 21:33, Stephen J. Turnbull wrote:
>>>
>>> Whether we *want* to do that depends on how much trouble that causes
>>> for our main constituency (list and site admins), and whether we can
>>> provide discoverable documentation of the problem. My take is that
>>> this seems to be an extremely rare problem, and at least some MUAs
>>>are
>>> able to read the message, so we should let it through.
>>
>>First, we are not silently dropping this message. We are rejecting it
>>at LMTP time so the sender should be notified.
>>
>> Then the broader question is should we accept all messages with
>>defects, almost all of which are spam, or only certain defects and
>>which ones.
>>
>> I note that Apple has now released Mail 16 so maybe they've fixed
>>this. My macs are still on Big Sur, so I can't test this.
>>
>>
>> --
>> 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/
>>
>
> Viele Grüße
>
> Rainer Herbst
> Leiter IT-Service
> Phone: +49 331 7499-257
> e-mail: rainer.herbst(a)aip.de
> https://www.aip.de
>
> -----------------------------------------------------------------------------------------------
> Leibniz-Institut für Astrophysik Potsdam (AIP)
> An der Sternwarte 16, 14482 Potsdam
>
> Vorstand: Prof. Dr. Matthias Steinmetz, Wolfram Rosenbach
> Stiftung bürgerlichen Rechts
> Stiftungsverzeichnis Brandenburg: 26 742-00/7026
> -----------------------------------------------------------------------------------------------
Viele Grüße
Rainer Herbst
Leiter IT-Service
Phone: +49 331 7499-257
e-mail: rainer.herbst(a)aip.de
https://www.aip.de
-----------------------------------------------------------------------------------------------
Leibniz-Institut für Astrophysik Potsdam (AIP)
An der Sternwarte 16, 14482 Potsdam
Vorstand: Prof. Dr. Matthias Steinmetz, Wolfram Rosenbach
Stiftung bürgerlichen Rechts
Stiftungsverzeichnis Brandenburg: 26 742-00/7026
-----------------------------------------------------------------------------------------------
3 years, 1 month

[MM3-users] Re: only show mail domains from web host on web-host-url
by 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/
--
thanks,
Abhilash Raj (maxking)
4 years, 2 months

[MM3-users] Re: Spam sent to list owner causes bounce increment for list owner
by Mark Sapiro
On 12/18/23 9:59 AM, Allan Hansen wrote:
> Hi all,
>
> Someone sent a spam message to the list owner (me) of one of my lists. Then I got booted from the list.
>
> The scenario in more detail:
> The list server forwards the message to me, as I’m the list owner. This message is sent from <list>-bounces+hansen=rc.org(a)list.rc.org to hansen(a)rc.org.
> My service provider’s spam filter rejects the spam (correctly) in a message and informs the list server.
> The list server sends a message to <list>-bounces+hansen=rc.org(a)list.rc.org (the fake sender) saying that the message to hansen(a)rc.org (the recipient) could not be delivered because it was spam.
> The list server also blames hansen(a)rc.org (me) for the bounce and increments my bounce score, which, to me, is unfair.
>
> So I wonder:
> Is the Mailman host at list.rc.org at fault for not catching the spam before it reaches the list server? (One could argue that)
Depends on what kind of spam filtering if any you have on incoming mail
to list.rc.org.
> Is my rc.org service provider at fault for sending the bounce message to the server instead of the to the original sender?
Absolutely not. The envelope sender of the mail was set by Mailman to
<list>-bounces+hansen=rc.org(a)list.rc.org in order to enable automated
bounce processing. rc.org correctly sent the bounce to the envelope sender.
> Is Mailman at fault for thinking that the bounce message was caused by a list message FROM me, instead of a bounced message TO the list owner?
Arguably, yes, but not based on FROM. FROM has nothing to do with it.
The message was sent TO you so if it bounces, it is a message to you
that bounced, so you are the one bouncing this message. All Mailman
knows is a message was sent to you and it bounced so it's your address
that is bouncing. It doesn't matter whether this was a post to the list
that bounced or a message to <list>-owner. A bounce is a bounce.
Note that this list's bounce processing is very aggressive. If you got
removed from the list after one bounce, the list must have Bounce score
threshold = 1 and Bounce disable warnings = 0. You might consider
adjusting these.
There is an easy fix for this. Set `verp_probes: yes` in mailman.cfg.
Then when your bounce score reaches threshold, instead of
disabling/removing you, Mailman will send a probe message to you. It
will only disable/remove you if the probe bounces which it presumably won't.
Another avoidance would be to use an address for the owner which is not
the address of a member. Then if the owner address bounces, nothing is
done because the bouncing address isn't a list member.
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
1 year, 5 months

[MM3-users] Re: changing the main template for subscriptions and more
by Andreas Barth
* Jens Günther (jens.guenther(a)posteo.de) [210621 17:05]:
> Hey there,
>
> in Mailman2 there was a simple link in the moderation-emails, with
> which I was able to open directly the "held-messages". I know how to
> manually integrate such a link with the variables of mailman (https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/rest/docs/…)
> But:
>
> How can I change the template for all the lists (respectively
> maildomains/webdomains) so that I don't have to do this manually for
> all lists? I searched a bit for the corresponding template, but
> didn't find it. At the end it only says the following:
I'm using this patch (however, german-only)
Andi
diff --git a/src/mailman/templates/de/list:admin:action:post.txt b/src/mailman/templates/de/list:admin:action:post.txt
index bc76a54c4..85cdd9376 100644
--- a/src/mailman/templates/de/list:admin:action:post.txt
+++ b/src/mailman/templates/de/list:admin:action:post.txt
@@ -9,5 +9,6 @@ Die Nachricht wurde aus folgenden Gründen zurückgehalten:
$reasons
-Besuchen Sie die Administrations-Seiten, um die Nachricht
+Besuchen Sie die Administrations-Seiten, um die Nachricht
anzunehmen oder abzulehnen.
+https://$domain/mailman3/postorius/lists/$list_id/held_messages
diff --git a/src/mailman/templates/de/list:admin:action:subscribe.txt b/src/mailman/templates/de/list:admin:action:subscribe.txt
index 88427c8d0..ba77aa3ce 100644
--- a/src/mailman/templates/de/list:admin:action:subscribe.txt
+++ b/src/mailman/templates/de/list:admin:action:subscribe.txt
@@ -3,3 +3,7 @@ die Mailingliste nötig:
Für: $member
Liste: $listname
+
+Besuchen Sie die Administrations-Seiten, um die Anmeldung
+anzunehmen oder abzulehnen.
+https://$domain/mailman3/postorius/lists/$list_id/subscription_requests
diff --git a/src/mailman/templates/de/list:admin:action:unsubscribe.txt b/src/mailman/templates/de/list:admin:action:unsubscribe.txt
index c794355e8..0bace3950 100644
--- a/src/mailman/templates/de/list:admin:action:unsubscribe.txt
+++ b/src/mailman/templates/de/list:admin:action:unsubscribe.txt
@@ -3,3 +3,7 @@ der Mailingliste nötig:
Für: $member
Liste: $listname
+
+Besuchen Sie die Administrations-Seiten, um die Abmeldung
+anzunehmen oder abzulehnen.
+https://$domain/mailman3/postorius/lists/$list_id/subscription_requests
diff --git a/src/mailman/templates/de/list:user:notice:welcome.txt b/src/mailman/templates/de/list:user:notice:welcome.txt
index 3efc32bd1..974d8e465 100644
--- a/src/mailman/templates/de/list:user:notice:welcome.txt
+++ b/src/mailman/templates/de/list:user:notice:welcome.txt
@@ -1,16 +1,18 @@
Willkommen auf der Mailingliste "$display_name"!
-Um an diese Liste zu schreiben, senden Sie eine E-Mail an:
-
+E-Mails an die Adresse
$listname
+werden an alle Teilnehmer verteilt.
-Sie können Einstellungen vornehmen, indem Sie eine E-Mail an
+Auf der Webseite https://$domain/ können Sie Ihre Einstellungen verwalten.
+Wer dies möchte, kann sich dort registrieren - bitte mit der E-Mail-Adresse,
+die auf der Mailingliste eingetragen ist. Nach dem Einloggen ist auch
+möglich, die Empfangsadresse für die Mailinglisten zu ändern, oder
+zusätzliche Sendeadressen einzurichten.
+Sie können auch Einstellungen vornehmen, indem Sie eine E-Mail an
$request_email
-
mit dem Wort 'help' (ohne Anführungszeichen) im Betreff oder im Inhalt
-senden, Sie erhalten dann eine automatisierte Antwort mit weiteren
-Instruktionen. Sie werden Ihr Passwort benötigen, um Änderungen an Ihren
-Einstellungen vorzunehmen, aber aus Sicherheitsgründen wird dieses hier
-nicht angegeben. Sollten Sie Ihr Passwort vergessen haben, nutzen Sie bitte
-die 'Passwort vergessen'-Funktion auf der Login-Seite.
+senden. Sie erhalten dann eine automatisierte Antwort mit weiteren
+Instruktionen. Um Änderungen bei den Einstellungen vorzunehmen, wird das auf
+https://$domain/ vereinbarte Passwort benötigt.
3 years, 11 months

[MM3-users] Re: signup / registration error - permissions and cert chains
by Victoriano Giralt
El viernes, 31 de diciembre de 2021 1:48:38 (CET) David Newman escribió:
> I'd like for regular (non-admin) list subscribers to be able to manage
> their subscription preferences and view list archives.
That's a good way to go :-)
My response is more of a (very) old sysadmin and Django user (since 2008)
hunch that a proper one based on code and documentation review, but I've been
trying to contribute several times and always (super) Mark Sapiro beats me :-)
> If I'm reading the error correctly, this is related to an inability to
> verify the cert chain. The /etc/mailman3/settings.py file points to the
> same cert and key files used by Nginx, Postfix, and Dovecot.
You are right in your diagnose but not in your interpretation (see my comment
below inside the traceback). It is certificate related, but not for server
TLS, but for CLIENT authentication.
> EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
> EMAIL_HOST = 'localhost'
> EMAIL_PORT = 25
> EMAIL_HOST_USER = 'dnewman(a)networktest.com'
> EMAIL_HOST_PASSWORD = 'wouldnt-you-like-to-know'
> EMAIL_USE_TLS = 'True'
> EMAIL_SSL_CERTFILE = '/etc/ssl/certs/myhost.crt'
> EMAIL_SSL_KEYFILE = '/etc/ssl/private/myhost.key'
All these settings above are used for SENDING messages and, if I'm not
mistaken, the SSL key and cert are used for authenticating the user sending
the email. Actually, using TLS and SMTP Auth for localhost is a bit too much.
I've been configuring SMTP servers since 1990 and my mail servers just accept
mail form localhost, if they are broken into, the user and password have
already been exposed :-)
> But this might only be for email, not Postorius/Django.
You are right (if I also am)
> What additional configuration is needed to allow regular users to create
> and manage their own accounts?
I'd say that is more what is not needed (the SMTP TLS authentication)
I'll remove the "noise". These are the tell tale lines:
> "/opt/mailman/venv/lib/python3.9/site-packages/django/core/mail/backends/smt
> p.py", line 67, in open
> self.connection.starttls(keyfile=self.ssl_keyfile,
> certfile=self.ssl_certfile)
The SMTP Django backend is trying to connect to the mail server to send the
Mailman account confirmation message and failing, probably because the user
Django runs as cannot open the private key (which is a very sensible thing if
that private key is the one used for the web facing TLS certificate, I can
tell you how bad in private or search for my name, wasd, apache and VMS ;-))
That certificate is not needed for sending email from Django, and, as I said,
not even SMTP Auth for sending via localhost. Actually, doing SMTP Auth on
port 25 is not even recommended practice.
Happy, healthy, safe and well ventilated New Year to all.
--
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 ?
3 years, 5 months

[MM3-users] Re: transport map (postfix_lmtp) does not update - new lists not working
by Odhiambo Washington
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 :-)
--
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, 4 months

[MM3-users] Re: search this list searches more then just this list
by Marco van Tol
Op 25 jan 2024, om 14:16 heeft Marco van Tol <mvantol(a)ripe.net> het volgende geschreven:
> Op 24 jan 2024, om 13:46 heeft Marco van Tol <mvantol(a)ripe.net> het volgende geschreven:
>> Op 24 jan 2024, om 12:24 heeft Marco van Tol <mvantol(a)ripe.net> het volgende geschreven:
>>> Op 23 jan 2024, om 19:09 heeft Mark Sapiro <mark(a)msapiro.net <mailto:mark@msapiro.net>> het volgende geschreven:
>>>>
>>>> On 1/23/24 05:49, Marco van Tol wrote:
>>>>> Small unfortunate twist, this leads to:
>>>>> ---
>>>>> [ERROR/MainProcess] Failed indexing 204001 - 205000 (retry 5/5): Term too long (> 245): ...
>>>>> ---
>>>>> I have seen comments on that from back in 2020, but what’s the latest advise on how to deal with this?
>>>>
>>>> This issue is discussed at <https://github.com/notanumber/xapian-haystack/pull/181>.
>>>> There are two patches for this issue. They are somewhat different approaches, but either one is OK. One patch is the one in the above PR <https://github.com/notanumber/xapian-haystack/pull/181/files>. The other is at <https://github.com/alexsilva/xapian-haystack/commit/a53523d2d0d13929a0729d4…>.
>>>>
>>>> I use the one from the PR, but it requires a substitution `s/force_text/str/`.
>>>
>>> Hi, thanks! Just to double check, do you mean `str` or `force_str` in the substitution?
>>>
>>> I found a comment on this topic regarding django-4 where they advice to use force_str.
>>> https://stackoverflow.com/questions/70382084/import-error-force-text-from-d…
>>
>> Hm, never mind, sorry. I now see the current file already has str() rather than force_text() in it.
>
> 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!
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:
text = text[:match.start()] + hole + text[match.end():]
TypeError: can't concat str to bytes
The ‘hash’ part of that function needs some debugging.
Marco
1 year, 4 months

[MM3-users] Re: logrotate
by Odhiambo Washington
On Wed, May 3, 2023 at 2:38 AM Mark Sapiro <mark(a)msapiro.net> wrote:
> Please don't hijack threads. Post a new topic as an original post, not
> as a reply to an old thread.
>
> On 5/2/23 15:45, Christian via Mailman-users wrote:
> > I noticed that my mailman logfiles are not being rotated. I followed the
> > instructions in
> >
> https://mail.python.org/archives/list/mailman-developers@python.org/message/
> > FM3TSMQ63JR2KROJGOSPENODOOQVRYCL/
>
>
> Those instructions are for Mailman 2.1.
>
>
> > Now when I try and run logrotate I get the following error
> >
> > root@zarathustra:/opt/mailman/mm/logs# logrotate /etc/logrotate.conf
> > error: stat of /opt/mailman/mm/logs/bounce.log failed: No such file or
> > directory
> > error: stat of /opt/mailman/mm/error.log failed: No such file or
> directory
> > error: stat of /opt/mailman/mm/mailman.log failed: No such file or
> > directory
> > error: stat of /opt/mailman/mm/mailmansuite.log failed: No such file or
> > directory
> > error: stat of /opt/mailman/mm/smtp.log failed: No such file or
> directory
> > root@zarathustra:
> >
> > What am I doing wrong please?
>
> Here's a logrotate script I use:
> ```
> /opt/mailman/mm/var/logs/*.log {
> missingok
> sharedscripts
> su mailman mailman
> postrotate
> sudo -u mailman /opt/mailman/mm/bin/mailman reopen &>/dev/null
> || true
> if [ -r /opt/mailman/mm/var/gunicorn.pid ]; then
> PID=`cat /opt/mailman/mm/var/gunicorn.pid`
> kill -s USR1 $PID
> fi
> endscript
> }
> ```
> A couple of caveats. The first line of the postrotate script may be
> wrapped. `sudo ... true` is all one line.
>
> That line could also be
> ```
> /opt/mailman/mm/bin/mailman --run-as-root reopen &>/dev/null || true
> ```
> I.e., it either has to run as the mailman user or specify the
> --run-as-root option.
>
> Also, if logs aren't in /opt/mailman/mm/var/logs/ or gunicorn.pid isn't
> in /opt/mailman/mm/var/ those paths need adjusting.
>
> Finally, there may be an issue with `mailman reopen` in the postrotate
> scrupt. See https://gitlab.com/mailman/mailman/-/issues/1078
>
>
In my case, I took a different approach with Django's logging configuration:
[snip]
'handlers': {
'file': {
'level': 'INFO',
'class': 'logging.handlers.TimedRotatingFileHandler',
'filename': '/opt/mailman/mm/var/logs/mailmanweb.log',
'when': 'D', # specifies the interval
'interval': 1, # defaults to 1, only necessary for other values
'backupCount': 5, # how many backup file to keep, 5 days
'formatter': 'simpleRe',
},
},
[snip]
I have not been rotating the other log files as my list is not a
high-volume one so logs aren't growing much.
Plus I only rely on the logs for diagnostics, not for records ;(
--
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]
2 years, 1 month

[MM3-users] Outgoing runner lockup? + "slice inspector" tool
by Stephen J. Turnbull
Hi,
I'm advising a user on a system which experiences occasional lockups
in an outgoing runner. The runner contacts a remote smarthost, and
occasionally locks up with the smtp connection still open according to
"lsof -i :25". This state seems to be permanent: the backlog for that
slice starts to grow without bound, for at least an hour. When this
was happening once a month, they would just restart Mailman core, and
the backlog would clear in minutes. But recently it's been happening
daily which is distracting their staff, and worries me.
Another thing that is strange about this site is that it should be
possible to hit that runner with a SIGUSR1 and restart it. This works
for me, but on that system the stuck runner exits, but does not
restart.
Since normally it only happens to one runner of several, I wanted to
identify the runner and process. I attach the tool I developed, for
anyone who might have configured multiple runners and is interested to
see the distribution across runners.
Has anybody seen an outgoing runner lock up with an open smtp session?
Any ideas on why?
My analysis so far:
- Because a restart works every time, I'm pretty sure it doesn't have
anything to do with message content.
- I believe both the Mailman host and the outgoing smarthost are
Linodes, in the same datacenter. The problematic Mailman system is
Mailman 3.3.6, Python 3.10 on Ubuntu 16.xx LTS. I believe the
smarthost is a more recent Ubuntu LTS, probably running Postfix 3.7
as the MTA. (Yes, they have sufficiently paranoid security and QA
teams. ;-)
- We're using smtplib, which as far as I can tell basically has a 60s
timeout for each command. Thus you'd think it would time out. I
guess it could be inflooping on timeout, retry, timeout, retry, but
I don't know how to check that. Maybe ss(8) will serve?
- My system where SIGUSR1 works as documented is Python 3.11.2 on a
Digital Ocean droplet with Debian 12.9, Linux 6.1.0.
- I haven't tried to reproduce the Python 3.10 + Mailman 3.3.6
configuration and test SIGUSR1 in that configuration yet. Seems
unlikely, waiting for the proverbial "round tuit".
- It has occurred to us to use the local Postfix as the relay MTA.
I'm waiting on a report whether that alleviates the problem. Even
if so, I want to fix the underlying defect if possible.
Any ideas would be welcome, including general debugging advice.
Here's the promised slice_inspector tool. (Patches and suggestions
welcome, though I don't promise to implement any time soon.) The tool
imports some files from Mailman core, click, and psutil (not psutils!)
I believe the latter modules are required by Mailman, so you should be
able to run it as is under the 'mailman' user (or perhaps 'list' on
Debian) in the environment Mailman itself uses. It defaults to
assuming that mailman.cfg is /etc/mailman3/mailman.cfg. You'll
probably need to fix the shebang if you want to chmod +x. The
'--help' should be pretty self-explanatory.
Steve
4 months, 1 week

[MM3-users] Re: More Mailman releases!
by Jered Floyd
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
1 year, 7 months

[MM3-users] Re: Default values for new lists
by Sten Aus
Thanks! Opened two new issues on Hyperkitty.
This another problem in Mailman core styles - I hope to see it soon. As
right now comparing to Mailman2 I have extra movements that needs to be
done to achieve same outcome.
Thank you and all the best!
Sten
On 09/01/2018 05:08, Abhilash Raj wrote:
> On Thu, Jan 4, 2018, at 3:00 AM, Sten Aus wrote:
>> Also, I would like to change archive (hyperkitty) default sort order
>> (for Name), because I think it is weird where I cannot see lists I am
>> participating in (even if I am logged in) in "most popular" view. Can it
>> be achived somehow?
>>
>>
>> And I think it's weird too that I see all lists in archive view (even if
>> they are private) even when I am not subscribed to them. Only thing
>> keeping me away from that list is that I cannot see archives and error
>> message is displayed.
>>
>>
>> Although I cannot imagine how many of list users log in to mailman panel
>> and then try to access archives, mostly it is done by accessing direct
>> link. But I don't need to display all archives (almost 3000) lists to
>> every logged in user, if they are member of only one or two.
> I am not 100% sure about it, but I don't think it can be configured right now. You can open an issue in Gitlab[1], I think it would be something useful to have.
>
> [1]: https://gitlab.com/mailman/hyperkitty/issues
>
>> On 04/01/2018 11:47, Sten Aus wrote:
>>> Hi
>>>
>>> I haven't found out where I could choose or edit default list values
>>> (when creating new list).
>>>
>>> For example I would like that all new lists would be with *private
>>> archive* (and change this when it is needed).
>>> This is great that I can choose not to advertise list in Index (which
>>> I can choose from list creation interface) but I would like to choose
>>> other options too.
>>> Right now only solution is to create list and then choose Archiving
>>> and then select "private archives".
>>>
>>> Another thing is that I would like to choose default subscription
>>> policy to "Moderate".
>>>
>>> If anyone has encountered this problem, let me know!
> Default settings are termed as "styles" in Mailman Core, and these can be used to create a default configuration for a list. However, these aren't easily configurable right now. There are few default styles that do exist today (annoucement, for example), but I am not sure if they are exposed in the UI.
>
> We had one of our GSoC student work on this and there is a merge request pending somewhere that improves the "Styles" in Mailman Core. However, it isn't a part of Core yet.
>
>
7 years, 5 months

[MM3-users] Re: old usernames appearing in mailman.log
by Mark Sapiro
On 6/25/23 10:57 PM, Ken Alker wrote:
>
> I have studied the output, looked at the code lines referenced in the
> Traceback, and I can't figure out the problem (I feel like the sad guy
> on the side of the street with his hood up staring into the engine bay
> with stream pouring out and not knowing what to do next). I did some
> analyses on the log file and determined that there are 71 messages it is
> having problems processing and there are 71 messages "stuck" in
> /opt/mailman/mm/var/archives/hyperkitty/spool/ (and that it has tried to
> process each message about 20 times).
Each time there is a new post, it retries all the messages in the spool/
directory.
> Since upgrading to V3.3.8 I've
> not seen new messages get stuck like this (although it's only been
> running smoothly for 24 hours now and there hasn't been much activity).
> But I'm suspecting there was something awry between the conversion from
> V2 to V3 in February and me installing V3.3.8 that caused this (based on
> message time stamps). It is HIGHLY likely these messages are in the
> archiving spool as a result of me unshunting the shunt queue and that
> they are copies of the messages that got delivered to the subscribers
> when I did that... but are now hung up in the archiving process.
Are new messages being archived OK. If so, that is a real mystery. It
says mailman-hyperkitty can talk to hyperkitty and archive new messages,
but it can't talk to hyperkitty when attempting to process a queued message.
> Following is an excerpt from mailman.log. Note that the "first section"
> (from DOCTYPE at top to 404 at bottom) is repeated four times (maybe not
> identical; but similar) (so I did not include it to save room) before
> the Traceback appears.
>
> 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:
I just went to that URL and got a 404. This is a serious problem.
https://lists.netlojix.com/hyperkitty/api/ also returns a 404. It should
return some documentation of the API.
https://lists.netlojix.com/archives/api/ does work and returns the
expected information.
Your urls.py file probably contains in its urlpatterns list
```
re_path(r'^mailman3/', include('postorius.urls')),
re_path(r'^archives/', include('hyperkitty.urls')),
```
The simplest fix is to add
```
re_path(r'^postorius/', include('postorius.urls')),
re_path(r'^hyperkitty/', include('hyperkitty.urls')),
```
to that list.
Another way to fix this is in your mailman-hyperkitty.cfg, you have
```
base_url: https://lists.netlojix.com/hyperkitty
```
Change that to
```
base_url: https://lists.netlojix.com/archives
```
but it wouldn't hurt to add the `^postorius/` and `^hyperkitty/`
patterns to urls.py anyway.
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
1 year, 11 months

[MM3-users] Re: [ERROR] Error handling request List archivers
by Shashikanth Komandoor
Thank you Mark for guiding me to the benefit of putting the list and so I
have added the list.
Along with the [archiver.hyperkitty], [mta] and [database], few lines of my
mailman.cfg look like below:
*[webservice]workers = 4timeout = 900*
The above block of webservice is added yesterday for testing or trail as I
am getting the above issue.
And there is no line that is calling *gunicorn* in my mailman.cfg.
Apart from that I tried to locate and see the content of the gunicorn.cfg
file as below :
*(venv3) [root@lsmgr mailman]# cat
/var/lib/mailman/mailman/src/mailman/config/gunicorn.cfg[gunicorn]# All the
options that can be put here are available at#
http://docs.gunicorn.org/en/stable/settings.html#settings
<http://docs.gunicorn.org/en/stable/settings.html#settings># No of seconds
to wait before killing the worker processes.graceful_timeout = 30*
Please confirm the time I have to change is *graceful_timeout *in
*gunicorn.cfg* and if I have changed how do I restart the *gunicorn*. I
have never used or never known about this *gunicorn* but still running the
service in production.
Please help me and also suggest if I could provide you any more data from
giving resolution.
<https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campai…>
Virus-free.
www.avast.com
<https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campai…>
<#m_5710631741815235215_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
On Thu, Jul 23, 2020 at 3:47 AM Mark Sapiro <mark(a)msapiro.net> wrote:
> On 7/22/20 9:13 AM, Shashikanth Komandoor wrote:
>
> > Never mind please I am sending to you only instead of group as I am
> sending you the production content along with the mail.
>
> I don't see anything there that can't be posted to the
> mailman-users(a)mailman3.org list. If your concern is revealing the
> support-tnvc.lsmgr.nic.in list id, just replace it with <list-id> or
> list.example.com or similar.
>
> Messages sent to me personally rather than the list suffer many
> problems. They are my absolute last priority, and I am only one person,
> the collective knowledge of the list is greater. Also, at times I am off
> line for several days or longer.
>
> Finally, there is no opportunity for other members of the community to
> benefit from an off-list exchange.
>
> > When I am trying to browse one of my lists, I am getting "[ERROR]
> > Error handling request /3.1/lists/support-tnvc.lsmgr.nic.in/archivers
> > <http://support-tnvc.lsmgr.nic.in/archivers>" in the mailman.log and the
> > full error message is in attachment.
>
> Try increasing your gunicorn worker timeout from the default 30 seconds.
> I.e., add
>
> timeout = 90
>
> to your gunicorn.cfg and restart gunicorn.
>
> --
> Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
> San Francisco Bay Area, California better use your sense - B. Dylan
>
--
Thanks & Regards,
Shashi Kanth.K
9052671936
<https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campai…>
Virus-free.
www.avast.com
<https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campai…>
<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
4 years, 10 months

[MM3-users] I need professional help to get virtualenv Mailman3 installation running
by John Seifarth
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.
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
3 years, 10 months

[MM3-users] Re: Hyperkitty Missing Theme/Style Sheets?
by Abhilash Raj
On Fri, Oct 27, 2017, at 02:39 AM, Simon Hanna wrote:
> On 10/26/2017 11:51 PM, Abhilash Raj wrote:
> > On Thu, Oct 26, 2017, at 11:23 AM, Andrew Hodder wrote:
> >> I have an odd one, my Hyperkitty is functionally working fine (archived
> >> several lists without issue, can login/out), however I must have done
> >> something wrong during it's setup as it's layout is completely broken
> >> (and
> >> it keeps throwing Example.com up in the top-left corner).
> > You need to change SITE_ID in your Django's configuration to point to
> > your domain name you want to be show there. Default is set to
> > `example.com` which corresponds to SITE_ID=1 in the Django's
> > configuraiton.
> >
> > How to find the SITE_ID of your domain?
> >
> > This is rather no-so-nice right now, you will basically have to go to
> > the admin console (/admin/) and login as admin. Then you visit
> > `/admin/django_mailman3/maildomain/` and you should see your domain
> > there. Clicking on it will how your it's id in URL bar, like
> > /admin/django_mailman3/maildomain/2 or something.
> >
> > I understand this is rather difficult thing to do, there is an issue
> > open to make this information visible in the UI. Ideally, SITE_ID is
> > sequential, so if you have only one domain, it is most probably 2.
> You shouldn't get it from maildomain but the real site instead which is
> under the sites entry
> /admin/sites/site/
Thank you for this correction, this is probably more accurate data. But
since domains are tied to sites internally anyway, they both will
probably have the same values.
>
> Also the default is actually 1 and not 2
Well, I didn't mean the default value. I meant that if example.com
exists in the database, the next domain you create gets id sequentially,
which would be 2 in this case. It is obviously not the best way to find
out ID.
> Django automatically creates a site with id 1 if the sites framework is
> activated.
> Only if you delete the existing entry and add another, you will get an
> id of 2.
Django automatically creates 'example.com' site with ID 1, that's true.
There is no way to specify a default site at the startup time, to
something other than 'example.com'. Anything you create after gets next
sequential id.
Either way, that is Django's internal semantics and I only mentioned as
a stupid shortcut ;-)
> Just editing will leave you with 1.
>
> as mentioned in the issue on gitlab, I think we should just drop the
> SITE_ID or maybe only enable it for DEBUG==True
Yeah, I agree it would make sense to not set a SITE_ID by default, that
removes this extra step of finding and setting SITE_ID.
> _______________________________________________
> 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: Configuration variables in Docker
by Abhilash Raj
> On Apr 8, 2021, at 6:49 AM, Jens Günther <jens.guenther(a)posteo.de> wrote:
>
> Hey there, we installed the latest Docker version of Mailman3 and it seems to work for now. But I have 2 problems with configuration:
>
> ## DJANGO_ALLOWED_HOSTS
>
> Here it says, that allowed hosts can be added: https://asynchronous.in/docker-mailman/web/
>
> How de we add multiple hosts? Did I miss something? When we set 1 URL, everything works (with 2(!) Domains, since SERVE_FROM_DOMAIN is the first one). Is there a way I miss to input multiple hosts, that the variable is an array? We tried:
> - DJANGO_ALLOWED_HOSTS=example1.com,example2.com
> - DJANGO_ALLOWED_HOSTS='example1.com, example2.com'
> - DJANGO_ALLOWED_HOSTS=example1.com example2.com
> - DJANGO_ALLOWED_HOSTS=example1.com,\nexample2.com
Multiple hosts aren’t allowed in the env var as you can already see from
the config file that you added below.
Although, comma separated multiple values are something we can add
as an extension if you are willing to implement and create a Pull Request
on the Github Repo. You have already found the place to make the change.
If you want to add multiple hosts, you can override ALLOWED_HOSTS in
your /opt/mailman/web/settings_local.py.
>
> And I think some more, but never works. The corresponding config file says:
>
> ALLOWED_HOSTS = [
> "localhost", # Archiving API from Mailman, keep it.
> # "lists.your-domain.org",
> # Add here all production URLs you may have.
> "mailman-web",
> "172.19.199.3",
> os.environ.get('SERVE_FROM_DOMAIN'),
> os.environ.get('DJANGO_ALLOWED_HOSTS'),
> ]
>
> -> how is it possible to add an array for multiple Domains?
> -> if not possible, shall we provide a fix that it is?
>
> ## FILTER_VHOST
>
> I want this variable to be true in my container. When I set it as a starting variable like the other configuration options, then the variable in the container seems to be set:
>
> <code>
> # export | grep FILTER_VHOST=
> declare -x FILTER_VHOST="True"
> </code>
>
> But surely it still is set to false in mm-web-container:
>
> <code>
> # cat settings.py | grep FILTER_VHOST
> FILTER_VHOST = False
> </code>
>
> -> is it ok to put the variable like that!?
Not all variables are accepted as environment variables. Except the ones
documented, all the Mailman settings would need to go in the configuration
file mentioned above.
> -> if not, how can it be done, that it is preserved on restarting the container?
You do want to restart the container regardless of how you set it. Applications
that are already running won’t pick up any dynamic changes you made in
the environment of your shell after logging in.
> -> if I see it right, it could be then something like:
> <code>
> FILTER_VHOST = os.environ.get('FILTER_VHOST_DOCKER'),
This would work, except you need to provide a default value in the .get() call
and the environment variable should be pre-pended with `MAILMAN_` instead
of `_DOCKER` suffix.
```
FILTER_VHOST = os.environ.get(‘MAILMAN_FILTER_VHOST’, False)
```
You can open a Pull Request, this can also go into the images from next release.
--
thanks,
Abhilash Raj (maxking)
4 years, 2 months

[MM3-users] Re: Email verification
by Allan Hansen
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.
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 <mailto:hansen@rc.org>
>>
>>
>>
>>> On Feb 9, 2020, at 9:12 , Abhilash Raj <maxking(a)asynchronous.in <mailto:maxking@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… <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, 3 months

[MM3-users] Re: Run a mailman program outside of mailman shell
by Oliver Gräber
Hi,
I also would like to have an answer to this.
I was successful using the mailmanclient and the REST-API as described here:
https://docs.mailman3.org/projects/mailmanclient/en/latest/src/mailmanclien…
With this you have the same usecases as pistorius can handle in your
python scripts
Oli
Am 23.07.24 um 22:17 schrieb Greg Newby:
> Hi again folks. I have hundreds of lists to convert from MM2.1 to MM3, and
> intend to write a Python program do this this rather than running commands
> in mailman shell (and rather than running 'command()' functions in mailman
> shell, if possible).
>
> However, when I write a simple Python program to run the types of commands
> found in the Mailman docs, such as these
> <https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/commands/d…>,
> I get errors. This is a venv installation, following these instructions
> <https://docs.mailman3.org/en/latest/install/virtualenv.html>. The Mailman3
> installation is working fine and I have a handful of lists in production
> that I set up manually.
>
> Here's a very simple program, import-try1.py, just to create a list:
> #!/opt/mailman/venv/bin/python3
>
> from mailman.app.lifecycle import create_list
> l = create_list('testlist2(a)lists.aaabbb.org')
>
> Here's the output I get (yes, the domain exists and already has lists - I'm
> putting aaabbb instead of the actual domain name):
>
> ./import-try1.py
> Traceback (most recent call last):
> File "/opt/mailman/./import-try1.py", line 4, in <module>
> l = create_list('testlist2(a)lists.aaabbb.org')
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> File
> "/opt/mailman/venv/lib/python3.12/site-packages/mailman/app/lifecycle.py",
> line 74, in create_list
> getUtility(IEmailValidator).validate(fqdn_listname)
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^
> File
> "/opt/mailman/venv/lib/python3.12/site-packages/zope/component/_api.py",
> line 180, in getUtility
> raise ComponentLookupError(interface, name)
> zope.interface.interfaces.ComponentLookupError: (<InterfaceClass
> mailman.interfaces.address.IEmailValidator>, '')
>
> I get different errors with other sets of commands. The same commands work
> fine from `mailman shell`, i.e.,
>
> (venv) mailman@mail:~$ mailman shell
> Welcome to the GNU Mailman3 shell on aaabbb.org
>
>>>> from mailman.app.lifecycle import create_list
>>>> l = create_list('testlist2(a)lists.aaabbb.org')
>>>>
> Output from mailman info, with the passwords omitted:
>
> GNU Mailman 3.3.9 (Tom Sawyer)
> Python 3.12.3 (main, Apr 10 2024, 05:33:47) [GCC 13.2.0]
> config file: /etc/mailman3/mailman.cfg
> db url: postgresql://mailman:secretaaabbb@localhost/mailman
> devmode: DISABLED
> REST root url: http://localhost:8001/3.1/
> REST credentials: restadmin:reallysecretaaabbb
>
> I suspect I just need to either change the interpreter (1st line of my
> program), or find the correct 'import' lines (I've tried numerous
> variations; the above is the simplest example). Help will be appreciated!
> Greg
> _______________________________________________
> 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 o.graeber(a)jpberlin.de
10 months, 2 weeks

[MM3-users] Re: Postorius no connection to REST API
by Guillermo Hernandez (Oldno7)
On 9/8/21 17:56, Richard Rosner wrote:
>> I don't use uwsgi and know little about it so I don't know what the Unix
> domain socket /run/mailman3-web/uwsgi.sock connection is for, but this
> appears to be some miscunfiguration between apache and uwsgi.
> Normally, in an apache/uwsgi configuration, apache proxies to uwsgi via
> tcp port 8000 and uwsgi is configured with
> [uwsgi]
> uwsgi-socket = 0.0.0.0:8000
I have the apache24 and uwsgi working together. I did this way:
For the apache24 part I decided to use the mod-wsgi (and uswgi binary).
did a
pip install mod-wsgi
(with "mod_wsgi-express module-config" it shows the conf needed.)
after that a
pip install uwsgi
In my systems the mailman3 files are located at /usr/local/mailman3, and
the apache24 config path is /usr/local/etc/apache24 (I'm running FreeBSD)
- Included these lines in the "loadmodule" part of
/usr/local/etc/apache24/httpd.conf
Watch out the correct path of your python
##### begin of added lines
LoadModule wsgi_module
"/usr/local/lib/python3.7/site-packages/mod_wsgi/server/mod_wsgi-py37.so"
WSGIPythonHome "/usr/local"
WSGIDaemonProcess hyperkitty threads=25 python-path=/usr/local/mailman3
user=mailman3 group=mailman
WSGIProcessGroup hyperkitty
##### end of added lines
- Added this line in the correct places of my
/usr/local/etc/apache24/extra/httpd-vhosts.conf (in the listen 80 and
443 servers)
Include "/usr/local/mailman3/apache24.uwsgi.conf"
( my apache24.uwsgi.conf is copied below)
Then all you have to do is a
- service apache24 restart
and initiate the uwsgi with a
/usr/local/bin/uwsgi --ini /usr/local/mailman3/uwsgi.ini &
(beware the "&" backgrounding it)
####### start of /usr/local/mailman3/uwsgi.ini
# uwsgi.ini
#
[uwsgi]
# Port on which uwsgi will be listening.
http-socket = 0.0.0.0:8000
# Move to the directory wher the django files are.
chdir = /usr/local/mailman3/
# 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
gid = www
# Setup the django_q related worker processes.
attach-daemon = ./manage.py qcluster
# Setup the request log.
req-logger = file://usr/local/mailman3/logs/uwsgi.log
# Log cron seperately.
logger = cron file://usr/local/mailman3/logs/uwsgi-cron.log
log-route = cron uwsgi-cron
# Log qcluster commands seperately.
logger = qcluster file://usr/local/mailman3/logs/uwsgi-qcluster.log
log-route = qcluster uwsgi-daemons
# Last log and it logs the rest of the stuff.
logger = file://usr/local/mailman3/logs/uwsgi-error.log
####### end of /usr/local/mailman3/uwsgi.ini
####### start of /usr/local/mailman3/apache24.uwsgi.conf
Alias /favicon.ico /usr/local/mailman3/static/hyperkitty/favicon.ico
Alias /static /usr/local/mailman3/static
#########
# for hyperkitty
Alias /static/admin /usr/local/mailman3/static/admin
Alias /static/CACHE /usr/local/mailman3/static/CACHE
Alias /static/django_extensions /usr/local/mailman3/static/django_extensions
Alias /static/hyperkitty /usr/local/mailman3/static/hyperkitty
Alias /static/mailman3 /usr/local/mailman3/static/hyperkitty
Alias /static/django-mailman3 /usr/local/mailman3/static/django-mailman3
Alias /static/rest_framework /usr/local/mailman3/static/rest_framework
# for postorius
Alias /static/postorius /usr/local/mailman3/static/postorius
Alias /static/archives /usr/local/mailman3/static/postorius
#####
###ErrorLog /var/log/httpd/hyperkitty_error.log
###CustomLog /var/log/httpd/hyperkitty_access.log combined
<Directory "/usr/local/mailman3/static">
Require all granted
</Directory>
######## end of /usr/local/mailman3/apache24.uwsgi.conf
3 years, 10 months

[MM3-users] Re: Digests not working correctly
by Mark Sapiro
On 6/4/23 11:45, Joel Lord wrote:
> So I seem to have problems with both periodic AND size-triggered
> digests. Size first, this is simpler. Just got one sent out, clearly
> triggered by a new email getting added to the queued up messages, but
> the setting for the list is the default 30KB and the digest came out at
> 23.2 KB. Is it measuring the accumulated queue as size on disk
> including metadata and filesystem block sizes or something, rather than
> the size of what the emailed digest will be?
The threshold is determined by the size in bytes of the MMDF format
mailbox file in which the the messages for the digest are saved. This
does not include metadata and is not affected by block sizes. It
contains the raw messages with all headers and 8 bytes of message
separators per message and a 'From ' line per message.
Once the digest is triggered, the messages are configured into a digest
message with boilerplate, a TOC and possibly a header and/or footer
added. The messages themselves may be added as separate MIME
message/rfc822 parts to a mime format digest or added as text to a plain
format digest. Many headers are removed as the messages are added. See
<https://gitlab.com/mailman/mailman/-/blob/master/src/mailman/config/schema.…>
for what is kept. In addition any non text/plain parts in the message
are not included in the plain format digest, but are replaced by notes
that they have been removed. All this says that a MIME format may be
larger or smaller than the threshold depending on the size of the
removed headers vs. the added parts, and a plain text digest will
probably be smaller if the messages have non text/plain parts, e.g. if
content filtering doesn't collapse alternatives and leaves the text/html
alternative part, this part will not be in a plain format digest.
> Periodic is much more complicated, even to explain. I have the cron job
> running nightly at 11:00 PM and it certainly seems to be working, except
> for one really odd thing. The list also definitely has periodic digests
> enabled in the web UI. This is a very bursty list, so it will go mad
> with traffic for a few weeks and then will go mostly idle for a month or
> so. The first digest of a burst is definitely size-triggered, but
> pretty reliably it has the last few messages from the previous burst in
> there. So the one I got today had three messages from today and one
> message from May 4th. But that May 4th message should have gone out at
> 11:00 PM on May 4th with the daily digest and then gotten flushed from
> the pending digest queue, right?
That's correct. Do you ever get periodic digests sent at 11:00 PM? If
not, there is some issue either with configuration or something. If you
get them sometimes, I don't know what could be wrong.
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
2 years

[MM3-users] Re: Mailserver Log entries following through mailman?
by Stephen J. Turnbull
Andreas Barth writes:
> However, mailman doesn't have an internal id I can use to follow
> the message (or at least, it doesn't transfer one to exim upon
> delivery).
Mailman does have an internal ID for each LTMP transaction, which is
the queue file name. That is generated by hashing the message, the
current time and something else so that should be unique enough for
your purpose. I guess we could log that, but I'm not sure how that
would benefit you. Returning it in the LMTP status may be possible,
but it's not currently exposed to the LMTP runner which manages that
transaction.
> I can indeed use the user set message id for following mail.
Then I don't see the problem. Identifying a particular message is
what that is for. Unless you're getting a spew of repeats of a single
message (which is certainly possible, but then I doubt that the
problem you're solving is tracing a single instance of the spew!),
that plus the timestamp should be enough to disambiguate most possible
repeats.
> However, I would prefer some internal id, and also to have
> logged the IDs exim (or probably any other MTA) transmits upon
I don't understand. MTAs don't explicitly transmit their internal IDs
to the next hop; there's no provision for this in the SMTP (LMTP)
protocol AFAICR. They can add it to their Received field, and they
can log it themselves. In theory they can return it in the status
message they pass back to the previous MTA upon acceptance, but I
rarely recall seeing it done (Exchange does it, I think). And in any
case this only works on your site, you're still going to have to fall
back on some combination of message-id, author, and timestamp as goes
from host to host.
Please be more specific about how IDs are transmitted at your site,
and be careful that different mechanisms have to be used on receipt
and forwarding.
> delivering the mails when handing the mails over to the MTA
> again. (Probably in some format as "mailman-ID recepient MTA-id" so
> that it's easy for me to grep for message if a user complains.)
I guess we could do that for the outgoing MTA if it's present in the
status message, but that's likely to be a lot of output unless all
your subscribers are in the same domain. But there's no way to get it
for the incoming MTA as far as I know, except maybe parsing it out of
the Received chain.
Besides the dubious existence of the relevant data, the lack of
support in the SMTP and LMTP protocol means that every MTA, and some
exceptional instances of each MTA (I'm pretty sure both Postfix and
Exim4 support customizable status messages) would have to be supported
individually by parsing it out of the status return or the Received
chain, neither of which is standardized. This sounds like a lot of
work for us for each MTA in use on the Internet.
Steve
1 year, 6 months

[MM3-users] disable sign-ups
by Peter Münster
Hi,
I would like to add new accounts only manually, the mailman3 site should
not be open for sign-ups. So I've added this code to settings.py:
--8<---------------cut here---------------start------------->8---
from allauth.account.adapter import DefaultAccountAdapter
class MyAccountAdapter(DefaultAccountAdapter):
def is_open_for_signup(self, request):
return False
ACCOUNT_ADAPTER = 'MyAccountAdapter'
--8<---------------cut here---------------end--------------->8---
It seems to work, but the user experience is not optimal: the user can
click on "Sign Up", and then gets to "Server Error (500)". This is the
log:
--8<---------------cut here---------------start------------->8---
ERROR 2018-01-31 21:53:47,116 6769 django.request Internal Server Error: /accounts/signup/
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/django/core/handlers/base.py", line 132, in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/python2.7/site-packages/django/views/generic/base.py", line 71, in view
return self.dispatch(request, *args, **kwargs)
File "/usr/lib/python2.7/site-packages/django/utils/decorators.py", line 34, in _wrapper
return bound_func(*args, **kwargs)
File "/usr/lib/python2.7/site-packages/django/views/decorators/debug.py", line 76, in sensitive_post_parameters_wrapper
return view(request, *args, **kwargs)
File "/usr/lib/python2.7/site-packages/django/utils/decorators.py", line 30, in bound_func
return func.__get__(self, type(self))(*args2, **kwargs2)
File "/usr/lib/python2.7/site-packages/django_allauth-0.34.0-py2.7.egg/allauth/account/views.py", line 210, in dispatch
return super(SignupView, self).dispatch(request, *args, **kwargs)
File "/usr/lib/python2.7/site-packages/django_allauth-0.34.0-py2.7.egg/allauth/account/views.py", line 79, in dispatch
**kwargs)
File "/usr/lib/python2.7/site-packages/django_allauth-0.34.0-py2.7.egg/allauth/account/views.py", line 182, in dispatch
if not self.is_open():
File "/usr/lib/python2.7/site-packages/django_allauth-0.34.0-py2.7.egg/allauth/account/views.py", line 191, in is_open
return get_adapter(self.request).is_open_for_signup(self.request)
File "/usr/lib/python2.7/site-packages/django_allauth-0.34.0-py2.7.egg/allauth/account/adapter.py", line 501, in get_adapter
return import_attribute(app_settings.ADAPTER)(request)
File "/usr/lib/python2.7/site-packages/django_allauth-0.34.0-py2.7.egg/allauth/utils.py", line 150, in import_attribute
pkg, attr = path.rsplit('.', 1)
ValueError: need more than 1 value to unpack
ERROR 2018-01-31 21:53:47,116 6769 django.request Internal Server Error: /accounts/signup/
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/django/core/handlers/base.py", line 132, in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/python2.7/site-packages/django/views/generic/base.py", line 71, in view
return self.dispatch(request, *args, **kwargs)
File "/usr/lib/python2.7/site-packages/django/utils/decorators.py", line 34, in _wrapper
return bound_func(*args, **kwargs)
File "/usr/lib/python2.7/site-packages/django/views/decorators/debug.py", line 76, in sensitive_post_parameters_wrapper
return view(request, *args, **kwargs)
File "/usr/lib/python2.7/site-packages/django/utils/decorators.py", line 30, in bound_func
return func.__get__(self, type(self))(*args2, **kwargs2)
File "/usr/lib/python2.7/site-packages/django_allauth-0.34.0-py2.7.egg/allauth/account/views.py", line 210, in dispatch
return super(SignupView, self).dispatch(request, *args, **kwargs)
File "/usr/lib/python2.7/site-packages/django_allauth-0.34.0-py2.7.egg/allauth/account/views.py", line 79, in dispatch
**kwargs)
File "/usr/lib/python2.7/site-packages/django_allauth-0.34.0-py2.7.egg/allauth/account/views.py", line 182, in dispatch
if not self.is_open():
File "/usr/lib/python2.7/site-packages/django_allauth-0.34.0-py2.7.egg/allauth/account/views.py", line 191, in is_open
return get_adapter(self.request).is_open_for_signup(self.request)
File "/usr/lib/python2.7/site-packages/django_allauth-0.34.0-py2.7.egg/allauth/account/adapter.py", line 501, in get_adapter
return import_attribute(app_settings.ADAPTER)(request)
File "/usr/lib/python2.7/site-packages/django_allauth-0.34.0-py2.7.egg/allauth/utils.py", line 150, in import_attribute
pkg, attr = path.rsplit('.', 1)
ValueError: need more than 1 value to unpack
--8<---------------cut here---------------end--------------->8---
Do you have any hints, how to avoid such errors please?
TIA for any help,
--
Peter
7 years, 4 months

[MM3-users] Re: Subscription request cannot be moderated: 404 Not Found
by Eric Broens
Hi Mark,
Unfortunately the provided options didn't work out either:
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 ************* mailing list
>>> ISubscriptionManager(m).confirm('4d6b4b11266c7332684c5a492eb3f92c531f761b')
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/opt/mailman/venv/lib64/python3.6/site-packages/mailman/app/subscriptions.py", line 578, in confirm
workflow.restore()
File "/opt/mailman/venv/lib64/python3.6/site-packages/mailman/app/workflow.py", line 142, in restore
raise LookupError(self.token)
LookupError: 4d6b4b11266c7332684c5a492eb3f92c531f761b
I noticed that the mail address was also listed as a non-member.
After deleting it there, I could not accept the subscription either.
Next, I have rejected the subscription and added it using the mass subscription option in the WebUI.
I'll monitor if such cases will happen again.
Thanks,Eric
On Saturday, January 16, 2021, 06:05:19 PM GMT+1, Mark Sapiro <mark(a)msapiro.net> wrote:
On 1/16/21 7:49 AM, Eric Broens via Mailman-users wrote:
> Hi Mark,
> I can't find any log entry which indicate a problem with this subscription request.
> The _request table does not contain a request for the specific mailinglist, but I am not sure if subscription requests are included in this table.
It is unclear and confusing, but the requests are not in the _request
table. See
<https://gitlab.com/mailman/mailman/-/issues/768#note_415536043>. So
this is normal.
> The token is found in the pended table:
>
> +-----+------------------------------------------+---------------------+
> | id | token | expiration_date |
> +-----+------------------------------------------+---------------------+
> | 115 | 4d6b4b11266c7332684c5a492eb3f92c531f761b | 2031-01-04 16:17:38 |
> +-----+------------------------------------------+---------------------+
>
> These are the relevant entries in the pendedkeyvalue table:
> +------+--------------+-------------------------------------+-----------+
> | id | key | value | pended_id |
> +------+--------------+-------------------------------------+-----------+
> | 1130 | type | subscription | 115 |
> | 1131 | list_id | "********************" | 115 |
> | 1132 | email | "***********************@*********" | 115 |
> | 1133 | display_name | "" | 115 |
> | 1134 | when | "2021-01-06T16:17:38" | 115 |
> | 1135 | token_owner | "moderator" | 115 |
> +------+--------------+-------------------------------------+-----------+
>
> Can I workaround this problem for this specific subscriber by adding entries in the _request table, and if so what do I need to add?
Adding to the _request table won't help. Try confirming by emailing
listname-confirm+4d6b4b11266c7332684c5a492eb3f92c531f761b(a)list.domain
You could also try confirming via mailman shell
mailman shell -l list.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
>>>
ISubscriptionManager(m).confirm('4d6b4b11266c7332684c5a492eb3f92c531f761b')
Traceback (most recent call last):
File "<console>", line 1, in <module>
File
"/opt/mailman/mm/venv/lib/python3.7/site-packages/mailman-3.3.3b1-py3.7.egg/mailman/app/subscriptions.py",
line 570, in confirm
raise LookupError
LookupError
In my case, I get the LookupError because the token doesn't exist, but I
think it should work for you.
--
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: lmtp runner not starting
by Guillermo Hernandez (Oldno7)
El 1/4/23 a las 21:38, Mark Sapiro escribió:
> On 4/1/23 12:22, Guillermo Hernandez (Oldno7) via Mailman-users wrote:
>>
>> El 1/4/23 a las 21:14, Mark Sapiro escribió:
>>>
>>> If you had completely stopped Mailman core and then started it, lmtp
>>> runner should have started. What are the complete log messages from
>>> mailman.log following the start?
>>>
>> I sent them before
>
>
> And there is no `lmtp runner started` message in the log, so it isn't
> being started at all.
>
>
>>> What does `mailman conf -s runner.lmtp` show?
>>>
>> Here it is:
>>
>> root@www:/usr/local/mailman3 # /usr/bin/su -m mailman3 -c
>> "/usr/local/bin/mailman -C /usr/local/mailman3/var/etc/mailman.cfg
>> conf -s runner.lmtp"
>> [runner.lmtp] class: mailman.runners.lmtp.LMTPRunner
>> [runner.lmtp] instances: 1
>> [runner.lmtp] max_restarts: 10
>> [runner.lmtp] path:
>> [runner.lmtp] sleep_time: 1s
>> [runner.lmtp] start: yes
>
>
> This says the runner should be started. That is the command that
> starts Mailman? is it
Yes, indeed.
>
> /usr/bin/su -m mailman3 -c "/usr/local/bin/mailman -C
> /usr/local/mailman3/var/etc/mailman.cfg start"
>
> or is it something that perhaps uses a different config.
>
> What happens if you do
>
> /usr/bin/su -m mailman3 -c "/usr/local/bin/runner -C
> /usr/local/mailman3/var/etc/mailman.cfg -v -r lmtp"
>
I get the same error as before:
root@www:/usr/local/mailman3 # /usr/bin/su -m mailman3 -c
"/usr/local/bin/runner -C /usr/local/mailman3/var/etc/mailman.cfg -v -r
lmtp"
Apr 01 21:40:36 2023 (12396) Using selector: KqueueSelector
Apr 01 21:40:36 2023 (12396) Using selector: KqueueSelector
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
1128, in __call__
return self.main(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/click/core.py", line
1053, in main
rv = self.invoke(ctx)
File "/usr/local/lib/python3.9/site-packages/click/core.py", line
1395, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/local/lib/python3.9/site-packages/click/core.py", line
754, 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
--
___________________________________________
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, 2 months

[MM3-users] Re: Mailman 3 Status Update Please?
by tlhackque
On 21-Jul-17 22:58, Barry Warsaw wrote:
>
> One big project that I’d love to see gain more traction is Lemme, our authenticating REST proxy. We just haven’t had much collective resources to spend working on it.
>
> https://gitlab.com/mailman/lemme
>
> Cheers,
> -Barry
>
It's not obvious why this is a 'big project', or why it needs to be a
separate proxy. Modularity can go too far.
The architectural problem with a separate proxy that provides separation
of privilege is that the proxy has to be kept in sync with the core -
add an object or property to the core, and the proxy has to be updated.
You'll end up mirroring the decoding and structure of the core in the
proxy in order to figure out what the access rights are. Or the proxy
does just authentication and passes on a token used for authorization -
in which case the proxy isn't adding much value. You already have a
database of users & passwords - adding another database for the proxy is
not going to simplify the admin's life.
In addition, as the recent issues indicate, the REST API already has
scaling problems - adding a proxy in the path will exacerbate those.
The REST API supports Basic authentication - which is adequate for
identifying users and delivering passwords, if over an encrypted link
(e.g. TLS, which is easy to set up with standard libraries).
Personally, I prefer client certificates as an identifier - which again,
your TLS library will validate. They can be mapped to a username easily
- just add the certificate's issuer and subject to the user data. TLS
will handle verification & revocation (CRL and/or OCSP with your
"trusted authorities" bundle or path). Webservers handle this, and can
be used as a model. (E.g. apache's mod_ssl).
What's missing is a STARTTLS-like mechanism in the REST API, a
privileges field in the user and/or list databases, and suitable checks
in the API actions. Even that can be simplified by requiring TLS for
all connections, even local ones. I prefer that approach, as it reduces
bugs and corner cases. For backward compatibility, a global
configuration setting for TLS on or off can be added.
Alternatively, you can use a webserver as a reverse proxy & let it
handle the authentication. You already do this with DJango. The
drawback is that the path from the proxy to the mailman REST server
needs to be protected or trusted - a local socket on the same machine as
the webserver is one approach. But that limits configurations. Or you
can use TLS from the webserver to the API - but setting that up (and
documenting it for users) is more work - and at that point, you've done
95% of the work for a direct TLS connection. (The advantage is where
the webserver provides single signon authentication.) So I'd avoid this
path & implement TLS in the REST server.
Either way, the major work is (or should be) authorization tests in the
core, with a touch of mapping an authenticated user to her(his)
capabilities (for a list) in the database. Not a s"big" separate project.
Why have you come to a different conclusion?
7 years, 10 months

[MM3-users] Re: An issue with the postfix_domains directory creation and the mailman start command.
by Keith Christian
Ron,
I ultimately have these layout files, due to what I've seen in the
documentation.
Not sure if these conflict with each other or if I need to create
directories, these are in the /etc/mailman3/mailman.cfg listing below.
layout: here
layout: fhs
layout: local
"Mailman info" to verify the mailman.cfg file in use:
(venv) [mailman3@someserver ~]$ mailman info|cat -n
1 GNU Mailman 3.3.9 (Tom Sawyer)
2 Python 3.9.19 (main, May 16 2024, 08:45:40)
3 [GCC 8.5.0 20210514 (Red Hat 8.5.0-22)]
4 config file: /etc/mailman3/mailman.cfg
5 db url: postgresql://mailman3:not_the_password@localhost:5432/mailman3
6 devmode: DISABLED
7 REST root url: http://localhost:8001/3.1/
8 REST credentials: restadmin:restpass
Here is the /etc/mailman3/mailman.cfg file:
(venv) [mailman3@someserver ~]$ cat -n /etc/mailman3/mailman.cfg
1 # /etc/mailman3/mailman.cfg
2 [paths.here]
3 var_dir: /opt/mailman3/mm/var
4
5 [mailman]
6 layout: here
7 layout: fhs
8 layout: local
9 # This address is the "site owner" address. Certain messages
which must be
10 # delivered to a human, but which can't be delivered to a list
owner (e.g. a
11 # bounce from a list owner), will be sent to this address. It
should point to
12 # a human.
13 site_owner: user(a)example.com
14
15 [database]
16 class: mailman.database.postgresql.PostgreSQLDatabase
17 #url: postgresql://mailman:MYPASSWORD@localhost/mailman
18 url: postgresql://mailman3:not_the_password@localhost:5432/mailman3
19
20 [archiver.prototype]
21 enable: yes
22
23 # For the HyperKitty archiver.
24 [archiver.hyperkitty]
25 class: mailman_hyperkitty.Archiver
26 enable: yes
27 configuration: /etc/mailman3/mailman-hyperkitty.cfg
28
29 [shell]
30 history_file: $var_dir/history.py
31
32 [mta]
33 verp_confirmations: yes
34 verp_personalized_deliveries: yes
35 verp_delivery_interval: 1
36
On Wed, Jul 10, 2024 at 1:40 PM Ron <admin(a)bclug.ca> wrote:
>
> On 2024-07-10 08:48, Keith Christian via Mailman-users wrote:
>
> > 4 [mailman3@somehost ~]$ sudo ls -l
> > /opt/mailman3/mm/var/data/postfix_domains
> > 5 ls: cannot access '/opt/mailman3/mm/var/data/postfix_domains':
> > No such file or directory
> > 6 [mailman3@somehost ~]$ ls -dl/opt/mailman3/mm/var/data/
> > 7 drwxr-xr-x. 2 mailman3 mailman3 6 Jul 5 13:38
> > /opt/mailman3/mm/var/data/
> >
> > What should I do about lines 4-7? Thought it might be a permissions
> > issue but it's owned by the correct user.
>
> My guess would be that mailman is using a different location for storing
> these files (aliases, domains, etc.)
>
>
> One could search the system for where (if) the files were created with
> something like:
>
> find / -name "postfix_domains"
>
>
>
> Another (better?) thought would be to compare the [paths] pointed to by
> the "layout: ..." in /etc/mailman3/mailman.cfg to ensure it's pointing
> where you expect (in this case, /opt/mailman3/mm/var/data for data_dir).
>
>
> As user mailman, running:
>
> mailman conf
>
> to double check the "layout: ..." that's in use.
> _______________________________________________
> 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
10 months, 4 weeks

[MM3-users] Re: Weird response to postings after subscriptions and accounts
by paul@arenson.org
Results of my redoing my tests following Mark’s comments.
A) Thoughts before the tests
B) The tests
C) Summary
A) Thoughts before summarizing tests.
1) I had originally thought of making archives only for subscribers to give them the benefit of posting from the archives directly and being able to find stuff more like a forum (email is always hard to follow).
2) But in retrospect it seems people can get an idea what the list is about from free access. So that is now what I have.
3) On the other hand, it is a bit confusing that a non member can post from the archives without realizing that they need to register, with my settings I can moderate and decide if I want to add him or her to the list based on whether that is spam or not. So ok.
B) THE TESTS
I was testing too many variables so, to simplify things, I made my settings as follows
1) Subscription—> Confirm
2) Message Acceptance—> Default processing (so only members may post)
3) Testing Procesure
I added people three ways—> To do that I created 3 unique addresses to see if they can send and receive by email.
3a) subscribe without creating an account—from here (bottom) https://list.tokyoprogressive.org/postorius/lists/discuss.list.tokyoprogres… <https://list.tokyoprogressive.org/postorius/lists/discuss.list.tokyoprogres…>
Comment: This is fastest. User can immediately send and receive.
3b) Subscription / Unsubscription from same page, navigate to Login and again navigate to signup
Comment 1: Confusing because even after creating an account, they are not subscribed to the list. Maybe it makes sense if a person has many lists, but I only have this one. It does not say clearly that one has to subscribe after creating an account.
Comment 2: The other thing is that it does not show my domain but that of mailman3.emwd.com <http://mailman3.emwd.com/>.
3c) Mass Subscribe by me. Which is what I intend for my 600 users from another list company.
Comment This worked fine.
C) Summary
1) I have been thinking of having an account as a good way to get users used to using the archives as a way to confirm current and past topics (as opposed to keeping track by email. But it seems I need to tell them to BOTH subscribe AND create an account. Am I thinking about it the wrong way?
2) When a person wants to unsubscribe, they go to discuss-request(a)list.tokyoprogressive.org <mailto:discuss-request@list.tokyoprogressive.org> with subject bline help.
What comes back is the below.
a) Isn’t there a better way to unsubscribe by email?
b) And how about a way to remove their account itself?
The results of your email command are provided below.
- Original message details:
From: Paul Subscribe <tokyosubscribe(a)icloud.com <mailto:tokyosubscribe@icloud.com>>
Subject: help
Date: Wed, 18 Sep 2019 01:33:43 -0000
Message-ID: <e46a43ec-e7dd-4846-94b1-d899ea626f53(a)me.com <mailto:e46a43ec-e7dd-4846-94b1-d899ea626f53@me.com>>
- Results:
Ignoring non-text/plain MIME parts
confirm - Confirm a subscription request.
echo - Echo back your arguments.
end - Stop processing commands.
help - Get help about available email commands.
join - Join this mailing list.
leave - Leave this mailing list.
stop - An alias for 'end’.
Thanks!!!!
5 years, 8 months

[MM3-users] Re: very few moderation capabilities for moderators
by Stephen J. Turnbull
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.
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
3 years, 8 months

[MM3-users] Re: Converting discussion list to read-only list (settings)
by Mark Sapiro
On 10/12/19 8:55 PM, Paul Arenson wrote:
> I have found that my users in the discussion list are creating their own topics rather than using the existing ones, so decided to make it a read-only list and use WordPress moderated comments. Since I do not have the original settings for READ ONLY (this is a hosted version), I want to make sure that these are correct. Can someone comment.
I'm guessing what you want and what you are saying First, I think you
are saying your issue is that your users are using HyperKitty as a web
forum and when replying to a message in an existing thread instead of
using the 'reply' action on that message, they use the Start a new
thread button.
Is that really what you are saying?
> MOST IMPORTANT—> What setting makes it a discussion list as opposed to read only?
If by "read only" you mean the "Announce only mailing list style" as
opposed to the "Ordinary discussion mailing list style" the only
difference is that for the Announce only style the list attribute
allow_list_posts is False and for the Discussion style, it's True.
This is the setting in Postorius -> Settings -> Alter Messages ->
Include the list post header an all it does is include or not include
the List-Post: header in mail from the list.
> ALTER MESSAGES
> -----------------------
> Filter content Now YES
>
> Collapse Alternatives Now yes
>
> Convert html to plain text Now NO
Above are not relevant.
> Anonymous NOW YES
Are you sure you want this. What it does is replace the From: address
with the list posting address and removes all other headers that could
aid in identifying the poster. It is intended for lists discussing
things such as domestic abuse where people may want to be able to post
anonymously.
> Include RFC2369 headers Now Yes
OK, but not relevant
> Include the list post header Now Yes
This is what the announce style will set to No.
> Reply Goes to List Now No munging
>
> Pipeline Default
>
>
>
> DMARC MITIFGATIONS
> -----------------------
>
> Replace From with list address
>
> DMARC mitigate unconditionally Now NO
>
>
> MESSAGE ACCEPTANCE
> -----------------------
>
> Require Explicit Destination Yes
>
> Administrivia YES
The above are OK, but again not relevan to what I think you're asking.
>
> Default action to take when a member posts to the list Hold for moderation
>
>
> Default action to take when a member posts to the list Hold for moderation
Basically these two settings will hold all posts for moderator action,
however if the user has a moderation setting other thgan list default,
they won't apply.
> OTHER?
See the FAQ at <https://wiki.list.org/x/4030685>. This is written for
Mailman 2.1 and older and some of the settings aren't relevant or
exactly the same in Mailman 3, but it may help.
On the other hand, if I'm not understanding what you want, please clarify.
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
5 years, 7 months

[MM3-users] Re: Verification emails 'helo' rejected
by Greg Newby
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)
I set them explicitly to postorius(a)lists.domain.tld and
root(a)lists.domain.tld and restarted mailman and mailman web, and this did
not change the problem with the server error and mail log entries above.
> I am not sure what files on your server contains them in your server.
>
> And while at it, also fix the site_owner: email in mailman.cfg.
>
That was already set to my email address, and I do correctly get site
emails, such as cron output.
Further guidance would be appreciated.
~ Greg
7 months, 3 weeks

[MM3-users] Re: Installing mailman 3
by Rafael Mora
Hello,
I'm newbie in centos 7 and I might need a little bit of help
understanding (filesystem
hierarchy standard) layout, I don't know about it.
How do I check if I have mailman v2 installed???
How do I change the layout to "dev"??
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
7 years, 10 months

[MM3-users] Re: how to integrate subscription into static jekyll website
by Stephen J. Turnbull
Hagen Bauer writes:
> Has anybody tried to hide the direct api access behind a nginx reverse
> proxy url?
Sounds straightforward.
I doubt anybody's done it, though, because you still face the problem
that anybody with that access is a site manager, with unclear limits
on their power outside of Mailman. (Shouldn't be much they can do
outside of Mailman, but I wouldn't bet my host on it.) In many cases,
the real site manager is also the host admin, so they have sufficient
access to a shell account. There's no need for her to have a proxy;
why make it available to people who are supposed to have less power?
Note I'm *not* saying this *never* makes sense. I'm just saying that
in a lot of cases it won't buy you very much because Mailman isn't set
up to provide granular authorization of REST endpoints.
> on the Webseite I would have a url like this
>
> mailmanserver.tld/subcsribe/user(a)mail.com
>
> And within the nginx proxy configuration on the server this would
> translate to
>
> localhost:80xx/"mailman-restapi-with-credentials"user(a)mail.com
First of all, the address to subscribe is a variable, so at a bare
minimum your nice static site has to provide a form, which isn't very
static. I guess you could put the URL to the nginx proxy as the
action URL in the form, but then the proxy needs to deal with a
form-encoded query string to translate to the appropriate REST
endpoint.
I suppose you could also have the user type the URL including the
email address into the browser address bar, but Abhilash's idea of
providing a mailto:subscribe@mailmanserver.tld URL seems more
convenient. The mailto URL also solves the problem of confirming
ownership of the mailbox, since that logic is built in to the
subscribe-by-mail code.
Second, if your proxy is configured very carefully, you might be able
to restrict this to only the exact operations you want to expose, here
subscription. However, although the email interface implements
verification by providing a one-time token that must be read from the
mailbox of the address (and so proves ownership of the mailbox), I
don't think the REST API implements operations like that. IIRC that
is implemented in Postorius. (Abhilash?) If my memory is correct,
you would also need to implement that, and that's definitely not static.
> So the public does not see the credentials. And if my nginx host
> config is hacked I have a problem anyway.
I can't speak for Abhilash, but what would worry me is not that nginx
is already hacked, but rather that if not properly configured, it
might be possible for someone to access REST endpoints you don't want
exposed through this interface, and maybe even to other parts of the
webserver. To give a simple example, consider a variant on the
ancient Apache traversal bug:
mailmanserver.tld/subscribe/../unsubscribe/user(a)mail.com
Probably nginx and/or Mailman and/or your proposed proxy config are
already capable of stopping this particular well-known attack, but
undoubtedly there are more sophisticated attacks that I don't know
about.
6 years, 7 months

[MM3-users] Re: Users, members, accounts and subscribers
by Cameron Smith
Excellent = explanation. Thank you Stephen.
On = 2017.08.20, at 19:41 , Stephen J. Turnbull =
<turnbull.stephen.fw(a)u.tsukuba.ac.jp> wrote:
Cameron Smith = writes:
In an attempt to introduce a = friend to MailMan3, I had her
subscribe to a couple of lists that I = set up and we exchanged a
few
messages via the email = interface.
Then I introduced her to the web interface and we were = both
confused when she could not log-in/sign-in and was told that = her
email address was not recognized.
In theory = we could recognize addresses, and tell the user that the
address is = not associated with an account. This might not be a
bad
idea, = but in theory it could be used by spammers to confirm that
accounts = are good ones.
What we can do right away is to add a generic = statement to the
sign in
screen that "addresses that are not linked = to accounts and
presented
along with a valid password will be not be = recognized".
It was only later that I = realized that while she was a subscriber,
she hadn=E2=80=99t yet = signed up for an account.
Yes, that will happen in = some cases, depending on how the
subscription
was created.
The = solution is simple: create an account via the web interface,
and
link = the address (and therefore subscriptions using that address)
to
the = account.
What is the point of = =E2=80=9Caccounts"?
A "user" or "account" manages = the entire relationship that a
person
has with a Mailman = installation, including subscriptions, personal
profile, = administrative roles, and credentials (currently just
passwords). = An account may have several addresses associated with
it
and = several subscriptions. Sometimes several addresses may = be
subscribed to the same list, because subscription is often =
required by
the posting priviliege.
In Mailman 2, where a = person is identified by an address, a person
with several addresses = would have to manage the credentials and
preferences for each address = separately. Mailman 3's concept of
"user" allows a person have = one account with a single password,
set
typical preferences, and = still have exceptional configurations for
particular subscriptions. = It's more complex, but experience shows
users are happy to = accept this much extra complexity for the power
= and
convenience.
A "subscription" links a particular address = and the associated
user,
if there is one, to a mailing list. An = address is its own
credential:
if you can reply to a mail sent to an = address, it is assumed you
own
that address and are allowed to = subscribe it to lists, post from
it,
etc. (Not just by Mailman: = this is an extremely common setup on
the
Internet.) However, = this model becomes inconvenient rather
quickly if
you need to manage = relationships among several addresses.
Why can someone become a subscriber, but not have an = account?
There are subscriptions, such as other = lists or archiving
services,
that don't serve a single human person. = It also is a reasonable
approach to situations where it's a bad = idea, or even impossible,
to
access personal data and credentials, = such as a subscription by an
admin on behalf of a = person.
_______________________________________________
Mailman-user= s mailing = list
mailman-users(a)mailman3.org
https://lists.mailman3.org/mailman3/=
lists/mailman-users.mailman3.org/
Cameron = Smith
=
7 years, 9 months

[MM3-users] Re: error when starting the mailman executable from the venv
by Brian Carpenter
Well the first thing to check I think is the
/opt/mailman/mm/logs/mailman.log to see if that holds any clues to the
failure.
On 2/10/21 8:58 AM, Christian Stalberg via Mailman-users wrote:
> Thanks for the quick response Brian. No I did not try what you suggest. I
> rebooted the entire server and that fixed it. What can I do to prevent this
> from happening again?
>
>
> -----Original Message-----
> From: Brian Carpenter <brian_carpenter(a)emwd.com>
> Sent: Wednesday, February 10, 2021 5:52 AM
> To: mailman-users(a)mailman3.org
> Subject: [MM3-users] Re: error when starting the mailman executable from the
> venv
>
> Have you tried using the following as root?
>
> #systemctl restart mailman
>
> On 2/10/21 8:39 AM, Christian Stalberg via Mailman-users wrote:
>> I tried to access a 'held' message and got the 'Mailman REST API not
>> available. Please start Mailman core.' error message. When I went to
>> start the mailman executable from the venv I get this
>>
>> #~mailman/mm/venv/bin/mailman start
>> Starting Mailman's master runner
>> Generating MTA alias maps
>> Traceback (most recent call last):
>> File "/opt/mailman/mm/venv/bin/mailman", line 11, in <module>
>> load_entry_point('mailman==3.3.2', 'console_scripts', 'mailman')()
>> File "/opt/mailman/mm/venv/lib/python3.7/site-packages/click/core.py",
> line 829, in __call__
>> return self.main(*args, **kwargs)
>> File "/opt/mailman/mm/venv/lib/python3.7/site-packages/click/core.py",
> line 782, in main
>> rv = self.invoke(ctx)
>> File
> "/opt/mailman/mm/venv/lib/python3.7/site-packages/mailman/bin/mailman.py",
> line 68, in invoke
>> return super().invoke(ctx)
>> File "/opt/mailman/mm/venv/lib/python3.7/site-packages/click/core.py",
> line 1259, in invoke
>> return _process_result(sub_ctx.command.invoke(sub_ctx))
>> File "/opt/mailman/mm/venv/lib/python3.7/site-packages/click/core.py",
> line 1066, in invoke
>> return ctx.invoke(self.callback, **ctx.params)
>> File "/opt/mailman/mm/venv/lib/python3.7/site-packages/click/core.py",
> line 610, in invoke
>> return callback(*args, **kwargs)
>> File
> "/opt/mailman/mm/venv/lib/python3.7/site-packages/click/decorators.py", line
> 21, in new_func
>> return f(get_current_context(), *args, **kwargs)
>> File
> "/opt/mailman/mm/venv/lib/python3.7/site-packages/mailman/commands/cli_contr
> ol.py", line 131, in start
>> os.execl(*execl_args)
>> File "/usr/lib/python3.7/os.py", line 539, in execl
>> execv(file, args)
>> TypeError: expected str, bytes or os.PathLike object, not NoneType
>>
>>
>> Please advise. Thank you.
>> ~Christian
>> _______________________________________________
>> 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/
> --
> Brian Carpenter
> Harmonylists.com
> Emwd.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/
> _______________________________________________
> 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/
--
Brian Carpenter
Harmonylists.com
Emwd.com
4 years, 3 months

[MM3-users] Re: Assistance Needed for Ubuntu 22.04 Mailman3 Installation and Configuration
by Odhiambo Washington
On Sat, Aug 31, 2024 at 9:12 AM smiithjohn90--- via Mailman-users <
mailman-users(a)mailman3.org> wrote:
> Hello Everyone,
>
> I'm trying to install Mailman3 on an Ubuntu 22.04 server right now, and
> I've run across a few obstacles that I'd like help with. I've followed the
> installation instructions, but I'm having trouble in a couple places, so I
> was hoping an experienced someone might help me out.
>
> This is what I have completed thus far:
>
> - I used the apt-get package manager to install Mailman3.
>
Installing Mailman3 using the steps outlined at
https://docs.mailman3.org/en/latest/install/virtualenv.html is highly
recommended.
However....
- PostgreSQL was configured as the database backend.
> - Postfix was installed and set up to function as the Mail Transfer Agent
> (MTA).
> - Assemble Postorius, Hyperkitty, and the Mailman3 core.
>
> Problems I'm Having:
>
> Postorius and Hyperkitty Connectivity: I'm having problems making sure
> that the Mailman core is correctly connected to Postorius and Hyperkitty. I
> get a 502 Bad Gateway error when I try to access the web interfaces.
> Despite checking my specifications, I am unable to identify the problem.
>
Check to see that "mailman-web" is running and listening on the port you
have specified in your webserver config.
lsof -i -P -n | grep :NNNN
> Problems with Email Delivery: I'm also having trouble with email delivery.
> Although Mailman appears to be receiving emails, it is not appearing to be
> sending any out. I think there might be a Postfix problem, but I'm not sure
> how to solve it.
>
You can check Postfix logs for clues.
Generally Suggested Practices: Are there any particular security best
> practices I should be aware of when it comes to Mailman3 installations? I
> want to confirm that my configuration is both performance- and
> security-optimized.
>
>
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/thread/…
> https://www.igmguru.com/salesforce/salesforce-developer-training
>
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/thread/…
>
> I would be grateful for any advice or resources! It would be really
> beneficial if someone with a similar setup could share their settings or
> troubleshooting procedures.
>
Our settings are as documented in this HOWTO:
https://docs.mailman3.org/en/latest/install/virtualenv.html
We do NOT use Distro packages for Mailman3.
Regarding "performance- and security-optimized", I can say that for
Nginx/Apache/Postfix, the usual security/optimization rules apply, which I
think might be somehow beyond the scope of the MM3 discussion.
PS: There are others who use the distro packages to install MM3 and they
have previously posted the details in this list. You could search the list
archives for that.
There is some old documentation that I believe can work for you too:
https://docs.google.com/document/d/1xIcSsoNFp2nHi7r4eQys00s9a0k2sHhu1V5Plan…
It's detailed enough.
--
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, 1 week

[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, 3 months

[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, 10 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, 4 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)
6 years

[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, 9 months

[MM3-users] Re: configuring postfix local recipient table
by Stephen J. Turnbull
Alexander Inzinger-Zrock writes:
> It seems i set both *facepalm* while doing [1] and then adding
> changes according to [2]:
It's OK to set both. But you need to coordinate "layout: LAYOUT" and
"[paths.LAYOUT]" if you are going to set any paths such as var_dir.
> so i have empty logs at /opt/mailman/mm/var/logs
> and populated log files under /var/tmp/mailman/logs
"var_dir: /var/tmp/mailman" is a good setting for experimenting with
Mailman 3 before you're ready for production. But you don't want
/var/tmp for production. Your logs and any queued messages will get
deleted when the system reboots (for most system configurations).
> Now - before changing the /etc/postfix/main.cfg - there is the
> question that brings us almost back to the start:
For the production system you want main.cf as it is, but change
mailman.cfg to
[mailman]
layout: local
[paths.local]
var_dir: /opt/mailman/mm/var
For an experimental system where you don't care if stuff disappears on
reboot, you can comment out the two lines for [paths.local], and
change the prefix in the *_maps variables in main.cf from
/opt/mailman/mm/var/ to /var/tmp/mailman/.
> **what is the recommended place to put the files to?**
Wherever is convenient for you! There are four predefined "selectable
layouts", paths.local, paths.dev, paths.here, and paths.fhs based on
paths.master. paths.master defines the configurable names, and some
more or less convenient defaults. In particular, it chooses a
non-destructive (because temporary) var_dir: /var/tmp/mailman, and
puts all of Mailman's data in a flat structure underneath.
paths.local is just an alias for paths.master (defined in schema.cfg).
paths.dev and paths.here are aliases for paths.master with var_dir set
relative to mailman.cfg and the current directory respectively (two
configurations some developers find convenient). paths.fhs pretty
much ignores paths.master (except that it must use the same directory
names) to put the various components in places that conform to the
Filesystem Hierarchy Standard (FHS), which makes Debian and Ubuntu
packagers happy.
You can select any of those by using the "[mailman] layout" setting
(I'm not sure if you can use "layout: master", but you're not supposed
to). You can further modify them by using the "[paths.LAYOUT]
SOME_dir" settings. In production, you almost certainly want either
paths.fhs (as is) or paths.local with a var_dir setting either in /opt
or in /var.
> and that the above specific /opt/mailman -part is just a leftover
"/opt" is not a "leftover", it's a convention where the whole package,
including programs and resources, is placed in its own hierarchy (like
a macOS application). The "var_dir: /opt/mailman/mm/var" setup is a
configuration that Mark Sapiro found convenient and continues to use.
I prefer a different layout, but if I were you I'd stick with layout:
local, var_dir: /opt/mailman/mm/var because everybody who answers
questions is familiar with it.
> If my assumption is correct i would create an issue + merge-request
> for the docs.
No, the docs are generally fine. I'll check some details later.
--
GNU Mailman consultant (installation, migration, customization)
Sirius Open Source https://www.siriusopensource.com/
Software systems consulting in Europe, North America, and Japan
1 month, 1 week

[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, 5 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, 7 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, 1 month

[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, 3 months

[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, 10 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, 1 month

[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, 6 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
1 month, 2 weeks

[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, 5 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/
>>>
>
6 years

[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, 9 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, 5 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, 11 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, 5 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, 1 month

[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, 8 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, 7 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, 11 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, 2 months

[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
>
2 years, 1 month

[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, 8 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, 2 months

[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/
>
7 years

[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, 1 month

[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, 7 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
3 years, 1 month

[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, 6 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, 4 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, 6 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, 9 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]
10 months, 1 week

[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, 1 month

[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?
>
2 years

[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, 4 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, 7 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
4 years

[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, 7 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
6 months, 1 week

[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, 3 months

[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.
10 months

[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, 5 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]
11 months

[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, 3 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, 5 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, 7 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
3 months, 2 weeks

[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
4 months

[MM3-users] Re: Join a Mailman 3 list?
by Thomas Ward
On 2025-06-02 20:19, Cathryn McGuire wrote:
> We are Administrators of a small neighbourhood group with more than 20 years of archives.
You'll have to talk to EMWD to see if your archives will be kept with
the migration. They have a completely custom web interface for archival.
---
I'm going to re-state what Mark said here. To quote Mark Sapiro:
> As far as your EMWD migration from cPanel Mailman 2.1 to Mailman 3 is
conerned, I think you'll find little if any change as far as email
posting to the list and email from the list is concerned, but EMWD has
their own proprietary web UI for list management and archiving, so the
web UI at EMWD is quite different from that for this list.
THEREFORE...
> We love the simple functionality of Mailman 2.
> One post goes to the entire membership by email. Any reply arrives by email; either immediately or as part of the 9:00 am Digest.
That part isn't going to change.
> No websites or browsers or sign-ins.
Well, you manage your list SOMEHOW, probably with EMWD's web panel and
UI panel.
> No threads or topics.
There's no "threads" like forums have, but discussions by topic at least
in mailman 2 and mailman 3 have still existed and probably still will
exist.
> Simply emails back and forth.
>
> Does Mailman 3 have the ability to function this way?
(Read my last statements)
> Might someone invite us to temporarily join their group so we can see how Mailman 3 operates from the point of view of members?\
EMWD uses their **own custom UI** for management and archiving. This
means that we can't give you any real guidance on EMWD and such for how
it relates to user management, etc. because the standard Mailman 3 UI
(Postorious) for that won't be what you use with EMWD. So we can't
really assist you to see how things will be from the view of "members of
the list" in that front.
For the vast majority of users and use cases though, if all they care
about is the email messages being sent to the list and received from the
list, nothing will change for users. It's the *management* components
and EMWD's custom UIs you'll have to work with though, not the standard
Postorious Mailman3 UI.
At my dayjob, we use mailing lists here on Mailman3, albeit with the
standard Postorious UI, but we have a separate management UI that we use
for managers to check who is a member, remove members, etc. that uses
the Mailman API and not Postorious, but the core management group
(myself and IT staff) use Postorious for our management tasks and to see
if Mailman is working and such. Additionally, we have 53 lists and well
over a thousand members on some of othe lists and it works well. The
vast majority of the members only care that the email functionality
works, and it does for them. (None of them use digest format mail
notifications, but that's because the lists tend to be more 'realtime'
for those members.) (And before you ask, those lists are not open)
If you have *more specific* questions beyond "do the same basics of
Mailman2 like digests, email handling, etc. still behave more or less
the same way" then you should ask those questions *specifically*.
If your specific questions revolve around the management interface, you
have to talk to EMWD. Same with message archives.
Thomas
6 days, 18 hours

[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, 8 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, 5 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, 8 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, 8 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, 4 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, 2 months

[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, 6 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, 7 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, 11 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, 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, 3 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.
10 months, 3 weeks

[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
>
>
2 years

[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, 7 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'
10 months, 3 weeks

[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, 8 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, 4 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.
8 months, 3 weeks

[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, 6 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
4 years

[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/
>
9 years

[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, 10 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]
2 years

[MM3-users] Re: No emails distributed after mail received for a new list following https://docs.list.org/en/latest/install/virtualenv.html on new mailman3 Debian 12 installation
by 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
2 months, 1 week

[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, 5 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, 5 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
3 months

[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, 9 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, 10 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, 4 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
4 months

[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, 3 months

[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, 10 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]
11 months

[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, 9 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, 9 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, 4 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, 2 months

[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, 5 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, 10 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
6 months, 4 weeks

[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, 6 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, 3 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, 4 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, 5 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
3 months, 4 weeks

[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, 8 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
>
9 months

[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, 8 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, 7 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, 7 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, 8 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, 6 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, 4 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, 10 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, 7 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, 7 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, 5 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>
2 years

[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, 3 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, 2 months

[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, 7 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, 9 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, 5 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, 2 months

[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, 1 month

[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, 3 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, 2 months

[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, 9 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, 3 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, 2 months

[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, 6 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, 10 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, 3 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, 4 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, 5 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, 7 months

[MM3-users] Re: configuring postfix local recipient table
by Alexander Inzinger-Zrock
> > 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).
> […]
> > 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".
> >
> > 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".
> >
Thanks for the tipps.
> > D. empty /opt/mailman/mm/var/data/postfix_lmtp
> > and then i just found out that my postfix_lmpt file was empty
> >
> What database are you using?[1] Is it running?
1.1 MariaDB
1.2 running ('systemctl status mariadb.service […] Active: active (running)')
> Do you have any lists configured for your Mailman 3 instance? If
> not, that file will be empty.
I have a list ''testliste01@MY_DOMAIN'', i can ''mailman inject'' mails to,
1 owner, 5 members (including the owner).
I should point out that MY_DOMAIN is not equal to the HOSTNAME of the machine,
but testmails with command ''mail'' or ''telnet'' show the same User-unkown-error,
regardles of attempts sending to testliste01@MY_DOMAIN or testliste01@HOSTNAME.
> Is Mailman running? (This probably isn't necessary, just
> checking.)
Running ('systemctl status mailman3.service […] Active: active (running)')
also ('systemctl status mailmanweb.service […] Active: active (running)')
> Is there a postfix_lmtp.db file in the same place? (Postfix will
> not read the plaintext version, it must be a .db file.)
Yes, under /opt/mailman/mm/var/data i have
1) mailman.db
2) postfix_domains (empty)
3) postfix_domains.db
4) postfix_lmtp (empty)
5) postfix_lmtp.db
I dimly remember a problem with either 2) and 4) or 3) and 5)
not beeing automatically created, but i can not tell exactly anymore.
> > 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.
+ this file seems to be missing in my setting
+ also the postmap command seemed to be unavailable for the user ''mailman''.
+ [X] placed file in same dir as mailman.cfg (/etc/mailman3/)
+ [X] replaced old config and pointed to it in mailman.cfg with full path:
#+begin_src txt /etc/mailman3/mailman.cfg
#configuration: python:mailman.config.postfix
configuration: /etc/mailman3/postfix.cfg
#+end_src
command ''mailman conf'' will show the new configuration path for
[mta] but no results for search term 'postmap_command' nor 'transport_file_type'.
> >
> > 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.
+ [ ] made postmap-command available for user ''mailman'' (still have to work on that one, will give a follow-up as soon as i tried some ideas)
1 month, 2 weeks

[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, 4 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, 10 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, 2 months

[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, 5 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, 7 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, 6 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, 10 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, 2 months

[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, 5 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
6 years

[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
2 years, 1 month

[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, 4 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, 1 month

[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, 10 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, 5 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, 8 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]
11 months

[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, 10 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, 10 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
>
5 months, 1 week

[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)
6 years, 1 month

[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, 7 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
3 months, 1 week

[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, 5 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, 11 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, 10 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, 7 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, 6 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, 5 months

[MM3-users] Mailman not starting after restoring from snapshot
by zachr@mta.ca
I made a snapshot of my mailman3 VM before running a script to modify a bunch of lists. I stupidly did not turn the VM off before I made the snapshot, so Im almost certain this is a corrupted DB problem from doing a snapshot restore. The issue is now that the mailman service will not start automatically. Im able to get to the web interface but I see the error "Mailman REST API not available. Please start Mailman core." I can su to the mailman user and run 'mailman start -f' which seems to get things going again and shows the lists as they were before the snapshot, which is good, but I would like to get the issue fixed so that services start normally. Any help is appreciated. Here is some terminal output:
=====================
'''
root@mlist3:~# systemctl status mailman3
× mailman3.service - GNU Mailing List Manager
Loaded: loaded (/etc/systemd/system/mailman3.service; enabled; preset: enabled)
Active: failed (Result: exit-code) since Mon 2025-04-28 13:24:43 UTC; 1min 39s ago
Process: 1873 ExecStart=/opt/mailman/venv/bin/mailman start (code=exited, status=2)
CPU: 776ms
Apr 28 13:24:42 mlist3 systemd[1]: Starting mailman3.service - GNU Mailing List Manager...
Apr 28 13:24:43 mlist3 mailman[1873]: Usage: mailman start [OPTIONS]
Apr 28 13:24:43 mlist3 mailman[1873]: Try 'mailman start -h' for help.
Apr 28 13:24:43 mlist3 mailman[1873]: Error: A previous run of GNU Mailman did not exit cleanly (stale_lock). Try using --force
Apr 28 13:24:43 mlist3 systemd[1]: mailman3.service: Control process exited, code=exited, status=2/INVALIDARGUMENT
Apr 28 13:24:43 mlist3 systemd[1]: mailman3.service: Failed with result 'exit-code'.
Apr 28 13:24:43 mlist3 systemd[1]: Failed to start mailman3.service - GNU Mailing List Manager.
root@mlist3:~# systemctl start mailman3
Job for mailman3.service failed because the control process exited with error code.
See "systemctl status mailman3.service" and "journalctl -xeu mailman3.service" for details.
root@mlist3:~# journalctl -xeu mailman3.service
░░
░░ A start job for unit mailman3.service has begun execution.
░░
░░ The job identifier is 662.
Apr 28 13:24:43 mlist3 mailman[1873]: Usage: mailman start [OPTIONS]
Apr 28 13:24:43 mlist3 mailman[1873]: Try 'mailman start -h' for help.
Apr 28 13:24:43 mlist3 mailman[1873]: Error: A previous run of GNU Mailman did not exit cleanly (stale_lock). Try using --force
Apr 28 13:24:43 mlist3 systemd[1]: mailman3.service: Control process exited, code=exited, status=2/INVALIDARGUMENT
░░ Subject: Unit process exited
░░ Defined-By: systemd
░░ Support: http://www.ubuntu.com/support
░░
░░ An ExecStart= process belonging to unit mailman3.service has exited.
░░
░░ The process' exit code is 'exited' and its exit status is 2.
Apr 28 13:24:43 mlist3 systemd[1]: mailman3.service: Failed with result 'exit-code'.
░░ Subject: Unit failed
░░ Defined-By: systemd
░░ Support: http://www.ubuntu.com/support
░░
░░ The unit mailman3.service has entered the 'failed' state with result 'exit-code'.
Apr 28 13:24:43 mlist3 systemd[1]: Failed to start mailman3.service - GNU Mailing List Manager.
░░ Subject: A start job for unit mailman3.service has failed
░░ Defined-By: systemd
░░ Support: http://www.ubuntu.com/support
░░
░░ A start job for unit mailman3.service has finished with a failure.
░░
░░ The job identifier is 662 and the job result is failed.
Apr 28 13:30:21 mlist3 systemd[1]: Starting mailman3.service - GNU Mailing List Manager...
░░ Subject: A start job for unit mailman3.service has begun execution
░░ Defined-By: systemd
░░ Support: http://www.ubuntu.com/support
░░
░░ A start job for unit mailman3.service has begun execution.
░░
░░ The job identifier is 1074.
Apr 28 13:30:21 mlist3 mailman[1986]: Usage: mailman start [OPTIONS]
Apr 28 13:30:21 mlist3 mailman[1986]: Try 'mailman start -h' for help.
Apr 28 13:30:21 mlist3 mailman[1986]: Error: A previous run of GNU Mailman did not exit cleanly (stale_lock). Try using --force
Apr 28 13:30:22 mlist3 systemd[1]: mailman3.service: Control process exited, code=exited, status=2/INVALIDARGUMENT
░░ Subject: Unit process exited
░░ Defined-By: systemd
░░ Support: http://www.ubuntu.com/support
░░
░░ An ExecStart= process belonging to unit mailman3.service has exited.
░░
░░ The process' exit code is 'exited' and its exit status is 2.
Apr 28 13:30:22 mlist3 systemd[1]: mailman3.service: Failed with result 'exit-code'.
░░ Subject: Unit failed
░░ Defined-By: systemd
░░ Support: http://www.ubuntu.com/support
░░
░░ The unit mailman3.service has entered the 'failed' state with result 'exit-code'.
Apr 28 13:30:22 mlist3 systemd[1]: Failed to start mailman3.service - GNU Mailing List Manager.
░░ Subject: A start job for unit mailman3.service has failed
░░ Defined-By: systemd
░░ Support: http://www.ubuntu.com/support
░░
░░ A start job for unit mailman3.service has finished with a failure.
░░
░░ The job identifier is 1074 and the job result is failed.
'''
======================================
Thank you in advance for any assistance.
1 month, 1 week