Search results for query "dO"
- 5062 messages

[MM3-users] Migration from old server to new server failed
by Helio Loureiro
Hi,
So we tried to the migration following the steps:
- stop mailman in the old machine (v3.1.1 from ubuntu packages)
- dump DB mailman3 and mailman3web
- backup /var/lib/mailman3 content
On the new machine:
- checkout from git the version 3.1.1 to match production and install the
services
- stop mailman3 and mailman3-web on the new machine
- load DBs into new machine
- copy content from /var/lib/mailman3 into /local/mailman/var (which
means: archives/ cache/ data/ ext/ lists/ locks/ messages/
public_suffix_list.dat queue/ templates/ web/)
- start mailman3 and mailman-3web
- run mailman3-web migrate
And I stopped here. Because it crashed.
(venv) mailman@new-mailman3-server ~ (v3.1.1) [0|SIGINT]> mailman-web
migrate
System check identified some issues:
WARNINGS:
account.EmailAddress: (models.W036) MariaDB does not support unique
constraints with conditions.
HINT: A constraint won't be created. Silence this warning if you don't care
about it.
account.EmailAddress: (models.W043) MariaDB does not support indexes on
expressions.
HINT: An index won't be created. Silence this warning if you don't care
about it.
Operations to perform:
Apply all migrations: account, admin, auth, contenttypes,
django_mailman3, django_q, hyperkitty, postorius, sessions, sites,
socialaccount
Running migrations:
Applying account.0003_alter_emailaddress_create_unique_verified_email...
OK
Applying account.0004_alter_emailaddress_drop_unique_email... OK
Applying account.0005_emailaddress_idx_upper_email... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying auth.0012_alter_user_first_name_max_length... OK
Applying django_mailman3.0003_sessions... OK
Applying django_q.0010_auto_20200610_0856... OK
Applying django_q.0011_auto_20200628_1055... OK
Applying django_q.0012_auto_20200702_1608... OK
Applying django_q.0013_task_attempt_count... OK
Applying django_q.0014_schedule_cluster... OK
Applying hyperkitty.0016_auto_20180309_0056... OK
Applying hyperkitty.0017_file_attachments... OK
Applying hyperkitty.0018_threadcategory_color... OK
Applying hyperkitty.0019_auto_20190127_null_description... OK
Applying hyperkitty.0020_auto_20190907_1927... OK
Applying hyperkitty.0021_add_owners_mods...Traceback (most recent call
last):
File
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/utils.py",
line 87, in _execute
return self.cursor.execute(sql)
File
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/mysql/base.py",
line 75, in execute
return self.cursor.execute(query, args)
File
"/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
179, in execute
res = self._query(mogrified_query)
File
"/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
330, in _query
db.query(q)
File
"/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/connections.py",
line 261, in query
_mysql.connection.query(self, query)
MySQLdb.OperationalError: (1050, "Table 'hyperkitty_mailinglist_moderators'
already exists")
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/local/mailman/venv/bin/mailman-web", line 8, in <module>
sys.exit(main())
File
"/local/mailman/venv/lib/python3.10/site-packages/mailman_web/manage.py",
line 90, in main
execute_from_command_line(sys.argv)
File
"/local/mailman/venv/lib/python3.10/site-packages/django/core/management/__init__.py",
line 446, in execute_from_command_line
utility.execute()
File
"/local/mailman/venv/lib/python3.10/site-packages/django/core/management/__init__.py",
line 440, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File
"/local/mailman/venv/lib/python3.10/site-packages/django/core/management/base.py",
line 402, in run_from_argv
self.execute(*args, **cmd_options)
File
"/local/mailman/venv/lib/python3.10/site-packages/django/core/management/base.py",
line 448, in execute
output = self.handle(*args, **options)
File
"/local/mailman/venv/lib/python3.10/site-packages/django/core/management/base.py",
line 96, in wrapped
res = handle_func(*args, **kwargs)
File
"/local/mailman/venv/lib/python3.10/site-packages/django/core/management/commands/migrate.py",
line 349, in handle
post_migrate_state = executor.migrate(
File
"/local/mailman/venv/lib/python3.10/site-packages/django/db/migrations/executor.py",
line 135, in migrate
state = self._migrate_all_forwards(
File
"/local/mailman/venv/lib/python3.10/site-packages/django/db/migrations/executor.py",
line 167, in _migrate_all_forwards
state = self.apply_migration(
File
"/local/mailman/venv/lib/python3.10/site-packages/django/db/migrations/executor.py",
line 252, in apply_migration
state = migration.apply(state, schema_editor)
File
"/local/mailman/venv/lib/python3.10/site-packages/django/db/migrations/migration.py",
line 130, in apply
operation.database_forwards(
File
"/local/mailman/venv/lib/python3.10/site-packages/django/db/migrations/operations/fields.py",
line 108, in database_forwards
schema_editor.add_field(
File
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/mysql/schema.py",
line 104, in add_field
super().add_field(model, field)
File
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/base/schema.py",
line 636, in add_field
return self.create_model(field.remote_field.through)
File
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/base/schema.py",
line 447, in create_model
self.execute(sql, params or None)
File
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/base/schema.py",
line 199, in execute
cursor.execute(sql, params)
File
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/utils.py",
line 67, in execute
return self._execute_with_wrappers(
File
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/utils.py",
line 80, in _execute_with_wrappers
return executor(sql, params, many, context)
File
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/utils.py",
line 84, in _execute
with self.db.wrap_database_errors:
File
"/local/mailman/venv/lib/python3.10/site-packages/django/db/utils.py", line
91, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/utils.py",
line 87, in _execute
return self.cursor.execute(sql)
File
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/mysql/base.py",
line 75, in execute
return self.cursor.execute(query, args)
File
"/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
179, in execute
res = self._query(mogrified_query)
File
"/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
330, in _query
db.query(q)
File
"/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/connections.py",
line 261, in query
_mysql.connection.query(self, query)
django.db.utils.OperationalError: (1050, "Table
'hyperkitty_mailinglist_moderators' already exists")
I tried to drop the table, but then it complained about another one. I
dropped all the complained tables and as result hypperkitty never
started. So I went back to see why the first error happened.
Any clue what to do next?
Best Regards,
Helio Loureiro
https://helio.loureiro.eng.br
https://github.com/helioloureiro
https://mastodon.social/@helioloureiro
1 year, 2 months

[MM3-users] Re: messages stuck in the bad queue
by Ken Alker
--On Sunday, June 25, 2023 9:18 AM -0700 Mark Sapiro <mark(a)msapiro.net>
wrote:
> On 6/24/23 9:54 PM, Ken Alker wrote:
>> I am working on a mail server that was migrated from mailman V2 to
>> mailman V3 in February. I just noticed that there are over 1000
>> messages in the bad queue. All of the messages in the bad queue are
>> dated 2/2/23 and all have a timestamp within a one-hour window of each
>> other.
>>
>> I used mailman qfile to inspect five random emails in the bad queue and
>> so far they are all "successfully subscribed" emails,
>
> This is a bit strange. See below.
>
>> but I presume
>> there are no guarantees there aren't others mixed in there that might be
>> legitimate emails (ie. I just unshunted 140 emails in the shunt queue
>> and they were all good emails and all got processed).
>
>
> Presumably these were shunted due to some issue that was subsequently
fixed.
That is my assumption. I didn't unshunt them until I had V3.3.8 completed,
figuring the previous version/install had some bug/mistake. Fortunately,
they all got processed (with one problem, which I brought up in another
thread).
>> I figure that the easiest way to inspect these 1000 emails is just to
>> have them re-delivered. I tried moving one from the bad queue to the
>> shunt queue and I ran "mailman unshunt" but nothing happened.
>
> What does nothing happened mean? "mailman unshunt" should move the
> message to the original queue which was stored in the 'whichq' attribute
> in the msgdata when the message was shunted. Since this wasn't a shunted
> message, there's no 'whichq' attribute so it goes to the 'in' queue.
> I.e., "mailman unshunt" would have moved the message from the 'shunt'
> queue to the 'in' queue. If the message wound up back in the shunt queue,
> there should be messages in mailman.log indicating why.
I moved the .psv file from the bad queue into the shunt queue. I then ran
"mailman unshunt" (as user 'mailman' while in the virtual environment). I
tailed mailman.log during this process and no logs were spit out. The date
stamp on the .psv file never changed (maybe it does not when being moved
between queues?) and, AFAICT, the file never moved from the shunt queue. I
waited maybe five minutes, tops.
>> Is there a way to reprocess the bad queue?
>
> You could just move the messages to the 'in' queue.
I just now tried moving the same message into the 'in' queue but, again,
nothing happened. I left it in there for five minutes. Do I have to run a
program to get it to act on the 'in' queue (I presume that there is a
"runner" that is always looking and taking care of this already as I
presume this is the queue where all 'normal' traffic is handled).
Here are the (obfusacted) results of "mailman qfile
/opt/mailman/mm/var/queue/shunt/1675389793.6945386+2aeaf0015558c9d8380c96142c3fa9d03a8142bc.psv"
(the message I was experimenting with):
[----- start pickle -----]
<----- start object 1 ----->
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Subject: THE-list subscription notification
From: email(a)obfuscated.com
To: the-list-owner(a)lists.obfuscated.com
Message-ID: <167538979369.2390432.521344217673230839(a)obfuscated.net>
Date: Thu, 02 Feb 2023 18:03:13 -0800
Precedence: bulk
user(a)domain.tld has been successfully subscribed to THE-list.
<----- start object 2 ----->
{ '_parsemsg': False,
'envsender': 'email(a)obfuscated.com',
'listid': 'the-list.obfusacted.com',
'nodecorate': True,
'recipients': {'person(a)domain.tld'},
'reduced_list_headers': True,
'version': 3}
[----- end pickle -----]
>> Also, what exactly is the bad queue?
>
> If Mailman's content filtering is enabled and Filter Action is Preserve,
> messages which have no remaining content after content filtering are put
> in the 'bad' queue. These are the only messages put there. When this
> happens there should a log message like
>
> <message-id> preserved in file base <queue_file>
>
> It is unclear to me how these 1000+ messages wound up in the 'bad' queue.
> If you have logs from Feb 2, they might help. My guess is there was some
> MTA misrouting that caused these list welcome messages (from some mass
> subscribe?) to be rerouted to the list posting address combined with some
> bad content filtering settings that removed all the content, but that
> seems pretty far fetched.
Unfortunately, I don't have logs going that far back. I don't think your
concept is far fetched. I'm 99% sure this was the day that the migration
from V2 to V3 took place so this was certainly the result of some type of
mass-subscription-import into V3. The V3 that was installed or the install
itself definitely had problems, which is why I just did an upgrade/overhaul
to V3.3.8 this past week. Many/most of the strange issues that were
occurring seem to be cleared up.
1 year, 9 months

[MM3-users] Re: E-mail every minute: "Cron <www-data@sharky5> ..."
by Robert Heller
At Mon, 8 Jul 2024 00:16:48 +0300 Odhiambo Washington <odhiambo(a)gmail.com> wrote:
>
> 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.
I uninstalled them and have given up on mm3. It means the main mailling list
I have been hosting for the past while (more than a decade), will have to
migrate to something else... :-(
>
>
--
Robert Heller -- Cell: 413-658-7953 GV: 978-633-5364
Deepwoods Software -- Custom Software Services
http://www.deepsoft.com/ -- Linux Administration Services
heller(a)deepsoft.com -- Webhosting Services
9 months, 2 weeks

[MM3-users] Re: Gmail problems?
by Allan Hansen
I have found that when a user is subscribed with a non-Google address and has a setup that sends incoming email to a Google address, then Google will bounce the message due to DKIM errors and the non-Google address will eventually get disabled.
To fix this I tell my users that they need to subscribe with their Google address if that's where the messages eventually end up. When they do, they no longer have issues.
It did take us some time this winter, though, to get our DKIM records into a state that Google would accept, but it's now working OK.
Yours,
Allan
On 4/23/23, 08:21, "Odhiambo Washington" <odhiambo(a)gmail.com <mailto:odhiambo@gmail.com>> wrote:
On Sun, Apr 23, 2023 at 6:01 PM Dave McGuire <mcguire(a)neurotica.com <mailto:mcguire@neurotica.com>> wrote:
> On 4/23/23 03:51, Odhiambo Washington wrote:
> > On Sat, Apr 22, 2023 at 8:19 PM Dave McGuire <mcguire(a)neurotica.com <mailto:mcguire@neurotica.com>>
> wrote:
> >
> >> On 4/22/23 11:02, Stephen Daniel wrote:
> >>> 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?
> >>
> >> This started a couple of years ago, and it has become much worse
> over
> >> time. It's not just lists, it's any email that originates from a server
> >> that isn't Google's. Even servers with sterling reputations, and ones
> >> which have gone through the BS of "registering" with Google. It does
> >> nothing.
> >>
> >> It's a not-so-subtle hint that Google wants to handle YOUR mail too,
> >> so they can data-mine it and make even more money.
> >>
> >> By and large, gmail users are blissfully ignorant of this and for
> the
> >> most part don't seem to care. All they know is they don't see much
> >> spam. You get blank stares when you tell them about this and explain to
> >> them that if they receive a service for free, THEY are the product.
> >> "But it's eeeeaaaaasier!"
> >>
> >> It's disgusting, Google ignores any attempt at communication, and
> >> there doesn't appear that anything can be done.
> >>
> >
> > This isn't necessarily true, from my experience. I had troubles with
> Yahoo
> > and its affiliates and even 'suggested' to my members to ditch Yahoo for
> > Gmail.
> > [10:46 mm ]$ cat mylistmembers.txt | grep "gmail.com" | wc -l
> > 849
> > I have that many subscribers using gmail.com and I don't have any
> problems
> > with Gmail.
> > I have all my SPF|DKIM|DMARC records properly set and yes, I also have
> > DMARC mitigation set to unconditional, and the DMARC action set to
> > "Replace From: with list address".
>
> I was speaking of the general case of "getting non-Google-origin
> email into gmail", not "mailing lists with gmail". The problems are
> widespread and well-known.
>
I am sorry I am not aware. I haven't seen that being discussed in mailop (
mailop(a)mailop.org <mailto:mailop@mailop.org>) which is my main source.
I have also setup several mail servers and I haven't had any issue
delivering to Gmail.
--
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 <http://www.catb.org/~esr/faqs/smart-questions.html>]
_______________________________________________
Mailman-users mailing list -- mailman-users(a)mailman3.org <mailto:mailman-users@mailman3.org>
To unsubscribe send an email to mailman-users-leave(a)mailman3.org <mailto:mailman-users-leave@mailman3.org>
https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/ <https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/>
Archived at: https://lists.mailman3.org/archives/list/mailman-users@mailman3.org <mailto:mailman-users@mailman3.org>/message/OYGV7BTRRNF764YYGJH3AC36ASS2QMOR/
This message sent to hansen(a)rc.org <mailto:hansen@rc.org>
2 years

[MM3-users] AttributeError: 'MailingList' object has no attribute 'get_requests_count'
by Shashikanth Komandoor
Hi Team,
I am currently running Mailman 3 with version 3.3.2rc2 and in
built postfix version 2.10.1-6 on RHEL 7.5 with PostgreSQL 11.9 version
with default values. As of now, we don't have any lists and just installed
software components only.
After the installation and configuration, I have tried
creating the domains and lists. I was successful in creating them but when
I tried to login and browse the lists using LDAP authentication, I am
getting the "Mailman REST API not available. Restart Mailman core".
I see the below trace in the mailmansuite.log.
*Traceback (most recent call last): File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/mailmanclient/restbase/base.py",
line 119, in __getattr__ return self._get(name) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/mailmanclient/restbase/base.py",
line 86, in _get raise KeyError(key)KeyError: 'get_requests_count'During
handling of the above exception, another exception occurred:Traceback (most
recent call last): File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/core/handlers/exception.py",
line 34, in inner response = get_response(request) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/core/handlers/base.py",
line 115, in _get_response response =
self.process_exception_by_middleware(e, request) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/core/handlers/base.py",
line 113, in _get_response response = wrapped_callback(request,
*callback_args, **callback_kwargs) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/views/generic/base.py",
line 71, in view return self.dispatch(request, *args, **kwargs) File
"/var/lib/mailman/postorius/src/postorius/views/generic.py", line 74, in
dispatch return super(MailingListView, self).dispatch(request, *args,
**kwargs) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/views/generic/base.py",
line 97, in dispatch return handler(request, *args, **kwargs) File
"/var/lib/mailman/postorius/src/postorius/views/list.py", line 311, in get
return render(request, 'postorius/lists/summary.html', data) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/shortcuts.py",
line 19, in render content = loader.render_to_string(template_name,
context, request, using=using) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/loader.py",
line 62, in render_to_string return template.render(context, request)
File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/backends/django.py",
line 61, in render return self.template.render(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 171, in render return self._render(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 163, in _render return self.nodelist.render(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 936, in render bit = node.render_annotated(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 903, in render_annotated return self.render(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/loader_tags.py",
line 150, in render return compiled_parent._render(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 163, in _render return self.nodelist.render(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 936, in render bit = node.render_annotated(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 903, in render_annotated return self.render(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/loader_tags.py",
line 62, in render result = block.nodelist.render(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 936, in render bit = node.render_annotated(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 903, in render_annotated return self.render(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/library.py",
line 234, in render return t.render(new_context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 173, in render return self._render(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 163, in _render return self.nodelist.render(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 936, in render bit = node.render_annotated(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 903, in render_annotated return self.render(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/defaulttags.py",
line 309, in render return nodelist.render(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 936, in render bit = node.render_annotated(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 903, in render_annotated return self.render(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/defaulttags.py",
line 309, in render return nodelist.render(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 936, in render bit = node.render_annotated(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 903, in render_annotated return self.render(context) File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 986, in render output = self.filter_expression.resolve(context)
File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/django/template/base.py",
line 697, in resolve new_obj = func(obj, *arg_vals) File
"/var/lib/mailman/postorius/src/postorius/templatetags/nav_helpers.py",
line 80, in pending_subscriptions return
mlist.get_requests_count(token_owner='moderator') File
"/var/lib/mailman/venv3/lib64/python3.6/site-packages/mailmanclient/restbase/base.py",
line 124, in __getattr__ self.__class__.__name__, name))AttributeError:
'MailingList' object has no attribute 'get_requests_count'ERROR 2020-10-25
19:29:46,101 835 django.server "GET
/postorius/lists/mailteamhyd.dlist.nic.in/
<http://mailteamhyd.dlist.nic.in/> HTTP/1.1" 500 1162*
I don't see any error messages in the mailman.log. And I
also executed a few curl commands in getting the details of the lists
created and list info which I got their results successfully.
Could you please guide where exactly I am missing or do I
need to make any changes in my customizations ?
--
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, 5 months

[MM3-users] Re: Template's encoding setup
by Ugnius S
Hi. I am not sure, maybe it could be another topic about header and footer,
but I have met one additional issue related to that.
This noticed only on HTML text messages. If message comes in HTML the
header does not add extra <enter> new line, new paragraph
and footer as well. For example if message body has no additional, list's
decorated message looks next:
TEST HEADER
_____________________Hello,
text text text, pictures, text
regards
Ugnius____________________
TEST FOOTER
I have tried to add more empty lines in "The footer for a regular
(non-digest) message.", but mailman removes these empty lines.
Work around is put dot "." and then several empty lines.
Mark, I have found Your post about HTML headers and footers:
https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/thread/…
YES, that works good, I have tested it, but only in cases if message comes
in HTML. If sender sends plain text message,
mailman adds footer with all HTML code:
<BR>__________________<BR>
<B> LIST NAME </B>
Could it be possible that decorate.py would recognise message and if it
has HTML text body, then just would add header/footer and if not (if
message body is plain text) , then would strip header/footer "html to plain
text" may removing html code from it?
Kind regards
Ugnius
2019-09-14, št, 23:07 Ugnius S <ugniusviln(a)gmail.com> rašė:
> Mark, You were 100% right for fixing. I was not sure what the
> language setting were on list creating, but one of the lists was created a
> day ago and I was doubt about it a little. So I made test: I have checked
> that default language is lt, and then I created the new list for testing.
> I had language issues with the HTML as well. Your recipe helped to resolve
> the issue. :) I fixed all my lists.
> I have stopped the mailman (just in case), than executed as You had told:
>
> $ mailman shell -l test(a)example.com
> Welcome to the GNU Mailman shell
> The variable 'm' is the test(a)example.com mailing list
> >>> m.preferred_language
> <Language [en] English (USA)>
> >>> m.preferred_language = 'lt'
> >>>
> <Ctrl>+D
>
> Thank You very much. This fix made magic.
>
> Kind regards
> Ugnius
>
>
>
> 2019-09-14, št, 20:20 Mark Sapiro <mark(a)msapiro.net> rašė:
>
>> On 9/14/19 4:06 AM, Ugnius S wrote:
>>
>> > Yes, I have made several tests. I have set charset: iso-8859-13
>> > and default_language: lt in mailman.cfg.
>>
>> If you created the list before you set default_language: lt in
>> mailman.cfg, the list's preferred_language is possibly 'en;' with
>> character set us-ascii.
>>
>>
>> > (Also I have set LANGUAGE_CODE = 'lt' in the settings_local.py, but I
>> think
>> > it is not related to this case.)
>>
>>
>> Yes, LANGUAGE_CODE in settings_local.py is not relevant to this.
>>
>>
>> > I have tried to set utf-8 as well in mailman.cfg as well. And I can
>> > confirm - in all tested cases
>> > text characters are correct (in footer as well) if sender sends text
>> only.
>>
>> OK
>>
>>
>> > If sender sends message in HTML (mostly all users send) then no
>> > matter what the encoding is set in my mailman's
>> > configuration or iso-8859-13, or utf-8 message body looks correct, but
>> in
>> > footer all national characters are replaced with
>> > question marks " ? ".
>>
>>
>> The addition of the footer is done by mailman/handlers/decorate.py. In
>> the plain text case the message body is converted to unicode, the
>> unicode footer is appended to the body and the new body is encoded for
>> transmission. The encoding is the first of the list's character set, the
>> incoming message's character set or utf-8 which produces no error.
>>
>>
>> In the case where the incoming message is not a single plain text
>> message part, the footer is added as a separate MIME part with the
>> unicode footer encoded in the list's character set with
>> errors='replace'. This is what produces the '?' characters. I suspect
>> this happens because the list's preferred_language is 'en' with
>> character set us-ascii.
>>
>> try running Mailman's
>>
>> bin/mailman shell -l your_list@domain
>>
>> at the prompt enter
>>
>> m.preferred_language
>>
>> if the response is not
>>
>> <Language [lt] Lithuanian>
>>
>> do
>>
>> m.preferred_language = 'lt'
>>
>> and then control-D to exit.
>>
>> --
>> Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
>> San Francisco Bay Area, California better use your sense - B. Dylan
>> _______________________________________________
>> Mailman-users mailing list -- mailman-users(a)mailman3.org
>> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
>> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>>
>
5 years, 7 months

[MM3-users] Re: Message-Footer after migrating to Mailman3
by christopher.claus@tgcamberg1848.de
Mark Sapiro wrote:
> > 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
> > 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.tgcamberg...
> > [/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.
Hi Mark,
thanks for your reply and excuse my delay. I was very busy in the last weeks but made some tests. Newly created templates with POSTORIUS_TEMPLATE_BASE_URL=http://localhost:8000 did not work. I changed it to my fqdn - at the moment I am able to access the template via this URl (e.G. http://lists.example.de:8000/postorius/api/templates/list/homepage.lists.ex…)
But if I try to send an email I got the following error:
Jul 09 16:00:37 2021 (27) Uncaught runner exception: HTTPConnectionPool(host='lists.example.de', port=8000): Max retries exceeded with url: /postorius/api/templates/list/homepage.lists.example.de/list:admin:action:post (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fe80eaaec40>: Failed to establish a new connection: [Errno 111] Connection refused'))
Jul 09 16:00:37 2021 (27) Traceback (most recent call last):
File "/usr/lib/python3.8/site-packages/urllib3/connection.py", line 159, in _new_conn
conn = connection.create_connection(
File "/usr/lib/python3.8/site-packages/urllib3/util/connection.py", line 84, in create_connection
raise err
File "/usr/lib/python3.8/site-packages/urllib3/util/connection.py", line 74, in create_connection
sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.8/site-packages/urllib3/connectionpool.py", line 670, in urlopen
httplib_response = self._make_request(
File "/usr/lib/python3.8/site-packages/urllib3/connectionpool.py", line 392, in _make_request
conn.request(method, url, **httplib_request_kw)
File "/usr/lib/python3.8/http/client.py", line 1255, in request
self._send_request(method, url, body, headers, encode_chunked)
File "/usr/lib/python3.8/http/client.py", line 1301, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File "/usr/lib/python3.8/http/client.py", line 1250, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "/usr/lib/python3.8/http/client.py", line 1010, in _send_output
self.send(msg)
File "/usr/lib/python3.8/http/client.py", line 950, in send
self.connect()
File "/usr/lib/python3.8/site-packages/urllib3/connection.py", line 187, in connect
conn = self._new_conn()
File "/usr/lib/python3.8/site-packages/urllib3/connection.py", line 171, in _new_conn
raise NewConnectionError(
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x7fe80eaaec40>: Failed to establish a new connection: [Errno 111] Connection refused
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.8/site-packages/requests/adapters.py", line 439, in send
resp = conn.urlopen(
File "/usr/lib/python3.8/site-packages/urllib3/connectionpool.py", line 724, in urlopen
retries = retries.increment(
File "/usr/lib/python3.8/site-packages/urllib3/util/retry.py", line 439, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='lists.example.de', port=8000): Max retries exceeded with url: /postorius/api/templates/list/lists.example.de/list:admin:action:post (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fe80eaaec40>: Failed to establish a new connection: [Errno 111] Connection refused'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.8/site-packages/mailman/core/runner.py", line 173, in _one_iteration
self._process_one_file(msg, msgdata)
File "/usr/lib/python3.8/site-packages/mailman/core/runner.py", line 266, in _process_one_file
keepqueued = self._dispose(mlist, msg, msgdata)
File "/usr/lib/python3.8/site-packages/mailman/runners/incoming.py", line 79, in _dispose
process(mlist, msg, msgdata, start_chain)
File "/usr/lib/python3.8/site-packages/mailman/core/chains.py", line 79, in process
link.function(mlist, msg, msgdata)
File "/usr/lib/python3.8/site-packages/mailman/chains/hold.py", line 232, in _process
template = getUtility(ITemplateLoader).get(
File "/usr/lib/python3.8/site-packages/mailman/model/template.py", line 188, in get
contents = getUtility(ITemplateManager).get(
File "/usr/lib/python3.8/site-packages/mailman/database/transaction.py", line 85, in wrapper
return function(args[0], config.db.store, *args[1:], **kws)
File "/usr/lib/python3.8/site-packages/mailman/model/template.py", line 110, in get
contents = protocols.get(actual_uri, **auth)
File "/usr/lib/python3.8/site-packages/mailman/utilities/protocols.py", line 38, in get
response = requests.get(url, timeout=REQUEST_TIMEOUT, **kws)
File "/usr/lib/python3.8/site-packages/requests/api.py", line 76, in get
return request('get', url, params=params, **kwargs)
File "/usr/lib/python3.8/site-packages/requests/api.py", line 61, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/lib/python3.8/site-packages/requests/sessions.py", line 530, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python3.8/site-packages/requests/sessions.py", line 643, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python3.8/site-packages/requests/adapters.py", line 516, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='lists.example.de', port=8000): Max retries exceeded with url: /postorius/api/templates/list/lists.example.de/list:admin:action:post (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fe80eaaec40>: Failed to establish a new connection: [Errno 111] Connection refused'))
I set POSTORIUS_TEMPLATE_BASE_URL=lists.example.de:8000 and I have no idea, why the connection is refused. Do you see any configuration error d or have another idea?
Best regards,
chrclaus
3 years, 9 months

[MM3-users] Re: About to Install MM3 -- Seeking clarification
by Onyeibo Oku
On Sat Oct 22, 2022 at 9:56 PM WAT, Mark Sapiro wrote:
> On 10/22/22 13:07, Onyeibo Oku wrote:
> > On Sat Oct 22, 2022 at 7:44 PM WAT, Mark Sapiro wrote:
> >> The specific error you reported refers tp
> >> /opt/mailman/venv/lib/python3.10/site-packages/zope.i18nmessageid-5.0.1-py3.10.egg-info/PKG-INFO
> >>
> >> what does
> >> ```
> >> ls -l
> >> /opt/mailman/venv/lib/python3.10/site-packages/zope.i18nmessageid-5.0.1-py3.10.egg-info/PKG-INFO
> >> ```
> >> show?
> >>
> >
> > See below:
> >
> > command:
> > ls -lh /opt/mailman/venv/lib/python3.10/site-packages/zope.i18nmessageid-5.0.1-py3.10.egg-info/PKG-INFO
> >
> > output:
> > -rw-r--r--. 1 mailman mailman 7.8K Oct 19 18:31 /opt/mailman/venv/lib/python3.10/site-packages/zope.i18nmessageid-5.0.1-py3.10.egg-info/PKG-INFO
>
>
> This is actually strange. What does `pip --version` in your venv show?
> Did you do anything to install mailman and other packages in your venv
> other than `pip install`.
>
> I ask because I don't think there should be *egg-info directories in
> /opt/mailman/venv/lib/python3.10/site-packages/ at all. In particular,
> in addition to the actual code directories, I only see files and
> directories with names ending in nspkg.pth and dist-info.
>
It is strange indeed.
So I decided to start all over again. I deleted both "mm" and "venv" folders
and recreated "venv" first. I noted that after reinstalling the virtual
environment pip was at version 21.3.1. I assumed that version may be buggy and
upgraded to pip 22.3 before performing subsequent installations.
Next came the wheel package, followed by psycopg2. I checked the
/opt/mailman/venv/lib64/python3.10/site-packages/ path to confirm that things
were clean. All good -- no egg-info/* folders. I then installed mailman.
Now Mailman starts, and stops as desired when running as mailman user (both in
virtual and non-virtual environments). However, running the service via systemd
still fails. I now get a different traceback:
Oct 23 03:43:00 mail.server.tld mailman[19410]: Traceback (most recent call last):
Oct 23 03:43:00 mail.server.tld mailman[19410]: File "/opt/mailman/venv/bin/mailman", line 8, in <module>
Oct 23 03:43:00 mail.server.tld mailman[19410]: sys.exit(main())
Oct 23 03:43:00 mail.server.tld mailman[19410]: File "/opt/mailman/venv/lib64/python3.10/site-packages/click/core.py", line 1130, in __call__
Oct 23 03:43:00 mail.server.tld mailman[19410]: return self.main(*args, **kwargs)
Oct 23 03:43:00 mail.server.tld mailman[19410]: File "/opt/mailman/venv/lib64/python3.10/site-packages/click/core.py", line 1054, in main
Oct 23 03:43:00 mail.server.tld mailman[19410]: with self.make_context(prog_name, args, **extra) as ctx:
Oct 23 03:43:00 mail.server.tld mailman[19410]: File "/opt/mailman/venv/lib64/python3.10/site-packages/click/core.py", line 920, in make_context
Oct 23 03:43:00 mail.server.tld mailman[19410]: self.parse_args(ctx, args)
Oct 23 03:43:00 mail.server.tld mailman[19410]: File "/opt/mailman/venv/lib64/python3.10/site-packages/click/core.py", line 1613, in parse_args
Oct 23 03:43:00 mail.server.tld mailman[19410]: rest = super().parse_args(ctx, args)
Oct 23 03:43:00 mail.server.tld mailman[19410]: File "/opt/mailman/venv/lib64/python3.10/site-packages/click/core.py", line 1378, in parse_args
Oct 23 03:43:00 mail.server.tld mailman[19410]: value, args = param.handle_parse_result(ctx, opts, args)
Oct 23 03:43:00 mail.server.tld mailman[19410]: File "/opt/mailman/venv/lib64/python3.10/site-packages/click/core.py", line 2360, in handle_parse_result
Oct 23 03:43:00 mail.server.tld mailman[19410]: value = self.process_value(ctx, value)
Oct 23 03:43:00 mail.server.tld mailman[19410]: File "/opt/mailman/venv/lib64/python3.10/site-packages/click/core.py", line 2322, in process_value
Oct 23 03:43:00 mail.server.tld mailman[19410]: value = self.callback(ctx, self, value)
Oct 23 03:43:00 mail.server.tld mailman[19410]: File "/opt/mailman/venv/lib64/python3.10/site-packages/mailman/bin/mailman.py", line 95, in initialize_config
Oct 23 03:43:00 mail.server.tld mailman[19410]: initialize(value)
Oct 23 03:43:00 mail.server.tld mailman[19410]: File "/opt/mailman/venv/lib64/python3.10/site-packages/mailman/core/initialize.py", line 217, in initialize
Oct 23 03:43:00 mail.server.tld mailman[19410]: initialize_1(config_path)
Oct 23 03:43:00 mail.server.tld mailman[19410]: File "/opt/mailman/venv/lib64/python3.10/site-packages/mailman/core/initialize.py", line 122, in initialize_1
Oct 23 03:43:00 mail.server.tld mailman[19410]: mailman.config.config.load(config_path)
Oct 23 03:43:00 mail.server.tld mailman[19410]: File "/opt/mailman/venv/lib64/python3.10/site-packages/mailman/config/config.py", line 142, in load
Oct 23 03:43:00 mail.server.tld mailman[19410]: self.push(filename, user_config.read())
Oct 23 03:43:00 mail.server.tld mailman[19410]: File "/opt/mailman/venv/lib64/python3.10/site-packages/mailman/config/config.py", line 148, in push
Oct 23 03:43:00 mail.server.tld mailman[19410]: self._post_process()
Oct 23 03:43:00 mail.server.tld mailman[19410]: File "/opt/mailman/venv/lib64/python3.10/site-packages/mailman/config/config.py", line 160, in _post_process
Oct 23 03:43:00 mail.server.tld mailman[19410]: self.ensure_directories_exist()
Oct 23 03:43:00 mail.server.tld mailman[19410]: File "/opt/mailman/venv/lib64/python3.10/site-packages/mailman/config/config.py", line 262, in ensure_directories_exist
Oct 23 03:43:00 mail.server.tld mailman[19410]: with Lock(lock_file):
Oct 23 03:43:00 mail.server.tld mailman[19410]: File "/opt/mailman/venv/lib64/python3.10/site-packages/flufl/lock/_lockfile.py", line 461, in __enter__
Oct 23 03:43:00 mail.server.tld mailman[19410]: self.lock()
Oct 23 03:43:00 mail.server.tld mailman[19410]: File "/opt/mailman/venv/lib64/python3.10/site-packages/flufl/lock/_lockfile.py", line 328, in lock
Oct 23 03:43:00 mail.server.tld mailman[19410]: self._write()
Oct 23 03:43:00 mail.server.tld mailman[19410]: File "/opt/mailman/venv/lib64/python3.10/site-packages/flufl/lock/_lockfile.py", line 492, in _write
Oct 23 03:43:00 mail.server.tld mailman[19410]: with open(self._claimfile, 'w') as fp:
Oct 23 03:43:00 mail.server.tld mailman[19410]: PermissionError: [Errno 13] Permission denied: '/opt/mailman/mm/var/locks/mailman-cfg.lck|server.tld|19410|619270043958240354'
Oct 23 03:43:00 mail.server.tld systemd[1]: mailman3.service: Control process exited, code=exited, status=1/FAILURE
2 years, 6 months

[MM3-users] Re: Migrating from old V2 server to new V3 server. Questions.
by jkoral@luc.edu
The old server is trying to send, but I end up getting an undeliverable message saying no connection could be made. I know port 25 is open because I can telnet to it. I'm wondering if I'm missing something in my configuration. Can you take a look? Thank you.
Here are the active settings in /etc/postfix/master.cf:
# Postfix master process configuration file. For details on the format
# of the file, see the master(5) manual page (command: "man 5 master" or
# on-line: http://www.postfix.org/master.5.html)
#
# Do not forget to execute "postfix reload" after editing this file.
#
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (no) (never) (100)
# ==========================================================================
smtp inet n - y - - smtpd
#smtp inet n - y - 1 postscreen
#smtpd pass - - y - - smtpd
#dnsblog unix - - y - 0 dnsblog
#tlsproxy unix - - y - 0 tlsproxy
# Choose one: enable submission for loopback clients only, or for any client.
#127.0.0.1:submission inet n - y - - smtpd
#submission inet n - y - - smtpd
# -o syslog_name=postfix/submission
# -o smtpd_tls_security_level=encrypt
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_tls_auth_only=yes
# -o local_header_rewrite_clients=static:all
# -o smtpd_reject_unlisted_recipient=no
# Instead of specifying complex smtpd_<xxx>_restrictions here,
# specify "smtpd_<xxx>_restrictions=$mua_<xxx>_restrictions"
# here, and specify mua_<xxx>_restrictions in main.cf (where
# "<xxx>" is "client", "helo", "sender", "relay", or "recipient").
# -o smtpd_client_restrictions=
# -o smtpd_helo_restrictions=
# -o smtpd_sender_restrictions=
# -o smtpd_relay_restrictions=
# -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
# Choose one: enable submissions for loopback clients only, or for any client.
#127.0.0.1:submissions inet n - y - - smtpd
#submissions inet n - y - - smtpd
# -o syslog_name=postfix/submissions
# -o smtpd_tls_wrappermode=yes
# -o smtpd_sasl_auth_enable=yes
# -o local_header_rewrite_clients=static:all
# -o smtpd_reject_unlisted_recipient=no
# Instead of specifying complex smtpd_<xxx>_restrictions here,
# specify "smtpd_<xxx>_restrictions=$mua_<xxx>_restrictions"
# here, and specify mua_<xxx>_restrictions in main.cf (where
# "<xxx>" is "client", "helo", "sender", "relay", or "recipient").
# -o smtpd_client_restrictions=
# -o smtpd_helo_restrictions=
# -o smtpd_sender_restrictions=
# -o smtpd_relay_restrictions=
# -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
#628 inet n - y - - qmqpd
pickup unix n - y 60 1 pickup
cleanup unix n - y - 0 cleanup
qmgr unix n - n 300 1 qmgr
#qmgr unix n - n 300 1 oqmgr
tlsmgr unix - - y 1000? 1 tlsmgr
rewrite unix - - y - - trivial-rewrite
bounce unix - - y - 0 bounce
defer unix - - y - 0 bounce
trace unix - - y - 0 bounce
verify unix - - y - 1 verify
flush unix n - y 1000? 0 flush
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - y - - smtp
relay unix - - y - - smtp
-o syslog_name=postfix/$service_name
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq unix n - y - - showq
error unix - - y - - error
retry unix - - y - - error
discard unix - - y - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - y - - lmtp
anvil unix - - y - 1 anvil
scache unix - - y - 1 scache
postlog unix-dgram n - n - 1 postlogd
#
# ====================================================================
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
#
# Many of the following services use the Postfix pipe(8) delivery
# agent. See the pipe(8) man page for information about ${recipient}
# and other message envelope options.
# ====================================================================
#
# maildrop. See the Postfix MAILDROP_README file for details.
# Also specify in main.cf: maildrop_destination_recipient_limit=1
#
#maildrop unix - n n - - pipe
# flags=DRXhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
#
# ====================================================================
#
# Recent Cyrus versions can use the existing "lmtp" master.cf entry.
#
# Specify in cyrus.conf:
# lmtp cmd="lmtpd -a" listen="localhost:lmtp" proto=tcp4
#
# Specify in main.cf one or more of the following:
# mailbox_transport = lmtp:inet:localhost
# virtual_transport = lmtp:inet:localhost
#
# ====================================================================
#
# Cyrus 2.1.5 (Amos Gouaux)
# Also specify in main.cf: cyrus_destination_recipient_limit=1
#
#cyrus unix - n n - - pipe
# flags=DRX user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
#
# ====================================================================
#
# Old example of delivery via Cyrus.
#
#old-cyrus unix - n n - - pipe
# flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}
#
# ====================================================================
#
# See the Postfix UUCP_README file for configuration details.
#
uucp unix - n n - - pipe
flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
#
# Other external delivery methods.
#
#ifmail unix - n n - - pipe
# flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
#bsmtp unix - n n - - pipe
# flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
#scalemail-backend unix - n n - 2 pipe
# flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
#mailman unix - n n - - pipe
# flags=FRX user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user}
And here are the setting I have in /etc/mailman3/mailman.cfg
# /etc/mailman3/mailman.cfg
[paths.here]
var_dir: /opt/mailman/mm/var
[mailman]
layout: here
# This address is the "site owner" address. Certain messages which must be
# delivered to a human, but which can't be delivered to a list owner (e.g. a
# bounce from a list owner), will be sent to this address. It should point to
# a human.
site_owner: user(a)example.com
[database]
class: mailman.database.postgresql.PostgreSQLDatabase
url: postgresql://mailman:PasswordEdited@localhost/mailman
[archiver.prototype]
enable: yes
# For the HyperKitty archiver.
[archiver.hyperkitty]
class: mailman_hyperkitty.Archiver
enable: yes
configuration: /etc/mailman3/mailman-hyperkitty.cfg
[shell]
history_file: $var_dir/history.py
[mta]
incoming: mailman.mta.postfix.LMTP
outgoing: mailman.mta.deliver.deliver
lmtp_host: 127.0.0.1
lmtp_port: 8024
smtp_host: localhost
smtp_port: 25
configuration: python:mailman.config.postfix
6 months, 1 week

[MM3-users] Re: Could not locate column in row for column 'user.id'
by Shashikanth Komandoor
Thank you Mark for your response.
I tried for the command to know if any entry in the "address" table for
which 'id' is not an integer.
But unfortunately, I could not get any command or idea how to find that.
But out of my extra talent, I tried the below commands which, I thought,
may print the records which contain a non integer id value.
*mailman=# select count(*) from address; count------- 82387(1 row)mailman=#
select id,email from address where id NOT BETWEEN 1 AND 84203; id |
email----+-------(0 rows)mailman=# select id,email from address where id
NOT BETWEEN 1 AND 84202; id |
email-------+----------------------------- 84203 |
cons3.birmingham(a)mea.gov.in <cons3.birmingham(a)mea.gov.in>*
*1 and 84203 are the minimum and maximum values of the id:*
Please see the above outputs and suggest if anything possible or please let
me know the command what should I run to find a non integer id value.
I also doubt this error as if my REST API is contacting postgresql in a
delayed manner. If possible, can you say what optimal setting I can do at
Postgresql so that faster responses would be given to REST API.
The above things are only my doubts. Please correct me if I am wrong.
On Tue, Jul 28, 2020 at 7:31 AM Mark Sapiro <mark(a)msapiro.net> wrote:
> On 7/27/20 2:48 AM, Shashikanth Komandoor wrote:
> > Hi Mark,
> >
> > Thank you for your response. And sorry for not giving you
> > complete information as I am not sue what to share with you.
> >
> > I am using Postgresql-11.7 as my backend database. The below is
> > the structure of the address table in* mailman *database:
> >
> > mailman=# \d address;
> > Table "public.address"
> > Column | Type | Collation | Nullable |
> > Default
> >
> ----------------+-----------------------------+-----------+----------+-------------------------------------
> > id | integer | | not null |
> > nextval('address_id_seq'::regclass)
> > email | character varying | | |
> > _original | character varying | | |
> > display_name | character varying | | |
> > verified_on | timestamp without time zone | | |
> > registered_on | timestamp without time zone | | |
> > user_id | integer | | |
> > preferences_id | integer | | |
> > Indexes:
> > "address_pkey" PRIMARY KEY, btree (id)
> > "ix_address_email" UNIQUE, btree (email)
> > "ix_address_preferences_id" btree (preferences_id)
> > "ix_address_user_id" btree (user_id)
> > Foreign-key constraints:
> > "address_preferences_id_fkey" FOREIGN KEY (preferences_id) REFERENCES
> > preferences(id)
> > "address_user_id_fkey" FOREIGN KEY (user_id) REFERENCES "user"(id)
> > Referenced by:
> > TABLE ""user"" CONSTRAINT "_preferred_address" FOREIGN KEY
> > (_preferred_address_id) REFERENCES address(id) ON DELETE SET NULL
> > TABLE "autoresponserecord" CONSTRAINT
> > "autoresponserecord_address_id_fkey" FOREIGN KEY (address_id) REFERENCES
> > address(id)
> > TABLE "member" CONSTRAINT "member_address_id_fkey" FOREIGN KEY
> > (address_id) REFERENCES address(id)
> > TABLE "onelastdigest" CONSTRAINT "onelastdigest_address_id_fkey"
> > FOREIGN KEY (address_id) REFERENCES address(id)
> >
> > The below is the structure of *user* table:
> >
> > mailman=# \d user;
> > Table "public.user"
> > Column | Type | Collation |
> Nullable
> > | Default
> >
> -----------------------+-----------------------------+-----------+----------+----------------------------------
> > id | integer | | not
> null
> > | nextval('user_id_seq'::regclass)
> > display_name | character varying | |
> > |
> > password | character varying | |
> > |
> > _user_id | uuid | |
> > |
> > _created_on | timestamp without time zone | |
> > |
> > is_server_owner | boolean | |
> > |
> > _preferred_address_id | integer | |
> > |
> > preferences_id | integer | |
> > |
> > Indexes:
> > "user_pkey" PRIMARY KEY, btree (id)
> > "ix_user__user_id" btree (_user_id)
> > "ix_user_preferences_id" btree (preferences_id)
> > Foreign-key constraints:
> > "_preferred_address" FOREIGN KEY (_preferred_address_id) REFERENCES
> > address(id) ON DELETE SET NULL
> > "user_preferences_id_fkey" FOREIGN KEY (preferences_id) REFERENCES
> > preferences(id)
> > Referenced by:
> > TABLE "address" CONSTRAINT "address_user_id_fkey" FOREIGN KEY
> (user_id)
> > REFERENCES "user"(id)
> > TABLE "domain_owner" CONSTRAINT "domain_owner_user_id_fkey" FOREIGN
> KEY
> > (user_id) REFERENCES "user"(id)
> > TABLE "member" CONSTRAINT "member_user_id_fkey" FOREIGN KEY (user_id)
> > REFERENCES "user"(id)
> >
> > mailman=# \dn
> > List of schemas
> > Name | Owner
> > --------+----------
> > public | postgres
> > (1 row)
> >
> > mailman=# select * from user;
> > user
> > ----------
> > postgres
> > (1 row)
> >
> > *The above command output is not showing any fields. But if use the
> table
> > as public.user (schema.tablename) with select command, it is showing the
> > data. But without schema name this table is not showing those fields. Not
> > sure if this the expected behavior or not.*
>
>
> This is expected. psql gets confused because it has its own user table.
>
> The above table definitions look fine.
>
> Is there any entry in the `address` table for which `id` is not an integer?
>
> --
> 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
4 years, 8 months

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

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

[MM3-users] Re: How to strip DKIM headers on a domain level or a list level
by Brian Carpenter
On 11/21/20 10:39 AM, Stephen J. Turnbull wrote:
> Rob Jenson writes:
>
> > I need to strip DKIM headers on the inbound messages to my list or
> > to my domain.
>
> Why do you need to strip DKIM headers? The standard specifies that an
> invalid DKIM signature must be treated the same as if there were no
> signature at all. So an invalid DKIM signature may be treated as
> spammier than a message with a valid signature, but that should not be
> treated differently from an unsigned message (as would appear after
> removing those header fields).
>
> I know this feature is in demand from list admins, but I've never seen
> convincing evidence that it's actually effective for any of the usual
> suspects (Yahoo!, AOL, Gmail), only for small domains with pigheaded
> admins who are proud of their non-conforming configurations, and
> announce that they are discarding messages which have invalid DKIM
> signatures.
This person is a client of ours for now. There is no evidence at all
that I can see from our outgoing SMTP logs for such a requirement. In
fact mail delivery to Yahoo and its other domains (verizon, aol) has
been great. There are some small deferrals that occur over a small
period of time (which is strange) daily but those clear out of the queue
within an hour. I was personally shocked when he brought these concerns
to this list without asking or informing us.
> > We are munging the text of the message in Mailman, so the DKIM
> > headers from the original poster are invalid.
>
> As I explained above, both DKIM and DMARC are specified so that "no
> signature" == "invalid signature" for the purposes of spam processing.
> Are you sure that Yahoo! (or any other provider used by your
> subscribers) is treating invalid signatures differently from absence
> of signatures? The person responsible for Yahoo! MTA configuration is
> a well-known mail security expert who participated actively in the
> specification of all these protocols (and she also gave me a kitten,
> so I may be biased).
I have the same question Steve. I see no proof for such a practice nor
came across any documentation regarding such. The number one reason why
Yahoo defers mail is mail volume from what I see. I don't even think
they are hard on SPF violations as other ISPs such as Google.
>
> > As far as I can see, our service provider is using ARC in our
> > Mailman configuration, but not signing the outbound messages with
> > DKIM.
>
> That surprises me. ARC isn't really a substitute for the MTA's own
> DKIM signature, at least not yet.
It ought to surprise you because we are not using ARC. His comment
surprised me as well. Again I have no idea where he gets that from. He
certainly did not bring that to my attention nor presented proof.
> > Therefore the DKIM signature from the poster's mail service
> > provider is sent out with their DKIM header, which seems to be
> > problematic.
>
> It shouldn't be.
I agree. It shouldn't be and it's not. Otherwise this would impact all
lists that are DMARC munging their Mailman 3 lists unconditionally. It's
not.
>
> > If I understand ARC correctly, it is validating the DKIM signature
> > from the poster, creating a new signature and metadata indicating
> > that what it received was properly signed.
>
> That is correct. As far as I know, Yahoo! does participate in the ARC
> protocol and used to have conforming implementations of DKIM and
> DMARC. That doesn't mean you get a free ride: they may still have
> your IP on a blacklist from former owners of the IP, for example. Or
> your posts may "look like" spam for some other reason, or your lists
> may need more time to build up a clean reputation. But I need
> evidence more convincing than "list posts are recognized as spam" to
> believe that removing DKIM headers will help. (For example, my
> employer's filters regularly recognize messages from department heads
> as spam, even with DKIM signatures intact. ;-)
This particular client did bring up some Yahoo issues a week ago which I
looked into it. The conclusion was Yahoo is deferring a small percentage
of outbound mail for a small period of time due to mail volume. Overall
we have great successful deliveries to Yahoo addresses on our Affinity
server. So I am simply surprised at his communication sent to this list.
Yahoo delivery always improves when mail volume becomes more consistent.
That week we have moved over a moderate amount of lists that had a few
dozen Yahoo members. That caused our SenderScore.org rep score to drop
from 98 to 96 (which is still a very high reputation). It's back up to
98 (pats myself on the back) because the new outgoing mail volume has
become more consistent. Eventually we will fill up the server and will
bring up a new server to add new lists to. This approach has worked well
for all of our servers for years. So conclusion: broken DKIM signatures
are not playing a part with his issues at all. At least from the
evidence I have seen.
--
Brian Carpenter
Harmonylists.com
Emwd.com
4 years, 5 months

[MM3-users] Can login at /admin, but cannot login at the account/login page.
by pabsta@gmail.com
Hi All,
thanks for your contibution to opensource softwares. I have done the installation walkthrough on the wiki page (thanks to Brian Carpenter) and I am almost there. I can run the three services and they provide the relevant web interfaces (admin, postorius, hyperkitty). 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. Second, I disabled the social accounts authentification mechanisms. I am still running on sqllite, as I am still testing things (one task at a time).
Using my "superuser" credentials, I can log to the admin section in a fraction of a second. The server response time is less than one second. Once logged in, I can navigate through all the site as an authenticated user, including in the postorius pages related to list management. The services work normally.
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 and the nginx error logs just show a connection drop:
2021/08/12 18:11:09 [error] 26026#26026: *31 upstream prematurely closed connection 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/"
Two additional clues may help understanding what is going on:
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.
2- If I attempt to register a new email adress, the services also fail to respond (although with no DIGEST-MD5 message registered).
It thus seems to be a post "POST" problem, but what puzzles me is that it is not an issue for the admin page.
Below the relevant sections of my settings.py page. The skipped ([...]) sections are as in the walkthrough files. In particular, the AUTH_PASSWORD_VALIDATORS, the EMAIL_BACKEND are as is and the "USE_X_FORWARDED_HOST" is still commented.
##Settings.py
[...]
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '[redacted]'
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False
ADMINS = (
('ME', 'my@email'),
)
SITE_ID = 1
# Hosts/domain names that are valid for this site; required if DEBUG is False
# See https://docs.djangoproject.com/en/1.8/ref/settings/#allowed-hosts
ALLOWED_HOSTS = [
"localhost", # Archiving API from Mailman, keep it.
"[domain]",
# Add here all production URLs you may have.
]
# Mailman API credentials
MAILMAN_REST_API_URL = 'http://localhost:8005'
MAILMAN_REST_API_USER = '[redacted]'
MAILMAN_REST_API_PASS = '[redacted]'
MAILMAN_ARCHIVER_KEY = '[redacted]'
MAILMAN_ARCHIVER_FROM = ('127.0.0.1', '::1')
# Application definition
INSTALLED_APPS = (
'hyperkitty',
'postorius',
'django_mailman3',
# Uncomment the next line to enable the admin:
'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'django_gravatar',
'compressor',
'haystack',
'django_extensions',
'django_q',
'allauth',
'allauth.account',
'allauth.socialaccount',
#'django_mailman3.lib.auth.fedora',
#'allauth.socialaccount.providers.openid',
#'allauth.socialaccount.providers.github',
#'allauth.socialaccount.providers.gitlab',
#'allauth.socialaccount.providers.google',
#'allauth.socialaccount.providers.facebook',
#'allauth.socialaccount.providers.twitter',
#'allauth.socialaccount.providers.stackexchange',
)
[...]
# Database
# https://docs.djangoproject.com/en/1.8/ref/settings/#databases
DATABASES = {
'default': {
# Use 'sqlite3', 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'ENGINE': 'django.db.backends.sqlite3',
# DB name or path to database file if using sqlite3.
'NAME': os.path.join(BASE_DIR, 'mailmansuite.db'),
# The following settings are not used with sqlite3:
'USER': 'XXX',
'PASSWORD': 'XXX',
# HOST: empty for localhost through domain sockets or '127.0.0.1' for
# localhost through TCP.
'HOST': '',
# PORT: set to empty string for default.
'PORT': '',
# OPTIONS: for mysql engine only, do not use with other engines.
# 'OPTIONS': {'charset': 'utf8mb4'} # Enable utf8 4-byte encodings.
}
}
[...]
# Password validation
# https://docs.djangoproject.com/en/1.9/ref/settings/#auth-password-validators
AUTH_PASSWORD_VALIDATORS = [
{
'NAME':
'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME':
'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME':
'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME':
'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
# Internationalization
# https://docs.djangoproject.com/en/1.8/topics/i18n/
LANGUAGE_CODE = 'fr'
TIME_ZONE = 'America/New_York'
[...]
# If you enable internal authentication, this is the address that the emails
# will appear to be coming from. Make sure you set a valid domain name,
# otherwise the emails may get rejected.
# https://docs.djangoproject.com/en/1.8/ref/settings/#default-from-email
# DEFAULT_FROM_EMAIL = "mailing-lists(a)you-domain.org"
DEFAULT_FROM_EMAIL = 'username@domain'
# If you enable email reporting for error messages, this is where those emails
# will appear to be coming from. Make sure you set a valid domain name,
# otherwise the emails may get rejected.
# https://docs.djangoproject.com/en/1.8/ref/settings/#std:setting-SERVER_EMAIL
# SERVER_EMAIL = 'root(a)your-domain.org'
SERVER_EMAIL = 'username@domain'
# Change this when you have a real email backend
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
[...]
#
# Social auth
#
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
)
# Django Allauth
ACCOUNT_AUTHENTICATION_METHOD = "username_email"
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_EMAIL_VERIFICATION = "mandatory"
# You probably want https in production, but this is a dev setup file
ACCOUNT_DEFAULT_HTTP_PROTOCOL = "https"
ACCOUNT_UNIQUE_EMAIL = True
#
# Asynchronous tasks
#
Q_CLUSTER = {
'timeout': 300,
'save_limit': 100,
'retry':360,
'orm': 'default',
}
[...]
# Only display mailing-lists from the same virtual host as the webserver
FILTER_VHOST = True
POSTORIUS_TEMPLATE_BASE_URL = 'http://localhost:8006'
## (End of settings.py)
I'm happy to provide additional information if it can help.
Best,
Pier-André
3 years, 8 months

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

[MM3-users] Migrated from MM2 to MM3, all is well except *one* list
by Scott Courtney
Hello, all
I have migrated a multi-list server from MM2 to MM3, on Debian 11, and
migrated about half a dozen lists with fairly large archives.
Absolutely everything has been working for a couple of months, but I
am still unable to get one specific list to send mail to its
subscribers. Of course, the first place I started was the logs, but
that's the problem -- even with logging turned up, it appears to be
failing silently as it connects to the MTA.
Here's a summary of the environment:
OS: Debian Linux 11, 64-bit, on a virtual machine
MTA: Exim 4.94.2
List server: Mailman 3.3.3 (installed from Debian repo)
Database: MariaDB 10.5.15
All daemons are running on the same host, and communication is either
UNIX socket or loopback network interface, for security.
Web server: Apache 2.4.53, with proxy to WSGI per the MM3 setup guide
Symptom: There are six lists on the server. All six can accept inbound
traffic and will post the messages to the (always private, in this
environment) archives. The web interface is working perfectly. Five of
the lists also can send out messages to subscribers, but the sixth
list cannot send traffic to the MTA, or is not attempting to do so.
Tests run so far (all resulting in successful posting to archives, but
no outbound mail):
* Originate mail from inbound SMTP to the list address.
* Originate mail from the web UI as a member/moderator.
* Originate mail from the web UI as the site admin (also the list owner).
* Originate mail from both inbound SMTP and web UI by multiple users.
Log data for the inbound traffic (typical test message, some data redacted):
2022-08-27 15:11:57 1oS1Dn-003AWH-Hz <= REDACTED H=REDACTED:25
P=esmtps X=TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_128_GCM:128
CV=no K S=2552 DKIM=REDACTED id=REDACTED T="TEST 8.27.001"
2022-08-27 15:11:57 1oS1Dn-003AWH-Hz => MY_LIST(a)lists.MY_DOMAIN
R=mailman_main_director T=mailman3_transport H=127.0.0.1 [127.0.0.1]
I=[127.0.0.1] C="250 Ok"
2022-08-27 15:11:57 1oS1Dn-003AWH-Hz Completed
Log data for MM3 smtp.log (again, partially redacted):
Aug 27 15:11:57 2022 (690182) Available AUTH mechanisms:
LOGIN(builtin) PLAIN(builtin)
Aug 27 15:11:57 2022 (690182) Peer: ('127.0.0.1', 48170)
Aug 27 15:11:57 2022 (690182) ('127.0.0.1', 48170) handling connection
Aug 27 15:11:57 2022 (690182) ('127.0.0.1', 48170) Data: b'LHLO REDACTED'
Aug 27 15:11:57 2022 (690182) ('127.0.0.1', 48170) Data: b'MAIL FROM:<REDACTED>'
Aug 27 15:11:57 2022 (690182) ('127.0.0.1', 48170) sender: REDACTED
Aug 27 15:11:57 2022 (690182) ('127.0.0.1', 48170) Data: b'RCPT
TO:<erevnite(a)lists.4th.com>'
Aug 27 15:11:57 2022 (690182) ('127.0.0.1', 48170) recip:
MY_LIST(a)lists.MY_DOMAIN
Aug 27 15:11:57 2022 (690182) ('127.0.0.1', 48170) Data: b'DATA'
Aug 27 15:11:57 2022 (690182) ('127.0.0.1', 48170) Data: b'QUIT'
Aug 27 15:11:57 2022 (690182) ('127.0.0.1', 48170) connection lost
Aug 27 15:11:57 2022 (690182) Connection lost during _handle_client()
Originally I thought the "connection lost" indicated a failure, but
that is happening for all the lists, and also on successful traffic.
Since it occurs after the QUIT command in the SMTP session, and based
on some online searching, my current understanding is that this is
harmless and simply indicates the MTA closed the socket after the
QUIT. (Please correct me if that is wrong.)
Log data for mailman.log, with partial redaction:
Aug 27 15:11:57 2022 (690181) ACCEPT: <REDACTED>
Aug 27 15:11:59 2022 (690178) HyperKitty archived message <REDACTED>
to https://lists.MY_DOMAIN/hyperkitty/list/MY_LIST@lists.MY_DOMAIN/message/G3D…
19:11:59 [Q] INFO Enqueued 518
19:11:59 [Q] INFO Enqueued 519
19:11:59 [Q] INFO Enqueued 520
19:11:59 [Q] INFO Enqueued 521
19:11:59 [Q] INFO Enqueued 522
19:11:59 [Q] INFO Enqueued 523
19:11:59 [Q] INFO Enqueued 524
INFO 2022-08-27 19:11:59,648 690164 hyperkitty.views.mailman Archived
message <REDACTED> to
https://lists.MY_DOMAIN/hyperkitty/list/MY_LIST@lists.MY_DOMAIN/message/G3D…
[pid: 690164|app: 0|req: 4688541/4688541]
2600:3c04::f03c:91ff:fe02:9cc1 () {64 vars in 1255 bytes} [Sat Aug 27
19:11:59 2022] POST
/hyperkitty/api/mailman/archive?key=xombsjgLDqe6d1oxvBaQWH4ZT81uCEjH
=> generated 113 bytes in 110 msecs (HTTP/1.1 200) 5 headers in 160
bytes (1 switches on core 0)
19:12:00 [Q] INFO Process-1:4 processing [update_from_mailman]
19:12:00 [Q] INFO Process-1:3 processing [sender_mailman_id]
19:12:00 [Q] INFO Process-1:2 processing [rebuild_thread_cache_new_email]
19:12:00 [Q] INFO Process-1:1 processing [compute_thread_positions]
19:12:00 [Q] INFO Processed [rebuild_thread_cache_new_email]
19:12:00 [Q] INFO Process-1:2 processing [rebuild_mailinglist_cache_recent]
19:12:00 [Q] INFO Processed [sender_mailman_id]
19:12:00 [Q] INFO Process-1:3 processing [rebuild_mailinglist_cache_for_month]
19:12:00 [Q] INFO Process-1:1 processing [check_orphans]
19:12:00 [Q] INFO Processed [compute_thread_positions]
19:12:00 [Q] INFO Processed [rebuild_mailinglist_cache_for_month]
19:12:00 [Q] INFO Processed [check_orphans]
19:12:00 [Q] INFO Processed [rebuild_mailinglist_cache_recent]
19:12:00 [Q] INFO Processed [update_from_mailman]
[pid: 690164|app: 0|req: 4693691/4693691] 184.94.240.88 () {60 vars in
929 bytes} [Sat Aug 27 19:21:50 2022] HEAD / => generated 0 bytes in 2
msecs (HTTP/1.1 301) 6 headers in 204 bytes (1 switches on core 0)
[pid: 690164|app: 0|req: 4693694/4693694] 184.94.240.88 () {60 vars in
1009 bytes} [Sat Aug 27 19:21:50 2022] HEAD /postorius/lists/ =>
generated 7136 bytes in 142 msecs (HTTP/1.1 200) 5 headers in 163
bytes (1 switches on core 1)
There is nothing at all in the Exim log indicating an outbound
transaction was attempted by Mailman. I know Exim and Mailman are
communicating because all the lists use the same SMTP configuration
for Exim and Mailman (i.e., the non-working list is not in any way
exceptional).
I've done a lot of searching online to find a solution, and I did see
that a couple of others had asked about this type of problem, but the
only one I found that got a response had an issue that didn't apply in
my small environment.
Absent any other ideas, I'm going to try inserting some trace logging
into the Python code, but I can't figure out what's wrong here. I've
even gone to the point of looking at the SQL rows to verify this list
is exactly parallel to another working list, except its name and
integer ID numbers for various unique auto-increment keys.
Any suggestions are appreciated. Thanks!
2 years, 7 months

[MM3-users] Re: Issues with cross posted emails after upgrading to mailman 3.3.6
by Simon Coggins
Ok so after pulling it all apart this appears to have been a major problem in mailman3 from conception maybe? So here’s what happening as I understand it.
If an email comes in and it is address to 2+ lists and 2 or more of those lists hold the email for moderation. The email is stored in the database using the message-id-hash (or something based on the message-id). Then if one list moderator approve/discards the email then that action deletes the message from the database. But there are still 1+ other lists that the message was addressed to that have pending actions, but that email is now gone. Before 3.3.5 these approves were silently dropped and no email was sent to the list, but in 3.3.5 new code was added to send a dummy email that contains "The content of this message was lost. It was probably cross-posted to multiple lists and previously handled on another list.”
We have multiple campuses in the same city and it’s not uncommon for people to send the same email to the multiple lists in the same city. This is where we’ve started to see the content was lost emails. I’m amazed we haven’t had people report missing emails before this.
My very ugly hack that I’m sure is not even close to the right way of fixing this was to set exim to use max_rcpt = 1 when talking to the mailman LMTP server. Then I made the following changes to runners/lmtp.py
*** lmtp.py.orig 2021-11-04 17:46:03.428874115 +1000
--- /opt/mailman/venv/lib/python3.6/site-packages/mailman/runners/lmtp.py 2021-11-04 17:37:59.911514738 +1000
***************
*** 37,42 ****
--- 37,43 ----
import email
import asyncio
import logging
+ import hashlib
from aiosmtpd.controller import Controller
from aiosmtpd.lmtp import LMTP
***************
*** 155,160 ****
--- 156,171 ----
if msg.defects:
return ERR_501
msg.original_size = len(envelope.content)
+
+ # Modify the messageID so tha it's unique for each list. This requies
+ # the MTA to be configured to only send one RCPT per connection
+ # In exim this is max_rcpt = 1
+ # SIMON HACK
+ del msg['Message-ID']
+ msg['Message-ID'] = "{}{}".format(hashlib.sha512(envelope.rcpt_tos[0].encode('utf8')).hexdigest()[:24], message_id.strip("<>"))
+ message_id = msg['Message-ID']
+ # END SIMON HACK
+
add_message_hash(msg)
msg['X-MailFrom'] = envelope.mail_from
# RFC 2033 requires us to return a status code for every recipient.
All I’m doing is literally appending a subset of a hash of the mailing list rcpt address to the front of the message-id, so that if it gets moderated, each instance of the email has a different message-id and each moderation action has it’s own copy of the email to operate on. This seems to have gotten us out of the immediate issues. But I’m eager to find a better solution that might be more permanent.
-Simon
---
[https://www.cqu.edu.au/]
Mr Simon Coggins
Principal Systems Engineer | Digital Services Directorate
CQUniversity Australia, Level 6.14, 160 Ann Street, Brisbane, QLD 4000
P +61 7 3295 1182 | X 51182 | M +61 408 115 861 | E s.coggins(a)cqu.edu.au<mailto:s.coggins@cqu.edu.au>
[https://www.cqu.edu.au/social-media]
I respectfully acknowledge the Traditional Owners of the land on which we work and learn,
and pay respect to the First Nations Peoples and their Elders, past, present and future.
This communication may contain privileged or confidential information. If you have received this in error, please return to sender and delete.
CRICOS: 00219C | RTO Code 40939
On 4 Nov 2021, at 1:11 pm, Simon Coggins <s.coggins(a)cqu.edu.au<mailto:s.coggins@cqu.edu.au>> wrote:
Sorry that should be we went from 3.3.4 -> 3.3.5. I’m just reading the code now but my quick reading of it seems to say that if someone sees to 2 lists and they are both moderated, if one list moderator releases it, the email is deleted from the store and then when the second person releases it it’s now a dummy message that has no contents? That doesn’t sounds right.
-Simon
---
[https://www.cqu.edu.au/]
Mr Simon Coggins
Principal Systems Engineer | Digital Services Directorate
CQUniversity Australia, Level 6.14, 160 Ann Street, Brisbane, QLD 4000
P +61 7 3295 1182 | X 51182 | M +61 408 115 861 | E s.coggins(a)cqu.edu.au<mailto:s.coggins@cqu.edu.au>
[https://www.cqu.edu.au/social-media]
I respectfully acknowledge the Traditional Owners of the land on which we work and learn,
and pay respect to the First Nations Peoples and their Elders, past, present and future.
This communication may contain privileged or confidential information. If you have received this in error, please return to sender and delete.
CRICOS: 00219C | RTO Code 40939
On 4 Nov 2021, at 12:50 pm, Simon Coggins <s.coggins(a)cqu.edu.au<mailto:s.coggins@cqu.edu.au>> wrote:
Since upgrading from 3.3.4 to 3.3.6 we are seeing a high instance of emails that are sent to 2 lists (EG 2 campuses). One campus will get the email and the other campus will get an email that just contains "The content of this message was lost. It was probably cross-posted to multiple lists and previously handled on another list.” Is this something new in 3.3.6? I’m trying to work out what’s going on and why it would be lost. Both lists need the email as the membership list is different so the people on the second list get a useless email.
-Simon
---
[https://www.cqu.edu.au/]
Mr Simon Coggins
Principal Systems Engineer | Digital Services Directorate
CQUniversity Australia, Level 6.14, 160 Ann Street, Brisbane, QLD 4000
P +61 7 3295 1182 | X 51182 | M +61 408 115 861 | E s.coggins(a)cqu.edu.au<mailto:s.coggins@cqu.edu.au>
[https://www.cqu.edu.au/social-media]
I respectfully acknowledge the Traditional Owners of the land on which we work and learn,
and pay respect to the First Nations Peoples and their Elders, past, present and future.
This communication may contain privileged or confidential information. If you have received this in error, please return to sender and delete.
CRICOS: 00219C | RTO Code 40939
3 years, 5 months

[MM3-users] Re: OperationalError: database is locked
by Simon Hanna
On 01/19/2018 03:53 PM, Cyprian Laskowski wrote:
> I (finally) set up the standard cronjobs (http://docs.mailman3.org/en/latest/config-web.html#scheduled-tasks-required) last week, but this doesn't seem to have any obvious effect on this problem (i.e., it's not clearly either better or worse). But I wonder whether the fact that I had overlooked this (so that our installation didn't have these cronjobs installed for months) could have resulted in some hard-to-fix corrupt state?
that shouldn't be the case. The cronjobs fix issues for all exisiting
entries.
They are executed as often as deemed necessary to keep state somehow
stable without impacting performance too much...
> We also looked into the other logs a little and found that uwsgi-error.log is getting filled constantly. Even if the cronjobs are commented out, and even in the middle of the night, and even though we only have a few mailing lists, all with limited activity, there's probably more than a line per second in this log. Here's the last screenful, which seems as representative as any:
>
> 14:45:15 [Q] INFO Process-1:7687 processing [compute_thread_positions]
> 14:45:15 [Q] ERROR Failed [update_from_mailman] - MailingList matching query does not exist.
> 14:45:16 [Q] ERROR Failed [compute_thread_positions] - Thread matching query does not exist.
> 14:45:16 [Q] INFO Process-1:7687 processing [rebuild_mailinglist_cache_recent]
> 14:45:16 [Q] INFO Process-1:7688 processing [compute_thread_positions]
> 14:45:16 [Q] ERROR Failed [rebuild_mailinglist_cache_recent] - MailingList matching query does not exist.
> 14:45:17 [Q] ERROR Failed [compute_thread_positions] - Thread matching query does not exist.
> 14:45:17 [Q] INFO Process-1:7687 processing [rebuild_mailinglist_cache_recent]
> 14:45:17 [Q] ERROR Failed [rebuild_mailinglist_cache_recent] - MailingList matching query does not exist.
> 14:45:18 [Q] INFO Process-1:7688 processing [rebuild_mailinglist_cache_for_month]
> 14:45:18 [Q] ERROR Failed [rebuild_mailinglist_cache_for_month] - MailingList matching query does not exist.
> 14:45:19 [Q] INFO Process-1:7687 processing [rebuild_mailinglist_cache_for_month]
> 14:45:19 [Q] ERROR Failed [rebuild_mailinglist_cache_for_month] - MailingList matching query does not exist.
> 14:45:20 [Q] INFO Process-1:7688 processing [compute_thread_positions]
> 14:45:20 [Q] ERROR Failed [compute_thread_positions] - Thread matching query does not exist.
> 14:45:20 [Q] INFO Process-1:7687 processing [check_orphans]
> 14:45:21 [Q] INFO Process-1:7688 processing [compute_thread_positions]
> 14:45:21 [Q] ERROR Failed [check_orphans] - Email matching query does not exist.
> 14:45:21 [Q] ERROR Failed [compute_thread_positions] - Thread matching query does not exist.
> 14:45:22 [Q] INFO Process-1:7688 processing [update_from_mailman]
> 14:45:22 [Q] INFO Process-1:7687 processing [compute_thread_positions]
> 14:45:23 [Q] INFO Process-1:7688 processing [check_orphans]
> 14:45:23 [Q] ERROR Failed [update_from_mailman] - MailingList matching query does not exist.
> 14:45:23 [Q] ERROR Failed [compute_thread_positions] - Thread matching query does not exist.
> 14:45:24 [Q] ERROR Failed [check_orphans] - Email matching query does not exist.
> 14:45:24 [Q] INFO Process-1:7687 processing [rebuild_mailinglist_cache_recent]
> 14:45:24 [Q] ERROR Failed [rebuild_mailinglist_cache_recent] - MailingList matching query does not exist.
> 14:45:25 [Q] INFO Process-1:7687 processing [update_from_mailman]
> 14:45:25 [Q] INFO Process-1:7688 processing [compute_thread_positions]
> 14:45:25 [Q] INFO Process-1:7687 processing [rebuild_mailinglist_cache_recent]
> 14:45:26 [Q] INFO Process-1:7688 processing [rebuild_mailinglist_cache_for_month]
> 14:45:26 [Q] INFO Process-1:7687 processing [check_orphans]
> 14:45:26 [Q] ERROR Failed [update_from_mailman] - MailingList matching query does not exist.
> 14:45:26 [Q] ERROR Failed [compute_thread_positions] - Thread matching query does not exist.
> 14:45:27 [Q] ERROR Failed [rebuild_mailinglist_cache_recent] - MailingList matching query does not exist.
> 14:45:27 [Q] ERROR Failed [rebuild_mailinglist_cache_for_month] - MailingList matching query does not exist.
> 14:45:27 [Q] ERROR Failed [check_orphans] - Email matching query does not exist.
> 14:45:27 [Q] INFO Process-1:7688 processing [rebuild_mailinglist_cache_for_month]
> 14:45:28 [Q] INFO Process-1:7687 processing [check_orphans]
> 14:45:28 [Q] INFO Process-1:7688 processing [update_from_mailman]
> 14:45:29 [Q] ERROR Failed [rebuild_mailinglist_cache_for_month] - MailingList matching query does not exist.
> 14:45:29 [Q] ERROR Failed [check_orphans] - Email matching query does not exist.
> 14:45:29 [Q] ERROR Failed [update_from_mailman] - MailingList matching query does not exist.
> 14:45:29 [Q] INFO Process-1:7687 processing [compute_thread_positions]
> 14:45:30 [Q] ERROR Failed [compute_thread_positions] - Thread matching query does not exist.
> 14:45:30 [Q] INFO Process-1:7688 processing [rebuild_mailinglist_cache_recent]
> 14:45:30 [Q] INFO Process-1:7688 processing [rebuild_mailinglist_cache_recent]
> 14:45:30 [Q] ERROR Failed [rebuild_mailinglist_cache_recent] - MailingList matching query does not exist.
> 14:45:31 [Q] ERROR Failed [rebuild_mailinglist_cache_recent] - MailingList matching query does not exist.
> 14:45:31 [Q] INFO Process-1:7688 processing [check_orphans]
> 14:45:31 [Q] ERROR Failed [check_orphans] - Email matching query does not exist.
> 14:45:31 [Q] INFO Process-1:7687 processing [rebuild_mailinglist_cache_for_month]
> 14:45:31 [Q] ERROR Failed [rebuild_mailinglist_cache_for_month] - MailingList matching query does not exist.
> 14:45:32 [Q] INFO Process-1:7688 processing [update_from_mailman]
> 14:45:32 [Q] ERROR Failed [update_from_mailman] - MailingList matching query does not exist.
>
> We also noticed that there's almost constant writing going on. A typical line from iotop:
>
> 7430 be/4 www-data 0.00 B/s 31.34 K/s 0.00 % 44.14 % python ./manage.py qcluster
>
> We will try a MM3 upgrade on Monday (to realign all the suite components with the 3.1 versions here: https://wiki.list.org/Mailman3) and maybe migrate to postgresql, but I have a feeling that there's a more "basic" problem. Help or even speculation would be appreciated. :)
migrating to postgresql should at least take care of the database
locking problem.
Make sure you are actually using either the master branch (with the
latest commit) of hyperkitty or the latest release of it.
Now comes the "speculation":
To me it looks like all this output is generated by the django-q tasks.
I'm not that familiar with it, but I guess it's either some
configuration error or a bug in Hyperkitty.
The errors produced seem to corespond to unhandled exceptions,
however a quick glance at the current master shows that they are
handled, so I'm not sure what's going on here...
Compare your settings to the settings in mailman-suite (or better the
example-project of Hyperkitty).
Update your settings if you spot differences that might have something
to do with it,
if that doesn't help open an issue about that here
https://gitlab.com/mailman/hyperkitty/issues
7 years, 3 months

[MM3-users] Re: Run 'manage.py makemigrations' to make new migrations
by Abhilash Raj
On Wed, Jun 29, 2022, at 2:21 AM, christopher.claus(a)tgcamberg1848.de wrote:
> Hello together,
>
> at startup of my docker-container with mailman 0.4.3 i got some
> warnings to apply some data-model-migrations. I´m very unfamilar with
> python and django and be not sure how to handle it. Are these warnings
> from mailman and should i migrate the data-model (and how)? Or should
> i ignore these message for keeping mailman in a safe state?
This might have something to do with the newer Django versions being
pulled in during the build. Given that they are warnings, I don't think
they will affect data. But regardless, can you open an issue on Github
to track this? We want to make sure that either we downgrade Django or
make sure affected components are updated to properly support new
versions of Django.
I can take a look a bit later to see what's this new W402 check that
was added.
>
> Best regards,
> chrclaus
>
>
> System check identified some issues:
>
> WARNINGS:
> django_mailman3.MailDomain: (models.W042) Auto-created primary key
> used when not defining a primary key type, by default
> 'django.db.models.AutoField'.
> HINT: Configure the DEFAULT_AUTO_FIELD setting or the
> DjangoMailman3Config.default_auto_field attribute to point to a
> subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
> django_mailman3.Profile: (models.W042) Auto-created primary key used
> when not defining a primary key type, by default
> 'django.db.models.AutoField'.
> HINT: Configure the DEFAULT_AUTO_FIELD setting or the
> DjangoMailman3Config.default_auto_field attribute to point to a
> subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
> hyperkitty.Attachment: (models.W042) Auto-created primary key used
> when not defining a primary key type, by default
> 'django.db.models.AutoField'.
> HINT: Configure the DEFAULT_AUTO_FIELD setting or the
> HyperKittyConfig.default_auto_field attribute to point to a subclass of
> AutoField, e.g. 'django.db.models.BigAutoField'.
> hyperkitty.Email: (models.W042) Auto-created primary key used when not
> defining a primary key type, by default 'django.db.models.AutoField'.
> HINT: Configure the DEFAULT_AUTO_FIELD setting or the
> HyperKittyConfig.default_auto_field attribute to point to a subclass of
> AutoField, e.g. 'django.db.models.BigAutoField'.
> hyperkitty.Favorite: (models.W042) Auto-created primary key used when
> not defining a primary key type, by default
> 'django.db.models.AutoField'.
> HINT: Configure the DEFAULT_AUTO_FIELD setting or the
> HyperKittyConfig.default_auto_field attribute to point to a subclass of
> AutoField, e.g. 'django.db.models.BigAutoField'.
> hyperkitty.LastView: (models.W042) Auto-created primary key used when
> not defining a primary key type, by default
> 'django.db.models.AutoField'.
> HINT: Configure the DEFAULT_AUTO_FIELD setting or the
> HyperKittyConfig.default_auto_field attribute to point to a subclass of
> AutoField, e.g. 'django.db.models.BigAutoField'.
> hyperkitty.MailingList: (models.W042) Auto-created primary key used
> when not defining a primary key type, by default
> 'django.db.models.AutoField'.
> HINT: Configure the DEFAULT_AUTO_FIELD setting or the
> HyperKittyConfig.default_auto_field attribute to point to a subclass of
> AutoField, e.g. 'django.db.models.BigAutoField'.
> hyperkitty.Profile: (models.W042) Auto-created primary key used when
> not defining a primary key type, by default
> 'django.db.models.AutoField'.
> HINT: Configure the DEFAULT_AUTO_FIELD setting or the
> HyperKittyConfig.default_auto_field attribute to point to a subclass of
> AutoField, e.g. 'django.db.models.BigAutoField'.
> hyperkitty.Tag: (models.W042) Auto-created primary key used when not
> defining a primary key type, by default 'django.db.models.AutoField'.
> HINT: Configure the DEFAULT_AUTO_FIELD setting or the
> HyperKittyConfig.default_auto_field attribute to point to a subclass of
> AutoField, e.g. 'django.db.models.BigAutoField'.
> hyperkitty.Tagging: (models.W042) Auto-created primary key used when
> not defining a primary key type, by default
> 'django.db.models.AutoField'.
> HINT: Configure the DEFAULT_AUTO_FIELD setting or the
> HyperKittyConfig.default_auto_field attribute to point to a subclass of
> AutoField, e.g. 'django.db.models.BigAutoField'.
> hyperkitty.Thread: (models.W042) Auto-created primary key used when
> not defining a primary key type, by default
> 'django.db.models.AutoField'.
> HINT: Configure the DEFAULT_AUTO_FIELD setting or the
> HyperKittyConfig.default_auto_field attribute to point to a subclass of
> AutoField, e.g. 'django.db.models.BigAutoField'.
> hyperkitty.ThreadCategory: (models.W042) Auto-created primary key used
> when not defining a primary key type, by default
> 'django.db.models.AutoField'.
> HINT: Configure the DEFAULT_AUTO_FIELD setting or the
> HyperKittyConfig.default_auto_field attribute to point to a subclass of
> AutoField, e.g. 'django.db.models.BigAutoField'.
> hyperkitty.Vote: (models.W042) Auto-created primary key used when not
> defining a primary key type, by default 'django.db.models.AutoField'.
> HINT: Configure the DEFAULT_AUTO_FIELD setting or the
> HyperKittyConfig.default_auto_field attribute to point to a subclass of
> AutoField, e.g. 'django.db.models.BigAutoField'.
> postorius.EmailTemplate: (models.W042) Auto-created primary key used
> when not defining a primary key type, by default
> 'django.db.models.AutoField'.
> HINT: Configure the DEFAULT_AUTO_FIELD setting or the
> PostoriusConfig.default_auto_field attribute to point to a subclass of
> AutoField, e.g. 'django.db.models.BigAutoField'.
> Operations to perform:
> Apply all migrations: account, admin, auth, contenttypes,
> django_mailman3, django_q, hyperkitty, postorius, sessions, sites,
> socialaccount
> Running migrations:
> No migrations to apply.
> Your models in app(s): 'postorius' have changes that are not yet
> reflected in a migration, and so won't be applied.
> Run 'manage.py makemigrations' to make new migrations, and then
> re-run 'manage.py migrate' to apply them.
> _______________________________________________
> 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)
2 years, 9 months

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

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

[MM3-users] Re: Changing web access
by Ralf Wiegand
GNU Mailman 3.3.1 (Tom Sawyer)
Python 3.6.8 (default, Sep 26 2019, 11:57:09)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]
config file: /opt/mailman/mailman/var/etc/mailman.cfg
db url: sqlite:////opt/mailman/mailman/var/data/mailman.db
devmode: DISABLED
REST root url: https://empire:8001/3.1/
REST credentials: r****n:r*****s
My REST API is running on "empire" (192.168.0.27), but isn't this
messages referencing
>>> snip
python manage.py runserver 0.0.0.0:8000
Performing system checks...
System check identified no issues (0 silenced).
April 22, 2020 - 19:05:09
Django version 2.2.12, using settings 'settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
ERROR Mailman REST API not available
Traceback (most recent call last):
File
"/opt/mailman/venv-3.6/lib64/python3.6/site-packages/urllib3-1.25.8-py3.6.egg/urllib3/connection.py",
line 157, in _new_conn
(self._dns_host, self.port), self.timeout, **extra_kw
File
"/opt/mailman/venv-3.6/lib64/python3.6/site-packages/urllib3-1.25.8-py3.6.egg/urllib3/util/connection.py",
line 84, in create_connection
raise err
File
"/opt/mailman/venv-3.6/lib64/python3.6/site-packages/urllib3-1.25.8-py3.6.egg/urllib3/util/connection.py",
line 74, in create_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/venv-3.6/lib64/python3.6/site-packages/urllib3-1.25.8-py3.6.egg/urllib3/connectionpool.py",
line 672, in urlopen
chunked=chunked,
File
"/opt/mailman/venv-3.6/lib64/python3.6/site-packages/urllib3-1.25.8-py3.6.egg/urllib3/connectionpool.py",
line 387, in _make_request
conn.request(method, url, **httplib_request_kw)
File "/usr/lib64/python3.6/http/client.py", line 1254, in request
self._send_request(method, url, body, headers, encode_chunked)
File "/usr/lib64/python3.6/http/client.py", line 1300, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File "/usr/lib64/python3.6/http/client.py", line 1249, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "/usr/lib64/python3.6/http/client.py", line 1036, in _send_output
self.send(msg)
File "/usr/lib64/python3.6/http/client.py", line 974, in send
self.connect()
File
"/opt/mailman/venv-3.6/lib64/python3.6/site-packages/urllib3-1.25.8-py3.6.egg/urllib3/connection.py",
line 184, in connect
conn = self._new_conn()
File
"/opt/mailman/venv-3.6/lib64/python3.6/site-packages/urllib3-1.25.8-py3.6.egg/urllib3/connection.py",
line 169, in _new_conn
self, "Failed to establish a new connection: %s" % e
urllib3.exceptions.NewConnectionError:
<urllib3.connection.HTTPConnection object at 0x7f8dd8cdee80>: Failed to
establish a new connection: [Errno 111] Connection refused
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File
"/opt/mailman/venv-3.6/lib64/python3.6/site-packages/requests-2.23.0-py3.6.egg/requests/adapters.py",
line 449, in send
timeout=timeout
File
"/opt/mailman/venv-3.6/lib64/python3.6/site-packages/urllib3-1.25.8-py3.6.egg/urllib3/connectionpool.py",
line 720, in urlopen
method, url, error=e, _pool=self, _stacktrace=sys.exc_info()[2]
File
"/opt/mailman/venv-3.6/lib64/python3.6/site-packages/urllib3-1.25.8-py3.6.egg/urllib3/util/retry.py",
line 436, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='localhost',
port=8001): Max retries exceeded with url:
/3.0/lists?advertised=true&count=0&page=1 (Caused by
NewConnectionError('<urllib3.connection.HTTPConnection object at
0x7f8dd8cdee80>: Failed to establish a new connection: [Errno 111]
Connection refused',))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File
"/opt/mailman/mailmanclient/src/mailmanclient/restbase/connection.py",
line 96, in call
headers=headers)
File
"/opt/mailman/venv-3.6/lib64/python3.6/site-packages/requests-2.23.0-py3.6.egg/requests/api.py",
line 61, in request
return session.request(method=method, url=url, **kwargs)
File
"/opt/mailman/venv-3.6/lib64/python3.6/site-packages/requests-2.23.0-py3.6.egg/requests/sessions.py",
line 530, in request
resp = self.send(prep, **send_kwargs)
File
"/opt/mailman/venv-3.6/lib64/python3.6/site-packages/requests-2.23.0-py3.6.egg/requests/sessions.py",
line 643, in send
r = adapter.send(request, **kwargs)
File
"/opt/mailman/venv-3.6/lib64/python3.6/site-packages/requests-2.23.0-py3.6.egg/requests/adapters.py",
line 516, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError:
HTTPConnectionPool(host='localhost', port=8001): Max retries exceeded
with url: /3.0/lists?advertised=true&count=0&page=1 (Caused by
NewConnectionError('<urllib3.connection.HTTPConnection object at
0x7f8dd8cdee80>: Failed to establish a new connection: [Errno 111]
Connection refused',))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File
"/opt/mailman/venv-3.6/lib64/python3.6/site-packages/Django-2.2.12-py3.6.egg/django/core/handlers/base.py",
line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/opt/mailman/postorius/src/postorius/views/list.py", line 755,
in list_index
paginator_class=MailmanPaginator)
File "/opt/mailman/django-mailman3/django_mailman3/lib/paginator.py",
line 71, in paginate
objects = paginator.page(page_num)
File "/opt/mailman/django-mailman3/django_mailman3/lib/paginator.py",
line 46, in page
number = self.validate_number(number)
File
"/opt/mailman/venv-3.6/lib64/python3.6/site-packages/Django-2.2.12-py3.6.egg/django/core/paginator.py",
line 48, in validate_number
if number > self.num_pages:
File
"/opt/mailman/venv-3.6/lib64/python3.6/site-packages/Django-2.2.12-py3.6.egg/django/utils/functional.py",
line 80, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File
"/opt/mailman/venv-3.6/lib64/python3.6/site-packages/Django-2.2.12-py3.6.egg/django/core/paginator.py",
line 97, in num_pages
if self.count == 0 and not self.allow_empty_first_page:
File
"/opt/mailman/venv-3.6/lib64/python3.6/site-packages/Django-2.2.12-py3.6.egg/django/utils/functional.py",
line 80, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "/opt/mailman/django-mailman3/django_mailman3/lib/paginator.py",
line 56, in count
return self.function(count=0, page=1).total_size
File "/opt/mailman/postorius/src/postorius/views/list.py", line 751,
in _get_list_page
advertised=advertised, mail_host=mail_host, count=count, page=page)
File "/opt/mailman/mailmanclient/src/mailmanclient/client.py", line
181, in get_list_page
return Page(self._connection, url, MailingList, count, page)
File "/opt/mailman/mailmanclient/src/mailmanclient/restbase/page.py",
line 37, in __init__
self._create_page()
File "/opt/mailman/mailmanclient/src/mailmanclient/restbase/page.py",
line 62, in _create_page
response, content = self._connection.call(self._build_url())
File
"/opt/mailman/mailmanclient/src/mailmanclient/restbase/connection.py",
line 120, in call
'Could not connect to Mailman API: ', repr(e))
mailmanclient.restbase.connection.MailmanConnectionError: ('Could not
connect to Mailman API: ',
'ConnectionError(MaxRetryError("HTTPConnectionPool(host=\'localhost\',
port=8001): Max retries exceeded with url:
/3.0/lists?advertised=true&count=0&page=1 (Caused by
NewConnectionError(\'<urllib3.connection.HTTPConnection object at
0x7f8dd8cdee80>: Failed to establish a new connection: [Errno 111]
Connection refused\',))",),)')
<<<< snip
not sure I understand???
On 4/22/20 2:50 PM, Mark Sapiro wrote:
> On 4/22/20 11:35 AM, Ralf Wiegand wrote:
>> but I am getting :
>>
>> mailmanclient.restbase.connection.MailmanConnectionError: ('Could not
>> connect to Mailman API: ',
>> 'ConnectionError(MaxRetryError("HTTPConnectionPool(host=\'localhost\',
>> port=8001): Max retries exceeded with url:
>> /3.0/lists?advertised=true&count=0&page=1 (Caused by
>> NewConnectionError(\'<urllib3.connection.HTTPConnection object at
>> 0x7f88fe4cb4e0>: Failed to establish a new connection: [Errno 111]
>> Connection refused\',))",),)')
>
> What do you have for ALLOWED_HOSTS in your settings file(s)? You may
> want something like
>
> ALLOWED_HOSTS = ['*']
>
> or
>
> ALLOWED_HOSTS = ['192.168.*']
>
5 years

[MM3-users] Help with Newbie error -- I think I deleted my server
by William Oliver
I have recently installed mailman3 on a Debian system with Posftix and
Dovecot. I did it directly and did not use the docker setup.
I managed to get it working to the point that I could send mail locally
and outside my domain through mailman and log in as administrator.
I decided to add a domain, but noticed on the form that the server was
called "example.com." Clearly, I thought, I missed a configuration item
here.
I clicked on that, and it took me to a page where I could add servers.
So, I added my real domain (libertyfp.org) It successfully added it,
so I decided that I clearly didn't need "example.com" as a server, and
deleted it using the same page.
Immediately, I got an "internal server error" and have now lost all web
interfaces. I tried restarting the daemons and rebooting the box, to
no avail.
The error message sent to my admin email is shown below.
So... I have a couple of questions:
1) How can I set libertyfp.org as my server by use of a config file?
2) Failing that, how do a add "example.com" back, since I no longer
have the web interface?
I can't believe I did this. It took me a week to get this up and
working, and I destroyed it in ten minutes after it was working.
Any help would be appreciated. I suppose reinstalling will go much more
quickly, since I know the mistakes I made over the past few days, but I
really don't want to do that...
Here's what it sends me:
DoesNotExist at /mailman3/lists/
Site matching query does not exist.
Request Method: GET
Request URL: https://www.libertyfp.org/mailman3/lists/
Django Version: 3.0.14
Python Executable: /opt/mailman/venv/bin/uwsgi
Python Version: 3.9.2
Python Path: ['/etc/mailman3/', '.', '', '/etc/mailman3',
'/usr/lib/python39.zip', '/usr/lib/python3.9', '/usr/lib/python3.9/lib-
dynload', '/opt/mailman/venv/lib/python3.9/site-packages']
Server time: Sat, 25 Dec 2021 04:14:00 +0000
Installed Applications:
['hyperkitty',
'postorius',
'django_mailman3',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'django_gravatar',
'compressor',
'haystack',
'django_extensions',
'django_q',
'allauth',
'allauth.account',
'allauth.socialaccount']
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django_mailman3.middleware.TimezoneMiddleware',
'postorius.middleware.PostoriusMiddleware')
Traceback (most recent call last):
File "/opt/mailman/venv/lib/python3.9/site-
packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request)
File "/opt/mailman/venv/lib/python3.9/site-
packages/django/core/handlers/base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/opt/mailman/venv/lib/python3.9/site-
packages/django/core/handlers/base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/opt/mailman/venv/lib/python3.9/site-
packages/postorius/views/list.py", line 978, in list_index
return render(request, template,
File "/opt/mailman/venv/lib/python3.9/site-
packages/django/shortcuts.py", line 19, in render
content = loader.render_to_string(template_name, context, request,
using=using)
File "/opt/mailman/venv/lib/python3.9/site-
packages/django/template/loader.py", line 62, in render_to_string
return template.render(context, request)
File "/opt/mailman/venv/lib/python3.9/site-
packages/django/template/backends/django.py", line 61, in render
return self.template.render(context)
File "/opt/mailman/venv/lib/python3.9/site-
packages/django/template/base.py", line 169, in render
with context.bind_template(self):
File "/usr/lib/python3.9/contextlib.py", line 117, in __enter__
return next(self.gen)
File "/opt/mailman/venv/lib/python3.9/site-
packages/django/template/context.py", line 246, in bind_template
updates.update(processor(self.request))
File "/opt/mailman/venv/lib/python3.9/site-
packages/django_mailman3/context_processors.py", line 32, in common
context["site_name"] = get_current_site(request).name
File "/opt/mailman/venv/lib/python3.9/site-
packages/django/contrib/sites/shortcuts.py", line 13, in
get_current_site
return Site.objects.get_current(request)
File "/opt/mailman/venv/lib/python3.9/site-
packages/django/contrib/sites/models.py", line 58, in get_current
return self._get_site_by_id(site_id)
File "/opt/mailman/venv/lib/python3.9/site-
packages/django/contrib/sites/models.py", line 30, in _get_site_by_id
site = self.get(pk=site_id)
File "/opt/mailman/venv/lib/python3.9/site-
packages/django/db/models/manager.py", line 82, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/opt/mailman/venv/lib/python3.9/site-
packages/django/db/models/query.py", line 415, in get
raise self.model.DoesNotExist(
Exception Type: DoesNotExist at /mailman3/lists/
Exception Value: Site matching query does not exist.
Request information:
USER: AnonymousUser
GET: No GET data
POST: No POST data
FILES: No FILES data
COOKIES:
csrftoken =
'qklMdfLOyqa1TWm0b8nEHMFVBLaa0CgU2DXhSywjpgZMTnCSTNA4MkD4lGLB6z5N'
META:
CSRF_COOKIE =
'qklMdfLOyqa1TWm0b8nEHMFVBLaa0CgU2DXhSywjpgZMTnCSTNA4MkD4lGLB6z5N'
CSRF_COOKIE_USED = True
HTTP_ACCEPT =
'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image
/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9'
HTTP_ACCEPT_ENCODING = 'gzip, deflate, br'
HTTP_ACCEPT_LANGUAGE = 'en-US,en;q=0.9'
HTTP_CONNECTION = 'close'
HTTP_COOKIE =
'csrftoken=qklMdfLOyqa1TWm0b8nEHMFVBLaa0CgU2DXhSywjpgZMTnCSTNA4MkD4lGLB
6z5N'
HTTP_DNT = '1'
HTTP_HOST = 'www.libertyfp.org'
HTTP_SEC_FETCH_DEST = 'document'
HTTP_SEC_FETCH_MODE = 'navigate'
HTTP_SEC_FETCH_SITE = 'none'
HTTP_SEC_FETCH_USER = '?1'
HTTP_SEC_GPC = '1'
HTTP_UPGRADE_INSECURE_REQUESTS = '1'
HTTP_USER_AGENT = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36'
HTTP_X_FORWARDED_FOR = '174.212.65.52'
HTTP_X_FORWARDED_HOST = 'www.libertyfp.org'
HTTP_X_FORWARDED_PROTO = 'https'
HTTP_X_FORWARDED_SERVER = 'www.libertyfp.org'
PATH_INFO = '/mailman3/lists/'
QUERY_STRING = ''
REMOTE_ADDR = '127.0.0.1'
REQUEST_METHOD = 'GET'
REQUEST_URI = '/mailman3/lists/'
SCRIPT_NAME = ''
SERVER_NAME = 'libertyfp.org'
SERVER_PORT = '8000'
SERVER_PROTOCOL = 'HTTP/1.0'
uwsgi.core = 0
uwsgi.node = b'libertyfp.org'
uwsgi.version = b'2.0.20'
wsgi.errors = <_io.TextIOWrapper name=2 mode='w' encoding='UTF-8'>
wsgi.file_wrapper = ''
wsgi.input = <uwsgi._Input object at 0x7f8591167d90>
wsgi.multiprocess = True
wsgi.multithread = True
wsgi.run_once = False
wsgi.url_scheme = 'https'
wsgi.version = '(1, 0)'
Settings:
Using settings module settings
ABSOLUTE_URL_OVERRIDES = {}
ACCOUNT_AUTHENTICATION_METHOD = 'username_email'
ACCOUNT_DEFAULT_HTTP_PROTOCOL = 'https'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
ACCOUNT_UNIQUE_EMAIL = True
ADMINS = "(('Mailman Suite Admin', 'fp145(a)libertyfp.org'),)"
ALLOWED_HOSTS = ['localhost', 'www.libertyfp.org', 'libertyfp.org',
'mail.libertyfp.org', 'list.libertyfp.org', '127.0.0.1']
APPEND_SLASH = True
AUTHENTICATION_BACKENDS =
"('django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend')"
AUTH_PASSWORD_VALIDATORS = '********************'
AUTH_USER_MODEL = 'auth.User'
BASE_DIR = PosixPath('/opt/mailman/web')
CACHES = {'default': {'BACKEND':
'django.core.cache.backends.locmem.LocMemCache'}}
CACHE_MIDDLEWARE_ALIAS = 'default'
CACHE_MIDDLEWARE_KEY_PREFIX = '********************'
CACHE_MIDDLEWARE_SECONDS = 600
COMPRESSORS = {'css': 'compressor.css.CssCompressor', 'js':
'compressor.js.JsCompressor'}
COMPRESS_CACHEABLE_PRECOMPILERS = '()'
COMPRESS_CACHE_BACKEND = 'default'
COMPRESS_CACHE_KEY_FUNCTION = '********************'
COMPRESS_CLEAN_CSS_ARGUMENTS = ''
COMPRESS_CLEAN_CSS_BINARY = 'cleancss'
COMPRESS_CLOSURE_COMPILER_ARGUMENTS = ''
COMPRESS_CLOSURE_COMPILER_BINARY = 'java -jar compiler.jar'
COMPRESS_CSS_HASHING_METHOD = 'mtime'
COMPRESS_DATA_URI_MAX_SIZE = 1024
COMPRESS_DEBUG_TOGGLE = None
COMPRESS_ENABLED = True
COMPRESS_FILTERS = {'css':
['compressor.filters.css_default.CssAbsoluteFilter',
'compressor.filters.cssmin.rCSSMinFilter'], 'js':
['compressor.filters.jsmin.rJSMinFilter']}
COMPRESS_JINJA2_GET_ENVIRONMENT = <function
CompressorConf.JINJA2_GET_ENVIRONMENT at 0x7f859064d670>
COMPRESS_MINT_DELAY = 30
COMPRESS_MTIME_DELAY = 10
COMPRESS_OFFLINE = False
COMPRESS_OFFLINE_CONTEXT = {'STATIC_URL': '/static/'}
COMPRESS_OFFLINE_MANIFEST = 'manifest.json'
COMPRESS_OFFLINE_TIMEOUT = 31536000
COMPRESS_OUTPUT_DIR = 'CACHE'
COMPRESS_PARSER = 'compressor.parser.AutoSelectParser'
COMPRESS_PRECOMPILERS = "(('text/x-scss', 'sassc -t compressed {infile}
{outfile}'), ('text/x-sass', 'sassc -t compressed {infile}
{outfile}'))"
COMPRESS_REBUILD_TIMEOUT = 2592000
COMPRESS_ROOT = '/opt/mailman/web/static'
COMPRESS_STORAGE = 'compressor.storage.CompressorFileStorage'
COMPRESS_TEMPLATE_FILTER_CONTEXT = {'STATIC_URL': '/static/'}
COMPRESS_URL = '/static/'
COMPRESS_URL_PLACEHOLDER = '/__compressor_url_placeholder__/'
COMPRESS_VERBOSE = False
COMPRESS_YUGLIFY_BINARY = 'yuglify'
COMPRESS_YUGLIFY_CSS_ARGUMENTS = '--terminal'
COMPRESS_YUGLIFY_JS_ARGUMENTS = '--terminal'
COMPRESS_YUI_BINARY = 'java -jar yuicompressor.jar'
COMPRESS_YUI_CSS_ARGUMENTS = ''
COMPRESS_YUI_JS_ARGUMENTS = ''
CSRF_COOKIE_AGE = 31449600
CSRF_COOKIE_DOMAIN = None
CSRF_COOKIE_HTTPONLY = False
CSRF_COOKIE_NAME = 'csrftoken'
CSRF_COOKIE_PATH = '/'
CSRF_COOKIE_SAMESITE = 'Lax'
CSRF_COOKIE_SECURE = False
CSRF_FAILURE_VIEW = 'django.views.csrf.csrf_failure'
CSRF_HEADER_NAME = 'HTTP_X_CSRFTOKEN'
CSRF_TRUSTED_ORIGINS = []
CSRF_USE_SESSIONS = False
DATABASES = {'default': {'ENGINE':
'django.db.backends.postgresql_psycopg2', 'NAME': 'mailman', 'USER':
'mailman', 'PASSWORD': '********************', 'HOST': 'localhost',
'PORT': '5432', 'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True,
'CONN_MAX_AGE': 0, 'OPTIONS': {}, 'TIME_ZONE': None, 'TEST':
{'CHARSET': None, 'COLLATION': None, 'NAME': None, 'MIRROR': None}}}
DATABASE_ROUTERS = []
DATA_UPLOAD_MAX_MEMORY_SIZE = 2621440
DATA_UPLOAD_MAX_NUMBER_FIELDS = 1000
DATETIME_FORMAT = 'N j, Y, P'
DATETIME_INPUT_FORMATS = ['%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f',
'%Y-%m-%d %H:%M', '%Y-%m-%d', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y
%H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%Y', '%m/%d/%y %H:%M:%S',
'%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M', '%m/%d/%y']
DATE_FORMAT = 'N j, Y'
DATE_INPUT_FORMATS = ['%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', '%b %d %Y',
'%b %d, %Y', '%d %b %Y', '%d %b, %Y', '%B %d %Y', '%B %d, %Y', '%d %B
%Y', '%d %B, %Y']
DEBUG = False
DEBUG_PROPAGATE_EXCEPTIONS = False
DECIMAL_SEPARATOR = '.'
DEFAULT_CHARSET = 'utf-8'
DEFAULT_EXCEPTION_REPORTER_FILTER =
'django.views.debug.SafeExceptionReporterFilter'
DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
DEFAULT_FROM_EMAIL = 'mailman(a)libertyfp.org'
DEFAULT_INDEX_TABLESPACE = ''
DEFAULT_TABLESPACE = ''
DISALLOWED_USER_AGENTS = []
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'localhost'
EMAIL_HOST_PASSWORD = '********************'
EMAIL_HOST_USER = 'mailman(a)libertyfp.org'
EMAIL_PORT = 25
EMAIL_SSL_CERTFILE = None
EMAIL_SSL_KEYFILE = '********************'
EMAIL_SUBJECT_PREFIX = '[Django] '
EMAIL_TIMEOUT = None
EMAIL_USE_LOCALTIME = False
EMAIL_USE_SSL = False
EMAIL_USE_TLS = False
FILE_CHARSET = 'utf-8'
FILE_UPLOAD_DIRECTORY_PERMISSIONS = None
FILE_UPLOAD_HANDLERS =
['django.core.files.uploadhandler.MemoryFileUploadHandler',
'django.core.files.uploadhandler.TemporaryFileUploadHandler']
FILE_UPLOAD_MAX_MEMORY_SIZE = 2621440
FILE_UPLOAD_PERMISSIONS = 420
FILE_UPLOAD_TEMP_DIR = None
FILTER_VHOST = False
FIRST_DAY_OF_WEEK = 0
FIXTURE_DIRS = []
FORCE_SCRIPT_NAME = None
FORMAT_MODULE_PATH = None
FORM_RENDERER = 'django.forms.renderers.DjangoTemplates'
HAYSTACK_CONNECTIONS = {'default': {'ENGINE':
'haystack.backends.whoosh_backend.WhooshEngine', 'PATH':
'/opt/mailman/web/fulltext_index'}}
HYPERKITTY_ENABLE_GRAVATAR = True
IGNORABLE_404_URLS = []
INSTALLED_APPS = ['hyperkitty', 'postorius', 'django_mailman3',
'django.contrib.admin', 'django.contrib.auth',
'django.contrib.contenttypes', 'django.contrib.sessions',
'django.contrib.sites', 'django.contrib.messages',
'django.contrib.staticfiles', 'rest_framework', 'django_gravatar',
'compressor', 'haystack', 'django_extensions', 'django_q', 'allauth',
'allauth.account', 'allauth.socialaccount']
INTERNAL_IPS = []
LANGUAGES = [('af', 'Afrikaans'), ('ar', 'Arabic'), ('ast',
'Asturian'), ('az', 'Azerbaijani'), ('bg', 'Bulgarian'), ('be',
'Belarusian'), ('bn', 'Bengali'), ('br', 'Breton'), ('bs', 'Bosnian'),
('ca', 'Catalan'), ('cs', 'Czech'), ('cy', 'Welsh'), ('da', 'Danish'),
('de', 'German'), ('dsb', 'Lower Sorbian'), ('el', 'Greek'), ('en',
'English'), ('en-au', 'Australian English'), ('en-gb', 'British
English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('es-ar',
'Argentinian Spanish'), ('es-co', 'Colombian Spanish'), ('es-mx',
'Mexican Spanish'), ('es-ni', 'Nicaraguan Spanish'), ('es-ve',
'Venezuelan Spanish'), ('et', 'Estonian'), ('eu', 'Basque'), ('fa',
'Persian'), ('fi', 'Finnish'), ('fr', 'French'), ('fy', 'Frisian'),
('ga', 'Irish'), ('gd', 'Scottish Gaelic'), ('gl', 'Galician'), ('he',
'Hebrew'), ('hi', 'Hindi'), ('hr', 'Croatian'), ('hsb', 'Upper
Sorbian'), ('hu', 'Hungarian'), ('hy', 'Armenian'), ('ia',
'Interlingua'), ('id', 'Indonesian'), ('io', 'Ido'), ('is',
'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka',
'Georgian'), ('kab', 'Kabyle'), ('kk', 'Kazakh'), ('km', 'Khmer'),
('kn', 'Kannada'), ('ko', 'Korean'), ('lb', 'Luxembourgish'), ('lt',
'Lithuanian'), ('lv', 'Latvian'), ('mk', 'Macedonian'), ('ml',
'Malayalam'), ('mn', 'Mongolian'), ('mr', 'Marathi'), ('my',
'Burmese'), ('nb', 'Norwegian Bokmål'), ('ne', 'Nepali'), ('nl',
'Dutch'), ('nn', 'Norwegian Nynorsk'), ('os', 'Ossetic'), ('pa',
'Punjabi'), ('pl', 'Polish'), ('pt', 'Portuguese'), ('pt-br',
'Brazilian Portuguese'), ('ro', 'Romanian'), ('ru', 'Russian'), ('sk',
'Slovak'), ('sl', 'Slovenian'), ('sq', 'Albanian'), ('sr', 'Serbian'),
('sr-latn', 'Serbian Latin'), ('sv', 'Swedish'), ('sw', 'Swahili'),
('ta', 'Tamil'), ('te', 'Telugu'), ('th', 'Thai'), ('tr', 'Turkish'),
('tt', 'Tatar'), ('udm', 'Udmurt'), ('uk', 'Ukrainian'), ('ur',
'Urdu'), ('uz', 'Uzbek'), ('vi', 'Vietnamese'), ('zh-hans', 'Simplified
Chinese'), ('zh-hant', 'Traditional Chinese')]
LANGUAGES_BIDI = ['he', 'ar', 'fa', 'ur']
LANGUAGE_CODE = 'en-us'
LANGUAGE_COOKIE_AGE = None
LANGUAGE_COOKIE_DOMAIN = None
LANGUAGE_COOKIE_HTTPONLY = False
LANGUAGE_COOKIE_NAME = 'django_language'
LANGUAGE_COOKIE_PATH = '/'
LANGUAGE_COOKIE_SAMESITE = None
LANGUAGE_COOKIE_SECURE = False
LOCALE_PATHS = []
LOGGING = {'version': 1, 'disable_existing_loggers': False, 'filters':
{'require_debug_false': {'()': 'django.utils.log.RequireDebugFalse'}},
'handlers': {'mail_admins': {'level': 'ERROR', 'filters':
['require_debug_false'], 'class':
'django.utils.log.AdminEmailHandler'}, 'file': {'level': 'INFO',
'class': 'logging.handlers.WatchedFileHandler', 'filename':
'/opt/mailman/web/logs/mailmanweb.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'}}}
LOGGING_CONFIG = 'logging.config.dictConfig'
LOGIN_REDIRECT_URL = 'list_index'
LOGIN_URL = 'account_login'
LOGOUT_REDIRECT_URL = None
LOGOUT_URL = 'account_logout'
MAILMAN_ARCHIVER_FROM = "('127.0.0.1', '::1')"
MAILMAN_ARCHIVER_KEY = '********************'
MAILMAN_REST_API_PASS = '********************'
MAILMAN_REST_API_URL = '********************'
MAILMAN_REST_API_USER = '********************'
MANAGERS = []
MEDIA_ROOT = ''
MEDIA_URL = ''
MESSAGE_STORAGE =
'django.contrib.messages.storage.fallback.FallbackStorage'
MESSAGE_TAGS = {40: 'danger'}
MIDDLEWARE = "('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django_mailman3.middleware.TimezoneMiddleware',
'postorius.middleware.PostoriusMiddleware')"
MIGRATION_MODULES = {}
MONTH_DAY_FORMAT = 'F j'
NUMBER_GROUPING = 0
PASSWORD_HASHERS = '********************'
PASSWORD_RESET_TIMEOUT_DAYS = '********************'
POSTORIUS_TEMPLATE_BASE_URL = 'http://localhost:8000'
PREPEND_WWW = False
Q_CLUSTER = {'retry': 360, 'timeout': 300, 'save_limit': 100, 'orm':
'default'}
ROOT_URLCONF = 'mailman_web.urls'
SECRET_KEY = '********************'
SECURE_BROWSER_XSS_FILTER = False
SECURE_CONTENT_TYPE_NOSNIFF = True
SECURE_HSTS_INCLUDE_SUBDOMAINS = False
SECURE_HSTS_PRELOAD = False
SECURE_HSTS_SECONDS = 0
SECURE_PROXY_SSL_HEADER = None
SECURE_REDIRECT_EXEMPT = []
SECURE_REFERRER_POLICY = None
SECURE_SSL_HOST = None
SECURE_SSL_REDIRECT = False
SERVER_EMAIL = 'root(a)localhost.local'
SESSION_CACHE_ALIAS = 'default'
SESSION_COOKIE_AGE = 1209600
SESSION_COOKIE_DOMAIN = None
SESSION_COOKIE_HTTPONLY = True
SESSION_COOKIE_NAME = 'sessionid'
SESSION_COOKIE_PATH = '/'
SESSION_COOKIE_SAMESITE = 'Lax'
SESSION_COOKIE_SECURE = False
SESSION_ENGINE = 'django.contrib.sessions.backends.db'
SESSION_EXPIRE_AT_BROWSER_CLOSE = False
SESSION_FILE_PATH = None
SESSION_SAVE_EVERY_REQUEST = False
SESSION_SERIALIZER =
'django.contrib.sessions.serializers.PickleSerializer'
SETTINGS_MODULE = 'settings'
SHORT_DATETIME_FORMAT = 'm/d/Y P'
SHORT_DATE_FORMAT = 'm/d/Y'
SIGNING_BACKEND = 'django.core.signing.TimestampSigner'
SILENCED_SYSTEM_CHECKS = []
SITE_ID = 1
SOCIALACCOUNT_PROVIDERS = {'openid': {'SERVERS': [{'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'}}
STATICFILES_DIRS = '()'
STATICFILES_FINDERS =
"('django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'compressor.finders.CompressorFinder')"
STATICFILES_STORAGE =
'django.contrib.staticfiles.storage.StaticFilesStorage'
STATIC_ROOT = '/opt/mailman/web/static'
STATIC_URL = '/static/'
TEMPLATES = [{'BACKEND':
'django.template.backends.django.DjangoTemplates', 'DIRS': [],
'APP_DIRS': True, 'OPTIONS': {'context_processors':
['django.template.context_processors.debug',
'django.template.context_processors.i18n',
'django.template.context_processors.media',
'django.template.context_processors.static',
'django.template.context_processors.tz',
'django.template.context_processors.csrf',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'django_mailman3.context_processors.common',
'hyperkitty.context_processors.common',
'postorius.context_processors.postorius']}}]
TEST_NON_SERIALIZED_APPS = []
TEST_RUNNER = 'django.test.runner.DiscoverRunner'
THOUSAND_SEPARATOR = ','
TIME_FORMAT = 'P'
TIME_INPUT_FORMATS = ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_THOUSAND_SEPARATOR = False
USE_TZ = True
USE_X_FORWARDED_HOST = False
USE_X_FORWARDED_PORT = False
WSGI_APPLICATION = 'mailman_web.wsgi.application'
X_FRAME_OPTIONS = 'DENY'
YEAR_MONTH_FORMAT = 'F Y'
3 years, 3 months

[MM3-users] API errors making member changes to one list but not others
by Stephen Willey Mats Mats
We had an issue with the UI getting API timeouts for a single list for specific functions but not other lists or other functions. This started happening after we accidentally filled the disk partition used by most of the system including the database.
There was a single person testing at the time when the disk fullness happened and it was only the single list that got ‘damaged’. After disk cleanup and restarting the docker images the single list would give API errors ("HTTP Error 400: HTTPConnectionPool(host='mailman-web', port=8000): Read timed out. (read timeout=5)” ) on the screen and logged errors (below) when list members were either subscribed or removed.
The issue was repeatable in Postorius and did not ‘heal’. Oddly the issue was resolved by making seemingingly the same API calls from the command line via curl. Making the below call to add a member succeeded and fixed being able to add members in the UI. Similarly sending a DELETE cal from curl worked where unsubscribe requests from postorius (either mass removal or picking addresses from the list member and unsubscribing selected) failed. Again, the unsubscribe from the curl DELETE call ‘healed’ the list such that subsequent unsubscribes in Postorius worked.
curl --user user:password -X POST -d 'list_id=laura-test.mm3.aca-aws.s.uw.edu' -d 'subscriber=ssw(a)uw.edu' -d 'pre_verified=true' -d 'pre_confirmed=true' -d 'pre_approved=true' http://172.19.199.2:8001/3.1/members
We’re running the current rolling docker images (up to date as of 25Jan2021)
Obviously, people should run their servers better than letting disk partitions fill-up but it’s going to happen and mailman3 should do a better job of reporting errors and recovering when accidents happen.
thanks,
steve
I’ve included mailman.log lines from going to the mass subscribe
[26/Jan/2021:20:42:49 +0000] "GET /3.1/lists/laura-test.mm3.aca-aws.s.uw.edu HTTP/1.1" 200 434 "-" "GNU Mailman REST client v3.3.2"
[26/Jan/2021:20:42:49 +0000] "GET /3.1/lists/laura-test(a)mm3.aca-aws.s.uw.edu/requests/count?token_owner=moderator HTTP/1.1" 200 73 "-" "GNU Mailman REST client v3.3.2"
[26/Jan/2021:20:42:49 +0000] "GET /3.1/lists/laura-test(a)mm3.aca-aws.s.uw.edu/held/count HTTP/1.1" 200 73 "-" "GNU Mailman REST client v3.3.2"
[26/Jan/2021:20:43:01 +0000] "GET /3.1/lists/laura-test.mm3.aca-aws.s.uw.edu HTTP/1.1" 200 434 "-" "GNU Mailman REST client v3.3.2"
Jan 26 20:43:07 2021 (48) deque:
Traceback (most recent call last):
File "/usr/lib/python3.8/site-packages/urllib3/connectionpool.py", line 426, in _make_request
six.raise_from(e, None)
File "<string>", line 3, in raise_from
File "/usr/lib/python3.8/site-packages/urllib3/connectionpool.py", line 421, in _make_request
httplib_response = conn.getresponse()
File "/usr/lib/python3.8/http/client.py", line 1347, in getresponse
response.begin()
File "/usr/lib/python3.8/http/client.py", line 307, in begin
version, status, reason = self._read_status()
File "/usr/lib/python3.8/http/client.py", line 268, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "/usr/lib/python3.8/socket.py", line 669, in readinto
return self._sock.recv_into(b)
socket.timeout: timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.8/site-packages/requests/adapters.py", line 439, in send
resp = conn.urlopen(
File "/usr/lib/python3.8/site-packages/urllib3/connectionpool.py", line 724, in urlopen
retries = retries.increment(
File "/usr/lib/python3.8/site-packages/urllib3/util/retry.py", line 403, in increment
raise six.reraise(type(error), error, _stacktrace)
File "/usr/lib/python3.8/site-packages/urllib3/packages/six.py", line 735, in reraise
raise value
File "/usr/lib/python3.8/site-packages/urllib3/connectionpool.py", line 670, in urlopen
httplib_response = self._make_request(
File "/usr/lib/python3.8/site-packages/urllib3/connectionpool.py", line 428, in _make_request
self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
File "/usr/lib/python3.8/site-packages/urllib3/connectionpool.py", line 335, in _raise_timeout
raise ReadTimeoutError(
urllib3.exceptions.ReadTimeoutError: HTTPConnectionPool(host='mailman-web', port=8000): Read timed out. (read timeout=5)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.8/site-packages/mailman/app/workflow.py", line 69, in __next__
return step()
File "/usr/lib/python3.8/site-packages/mailman/app/subscriptions.py", line 343, in _step_do_subscription
self.member = self.mlist.subscribe(
File "/usr/lib/python3.8/site-packages/mailman/database/transaction.py", line 85, in wrapper
return function(args[0], config.db.store, *args[1:], **kws)
File "/usr/lib/python3.8/site-packages/mailman/model/mailinglist.py", line 507, in subscribe
notify(SubscriptionEvent(
File "/usr/lib/python3.8/site-packages/zope/event/__init__.py", line 32, in notify
subscriber(event)
File "/usr/lib/python3.8/site-packages/mailman/app/membership.py", line 176, in handle_SubscriptionEvent
send_welcome_message(mlist, member, member.preferred_language)
File "/usr/lib/python3.8/site-packages/mailman/app/notifications.py", line 51, in send_welcome_message
welcome_message = wrap(getUtility(ITemplateLoader).get(
File "/usr/lib/python3.8/site-packages/mailman/model/template.py", line 188, in get
contents = getUtility(ITemplateManager).get(
File "/usr/lib/python3.8/site-packages/mailman/database/transaction.py", line 85, in wrapper
return function(args[0], config.db.store, *args[1:], **kws)
File "/usr/lib/python3.8/site-packages/mailman/model/template.py", line 110, in get
contents = protocols.get(actual_uri, **auth)
File "/usr/lib/python3.8/site-packages/mailman/utilities/protocols.py", line 38, in get
response = requests.get(url, timeout=REQUEST_TIMEOUT, **kws)
File "/usr/lib/python3.8/site-packages/requests/api.py", line 76, in get
return request('get', url, params=params, **kwargs)
File "/usr/lib/python3.8/site-packages/requests/api.py", line 61, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/lib/python3.8/site-packages/requests/sessions.py", line 530, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python3.8/site-packages/requests/sessions.py", line 643, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python3.8/site-packages/requests/adapters.py", line 529, in send
raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPConnectionPool(host='mailman-web', port=8000): Read timed out. (read timeout=5)
[26/Jan/2021:20:43:07 +0000] "POST /3.1/members HTTP/1.1" 400 130 "-" "GNU Mailman REST client v3.3.2"
[26/Jan/2021:20:43:07 +0000] "GET /3.1/lists/laura-test(a)mm3.aca-aws.s.uw.edu/requests/count?token_owner=moderator HTTP/1.1" 200 73 "-" "GNU Mailman REST client v3.3.2"
[26/Jan/2021:20:43:07 +0000] "GET /3.1/lists/laura-test(a)mm3.aca-aws.s.uw.edu/held/count HTTP/1.1" 200 73 "-" "GNU Mailman REST client v3.3.2"
Then the results of a successful subscribe:
[26/Jan/2021:20:46:20 +0000] "GET /3.1/lists/list2.mm3.aca-aws.s.uw.edu HTTP/1.1" 200 388 "-" "GNU Mailman REST client v3.3.2"
[26/Jan/2021:20:46:20 +0000] "POST /3.1/members HTTP/1.1" 201 0 "-" "GNU Mailman REST client v3.3.2"
[26/Jan/2021:20:46:20 +0000] "GET /3.1/lists/list2(a)mm3.aca-aws.s.uw.edu/requests/count?token_owner=moderator HTTP/1.1" 200 73 "-" "GNU Mailman REST client v3.3.2"
[26/Jan/2021:20:46:20 +0000] "GET /3.1/lists/list2(a)mm3.aca-aws.s.uw.edu/held/count HTTP/1.1" 200 73 "-" "GNU Mailman REST client v3.3.2”
>
4 years, 2 months

[MM3-users] Fwd: [Django] ERROR (EXTERNAL IP): Internal Server Error: /mailman3/hyperkitty/api/mailman/archive
by Gordon Dickens
My mailman3 installation has now been up and running successfully for
several weeks without any issues and then the following error message
was emailed to me by my server.
What's up with this error message and what do I need to do?
Thanks,
Gordon
-------- Forwarded Message --------
Subject: [Django] ERROR (EXTERNAL IP): Internal Server Error:
/mailman3/hyperkitty/api/mailman/archive
Date: Fri, 20 Nov 2020 01:25:41 -0000
From: [1]root(a)host2.mailhub4u.com
To: [2]gordon(a)mailhub4u.com
Internal Server Error: /mailman3/hyperkitty/api/mailman/archive
OperationalError at /hyperkitty/api/mailman/archive
(1366, "Incorrect string value: '\\xF0\\x9F\\xA4\\xA3\\xF0\\x9F...' for
column `mailman3web`.`hyperkitty_email`.`content` at row 1")
Request Method: POST
Request URL:
[3]http://localhost/mailman3/hyperkitty/api/mailman/archive?key=0123456
789abcdef0123456789ABCDEF
Django Version: 1.11.29
Python Executable: /usr/bin/uwsgi-core
Python Version: 3.7.3
Python Path: ['.', '', '/usr/lib/python37.zip', '/usr/lib/python3.7',
'/usr/lib/python3.7/lib-dynload',
'/usr/local/lib/python3.7/dist-packages',
'/usr/lib/python3/dist-packages']
Server time: Fri, 20 Nov 2020 01:25:40 +0000
Installed Applications:
('hyperkitty',
'postorius',
'django_mailman3',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'django_gravatar',
'compressor',
'haystack',
'django_extensions',
'django_q',
'allauth',
'allauth.account',
'allauth.socialaccount')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django_mailman3.middleware.TimezoneMiddleware',
'postorius.middleware.PostoriusMiddleware')
Traceback:
File "/usr/lib/python3/dist-packages/django/db/backends/utils.py" in
execute
64. return self.cursor.execute(sql, params)
File "/usr/lib/python3/dist-packages/django/db/backends/mysql/base.py"
in execute
101. return self.cursor.execute(query, args)
File "/usr/lib/python3/dist-packages/MySQLdb/cursors.py" in execute
250. self.errorhandler(self, exc, value)
File "/usr/lib/python3/dist-packages/MySQLdb/connections.py" in
defaulterrorhandler
50. raise errorvalue
File "/usr/lib/python3/dist-packages/MySQLdb/cursors.py" in execute
247. res = self._query(query)
File "/usr/lib/python3/dist-packages/MySQLdb/cursors.py" in _query
411. rowcount = self._do_query(q)
File "/usr/lib/python3/dist-packages/MySQLdb/cursors.py" in _do_query
374. db.query(q)
File "/usr/lib/python3/dist-packages/MySQLdb/connections.py" in query
292. _mysql.connection.query(self, query)
The above exception ((1366, "Incorrect string value:
'\\xF0\\x9F\\xA4\\xA3\\xF0\\x9F...' for column
`mailman3web`.`hyperkitty_email`.`content` at row 1")) was the direct
cause of the following exception:
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/decorators/http.py"
in inner
40. return func(request, *args, **kwargs)
File "/usr/lib/python3/dist-packages/hyperkitty/views/mailman.py" in
_decorator
69. return func(request, *args, **kwargs)
File "/usr/lib/python3/dist-packages/django/views/decorators/csrf.py"
in wrapped_view
58. return view_func(*args, **kwargs)
File "/usr/lib/python3/dist-packages/hyperkitty/views/mailman.py" in
archive
115. add_to_list(mlist_fqdn, msg)
File "/usr/lib/python3/dist-packages/hyperkitty/lib/incoming.py" in
add_to_list
151. email.save()
File "/usr/lib/python3/dist-packages/django/db/models/base.py" in save
808. force_update=force_update, update_fields=update_fields)
File "/usr/lib/python3/dist-packages/django/db/models/base.py" in
save_base
838. updated = self._save_table(raw, cls, force_insert, force_update,
using, update_fields)
File "/usr/lib/python3/dist-packages/django/db/models/base.py" in
_save_table
924. result = self._do_insert(cls._base_manager, using, fields,
update_pk, raw)
File "/usr/lib/python3/dist-packages/django/db/models/base.py" in
_do_insert
963. using=using, raw=raw)
File "/usr/lib/python3/dist-packages/django/db/models/manager.py" in
manager_method
85. return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/usr/lib/python3/dist-packages/django/db/models/query.py" in
_insert
1079. return query.get_compiler(using=using).execute_sql(return_id)
File "/usr/lib/python3/dist-packages/django/db/models/sql/compiler.py"
in execute_sql
1112. cursor.execute(sql, params)
File "/usr/lib/python3/dist-packages/django/db/backends/utils.py" in
execute
64. return self.cursor.execute(sql, params)
File "/usr/lib/python3/dist-packages/django/db/utils.py" in __exit__
94. six.reraise(dj_exc_type, dj_exc_value, traceback)
File "/usr/lib/python3/dist-packages/django/utils/six.py" in reraise
685. raise value.with_traceback(tb)
File "/usr/lib/python3/dist-packages/django/db/backends/utils.py" in
execute
64. return self.cursor.execute(sql, params)
File "/usr/lib/python3/dist-packages/django/db/backends/mysql/base.py"
in execute
101. return self.cursor.execute(query, args)
File "/usr/lib/python3/dist-packages/MySQLdb/cursors.py" in execute
250. self.errorhandler(self, exc, value)
File "/usr/lib/python3/dist-packages/MySQLdb/connections.py" in
defaulterrorhandler
50. raise errorvalue
File "/usr/lib/python3/dist-packages/MySQLdb/cursors.py" in execute
247. res = self._query(query)
File "/usr/lib/python3/dist-packages/MySQLdb/cursors.py" in _query
411. rowcount = self._do_query(q)
File "/usr/lib/python3/dist-packages/MySQLdb/cursors.py" in _do_query
374. db.query(q)
File "/usr/lib/python3/dist-packages/MySQLdb/connections.py" in query
292. _mysql.connection.query(self, query)
Exception Type: OperationalError at /hyperkitty/api/mailman/archive
Exception Value: (1366, "Incorrect string value:
'\\xF0\\x9F\\xA4\\xA3\\xF0\\x9F...' for column
`mailman3web`.`hyperkitty_email`.`content` at row 1")
Request information:
USER: AnonymousUser
GET:
key = '0123456789abcdef0123456789ABCDEF'
POST:
mlist = '[4]members(a)georgiajets.org'
FILES:
message = <InMemoryUploadedFile: message.txt ()>
COOKIES: No cookie data
META:
CONTENT_LENGTH = '7720'
CONTENT_TYPE = 'multipart/form-data;
boundary=8da553dce5f76815f62f12a1b8c0efac'
CONTEXT_DOCUMENT_ROOT = '/var/www/html'
CONTEXT_PREFIX = ''
DOCUMENT_ROOT = '/var/www/html'
GATEWAY_INTERFACE = 'CGI/1.1'
HTTP_ACCEPT = '*/*'
HTTP_ACCEPT_ENCODING = 'gzip, deflate'
HTTP_CONNECTION = 'keep-alive'
HTTP_HOST = 'localhost'
HTTP_USER_AGENT = 'python-requests/2.21.0'
PATH = '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
PATH_INFO = '/hyperkitty/api/mailman/archive'
QUERY_STRING = 'key=0123456789abcdef0123456789ABCDEF'
REMOTE_ADDR = '127.0.0.1'
REMOTE_PORT = '53006'
REQUEST_METHOD = 'POST'
REQUEST_SCHEME = 'http'
REQUEST_URI =
'/mailman3/hyperkitty/api/mailman/archive?key=0123456789abcdef012345678
9ABCDEF'
SCRIPT_FILENAME =
'proxy:uwsgi://localhost//hyperkitty/api/mailman/archive'
SCRIPT_NAME = '/mailman3'
SERVER_ADDR = '127.0.0.1'
SERVER_ADMIN = 'webmaster@localhost'
SERVER_NAME = 'localhost'
SERVER_PORT = '80'
SERVER_PROTOCOL = 'HTTP/1.1'
SERVER_SIGNATURE = '<address>Apache/2.4.38 (Debian) Server at localhost
Port 80</address>\n'
SERVER_SOFTWARE = 'Apache/2.4.38 (Debian)'
uwsgi.core = 0
uwsgi.node = b'slc.mailhub4u.com'
uwsgi.version = b'2.0.18-debian'
wsgi.errors = <_io.TextIOWrapper name=2 mode='w' encoding='UTF-8'>
wsgi.file_wrapper = ''
wsgi.input = <uwsgi._Input object at 0x7f6a278df600>
wsgi.multiprocess = False
wsgi.multithread = True
wsgi.run_once = False
wsgi.url_scheme = 'http'
wsgi.version = '(1, 0)'
Settings:
Using settings module settings
ABSOLUTE_URL_OVERRIDES = {}
ACCOUNT_AUTHENTICATION_METHOD = 'username_email'
ACCOUNT_DEFAULT_HTTP_PROTOCOL = 'https'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
ACCOUNT_UNIQUE_EMAIL = True
ADMINS = "(('Mailman Suite Admin', '[5]gordon(a)mailhub4u.com'),)"
ALLOWED_HOSTS = ['*']
APPEND_SLASH = True
AUTHENTICATION_BACKENDS =
"('django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend')"
AUTH_PASSWORD_VALIDATORS = '********************'
AUTH_USER_MODEL = 'auth.User'
BASE_DIR = '/usr/share/mailman3-web'
CACHES = {'default': {'BACKEND':
'django.core.cache.backends.locmem.LocMemCache'}}
CACHE_MIDDLEWARE_ALIAS = 'default'
CACHE_MIDDLEWARE_KEY_PREFIX = '********************'
CACHE_MIDDLEWARE_SECONDS = 600
COMPRESS_CACHEABLE_PRECOMPILERS = '()'
COMPRESS_CACHE_BACKEND = 'default'
COMPRESS_CACHE_KEY_FUNCTION = '********************'
COMPRESS_CLEAN_CSS_ARGUMENTS = ''
COMPRESS_CLEAN_CSS_BINARY = 'cleancss'
COMPRESS_CLOSURE_COMPILER_ARGUMENTS = ''
COMPRESS_CLOSURE_COMPILER_BINARY = 'java -jar compiler.jar'
COMPRESS_CSS_COMPRESSOR = 'compressor.css.CssCompressor'
COMPRESS_CSS_FILTERS =
['compressor.filters.css_default.CssAbsoluteFilter']
COMPRESS_CSS_HASHING_METHOD = 'mtime'
COMPRESS_DATA_URI_MAX_SIZE = 1024
COMPRESS_DEBUG_TOGGLE = None
COMPRESS_ENABLED = True
COMPRESS_JINJA2_GET_ENVIRONMENT = <function
CompressorConf.JINJA2_GET_ENVIRONMENT at 0x7f6a2d586620>
COMPRESS_JS_COMPRESSOR = 'compressor.js.JsCompressor'
COMPRESS_JS_FILTERS = ['compressor.filters.jsmin.JSMinFilter']
COMPRESS_MINT_DELAY = 30
COMPRESS_MTIME_DELAY = 10
COMPRESS_OFFLINE = True
COMPRESS_OFFLINE_CONTEXT = {'STATIC_URL': '/mailman3/static/'}
COMPRESS_OFFLINE_MANIFEST = 'manifest.json'
COMPRESS_OFFLINE_TIMEOUT = 31536000
COMPRESS_OUTPUT_DIR = 'CACHE'
COMPRESS_PARSER = 'compressor.parser.AutoSelectParser'
COMPRESS_PRECOMPILERS = "(('text/less', 'lessc {infile} {outfile}'),
('text/x-scss', 'sassc -t compressed {infile} {outfile}'),
('text/x-sass', 'sassc -t compressed {infile} {outfile}'))"
COMPRESS_REBUILD_TIMEOUT = 2592000
COMPRESS_ROOT = '/var/lib/mailman3/web/static'
COMPRESS_STORAGE = 'compressor.storage.CompressorFileStorage'
COMPRESS_TEMPLATE_FILTER_CONTEXT = {'STATIC_URL': '/mailman3/static/'}
COMPRESS_URL = '/mailman3/static/'
COMPRESS_URL_PLACEHOLDER = '/__compressor_url_placeholder__/'
COMPRESS_VERBOSE = False
COMPRESS_YUGLIFY_BINARY = 'yuglify'
COMPRESS_YUGLIFY_CSS_ARGUMENTS = '--terminal'
COMPRESS_YUGLIFY_JS_ARGUMENTS = '--terminal'
COMPRESS_YUI_BINARY = 'java -jar yuicompressor.jar'
COMPRESS_YUI_CSS_ARGUMENTS = ''
COMPRESS_YUI_JS_ARGUMENTS = ''
CSRF_COOKIE_AGE = 31449600
CSRF_COOKIE_DOMAIN = None
CSRF_COOKIE_HTTPONLY = False
CSRF_COOKIE_NAME = 'csrftoken'
CSRF_COOKIE_PATH = '/'
CSRF_COOKIE_SECURE = False
CSRF_FAILURE_VIEW = 'django.views.csrf.csrf_failure'
CSRF_HEADER_NAME = 'HTTP_X_CSRFTOKEN'
CSRF_TRUSTED_ORIGINS = []
CSRF_USE_SESSIONS = False
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql', 'NAME':
'mailman3web', 'USER': 'mailman3web', 'PASSWORD':
'********************', 'HOST': 'localhost', 'PORT': '', 'OPTIONS':
{'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"},
'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0,
'TIME_ZONE': None, 'TEST': {'CHARSET': None, 'COLLATION': None, 'NAME':
None, 'MIRROR': None}}}
DATABASE_ROUTERS = []
DATA_UPLOAD_MAX_MEMORY_SIZE = 2621440
DATA_UPLOAD_MAX_NUMBER_FIELDS = 1000
DATETIME_FORMAT = 'N j, Y, P'
DATETIME_INPUT_FORMATS = ['%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f',
'%Y-%m-%d %H:%M', '%Y-%m-%d', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y
%H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%Y', '%m/%d/%y %H:%M:%S',
'%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M', '%m/%d/%y']
DATE_FORMAT = 'N j, Y'
DATE_INPUT_FORMATS = ['%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', '%b %d %Y',
'%b %d, %Y', '%d %b %Y', '%d %b, %Y', '%B %d %Y', '%B %d, %Y', '%d %B
%Y', '%d %B, %Y']
DEBUG = False
DEBUG_PROPAGATE_EXCEPTIONS = False
DECIMAL_SEPARATOR = '.'
DEFAULT_CHARSET = 'utf-8'
DEFAULT_CONTENT_TYPE = 'text/html'
DEFAULT_EXCEPTION_REPORTER_FILTER =
'django.views.debug.SafeExceptionReporterFilter'
DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
DEFAULT_FROM_EMAIL = '[6]postorius(a)host2.mailhub4u.com'
DEFAULT_INDEX_TABLESPACE = ''
DEFAULT_TABLESPACE = ''
DISALLOWED_USER_AGENTS = []
EMAILNAME = 'host2.mailhub4u.com'
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'localhost'
EMAIL_HOST_PASSWORD = '********************'
EMAIL_HOST_USER = ''
EMAIL_PORT = 25
EMAIL_SSL_CERTFILE = None
EMAIL_SSL_KEYFILE = '********************'
EMAIL_SUBJECT_PREFIX = '[Django] '
EMAIL_TIMEOUT = None
EMAIL_USE_LOCALTIME = False
EMAIL_USE_SSL = False
EMAIL_USE_TLS = False
FILE_CHARSET = 'utf-8'
FILE_UPLOAD_DIRECTORY_PERMISSIONS = None
FILE_UPLOAD_HANDLERS =
['django.core.files.uploadhandler.MemoryFileUploadHandler',
'django.core.files.uploadhandler.TemporaryFileUploadHandler']
FILE_UPLOAD_MAX_MEMORY_SIZE = 2621440
FILE_UPLOAD_PERMISSIONS = None
FILE_UPLOAD_TEMP_DIR = None
FILTER_VHOST = False
FIRST_DAY_OF_WEEK = 0
FIXTURE_DIRS = []
FORCE_SCRIPT_NAME = None
FORMAT_MODULE_PATH = None
FORM_RENDERER = 'django.forms.renderers.DjangoTemplates'
HAYSTACK_CONNECTIONS = {'default': {'ENGINE':
'haystack.backends.whoosh_backend.WhooshEngine', 'PATH':
'/var/lib/mailman3/web/fulltext_index'}}
HOSTNAME = 'localhost.local'
IGNORABLE_404_URLS = []
INSTALLED_APPS = "('hyperkitty', 'postorius', 'django_mailman3',
'django.contrib.admin', 'django.contrib.auth',
'django.contrib.contenttypes', 'django.contrib.sessions',
'django.contrib.sites', 'django.contrib.messages',
'django.contrib.staticfiles', 'rest_framework', 'django_gravatar',
'compressor', 'haystack', 'django_extensions', 'django_q', 'allauth',
'allauth.account', 'allauth.socialaccount')"
INTERNAL_IPS = []
LANGUAGES = [('af', 'Afrikaans'), ('ar', 'Arabic'), ('ast',
'Asturian'), ('az', 'Azerbaijani'), ('bg', 'Bulgarian'), ('be',
'Belarusian'), ('bn', 'Bengali'), ('br', 'Breton'), ('bs', 'Bosnian'),
('ca', 'Catalan'), ('cs', 'Czech'), ('cy', 'Welsh'), ('da', 'Danish'),
('de', 'German'), ('dsb', 'Lower Sorbian'), ('el', 'Greek'), ('en',
'English'), ('en-au', 'Australian English'), ('en-gb', 'British
English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('es-ar',
'Argentinian Spanish'), ('es-co', 'Colombian Spanish'), ('es-mx',
'Mexican Spanish'), ('es-ni', 'Nicaraguan Spanish'), ('es-ve',
'Venezuelan Spanish'), ('et', 'Estonian'), ('eu', 'Basque'), ('fa',
'Persian'), ('fi', 'Finnish'), ('fr', 'French'), ('fy', 'Frisian'),
('ga', 'Irish'), ('gd', 'Scottish Gaelic'), ('gl', 'Galician'), ('he',
'Hebrew'), ('hi', 'Hindi'), ('hr', 'Croatian'), ('hsb', 'Upper
Sorbian'), ('hu', 'Hungarian'), ('ia', 'Interlingua'), ('id',
'Indonesian'), ('io', 'Ido'), ('is', 'Icelandic'), ('it', 'Italian'),
('ja', 'Japanese'), ('ka', 'Georgian'), ('kk', 'Kazakh'), ('km',
'Khmer'), ('kn', 'Kannada'), ('ko', 'Korean'), ('lb', 'Luxembourgish'),
('lt', 'Lithuanian'), ('lv', 'Latvian'), ('mk', 'Macedonian'), ('ml',
'Malayalam'), ('mn', 'Mongolian'), ('mr', 'Marathi'), ('my',
'Burmese'), ('nb', 'Norwegian Bokmål'), ('ne', 'Nepali'), ('nl',
'Dutch'), ('nn', 'Norwegian Nynorsk'), ('os', 'Ossetic'), ('pa',
'Punjabi'), ('pl', 'Polish'), ('pt', 'Portuguese'), ('pt-br',
'Brazilian Portuguese'), ('ro', 'Romanian'), ('ru', 'Russian'), ('sk',
'Slovak'), ('sl', 'Slovenian'), ('sq', 'Albanian'), ('sr', 'Serbian'),
('sr-latn', 'Serbian Latin'), ('sv', 'Swedish'), ('sw', 'Swahili'),
('ta', 'Tamil'), ('te', 'Telugu'), ('th', 'Thai'), ('tr', 'Turkish'),
('tt', 'Tatar'), ('udm', 'Udmurt'), ('uk', 'Ukrainian'), ('ur',
'Urdu'), ('vi', 'Vietnamese'), ('zh-hans', 'Simplified Chinese'),
('zh-hant', 'Traditional Chinese')]
LANGUAGES_BIDI = ['he', 'ar', 'fa', 'ur']
LANGUAGE_CODE = 'en-us'
LANGUAGE_COOKIE_AGE = None
LANGUAGE_COOKIE_DOMAIN = None
LANGUAGE_COOKIE_NAME = 'django_language'
LANGUAGE_COOKIE_PATH = '/'
LOCALE_PATHS = []
LOGGING = {'version': 1, 'disable_existing_loggers': False, 'filters':
{'require_debug_false': {'()': 'django.utils.log.RequireDebugFalse'}},
'handlers': {'mail_admins': {'level': 'ERROR', 'filters':
['require_debug_false'], 'class':
'django.utils.log.AdminEmailHandler'}, 'file': {'level': 'INFO',
'class': 'logging.handlers.RotatingFileHandler', 'filename':
'/var/log/mailman3/web/mailman-web.log', 'formatter': 'verbose'},
'console': {'class': 'logging.StreamHandler', 'formatter': 'simple'}},
'loggers': {'django.request': {'handlers': ['mail_admins', 'file'],
'level': 'INFO', 'propagate': True}, 'django': {'handlers': ['file'],
'level': 'INFO', 'propagate': True}, 'hyperkitty': {'handlers':
['file'], 'level': 'INFO', 'propagate': True}, 'postorius':
{'handlers': ['file'], 'level': 'INFO', 'propagate': True}},
'formatters': {'verbose': {'format': '%(levelname)s %(asctime)s
%(process)d %(name)s %(message)s'}, 'simple': {'format': '%(levelname)s
%(message)s'}}}
LOGGING_CONFIG = 'logging.config.dictConfig'
LOGIN_REDIRECT_URL = 'list_index'
LOGIN_URL = 'account_login'
LOGOUT_REDIRECT_URL = None
LOGOUT_URL = 'account_logout'
MAILMAN_ARCHIVER_FROM = "('127.0.0.1', '::1')"
MAILMAN_ARCHIVER_KEY = '********************'
MAILMAN_REST_API_PASS = '********************'
MAILMAN_REST_API_URL = '********************'
MAILMAN_REST_API_USER = '********************'
MANAGERS = []
MEDIA_ROOT = ''
MEDIA_URL = ''
MESSAGE_STORAGE =
'django.contrib.messages.storage.fallback.FallbackStorage'
MESSAGE_TAGS = {40: 'danger'}
MIDDLEWARE = "('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django_mailman3.middleware.TimezoneMiddleware',
'postorius.middleware.PostoriusMiddleware')"
MIDDLEWARE_CLASSES = ['django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware']
MIGRATION_MODULES = {}
MONTH_DAY_FORMAT = 'F j'
NUMBER_GROUPING = 0
PASSWORD_HASHERS = '********************'
PASSWORD_RESET_TIMEOUT_DAYS = '********************'
POSTORIUS_TEMPLATE_BASE_URL = '[7]http://localhost/mailman3/'
PREPEND_WWW = False
Q_CLUSTER = {'timeout': 300, 'save_limit': 100, 'orm': 'default',
'poll': 5}
ROOT_URLCONF = 'urls'
SECRET_KEY = '********************'
SECURE_BROWSER_XSS_FILTER = False
SECURE_CONTENT_TYPE_NOSNIFF = False
SECURE_HSTS_INCLUDE_SUBDOMAINS = False
SECURE_HSTS_PRELOAD = False
SECURE_HSTS_SECONDS = 0
SECURE_PROXY_SSL_HEADER = None
SECURE_REDIRECT_EXEMPT = []
SECURE_SSL_HOST = None
SECURE_SSL_REDIRECT = False
SERVER_EMAIL = '[8]root(a)host2.mailhub4u.com'
SESSION_CACHE_ALIAS = 'default'
SESSION_COOKIE_AGE = 1209600
SESSION_COOKIE_DOMAIN = None
SESSION_COOKIE_HTTPONLY = True
SESSION_COOKIE_NAME = 'sessionid'
SESSION_COOKIE_PATH = '/'
SESSION_COOKIE_SECURE = False
SESSION_ENGINE = 'django.contrib.sessions.backends.db'
SESSION_EXPIRE_AT_BROWSER_CLOSE = False
SESSION_FILE_PATH = None
SESSION_SAVE_EVERY_REQUEST = False
SESSION_SERIALIZER =
'django.contrib.sessions.serializers.PickleSerializer'
SETTINGS_MODULE = 'settings'
SHORT_DATETIME_FORMAT = 'm/d/Y P'
SHORT_DATE_FORMAT = 'm/d/Y'
SIGNING_BACKEND = 'django.core.signing.TimestampSigner'
SILENCED_SYSTEM_CHECKS = []
SITE_ID = 1
SOCIALACCOUNT_PROVIDERS = {}
STATICFILES_DIRS = '()'
STATICFILES_FINDERS =
"('django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'compressor.finders.CompressorFinder')"
STATICFILES_STORAGE =
'django.contrib.staticfiles.storage.StaticFilesStorage'
STATIC_ROOT = '/var/lib/mailman3/web/static'
STATIC_URL = '/mailman3/static/'
TEMPLATES = [{'BACKEND':
'django.template.backends.django.DjangoTemplates', 'DIRS': [],
'APP_DIRS': True, 'OPTIONS': {'context_processors':
['django.template.context_processors.debug',
'django.template.context_processors.i18n',
'django.template.context_processors.media',
'django.template.context_processors.static',
'django.template.context_processors.tz',
'django.template.context_processors.csrf',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'django_mailman3.context_processors.common',
'hyperkitty.context_processors.common',
'postorius.context_processors.postorius']}}]
TEST_NON_SERIALIZED_APPS = []
TEST_RUNNER = 'django.test.runner.DiscoverRunner'
THOUSAND_SEPARATOR = ','
TIME_FORMAT = 'P'
TIME_INPUT_FORMATS = ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']
TIME_ZONE = 'UTC'
USE_ETAGS = False
USE_I18N = True
USE_L10N = True
USE_THOUSAND_SEPARATOR = False
USE_TZ = True
USE_X_FORWARDED_HOST = True
USE_X_FORWARDED_PORT = False
WSGI_APPLICATION = 'wsgi.application'
X_FRAME_OPTIONS = 'SAMEORIGIN'
YEAR_MONTH_FORMAT = 'F Y'
References
1. mailto:root@host2.mailhub4u.com
2. mailto:gordon@mailhub4u.com
3. http://localhost/mailman3/hyperkitty/api/mailman/archive?key=0123456789abcd…
4. mailto:members@georgiajets.org
5. mailto:gordon@mailhub4u.com
6. mailto:postorius@host2.mailhub4u.com
7. http://localhost/mailman3/
8. mailto:root@host2.mailhub4u.com
4 years, 5 months

[MM3-users] Re: mailman3-web generating huge amount of error logs
by Helio Loureiro
Hi,
Problem is that a new key is generated a every new error.
I modified the code to avoid spitting out useless traceback and just the
error. So now I'm getting the following errors:
Dec 22 09:04:17 new-server mailman-web[1800224]: 08:04:17 [Q] ERROR
Signature "fdXixpXSfciu4gjphwUla0onXXU" does not match
Dec 22 09:04:17 new-server mailman-web[1800224]: 08:04:17 [Q] ERROR
Signature "9g5m6Qk78mbL3OswswpSUJUeWCw" does not match
Dec 22 09:04:17 new-server mailman-web[1800224]: 08:04:17 [Q] ERROR
Signature "Q1c9eovmrTYeDGHuWa2p7i34jZ4" does not match
Dec 22 09:04:17 new-server mailman-web[1800224]: 08:04:17 [Q] ERROR
Signature "KoYIZSTkmQB7Vk_3MIq9C6-PJJk" does not match
Dec 22 09:04:17 new-server mailman-web[1800224]: 08:04:17 [Q] ERROR
Signature "VL58hQRLBRSKSpgmYlR0fvjYW9Y" does not match
Dec 22 09:04:17 new-server mailman-web[1800224]: 08:04:17 [Q] ERROR
Signature "qQ2juavOGPk517ps684XyUQpQLE" does not match
Dec 22 09:04:17 new-server mailman-web[1800224]: 08:04:17 [Q] ERROR
Signature "0A91A29gwFNpVt2gtf_Ambg7zoM" does not match
Dec 22 09:04:17 new-server mailman-web[1800224]: 08:04:17 [Q] ERROR
Signature "Gl2Lj6NpF5baUBpf9__WPFc9QWo" does not match
Dec 22 09:04:17 new-server mailman-web[1800224]: 08:04:17 [Q] ERROR
Signature "u8j_fIsw88KyDY2p4udb9q_5KmA" does not match
Dec 22 09:04:17 new-server mailman-web[1800224]: 08:04:17 [Q] ERROR
Signature "qB8IvTcEY6wvmJgQZ4FSK2GMy2I" does not match
Dec 22 09:04:17 new-server mailman-web[1800224]: 08:04:17 [Q] ERROR
Signature "q7rDtpXtZngbiT42w-Ik8GvCS3w" does not match
Dec 22 09:04:17 new-server mailman-web[1800224]: 08:04:17 [Q] ERROR
Signature "uBbY8NtBLWPezHhtWe1oF7TzMdE" does not match
Dec 22 09:04:17 new-server mailman-web[1800224]: 08:04:17 [Q] ERROR
Signature "zcGHnYVNi7JuSjNJNEuPpBvndhY" does not match
Dec 22 09:04:17 new-server mailman-web[1800224]: 08:04:17 [Q] ERROR
Signature "8UNKDnDHmZYikxtwcUYh8hjDxN4" does not match
Dec 22 09:04:17 new-server mailman-web[1800224]: 08:04:17 [Q] ERROR
Signature "fCr2C8fXzqAgtNdj0PpMe6YJIY0" does not match
Dec 22 09:04:17 new-server mailman-web[1800224]: 08:04:17 [Q] ERROR
Signature "A-JNtv1ZW0mwJoEtLDdr-X52zp0" does not match
Dec 22 09:04:17 new-server mailman-web[1800224]: 08:04:17 [Q] ERROR
Signature "Nh58QvmURlQ82PqDGyGeTsKtiWI" does not match
Dec 22 09:04:17 new-server mailman-web[1800224]: 08:04:17 [Q] ERROR
Signature "UvP_5rvCJZNOpiArJ3z-ih2z8K0" does not match
Dec 22 09:04:17 new-server mailman-web[1800224]: 08:04:17 [Q] ERROR
Signature "2GwhitCFNvS1q-gifFPu5Bjt4J4" does not match
Dec 22 09:04:17 new-server mailman-web[1800224]: 08:04:17 [Q] ERROR
Signature "k_pqIXJ5zADANk7jB2Z43u863f0" does not match
Dec 22 09:04:17 new-server mailman-web[1800224]: 08:04:17 [Q] ERROR
Signature "Kf3zRixcwuPW15XDOh2PPXGdySU" does not match
Dec 22 09:04:17 new-server mailman-web[1800224]: 08:04:17 [Q] ERROR
Signature "7MHQG7gxwe7eR5-brn8zBZV_G7o" does not match
Dec 22 09:04:17 new-server mailman-web[1800224]: 08:04:17 [Q] ERROR
Signature "cHis7qKhZUV-FsmyAlg-vUsp6ZA" does not match
Dec 22 09:04:17 new-server mailman-web[1800224]: 08:04:17 [Q] ERROR
Signature "TlCGkjglDuJ819T8GqolG7cJ4GA" does not match
Dec 22 09:04:17 new-server mailman-web[1800224]: 08:04:17 [Q] ERROR
Signature "q2wg_sia17u12o3j7v2v_UiWDc4" does not match
Dec 22 09:04:17 new-server mailman-web[1800224]: 08:04:17 [Q] ERROR
Signature "0Nqu2bc9lyUAzsQUOoJgRDv8m-g" does not match
Dec 22 09:04:17 new-server mailman-web[1800224]: 08:04:17 [Q] ERROR
Signature "tp_oHAVkqHhY2O2JBZPWeBOqQWc" does not match
Dec 22 09:04:17 new-server mailman-web[1800224]: 08:04:17 [Q] ERROR
Signature "bb4HX9pGamivQQOPLQ6QJg5kvwA" does not match
Dec 22 09:04:17 new-server mailman-web[1800224]: 08:04:17 [Q] ERROR
Signature "CusRv5RY6kEVpdpxEdYo7XSU3ak" does not match
Dec 22 09:04:17 new-server mailman-web[1800224]: 08:04:17 [Q] ERROR
Signature "bO6IKT0HcDy7plgYi14pVdP53oc" does not match
So it keeps trying new signatures over and over.
And it is defined on configuration.
root@new-server /e/mailman3# grep -i secret_key * | sed 's/=.*/=/g'
mailman-web.py.old:SECRET_KEY =
settings.py:SECRET_KEY =
And my service seems to be configured accordingly.
root@new-server /e/mailman3# systemctl status mailman3-qcluster.service |
sed "s/seliius26224/new-server/g"
* mailman3-qcluster.service
Loaded: loaded (/etc/systemd/system/mailman3-qcluster.service;
enabled; vendor preset: enabled)
Active: active (running) since Fri 2023-12-22 09:02:10 CET; 6min ago
Main PID: 1800215 (mailman-web)
Tasks: 6 (limit: 38470)
Memory: 91.5M
CPU: 3min 26.305s
CGroup: /system.slice/mailman3-qcluster.service
|-1800215 /local/mailman/venv/bin/python3
/local/mailman/venv/bin/mailman-web qcluster --pythonpath /etc/mailman3
--settings settings
|-1800220 /local/mailman/venv/bin/python3
/local/mailman/venv/bin/mailman-web qcluster --pythonpath /etc/mailman3
--settings settings
|-1800221 /local/mailman/venv/bin/python3
/local/mailman/venv/bin/mailman-web qcluster --pythonpath /etc/mailman3
--settings settings
|-1800222 /local/mailman/venv/bin/python3
/local/mailman/venv/bin/mailman-web qcluster --pythonpath /etc/mailman3
--settings settings
|-1800223 /local/mailman/venv/bin/python3
/local/mailman/venv/bin/mailman-web qcluster --pythonpath /etc/mailman3
--settings settings
`-1800224 /local/mailman/venv/bin/python3
/local/mailman/venv/bin/mailman-web qcluster --pythonpath /etc/mailman3
--settings settings
Dec 22 09:08:24 new-server mailman-web[1800224]: 08:08:24 [Q] ERROR
Signature "IbuTFzo_n04AcuaIFqXnRJNTP5E" does not match
Dec 22 09:08:24 new-server mailman-web[1800224]: 08:08:24 [Q] ERROR
Signature "JnIwysBEN7FGpP8mdfLTn5Xygf0" does not match
Dec 22 09:08:24 new-server mailman-web[1800224]: 08:08:24 [Q] ERROR
Signature "5Rp0Ek9IfWFxH4N-ThRcAZ_dDtc" does not match
Dec 22 09:08:24 new-server mailman-web[1800224]: 08:08:24 [Q] ERROR
Signature "iMYhPJO1MA0bIadkpgfh00aB_VI" does not match
Dec 22 09:08:24 new-server mailman-web[1800224]: 08:08:24 [Q] ERROR
Signature "7_CVN_Ndc8i0ZgQB5GaS_HLGPfg" does not match
Dec 22 09:08:24 new-server mailman-web[1800224]: 08:08:24 [Q] ERROR
Signature "dNPbEB4qXFoWrtrK11uGUSgKd4c" does not match
Dec 22 09:08:24 new-server mailman-web[1800224]: 08:08:24 [Q] ERROR
Signature "uony7Mi0FhgN3ilDeK10LmwQhHM" does not match
Dec 22 09:08:24 new-server mailman-web[1800224]: 08:08:24 [Q] ERROR
Signature "gTyFJoM6m7hXKJbc3eHaLnjpjnk" does not match
Dec 22 09:08:24 new-server mailman-web[1800224]: 08:08:24 [Q] ERROR
Signature "RFjhw57wRhEbFruJjuYdtEq6tFY" does not match
Dec 22 09:08:24 new-server mailman-web[1800224]: 08:08:24 [Q] ERROR
Signature "YGD5-07tgfeRMAypadJYCfuka54" does not match
Dec 22 09:08:24 new-server mailman-web[1800224]: 08:08:24 [Q] ERROR
Signature "QmyVclAjPB4kJU5AaXgyYV27L3w" does not match
Best Regards,
Helio Loureiro
https://helio.loureiro.eng.br
https://github.com/helioloureiro
https://mastodon.social/@helioloureiro
On Thu, 21 Dec 2023 at 09:03, Stephen J. Turnbull <
turnbull.stephen.fw(a)u.tsukuba.ac.jp> wrote:
> Helio Loureiro writes:
>
> > line 55, in unsign\n raise BadSignature(\'Signature "%s" does not
> > match\' % sig)\ndjango.core.signing.BadSignature: Signature
> > "ofwl5GkP2_1nDnfM8-vAjAwl_Ss" does not match\n',)
>
> I've never heard of this one. Apparently somewhere there is a secret
> key that is configured to "ofwl5GkP2_1nDnfM8-vAjAwl_Ss" but should be
> something else.
>
> My best guess is that this is the SECRET_KEY in settings.py, and
> probably there is some data leftover from before that was signed with
> the key above but SECRET_KEY in settings.py is still
> "MyVerrySecretKey". Or it could be the other way around.
>
> Don't know what to do about it though.
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> Archived at:
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
>
> This message sent to helio(a)loureiro.eng.br
>
1 year, 4 months

[MM3-users] Re: Mailman3 without Hyperkitty in docker
by Danil Smirnov
Hi Abhilash,
Thank you very much - the previous error is fixed now.
But I have another one now, which causes the same 500 Server Error:
bash-4.3# cat /opt/mailman-web-data/logs/uwsgi-error.log
*** Starting uWSGI 2.0.18 (64bit) on [Fri Mar 1 05:42:09 2019] ***
compiled with version: 6.3.0 on 01 March 2019 01:52:42
os: Linux-3.10.0-693.11.1.el7.x86_64 #1 SMP Mon Dec 4 23:52:40 UTC 2017
nodename: mailman-web
machine: x86_64
clock source: unix
detected number of CPU cores: 2
current working directory: /opt/mailman-web
detected binary path: /usr/local/bin/uwsgi
!!! no internal routing support, rebuild with pcre support !!!
setgid() to 101
setuid() to 100
chdir() to /opt/mailman-web
your memory page size is 4096 bytes
detected max file descriptor number: 1048576
building mime-types dictionary from file /etc/mime.types...1168 entry found
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
uwsgi socket 0 bound to TCP address 0.0.0.0:8080 fd 8
uwsgi socket 1 bound to TCP address 0.0.0.0:8000 fd 9
Python version: 3.6.8 (default, Jan 30 2019, 23:58:16) [GCC 6.3.0]
Python main interpreter initialized at 0x55a2df7f57e0
python threads support enabled
your server socket listen backlog is limited to 100 connections
your mercy for graceful operations on workers is 60 seconds
mapped 166752 bytes (162 KB) for 2 cores
*** Operational MODE: threaded ***
Traceback (most recent call last):
File
"/usr/local/lib/python3.6/site-packages/django/utils/module_loading.py",
line 20, in import_string
return getattr(module, class_name)
AttributeError: module 'django.contrib.auth.middleware' has no attribute
'SessionAuthenticationMiddleware'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "wsgi.py", line 38, in <module>
application = get_wsgi_application()
File "/usr/local/lib/python3.6/site-packages/django/core/wsgi.py", line
13, in get_wsgi_application
return WSGIHandler()
File
"/usr/local/lib/python3.6/site-packages/django/core/handlers/wsgi.py", line
136, in __init__
self.load_middleware()
File
"/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line
34, in load_middleware
middleware = import_string(middleware_path)
File
"/usr/local/lib/python3.6/site-packages/django/utils/module_loading.py",
line 24, in import_string
) from err
ImportError: Module "django.contrib.auth.middleware" does not define a
"SessionAuthenticationMiddleware" attribute/class
unable to load app 0 (mountpoint='') (callable not found or import error)
*** no app loaded. going in full dynamic mode ***
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI master process (pid: 1)
spawned uWSGI worker 1 (pid: 37, cores: 2)
--- no python application found, check your startup logs for errors ---
--- no python application found, check your startup logs for errors ---
--- no python application found, check your startup logs for errors ---
--- no python application found, check your startup logs for errors ---
--- no python application found, check your startup logs for errors ---
--- no python application found, check your startup logs for errors ---
--- no python application found, check your startup logs for errors ---
--- no python application found, check your startup logs for errors ---
--- no python application found, check your startup logs for errors ---
--- no python application found, check your startup logs for errors ---
--- no python application found, check your startup logs for errors ---
--- no python application found, check your startup logs for errors ---
As per my investigation, this error possibly caused by Django upgrade:
*The SessionAuthenticationMiddleware class is removed. It provided no
functionality since session authentication is unconditionally enabled in
Django 1.10.*
See https://docs.djangoproject.com/en/2.0/releases/2.0/
After I've removed the line
https://github.com/maxking/docker-mailman/blob/master/postorius/mailman-web…
from settings.py, the container is finally working.
I've placed PR in github:
https://github.com/maxking/docker-mailman/pull/314
Thank you for your help.
Danil
пт, 1 мар. 2019 г. в 04:33, Abhilash Raj <maxking(a)asynchronous.in>:
>
>
> On Thu, Feb 28, 2019, at 5:19 PM, Abhilash Raj wrote:
> > On February 27, 2019 11:53:34 PM PST, Danil Smirnov <danil(a)smirnov.la>
> wrote:
> > >Hi Mark,
> > >
> > >Actually all this stuff happens inside the container after it's started
> > >and
> > >initialized without errors. I didn't amend the image anyhow.
> > >
> > >Also I have the configuration based on docker-compose.yaml provided in
> > >the
> > >repository which works just fine for mailman-web image.
> > >
> > >The very same config with postorius image (+ UWSGI_STATIC_MAP param)
> > >fails
> > >with 500 error...
> > >
> > >Now answering your questions:
> > >
> > >ср, 27 февр. 2019 г., 22:56 Mark Sapiro <mark(a)msapiro.net>:
> > >
> > >> do you have django-q in INSTALLED_APPS in your Django settings and
> > >what
> > >> is set for Q_CLUSTER?
> > >>
> > >
> > >I've checked settings.py inside the container and I haven't found any
> > >of
> > >the mentioned configurations there.
> > >
> > >Does the manage.py that's being run here point to the right
> > >settings.py?
> > >>
> > >
> > >No clue.
> > >
> > >Also I wonder why we have some Hyperkitty-related cronjobs in non-HK
> > >configured image?
> > >
> > >
> https://github.com/maxking/docker-mailman/blob/master/postorius/mailman-web…
> >
> > Because I am a dum dum ;-)
> >
> > Will work on removing those crons and stuff. Would be nice if you
> > opened an issue on Github so that I don't forget.
>
> Should now be fixed in the latest image.
>
> >
> > >Danil
> > >
> > >
> > >
> > >> --
> > >> Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
> > >> San Francisco Bay Area, California better use your sense - B.
> > >Dylan
> > >> _______________________________________________
> > >> Mailman-users mailing list -- mailman-users(a)mailman3.org
> > >> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> > >> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> > >>
> > >_______________________________________________
> > >Mailman-users mailing list -- mailman-users(a)mailman3.org
> > >To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> > >https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> >
> >
> > --
> > Sent from my Android device with K-9 Mail. Please excuse my brevity.
>
> --
> thanks,
> Abhilash Raj (maxking)
>
6 years, 1 month

[MM3-users] Problem getting Mailman3 to work with Ubuntu 24.04.1 LTS
by sebensteg@cod.edu
Hello everyone,
We have been using Mailman3 for over a year and half. We upgraded from Ubuntu 22.04.5, where it was working fine, to Ubuntu 22.04.1. Since then, mailman3 won’t work. When we tried to start it immediately after the upgrade, we got this error:
024-09-12T23:08:04.322353+00:00 weather1 systemd[1]: Starting mailman3.service - GNU Mailing List Manager...
2024-09-12T23:08:04.935569+00:00 weather1 mailman[23628]: SystemError: type psycopg2.extensions.ReplicationConnection has the Py_TPFLAGS_HAVE_GC flag but has no traverse function
2024-09-12T23:08:04.942784+00:00 weather1 mailman[23628]: The above exception was the direct cause of the following exception:
2024-09-12T23:08:04.942869+00:00 weather1 mailman[23628]: Traceback (most recent call last):
2024-09-12T23:08:04.942938+00:00 weather1 mailman[23628]: File "/opt/mailman/venv/bin/mailman", line 8, in <module>
2024-09-12T23:08:04.943001+00:00 weather1 mailman[23628]: sys.exit(main())
2024-09-12T23:08:04.943123+00:00 weather1 mailman[23628]: ^^^^^^
2024-09-12T23:08:04.943188+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/click/core.py", line 1157, in __call__
2024-09-12T23:08:04.943242+00:00 weather1 mailman[23628]: return self.main(*args, **kwargs)
2024-09-12T23:08:04.943284+00:00 weather1 mailman[23628]: ^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-09-12T23:08:04.943325+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/click/core.py", line 1077, in main
2024-09-12T23:08:04.943449+00:00 weather1 mailman[23628]: with self.make_context(prog_name, args, **extra) as ctx:
2024-09-12T23:08:04.943508+00:00 weather1 mailman[23628]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-09-12T23:08:04.943553+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/click/core.py", line 943, in make_context
2024-09-12T23:08:04.943594+00:00 weather1 mailman[23628]: self.parse_args(ctx, args)
2024-09-12T23:08:04.943753+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/click/core.py", line 1644, in parse_args
2024-09-12T23:08:04.943799+00:00 weather1 mailman[23628]: rest = super().parse_args(ctx, args)
2024-09-12T23:08:04.943867+00:00 weather1 mailman[23628]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-09-12T23:08:04.943911+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/click/core.py", line 1408, in parse_args
2024-09-12T23:08:04.943952+00:00 weather1 mailman[23628]: value, args = param.handle_parse_result(ctx, opts, args)
2024-09-12T23:08:04.944001+00:00 weather1 mailman[23628]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-09-12T23:08:04.944043+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/click/core.py", line 2400, in handle_parse_result
2024-09-12T23:08:04.944085+00:00 weather1 mailman[23628]: value = self.process_value(ctx, value)
2024-09-12T23:08:04.944127+00:00 weather1 mailman[23628]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-09-12T23:08:04.944182+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/click/core.py", line 2362, in process_value
2024-09-12T23:08:04.944249+00:00 weather1 mailman[23628]: value = self.callback(ctx, self, value)
2024-09-12T23:08:04.944293+00:00 weather1 mailman[23628]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-09-12T23:08:04.944335+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/mailman/bin/mailman.py", line 95, in initialize_config
2024-09-12T23:08:04.944376+00:00 weather1 mailman[23628]: initialize(value)
2024-09-12T23:08:04.944419+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/mailman/core/initialize.py", line 229, in initialize
2024-09-12T23:08:04.944460+00:00 weather1 mailman[23628]: initialize_2(propagate_logs=propagate_logs)
2024-09-12T23:08:04.944518+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/mailman/core/initialize.py", line 187, in initialize_2
2024-09-12T23:08:04.944561+00:00 weather1 mailman[23628]: config.db = getUtility(IDatabaseFactory, utility_name).create()
2024-09-12T23:08:04.944603+00:00 weather1 mailman[23628]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-09-12T23:08:04.944708+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/mailman/database/factory.py", line 57, in create
2024-09-12T23:08:04.944769+00:00 weather1 mailman[23628]: database.initialize()
2024-09-12T23:08:04.944856+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/mailman/database/base.py", line 117, in initialize
2024-09-12T23:08:04.944899+00:00 weather1 mailman[23628]: self.engine = create_engine(
2024-09-12T23:08:04.944941+00:00 weather1 mailman[23628]: ^^^^^^^^^^^^^^
2024-09-12T23:08:04.944982+00:00 weather1 mailman[23628]: File "<string>", line 2, in create_engine
2024-09-12T23:08:04.945025+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/sqlalchemy/util/deprecations.py", line 281, in warned
2024-09-12T23:08:04.945070+00:00 weather1 mailman[23628]: return fn(*args, **kwargs) # type: ignore[no-any-return]
2024-09-12T23:08:04.945112+00:00 weather1 mailman[23628]: ^^^^^^^^^^^^^^^^^^^
2024-09-12T23:08:04.945165+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/sqlalchemy/engine/create.py", line 599, in create_engine
2024-09-12T23:08:04.945208+00:00 weather1 mailman[23628]: dbapi = dbapi_meth(**dbapi_args)
2024-09-12T23:08:04.945249+00:00 weather1 mailman[23628]: ^^^^^^^^^^^^^^^^^^^^^^^^
2024-09-12T23:08:04.945291+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/psycopg2.py", line 690, in import_dbapi
2024-09-12T23:08:04.945332+00:00 weather1 mailman[23628]: import psycopg2
2024-09-12T23:08:04.945374+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/psycopg2/__init__.py", line 51, in <module>
2024-09-12T23:08:04.945425+00:00 weather1 mailman[23628]: from psycopg2._psycopg import ( # noqa
2024-09-12T23:08:04.945478+00:00 weather1 mailman[23628]: SystemError: initialization of _psycopg raised unreported exception
2024-09-12T23:08:05.071429+00:00 weather1 systemd[1]: mailman3.service: Control process exited, code=exited, status=1/FAILURE
2024-09-12T23:08:05.071768+00:00 weather1 systemd[1]: mailman3.service: Failed with result 'exit-code'.
2024-09-12T23:08:05.072429+00:00 weather1 systemd[1]: Failed to start mailman3.service - GNU Mailing List Manager.
So, ultimately, what we decided to do was reinstall it. But the compilation fails when it tries to make a venv (virtual environment) with this error:
2024-09-12T23:08:04.322353+00:00 weather1 systemd[1]: Starting mailman3.service - GNU Mailing List Manager...
2024-09-12T23:08:04.935569+00:00 weather1 mailman[23628]: SystemError: type psycopg2.extensions.ReplicationConnection has the Py_TPFLAGS_HAVE_GC flag but has no traverse function
2024-09-12T23:08:04.942784+00:00 weather1 mailman[23628]: The above exception was the direct cause of the following exception:
2024-09-12T23:08:04.942869+00:00 weather1 mailman[23628]: Traceback (most recent call last):
2024-09-12T23:08:04.942938+00:00 weather1 mailman[23628]: File "/opt/mailman/venv/bin/mailman", line 8, in <module>
2024-09-12T23:08:04.943001+00:00 weather1 mailman[23628]: sys.exit(main())
2024-09-12T23:08:04.943123+00:00 weather1 mailman[23628]: ^^^^^^
2024-09-12T23:08:04.943188+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/click/core.py", line 1157, in __call__
2024-09-12T23:08:04.943242+00:00 weather1 mailman[23628]: return self.main(*args, **kwargs)
2024-09-12T23:08:04.943284+00:00 weather1 mailman[23628]: ^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-09-12T23:08:04.943325+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/click/core.py", line 1077, in main
2024-09-12T23:08:04.943449+00:00 weather1 mailman[23628]: with self.make_context(prog_name, args, **extra) as ctx:
2024-09-12T23:08:04.943508+00:00 weather1 mailman[23628]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-09-12T23:08:04.943553+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/click/core.py", line 943, in make_context
2024-09-12T23:08:04.943594+00:00 weather1 mailman[23628]: self.parse_args(ctx, args)
2024-09-12T23:08:04.943753+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/click/core.py", line 1644, in parse_args
2024-09-12T23:08:04.943799+00:00 weather1 mailman[23628]: rest = super().parse_args(ctx, args)
2024-09-12T23:08:04.943867+00:00 weather1 mailman[23628]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-09-12T23:08:04.943911+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/click/core.py", line 1408, in parse_args
2024-09-12T23:08:04.943952+00:00 weather1 mailman[23628]: value, args = param.handle_parse_result(ctx, opts, args)
2024-09-12T23:08:04.944001+00:00 weather1 mailman[23628]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-09-12T23:08:04.944043+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/click/core.py", line 2400, in handle_parse_result
2024-09-12T23:08:04.944085+00:00 weather1 mailman[23628]: value = self.process_value(ctx, value)
2024-09-12T23:08:04.944127+00:00 weather1 mailman[23628]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-09-12T23:08:04.944182+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/click/core.py", line 2362, in process_value
2024-09-12T23:08:04.944249+00:00 weather1 mailman[23628]: value = self.callback(ctx, self, value)
2024-09-12T23:08:04.944293+00:00 weather1 mailman[23628]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2024-09-12T23:08:04.944335+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/mailman/bin/mailman.py", line 95, in initialize_config
2024-09-12T23:08:04.944376+00:00 weather1 mailman[23628]: initialize(value)
2024-09-12T23:08:04.944419+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/mailman/core/initialize.py", line 229, in initialize
2024-09-12T23:08:04.944460+00:00 weather1 mailman[23628]: initialize_2(propagate_logs=propagate_logs)
2024-09-12T23:08:04.944518+00:00 weather1 mailman[23628]: File "/home/mailman/venv/lib/python3.12/site-packages/mailman/core/initialize.py", line 187, in initialize_2
2024-09-12T23:08:04.944561+00:00 weather1 mailman[23628]: config.db = getUtility(IDatabaseFactory, utility_name).create()
But yet, we have this installed:
venv mailman@weather1:~$ pip install psycopg2-binary
Requirement already satisfied: psycopg2-binary in ./venv/lib/python3.12/site-packages (2.8.6)
Any advice on how to get this working again would be GREATLY appreciated!
Gilbert Sebenste
Meteorology Support Analyst
College of DuPage
7 months, 1 week

[MM3-users] Re: Hipperkitty failing to archive messages in a list
by Guillermo Hernandez (Oldno7)
On 4/1/22 12:27, Guillermo Hernandez (Oldno7) via Mailman-users wrote:
> First of all, best wishes and Happy New Year for everybody.
>
> Two days ago I had to reinstall all mailman3 related apps in a mailman
> 3 server (I tried to upgrade just hipperkitty, but it went bad). At
> first, all seemed running as before, but I just noted that the
> messages are not being archived.
I've found some information that can be related to the problem I had:
In https://docs.mailman3.org/projects/hyperkitty/en/latest/news.html yo
can see that in the security notes for 1.3.5
"Pass the secret archiver key in a HTTP Authorization header instead of
a GET query parameter so it doesn’t appear in logs. (CVE-2021-35058,
Closes #387)"
As the lack of any clue persists on how to solve the problem, I've just
reproduced step by step upgrade process.
I've just executed a (being "mailman3" the user configured for all of this)
pip install --upgrade --force-reinstall --no-deps --no-cache-dir
django-mailman3 mailman mailman-hyperkitty mailmanclient postorius
django hyperkitty
su -m mailman3 -c "python3 manage.py collectstatic"
su -m mailman3 -c "python3 manage.py migrate"
In this last point I've received some warnings of this kind:
*-*-*-*-*-*-*
WARNINGS:
account.EmailAddress: (models.W042) Auto-created primary key used when
not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the
AccountConfig.default_auto_field attribute to point to a subclass of
AutoField, e.g. 'django.db.models.BigAutoField'.
account.EmailConfirmation: (models.W042) Auto-created primary key used
when not defining a primary key type, by default
'django.db.models.AutoField'.
...
HINT: Configure the DEFAULT_AUTO_FIELD setting or the
SocialAccountConfig.default_auto_field attribute to point to a subclass
of AutoField, e.g. 'django.db.models.BigAutoField'.
Operations to perform:
Apply all migrations: account, admin, auth, contenttypes,
django_mailman3, django_q, hyperkitty, postorius, sessions, sites,
socialaccount
Running migrations:
No migrations to apply.
Your models in app(s): 'postorius' have changes that are not yet
reflected in a migration, and so won't be applied.
Run 'manage.py makemigrations' to make new migrations, and then
re-run 'manage.py migrate' to apply them.
*-*-*-*-*-*-*
Running a 'su -m mailman3 -c "python3 manage.py makemigrations" shows
the same warning listed before and some new errors:
*-*-*-*-*-*-*
Migrations for 'postorius':
/usr/local/lib/python3.7/site-packages/postorius/migrations/0017_alter_emailtemplate_name.py
- Alter field name on emailtemplate
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File
"/usr/local/lib/python3.7/site-packages/django/core/management/__init__.py",
line 419, in execute_from_command_line
utility.execute()
File
"/usr/local/lib/python3.7/site-packages/django/core/management/__init__.py",
line 413, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File
"/usr/local/lib/python3.7/site-packages/django/core/management/base.py",
line 354, in run_from_argv
self.execute(*args, **cmd_options)
File
"/usr/local/lib/python3.7/site-packages/django/core/management/base.py",
line 398, in execute
output = self.handle(*args, **options)
File
"/usr/local/lib/python3.7/site-packages/django/core/management/base.py",
line 89, in wrapped
res = handle_func(*args, **kwargs)
File
"/usr/local/lib/python3.7/site-packages/django/core/management/commands/makemigrations.py",
line 190, in handle
self.write_migration_files(changes)
File
"/usr/local/lib/python3.7/site-packages/django/core/management/commands/makemigrations.py",
line 228, in write_migration_files
with open(writer.path, "w", encoding='utf-8') as fh:
PermissionError: [Errno 13] Permission denied:
'/usr/local/lib/python3.7/site-packages/postorius/migrations/0017_alter_emailtemplate_name.py'
*-*-*-*-*-*-*
The file
'/usr/local/lib/python3.7/site-packages/postorius/migrations/0017_alter_emailtemplate_name.py'
does not exist at all
Despite the error, I did a 'su -m mailman3 -c "python3 manage.py
compress"' and the subsequent "django-admin compilemessages" in
/usr/local/lib/python3.7/site-packages/postorius, ../hyperkitty and
../django_mailman3
And the log continues showing the same error when trying archive a new
message.
ERROR 2022-01-05 12:27:31,406 6988 hyperkitty.views.mailman The
MAILMAN_ARCHIVER_KEY was not sent as the Authorization HTTP header.
ERROR 2022-01-05 12:27:31,418 6988 hyperkitty.views.mailman The
MAILMAN_ARCHIVER_KEY was not sent as the Authorization HTTP header.
ERROR 2022-01-05 12:27:31,685 6988 hyperkitty.views.mailman The
MAILMAN_ARCHIVER_KEY was not sent as the Authorization HTTP header.
ERROR 2022-01-05 12:27:32,045 6988 hyperkitty.views.mailman The
MAILMAN_ARCHIVER_KEY was not sent as the Authorization HTTP header.
ERROR 2022-01-05 12:27:32,070 6988 hyperkitty.views.mailman The
MAILMAN_ARCHIVER_KEY was not sent as the Authorization HTTP header.
ERROR 2022-01-05 12:27:32,093 6988 hyperkitty.views.mailman The
MAILMAN_ARCHIVER_KEY was not sent as the Authorization HTTP header.
The odd thing is that you can see the archived messages previous to a
few days ago, when I tried to upgrade hyperkitty. Only the new messages
are "disappearing" (but they are being distributed).
Some guide on what to look for, please?
This server manages just a few lists with very low traffic, but I don't
want to screw it all when upgrading other servers with normal traffic
and much more lists.
TIA
> I did not change any config. Now the log is showing
>
> ERROR 2022-01-03 12:22:15,654 7165 hyperkitty.views.mailman The
> MAILMAN_ARCHIVER_KEY was not sent as the Authorization HTTP header.
> ERROR 2022-01-03 12:22:15,674 7165 hyperkitty.views.mailman The
> MAILMAN_ARCHIVER_KEY was not sent as the Authorization HTTP header.
> ERROR 2022-01-03 12:22:15,791 7165 hyperkitty.views.mailman The
> MAILMAN_ARCHIVER_KEY was not sent as the Authorization HTTP header.
> ERROR 2022-01-03 12:22:16,208 7165 hyperkitty.views.mailman The
> MAILMAN_ARCHIVER_KEY was not sent as the Authorization HTTP header.
> ERROR 2022-01-04 11:44:55,644 30518 hyperkitty.views.mailman The
> MAILMAN_ARCHIVER_KEY was not sent as the Authorization HTTP header
> ERROR 2022-01-04 11:44:55,664 30518 hyperkitty.views.mailman The
> MAILMAN_ARCHIVER_KEY was not sent as the Authorization HTTP header
> ERROR 2022-01-04 11:44:56,478 30518 hyperkitty.views.mailman The
> MAILMAN_ARCHIVER_KEY was not sent as the Authorization HTTP header
> ERROR 2022-01-04 11:44:56,620 30518 hyperkitty.views.mailman The
> MAILMAN_ARCHIVER_KEY was not sent as the Authorization HTTP header
> ERROR 2022-01-04 11:44:56,647 30518 hyperkitty.views.mailman The
> MAILMAN_ARCHIVER_KEY was not sent as the Authorization HTTP header
>
> (it's a very low traffic list: just two messages in two days)
>
> I do believe I did the upgrade/reinstall procedure as in previous
> upgrades (using pip: it's a system wide installation, not using
> dockers or venv), but seems that I did something wrong
>
> The messages are being delivered normally, but it fails archiving
>
> Before I make a bigger hole for myself, where to look for?
>
> Versions installed:
>
> HyperKitty 1.3.5
>
> mailman 3.3.5
> mailman-hyperkitty 1.2.0
> mailmanclient 3.3.3
>
> postorius 1.3.6
>
> uWSGI 2.0.19.1
>
>
> Mailman Core Version GNU Mailman 3.3.5 (Tom Sawyer)
> Mailman Core API Version 3.1
> Mailman Core Python Version 3.7.9 (default, Nov 30 2020, 10:49:53)
> [Clang 10.0.1 (git@github.com:llvm/llvm-project.git
> llvmorg-10.0.1-0-gef32c611a
>
>
>
--
___________________________________________
Mailman's content filtering has removed the
following MIME parts from this message.
Content-Type: image/png
Name: firma-GHP-emails.png
Replaced multipart/alternative part with first alternative.
3 years, 3 months

[MM3-users] Re: Mailman, etc. upgrade woes and persistent bugs
by Abhilash Raj
On Fri, Feb 12, 2021, at 11:52 AM, Mark Sapiro wrote:
> On 2/11/21 10:22 PM, hansen(a)rc.org wrote:
> > I just had my Mailman suite upgraded. When it got started, I starting receiving messages that hundreds of subscribers to the lists had been disables, including several of the list moderators. This version started supporting bounce processing, but how in the world was this upgrade allowed to act on bounces that were being collected PRIOR to enabling bounce processing??
>
>
> I'm sorry about that. It's too late now, but the avoidance is discussed
> at
> <https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/thread/…>.
>
>
> > I got many angry emails, messages and phone calls asking what was going on, as they were bona fide list members. I was very surprised myself.
> >
> > I then looked at several of the disabled accounts, but the subscription info page in Postorius had no information about whether an account was enabled or disabled. Why is this not displayed???. The members can't see if their account is enabled. Is this another example of the disconnect between Mailman and Postorius?
>
>
> If the user has a Django account, she can see all that info at (e.g. for
> this list) <https://lists.mailman3.org/mailman3/accounts/subscriptions/>
> She gets there from `Mailman settings` in the dropdown under her user
> name. She can also get there via the `Manage Subscription` button on the
> list's Info page. That takes her to `List-based preferences` for the
> list. Any setting not selected there is inherited from the Address-based
> preferences or Global Mailman preferences
IIUC, I think what Allan is trying to point out is that if your account was
disabled due to bounces, there is no real visual indication about that if
you go to any of the Preferences pages (either, Global preferences,
List based preferences of address based preferences).
Even if you login as an admin and go to Member Option's view, you
won't see any visual indication about the delivery being disabled.
The is definitely a bug, caused due to the fact that "Delivery Status" field
only has two options, "Enabled" and "Disabled". Internally, this field can
have 4 values, "enabled", "by_user" (maps to "Disabled" in Postorius),
"by_admin" (means disabled by admin) and "by_bounces" (means
disabled due to bounces). So, when the value of the field is among
the last two options, it appears as "unset" with no options selected,
which unfortunately is also how it looks by default since all options
are "unset" from start.
The "fix" for this issue would be simply adding a new choice to the
delivery_status field with a caveat that it is only a Readonly option to
see that delivery is disabled due to bounces and not choosable as
a valid delivery_status value by user or admin when submitting the
form.
https://gitlab.com/mailman/postorius/-/issues/469
We could also go a step further and show it on the List's info page
when their delivery is disabled due to excessive bounce and allow
the them to re-enable it themselves without admin intervention. This
would ofcourse show only when you log into your account and go
to the list's info page, but I guess that is the first place you'd go to
debug when you get an email that your delivery was disabled?
https://gitlab.com/mailman/postorius/-/issues/470
I don't know if there are any downsides to letting users re-enable
their delivery on their own.
>
>
> > Further, even after the upgrade, the moderators still cannot access the list memberships even though all the lists are set to allow that. I would have asked the moderators to do this if this access bug had been fixed, but they can't get there.
>
> You've already reported this at
> <https://gitlab.com/mailman/postorius/-/issues/462>, and it's been
> previously reported at <https://gitlab.com/mailman/postorius/-/issues/369>.
>
>
> > As a result of these bugs, after consulting with Brian, who helped with the upgrade, I spent many hours re-enabling the several hundred accounts that had been disabled. I had to go through each email notification to find the address of a disabled account, then find the list, then the member, in Postorius, and finally enable the account (at which time Postorius DID show the enabled status).
>
>
> I'm sorry you had to go through this. The potential issue and the
> avoidances should be better documented. Unfortunately, they aren't.
>
>
> > Please, can the next upgrade include these very basic fixes/enhancements, which I requested a long time ago:
> >
> > a. The ability of moderators to see the list membership (a bug).
>
> As I note above, this is a known issue. We are a small project with very
> feew core developers, all of whom are volunteers. There is a merge
> request at <https://gitlab.com/mailman/postorius/-/merge_requests/423>
> which purports to fix
> <https://gitlab.com/mailman/postorius/-/issues/369>, but as you can see
> from the comment thread, it is not complete and the author has
> apparently disappeared.
>
> If you would like to take it over and address the deficiencies, we would
> welcome that.
>
>
> > b. The ability of members to change their addresses for all lists they are subscribed to.
>
>
> Users can add addresses to their account and can then change their
> subscribed address at (again, e.g. for this list)
> <https://lists.mailman3.org/mailman3/accounts/list-options/mailman-users.mai…>
> (Get there via the `Manage Subscription` button on the list's Info
> page.)
>
> If one is subscribed to lists via their `primary` address, one can go to
> `E-mail Addresses` in their account settings and make a new address
> `primary` and that will change all their subscriptions.
>
>
> > and further, now:
> >
> > c. That when members go to look at their subscription info, they can actually see the settings.
>
>
> They can if they go to `Mailman settings` in the dropdown or the `Manage
> Subscription` button on the list's Info page and look at all the tabs.
>
> --
> Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
> San Francisco Bay Area, California better use your sense - B. Dylan
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>
--
thanks,
Abhilash Raj (maxking)
4 years, 2 months

[MM3-users] Re: mailman3 postorius cannot retrieve template
by Wolfgang Bock
Dear Mark,
you wrote:
"When you create a template in Postorius, that uri becomes something like
`https://example.com/mailman3/api/templates/list/<list_id>/<template_name>`
which basically says get the template from Postorius, and the template if
any in var/templates is ignored."
In my case that is not true.
I get an db-entry in the mailman3 table template which doesnt lead to a
suitable link:
https://localhost/postorius/api/templates/list/testliste01.mydomain.de/list:
member:regular:footer
In the next stept it leads to a flood of entries in my syslog because django
is asking for a certificate match for "localhost":
Nov 2 11:47:49 myserver mailman3[175334]: Nov 02 11:47:49 2021 (175334)
Certificate did not match expected hostname: localhost. Certificate: ...
Letsencrypt cannot deliver this match for "localhost", it is impossible to
configurate letsencrypt to do so.
The running script must create a postgres INSERT database command which
includes the correct domain-name including the correct path
.../mailman3/api/templates .... and not ... postorius/api/....
I dont know, where is the place to correct this.
- in mailman-web.py ??
...
ALLOWED_HOSTS ... '*'
or
MAILMAN_REST_API_URL = 'http://localhost:8001'
or
POSTORIUS_TEMPLATE_BASE_URL = 'https://localhost/mailman3/'
- in mailman.cfg ??
the [paths.debian] section
the [webservice] section
- or elsewhere
Thanks in advance for your reply.
Wolfgang
-----Ursprüngliche Nachricht-----
Von: Mark Sapiro <mark(a)msapiro.net>
Gesendet: Sonntag, 31. Oktober 2021 19:15
An: mailman-users(a)mailman3.org
Betreff: [MM3-users] Re: mailman3 postorius cannot retrieve template at ...
(<no authorization>)
On 10/29/21 3:41 AM, Wolfgang Bock via Mailman-users wrote:
>
> the question is: postgres - mailman3web-postorius_emailtemplate table
> vs
> mailman3 - templates table
>
> I installed a brand new mailman3 with mailman Core 3.3.3, Api 3.1,
> Core Python 3.9.2 postgres12 nginx on debian bullseye.
>
> I created a template via postorius -> lists -> (testliste01) ->
> templates
> -> new template -> [list:member:regular:footer] and
> [list:member:digest:footer]
>
> They are shown in the postgres database mailman3 table templates:
> id name context uri username password
> 14 list:member:digest:footer testliste01.mydomain.de
> http://localhost/postorius/api/templates/list/testliste01.mydomain.de/
> list:m
> ember:digest:footer
> 15 list:member:regular:footer testliste01.mydomain.de
> http://localhost/postorius/api/templates/list/testliste01.mydomain.de/
> list:m
> ember:regular:footer
>
> First there where no templates in the /var/lib/mailman3/templates
> folder, which was empty after installation.
This is expected. That is one place where you can put custom templates.
> Later I created in /var/lib/mailman3/templates theses folders and the
> files /list/testliste01.mydomain.de/list:member:digest:footer +
> list:member:regular:footer owned by list:list 644
>
> A testmail went through but instead of the default footer no footer
> was shown.
By default Mailman searches for templates first in the var/templates
directory and then in the templates directory in the Mailman installation.
The details are described at
https://gitlab.com/mailman/mailman/-/blob/master/src/mailman/utilities/i18n.
py#L44.
However, the default search is only applied if there is matching entry for
the template name and context in the `templates` table in the database or if
the uri in the entry is a `mailman://` uri.
When you create a template in Postorius, that uri becomes something like
`https://example.com/mailman3/api/templates/list/<list_id>/<template_name>`
which basically says get the template from Postorius, and the template if
any in var/templates is ignored.
> In the sys.log I found the following error message:
> Oct 29 11:28:04 myserver mailman3[33015]: Message: 'Cannot retrieve
> template at
> http://localhost/postorius/api/templates/list/testliste01.mydomain.de/
> list:m ember:regular:footer (<no authorization>)'
So Mailman is trying to get the Postorius template. What is in the web
server logs for this retrieval?
> How can I solve this problem? What kind of authorisation is meant? list?
> restadmin?
>
> I read in
> https://docs.mailman3.org/en/latest/config-core.html#configure-templates
> ... list specific templates invar/templates/lists/LIST-ID/LC/ ...
> I guess the LC means Language Code. But in the database table templates no
> LC subdirectory is mentioned (in my case must be de).
If you delete the Postorius template, The entry in the templates table
will be removed and the search will revert to var/templates, etc.
> And I read (dont know where) .... The templates created in Postorius are
> created in the postorius_emailtemplate table in Mailman's database and
> referenced via URLs like
>
'https://example.com/mailman3/api/templates/list/<list-id>/<template-name>'.
> I.e., they are not stored in the file system. ...
>
> That's true. I found in postgres database mailman3web in the table
> mailman3web postorius_emailtemplate my
>
> id name data language created_at modified_at
> context identifier
> 15 list:member:digest:footer postorius footer digest 1x linefeed
> 2021-10-29 11:17:40.664689+02 2021-10-29 11:26:48.692628+02 list
> testliste01.mydomain.de
> 16 list:member:regular:footer postorius footer non-digest 1x
> linefeed 2021-10-29 11:18:29.166241+02 2021-10-29
11:27:24.519024+02 list
> testliste01.mydomain.de
>
> But my question is how to integrate this into the mailman3-system. The
> language isn't set either.
It is integrated. The language isn't set because you are getting the
template from Postorius and Postorius knows the language.
On 10/31/21 4:13 AM, Wolfgang Bock via Mailman-users wrote:
> regarding my mail before, here an additional information.
>
> I can show the templates with following command (anonymized):
>
https://active_domain.de/postorius/api/templates/list/testliste01.active_dom
ain.de/list:member:regular:footer
As it should be.
> The complete syslog
>
(edited and reformatted by me)
```
> --- Logging error ---
> Traceback (most recent call last): Oct 30 11:49:52 active_server
mailman3[107630]: File
"/usr/lib/python3/dist-packages/mailman/model/template.py", line 110, in get
> contents = protocols.get(actual_uri, **auth)
> File
"/usr/lib/python3/dist-packages/mailman/utilities/protocols.py", line
39, in get
> response.raise_for_status()
> File "/usr/lib/python3/dist-packages/requests/models.py", line
943, in raise_for_status
> raise HTTPError(http_error_msg, response=self)
> requests.exceptions.HTTPError: 404 Client Error: Not Found for url:
http://localhost/postorius/api/templates/list/testliste01.active_domain.de/l
ist:member:regular:footer
> During handling of the above exception, another exception occurred:
> Traceback (most recent call last):
> File "/usr/lib/python3.9/logging/__init__.py", line 430, in format
> return self._format(record)
> File "/usr/lib/python3.9/logging/__init__.py", line 426, in _format
> return self._fmt % record.__dict__
> KeyError: 't'
> During handling of the above exception, another exception occurred:
Your template is malformed. You have $ strings that are not defined as
Mailman substitution variables. See
https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/rest/docs/t
emplates.html#templated-texts
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
_______________________________________________
Mailman-users mailing list -- mailman-users(a)mailman3.org
To unsubscribe send an email to mailman-users-leave(a)mailman3.org
https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
3 years, 5 months

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

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

[MM3-users] Re: Detectors and Bounces
by summersan@nclack.k12.or.us
Okay, thank you for the feedback!
> What's in Mailman's bounce.log?
There are lots of log lines in this file, but here is an edited example line for the purpose of debugging:
`Aug 04 16:59:56 2022 (70838) Member disabled_user(a)example.local.domain on list example_list(a)mailman_server.example.local.domain, bounce score = 1.`
> Are bouncing users getting their delivery disabled?
From looking at the settings for the example user "aliased" above, it appears that bouncing users **may not** be getting their delivery disabled. The `Delivery status` is still set to `Enabled`.
> What are your list(s) `Bounce Processing` settings.
Here are the `Bounce Processing` settings (at the time of this writing) from the example list in question (the list is referred to with a fake name for anonymity: `example_list(a)mailman_server.example.local.domain`)
Notify owner on bounce increment: No
Notify owner on disable: Yes
Notify owner on removal: Yes
Forward unrecognized bounces: List Admins
I might be able to try turning the `Notify owner on bounce increment` setting to `Yes` on a different example mailing list. In the meantime, I have not seen any new bounce files in the `/opt/mailman/mm/var/queue/bounces` directory. I'm not sure if that's a sign that things are working like usual now, or if something is wrong.
Previously, there were `34775` files in the `/opt/mailman/mm/var/queue/bounces` directory, ranging from June 7 to August 4. For background, there's typically a time in the summer where many user accounts are purposely disabled (generally near July-August, I think). From the bounce file dates, I wonder if this bounce-related issue has been happening for longer than I first realized.
Thank you for letting me know about the `bin/mailman qfile` feature! I've tried examining one of the latest past bounce files from a previous day.
Here is an edited version of that bounce file (this file relates to the example "disabled_user" from the `bounce.log`), below, if it helps.
Does the example bounce file below give any clues as to what might be happening in this situation?
[----- start pickle -----]
<----- start object 1 ----->
Received: by example_list.example.local.domain (Postfix)
id F41722406EC; Thu, 4 Aug 2022 11:34:08 -0700 (PDT)
Date: Thu, 4 Aug 2022 11:34:08 -0700 (PDT)
From: MAILER-DAEMON(a)example_list.example.local.domain (Mail Delivery System)
Subject: Undelivered Mail Returned to Sender
To: example_list-bounces(a)mailman_server.example.local.domain
Auto-Submitted: auto-replied
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status;
boundary="CF79C2404AD.1659638048/example_list.example.local.domain"
Content-Transfer-Encoding: 8bit
Message-Id: <20220804183408.F41722406EC(a)example_list.example.local.domain>
Message-ID-Hash: U47YLWMSX2KGN2H327NOLPXJIBK2BEO6
X-Message-ID-Hash: U47YLWMSX2KGN2H327NOLPXJIBK2BEO6
X-MailFrom: <>
This is a MIME-encapsulated message.
--CF79C2404AD.1659638048/example_list.example.local.domain
Content-Description: Notification
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
This is the mail system at host example_list.example.local.domain.
I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.
For further assistance, please send mail to postmaster.
If you do so, please include this problem report. You can
delete your own text from the attached returned message.
The mail system
<disabled_user(a)example.local.domain>: host aspmx.l.google.com[74.125.195.27] said:
550-5.2.1 The email account that you tried to reach is disabled. Learn more
at 550 5.2.1 https://support.google.com/mail/?p=DisabledUser
q14-20020a17090311ce00b0016f145ca846si1920603plh.98 - gsmtp (in reply to
RCPT TO command)
--CF79C2404AD.1659638048/example_list.example.local.domain
Content-Description: Delivery report
Content-Type: message/delivery-status
Reporting-MTA: dns; example_list.example.local.domain
X-Postfix-Queue-ID: CF79C2404AD
X-Postfix-Sender: rfc822; example_list-bounces(a)mailman_server.example.local.domain
Arrival-Date: Thu, 4 Aug 2022 11:34:06 -0700 (PDT)
Final-Recipient: rfc822; disabled_user(a)example.local.domain
Original-Recipient: rfc822;disabled_user(a)example.local.domain
Action: failed
Status: 5.2.1
Remote-MTA: dns; aspmx.l.google.com
Diagnostic-Code: smtp; 550-5.2.1 The email account that you tried to reach is
disabled. Learn more at 550 5.2.1
https://support.google.com/mail/?p=DisabledUser
q14-20020a17090311ce00b0016f145ca846si1920603plh.98 - gsmtp
Final-Recipient: rfc822; disabled_user(a)example.local.domain
Original-Recipient: rfc822;disabled_user(a)example.local.domain
Action: failed
Status: 5.2.1
Remote-MTA: dns; aspmx.l.google.com
Diagnostic-Code: smtp; 550-5.2.1 The email account that you tried to reach is
disabled. Learn more at 550 5.2.1
https://support.google.com/mail/?p=DisabledUser
q14-20020a17090311ce00b0016f145ca846si1920603plh.98 - gsmtp
Final-Recipient: rfc822; disabled_user(a)example.local.domain
Original-Recipient: rfc822;disabled_user(a)example.local.domain
Action: failed
Status: 5.2.1
Remote-MTA: dns; aspmx.l.google.com
Diagnostic-Code: smtp; 550-5.2.1 The email account that you tried to reach is
disabled. Learn more at 550 5.2.1
https://support.google.com/mail/?p=DisabledUser
q14-20020a17090311ce00b0016f145ca846si1920603plh.98 - gsmtp
Final-Recipient: rfc822; disabled_user(a)example.local.domain
Original-Recipient: rfc822;disabled_user(a)example.local.domain
Action: failed
Status: 5.2.1
Remote-MTA: dns; aspmx.l.google.com
Diagnostic-Code: smtp; 550-5.2.1 The email account that you tried to reach is
disabled. Learn more at 550 5.2.1
https://support.google.com/mail/?p=DisabledUser
q14-20020a17090311ce00b0016f145ca846si1920603plh.98 - gsmtp
--CF79C2404AD.1659638048/example_list.example.local.domain
Content-Description: Undelivered Message
Content-Type: message/rfc822
Content-Transfer-Encoding: 8bit
Return-Path: <example_list-bounces(a)mailman_server.example.local.domain>
Received: from example_list.example.local.domain (localhost [127.0.0.1])
by example_list.example.local.domain (Postfix) with ESMTP id CF79C2404AD;
Thu, 4 Aug 2022 11:34:06 -0700 (PDT)
Received: from example_list.example.local.domain (localhost [127.0.0.1])
by example_list.example.local.domain (Postfix) with ESMTP id 3C56324021E
for <example_list(a)mailman_server.example.local.domain>; Thu, 4 Aug 2022 11:30:01 -0700 (PDT)
Received: from example_list.example.local.domain (localhost [127.0.0.1])
by example_list.example.local.domain (Postfix) with ESMTP id 2DBBD2406DA
for <elem_cert(a)mailman_server.example.local.domain>; Thu, 4 Aug 2022 11:21:16 -0700 (PDT)
Received: from mail.applitrack.com (mail.applitrack.com [65.79.190.186])
by example_list.example.local.domain (Postfix) with SMTP id 314042404AD
for <all_cert(a)mailman_server.example.local.domain>; Thu, 4 Aug 2022 11:17:54 -0700 (PDT)
dkim-signature: v=1; a=rsa-sha256; d=external_location.somewhere; s=frontline5819;
c=relaxed/relaxed; q=dns/txt; h=From:Reply-To:Subject:Date:Message-ID:To:MIME-Version:Content-Type:Content-Transfer-Encoding;
bh=/BQy8uOjo6VP5i27AYv2tM47vx2ChfBLnBPKOKwXD4c=;
b=kGRiFywmQoL9T76olCFdOyvReOdBLSbBtgKFwaje1w6qh4y2UJD9xLyqPQ/FrZtKHmyB22EKofBinaDrgalvjcN2g8Otj88/OppGRVWEjsATTsf7QCgZ6eqEuduVswIfdOOzGEPXDn8GNHb95oGT2jCQpimuwTsog6M9OrJp/1k=
Received: from PHLAPTWEB21 (Unknown [172.25.51.49])
by mail.external_location.somewhere
; Thu, 4 Aug 2022 13:17:53 -0500
Message-ID: <AEF0FB74-B893-4AB1-BA9A-203F1B941B74(a)mail.applitrack.com>
MIME-Version: 1.0
From: "example_sender(a)example.local.domain" <MailBot(a)external_location.somewhere>
To: example_list(a)mailman_server.example.local.domain
Date: 4 Aug 2022 13:17:52 -0500
X-MailFrom: example(a)external_location.somewhere
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
X-Mailman-Version: 3.3.5
Precedence: list
Content-Type: multipart/mixed; boundary="===============6481302630449704969=="
X-MailFrom: all_cert-bounces+elem_cert=mailman_server.example.local.domain(a)mailman_server.example.local.domain
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
Message-ID-Hash: Z3TDTO5IXUSVTGVAYF4TVT4NGUW5IHAN
X-Message-ID-Hash: Z3TDTO5IXUSVTGVAYF4TVT4NGUW5IHAN
X-MailFrom: elem_cert-bounces+example_list=mailman_server.example.local.domain(a)mailman_server.example.local.domain
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
Reply-To: example_sender(a)example.local.domain
Subject: [example_list] Example Subject
List-Id: Example List <example_list.mailman_server.example.local.domain>
List-Help: <mailto:example_list-request@mailman_server.example.local.domain?subject=help>
List-Owner: <mailto:example_list-owner@mailman_server.example.local.domain>
List-Post: <mailto:example_list@mailman_server.example.local.domain>
List-Subscribe: <mailto:example_list-join@mailman_server.example.local.domain>
List-Unsubscribe: <mailto:example_list-leave@mailman_server.example.local.domain>
--===============6481302630449704969==
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: quoted-printable
Example Body Text
_______________________________________________
example_list mailing list -- example_list(a)mailman_server.example.local.domain
To unsubscribe send an email to example_list-leave(a)mailman_server.example.local.domain
--===============6481302630449704969==--
--CF79C2404AD.1659638048/example_list.example.local.domain--
<----- start object 2 ----->
{ '_parsemsg': False,
'listid': 'example_list.mailman_server.example.local.domain',
'original_size': 16103,
'received_time': datetime.datetime(2022, 8, 4, 18, 44, 7, 891417),
'subaddress': 'bounces',
'version': 3}
[----- end pickle -----]
Thank you!
Andy
2 years, 8 months

[MM3-users] Re: uncaught bounce messages
by Seth Seeger
On Sat, Oct 23, 2021, at 9:05 PM, Mark Sapiro wrote:
> On 10/23/21 5:29 PM, David Bremner wrote:
>>
>> Oh great, I just upgraded to Mailman 3.3.0, so I'll see what happens.
>>
>> I did notice a bunch (10 or 20?) of subscribers being disabled for being
>> over the bounce threshhold right after the upgrade, I wonder if that is
>> related.
>
>
> See the thread at
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/thread/…
>
> There is an example `mailman shell` session at
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
> that will reenable delivery for members disabled by bounce if you think
> the disables were spurious.
I have just upgraded to 3.3.4 from 3.3.2 (via docker).
Do we need to do anything more than reset the delivery status? I am getting (seemingly) continual emails about bounces. I keep running the recipe in the link which resets everyone's delivery status. I've grep'd one member's address out of bounce.log (see below my signature).
Is it just catching up on old bounces?
Thanks,
Seth
Oct 26 14:30:03 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score = 1.
Oct 26 14:30:10 2021 (37) Member max(a)example.com already scored a bounce on list listname.lists.example.net today.
Oct 26 14:30:56 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score = 2.
Oct 26 14:30:59 2021 (37) Member max(a)example.com already scored a bounce on list listname.lists.example.net today.
Oct 26 14:31:10 2021 (37) Member max(a)example.com already scored a bounce on list listname.lists.example.net today.
Oct 26 14:32:31 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score = 1.
Oct 26 14:32:39 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score = 2.
Oct 26 14:32:46 2021 (37) Member max(a)example.com already scored a bounce on list listname.lists.example.net today.
Oct 26 14:33:04 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score = 3.
Oct 26 14:33:49 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score = 4.
Oct 26 14:33:52 2021 (37) Member max(a)example.com already scored a bounce on list listname.lists.example.net today.
Oct 26 14:33:55 2021 (37) Member max(a)example.com already scored a bounce on list listname.lists.example.net today.
Oct 26 14:33:58 2021 (37) Member max(a)example.com already scored a bounce on list listname.lists.example.net today.
Oct 26 14:34:01 2021 (37) Member max(a)example.com already scored a bounce on list listname.lists.example.net today.
Oct 26 14:34:35 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score = 5.
Oct 26 14:34:35 2021 (37) Disabling delivery for max(a)example.com on list listname.lists.example.net by bounce
Oct 26 14:34:35 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score 5 >= threshold 5, disabling delivery.
Oct 26 14:34:39 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:35:06 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:35:09 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:35:18 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:35:20 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:36:01 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:37:19 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:37:27 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:37:33 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:37:36 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:37:40 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:37:42 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:37:44 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:37:47 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:37:49 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:37:51 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:37:58 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:38:01 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:38:14 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:38:15 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:38:18 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:40:38 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score = 1.
Oct 26 14:40:51 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score = 2.
Oct 26 14:41:02 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score = 3.
Oct 26 14:41:10 2021 (37) Member max(a)example.com already scored a bounce on list listname.lists.example.net today.
Oct 26 14:41:40 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score = 4.
Oct 26 14:41:43 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score = 5.
Oct 26 14:41:43 2021 (37) Disabling delivery for max(a)example.com on list listname.lists.example.net by bounce
Oct 26 14:41:43 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score 5 >= threshold 5, disabling delivery.
Oct 26 14:41:48 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:41:52 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:41:54 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:41:57 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:41:59 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:42:12 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:42:17 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:42:24 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:42:45 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:42:47 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:42:50 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:42:53 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:42:55 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:43:05 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score = 6.
Oct 26 14:43:05 2021 (37) Disabling delivery for max(a)example.com on list listname.lists.example.net by bounce
Oct 26 14:43:05 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score 6 >= threshold 5, disabling delivery.
Oct 26 14:43:17 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:43:19 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:43:22 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:43:25 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:43:31 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:44:57 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:45:41 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:45:44 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:45:47 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:45:52 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:45:58 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:45:59 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:46:04 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:46:09 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:46:15 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:46:19 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:46:23 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:46:27 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:46:33 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:46:36 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:46:39 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:46:42 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:46:44 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:46:48 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:46:49 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:46:53 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:46:56 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:46:57 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:00 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:01 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:05 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:08 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:10 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:13 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:15 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:18 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:22 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:24 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:27 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:28 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:31 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:33 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:35 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:38 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:40 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:42 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:45 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:46 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:49 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:51 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:54 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:47:57 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:48:03 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:48:04 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:48:06 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:48:08 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:48:14 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:48:16 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:48:19 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:48:24 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:48:27 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:48:29 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:48:32 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:48:34 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:49:07 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:49:33 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:50:16 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:50:18 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:50:20 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:50:23 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:50:27 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:50:30 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:50:36 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:50:41 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:50:47 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:50:49 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 14:51:00 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 15:04:36 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score = 1.
Oct 26 15:04:39 2021 (37) Member max(a)example.com already scored a bounce on list listname.lists.example.net today.
Oct 26 15:04:41 2021 (37) Member max(a)example.com already scored a bounce on list listname.lists.example.net today.
Oct 26 15:04:43 2021 (37) Member max(a)example.com already scored a bounce on list listname.lists.example.net today.
Oct 26 15:04:54 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score = 2.
Oct 26 15:04:57 2021 (37) Member max(a)example.com already scored a bounce on list listname.lists.example.net today.
Oct 26 15:05:59 2021 (37) Member max(a)example.com already scored a bounce on list listname.lists.example.net today.
Oct 26 15:06:02 2021 (37) Member max(a)example.com already scored a bounce on list listname.lists.example.net today.
Oct 26 15:10:00 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score = 3.
Oct 26 15:11:51 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score = 4.
Oct 26 15:12:30 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score = 5.
Oct 26 15:12:30 2021 (37) Disabling delivery for max(a)example.com on list listname.lists.example.net by bounce
Oct 26 15:12:30 2021 (37) Member max(a)example.com on list listname.lists.example.net, bounce score 5 >= threshold 5, disabling delivery.
Oct 26 15:12:45 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 15:12:52 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
Oct 26 15:14:36 2021 (37) Residual bounce received for member max(a)example.com on list listname.lists.example.net.
3 years, 5 months

[MM3-users] Re: Importing mbox files into archive defect with lines with From
by Alex Schuilenburg
Hi Stephen
On 19/09/2023 19:59, Stephen J. Turnbull wrote:
> Did you intend to send this to me only?
Nope, apologies. I'm happy to add the list back in - I thought I hit
reply-to-list.
> Alex Schuilenburg writes:
>
> > Yes, I retested with from the git head as well. Same result. It
> > sees the line
> >
> > From 1st April 2019, our turnover has exceeded the threshold for
> >
> > as the start of a new message and reports no anomolies although
> > there is clearly one.
>
> If there is an empty line preceding that one, and the "F" is in the
> first column (no marginal whitespace), that is considered correct
> behavior for processing an mbox file.
As an email separator agreed, provided the body has all "First "
(preceded by a blank line and nothing preceding on the same line)
suitably escaped.
> If you don't like it, don't use the mbox format. The maildir
> message-per-file format is widely supported, and if you want a
> folder-per-file rather than message-per-file format, MMDF is fairly
> widely supported, and does not suffer from the ambiguities of mbox.
> All three (with variations) are supported by recent Python 3.
Understood. My issue is the lists were imported from MM2.1 in 2020 into
MM3.2.1 onto hyperkitty+mariadb/mysql.
So the current installation has no mbox files - archives are stored in a
mysql database.
> > The old MM3 installation I am migrating away from is obviously
> > broken in that its mbox archive when downloaded is not escaped,
>
> That's interesting. I presume that's because HyperKitty saves
> messages in a database rather than as mbox files, and the old mbox
> exporter just flattened and concatenated the messages. Or perhaps
> that also uses mailbox.mbox and old enough versions of that didn't
> From-stuff.
Spot on.
I have to move the lists onto a new Debian 12 server using the native
mailman 3.3.8 & mailman-web 0+20200530-2 packages. I tried dropping in
the old mailman3 database under the new software but that did not work.
Instead I manually imported the old mailman3 data directly into the new
mailman3 database as, after inspections, there were no new tables and
only a couple of additional fields which have suitable defaults. So
dumped the mailman3 data with
mysqldump --no-create-info --no-create-db --disable-keys
--complete-insert --ignore-table=mailman3.alembic_version mailman3
and simply imported the dump into the new schema. OK so far. The lists
showed up in postorius, obviously without archives in hyperkitty.
> The normal way to upgrade a HyperKitty archive is to do nothing, just
> upgrade the software. I guess you moved to a new host and deleted the
> database? The preferred way is to dump the database to SQL, and then
> load it in to the new database directly rather than downloading the
> mbox files and importing. No ambiguity and much faster.
Thats what I thought initially, but that failed as per
https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message….
As my old installation appears to have the django_migrations table
inconsistent with the state of the database, and Debian have been
unresponsive so far.
Unfortunately the same mailman3-style manual import of mailman3web from
old mailman3web db into the new db was not possible. There were
additional tables and fields that needed values rather than defaults.
Instead I opted to download the mbox exports from the old installation
via the web interface and import them into the new installation for
expediency.This is where I was when I posted the message.
However, the old installation's mbox archive export (from the database)
was problematic (e.g. 5min timeout) but after getting around those
issues I ended up with some broken mbox files (e.g. the "From 1st April
..." line within a message, resulting in hyperkitty_import failures).
> > although I tested downloading this thread archive and it is clearly
> > escaped. Unfortunately I cannot tell if hyperkitty_import works
> > using the git head since I am restricted to using the version
> > provided with Debian 12.
>
> In July it worked for me on a site with 5300 archived lists. I assume
> some of them had From-stuffed lines. Can't be sure, most of the posts
> are machine-generated, but lines beginning with "From " are pretty
> common in natural English.
I'd be surprised if there were not any. I have 2003 lists and several
occurrences.
>
> > There are indeed two versions though of mailbox.py on the VM:
> >
> > /usr/lib/python3/dist-packages/mailman/utilities/mailbox.py: from
> > mailman3 (3.3.8-2~deb12u1)
> > /usr/lib/python3.11/mailbox.py from libpython3.11-stdlib (3.11.2-6)
>
> The first applies one small change to the second (a so-called
> "monkey-patch") for use by Mailman core. It should only be visible
> to Python by the name "mailman.utilities.mailbox". The HyperKitty
> utilities import the name "mailbox". If overwriting the first with
> the second changes HyperKitty's behavior, something is wrong with
> sys.path.
Then I guess that is the case in Debian 12.
>
> > the latter of which appears far more substantial , so I dropped
> > that module over the former and reran hyperkitty_import over the
> > '>' escaped mbox, and while it did import without error, it did
> > leave the escape in place (i.e. the 'From ...' was quoted when
> > viewed).
>
> This is considered correct behavior. It is not possible to determine
> whether the escape was in the original, or added by a receiving MTA.
> Better to leave it.
I thought that ">From " would be escaped to ">>From ", and so on, so the
escape could easily be reversed when imported. I tested exports from the
mailman-users lists and lines beginning "From " (preceded by a blank
line) are escaped to ">From ", so incorrectly figured this would be
unescaped by hyperkitty_import. After all, I would expect that an export
of the archive to mbox, followed by a delete of the archive, followed by
a hyperkitty_import of the archive, should leave you at the same place.
Not with ">From " escapes in the new archives. In fact I also had a
number of messages with "Message-ID: <>" and worse: all messages with
attachments had the text/plain content empty.
So mbox exports from MM 3.2.1 on Debian 10 (using hyperkitty+mysql) are
broken.
>
> > The unescaped mbox import died in the same way.
>
> As expected.
>
> > Anyhow, thanks for your suggestion. For now I can stick with a
> > manual repair and spaced escape of From_.
>
> If the old database is still available, I recommend dumping that and
> loading it into a fresh version of the DBMS.
> ...
Thanks for the pointer. As I had already done the same with mailman3,
so repeated the excercise. The following dump and import worked.
oldhost> mysqldump --no-create-info --no-create-db --disable-keys
--complete-insert mailman3web > mailman3web.sql
newhost> mysql
MariaDB [(none]> use mailman3web
MariaDB [mailman3web]> source mailman3web.sql
Thanks again
-- Alex
1 year, 7 months

[MM3-users] Re: Welcome Message
by josh@caluette.com
I just setup a new Mailman 3 server using maxking/docker-mailman from GitHub. I got everything working just right including changing the footer template for messages. However, when trying to set anything in a Welcome template, I am encountering these same errors.
I have confirmed that the mailman-core container is able to download the template via curl using the http://mailman-web:8000/ api URL and gets the correct text, but anytime I try to mass subscribe, it fails with the errors that Brian had provided and I get an HTTP 500 error.
If I remove the Welcome template, then I can do mass subscribe just fine.
Here are the logs:
Nov 06 17:10:13 2019 (29) deque:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 384, in _make_request
six.raise_from(e, None)
File "<string>", line 2, in raise_from
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 380, in _make_request
httplib_response = conn.getresponse()
File "/usr/lib/python3.6/http/client.py", line 1331, in getresponse
response.begin()
File "/usr/lib/python3.6/http/client.py", line 297, in begin
version, status, reason = self._read_status()
File "/usr/lib/python3.6/http/client.py", line 258, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "/usr/lib/python3.6/socket.py", line 586, in readinto
return self._sock.recv_into(b)
socket.timeout: timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/requests/adapters.py", line 449, in send
timeout=timeout
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 638, in urlopen
_stacktrace=sys.exc_info()[2])
File "/usr/lib/python3.6/site-packages/urllib3/util/retry.py", line 367, in increment
raise six.reraise(type(error), error, _stacktrace)
File "/usr/lib/python3.6/site-packages/urllib3/packages/six.py", line 686, in reraise
raise value
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 600, in urlopen
chunked=chunked)
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 386, in _make_request
self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 306, in _raise_timeout
raise ReadTimeoutError(self, url, "Read timed out. (read timeout=%s)" % timeout_value)
urllib3.exceptions.ReadTimeoutError: HTTPConnectionPool(host='mailman-web', port=8000): Read timed out. (read timeout=5)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/mailman/app/workflow.py", line 69, in __next__
return step()
File "/usr/lib/python3.6/site-packages/mailman/app/subscriptions.py", line 326, in _step_do_subscription
self.member = self.mlist.subscribe(self.subscriber)
File "/usr/lib/python3.6/site-packages/mailman/database/transaction.py", line 85, in wrapper
return function(args[0], config.db.store, *args[1:], **kws)
File "/usr/lib/python3.6/site-packages/mailman/model/mailinglist.py", line 494, in subscribe
notify(SubscriptionEvent(self, member))
File "/usr/lib/python3.6/site-packages/zope/event/__init__.py", line 32, in notify
subscriber(event)
File "/usr/lib/python3.6/site-packages/mailman/app/membership.py", line 169, in handle_SubscriptionEvent
send_welcome_message(mlist, member, member.preferred_language)
File "/usr/lib/python3.6/site-packages/mailman/app/notifications.py", line 52, in send_welcome_message
'list:user:notice:welcome', mlist, language=language.code))
File "/usr/lib/python3.6/site-packages/mailman/model/template.py", line 188, in get
name, lookup_context, **substitutions)
File "/usr/lib/python3.6/site-packages/mailman/database/transaction.py", line 85, in wrapper
return function(args[0], config.db.store, *args[1:], **kws)
File "/usr/lib/python3.6/site-packages/mailman/model/template.py", line 109, in get
contents = protocols.get(actual_uri, **auth)
File "/usr/lib/python3.6/site-packages/mailman/utilities/protocols.py", line 38, in get
response = requests.get(url, timeout=REQUEST_TIMEOUT, **kws)
File "/usr/lib/python3.6/site-packages/requests/api.py", line 75, in get
return request('get', url, params=params, **kwargs)
File "/usr/lib/python3.6/site-packages/requests/api.py", line 60, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/lib/python3.6/site-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python3.6/site-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python3.6/site-packages/requests/adapters.py", line 529, in send
raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPConnectionPool(host='mailman-web', port=8000): Read timed out. (read timeout=5)
Nov 06 17:10:13 2019 (29) REST request handler error:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 384, in _make_request
six.raise_from(e, None)
File "<string>", line 2, in raise_from
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 380, in _make_request
httplib_response = conn.getresponse()
File "/usr/lib/python3.6/http/client.py", line 1331, in getresponse
response.begin()
File "/usr/lib/python3.6/http/client.py", line 297, in begin
version, status, reason = self._read_status()
File "/usr/lib/python3.6/http/client.py", line 258, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "/usr/lib/python3.6/socket.py", line 586, in readinto
return self._sock.recv_into(b)
socket.timeout: timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/requests/adapters.py", line 449, in send
timeout=timeout
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 638, in urlopen
_stacktrace=sys.exc_info()[2])
File "/usr/lib/python3.6/site-packages/urllib3/util/retry.py", line 367, in increment
raise six.reraise(type(error), error, _stacktrace)
File "/usr/lib/python3.6/site-packages/urllib3/packages/six.py", line 686, in reraise
raise value
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 600, in urlopen
chunked=chunked)
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 386, in _make_request
self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
File "/usr/lib/python3.6/site-packages/urllib3/connectionpool.py", line 306, in _raise_timeout
raise ReadTimeoutError(self, url, "Read timed out. (read timeout=%s)" % timeout_value)
urllib3.exceptions.ReadTimeoutError: HTTPConnectionPool(host='mailman-web', port=8000): Read timed out. (read timeout=5)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.6/wsgiref/handlers.py", line 137, in run
self.result = application(self.environ, self.start_response)
File "/usr/lib/python3.6/site-packages/mailman/database/transaction.py", line 50, in wrapper
rtn = function(*args, **kws)
File "/usr/lib/python3.6/site-packages/mailman/rest/wsgiapp.py", line 218, in __call__
return super().__call__(environ, start_response)
File "/usr/lib/python3.6/site-packages/falcon/api.py", line 244, in __call__
responder(req, resp, **params)
File "/usr/lib/python3.6/site-packages/mailman/rest/members.py", line 266, in on_post
pre_approved=pre_approved)
File "/usr/lib/python3.6/site-packages/mailman/app/subscriptions.py", line 520, in register
list(workflow)
File "/usr/lib/python3.6/site-packages/mailman/app/workflow.py", line 69, in __next__
return step()
File "/usr/lib/python3.6/site-packages/mailman/app/subscriptions.py", line 326, in _step_do_subscription
self.member = self.mlist.subscribe(self.subscriber)
File "/usr/lib/python3.6/site-packages/mailman/database/transaction.py", line 85, in wrapper
return function(args[0], config.db.store, *args[1:], **kws)
File "/usr/lib/python3.6/site-packages/mailman/model/mailinglist.py", line 494, in subscribe
notify(SubscriptionEvent(self, member))
File "/usr/lib/python3.6/site-packages/zope/event/__init__.py", line 32, in notify
subscriber(event)
File "/usr/lib/python3.6/site-packages/mailman/app/membership.py", line 169, in handle_SubscriptionEvent
send_welcome_message(mlist, member, member.preferred_language)
File "/usr/lib/python3.6/site-packages/mailman/app/notifications.py", line 52, in send_welcome_message
'list:user:notice:welcome', mlist, language=language.code))
File "/usr/lib/python3.6/site-packages/mailman/model/template.py", line 188, in get
name, lookup_context, **substitutions)
File "/usr/lib/python3.6/site-packages/mailman/database/transaction.py", line 85, in wrapper
return function(args[0], config.db.store, *args[1:], **kws)
File "/usr/lib/python3.6/site-packages/mailman/model/template.py", line 109, in get
contents = protocols.get(actual_uri, **auth)
File "/usr/lib/python3.6/site-packages/mailman/utilities/protocols.py", line 38, in get
response = requests.get(url, timeout=REQUEST_TIMEOUT, **kws)
File "/usr/lib/python3.6/site-packages/requests/api.py", line 75, in get
return request('get', url, params=params, **kwargs)
File "/usr/lib/python3.6/site-packages/requests/api.py", line 60, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/lib/python3.6/site-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python3.6/site-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python3.6/site-packages/requests/adapters.py", line 529, in send
raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPConnectionPool(host='mailman-web', port=8000): Read timed out. (read timeout=5)
5 years, 5 months

[MM3-users] Re: Mailman3 without Hyperkitty in docker
by Abhilash Raj
On Thu, Feb 28, 2019, at 10:18 PM, Danil Smirnov wrote:
> Hi Abhilash,
>
> Thank you very much - the previous error is fixed now.
>
> But I have another one now, which causes the same 500 Server Error:
>
> bash-4.3# cat /opt/mailman-web-data/logs/uwsgi-error.log
> *** Starting uWSGI 2.0.18 (64bit) on [Fri Mar 1 05:42:09 2019] ***
> compiled with version: 6.3.0 on 01 March 2019 01:52:42
> os: Linux-3.10.0-693.11.1.el7.x86_64 #1 SMP Mon Dec 4 23:52:40 UTC 2017
> nodename: mailman-web
> machine: x86_64
> clock source: unix
> detected number of CPU cores: 2
> current working directory: /opt/mailman-web
> detected binary path: /usr/local/bin/uwsgi
> !!! no internal routing support, rebuild with pcre support !!!
> setgid() to 101
> setuid() to 100
> chdir() to /opt/mailman-web
> your memory page size is 4096 bytes
> detected max file descriptor number: 1048576
> building mime-types dictionary from file /etc/mime.types...1168 entry found
> lock engine: pthread robust mutexes
> thunder lock: disabled (you can enable it with --thunder-lock)
> uwsgi socket 0 bound to TCP address 0.0.0.0:8080 fd 8
> uwsgi socket 1 bound to TCP address 0.0.0.0:8000 fd 9
> Python version: 3.6.8 (default, Jan 30 2019, 23:58:16) [GCC 6.3.0]
> Python main interpreter initialized at 0x55a2df7f57e0
> python threads support enabled
> your server socket listen backlog is limited to 100 connections
> your mercy for graceful operations on workers is 60 seconds
> mapped 166752 bytes (162 KB) for 2 cores
> *** Operational MODE: threaded ***
> Traceback (most recent call last):
> File "/usr/local/lib/python3.6/site-packages/django/utils/module_loading.py", line 20, in import_string
> return getattr(module, class_name)
> AttributeError: module 'django.contrib.auth.middleware' has no attribute 'SessionAuthenticationMiddleware'
>
> The above exception was the direct cause of the following exception:
>
> Traceback (most recent call last):
> File "wsgi.py", line 38, in <module>
> application = get_wsgi_application()
> File "/usr/local/lib/python3.6/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application
> return WSGIHandler()
> File "/usr/local/lib/python3.6/site-packages/django/core/handlers/wsgi.py", line 136, in __init__
> self.load_middleware()
> File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line 34, in load_middleware
> middleware = import_string(middleware_path)
> File "/usr/local/lib/python3.6/site-packages/django/utils/module_loading.py", line 24, in import_string
> ) from err
> ImportError: Module "django.contrib.auth.middleware" does not define a "SessionAuthenticationMiddleware" attribute/class
> unable to load app 0 (mountpoint='') (callable not found or import error)
> *** no app loaded. going in full dynamic mode ***
> *** uWSGI is running in multiple interpreter mode ***
> spawned uWSGI master process (pid: 1)
> spawned uWSGI worker 1 (pid: 37, cores: 2)
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
>
> As per my investigation, this error possibly caused by Django upgrade:
>
> *The SessionAuthenticationMiddleware class is removed. It provided no functionality since session authentication is unconditionally enabled in Django 1.10.*
>
> See https://docs.djangoproject.com/en/2.0/releases/2.0/
>
> After I've removed the line
> https://github.com/maxking/docker-mailman/blob/master/postorius/mailman-web…
> from settings.py, the container is finally working.
>
> I've placed PR in github:
> https://github.com/maxking/docker-mailman/pull/314
Thank you for your contributions!
I have merged your pull request and it should now be out (hopefully!).
>
> Thank you for your help.
>
> Danil
>
>
> пт, 1 мар. 2019 г. в 04:33, Abhilash Raj <maxking(a)asynchronous.in>:
>>
>>
>> On Thu, Feb 28, 2019, at 5:19 PM, Abhilash Raj wrote:
>> > On February 27, 2019 11:53:34 PM PST, Danil Smirnov <danil(a)smirnov.la> wrote:
>> > >Hi Mark,
>> > >
>> > >Actually all this stuff happens inside the container after it's started
>> > >and
>> > >initialized without errors. I didn't amend the image anyhow.
>> > >
>> > >Also I have the configuration based on docker-compose.yaml provided in
>> > >the
>> > >repository which works just fine for mailman-web image.
>> > >
>> > >The very same config with postorius image (+ UWSGI_STATIC_MAP param)
>> > >fails
>> > >with 500 error...
>> > >
>> > >Now answering your questions:
>> > >
>> > >ср, 27 февр. 2019 г., 22:56 Mark Sapiro <mark(a)msapiro.net>:
>> > >
>> > >> do you have django-q in INSTALLED_APPS in your Django settings and
>> > >what
>> > >> is set for Q_CLUSTER?
>> > >>
>> > >
>> > >I've checked settings.py inside the container and I haven't found any
>> > >of
>> > >the mentioned configurations there.
>> > >
>> > >Does the manage.py that's being run here point to the right
>> > >settings.py?
>> > >>
>> > >
>> > >No clue.
>> > >
>> > >Also I wonder why we have some Hyperkitty-related cronjobs in non-HK
>> > >configured image?
>> > >
>> > >https://github.com/maxking/docker-mailman/blob/master/postorius/mailman-web…
>> >
>> > Because I am a dum dum ;-)
>> >
>> > Will work on removing those crons and stuff. Would be nice if you
>> > opened an issue on Github so that I don't forget.
>>
>> Should now be fixed in the latest image.
>>
>> >
>> > >Danil
>> > >
>> > >
>> > >
>> > >> --
>> > >> Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
>> > >> San Francisco Bay Area, California better use your sense - B.
>> > >Dylan
>> > >> _______________________________________________
>> > >> Mailman-users mailing list -- mailman-users(a)mailman3.org
>> > >> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
>> > >> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>> > >>
>> > >_______________________________________________
>> > >Mailman-users mailing list -- mailman-users(a)mailman3.org
>> > >To unsubscribe send an email to mailman-users-leave(a)mailman3.org
>> > >https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>> >
>> >
>> > --
>> > Sent from my Android device with K-9 Mail. Please excuse my brevity.
>>
>> --
>> thanks,
>> Abhilash Raj (maxking)
--
thanks,
Abhilash Raj (maxking)
6 years, 1 month

[MM3-users] Re: Mailman3 without Hyperkitty in docker
by Danil Smirnov
Thank you very much Abhilash!
Could you set up 'latest' tag in postotius repo
<https://hub.docker.com/r/maxking/postorius/tags> please - as it exists for
core/web?
I'd like to have consistent approach across the images...
Also it would be really great to extend image labelling used for
*quay.io/maxking/mailman-*:rolling
<http://quay.io/maxking/mailman-*:rolling>* images to Docker Hub ones...
Version identification is quite hard for Docker...
With my best regards,
Danil
сб, 2 мар. 2019 г. в 03:19, Abhilash Raj <maxking(a)asynchronous.in>:
>
>
> On Thu, Feb 28, 2019, at 10:18 PM, Danil Smirnov wrote:
>
> Hi Abhilash,
>
> Thank you very much - the previous error is fixed now.
>
> But I have another one now, which causes the same 500 Server Error:
>
> bash-4.3# cat /opt/mailman-web-data/logs/uwsgi-error.log
> *** Starting uWSGI 2.0.18 (64bit) on [Fri Mar 1 05:42:09 2019] ***
> compiled with version: 6.3.0 on 01 March 2019 01:52:42
> os: Linux-3.10.0-693.11.1.el7.x86_64 #1 SMP Mon Dec 4 23:52:40 UTC 2017
> nodename: mailman-web
> machine: x86_64
> clock source: unix
> detected number of CPU cores: 2
> current working directory: /opt/mailman-web
> detected binary path: /usr/local/bin/uwsgi
> !!! no internal routing support, rebuild with pcre support !!!
> setgid() to 101
> setuid() to 100
> chdir() to /opt/mailman-web
> your memory page size is 4096 bytes
> detected max file descriptor number: 1048576
> building mime-types dictionary from file /etc/mime.types...1168 entry found
> lock engine: pthread robust mutexes
> thunder lock: disabled (you can enable it with --thunder-lock)
> uwsgi socket 0 bound to TCP address 0.0.0.0:8080 fd 8
> uwsgi socket 1 bound to TCP address 0.0.0.0:8000 fd 9
> Python version: 3.6.8 (default, Jan 30 2019, 23:58:16) [GCC 6.3.0]
> Python main interpreter initialized at 0x55a2df7f57e0
> python threads support enabled
> your server socket listen backlog is limited to 100 connections
> your mercy for graceful operations on workers is 60 seconds
> mapped 166752 bytes (162 KB) for 2 cores
> *** Operational MODE: threaded ***
> Traceback (most recent call last):
> File
> "/usr/local/lib/python3.6/site-packages/django/utils/module_loading.py",
> line 20, in import_string
> return getattr(module, class_name)
> AttributeError: module 'django.contrib.auth.middleware' has no attribute
> 'SessionAuthenticationMiddleware'
>
> The above exception was the direct cause of the following exception:
>
> Traceback (most recent call last):
> File "wsgi.py", line 38, in <module>
> application = get_wsgi_application()
> File "/usr/local/lib/python3.6/site-packages/django/core/wsgi.py", line
> 13, in get_wsgi_application
> return WSGIHandler()
> File
> "/usr/local/lib/python3.6/site-packages/django/core/handlers/wsgi.py", line
> 136, in __init__
> self.load_middleware()
> File
> "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line
> 34, in load_middleware
> middleware = import_string(middleware_path)
> File
> "/usr/local/lib/python3.6/site-packages/django/utils/module_loading.py",
> line 24, in import_string
> ) from err
> ImportError: Module "django.contrib.auth.middleware" does not define a
> "SessionAuthenticationMiddleware" attribute/class
> unable to load app 0 (mountpoint='') (callable not found or import error)
> *** no app loaded. going in full dynamic mode ***
> *** uWSGI is running in multiple interpreter mode ***
> spawned uWSGI master process (pid: 1)
> spawned uWSGI worker 1 (pid: 37, cores: 2)
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
> --- no python application found, check your startup logs for errors ---
>
> As per my investigation, this error possibly caused by Django upgrade:
>
> *The SessionAuthenticationMiddleware class is removed. It provided no
> functionality since session authentication is unconditionally enabled in
> Django 1.10.*
>
> See https://docs.djangoproject.com/en/2.0/releases/2.0/
>
> After I've removed the line
>
> https://github.com/maxking/docker-mailman/blob/master/postorius/mailman-web…
> from settings.py, the container is finally working.
>
> I've placed PR in github:
> https://github.com/maxking/docker-mailman/pull/314
>
>
> Thank you for your contributions!
>
> I have merged your pull request and it should now be out (hopefully!).
>
>
> Thank you for your help.
>
> Danil
>
>
> пт, 1 мар. 2019 г. в 04:33, Abhilash Raj <maxking(a)asynchronous.in>:
>
>
>
> On Thu, Feb 28, 2019, at 5:19 PM, Abhilash Raj wrote:
> > On February 27, 2019 11:53:34 PM PST, Danil Smirnov <danil(a)smirnov.la>
> wrote:
> > >Hi Mark,
> > >
> > >Actually all this stuff happens inside the container after it's started
> > >and
> > >initialized without errors. I didn't amend the image anyhow.
> > >
> > >Also I have the configuration based on docker-compose.yaml provided in
> > >the
> > >repository which works just fine for mailman-web image.
> > >
> > >The very same config with postorius image (+ UWSGI_STATIC_MAP param)
> > >fails
> > >with 500 error...
> > >
> > >Now answering your questions:
> > >
> > >ср, 27 февр. 2019 г., 22:56 Mark Sapiro <mark(a)msapiro.net>:
> > >
> > >> do you have django-q in INSTALLED_APPS in your Django settings and
> > >what
> > >> is set for Q_CLUSTER?
> > >>
> > >
> > >I've checked settings.py inside the container and I haven't found any
> > >of
> > >the mentioned configurations there.
> > >
> > >Does the manage.py that's being run here point to the right
> > >settings.py?
> > >>
> > >
> > >No clue.
> > >
> > >Also I wonder why we have some Hyperkitty-related cronjobs in non-HK
> > >configured image?
> > >
> > >
> https://github.com/maxking/docker-mailman/blob/master/postorius/mailman-web…
> >
> > Because I am a dum dum ;-)
> >
> > Will work on removing those crons and stuff. Would be nice if you
> > opened an issue on Github so that I don't forget.
>
> Should now be fixed in the latest image.
>
> >
> > >Danil
> > >
> > >
> > >
> > >> --
> > >> Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
> > >> San Francisco Bay Area, California better use your sense - B.
> > >Dylan
> > >> _______________________________________________
> > >> Mailman-users mailing list -- mailman-users(a)mailman3.org
> > >> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> > >> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> > >>
> > >_______________________________________________
> > >Mailman-users mailing list -- mailman-users(a)mailman3.org
> > >To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> > >https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> >
> >
> > --
> > Sent from my Android device with K-9 Mail. Please excuse my brevity.
>
> --
> thanks,
> Abhilash Raj (maxking)
>
>
> --
> thanks,
> Abhilash Raj (maxking)
>
>
>
6 years, 1 month

[MM3-users] Re: No emails distributed after mail received for a new list following https://docs.list.org/en/latest/install/virtualenv.html on new mailman3 Debian 12 installation
by Philip Bondi
Thx very much for the assistance.
I've never used the REST api before. I don't think it's working, yet, for me. So I don't know how to dump my queues.
Here's my first try:
(venv) mailman@shackleton12:~$ mailman info
GNU Mailman 3.3.10 (Tom Sawyer)
Python 3.11.2 (main, Nov 30 2024, 21:22:50) [GCC 12.2.0]
config file: /etc/mailman3/mailman.cfg
db url: postgresql://mailman:PASSWORDSNIPPED@localhost/mailman
devmode: DISABLED
REST root url: http://localhost:8001/3.1/
REST credentials: restadmin:restpass
(venv) mailman@shackleton12:~$ python
Python 3.11.2 (main, Nov 30 2024, 21:22:50) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from mailmanclient import Client
>>> client = Client('http://localhost:8001/3.1', 'restadmin', 'restpass')
>>> dump(client.system)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'dump' is not defined
>>>
I can see messages from members in Posting Activity. But Non-Members do not yet show-up in posting activity. There are 3 non-member posts that I cannot find.
List Members (2)
CSV Export
Remove ALL members
Address Delivery Mode Moderation Action Bounce Score
maha(a)systemdatabase.com Regular List default 0
pjbondi(a)systemdatabase.com Regular List default 0
List Nonmembers (3)
Email Address:
Display Name:
Address Delivery Mode Moderation Action
01000195d3585cf6-feabd0f1-2f9c-4197-86f7-222af724c2f6-000000(a)amazonses.com Regular List default Delete
noreply(a)fromyourdentalprovider.com Regular Accept immediately (bypass other rules) Delete
notifications(a)goldencaredentalservices.com Regular Accept immediately (bypass other rules) Delete
mailman.log
Mar 26 12:21:19 2025 (2942) ACCEPT: <c176607f-8892-4a59-82bc-1f97c72d578a(a)systemdatabase.com>
[26/Mar/2025:12:21:32 -0400] "GET /3.1/lists/ebill(a)systemdatabase.ca HTTP/1.1" 200 368 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:21:32 -0400] "GET /3.1/lists/ebill(a)systemdatabase.ca/config HTTP/1.1" 200 3055 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:21:32 -0400] "GET /3.1/lists/ebill.systemdatabase.ca/roster/owner HTTP/1.1" 200 748 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:21:32 -0400] "GET /3.1/addresses/pjbondi(a)systemdatabase.com HTTP/1.1" 200 395 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:21:32 -0400] "GET /3.1/users/pjbondi(a)systemdatabase.com HTTP/1.1" 200 395 "-" "GNU Mailman REST client v3.3.5"
Mar 26 12:21:34 2025 (2939) HyperKitty archived message <c176607f-8892-4a59-82bc-1f97c72d578a(a)systemdatabase.com> to https://systemdatabase.ca/archives/list/ebill@systemdatabase.ca/message/H5G…
[26/Mar/2025:12:23:43 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146 HTTP/1.1" 200 395 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:23:43 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146/addresses HTTP/1.1" 200 500 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:23:43 -0400] "POST /3.1/members/find HTTP/1.1" 200 1363 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:23:43 -0400] "GET /3.1/addresses/pjbondi(a)systemdatabase.com HTTP/1.1" 200 395 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:23:43 -0400] "GET /3.1/lists/ebill(a)systemdatabase.ca HTTP/1.1" 200 368 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:23:43 -0400] "GET /3.1/lists/ebill.systemdatabase.ca/roster/owner HTTP/1.1" 200 748 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:23:43 -0400] "GET /3.1/addresses/pjbondi(a)systemdatabase.com HTTP/1.1" 200 395 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:23:49 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146 HTTP/1.1" 200 395 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:02 -0400] "GET /3.1/domains HTTP/1.1" 200 342 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:02 -0400] "GET /3.1/domains/systemdatabase.ca HTTP/1.1" 200 237 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:02 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146 HTTP/1.1" 200 395 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:03 -0400] "POST /3.1/lists/find HTTP/1.1" 200 843 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:07 -0400] "GET /3.1/lists/ebill.systemdatabase.ca HTTP/1.1" 200 368 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:08 -0400] "GET /3.1/lists/ebill.systemdatabase.ca/roster/owner?fields=email&fields=address&fields=self_link HTTP/1.1" 200 365 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:08 -0400] "GET /3.1/lists/ebill.systemdatabase.ca/roster/moderator?fields=email&fields=address&fields=self_link HTTP/1.1" 200 90 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:08 -0400] "GET /3.1/lists/ebill(a)systemdatabase.ca/config HTTP/1.1" 200 3055 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:08 -0400] "GET /3.1/lists/ebill.systemdatabase.ca/archivers HTTP/1.1" 200 100 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:08 -0400] "GET /3.1/lists/ebill(a)systemdatabase.ca/requests?request_type=subscription HTTP/1.1" 200 90 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:08 -0400] "GET /3.1/lists/ebill.systemdatabase.ca/member/pjbondi%40systemdatabase.com HTTP/1.1" 200 613 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:08 -0400] "GET /3.1/members/9773dcac5e9744ddbcf42ef0a83a9f1d/preferences HTTP/1.1" 200 271 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:08 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146 HTTP/1.1" 200 395 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:08 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146/preferred_address HTTP/1.1" 404 58 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:08 -0400] "GET /3.1/lists/ebill(a)systemdatabase.ca/requests/count?token_owner=moderator HTTP/1.1" 200 73 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:08 -0400] "GET /3.1/lists/ebill(a)systemdatabase.ca/held/count HTTP/1.1" 200 73 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:18 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146 HTTP/1.1" 200 395 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:18 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146/addresses HTTP/1.1" 200 500 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:18 -0400] "POST /3.1/members/find HTTP/1.1" 200 1363 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:18 -0400] "GET /3.1/lists/ebill.systemdatabase.ca HTTP/1.1" 200 368 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:18 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146 HTTP/1.1" 200 395 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:18 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146/preferred_address HTTP/1.1" 404 58 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:18 -0400] "GET /3.1/members/9773dcac5e9744ddbcf42ef0a83a9f1d/preferences HTTP/1.1" 200 271 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:30 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146 HTTP/1.1" 200 395 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:30 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146/addresses HTTP/1.1" 200 500 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:30 -0400] "POST /3.1/members/find HTTP/1.1" 200 1363 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:30 -0400] "GET /3.1/members/9773dcac5e9744ddbcf42ef0a83a9f1d/preferences HTTP/1.1" 200 271 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:30 -0400] "GET /3.1/addresses/pjbondi(a)systemdatabase.com HTTP/1.1" 200 395 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:49 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146 HTTP/1.1" 200 395 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:49 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146/addresses HTTP/1.1" 200 500 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:49 -0400] "POST /3.1/members/find HTTP/1.1" 200 1363 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:49 -0400] "GET /3.1/lists/ebill.systemdatabase.ca HTTP/1.1" 200 368 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:49 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146 HTTP/1.1" 200 395 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:49 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146/preferred_address HTTP/1.1" 404 58 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:49 -0400] "GET /3.1/members/9773dcac5e9744ddbcf42ef0a83a9f1d/preferences HTTP/1.1" 200 271 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:55 -0400] "GET /3.1/lists/ebill.systemdatabase.ca HTTP/1.1" 200 368 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:55 -0400] "GET /3.1/lists/ebill.systemdatabase.ca/roster/owner?fields=email&fields=address&fields=self_link HTTP/1.1" 200 365 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:55 -0400] "GET /3.1/lists/ebill.systemdatabase.ca/roster/moderator?fields=email&fields=address&fields=self_link HTTP/1.1" 200 90 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:55 -0400] "GET /3.1/lists/ebill(a)systemdatabase.ca/config HTTP/1.1" 200 3055 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:55 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146 HTTP/1.1" 200 395 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:55 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146/preferred_address HTTP/1.1" 404 58 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:55 -0400] "GET /3.1/users/befd42e8ea844204b074d39041de0146/addresses HTTP/1.1" 200 500 "-" "GNU Mailman REST client v3.3.5"
[26/Mar/2025:12:24:55 -0400] "POST /3.1/members/find HTTP/1.1" 200 1363 "-" "GNU Mailman REST client v3.3.5"
4 weeks

[MM3-users] Re: Performance of member listing [was: How to remove a nonmember...]
by skenny@scss.tcd.ie
OK, I've done a clean rebuild of my server with Puppet. (I'll post a copy of my docker-compose file and related config files at the end of this message.)
Via the postorius web interface, I've created a new list called scss-sysadmins(a)scss.tcd.ie, and I've added 1,800 nonmembers to it using this fairly basic piece of code:
---- add_nonmembers.py start ---------------------------------------
#!/usr/bin/python3
from mailmanclient import Client
import sys
listarg = str(sys.argv[1])
client = Client('http://172.19.199.2:8001/3.0', 'restadmin', 'restpass')
this_list = client.get_list(listarg)
this_list_short = this_list.list_name
work_dir = "/usr/local/mailman-scss/list_membership/" + this_list_short + "/"
nonmembers_add_file = work_dir + "nonmembers.add"
infile = open(nonmembers_add_file, "r")
for addr in infile:
if addr.isspace():
continue
addr = addr.strip()
print("Adding " + addr + "as a nonmember ")
this_list.add_role('nonmember', addr, display_name='')
infile.close()
---- add_nonmembers.py end ---------------------------------------
After doing this, a Postgres "select * from member" SQL command executed in the database container prints a total of 1,801 rows (one more than the number of nonmembers added).
In the web interface, I bring up the list of nonmembers, and then click on "delete" to remove an individual nonmember (in all that follows I've replaced the actual username with XXXXXXXX for privacy reasons). This fails after 30 seconds and the following message appears:
Something went wrong
Mailman REST API not available. Please start Mailman core.
Next, in the mailmain-core container, I increase Gunicorn's timeout parameter to 300 seconds (I edited /usr/lib/python3.6/site-packages/mailman/config/gunicorn.cfg and restarted the container), and try the same operation again. Here's what happens: (1) After 2 minutes and 3 seconds approx, the "Confirm remove role" page appears; (2) I click on "Remove XXXXXXXX(a)tcd.ie", and after a *further* 2 minutes and 3 or so seconds later, the operation completes - the nonmember no longer appears on the page.
The URL that appears in the address bar of my browser after clicking on "delete" is http://mailman-web.scss.tcd.ie/postorius/lists/scss-sysadmins.lists.scss.tc…
Here are the entries in the *.log files from the -web and -core containers generated by the latter (timeout = 300) attempt to remove a nonmember:
==> ./core/var/logs/mailman.log <==
[22/Apr/2020:17:17:25 +0000] "GET /3.1/lists/scss-sysadmins.lists.scss.tcd.ie HTTP/1.1" 200 395 "-" "GNU Mailman REST client v3.3.0"
[22/Apr/2020:17:19:20 +0000] "POST /3.1/members/find HTTP/1.1" 200 896038 "-" "GNU Mailman REST client v3.3.0"
==> ./web/logs/uwsgi.log <==
[pid: 21|app: 0|req: 65/198] 109.255.134.153 () {36 vars in 1160 bytes} [Wed Apr 22 17:17:25 2020] GET /postorius/lists/scss-sysadmins.lists.scss.tcd.ie/remove/nonmember/XXXXXXXX(a)tcd.ie => generated 6217 bytes in 115377 msecs (HTTP/1.1 200) 6 headers in 331 bytes (1 switches on core 0)
==> ./core/var/logs/mailman.log <==
[22/Apr/2020:17:19:45 +0000] "GET /3.1/lists/scss-sysadmins.lists.scss.tcd.ie HTTP/1.1" 200 395 "-" "GNU Mailman REST client v3.3.0"
[22/Apr/2020:17:21:48 +0000] "POST /3.1/members/find HTTP/1.1" 200 896038 "-" "GNU Mailman REST client v3.3.0"
[22/Apr/2020:17:21:48 +0000] "DELETE /3.1/lists/scss-sysadmins(a)lists.scss.tcd.ie/nonmember/XXXXXXXX%40tcd.ie HTTP/1.1" 204 0 "-" "GNU Mailman REST client v3.3.0"
==> ./web/logs/uwsgi.log <==
[pid: 21|app: 0|req: 66/199] 109.255.134.153 () {44 vars in 1320 bytes} [Wed Apr 22 17:19:45 2020] POST /postorius/lists/scss-sysadmins.lists.scss.tcd.ie/remove/nonmember/XXXXXXXX(a)tcd.ie => generated 0 bytes in 122966 msecs (HTTP/1.1 302) 7 headers in 450 bytes (1 switches on core 0)
==> ./core/var/logs/mailman.log <==
[22/Apr/2020:17:21:48 +0000] "GET /3.1/lists/scss-sysadmins.lists.scss.tcd.ie HTTP/1.1" 200 395 "-" "GNU Mailman REST client v3.3.0"
[22/Apr/2020:17:21:48 +0000] "GET /3.1/lists/scss-sysadmins.lists.scss.tcd.ie/roster/owner HTTP/1.1" 200 626 "-" "GNU Mailman REST client v3.3.0"
[22/Apr/2020:17:21:48 +0000] "GET /3.1/lists/scss-sysadmins.lists.scss.tcd.ie/roster/moderator HTTP/1.1" 200 90 "-" "GNU Mailman REST client v3.3.0"
[22/Apr/2020:17:21:48 +0000] "GET /3.1/members/find?list_id=scss-sysadmins.lists.scss.tcd.ie&role=nonmember&count=0&page=1 HTTP/1.1" 200 93 "-" "GNU Mailman REST client v3.3.0"
[22/Apr/2020:17:21:50 +0000] "GET /3.1/members/find?list_id=scss-sysadmins.lists.scss.tcd.ie&role=nonmember&count=25&page=1 HTTP/1.1" 200 12506 "-" "GNU Mailman REST client v3.3.0"
[22/Apr/2020:17:21:50 +0000] "GET /3.1/lists/scss-sysadmins(a)lists.scss.tcd.ie/requests HTTP/1.1" 200 90 "-" "GNU Mailman REST client v3.3.0"
[22/Apr/2020:17:21:50 +0000] "GET /3.1/lists/scss-sysadmins(a)lists.scss.tcd.ie/held?count=50&page=1 HTTP/1.1" 200 90 "-" "GNU Mailman REST client v3.3.0"
==> ./web/logs/uwsgi.log <==
[pid: 21|app: 0|req: 67/200] 109.255.134.153 () {38 vars in 1339 bytes} [Wed Apr 22 17:21:48 2020] GET /postorius/lists/scss-sysadmins.lists.scss.tcd.ie/members/nonmember/ => generated 41068 bytes in 2266 msecs (HTTP/1.1 200) 7 headers in 416 bytes (1 switches on core 0)
[pid: 21|app: -1|req: -1/201] 109.255.134.153 () {36 vars in 1031 bytes} [Wed Apr 22 17:21:51 2020] GET /static/postorius/img/mailman_logo_small_trans.png => generated 0 bytes in 0 msecs (HTTP/1.1 304) 0 headers in 29 bytes (0 switches on core 0)
My configuration uses two Docker compose files, one for a Postfix mail server container, and the other for all the mailman stuff. (As you'll see, my browser connection to the mailman-web container is facilitated by exposing port 8000 to port 80 on the Docker host. I'll front everything with an nginx reverse proxy later.) Here is the latter, followed by my mailman-extra.cfg and settings_local.py:
---- mailman-docker-compose.yml start ------------------------------------------------------
version: '2'
services:
mailman-core:
image: maxking/mailman-core:0.3
container_name: mailman-core
hostname: mailman-core
volumes:
- /opt/mailman/core:/opt/mailman/
- /etc/scss-mailman-config/mailman-extra.cfg:/opt/mailman/mailman-extra.cfg
- /usr/local/mailman-scss:/opt/mailman/scss
stop_grace_period: 30s
links:
- database:database
depends_on:
- database
environment:
- DATABASE_URL=postgres://mailman:mailmanpass@database/mailmandb
- DATABASE_TYPE=postgres
- DATABASE_CLASS=mailman.database.postgresql.PostgreSQLDatabase
- HYPERKITTY_API_KEY=someapikey
networks:
mailman:
ipv4_address: 172.19.199.2
restart: always
mailman-web:
image: maxking/mailman-web:0.3
container_name: mailman-web
hostname: mailman-web
ports:
- 80:8000
depends_on:
- database
links:
- mailman-core:mailman-core
- database:database
volumes:
- /opt/mailman/web:/opt/mailman-web-data
- /etc/scss-mailman-config/settings_local.py:/opt/mailman-web/settings_local.py
environment:
- DATABASE_TYPE=postgres
- DATABASE_URL=postgres://mailman:mailmanpass@database/mailmandb
- HYPERKITTY_API_KEY=someapikey
- SECRET_KEY=shhitsasecret
- SMTP_HOST=172.19.199.10
- MAILMAN_ADMIN_USER=skenny
- MAILMAN_ADMIN_EMAIL=skenny(a)scss.tcd.ie
- UWSGI_STATIC_MAP=/static=/opt/mailman-web-data/static
- SERVE_FROM_DOMAIN=mailman-web.scss.tcd.ie
- DEFAULT_FROM_DOMAIN=mailman-web.scss.tcd.ie
networks:
mailman:
ipv4_address: 172.19.199.3
restart: always
database:
environment:
POSTGRES_DB: mailmandb
POSTGRES_USER: mailman
POSTGRES_PASSWORD: mailmanpass
restart: always
image: postgres:9.6-alpine
volumes:
- /opt/mailman/database:/var/lib/postgresql/data
networks:
mailman:
ipv4_address: 172.19.199.4
networks:
mailman:
driver: bridge
ipam:
driver: default
config:
-
subnet: 172.19.199.0/24
---- mailman-docker-compose.yml end ------------------------------------------------------
---- mailman-extra.cfg start ------------------------------------------------------
# mailman-extra.cfg
[mta]
incoming: mailman.mta.postfix.LMTP
outgoing: mailman.mta.deliver.deliver
lmtp_host: 172.19.199.2
lmtp_port: 8024
smtp_host: 172.19.199.10
smtp_port: 25
configuration: /etc/postfix-mailman.cfg
[mailman]
# This address is the "site owner" address. Certain messages which must be
# delivered to a human, but which can't be delivered to a list owner (e.g. a
# bounce from a list owner), will be sent to this address. It should point to
# a human.
site_owner: mrrobot(a)lists2.scss.tcd.ie
[logging.smtp]
level: debug
path: smtp.log
---- mailman-extra.cfg end ------------------------------------------------------
---- settings_local.py start ------------------------------------------------------
# Hosts/domain names that are valid for this site; required if DEBUG is False
# See https://docs.djangoproject.com/en/1.8/ref/settings/#allowed-hosts
ALLOWED_HOSTS = [
"localhost", # Archiving API from Mailman, keep it.
# "lists.your-domain.org",
# Add here all production URLs you may have.
"mailman-web",
"mailman-web.scss.tcd.ie",
"172.19.199.3",
####sk os.environ.get('SERVE_FROM_DOMAIN'),
####sk os.environ.get('DJANGO_ALLOWED_HOSTS'),
]
INSTALLED_APPS = [
'hyperkitty',
'postorius',
'django_mailman3',
# Uncomment the next line to enable the admin:
'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'django_gravatar',
'compressor',
'haystack',
'django_extensions',
'django_q',
'allauth',
'allauth.account',
'allauth.socialaccount',
# --------------------------------------------------------------------------
# We're killing the following ... (tip from brian(a)emwd.com on this page:
# https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/thread/…
# But it doesn't stop people signing up. We need to deal with that via
# Nginx ....
# --------------------------------------------------------------------------
#'django_mailman3.lib.auth.fedora',
#'allauth.socialaccount.providers.openid',
#'allauth.socialaccount.providers.github',
#'allauth.socialaccount.providers.gitlab',
#'allauth.socialaccount.providers.google',
---- settings_local.py end ------------------------------------------------------
Thanks again for helping
Stephen
5 years

[MM3-users] Re: Mailman3 without Hyperkitty in docker
by Abhilash Raj
Test email to check something, please ignore.
Abhilash
On Fri, Mar 1, 2019, at 5:19 PM, Abhilash Raj wrote:
>
>
> On Thu, Feb 28, 2019, at 10:18 PM, Danil Smirnov wrote:
>> Hi Abhilash,
>>
>> Thank you very much - the previous error is fixed now.
>>
>> But I have another one now, which causes the same 500 Server Error:
>>
>> bash-4.3# cat /opt/mailman-web-data/logs/uwsgi-error.log
>> *** Starting uWSGI 2.0.18 (64bit) on [Fri Mar 1 05:42:09 2019] ***
>> compiled with version: 6.3.0 on 01 March 2019 01:52:42
>> os: Linux-3.10.0-693.11.1.el7.x86_64 #1 SMP Mon Dec 4 23:52:40 UTC 2017
>> nodename: mailman-web
>> machine: x86_64
>> clock source: unix
>> detected number of CPU cores: 2
>> current working directory: /opt/mailman-web
>> detected binary path: /usr/local/bin/uwsgi
>> !!! no internal routing support, rebuild with pcre support !!!
>> setgid() to 101
>> setuid() to 100
>> chdir() to /opt/mailman-web
>> your memory page size is 4096 bytes
>> detected max file descriptor number: 1048576
>> building mime-types dictionary from file /etc/mime.types...1168 entry found
>> lock engine: pthread robust mutexes
>> thunder lock: disabled (you can enable it with --thunder-lock)
>> uwsgi socket 0 bound to TCP address 0.0.0.0:8080 fd 8
>> uwsgi socket 1 bound to TCP address 0.0.0.0:8000 fd 9
>> Python version: 3.6.8 (default, Jan 30 2019, 23:58:16) [GCC 6.3.0]
>> Python main interpreter initialized at 0x55a2df7f57e0
>> python threads support enabled
>> your server socket listen backlog is limited to 100 connections
>> your mercy for graceful operations on workers is 60 seconds
>> mapped 166752 bytes (162 KB) for 2 cores
>> *** Operational MODE: threaded ***
>> Traceback (most recent call last):
>> File "/usr/local/lib/python3.6/site-packages/django/utils/module_loading.py", line 20, in import_string
>> return getattr(module, class_name)
>> AttributeError: module 'django.contrib.auth.middleware' has no attribute 'SessionAuthenticationMiddleware'
>>
>> The above exception was the direct cause of the following exception:
>>
>> Traceback (most recent call last):
>> File "wsgi.py", line 38, in <module>
>> application = get_wsgi_application()
>> File "/usr/local/lib/python3.6/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application
>> return WSGIHandler()
>> File "/usr/local/lib/python3.6/site-packages/django/core/handlers/wsgi.py", line 136, in __init__
>> self.load_middleware()
>> File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line 34, in load_middleware
>> middleware = import_string(middleware_path)
>> File "/usr/local/lib/python3.6/site-packages/django/utils/module_loading.py", line 24, in import_string
>> ) from err
>> ImportError: Module "django.contrib.auth.middleware" does not define a "SessionAuthenticationMiddleware" attribute/class
>> unable to load app 0 (mountpoint='') (callable not found or import error)
>> *** no app loaded. going in full dynamic mode ***
>> *** uWSGI is running in multiple interpreter mode ***
>> spawned uWSGI master process (pid: 1)
>> spawned uWSGI worker 1 (pid: 37, cores: 2)
>> --- no python application found, check your startup logs for errors ---
>> --- no python application found, check your startup logs for errors ---
>> --- no python application found, check your startup logs for errors ---
>> --- no python application found, check your startup logs for errors ---
>> --- no python application found, check your startup logs for errors ---
>> --- no python application found, check your startup logs for errors ---
>> --- no python application found, check your startup logs for errors ---
>> --- no python application found, check your startup logs for errors ---
>> --- no python application found, check your startup logs for errors ---
>> --- no python application found, check your startup logs for errors ---
>> --- no python application found, check your startup logs for errors ---
>> --- no python application found, check your startup logs for errors ---
>>
>> As per my investigation, this error possibly caused by Django upgrade:
>>
>> *The SessionAuthenticationMiddleware class is removed. It provided no functionality since session authentication is unconditionally enabled in Django 1.10.*
>>
>> See https://docs.djangoproject.com/en/2.0/releases/2.0/
>>
>> After I've removed the line
>> https://github.com/maxking/docker-mailman/blob/master/postorius/mailman-web…
>> from settings.py, the container is finally working.
>>
>> I've placed PR in github:
>> https://github.com/maxking/docker-mailman/pull/314
>
> Thank you for your contributions!
>
> I have merged your pull request and it should now be out (hopefully!).
>
>>
>> Thank you for your help.
>>
>> Danil
>>
>>
>> пт, 1 мар. 2019 г. в 04:33, Abhilash Raj <maxking(a)asynchronous.in>:
>>>
>>>
>>> On Thu, Feb 28, 2019, at 5:19 PM, Abhilash Raj wrote:
>>> > On February 27, 2019 11:53:34 PM PST, Danil Smirnov <danil(a)smirnov.la> wrote:
>>> > >Hi Mark,
>>> > >
>>> > >Actually all this stuff happens inside the container after it's started
>>> > >and
>>> > >initialized without errors. I didn't amend the image anyhow.
>>> > >
>>> > >Also I have the configuration based on docker-compose.yaml provided in
>>> > >the
>>> > >repository which works just fine for mailman-web image.
>>> > >
>>> > >The very same config with postorius image (+ UWSGI_STATIC_MAP param)
>>> > >fails
>>> > >with 500 error...
>>> > >
>>> > >Now answering your questions:
>>> > >
>>> > >ср, 27 февр. 2019 г., 22:56 Mark Sapiro <mark(a)msapiro.net>:
>>> > >
>>> > >> do you have django-q in INSTALLED_APPS in your Django settings and
>>> > >what
>>> > >> is set for Q_CLUSTER?
>>> > >>
>>> > >
>>> > >I've checked settings.py inside the container and I haven't found any
>>> > >of
>>> > >the mentioned configurations there.
>>> > >
>>> > >Does the manage.py that's being run here point to the right
>>> > >settings.py?
>>> > >>
>>> > >
>>> > >No clue.
>>> > >
>>> > >Also I wonder why we have some Hyperkitty-related cronjobs in non-HK
>>> > >configured image?
>>> > >
>>> > >https://github.com/maxking/docker-mailman/blob/master/postorius/mailman-web…
>>> >
>>> > Because I am a dum dum ;-)
>>> >
>>> > Will work on removing those crons and stuff. Would be nice if you
>>> > opened an issue on Github so that I don't forget.
>>>
>>> Should now be fixed in the latest image.
>>>
>>> >
>>> > >Danil
>>> > >
>>> > >
>>> > >
>>> > >> --
>>> > >> Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
>>> > >> San Francisco Bay Area, California better use your sense - B.
>>> > >Dylan
>>> > >> _______________________________________________
>>> > >> Mailman-users mailing list -- mailman-users(a)mailman3.org
>>> > >> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
>>> > >> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>>> > >>
>>> > >_______________________________________________
>>> > >Mailman-users mailing list -- mailman-users(a)mailman3.org
>>> > >To unsubscribe send an email to mailman-users-leave(a)mailman3.org
>>> > >https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>>> >
>>> >
>>> > --
>>> > Sent from my Android device with K-9 Mail. Please excuse my brevity.
>>>
>>> --
>>> thanks,
>>> Abhilash Raj (maxking)
>
> --
> thanks,
> Abhilash Raj (maxking)
>
>
--
thanks,
Abhilash Raj (maxking)
6 years, 1 month

[MM3-users] Re: Mailman, etc. upgrade woes and persistent bugs
by Stephen J. Turnbull
No answer required, I think I understand the situation pretty well
now. But if I'm missing something, I would very much appreciate
criticism.
Andreas Barth writes:
> Well, currently these are exclusive-states, I'd rather see them as
> or-able-states.
Right, I understand that. I don't understand *why*.
There are real costs to making them or-able. There are constraints:
'enabled' shouldn't (mustn't?) be or-able with any 'disabled-by-foo'
state. Such invariants are finicky to code and tricky to maintain,
compared to a simple "mutually exclusive".
I guess you want to allow the or of any subset of disabled states, but
presumably then they need to individually resettable in order for the
admin to clear their disable without overriding a subscriber's
preference or a bounce record. That set of controls is more complex,
and requires additional mental effort on the part of anyone using
them. If there are restrictions on which states can be or-ed, that's
more coding and maintenance cost.
Then there's the question whether the subscriber can override the admin's
setting. If they can, why does the admin have this power in the first
place?
> > > - "disabled by member" (could be set by an admin as well of course)
> >
> > Currently this is determined by whether the logged in user is the
> > subscriber or not. It's an interesting idea to allow it to be set by
> > an admin. Then we could have the semantics that the only transition
> > allowed from this state would be to enabled, so that admins would know
> > the user had intentionally disabled and know not to enable without
> > permission.
>
> Exactly.
But if the admin should respect the DBS (disabled by subscriber)
setting, DBS|DBA (disabled by admin) is logically equivalent to DBS.
Are there use cases where the admin does not want to repect the
subscriber's choice, and enables it anyway? What are they?
> Or while importing from another server, and there are people who
> have receiving mails disabled, this is the state that could be used
> for it.
Why wouldn't they get the exact state from the original server? Or do
you mean from a non-Mailman server?
> I expect that state to be the most-often used when setting a state
> manually.
>
> For "who set that", I would consider having some kind of history as
> useful (and displaying "last set by user / $person" to the admin but
> not the user).
Why not to the subscriber? As I explain below, the subscriber at
least needs to be able to distinguish between DBA and DBB (disabled by
bounce).
Keeping history of who is additional complexity, consumes a minor
amount of resources, and is insufficient to the purpose. Assuming
that there are reasons for admins to disable/enable other than as a
courtesy to a subscriber, that reason is presumably important. Not only
will the subscriber not know, but one admin may forget, and there may be
multiple admins.[1]
I still don't see any reason for an admin to disable delivery other
than as a courtesy to the subscriber or to the bounce processor.
> > > - "disabled for administrative reasons" (only by admin but user
> > > should be able to see it)
> >
> > I don't see why a user would need to see the difference. Unless
> > you're suggesting that the user would not be able to reenable without
> > asking the admin? What is the use case for this?
>
> I'm suggesting exactly that, yes. Why? Well, worked with user for too
> long. ;)
>
> E.g. consider that seeing archives works only for subscribers. And the
> subscriber in question complains about too many mails but still
> re-enables getting mails. This is basically "an admin has blocked you
> from more mails but not unsubscribed you". Might be an corner case,
> but still. Might also be too unimportant.
This is possible. If it occurs less than once in a million years,
it's "too unimportant" to even think about.[2] Have you actually done
this, or know anybody who has?
Is it really different from "at request of subscriber"? Practically,
the only difference I can see is if such a subscriber should be
prevented from overriding DBA. Are you suggesting that?
> > > - "bounced" (user and admin could reset it but not set it)
> >
> > Reenable but not set "bounced" is the current situation.
>
> Except if someone sets the state to "disabled" and then undo this, the
> state is automatically cleared.
This is possible, but it's not clear what harm would be done. In most
cases, bounces are intermittent and clear themselves up, in which case
this is the right thing. But if the subscriber bounces again, they'll
get disabled again, only cost is a slight waste of resources.
Here's how I would assess the issues. In the descriptions below, I am
assuming that each state is the only "active" state.
1. DBS is probably a "vacation" or "post-only" setting. For that
reason it should be re-enabled only by the subscriber (or by an
admin at the request of the subscriber).
2. DBB is a "warning" and a minor convenience to the email system
(slightly reducing traffic to mailboxes that are expected to fail,
and perhaps avoiding some reputational damage to the list).
Re-enabling much of the time causes no damage, as bounce disables
are typically due to things like out of disk space, and are likely
fixed by the time the subscription is reenabled. Most of the rest
will be zombie mailboxes, which will rarely be reenabled, will
quickly be redisabled by bounce, and at worst cause mild
inconvenience. Finally, events like a Mailman upgrade and the
April 2014 DMARC fiasco will be pretty evident, and the damage
there has already been done, reenabling actually fixes it
(although it may not be effective if the systemic problem hasn't
been resolved).
3. DBA is interesting mostly to *subscribers*, who need to
distinguish DBA (which the subscriber can reenable freely) from
DBB (which warns the subscriber to get in touch with their
postmaster). It's comforting to subscribers who may be sure they
never disabled their subscription; otherwise, it's semantically
identical to DBS as far as I can see.
Am I missing something?
It seems to me that given 1-3, assuming a 4-state design:
0. It's never unreasonable to re-enable, except DBS.
1. In the DBA state, changing to either DBS or DBB causes no
problems. (Changing to DBB is unlikely, since no mail is being
sent. However, it's possible, due to the race between Postorius
and mail in transit, and due to spam and other spoofing of the
list domain.)
2. In either of the other two states, we should never change to DBA.
3. In either of the other two states, if the other event occurs, you
would want the state to be DBS|DBB. I contend that if we
substitute DBS, little harm is done. If the subscriber reenables, it's
on them to fix the bounce problem if it reoccurs in any case.
Since the subscriber has deliberately set DBS, the admin should not
reenable without permission of the subscriber (I think we're mostly in
agreement on that).
I think this 4-state design is much easier to design, validate, and
maintain than the 16-state design you propose. If you're really
worried about DBS|DBB, then we could have a 5-state design where
enabling from DBS|DBB generates a warning that there may still be a
bounce problem on the subscription. Instead, it could leave the
subscription in state DBB, but that seems to me to be obnoxious, since
there's little likelihood of harm from reenabling, and in many cases
the bounce problem will have resolved itself in the meantime.
Regards,
Steve
Footnotes:
[1] There's also the question of GDPR obligations if personal reasons
(such as "violated code of conduct") are in the history.
[2] I'm not sure where we'd actually draw the line, probably on the
order of "once a year per thousand subscribers", that being every week
for say a campus-wide list at Ohio State University with 55,000 students.
4 years, 2 months

[MM3-users] Re: Installing mailman 3
by Rafael Mora
Hello,
Here it's mailman info:
[root@localhost bin]# ./mailman info
GNU Mailman 3.2.0a1 (La Villa Strangiato)
Python 3.6.0 (default, Jul 7 2017, 11:59:56)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)]
config file: /etc/mailman.cfg
db url: sqlite:////var/lib/mailman/data/mailman.db
devmode: DISABLED
REST root url: http://localhost:8001/3.1/
REST credentials: restadmin:restpass
Here it's mailman conf:
[root@localhost bin]# ./mailman conf
[antispam] header_checks:
[antispam] jump_chain: hold
[archiver.mail_archive] class: mailman.archiving.mailarchive.MailArchive
[archiver.mail_archive] clobber_date: maybe
[archiver.mail_archive] clobber_skew: 1d
[archiver.mail_archive] configuration: python:mailman.config.mail_archive
[archiver.mail_archive] enable: no
[archiver.master] class:
[archiver.master] clobber_date: maybe
[archiver.master] clobber_skew: 1d
[archiver.master] configuration: changeme
[archiver.master] enable: no
[archiver.mhonarc] class: mailman.archiving.mhonarc.MHonArc
[archiver.mhonarc] clobber_date: maybe
[archiver.mhonarc] clobber_skew: 1d
[archiver.mhonarc] configuration: python:mailman.config.mhonarc
[archiver.mhonarc] enable: no
[archiver.prototype] class: mailman.archiving.prototype.Prototype
[archiver.prototype] clobber_date: maybe
[archiver.prototype] clobber_skew: 1d
[archiver.prototype] configuration: changeme
[archiver.prototype] enable: no
[bounces] register_bounces_every: 15m
[database] class: mailman.database.sqlite.SQLiteDatabase
[database] debug: no
[database] url: sqlite:///$DATA_DIR/mailman.db
[devmode] enabled: no
[devmode] recipient:
[devmode] testing: no
[devmode] wait: 60s
[digests] mime_digest_keep_headers:
Date From To Cc Subject Message-ID Keywords
In-Reply-To References Content-Type MIME-Version
Content-Transfer-Encoding Precedence Reply-To
Message List-Post
[digests] plain_digest_keep_headers:
Message Date From
Subject To Cc
Message-ID Keywords
Content-Type
[dmarc] cache_lifetime: 7d
[dmarc] org_domain_data_url:
https://publicsuffix.org/list/public_suffix_list.dat
[dmarc] resolver_lifetime: 5s
[dmarc] resolver_timeout: 3s
[language.ar] charset: utf-8
[language.ar] description: Arabic
[language.ar] enabled: yes
[language.ast] charset: iso-8859-1
[language.ast] description: Asturian
[language.ast] enabled: yes
[language.ca] charset: utf-8
[language.ca] description: Catalan
[language.ca] enabled: yes
[language.cs] charset: iso-8859-2
[language.cs] description: Czech
[language.cs] enabled: yes
[language.da] charset: iso-8859-1
[language.da] description: Danish
[language.da] enabled: yes
[language.de] charset: iso-8859-1
[language.de] description: German
[language.de] enabled: yes
[language.el] charset: iso-8859-7
[language.el] description: Greek
[language.el] enabled: yes
[language.es] charset: iso-8859-1
[language.es] description: Spanish
[language.es] enabled: yes
[language.et] charset: iso-8859-15
[language.et] description: Estonian
[language.et] enabled: yes
[language.eu] charset: iso-8859-15
[language.eu] description: Euskara
[language.eu] enabled: yes
[language.fi] charset: iso-8859-1
[language.fi] description: Finnish
[language.fi] enabled: yes
[language.fr] charset: iso-8859-1
[language.fr] description: French
[language.fr] enabled: yes
[language.gl] charset: utf-8
[language.gl] description: Galician
[language.gl] enabled: yes
[language.he] charset: utf-8
[language.he] description: Hebrew
[language.he] enabled: yes
[language.hr] charset: iso-8859-2
[language.hr] description: Croatian
[language.hr] enabled: yes
[language.hu] charset: iso-8859-2
[language.hu] description: Hungarian
[language.hu] enabled: yes
[language.ia] charset: iso-8859-15
[language.ia] description: Interlingua
[language.ia] enabled: yes
[language.it] charset: iso-8859-1
[language.it] description: Italian
[language.it] enabled: yes
[language.ja] charset: euc-jp
[language.ja] description: Japanese
[language.ja] enabled: yes
[language.ko] charset: euc-kr
[language.ko] description: Korean
[language.ko] enabled: yes
[language.lt] charset: iso-8859-13
[language.lt] description: Lithuanian
[language.lt] enabled: yes
[language.nl] charset: iso-8859-1
[language.nl] description: Dutch
[language.nl] enabled: yes
[language.no] charset: iso-8859-1
[language.no] description: Norwegian
[language.no] enabled: yes
[language.pl] charset: iso-8859-2
[language.pl] description: Polish
[language.pl] enabled: yes
[language.pt] charset: iso-8859-1
[language.pt] description: Protuguese
[language.pt] enabled: yes
[language.pt_BR] charset: iso-8859-1
[language.pt_BR] description: Protuguese (Brazil)
[language.pt_BR] enabled: yes
[language.ro] charset: iso-8859-2
[language.ro] description: Romanian
[language.ro] enabled: yes
[language.ru] charset: koi8-r
[language.ru] description: Russian
[language.ru] enabled: yes
[language.sk] charset: utf-8
[language.sk] description: Slovak
[language.sk] enabled: yes
[language.sl] charset: iso-8859-2
[language.sl] description: Slovenian
[language.sl] enabled: yes
[language.sr] charset: utf-8
[language.sr] description: Serbian
[language.sr] enabled: yes
[language.sv] charset: iso-8859-1
[language.sv] description: Swedish
[language.sv] enabled: yes
[language.tr] charset: iso-8859-9
[language.tr] description: Turkish
[language.tr] enabled: yes
[language.uk] charset: utf-8
[language.uk] description: Ukrainian
[language.uk] enabled: yes
[language.vi] charset: utf-8
[language.vi] description: Vietnamese
[language.vi] enabled: yes
[language.zh_CN] charset: utf-8
[language.zh_CN] description: Chinese
[language.zh_CN] enabled: yes
[language.zh_TW] charset: utf-8
[language.zh_TW] description: Chinese (Taiwan)
[language.zh_TW] enabled: yes
[logging.archiver] datefmt: %b %d %H:%M:%S %Y
[logging.archiver] format: %(asctime)s (%(process)d) %(message)s
[logging.archiver] level: info
[logging.archiver] path: mailman.log
[logging.archiver] propagate: no
[logging.bounce] datefmt: %b %d %H:%M:%S %Y
[logging.bounce] format: %(asctime)s (%(process)d) %(message)s
[logging.bounce] level: info
[logging.bounce] path: bounce.log
[logging.bounce] propagate: no
[logging.config] datefmt: %b %d %H:%M:%S %Y
[logging.config] format: %(asctime)s (%(process)d) %(message)s
[logging.config] level: info
[logging.config] path: mailman.log
[logging.config] propagate: no
[logging.database] datefmt: %b %d %H:%M:%S %Y
[logging.database] format: %(asctime)s (%(process)d) %(message)s
[logging.database] level: warn
[logging.database] path: mailman.log
[logging.database] propagate: no
[logging.debug] datefmt: %b %d %H:%M:%S %Y
[logging.debug] format: %(asctime)s (%(process)d) %(message)s
[logging.debug] level: info
[logging.debug] path: debug.log
[logging.debug] propagate: no
[logging.error] datefmt: %b %d %H:%M:%S %Y
[logging.error] format: %(asctime)s (%(process)d) %(message)s
[logging.error] level: info
[logging.error] path: mailman.log
[logging.error] propagate: no
[logging.fromusenet] datefmt: %b %d %H:%M:%S %Y
[logging.fromusenet] format: %(asctime)s (%(process)d) %(message)s
[logging.fromusenet] level: info
[logging.fromusenet] path: mailman.log
[logging.fromusenet] propagate: no
[logging.http] datefmt: %b %d %H:%M:%S %Y
[logging.http] format: %(asctime)s (%(process)d) %(message)s
[logging.http] level: info
[logging.http] path: mailman.log
[logging.http] propagate: no
[logging.locks] datefmt: %b %d %H:%M:%S %Y
[logging.locks] format: %(asctime)s (%(process)d) %(message)s
[logging.locks] level: info
[logging.locks] path: mailman.log
[logging.locks] propagate: no
[logging.mischief] datefmt: %b %d %H:%M:%S %Y
[logging.mischief] format: %(asctime)s (%(process)d) %(message)s
[logging.mischief] level: info
[logging.mischief] path: mailman.log
[logging.mischief] propagate: no
[logging.root] datefmt: %b %d %H:%M:%S %Y
[logging.root] format: %(asctime)s (%(process)d) %(message)s
[logging.root] level: info
[logging.root] path: mailman.log
[logging.root] propagate: no
[logging.runner] datefmt: %b %d %H:%M:%S %Y
[logging.runner] format: %(asctime)s (%(process)d) %(message)s
[logging.runner] level: info
[logging.runner] path: mailman.log
[logging.runner] propagate: no
[logging.smtp] datefmt: %b %d %H:%M:%S %Y
[logging.smtp] every: $msgid smtp to $listname for $recip recips, completed
in $time seconds
[logging.smtp] failure: $msgid delivery to $recip failed with code
$smtpcode, $smtpmsg
[logging.smtp] format: %(asctime)s (%(process)d) %(message)s
[logging.smtp] level: info
[logging.smtp] path: smtp.log
[logging.smtp] propagate: no
[logging.smtp] refused: $msgid post to $listname from $sender, $size bytes,
$refused failures
[logging.smtp] success: $msgid post to $listname from $sender, $size bytes
[logging.subscribe] datefmt: %b %d %H:%M:%S %Y
[logging.subscribe] format: %(asctime)s (%(process)d) %(message)s
[logging.subscribe] level: info
[logging.subscribe] path: mailman.log
[logging.subscribe] propagate: no
[logging.vette] datefmt: %b %d %H:%M:%S %Y
[logging.vette] format: %(asctime)s (%(process)d) %(message)s
[logging.vette] level: info
[logging.vette] path: mailman.log
[logging.vette] propagate: no
[mailman] cache_life: 7d
[mailman] default_language: en
[mailman] email_commands_max_lines: 10
[mailman] filtered_messages_are_preservable: no
[mailman] html_to_plain_text_command: /usr/bin/lynx -dump $filename
[mailman] layout: fhs
[mailman] listname_chars: [-_.0-9a-z]
[mailman] noreply_address: noreply
[mailman] pending_request_life: 3d
[mailman] post_hook:
[mailman] pre_hook:
[mailman] sender_headers: from from_ reply-to sender
[mailman] site_owner: changeme(a)example.com
[mta] configuration: python:mailman.config.postfix
[mta] delivery_retry_period: 5d
[mta] incoming: mailman.mta.postfix.LMTP
[mta] lmtp_host: 127.0.0.1 # IP where Mailman should listen for
emails from MTA
[mta] lmtp_port: 8024
[mta] max_autoresponses_per_day: 10
[mta] max_delivery_threads: 0
[mta] max_recipients: 500
[mta] max_sessions_per_connection: 0
[mta] outgoing: mailman.mta.deliver.deliver
[mta] remove_dkim_headers: no
[mta] smtp_host: 127.0.0.1 # IP Where MTA is listening for emails
[mta] smtp_pass:
[mta] smtp_port: 25
[mta] smtp_user:
[mta] verp_confirm_format: $address+$cookie
[mta] verp_confirm_regexp: ^(.*<)?(?P<addr>[^+]+?)\+(?P<cookie>[^@]+)@.*$
[mta] verp_confirmations: no
[mta] verp_delimiter: +
[mta] verp_delivery_interval: 0
[mta] verp_format: ${bounces}+${local}=${domain}
[mta] verp_personalized_deliveries: no
[mta] verp_probe_format: $bounces+$token@$domain
[mta] verp_probe_regexp: ^(?P<bounces>[^+]+?)\+(?P<token>[^@]+)@.*$
[mta] verp_probes: no
[mta] verp_regexp:
^(?P<bounces>[^+]+?)\+(?P<local>[^=]+)=(?P<domain>[^@]+)@.*$
[nntp] host:
[nntp] password:
[nntp] port:
[nntp] remove_headers:
nntp-posting-host nntp-posting-date x-trace
x-complaints-to xref date-received posted
posting-version relay-version received
[nntp] rewrite_duplicate_headers:
To X-Original-To
CC X-Original-CC
Content-Transfer-Encoding X-Original-Content-Transfer-Encoding
MIME-Version X-MIME-Version
[nntp] user:
[passwords] configuration: python:mailman.config.passlib
[passwords] password_length: 8
[shell] banner: Welcome to the GNU Mailman shell
[shell] history_file:
[shell] prompt: >>>
[shell] use_ipython: no
[styles] default: legacy-default
[styles] paths:
mailman.styles
[webservice] admin_pass: restpass
[webservice] admin_user: restadmin
[webservice] api_version: 3.1
[webservice] hostname: localhost
[webservice] port: 8001
[webservice] show_tracebacks: yes
[webservice] use_https: no
What do you suggest? Thank you
El mar., 11 jul. 2017 a las 14:31, Simon Hanna (<simon.hanna(a)serve-me.info>)
escribió:
> Below is how I would recommend to run Mailman for production using a
> virtualenv
>
> # useradd -r -m -d /var/lib/mailman mailman
>
> # su - mailman
>
>
> $ python3 -m venv env
> $ source env/bin/activate
> $ pip install mailman
> $ mailman info
>
> Now you should have a working configuration in /var/lib/mailman/var/
>
> to run mailman you don't need to activate the virtualenv, just use the
> executable /var/lib/mailman/env/bin/mailman
>
> cheers,
> Simon
> _______________________________________________
> Mailman-users mailing list
> mailman-users(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>
--
Atentamente / Best Regards
Ing. Rafael Mora
7 years, 9 months

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

[MM3-users] E-mail every minute: "Cron <www-data@sharky5> ..."
by Robert Heller
What am I missing? I *think* I have mailman3 *mostly* setup, but there are
still some configuration things that are missing, but I am not sure how to fix
them (the docs are NOT clear). I am getting an e-mail *every* minute that
looks like:
From www-data(a)deepsoft.com Sat Jul 6 17:38:03 2024
Return-Path: <www-data(a)deepsoft.com>
X-Spam-Checker-Version: SpamAssassin 4.0.0 (2022-12-13) on sharky5.deepsoft.com
X-Spam-Level:
X-Spam-Status: No, score=-850.0 required=5.0 tests�YES_00,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NO_RELAYS,URIBL_BLOCKED,
USER_IN_WELCOMELIST autolearn=ham autolearn_force=no version=4.0.0
X-Original-To: www-data
Delivered-To: www-data(a)deepsoft.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d�epsoft.com;
s�epsoft.com; t20301883;
bh=qGrVTBfV1NiqgxCIzSaXwoKZ0lKxKvaK56k31yXU2Sk=;
h=From:To:Subject:Date:From;
b=jTml1ZF+qGkmS2tcz5kgZHjOyPxeaWIQiX1mzAF3ZfZWb0ziVLxutkcej5mGapUOq
PpH6ExYM1TEipMTYQ/JRY/74vz2dEpebDrZqjyY3KakxLWiyFFEb5glmQYZGvz9wr2
e5ljD0Shku4fbRoaxO7XMQCn/fmx3+D8tI/ZPbMQReceived: by sharky5.deepsoft.com (Postfix, from userid 33)
id 5257D4C1296; Sat, 6 Jul 2024 17:38:03 -0400 (EDT)
From: root(a)deepsoft.com (Cron Daemon)
To: www-data(a)deepsoft.com
Subject: Cron <www-data@sharky5> [ -f /usr/bin/django-admin ] && flock -n /var/run/mailman3-web/cron.minutely /usr/share/mailman3-web/manage.py runjobs minutely
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/var/www>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=www-data>
Message-Id: <20240706213803.5257D4C1296(a)sharky5.deepsoft.com>
Date: Sat, 6 Jul 2024 17:38:03 -0400 (EDT)
X-Scanned-By: MIMEDefang 3.3 on 108.161.129.198
Status: R
/usr/lib/python3/dist-packages/django_q/conf.py:139: UserWarning: Retry and timeout are misconfigured. Set retry larger than timeout,
failure to do so will cause the tasks to be retriggered before completion.
See https://django-q.readthedocs.io/en/latest/configure.html#retry for details.
warn(
System check identified some issues:
WARNINGS:
django_mailman3.MailDomain: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the DjangoMailman3Config.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
django_mailman3.Profile: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the DjangoMailman3Config.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Attachment: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Email: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Favorite: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.LastView: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.MailingList: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Profile: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Tag: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Tagging: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Thread: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.ThreadCategory: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Vote: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
postorius.EmailTemplate: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the PostoriusConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
And I get this output from sudo mailman-web check --no-color :
System check identified some issues:
WARNINGS:
django_mailman3.MailDomain: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the DjangoMailman3Config.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
django_mailman3.Profile: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the DjangoMailman3Config.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Attachment: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Email: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Favorite: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.LastView: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.MailingList: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Profile: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Tag: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Tagging: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Thread: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.ThreadCategory: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
hyperkitty.Vote: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the HyperKittyConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
postorius.EmailTemplate: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the PostoriusConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
System check identified 14 issues (0 silenced).
Again, the docs are not helpful (at least not to me).
--
Robert Heller -- Cell: 413-658-7953 GV: 978-633-5364
Deepwoods Software -- Custom Software Services
http://www.deepsoft.com/ -- Linux Administration Services
heller(a)deepsoft.com -- Webhosting Services
9 months, 2 weeks

[MM3-users] Re: Mailman3 without Hyperkitty in docker
by Abhilash Raj
On Sat, Mar 2, 2019, at 1:09 AM, Danil Smirnov wrote:
> Thank you very much Abhilash!
>
> Could you set up 'latest' tag in postotius repo <https://hub.docker.com/r/maxking/postorius/tags> please - as it exists for core/web?
> I'd like to have consistent approach across the images...
Done, triggered a build on Dockerhub.
docker.io/maxking/postorius:latest
This should be available when the build is done.
>
> Also it would be really great to extend image labelling used for *quay.io/maxking/mailman-*:rolling* images to Docker Hub ones... Version identification is quite hard for Docker...
rolling tags should be available on DockerHub too. They are replicated on both registries.
>
> With my best regards,
> Danil
>
> сб, 2 мар. 2019 г. в 03:19, Abhilash Raj <maxking(a)asynchronous.in>:
>> __
>>
>>
>> On Thu, Feb 28, 2019, at 10:18 PM, Danil Smirnov wrote:
>>> Hi Abhilash,
>>>
>>> Thank you very much - the previous error is fixed now.
>>>
>>> But I have another one now, which causes the same 500 Server Error:
>>>
>>> bash-4.3# cat /opt/mailman-web-data/logs/uwsgi-error.log
>>> *** Starting uWSGI 2.0.18 (64bit) on [Fri Mar 1 05:42:09 2019] ***
>>> compiled with version: 6.3.0 on 01 March 2019 01:52:42
>>> os: Linux-3.10.0-693.11.1.el7.x86_64 #1 SMP Mon Dec 4 23:52:40 UTC 2017
>>> nodename: mailman-web
>>> machine: x86_64
>>> clock source: unix
>>> detected number of CPU cores: 2
>>> current working directory: /opt/mailman-web
>>> detected binary path: /usr/local/bin/uwsgi
>>> !!! no internal routing support, rebuild with pcre support !!!
>>> setgid() to 101
>>> setuid() to 100
>>> chdir() to /opt/mailman-web
>>> your memory page size is 4096 bytes
>>> detected max file descriptor number: 1048576
>>> building mime-types dictionary from file /etc/mime.types...1168 entry found
>>> lock engine: pthread robust mutexes
>>> thunder lock: disabled (you can enable it with --thunder-lock)
>>> uwsgi socket 0 bound to TCP address 0.0.0.0:8080 fd 8
>>> uwsgi socket 1 bound to TCP address 0.0.0.0:8000 fd 9
>>> Python version: 3.6.8 (default, Jan 30 2019, 23:58:16) [GCC 6.3.0]
>>> Python main interpreter initialized at 0x55a2df7f57e0
>>> python threads support enabled
>>> your server socket listen backlog is limited to 100 connections
>>> your mercy for graceful operations on workers is 60 seconds
>>> mapped 166752 bytes (162 KB) for 2 cores
>>> *** Operational MODE: threaded ***
>>> Traceback (most recent call last):
>>> File "/usr/local/lib/python3.6/site-packages/django/utils/module_loading.py", line 20, in import_string
>>> return getattr(module, class_name)
>>> AttributeError: module 'django.contrib.auth.middleware' has no attribute 'SessionAuthenticationMiddleware'
>>>
>>> The above exception was the direct cause of the following exception:
>>>
>>> Traceback (most recent call last):
>>> File "wsgi.py", line 38, in <module>
>>> application = get_wsgi_application()
>>> File "/usr/local/lib/python3.6/site-packages/django/core/wsgi.py", line 13, in get_wsgi_application
>>> return WSGIHandler()
>>> File "/usr/local/lib/python3.6/site-packages/django/core/handlers/wsgi.py", line 136, in __init__
>>> self.load_middleware()
>>> File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line 34, in load_middleware
>>> middleware = import_string(middleware_path)
>>> File "/usr/local/lib/python3.6/site-packages/django/utils/module_loading.py", line 24, in import_string
>>> ) from err
>>> ImportError: Module "django.contrib.auth.middleware" does not define a "SessionAuthenticationMiddleware" attribute/class
>>> unable to load app 0 (mountpoint='') (callable not found or import error)
>>> *** no app loaded. going in full dynamic mode ***
>>> *** uWSGI is running in multiple interpreter mode ***
>>> spawned uWSGI master process (pid: 1)
>>> spawned uWSGI worker 1 (pid: 37, cores: 2)
>>> --- no python application found, check your startup logs for errors ---
>>> --- no python application found, check your startup logs for errors ---
>>> --- no python application found, check your startup logs for errors ---
>>> --- no python application found, check your startup logs for errors ---
>>> --- no python application found, check your startup logs for errors ---
>>> --- no python application found, check your startup logs for errors ---
>>> --- no python application found, check your startup logs for errors ---
>>> --- no python application found, check your startup logs for errors ---
>>> --- no python application found, check your startup logs for errors ---
>>> --- no python application found, check your startup logs for errors ---
>>> --- no python application found, check your startup logs for errors ---
>>> --- no python application found, check your startup logs for errors ---
>>>
>>> As per my investigation, this error possibly caused by Django upgrade:
>>>
>>> *The SessionAuthenticationMiddleware class is removed. It provided no functionality since session authentication is unconditionally enabled in Django 1.10.*
>>>
>>> See https://docs.djangoproject.com/en/2.0/releases/2.0/
>>>
>>> After I've removed the line
>>> https://github.com/maxking/docker-mailman/blob/master/postorius/mailman-web…
>>> from settings.py, the container is finally working.
>>>
>>> I've placed PR in github:
>>> https://github.com/maxking/docker-mailman/pull/314
>>
>> Thank you for your contributions!
>>
>> I have merged your pull request and it should now be out (hopefully!).
>>
>>>
>>> Thank you for your help.
>>>
>>> Danil
>>>
>>>
>>> пт, 1 мар. 2019 г. в 04:33, Abhilash Raj <maxking(a)asynchronous.in>:
>>>>
>>>>
>>>> On Thu, Feb 28, 2019, at 5:19 PM, Abhilash Raj wrote:
>>>> > On February 27, 2019 11:53:34 PM PST, Danil Smirnov <danil(a)smirnov.la> wrote:
>>>> > >Hi Mark,
>>>> > >
>>>> > >Actually all this stuff happens inside the container after it's started
>>>> > >and
>>>> > >initialized without errors. I didn't amend the image anyhow.
>>>> > >
>>>> > >Also I have the configuration based on docker-compose.yaml provided in
>>>> > >the
>>>> > >repository which works just fine for mailman-web image.
>>>> > >
>>>> > >The very same config with postorius image (+ UWSGI_STATIC_MAP param)
>>>> > >fails
>>>> > >with 500 error...
>>>> > >
>>>> > >Now answering your questions:
>>>> > >
>>>> > >ср, 27 февр. 2019 г., 22:56 Mark Sapiro <mark(a)msapiro.net>:
>>>> > >
>>>> > >> do you have django-q in INSTALLED_APPS in your Django settings and
>>>> > >what
>>>> > >> is set for Q_CLUSTER?
>>>> > >>
>>>> > >
>>>> > >I've checked settings.py inside the container and I haven't found any
>>>> > >of
>>>> > >the mentioned configurations there.
>>>> > >
>>>> > >Does the manage.py that's being run here point to the right
>>>> > >settings.py?
>>>> > >>
>>>> > >
>>>> > >No clue.
>>>> > >
>>>> > >Also I wonder why we have some Hyperkitty-related cronjobs in non-HK
>>>> > >configured image?
>>>> > >
>>>> > >https://github.com/maxking/docker-mailman/blob/master/postorius/mailman-web…
>>>> >
>>>> > Because I am a dum dum ;-)
>>>> >
>>>> > Will work on removing those crons and stuff. Would be nice if you
>>>> > opened an issue on Github so that I don't forget.
>>>>
>>>> Should now be fixed in the latest image.
>>>>
>>>> >
>>>> > >Danil
>>>> > >
>>>> > >
>>>> > >
>>>> > >> --
>>>> > >> Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
>>>> > >> San Francisco Bay Area, California better use your sense - B.
>>>> > >Dylan
>>>> > >> _______________________________________________
>>>> > >> Mailman-users mailing list -- mailman-users(a)mailman3.org
>>>> > >> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
>>>> > >> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>>>> > >>
>>>> > >_______________________________________________
>>>> > >Mailman-users mailing list -- mailman-users(a)mailman3.org
>>>> > >To unsubscribe send an email to mailman-users-leave(a)mailman3.org
>>>> > >https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>>>> >
>>>> >
>>>> > --
>>>> > Sent from my Android device with K-9 Mail. Please excuse my brevity.
>>>>
>>>> --
>>>> thanks,
>>>> Abhilash Raj (maxking)
>>
>> --
>> thanks,
>> Abhilash Raj (maxking)
>>
>>
--
thanks,
Abhilash Raj (maxking)
6 years, 1 month

[MM3-users] Re: Mailman, etc. upgrade woes and persistent bugs
by Abhilash Raj
I am trying to distill some information from this discussion to be
used for the implementation in Postorius. I'll maybe reiterate a bit
of what Steve was saying just to confirm I am on the same page.
On Tue, Feb 16, 2021, at 7:23 AM, Stephen J. Turnbull wrote:
> No answer required, I think I understand the situation pretty well
> now. But if I'm missing something, I would very much appreciate
> criticism.
>
> Andreas Barth writes:
>
> > Well, currently these are exclusive-states, I'd rather see them as
> > or-able-states.
>
> Right, I understand that. I don't understand *why*.
>
> There are real costs to making them or-able. There are constraints:
> 'enabled' shouldn't (mustn't?) be or-able with any 'disabled-by-foo'
> state. Such invariants are finicky to code and tricky to maintain,
> compared to a simple "mutually exclusive".
>
> I guess you want to allow the or of any subset of disabled states, but
> presumably then they need to individually resettable in order for the
> admin to clear their disable without overriding a subscriber's
> preference or a bounce record. That set of controls is more complex,
> and requires additional mental effort on the part of anyone using
> them. If there are restrictions on which states can be or-ed, that's
> more coding and maintenance cost.
>
> Then there's the question whether the subscriber can override the admin's
> setting. If they can, why does the admin have this power in the first
> place?
>
> > > > - "disabled by member" (could be set by an admin as well of course)
> > >
> > > Currently this is determined by whether the logged in user is the
> > > subscriber or not. It's an interesting idea to allow it to be set by
> > > an admin. Then we could have the semantics that the only transition
> > > allowed from this state would be to enabled, so that admins would know
> > > the user had intentionally disabled and know not to enable without
> > > permission.
> >
> > Exactly.
>
> But if the admin should respect the DBS (disabled by subscriber)
> setting, DBS|DBA (disabled by admin) is logically equivalent to DBS.
> Are there use cases where the admin does not want to repect the
> subscriber's choice, and enables it anyway? What are they?
>
> > Or while importing from another server, and there are people who
> > have receiving mails disabled, this is the state that could be used
> > for it.
>
> Why wouldn't they get the exact state from the original server? Or do
> you mean from a non-Mailman server?
>
> > I expect that state to be the most-often used when setting a state
> > manually.
> >
> > For "who set that", I would consider having some kind of history as
> > useful (and displaying "last set by user / $person" to the admin but
> > not the user).
>
> Why not to the subscriber? As I explain below, the subscriber at
> least needs to be able to distinguish between DBA and DBB (disabled by
> bounce).
>
> Keeping history of who is additional complexity, consumes a minor
> amount of resources, and is insufficient to the purpose. Assuming
> that there are reasons for admins to disable/enable other than as a
> courtesy to a subscriber, that reason is presumably important. Not only
> will the subscriber not know, but one admin may forget, and there may be
> multiple admins.[1]
>
> I still don't see any reason for an admin to disable delivery other
> than as a courtesy to the subscriber or to the bounce processor.
>
> > > > - "disabled for administrative reasons" (only by admin but user
> > > > should be able to see it)
> > >
> > > I don't see why a user would need to see the difference. Unless
> > > you're suggesting that the user would not be able to reenable without
> > > asking the admin? What is the use case for this?
> >
> > I'm suggesting exactly that, yes. Why? Well, worked with user for too
> > long. ;)
> >
> > E.g. consider that seeing archives works only for subscribers. And the
> > subscriber in question complains about too many mails but still
> > re-enables getting mails. This is basically "an admin has blocked you
> > from more mails but not unsubscribed you". Might be an corner case,
> > but still. Might also be too unimportant.
>
> This is possible. If it occurs less than once in a million years,
> it's "too unimportant" to even think about.[2] Have you actually done
> this, or know anybody who has?
>
> Is it really different from "at request of subscriber"? Practically,
> the only difference I can see is if such a subscriber should be
> prevented from overriding DBA. Are you suggesting that?
>
> > > > - "bounced" (user and admin could reset it but not set it)
> > >
> > > Reenable but not set "bounced" is the current situation.
> >
> > Except if someone sets the state to "disabled" and then undo this, the
> > state is automatically cleared.
>
> This is possible, but it's not clear what harm would be done. In most
> cases, bounces are intermittent and clear themselves up, in which case
> this is the right thing. But if the subscriber bounces again, they'll
> get disabled again, only cost is a slight waste of resources.
>
> Here's how I would assess the issues. In the descriptions below, I am
> assuming that each state is the only "active" state.
>
> 1. DBS is probably a "vacation" or "post-only" setting. For that
> reason it should be re-enabled only by the subscriber (or by an
> admin at the request of the subscriber).
> 2. DBB is a "warning" and a minor convenience to the email system
> (slightly reducing traffic to mailboxes that are expected to fail,
> and perhaps avoiding some reputational damage to the list).
> Re-enabling much of the time causes no damage, as bounce disables
> are typically due to things like out of disk space, and are likely
> fixed by the time the subscription is reenabled. Most of the rest
> will be zombie mailboxes, which will rarely be reenabled, will
> quickly be redisabled by bounce, and at worst cause mild
> inconvenience. Finally, events like a Mailman upgrade and the
> April 2014 DMARC fiasco will be pretty evident, and the damage
> there has already been done, reenabling actually fixes it
> (although it may not be effective if the systemic problem hasn't
> been resolved).
> 3. DBA is interesting mostly to *subscribers*, who need to
> distinguish DBA (which the subscriber can reenable freely) from
> DBB (which warns the subscriber to get in touch with their
> postmaster). It's comforting to subscribers who may be sure they
> never disabled their subscription; otherwise, it's semantically
> identical to DBS as far as I can see.
>
> Am I missing something?
>
> It seems to me that given 1-3, assuming a 4-state design:
>
> 0. It's never unreasonable to re-enable, except DBS.
> 1. In the DBA state, changing to either DBS or DBB causes no
> problems. (Changing to DBB is unlikely, since no mail is being
> sent. However, it's possible, due to the race between Postorius
> and mail in transit, and due to spam and other spoofing of the
> list domain.)
> 2. In either of the other two states, we should never change to DBA.
> 3. In either of the other two states, if the other event occurs, you
> would want the state to be DBS|DBB. I contend that if we
> substitute DBS, little harm is done. If the subscriber reenables, it's
> on them to fix the bounce problem if it reoccurs in any case.
> Since the subscriber has deliberately set DBS, the admin should not
> reenable without permission of the subscriber (I think we're mostly in
> agreement on that).
>
> I think this 4-state design is much easier to design, validate, and
> maintain than the 16-state design you propose. If you're really
> worried about DBS|DBB, then we could have a 5-state design where
> enabling from DBS|DBB generates a warning that there may still be a
> bounce problem on the subscription. Instead, it could leave the
> subscription in state DBB, but that seems to me to be obnoxious, since
> there's little likelihood of harm from reenabling, and in many cases
> the bounce problem will have resolved itself in the meantime.
>
So it seems like we have some sort of agreement that we need all the
roles to be able to see all the 4 states. Roles here are basically Admin(
i.e. list owner/moderator/site admin) and Subscriber.
There is no access control to transition "from" any state but each value
of non-enabled states is sort of a role's way to disable the delivery. Not
all states are settable by all roles.
1. A subscriber can only transition from any to "enabled" or "by_user"
state but can see if delivery was disabled "by_admin" or "by_bounces"
as separate state in the Options page.
2. An admin can transition to "enabled", "by_user" and "by_moderator".
They should use "by_user" when acting on behalf of the user and other
when there are any administrative reason to disable delivery, whatever
that may be. I expect "by_admin" to be used sparingly, and I don't see
any use cases for it.
3. Mailman itself will use the "by_bounces" to disable delivery due to
bounces.
Is that an accurate description?
--
thanks,
Abhilash Raj (maxking)
4 years, 2 months

[MM3-users] Re: [Mailman-Developers] Re: SSL error while connecting to hyperkitty
by Abhilash Raj
On Sat, Aug 31, 2019, at 10:20 AM, sandeep kumar wrote:
> Hi Abhilash
>
> Thanks for the reply.
>
> Just two more answers please -:)
>
> Can I use the sample apache.conf in example_project in my webserver virtual host...??
See this thread for the apache configuration:
https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/thread/…
You'd need to adjust the paths and SSL configuration.
>
> And what should be the configuration details to be given in uwsgi server...??
http://docs.mailman3.org/en/latest/prodsetup.html#setting-up-a-wsgi-server
>
> Regards
> Sandeep
>
>
> On Sat, Aug 31, 2019 at 10:25 PM Abhilash Raj <maxking(a)asynchronous.in> wrote:
>> __
>> On Sat, Aug 31, 2019, at 8:49 AM, sandeep kumar wrote:
>>> Hi Abhilash
>>>
>>> Thanks for your reply. -:)
>>>
>>> We are using apache httpd as webserver to redirect.
>>>
>>> the proxy pass in webserver is
>>>
>>> ProxyPass / http://localhost:8000
>>> ReverseProxyPass / http://localhost:8000
>>
>>
>> Can you put `base_url: http://localhost:8000/hyperkitty` in your mailman-hyperkitty.cfg and see that it works? :)
>>
>> This should not try any funny SSL redirection.
>>
>>> I don't have idea of deploying this in production, so I just went on searching and I found wsgi (say uwsgi) is required to send the requests from webserver to mailman. Correct me if I am wrong.
>>>
>>> I have few queries listed below. Please reply to them.
>>>
>>> Should I use the wsgi.py present in the directory of mailman-suite ...??
>>
>> Yes, that is the one which is supposed to be used.
>>
>>>
>>> What should be the ProxyPass ..?? Where should the first hit go from webserver ---> uwsgi ---> ??
>>
>> uwsgi is web server running Mailman's web componenet. It doesn't need to hit anything. You can restart it directly when you want to restart Mailman's web component, you don't need to do anything to your web server (httpd) for this.
>>
>>
>>
>>>
>>> Can we run "python manage.py runserver" every time to start mailman suite..?? Can we make mailman-suite start/stop just by restarting the HTTPD..??
>>
>>
>> No, use a wsgi server, like uwsgi or gunicorn to run mailman-suote. `python manage.runserver` is a command used during development shouldn't be used at all in prod.
>>
>>>
>>> What should be the entry in Hyperkitty.cfg file after all the above steps..?? I mean at the end
>>>
>>> Please reply to the above queries. Thanks for your help
>>> Regards
>>> Sandeep
>>>
>>>
>>>
>>>
>>>
>>> On Sat, Aug 31, 2019 at 8:45 PM Abhilash Raj <maxking(a)asynchronous.in> wrote:
>>>> On Sat, Aug 31, 2019, at 1:36 AM, sandeep kumar wrote:
>>>> > Hi Team
>>>> >
>>>> > Iam seeing following errors while mailman is trying to archive in
>>>> > mailman.log
>>>> >
>>>> >
>>>> > This is my base URL in mailman-hyperkitty.cfg
>>>> >
>>>> > base_url: http://localhost/hyperkitty
>>>>
>>>> Are you sure this is the URL? this is http and Mailman shouldn't try to connect to this using HTTPS.
>>>>
>>>> Is your web server configured to redirect all HTTP traffic to HTTPS? If that is the case, then it is going to fail.
>>>>
>>>> Which wsgi server are you using? uwsgi?
>>>>
>>>> Can you also show your ProxyPass configuration?
>>>>
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> >
>>>> > *During handling of the above exception, another exception
>>>> > occurred:Traceback (most recent call last): File
>>>> > "/var/lib/mailman/venv3/lib64/python3.6/site-packages/requests-2.21.0-py3.6.egg/requests/adapters.py",
>>>> > line 449, in send timeout=timeout File
>>>> > "/var/lib/mailman/venv3/lib64/python3.6/site-packages/urllib3-1.24.1-py3.6.egg/urllib3/connectionpool.py",
>>>> > line 638, in urlopen _stacktrace=sys.exc_info()[2]) File
>>>> > "/var/lib/mailman/venv3/lib64/python3.6/site-packages/urllib3-1.24.1-py3.6.egg/urllib3/util/retry.py",
>>>> > line 398, in increment raise MaxRetryError(_pool, url, error or
>>>> > ResponseError(cause))urllib3.exceptions.MaxRetryError:
>>>> > HTTPSConnectionPool(host='domain.com <http://domain.com>', port=443):
>>>> > Max
>>>> > retries exceeded with url:
>>>> > /hyperkitty/api/mailman/archive?key=SecretArchiverAPIKey (Caused by
>>>> > SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate
>>>> > verify
>>>> > failed (_ssl.c:841)'),))During handling of the above exception, another
>>>> > exception occurred:Traceback (most recent call last): File
>>>> > "/var/lib/mailman/mailman-hyperkitty/mailman_hyperkitty/__init__.py",
>>>> > line
>>>> > 154, in _archive_message url = self._send_message(mlist, msg) File
>>>> > "/var/lib/mailman/mailman-hyperkitty/mailman_hyperkitty/__init__.py",
>>>> > line
>>>> > 201, in _send_message files={"message": ("message.txt",
>>>> > message_text)})
>>>> > File
>>>> > "/var/lib/mailman/venv3/lib64/python3.6/site-packages/requests-2.21.0-py3.6.egg/requests/api.py",
>>>> > line 116, in post return request('post', url, data=data, json=json,
>>>> > **kwargs) File
>>>> > "/var/lib/mailman/venv3/lib64/python3.6/site-packages/requests-2.21.0-py3.6.egg/requests/api.py",
>>>> > line 60, in request return session.request(method=method, url=url,
>>>> > **kwargs) File
>>>> > "/var/lib/mailman/venv3/lib64/python3.6/site-packages/requests-2.21.0-py3.6.egg/requests/sessions.py",
>>>> > line 533, in request resp = self.send(prep, **send_kwargs) File
>>>> > "/var/lib/mailman/venv3/lib64/python3.6/site-packages/requests-2.21.0-py3.6.egg/requests/sessions.py",
>>>> > line 668, in send history = [resp for resp in gen] if allow_redirects
>>>> > else [] File
>>>> > "/var/lib/mailman/venv3/lib64/python3.6/site-packages/requests-2.21.0-py3.6.egg/requests/sessions.py",
>>>> > line 668, in <listcomp> history = [resp for resp in gen] if
>>>> > allow_redirects else [] File
>>>> > "/var/lib/mailman/venv3/lib64/python3.6/site-packages/requests-2.21.0-py3.6.egg/requests/sessions.py",
>>>> > line 247, in resolve_redirects **adapter_kwargs File
>>>> > "/var/lib/mailman/venv3/lib64/python3.6/site-packages/requests-2.21.0-py3.6.egg/requests/sessions.py",
>>>> > line 646, in send r = adapter.send(request, **kwargs) File
>>>> > "/var/lib/mailman/venv3/lib64/python3.6/site-packages/requests-2.21.0-py3.6.egg/requests/adapters.py",
>>>> > line 514, in send raise SSLError(e,
>>>> > request=request)requests.exceptions.SSLError:
>>>> > HTTPSConnectionPool(host=domain.com <http://domain.com>', port=443): Max
>>>> > retries exceeded with url:
>>>> > /hyperkitty/api/mailman/archive?key=SecretArchiverAPIKey (Caused by
>>>> > SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate
>>>> > verify
>>>> > failed (_ssl.c:841)'),))*
>>>> >
>>>> >
>>>> > Rgrds
>>>> > Sandeep
>>>> >
>>>> > On Sat, Aug 31, 2019 at 10:20 AM sandeep kumar <sandeep7790(a)gmail.com>
>>>> > wrote:
>>>> >
>>>> > > Team any help
>>>> > >
>>>> > > Sent from my iPhone
>>>> > >
>>>> > > > On 30-Aug-2019, at 11:18 PM, sandeep kumar <sandeep7790(a)gmail.com>
>>>> > > wrote:
>>>> > > >
>>>> > > > Hi Team
>>>> > > >
>>>> > > > Iam using httpd to work with ssl on mailman 3 using proxy pass.
>>>> > > >
>>>> > > > After this configuration Iam not able to connect to hyperkitty. It is
>>>> > > throwing ssl certificate error in mailman.log file.
>>>> > > >
>>>> > > > What should be the configuration of hyperkitty while using https in
>>>> > > mailman..?
>>>> > > >
>>>> > > > Please help me with this Iam struck here from past 4 days
>>>> > > >
>>>> > > > Rgrds
>>>> > > > Sandeep
>>>> > > >
>>>> > > > Sent from my iPhone
>>>> > >
>>>> >
>>>> >
>>>> > --
>>>> > Regards
>>>> > Sandeep Kumar
>>>> > +91-9642669192
>>>> > _______________________________________________
>>>> > Mailman-Developers mailing list -- mailman-developers(a)python.org
>>>> > To unsubscribe send an email to mailman-developers-leave(a)python.org
>>>> > https://mail.python.org/mailman3/lists/mailman-developers.python.org/
>>>> > Mailman FAQ: https://wiki.list.org/x/AgA3
>>>> >
>>>> > Security Policy: https://wiki.list.org/x/QIA9
>>>> >
>>>>
>>>> --
>>>> thanks,
>>>> Abhilash Raj (maxking)
>>>
>>>
>>> --
>>> Regards
>>> Sandeep Kumar
>>> +91-9642669192
>>>
>>
>> --
>> thanks,
>> Abhilash Raj (maxking)
>>
>>
>
>
> --
> Regards
> Sandeep Kumar
> +91-9642669192
>
--
thanks,
Abhilash Raj (maxking)
5 years, 7 months

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

[MM3-users] Re: Easiest way to install a new mailman3 deployment?
by John Willson
Thanks so much guys, let me try to answer some of your questions.
@AndrewH.
Yes, I saw your notes, but the impression I got during this effort is that
package-based/non-docker implementations change too much between versions,
so anything written based on Ubuntu 16.04 or earlier just didn't feel worth
spending significant time on... that impression came from the "this is new
to version 18.04" warnings in the Ubuntu 18.04 walkthrough (
https://docs.google.com/document/d/1xIcSsoNFp2nHi7r4eQys00s9a0k2sHhu1V5Plan…)
See my comment below for more.
Nonetheless, I'm going to crawl through your email and config files and see
if I find anything to suggest where I've been going wrong, so thanks a ton
for that.
@JonathanM
My attempt at doing a DigitalOcean package/non-docker based implementation
was frustrating. I found a really detailed walkthrough (
https://docs.google.com/document/d/1xIcSsoNFp2nHi7r4eQys00s9a0k2sHhu1V5Plan…)
and after the usual hyperkitty authorization problem solving, it got me to
a point where everything looked perfect, based on a glance at the web
interface. However, a bizarre collection of errors showed up during QA
testing, such as the following:
- Gravatars showing broken links about half of the time
- Emails from non-admin subscribers almost always not getting processed
and resulting in "connection dropped" errors in the SMTP log
- Very random orange-banner errors (e.g. I think one was vaguely
something like "[[(*)]] failed")
- Most confusingly... the "Last post made at" metric would always show
'none', no matter how many posts were made to the test list.
As I attempted to debug, I saw some connectivity issues in the logs
(500/bad gateway errors, IIRC). I wanted to rule out an SSL-negotiation
issue, partly because I've very recently had problems installing other
complex software where some Ubuntu packages have apparently changed default
package behaviours to insist on SSL, which forced those developers to redo
installation scripts that hadn't been touched in a while. Because only
'default' behaviours were changed, I would expect that this wouldn't show
up in installations that are upgraded from previous versions. So I turned
off the cert-based forcing of SSL for all HTTP traffic and, sure enough,
started getting errors about "incorrect SSL version" occurring during SSL
handshaking attempts. That's when I threw up my hands and decided to make
docker work.
@MatthewA
Thanks for the inspiration to keep at this. I spent quite a few post-NYE
hours trying to make the cleanest possible docker-based mailman3
installation on AWS, which I'll outline below. It ended up failing, so I
might next try Linode. As you mention, I know the docker containers should
be platform independent, I'm just worried about the fact that docker just
starts grabbing private IP addresses and using email in ways that require
support from the underlying platforms (e.g. AWS's Simple Email Service and
VPCs/IP address allocation).
So here's my latest (failed) attempt, to see if anyone can spot where I
went wrong. Again, I'm just trying to get a dedicated mailman3 server up
from scratch. Oh, I should add that I tried the mailman4 AWS
Mailman3-as-SaaS
<https://aws.amazon.com/marketplace/pp/New-IT-Mailman-4/B089M2PCVV>, and
that worked just fine. However we can't host our data on a SaaS platform,
so that's unfortunately not an option for us. I just want to mention it for
anyone looking for a "give me mailman services in five minutes for
$30/month" solution.
Phase 1 - Prepare the AWS instance and MTA
1. Created an instance using pre-allocated support for 172.19.199.[1-4]
IP address endpoints, a VPC with the 172.19.198.0/23 subdomain, and
firewall security rules to pass ports 80, 8000, 8024, 22, 25, 587, 443, all
ICMP
2. Prepared docker using AWS methodology
<https://docs.aws.amazon.com/AmazonECS/latest/developerguide/docker-basics.h…>
and successfully tested a docker container using hello world
3. Prepared successfully tested AWS SES service (e.g. domain and account
validation) and integrated with postfix.
<https://docs.aws.amazon.com/ses/latest/DeveloperGuide/postfix.html>
Phase 2 - Prepare mailman3 docker files
1. Tried to follow the standard directions... .I put most of the
relevant files below.
2. Curl test of 172.19.199.3 endpoint failed. Put some debug information
below.
I'm going to work with the previous suggestions to see what I can pull
together, but any ideas appreciated.
-----------------
docker-compose.yaml
version: '2'
services:
mailman-core:
image: maxking/mailman-core:0.3
container_name: mailman-core
hostname: mailman-core
volumes:
- /opt/mailman/core:/opt/mailman/
stop_grace_period: 30s
links:
- database:database
depends_on:
- database
environment:
- DATABASE_URL=postgres://mailman:mailmanpass@database/mailmandb
- DATABASE_TYPE=postgres
- DATABASE_CLASS=mailman.database.postgresql.PostgreSQLDatabase
- HYPERKITTY_API_KEY=FXCX6wk4e-stuff-m3ozNNpsFcj7vq
networks:
mailman:
ipv4_address: 172.19.199.2
mailman-web:
image: maxking/mailman-web:0.3
container_name: mailman-web
hostname: mailman-web
depends_on:
- database
links:
- mailman-core:mailman-core
- database:database
volumes:
- /opt/mailman/web:/opt/mailman-web-data
environment:
- DATABASE_TYPE=postgres
- DATABASE_URL=postgres://mailman:mailmanpass@database/mailmandb
- HYPERKITTY_API_KEY= FXCX6wk4e-stuff-m3ozNNpsFcj7vq
- SECRET_KEY= FXCX6wk4e-stuff-m3ozNNpsFcj7vq
- SERVE_FROM_DOMAIN=johnlabdomain.website
- MAILMAN_ADMIN_USER=mailman
- MAILMAN_ADMIN_EMAIL=postmaster(a)johnlabdomain.website
networks:
mailman:
ipv4_address: 172.19.199.3
database:
environment:
POSTGRES_DB: mailmandb
POSTGRES_USER: mailman
POSTGRES_PASSWORD: mailmanpass
image: postgres:9.6-alpine
volumes:
- /opt/mailman/database:/var/lib/postgresql/data
networks:
mailman:
ipv4_address: 172.19.199.4
networks:
mailman:
driver: bridge
ipam:
driver: default
config:
-
subnet: 172.19.199.0/24
-----------
mailman-extra.cfg
[mta]
incoming: mailman.mta.postfix.LMTP
outgoing: mailman.mta.deliver.deliver
lmtp_host: 172.19.199.2
lmtp_port: 8024
smtp_host: 172.19.199.1
smtp_port: 25
configuration: /etc/postfix-mailman.cfg
[mailman]
# This address is the "site owner" address. Certain messages which must be
# delivered to a human, but which can't be delivered to a list owner (e.g. a
# bounce from a list owner), will be sent to this address. It should point
to
# a human.
site_owner: postmaster(a)johnlabdomain.website
--------------
settings_local.py
USE_SSL = False
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = '172.19.199.1'
EMAIL_PORT = 25
DEFAULT_FROM_EMAIL = "postmaster(a)johnlabdomain.website"
SERVER_EMAIL = "postmaster(a)johnlabdomain.website"
___________
docker infoClient:
Debug Mode: false
Server:
Containers: 3
Running: 3
Paused: 0
Stopped: 0
Images: 9
Server Version: 19.03.13-ce
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries
splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: c623d1b36f09f8ef6536a057bd658b3aa8632828
runc version: ff819c7e9184c13b7c2607fe6c30ae19403a7aff
init version: de40ad0 (expected: fec3683)
Security Options:
seccomp
Profile: default
Kernel Version: 4.14.209-160.339.amzn2.x86_64
Operating System: Amazon Linux 2
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 1.945GiB
Name: ip-172-19-199-1.ca-central-1.compute.internal
ID: 5HIU:HKNY:O5AK:GPDM:I7JD:PGX7:2YZN:RYLK:K2OQ:ICO2:F3RA:O2QZ
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
_________________
maillog has some interesting stuff I'm seeing for the first time. Let me
know if this suggests any obvious suspects.
[ec2-user@ip-172-19-199-1 log]$ sudo cat maillog
Jan 1 10:10:25 ip-172-19-199-1 postfix/postfix-script[2984]: starting the
Postfix mail system
Jan 1 10:10:25 ip-172-19-199-1 postfix/master[2988]: daemon started --
version 2.10.1, configuration /etc/postfix
Jan 1 10:20:39 ip-172-19-199-1 postfix/postfix-script[4076]: stopping the
Postfix mail system
Jan 1 10:20:39 ip-172-19-199-1 postfix/master[2988]: terminating on signal
15
Jan 1 10:20:39 ip-172-19-199-1 postfix/postfix-script[4115]: fatal: the
Postfix mail system is not running
Jan 1 10:20:39 ip-172-19-199-1 postfix/postfix-script[4207]: starting the
Postfix mail system
Jan 1 10:20:39 ip-172-19-199-1 postfix/master[4209]: daemon started --
version 2.10.1, configuration /etc/postfix
Jan 1 10:21:27 ip-172-19-199-1 postfix/pickup[4210]: 4EF7073: uid=1000
from=<postmaster(a)johnlabdomain.website>
Jan 1 10:21:27 ip-172-19-199-1 postfix/cleanup[4218]: 4EF7073:
message-id=<20210101102127.4EF7073(a)ip-172-19-199-1.ca-central-1.compute.internal
>
Jan 1 10:21:27 ip-172-19-199-1 postfix/qmgr[4211]: 4EF7073:
from=<postmaster(a)johnlabdomain.website>, size=387, nrcpt=1 (queue active)
Jan 1 10:21:27 ip-172-19-199-1 postfix/smtp[4220]: 4EF7073:
to=<postmaster(a)johnlabdomain.website>, relay=
email-smtp.ca-central-1.amazonaws.com[3.97.59.162]:587, delay=12,
delays=12/0.04/0.13/0.1, dsn=2.0.0, status=sent (250 Ok
010d0176bd776654-8f53783a-07fd-4b47-92b0-b7f9a14bbbf7-000000)
Jan 1 10:21:27 ip-172-19-199-1 postfix/qmgr[4211]: 4EF7073: removed
Jan 1 10:24:39 ip-172-19-199-1 postfix/postfix-script[4346]: refreshing
the Postfix mail system
Jan 1 10:24:39 ip-172-19-199-1 postfix/master[4209]: reload -- version
2.10.1, configuration /etc/postfix
Jan 1 10:24:39 ip-172-19-199-1 postfix/qmgr[4351]: error: open
/opt/mailman/core/var/data/postfix_domains: No such file or directory
Jan 1 10:27:58 ip-172-19-199-1 postfix/smtpd[4395]: error: open
/opt/mailman/core/var/data/postfix_domains: No such file or directory
Jan 1 10:27:58 ip-172-19-199-1 postfix/smtpd[4395]: error: open
/opt/mailman/core/var/data/postfix_lmtp: No such file or directory
Jan 1 10:27:58 ip-172-19-199-1 postfix/smtpd[4395]: connect from
mail-yb1-f184.google.com[209.85.219.184]
Jan 1 10:27:58 ip-172-19-199-1 postfix/trivial-rewrite[4397]: error: open
/opt/mailman/core/var/data/postfix_domains: No such file or directory
Jan 1 10:27:58 ip-172-19-199-1 postfix/trivial-rewrite[4397]: error: open
/opt/mailman/core/var/data/postfix_lmtp: No such file or directory
Jan 1 10:27:58 ip-172-19-199-1 postfix/trivial-rewrite[4397]: warning:
regexp:/opt/mailman/core/var/data/postfix_lmtp is unavailable. open
/opt/mailman/core/var/data/postfix_lmtp: No such file or directory
Jan 1 10:27:58 ip-172-19-199-1 postfix/trivial-rewrite[4397]: warning:
regexp:/opt/mailman/core/var/data/postfix_lmtp lookup error for "*"
Jan 1 10:27:58 ip-172-19-199-1 postfix/trivial-rewrite[4397]: warning:
regexp:/opt/mailman/core/var/data/postfix_lmtp is unavailable. open
/opt/mailman/core/var/data/postfix_lmtp: No such file or directory
Jan 1 10:27:58 ip-172-19-199-1 postfix/trivial-rewrite[4397]: warning:
regexp:/opt/mailman/core/var/data/postfix_lmtp lookup error for "*"
Jan 1 10:27:58 ip-172-19-199-1 postfix/trivial-rewrite[4397]: warning:
regexp:/opt/mailman/core/var/data/postfix_domains is unavailable. open
/opt/mailman/core/var/data/postfix_domains: No such file or directory
Jan 1 10:27:58 ip-172-19-199-1 postfix/trivial-rewrite[4397]: warning:
regexp:/opt/mailman/core/var/data/postfix_domains: table lookup problem
Jan 1 10:27:58 ip-172-19-199-1 postfix/trivial-rewrite[4397]: warning:
relay_domains lookup failure
Jan 1 10:27:58 ip-172-19-199-1 postfix/trivial-rewrite[4397]: warning:
regexp:/opt/mailman/core/var/data/postfix_domains is unavailable. open
/opt/mailman/core/var/data/postfix_domains: No such file or directory
Jan 1 10:27:58 ip-172-19-199-1 postfix/trivial-rewrite[4397]: warning:
regexp:/opt/mailman/core/var/data/postfix_domains: table lookup problem
Jan 1 10:27:58 ip-172-19-199-1 postfix/trivial-rewrite[4397]: warning:
relay_domains lookup failure
Jan 1 10:27:58 ip-172-19-199-1 postfix/smtpd[4395]: NOQUEUE: reject: RCPT
from mail-yb1-f184.google.com[209.85.219.184]: 451 4.3.0 <
person(a)obfuscatedbyme.com>: Temporary lookup failure; from=<
ggroupname+bncBCUONKFK6AKRB3XIXD7QKGQEAITT5DI(a)googlegroups.com> to=<
person(a)obfuscatedbyme.com > proto=ESMTP helo=<mail-yb1-f184.google.com>
Jan 1 10:27:58 ip-172-19-199-1 postfix/smtpd[4395]: disconnect from
mail-yb1-f184.google.com[209.85.219.184]
Jan 1 10:31:18 ip-172-19-199-1 postfix/anvil[4396]: statistics: max
connection rate 1/60s for (smtp:209.85.219.184) at Jan 1 10:27:58
Jan 1 10:31:18 ip-172-19-199-1 postfix/anvil[4396]: statistics: max
connection count 1 for (smtp:209.85.219.184) at Jan 1 10:27:58
Jan 1 10:31:18 ip-172-19-199-1 postfix/anvil[4396]: statistics: max cache
size 1 at Jan 1 10:27:58
Jan 1 10:36:30 ip-172-19-199-1 postfix/master[4209]: terminating on signal
15
Jan 1 10:37:18 ip-172-19-199-1 postfix/postfix-script[2960]: starting the
Postfix mail system
Jan 1 10:37:19 ip-172-19-199-1 postfix/master[2962]: daemon started --
version 2.10.1, configuration /etc/postfix
Jan 1 10:37:19 ip-172-19-199-1 postfix/qmgr[2964]: error: open
/opt/mailman/core/var/data/postfix_domains: No such file or directory
Jan 1 10:39:28 ip-172-19-199-1 postfix/smtpd[3302]: error: open
/opt/mailman/core/var/data/postfix_domains: No such file or directory
Jan 1 10:39:28 ip-172-19-199-1 postfix/smtpd[3302]: error: open
/opt/mailman/core/var/data/postfix_lmtp: No such file or directory
Jan 1 10:39:28 ip-172-19-199-1 postfix/smtpd[3302]: warning: hostname
security.criminalip.com does not resolve to address 89.248.168.112
Jan 1 10:39:28 ip-172-19-199-1 postfix/smtpd[3302]: connect from
unknown[89.248.168.112]
Jan 1 10:39:28 ip-172-19-199-1 postfix/smtpd[3302]: lost connection after
STARTTLS from unknown[89.248.168.112]
Jan 1 10:39:28 ip-172-19-199-1 postfix/smtpd[3302]: disconnect from
unknown[89.248.168.112]
Jan 1 10:42:48 ip-172-19-199-1 postfix/anvil[3303]: statistics: max
connection rate 1/60s for (smtp:89.248.168.112) at Jan 1 10:39:28
Jan 1 10:42:48 ip-172-19-199-1 postfix/anvil[3303]: statistics: max
connection count 1 for (smtp:89.248.168.112) at Jan 1 10:39:28
Jan 1 10:42:48 ip-172-19-199-1 postfix/anvil[3303]: statistics: max cache
size 1 at Jan 1 10:39:28
4 years, 3 months

[MM3-users] Re: Migrating mailman3 to latest ubuntu lts
by Jered Floyd
Did you run the upgrade steps?
https://docs.mailman3.org/en/latest/upgrade-guide.html
For schema upgrades you will at least need to do "mailman-web migrate", but please read the entire section as 3.1.1 to 3.3.9 is a big step.
--Jered
----- On Dec 14, 2023, at 4:48 AM, Helio Loureiro helio(a)loureiro.eng.br wrote:
> Hi,
>
> I'm trying to migrate several lists from an ubuntu 18.04, where it was
> installed via packages (mailman 3.1.1), to ubuntu 22.04.
>
> Since ubuntu 22.04 is broken in terms of packages for mailman3, I'm trying
> to install manually following the site instructions.
>
> I just dumped the mysql DB we have nowadays, mailman3 and mailman3-web, and
> loaded in the new server. I also copied the configurations and fixed the
> paths since now mailman3 lives on /local/mailman and it uses venv. I also
> copied /var/lib/mailman3 into /local/mailman/var/lib/mailman3.
>
> mailman seems to accept pretty much of the work done.
>
> (venv) mailman@new-server ~ (v3.3.9)> mailman info
> GNU Mailman 3.3.9 (Tom Sawyer)
> Python 3.10.12 (main, Jun 11 2023, 05:26:28) [GCC 11.4.0]
> config file: /etc/mailman3/mailman.cfg
> db url:
> mysql+pymysql://mailman3:********@localhost/mailman3?charset=utf8mb4&use_unicode=1
> devmode: DISABLED
> REST root url: http://localhost:8001/3.1/
> REST credentials: restadmin:***********
>
> Even configuration is working fine.
>
> (venv) mailman@new-server ~ (v3.3.9)> mailman conf
> [ARC] authserv_id:
> [ARC] dkim: yes
> [ARC] dmarc: yes
> [ARC] domain:
> [ARC] enabled: no
> [ARC] privkey:
> [ARC] selector:
> [ - a lot of stuff - ]
> [shell] banner: Welcome to the GNU Mailman shell
> [shell] history_file:
> [shell] prompt: >>>
> [shell] use_ipython: no
> [styles] default: legacy-default
> [webservice] admin_pass: *************************
> [webservice] admin_user: restadmin
> [webservice] api_version: 3.1
> [webservice] configuration: python:mailman.config.gunicorn
> [webservice] hostname: localhost
> [webservice] port: 8001
> [webservice] show_tracebacks: yes
> [webservice] use_https: no
> [webservice] workers: 2
>
> But it is failing to start displaying the domain name from the previous
> machine.
>
> (venv) mailman@new-server ~ (v3.3.9)> mailman start
> Starting Mailman's master runner
> Generating MTA alias maps
> Traceback (most recent call last):
> File
> "/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
> line 1969, in _exec_single_context
> self.dialect.do_execute(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/engine/default.py",
> line 922, in do_execute
> cursor.execute(statement, parameters)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/pymysql/cursors.py", line
> 153, in execute
> result = self._query(query)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/pymysql/cursors.py", line
> 322, in _query
> conn.query(q)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/pymysql/connections.py",
> line 558, in query
> self._affected_rows = self._read_query_result(unbuffered=unbuffered)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/pymysql/connections.py",
> line 822, in _read_query_result
> result.read()
> File
> "/local/mailman/venv/lib/python3.10/site-packages/pymysql/connections.py",
> line 1200, in read
> first_packet = self.connection._read_packet()
> File
> "/local/mailman/venv/lib/python3.10/site-packages/pymysql/connections.py",
> line 772, in _read_packet
> packet.raise_for_error()
> File
> "/local/mailman/venv/lib/python3.10/site-packages/pymysql/protocol.py",
> line 221, in raise_for_error
> err.raise_mysql_exception(self._data)
> File "/local/mailman/venv/lib/python3.10/site-packages/pymysql/err.py",
> line 143, in raise_mysql_exception
> raise errorclass(errno, errval)
> pymysql.err.OperationalError: (1054, "Unknown column 'domain.alias_domain'
> in 'field list'")
>
> The above exception was the direct cause of the following exception:
>
> Traceback (most recent call last):
> File "/local/mailman/venv/bin/mailman", line 33, in <module>
> sys.exit(load_entry_point('mailman==3.3.9', 'console_scripts',
> 'mailman')())
> File "/local/mailman/venv/lib/python3.10/site-packages/click/core.py",
> line 1157, in __call__
> return self.main(*args, **kwargs)
> File "/local/mailman/venv/lib/python3.10/site-packages/click/core.py",
> line 1078, in main
> rv = self.invoke(ctx)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/mailman/bin/mailman.py",
> line 69, in invoke
> return super().invoke(ctx)
> File "/local/mailman/venv/lib/python3.10/site-packages/click/core.py",
> line 1688, in invoke
> return _process_result(sub_ctx.command.invoke(sub_ctx))
> File "/local/mailman/venv/lib/python3.10/site-packages/click/core.py",
> line 1434, in invoke
> return ctx.invoke(self.callback, **ctx.params)
> File "/local/mailman/venv/lib/python3.10/site-packages/click/core.py",
> line 783, in invoke
> return __callback(*args, **kwargs)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/click/decorators.py",
> line 33, in new_func
> return f(get_current_context(), *args, **kwargs)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/mailman/commands/cli_control.py",
> line 109, in start
> call_name(config.mta.incoming).regenerate()
> File
> "/local/mailman/venv/lib/python3.10/site-packages/mailman/mta/postfix.py",
> line 109, in regenerate
> self._generate_lmtp_file(fp)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/mailman/mta/postfix.py",
> line 149, in _generate_lmtp_file
> mlist = _FakeList(list_name, mail_host)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/mailman/mta/postfix.py",
> line 75, in __init__
> self.mail_host = _get_alias_domain(mail_host)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/mailman/mta/postfix.py",
> line 63, in _get_alias_domain
> d = domain_manager.get(domain)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/mailman/database/transaction.py",
> line 106, in wrapper
> return function(args[0], config.db.store, *args[1:], **kws)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/mailman/model/domain.py",
> line 162, in get
> if domains.count() < 1:
> File
> "/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/orm/query.py",
> line 3132, in count
> self._legacy_from_self(col).enable_eagerloads(False).scalar()
> File
> "/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/orm/query.py",
> line 2825, in scalar
> ret = self.one()
> File
> "/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/orm/query.py",
> line 2798, in one
> return self._iter().one() # type: ignore
> File
> "/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/orm/query.py",
> line 2847, in _iter
> result: Union[ScalarResult[_T], Result[_T]] = self.session.execute(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/orm/session.py",
> line 2308, in execute
> return self._execute_internal(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/orm/session.py",
> line 2190, in _execute_internal
> result: Result[Any] = compile_state_cls.orm_execute_statement(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/orm/context.py",
> line 293, in orm_execute_statement
> result = conn.execute(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
> line 1416, in execute
> return meth(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/sql/elements.py",
> line 516, in _execute_on_connection
> return connection._execute_clauseelement(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
> line 1639, in _execute_clauseelement
> ret = self._execute_context(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
> line 1848, in _execute_context
> return self._exec_single_context(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
> line 1988, in _exec_single_context
> self._handle_dbapi_exception(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
> line 2343, in _handle_dbapi_exception
> raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
> File
> "/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
> line 1969, in _exec_single_context
> self.dialect.do_execute(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/sqlalchemy/engine/default.py",
> line 922, in do_execute
> cursor.execute(statement, parameters)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/pymysql/cursors.py", line
> 153, in execute
> result = self._query(query)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/pymysql/cursors.py", line
> 322, in _query
> conn.query(q)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/pymysql/connections.py",
> line 558, in query
> self._affected_rows = self._read_query_result(unbuffered=unbuffered)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/pymysql/connections.py",
> line 822, in _read_query_result
> result.read()
> File
> "/local/mailman/venv/lib/python3.10/site-packages/pymysql/connections.py",
> line 1200, in read
> first_packet = self.connection._read_packet()
> File
> "/local/mailman/venv/lib/python3.10/site-packages/pymysql/connections.py",
> line 772, in _read_packet
> packet.raise_for_error()
> File
> "/local/mailman/venv/lib/python3.10/site-packages/pymysql/protocol.py",
> line 221, in raise_for_error
> err.raise_mysql_exception(self._data)
> File "/local/mailman/venv/lib/python3.10/site-packages/pymysql/err.py",
> line 143, in raise_mysql_exception
> raise errorclass(errno, errval)
> sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError) (1054,
> "Unknown column 'domain.alias_domain' in 'field list'")
> [SQL: SELECT count(*) AS count_1
> FROM (SELECT domain.id AS domain_id, domain.mail_host AS domain_mail_host,
> domain.description AS domain_description, domain.alias_domain AS
> domain_alias_domain
> FROM domain
> WHERE domain.mail_host = %(mail_host_1)s) AS anon_1]
> [parameters: {'mail_host_1': 'old-server.mydomain.com'}]
> (Background on this error at: https://sqlalche.me/e/20/e3q8)
>
> But I can see some processes are starting.
>
> (venv) mailman@new-server ~ (v3.3.9)> ps auxwww | grep "[p]ython" | grep
> mailman
> mailman 1411605 0.0 0.0 32180 22212 ? Ss 10:44 0:00
> /local/mailman/venv/bin/python /local/mailman/venv/bin/gunicorn -c
> /etc/mailman3/gunicorn.conf mailman_web.wsgi:application
> mailman 1411607 0.0 0.0 44244 32412 ? S 10:44 0:00
> /local/mailman/venv/bin/python /local/mailman/venv/bin/gunicorn -c
> /etc/mailman3/gunicorn.conf mailman_web.wsgi:application
> mailman 1411671 1.0 0.2 98584 83004 ? Ss 10:45 0:01
> /local/mailman/venv/bin/python /local/mailman/venv/bin/master -C
> /etc/mailman3/mailman.cfg
> mailman 1411681 1.0 0.2 98392 82504 ? S 10:45 0:01
> /local/mailman/venv/bin/python /local/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=archive:0:1
> mailman 1411682 97.7 10.1 3396160 3346868 ? R 10:45 1:58
> /local/mailman/venv/bin/python /local/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=bounces:0:1
> mailman 1411683 1.0 0.2 98588 82816 ? S 10:45 0:01
> /local/mailman/venv/bin/python /local/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=command:0:1
> mailman 1411684 1.0 0.2 98580 82904 ? S 10:45 0:01
> /local/mailman/venv/bin/python /local/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=in:0:1
> mailman 1411685 1.0 0.2 172312 82772 ? Sl 10:45 0:01
> /local/mailman/venv/bin/python /local/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=lmtp:0:1
> mailman 1411686 1.1 0.2 98588 82652 ? S 10:45 0:01
> /local/mailman/venv/bin/python /local/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=nntp:0:1
> mailman 1411687 1.1 0.2 98608 83016 ? S 10:45 0:01
> /local/mailman/venv/bin/python /local/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=out:0:1
> mailman 1411688 1.0 0.2 98584 82936 ? S 10:45 0:01
> /local/mailman/venv/bin/python /local/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=pipeline:0:1
> mailman 1411689 1.1 0.2 107040 90972 ? S 10:45 0:01
> /local/mailman/venv/bin/python /local/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=rest:0:1
> mailman 1411690 1.0 0.2 98592 82784 ? S 10:45 0:01
> /local/mailman/venv/bin/python /local/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=retry:0:1
> mailman 1411691 41.3 0.5 187380 171012 ? S 10:45 0:50
> /local/mailman/venv/bin/python /local/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=task:0:1
> mailman 1411692 1.0 0.2 98472 83028 ? S 10:45 0:01
> /local/mailman/venv/bin/python /local/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=virgin:0:1
> mailman 1411693 1.0 0.2 98448 82608 ? S 10:45 0:01
> /local/mailman/venv/bin/python /local/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=digest:0:1
> mailman 1411705 0.0 0.2 107040 75968 ? S 10:45 0:00
> /local/mailman/venv/bin/python /local/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=rest:0:1
> mailman 1411709 0.0 0.2 107040 75968 ? S 10:45 0:00
> /local/mailman/venv/bin/python /local/mailman/venv/bin/runner -C
> /etc/mailman3/mailman.cfg --runner=rest:0:1
> mailman 1413629 0.0 0.0 17644 8812 ? Rs 10:47 0:00
> /local/mailman/venv/bin/python /local/mailman/venv/bin/mailman start
>
> Best Regards,
> Helio Loureiro
> http://helio.loureiro.eng.br
> https://github.com/helioloureiro
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> Archived at:
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
>
> This message sent to jered(a)convivian.com
1 year, 4 months

[MM3-users] Re: Huge performance issue: Mailman doesn't (seem to) receive any mails.
by Mark Sapiro
On 9/20/19 5:39 AM, Henrik Rasmussen wrote:
> I know this is quite long (sorry), but I hope this part of the mailman.log may provide some clue to what went wrong.
It doesn't.
> As mentioned, Mailman stopped receiving mails some days ago and I have been restarting Mailman (without solving anything) at Sep 18 13:30:03 2019. On Sep 20 07:05:23 2019 everything started working again by itself.
>
> / Henrik Rasmussen
>
I'm snipping a bunch of irrelevant stuff having to do with web
interactions, etc.
> Sep 20 06:42:22 2019 (35) HOLD: listname(a)lists.example.com post from someone(a)foo.bar held, message-id=<4E8DB72B-66D9-456E-B51C-2A49423CF29F(a)foo.bar>: The message comes from a moderated member
> Sep 20 06:42:23 2019 (35) ACCEPT: <CALcvC6H5ko14LT8F_z_nbddp0DmDgfb-Rt32s+0TbpPrY3BL_g(a)mail.foo.bar>
There are lots of these indicating messages have been received via LMTP
and passed to Core.
> Sep 20 06:42:48 2019 (35) ACCEPT: <CAG3z+4+67M9jAjbVtSqUdUCU6cS1dOYBsmMTAdePL3+O+Nn+sQ(a)mail.foo.bar>
> Sep 20 06:42:56 2019 (32) Exception in the HyperKitty archiver: 'url'
> Sep 20 06:42:56 2019 (32) Traceback (most recent call last):
> File "/usr/local/lib/python3.6/site-packages/mailman_hyperkitty/__init__.py", line 154, in _archive_message
> url = self._send_message(mlist, msg)
> File "/usr/local/lib/python3.6/site-packages/mailman_hyperkitty/__init__.py", line 217, in _send_message
> archived_url = result["url"]
> KeyError: 'url'
> Sep 20 06:42:57 2019 (32) Exception in the HyperKitty archiver: 'url'
> Sep 20 06:42:57 2019 (32) Traceback (most recent call last):
> File "/usr/local/lib/python3.6/site-packages/mailman_hyperkitty/__init__.py", line 154, in _archive_message
> url = self._send_message(mlist, msg)
> File "/usr/local/lib/python3.6/site-packages/mailman_hyperkitty/__init__.py", line 217, in _send_message
> archived_url = result["url"]
> KeyError: 'url'
> Sep 20 06:42:57 2019 (32) HyperKitty failure on http://mailman-web:8000/hyperkitty/api/mailman/archive:
>
> <!DOCTYPE html>
> <html lang="en">
> <head>
> <meta charset="UTF-8">
> <meta http-equiv="X-UA-Compatible" content="IE=edge">
> <meta name="viewport" content="width=device-width, initial-scale=1">
> <title>Server Error</title>
> <link rel="shortcut icon" href="/static/postorius/img/favicon.ico">
> <link rel="stylesheet" href="/static/postorius/libs/bootstrap/css/bootstrap.min.css">
> <link rel="stylesheet" href="/static/django-mailman3/css/main.css">
> <link rel="stylesheet" href="/static/postorius/css/style.css">
>
> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
> <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
> <!--[if lt IE 9]>
> <script src="/static/postorius/libs/html5shiv/html5shiv.min.js"></script>
> <script src="/static/postorius/libs/respond/respond.min.js"></script>
> <![endif]-->
> </head>
> <body>
> <div class="container">
> <h1>Server error</h1>
> <div class="alert alert-danger">An error occurred while processing your request.</div>
> </div>
> </body>
> </html>
> (500)
> Sep 20 06:42:57 2019 (32) Exception in the HyperKitty archiver:
>
> <!DOCTYPE html>
> <html lang="en">
> <head>
> <meta charset="UTF-8">
> <meta http-equiv="X-UA-Compatible" content="IE=edge">
> <meta name="viewport" content="width=device-width, initial-scale=1">
> <title>Server Error</title>
> <link rel="shortcut icon" href="/static/postorius/img/favicon.ico">
> <link rel="stylesheet" href="/static/postorius/libs/bootstrap/css/bootstrap.min.css">
> <link rel="stylesheet" href="/static/django-mailman3/css/main.css">
> <link rel="stylesheet" href="/static/postorius/css/style.css">
>
> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
> <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
> <!--[if lt IE 9]>
> <script src="/static/postorius/libs/html5shiv/html5shiv.min.js"></script>
> <script src="/static/postorius/libs/respond/respond.min.js"></script>
> <![endif]-->
> </head>
> <body>
> <div class="container">
> <h1>Server error</h1>
> <div class="alert alert-danger">An error occurred while processing your request.</div>
> </div>
> </body>
> </html>
> Sep 20 06:42:57 2019 (32) Traceback (most recent call last):
> File "/usr/local/lib/python3.6/site-packages/mailman_hyperkitty/__init__.py", line 154, in _archive_message
> url = self._send_message(mlist, msg)
> File "/usr/local/lib/python3.6/site-packages/mailman_hyperkitty/__init__.py", line 210, in _send_message
> raise ValueError(result.text)
> ValueError:
>
> <!DOCTYPE html>
> <html lang="en">
> <head>
> <meta charset="UTF-8">
> <meta http-equiv="X-UA-Compatible" content="IE=edge">
> <meta name="viewport" content="width=device-width, initial-scale=1">
> <title>Server Error</title>
> <link rel="shortcut icon" href="/static/postorius/img/favicon.ico">
> <link rel="stylesheet" href="/static/postorius/libs/bootstrap/css/bootstrap.min.css">
> <link rel="stylesheet" href="/static/django-mailman3/css/main.css">
> <link rel="stylesheet" href="/static/postorius/css/style.css">
>
> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
> <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
> <!--[if lt IE 9]>
> <script src="/static/postorius/libs/html5shiv/html5shiv.min.js"></script>
> <script src="/static/postorius/libs/respond/respond.min.js"></script>
> <![endif]-->
> </head>
> <body>
> <div class="container">
> <h1>Server error</h1>
> <div class="alert alert-danger">An error occurred while processing your request.</div>
> </div>
> </body>
> </html>
>
> Sep 20 06:42:57 2019 (32) HyperKitty failure on http://mailman-web:8000/hyperkitty/api/mailman/archive:
>
> <!DOCTYPE html>
> <html lang="en">
> <head>
> <meta charset="UTF-8">
> <meta http-equiv="X-UA-Compatible" content="IE=edge">
> <meta name="viewport" content="width=device-width, initial-scale=1">
> <title>Server Error</title>
> <link rel="shortcut icon" href="/static/postorius/img/favicon.ico">
> <link rel="stylesheet" href="/static/postorius/libs/bootstrap/css/bootstrap.min.css">
> <link rel="stylesheet" href="/static/django-mailman3/css/main.css">
> <link rel="stylesheet" href="/static/postorius/css/style.css">
>
> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
> <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
> <!--[if lt IE 9]>
> <script src="/static/postorius/libs/html5shiv/html5shiv.min.js"></script>
> <script src="/static/postorius/libs/respond/respond.min.js"></script>
> <![endif]-->
> </head>
> <body>
> <div class="container">
> <h1>Server error</h1>
> <div class="alert alert-danger">An error occurred while processing your request.</div>
> </div>
> </body>
> </html>
> (500)
> Sep 20 06:42:57 2019 (32) Exception in the HyperKitty archiver:
>
> <!DOCTYPE html>
> <html lang="en">
> <head>
> <meta charset="UTF-8">
> <meta http-equiv="X-UA-Compatible" content="IE=edge">
> <meta name="viewport" content="width=device-width, initial-scale=1">
> <title>Server Error</title>
> <link rel="shortcut icon" href="/static/postorius/img/favicon.ico">
> <link rel="stylesheet" href="/static/postorius/libs/bootstrap/css/bootstrap.min.css">
> <link rel="stylesheet" href="/static/django-mailman3/css/main.css">
> <link rel="stylesheet" href="/static/postorius/css/style.css">
>
> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
> <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
> <!--[if lt IE 9]>
> <script src="/static/postorius/libs/html5shiv/html5shiv.min.js"></script>
> <script src="/static/postorius/libs/respond/respond.min.js"></script>
> <![endif]-->
> </head>
> <body>
> <div class="container">
> <h1>Server error</h1>
> <div class="alert alert-danger">An error occurred while processing your request.</div>
> </div>
> </body>
> </html>
> Sep 20 06:42:57 2019 (32) Traceback (most recent call last):
> File "/usr/local/lib/python3.6/site-packages/mailman_hyperkitty/__init__.py", line 154, in _archive_message
> url = self._send_message(mlist, msg)
> File "/usr/local/lib/python3.6/site-packages/mailman_hyperkitty/__init__.py", line 210, in _send_message
> raise ValueError(result.text)
> ValueError:
>
> <!DOCTYPE html>
> <html lang="en">
> <head>
> <meta charset="UTF-8">
> <meta http-equiv="X-UA-Compatible" content="IE=edge">
> <meta name="viewport" content="width=device-width, initial-scale=1">
> <title>Server Error</title>
> <link rel="shortcut icon" href="/static/postorius/img/favicon.ico">
> <link rel="stylesheet" href="/static/postorius/libs/bootstrap/css/bootstrap.min.css">
> <link rel="stylesheet" href="/static/django-mailman3/css/main.css">
> <link rel="stylesheet" href="/static/postorius/css/style.css">
>
> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
> <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
> <!--[if lt IE 9]>
> <script src="/static/postorius/libs/html5shiv/html5shiv.min.js"></script>
> <script src="/static/postorius/libs/respond/respond.min.js"></script>
> <![endif]-->
> </head>
> <body>
> <div class="container">
> <h1>Server error</h1>
> <div class="alert alert-danger">An error occurred while processing your request.</div>
> </div>
> </body>
> </html>
>
> Sep 20 06:42:57 2019 (32) Exception in the HyperKitty archiver: 'url'
> Sep 20 06:42:57 2019 (32) Traceback (most recent call last):
> File "/usr/local/lib/python3.6/site-packages/mailman_hyperkitty/__init__.py", line 154, in _archive_message
> url = self._send_message(mlist, msg)
> File "/usr/local/lib/python3.6/site-packages/mailman_hyperkitty/__init__.py", line 217, in _send_message
> archived_url = result["url"]
> KeyError: 'url'
> Sep 20 06:42:57 2019 (32) Exception in the HyperKitty archiver: 'url'
> Sep 20 06:42:57 2019 (32) Traceback (most recent call last):
> File "/usr/local/lib/python3.6/site-packages/mailman_hyperkitty/__init__.py", line 154, in _archive_message
> url = self._send_message(mlist, msg)
> File "/usr/local/lib/python3.6/site-packages/mailman_hyperkitty/__init__.py", line 217, in _send_message
> archived_url = result["url"]
> KeyError: 'url'
There are lots of the above errors/tracebacks. They are a problem, but
not specifically the one affecting Postfix delivery.
There are two different tracebacks. The ValueError is because the
mailman_hyperkitty shim has called Hyperkitty via
http://mailman-web:8000/hyperkitty/api/mailman/archive to archive the
message and HyperKitty returned a 500 status with the HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Server Error</title>
<link rel="shortcut icon" href="/static/postorius/img/favicon.ico">
<link rel="stylesheet"
href="/static/postorius/libs/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="/static/django-mailman3/css/main.css">
<link rel="stylesheet" href="/static/postorius/css/style.css">
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and
media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via
file:// -->
<!--[if lt IE 9]>
<script
src="/static/postorius/libs/html5shiv/html5shiv.min.js"></script>
<script src="/static/postorius/libs/respond/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="container">
<h1>Server error</h1>
<div class="alert alert-danger">An error occurred while processing
your request.</div>
</div>
</body>
</html>
Then the KeyError occurs because the response did not include the URL of
the archived message.
When this occurs, mailman_hyperkitty retries the message until it succeeds.
For more information on the HyperKitty issue, look in the Django log
whose path is defined in LOGGING['handlers']['file']['filename'] in the
Django settings.
--
Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
5 years, 7 months

[MM3-users] Hacking attempts?
by Lists
Hi,
We are seeing thousands of these emails every day, looks like someone is trying to hack our Mailman3 but would appreciate someone with more knowledge of MM3 to confirm.
Is this a problem with our setup? i.e. the “Internal Server Error” bit, or are the hackers just sending bad data that is causing the error? also how do we stop/block this?
TIA and here is a typical email:
Subject: [Django] ERROR (EXTERNAL IP): Internal Server Error: /mailman3/accounts/fedora/login/
Internal Server Error: /mailman3/accounts/fedora/login/
TypeError at /accounts/fedora/login/
_openid_consumer() missing 2 required positional arguments: 'provider' and 'endpoint'
Request Method: GET
Request URL: https://mailman.ardc.net/mailman3/accounts/fedora/login/?process=login&next… <https://mailman.ardc.net/mailman3/accounts/fedora/login/?process=login&next…>
Django Version: 2.2.26
Python Executable: /usr/bin/uwsgi-core
Python Version: 3.9.2
Python Path: ['.', '', '/usr/lib/python39.zip', '/usr/lib/python3.9', '/usr/lib/python3.9/lib-dynload', '/usr/local/lib/python3.9/dist-packages', '/usr/lib/python3/dist-packages', '/usr/lib/python3.9/dist-packages']
Server time: Thu, 14 Jul 2022 02:34:04 -0400
Installed Applications:
('hyperkitty',
'postorius',
'django_mailman3',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'django_gravatar',
'compressor',
'haystack',
'django_extensions',
'django_q',
'allauth',
'allauth.account',
'allauth.socialaccount',
'django_mailman3.lib.auth.fedora')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django_mailman3.middleware.TimezoneMiddleware',
'postorius.middleware.PostoriusMiddleware')
Traceback:
File "/usr/lib/python3/dist-packages/django/core/handlers/exception.py" in inner
34. response = get_response(request)
File "/usr/lib/python3/dist-packages/django/core/handlers/base.py" in _get_response
115. response = self.process_exception_by_middleware(e, request)
File "/usr/lib/python3/dist-packages/django/core/handlers/base.py" in _get_response
113. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/python3/dist-packages/django/views/generic/base.py" in view
71. return self.dispatch(request, *args, **kwargs)
File "/usr/lib/python3/dist-packages/django/views/generic/base.py" in dispatch
97. return handler(request, *args, **kwargs)
File "/usr/lib/python3/dist-packages/django_mailman3/lib/auth/fedora/views.py" in get
56. return self.post(request, *args, **kwargs)
File "/usr/lib/python3/dist-packages/django_mailman3/lib/auth/fedora/views.py" in post
67. client = _openid_consumer(request)
Exception Type: TypeError at /accounts/fedora/login/
Exception Value: _openid_consumer() missing 2 required positional arguments: 'provider' and 'endpoint'
Request information:
USER: AnonymousUser
GET:
process = 'login'
next = '/mailman3/hyperkitty/list/44net(a)mailman.ampr.org <mailto:mailman3/hyperkitty/list/44net@mailman.ampr.org>/message/O5Z2YZBJZXFPH2ACAORN6BST7B2S3M3P/'
POST: No POST data
FILES: No FILES data
COOKIES: No cookie data
META:
CONTEXT_DOCUMENT_ROOT = '/var/www/html'
CONTEXT_PREFIX = ''
DOCUMENT_ROOT = '/var/www/html'
GATEWAY_INTERFACE = 'CGI/1.1'
HTTPS = 'on'
HTTP_ACCEPT = 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
HTTP_ACCEPT_ENCODING = 'gzip,deflate'
HTTP_CONNECTION = 'Keep-Alive'
HTTP_HOST = 'mailman.ardc.net <http://mailman.ardc.net/>'
HTTP_USER_AGENT = 'Mozilla/5.0 (compatible; BLEXBot/1.0; +http://webmeup-crawler.com/ <http://webmeup-crawler.com/>)'
PATH = '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
PATH_INFO = '/accounts/fedora/login/'
QUERY_STRING = 'process=login&next=/mailman3/hyperkitty/list/44net(a)mailman.ampr.org <mailto:process=login&next=/mailman3/hyperkitty/list/44net@mailman.ampr.org>/message/O5Z2YZBJZXFPH2ACAORN6BST7B2S3M3P/'
REMOTE_ADDR = '157.90.177.212'
REMOTE_PORT = '63384'
REQUEST_METHOD = 'GET'
REQUEST_SCHEME = 'https'
REQUEST_URI = '/mailman3/accounts/fedora/login/?process=login&next=/mailman3/hyperkitty/list/44net(a)mailman.ampr.org <mailto:mailman3/accounts/fedora/login/?process=login&next=/mailman3/hyperkitty/list/44net@mailman.ampr.org>/message/O5Z2YZBJZXFPH2ACAORN6BST7B2S3M3P/'
SCRIPT_FILENAME = 'proxy:uwsgi://localhost//accounts/fedora/login/' <uwsgi://localhost//accounts/fedora/login/'>
SCRIPT_NAME = '/mailman3'
SERVER_ADDR = '44.1.1.29'
SERVER_ADMIN = 'postmaster(a)ardc.net <mailto:postmaster@ardc.net>'
SERVER_NAME = 'mailman.ardc.net <http://mailman.ardc.net/>'
SERVER_PORT = '443'
SERVER_PROTOCOL = 'HTTP/1.1'
SERVER_SIGNATURE = '<address>Apache/2.4.53 (Debian) Server at mailman.ardc.net <http://mailman.ardc.net/> Port 443</address>\n'
SERVER_SOFTWARE = 'Apache/2.4.53 (Debian)'
SSL_TLS_SNI = 'mailman.ardc.net <http://mailman.ardc.net/>'
uwsgi.core = 1
uwsgi.node = b'mailman'
uwsgi.version = b'2.0.19.1-debian'
wsgi.errors = <_io.TextIOWrapper name=2 mode='w' encoding='UTF-8'>
wsgi.file_wrapper = ''
wsgi.input = <uwsgi._Input object at 0x7f8e0b4a0410>
wsgi.multiprocess = False
wsgi.multithread = True
wsgi.run_once = False
wsgi.url_scheme = 'https'
wsgi.version = '(1, 0)'
Settings:
Using settings module settings
ABSOLUTE_URL_OVERRIDES = {}
ACCOUNT_AUTHENTICATION_METHOD = 'username_email'
ACCOUNT_DEFAULT_HTTP_PROTOCOL = 'https'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
ACCOUNT_UNIQUE_EMAIL = True
ADMINS = "(('Mailman Suite Admin', 'postmaster(a)ardc.net <mailto:postmaster@ardc.net>'),)"
ALLOWED_HOSTS = ['*']
APPEND_SLASH = True
AUTHENTICATION_BACKENDS = "('django.contrib.auth.backends.ModelBackend', 'allauth.account.auth_backends.AuthenticationBackend')"
AUTH_PASSWORD_VALIDATORS = '********************'
AUTH_USER_MODEL = 'auth.User'
BASE_DIR = '/usr/share/mailman3-web'
CACHES = {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}}
CACHE_MIDDLEWARE_ALIAS = 'default'
CACHE_MIDDLEWARE_KEY_PREFIX = '********************'
CACHE_MIDDLEWARE_SECONDS = 600
COMPRESSORS = {'css': 'compressor.css.CssCompressor', 'js': 'compressor.js.JsCompressor'}
COMPRESS_CACHEABLE_PRECOMPILERS = '()'
COMPRESS_CACHE_BACKEND = 'default'
COMPRESS_CACHE_KEY_FUNCTION = '********************'
COMPRESS_CLEAN_CSS_ARGUMENTS = ''
COMPRESS_CLEAN_CSS_BINARY = 'cleancss'
COMPRESS_CLOSURE_COMPILER_ARGUMENTS = ''
COMPRESS_CLOSURE_COMPILER_BINARY = 'java -jar compiler.jar'
COMPRESS_CSS_HASHING_METHOD = 'mtime'
COMPRESS_DATA_URI_MAX_SIZE = 1024
COMPRESS_DEBUG_TOGGLE = None
COMPRESS_ENABLED = True
COMPRESS_FILTERS = {'css': ['compressor.filters.css_default.CssAbsoluteFilter'], 'js': ['compressor.filters.jsmin.JSMinFilter']}
COMPRESS_JINJA2_GET_ENVIRONMENT = <function CompressorConf.JINJA2_GET_ENVIRONMENT at 0x7f8e17d7a670>
COMPRESS_MINT_DELAY = 30
COMPRESS_MTIME_DELAY = 10
COMPRESS_OFFLINE = True
COMPRESS_OFFLINE_CONTEXT = {'STATIC_URL': '/mailman3/static/'}
COMPRESS_OFFLINE_MANIFEST = 'manifest.json'
COMPRESS_OFFLINE_TIMEOUT = 31536000
COMPRESS_OUTPUT_DIR = 'CACHE'
COMPRESS_PARSER = 'compressor.parser.AutoSelectParser'
COMPRESS_PRECOMPILERS = '()'
COMPRESS_REBUILD_TIMEOUT = 2592000
COMPRESS_ROOT = '/var/lib/mailman3/web/static'
COMPRESS_STORAGE = 'compressor.storage.CompressorFileStorage'
COMPRESS_TEMPLATE_FILTER_CONTEXT = {'STATIC_URL': '/mailman3/static/'}
COMPRESS_URL = '/mailman3/static/'
COMPRESS_URL_PLACEHOLDER = '/__compressor_url_placeholder__/'
COMPRESS_VERBOSE = False
COMPRESS_YUGLIFY_BINARY = 'yuglify'
COMPRESS_YUGLIFY_CSS_ARGUMENTS = '--terminal'
COMPRESS_YUGLIFY_JS_ARGUMENTS = '--terminal'
COMPRESS_YUI_BINARY = 'java -jar yuicompressor.jar'
COMPRESS_YUI_CSS_ARGUMENTS = ''
COMPRESS_YUI_JS_ARGUMENTS = ''
CSRF_COOKIE_AGE = 31449600
CSRF_COOKIE_DOMAIN = None
CSRF_COOKIE_HTTPONLY = False
CSRF_COOKIE_NAME = 'csrftoken'
CSRF_COOKIE_PATH = '/'
CSRF_COOKIE_SAMESITE = 'Lax'
CSRF_COOKIE_SECURE = False
CSRF_FAILURE_VIEW = 'django.views.csrf.csrf_failure'
CSRF_HEADER_NAME = 'HTTP_X_CSRFTOKEN'
CSRF_TRUSTED_ORIGINS = []
CSRF_USE_SESSIONS = False
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql', 'NAME': 'mailman', 'USER': 'mailman', 'PASSWORD': '********************', 'HOST': ‘X.X.X.X', 'PORT': '', 'OPTIONS': {'init_command': "SET sql_mode='STRICT_TRANS_TABLES'", 'charset': 'utf8mb4'}, 'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0, 'TIME_ZONE': None, 'TEST': {'CHARSET': None, 'COLLATION': None, 'NAME': None, 'MIRROR': None}}}
DATABASE_ROUTERS = []
DATA_UPLOAD_MAX_MEMORY_SIZE = 2621440
DATA_UPLOAD_MAX_NUMBER_FIELDS = 1000
DATETIME_FORMAT = 'N j, Y, P'
DATETIME_INPUT_FORMATS = ['%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f', '%Y-%m-%d %H:%M', '%Y-%m-%d', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%Y', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M', '%m/%d/%y']
DATE_FORMAT = 'N j, Y'
DATE_INPUT_FORMATS = ['%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', '%b %d %Y', '%b %d, %Y', '%d %b %Y', '%d %b, %Y', '%B %d %Y', '%B %d, %Y', '%d %B %Y', '%d %B, %Y']
DEBUG = False
DEBUG_PROPAGATE_EXCEPTIONS = False
DECIMAL_SEPARATOR = '.'
DEFAULT_CHARSET = 'utf-8'
DEFAULT_CONTENT_TYPE = 'text/html'
DEFAULT_EXCEPTION_REPORTER_FILTER = 'django.views.debug.SafeExceptionReporterFilter'
DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
DEFAULT_FROM_EMAIL = 'postorius(a)mailman.ardc.net <mailto:postorius@mailman.ardc.net>'
DEFAULT_INDEX_TABLESPACE = ''
DEFAULT_TABLESPACE = ''
DISALLOWED_USER_AGENTS = []
EMAILNAME = 'mailman.ardc.net <http://mailman.ardc.net/>'
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'localhost'
EMAIL_HOST_PASSWORD = '********************'
EMAIL_HOST_USER = ''
EMAIL_PORT = 25
EMAIL_SSL_CERTFILE = None
EMAIL_SSL_KEYFILE = '********************'
EMAIL_SUBJECT_PREFIX = '[Django] '
EMAIL_TIMEOUT = None
EMAIL_USE_LOCALTIME = False
EMAIL_USE_SSL = False
EMAIL_USE_TLS = False
FILE_CHARSET = 'utf-8'
FILE_UPLOAD_DIRECTORY_PERMISSIONS = None
FILE_UPLOAD_HANDLERS = ['django.core.files.uploadhandler.MemoryFileUploadHandler', 'django.core.files.uploadhandler.TemporaryFileUploadHandler']
FILE_UPLOAD_MAX_MEMORY_SIZE = 2621440
FILE_UPLOAD_PERMISSIONS = None
FILE_UPLOAD_TEMP_DIR = None
FILTER_VHOST = False
FIRST_DAY_OF_WEEK = 0
FIXTURE_DIRS = []
FORCE_SCRIPT_NAME = None
FORMAT_MODULE_PATH = None
FORM_RENDERER = 'django.forms.renderers.DjangoTemplates'
HAYSTACK_CONNECTIONS = {'default': {'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine', 'PATH': '/var/lib/mailman3/web/fulltext_index'}}
HOSTNAME = 'localhost.local'
IGNORABLE_404_URLS = []
INSTALLED_APPS = "('hyperkitty', 'postorius', 'django_mailman3', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'django_gravatar', 'compressor', 'haystack', 'django_extensions', 'django_q', 'allauth', 'allauth.account', 'allauth.socialaccount', 'django_mailman3.lib.auth.fedora')"
INTERNAL_IPS = []
LANGUAGES = [('af', 'Afrikaans'), ('ar', 'Arabic'), ('ast', 'Asturian'), ('az', 'Azerbaijani'), ('bg', 'Bulgarian'), ('be', 'Belarusian'), ('bn', 'Bengali'), ('br', 'Breton'), ('bs', 'Bosnian'), ('ca', 'Catalan'), ('cs', 'Czech'), ('cy', 'Welsh'), ('da', 'Danish'), ('de', 'German'), ('dsb', 'Lower Sorbian'), ('el', 'Greek'), ('en', 'English'), ('en-au', 'Australian English'), ('en-gb', 'British English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('es-ar', 'Argentinian Spanish'), ('es-co', 'Colombian Spanish'), ('es-mx', 'Mexican Spanish'), ('es-ni', 'Nicaraguan Spanish'), ('es-ve', 'Venezuelan Spanish'), ('et', 'Estonian'), ('eu', 'Basque'), ('fa', 'Persian'), ('fi', 'Finnish'), ('fr', 'French'), ('fy', 'Frisian'), ('ga', 'Irish'), ('gd', 'Scottish Gaelic'), ('gl', 'Galician'), ('he', 'Hebrew'), ('hi', 'Hindi'), ('hr', 'Croatian'), ('hsb', 'Upper Sorbian'), ('hu', 'Hungarian'), ('hy', 'Armenian'), ('ia', 'Interlingua'), ('id', 'Indonesian'), ('io', 'Ido'), ('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka', 'Georgian'), ('kab', 'Kabyle'), ('kk', 'Kazakh'), ('km', 'Khmer'), ('kn', 'Kannada'), ('ko', 'Korean'), ('lb', 'Luxembourgish'), ('lt', 'Lithuanian'), ('lv', 'Latvian'), ('mk', 'Macedonian'), ('ml', 'Malayalam'), ('mn', 'Mongolian'), ('mr', 'Marathi'), ('my', 'Burmese'), ('nb', 'Norwegian Bokmål'), ('ne', 'Nepali'), ('nl', 'Dutch'), ('nn', 'Norwegian Nynorsk'), ('os', 'Ossetic'), ('pa', 'Punjabi'), ('pl', 'Polish'), ('pt', 'Portuguese'), ('pt-br', 'Brazilian Portuguese'), ('ro', 'Romanian'), ('ru', 'Russian'), ('sk', 'Slovak'), ('sl', 'Slovenian'), ('sq', 'Albanian'), ('sr', 'Serbian'), ('sr-latn', 'Serbian Latin'), ('sv', 'Swedish'), ('sw', 'Swahili'), ('ta', 'Tamil'), ('te', 'Telugu'), ('th', 'Thai'), ('tr', 'Turkish'), ('tt', 'Tatar'), ('udm', 'Udmurt'), ('uk', 'Ukrainian'), ('ur', 'Urdu'), ('vi', 'Vietnamese'), ('zh-hans', 'Simplified Chinese'), ('zh-hant', 'Traditional Chinese')]
LANGUAGES_BIDI = ['he', 'ar', 'fa', 'ur']
LANGUAGE_CODE = 'en-us'
LANGUAGE_COOKIE_AGE = None
LANGUAGE_COOKIE_DOMAIN = None
LANGUAGE_COOKIE_NAME = 'django_language'
LANGUAGE_COOKIE_PATH = '/'
LOCALE_PATHS = []
LOGGING = {'version': 1, 'disable_existing_loggers': False, 'filters': {'require_debug_false': {'()': 'django.utils.log.RequireDebugFalse'}}, 'handlers': {'mail_admins': {'level': 'ERROR', 'filters': ['require_debug_false'], 'class': 'django.utils.log.AdminEmailHandler'}, 'file': {'level': 'INFO', 'class': 'logging.handlers.RotatingFileHandler', 'filename': '/var/log/mailman3/web/mailman-web.log', 'formatter': 'verbose'}, 'console': {'class': 'logging.StreamHandler', 'formatter': 'simple'}}, 'loggers': {'django.request': {'handlers': ['mail_admins', 'file'], 'level': 'INFO', 'propagate': True}, 'django': {'handlers': ['file'], 'level': 'INFO', 'propagate': True}, 'hyperkitty': {'handlers': ['file'], 'level': 'INFO', 'propagate': True}, 'postorius': {'handlers': ['file'], 'level': 'INFO', 'propagate': True}}, 'formatters': {'verbose': {'format': '%(levelname)s %(asctime)s %(process)d %(name)s %(message)s'}, 'simple': {'format': '%(levelname)s %(message)s'}}}
LOGGING_CONFIG = 'logging.config.dictConfig'
LOGIN_REDIRECT_URL = 'list_index'
LOGIN_URL = 'account_login'
LOGOUT_REDIRECT_URL = None
LOGOUT_URL = 'account_logout'
MAILMAN_ARCHIVER_FROM = "('127.0.0.1', '::1', '10.4.16.129', '44.1.1.29')"
MAILMAN_ARCHIVER_KEY = '********************'
MAILMAN_REST_API_PASS = '********************'
MAILMAN_REST_API_URL = '********************'
MAILMAN_REST_API_USER = '********************'
MANAGERS = []
MEDIA_ROOT = ''
MEDIA_URL = ''
MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage'
MESSAGE_TAGS = {40: 'danger'}
MIDDLEWARE = "('django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.security.SecurityMiddleware', 'django_mailman3.middleware.TimezoneMiddleware', 'postorius.middleware.PostoriusMiddleware')"
MIGRATION_MODULES = {}
MONTH_DAY_FORMAT = 'F j'
NUMBER_GROUPING = 0
PASSWORD_HASHERS = '********************'
PASSWORD_RESET_TIMEOUT_DAYS = '********************'
POSTORIUS_TEMPLATE_BASE_URL = 'http://localhost/mailman3/ <http://localhost/mailman3/>'
PREPEND_WWW = False
Q_CLUSTER = {'timeout': 300, 'save_limit': 100, 'orm': 'default', 'poll': 5}
ROOT_URLCONF = 'urls'
SECRET_KEY = '********************'
SECURE_BROWSER_XSS_FILTER = False
SECURE_CONTENT_TYPE_NOSNIFF = False
SECURE_HSTS_INCLUDE_SUBDOMAINS = False
SECURE_HSTS_PRELOAD = False
SECURE_HSTS_SECONDS = 0
SECURE_PROXY_SSL_HEADER = None
SECURE_REDIRECT_EXEMPT = []
SECURE_SSL_HOST = None
SECURE_SSL_REDIRECT = False
SERVER_EMAIL = 'root(a)mailman.ardc.net <mailto:root@mailman.ardc.net>'
SESSION_CACHE_ALIAS = 'default'
SESSION_COOKIE_AGE = 1209600
SESSION_COOKIE_DOMAIN = None
SESSION_COOKIE_HTTPONLY = True
SESSION_COOKIE_NAME = 'sessionid'
SESSION_COOKIE_PATH = '/'
SESSION_COOKIE_SAMESITE = 'Lax'
SESSION_COOKIE_SECURE = False
SESSION_ENGINE = 'django.contrib.sessions.backends.db'
SESSION_EXPIRE_AT_BROWSER_CLOSE = False
SESSION_FILE_PATH = None
SESSION_SAVE_EVERY_REQUEST = False
SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer'
SETTINGS_MODULE = 'settings'
SHORT_DATETIME_FORMAT = 'm/d/Y P'
SHORT_DATE_FORMAT = 'm/d/Y'
SIGNING_BACKEND = 'django.core.signing.TimestampSigner'
SILENCED_SYSTEM_CHECKS = []
SITE_ID = 1
SOCIALACCOUNT_PROVIDERS = {}
STATICFILES_DIRS = '()'
STATICFILES_FINDERS = "('django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder', 'compressor.finders.CompressorFinder')"
STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage'
STATIC_ROOT = '/var/lib/mailman3/web/static'
STATIC_URL = '/mailman3/static/'
TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': {'context_processors': ['django.template.context_processors.debug', 'django.template.context_processors.i18n', 'django.template.context_processors.media', 'django.template.context_processors.static', 'django.template.context_processors.tz', 'django.template.context_processors.csrf', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', 'django_mailman3.context_processors.common', 'hyperkitty.context_processors.common', 'postorius.context_processors.postorius']}}]
TEST_NON_SERIALIZED_APPS = []
TEST_RUNNER = 'django.test.runner.DiscoverRunner'
THOUSAND_SEPARATOR = ','
TIME_FORMAT = 'P'
TIME_INPUT_FORMATS = ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_THOUSAND_SEPARATOR = False
USE_TZ = True
USE_X_FORWARDED_HOST = True
USE_X_FORWARDED_PORT = False
WSGI_APPLICATION = 'wsgi.application'
X_FRAME_OPTIONS = 'SAMEORIGIN'
YEAR_MONTH_FORMAT = 'F Y’
2 years, 9 months

[MM3-users] Re: Migrating mailman3 to latest ubuntu lts
by Helio Loureiro
And using the module manually works...
(venv) mailman@new-server ~ (v3.3.9) [0|127]> *ipython3*
/usr/lib/python3/dist-packages/IPython/core/interactiveshell.py:949:
UserWarning: Attempting to work in a virtualenv. If you encounter problems,
please install IPython inside the virtualenv.
warn(
Python 3.10.12 (main, Jun 11 2023, 05:26:28) [GCC 11.4.0]
Type 'copyright', 'credits' or 'license' for more information
IPython 7.31.1 -- An enhanced Interactive Python. Type '?' for help.
In [1]: *import MySQLdb*
(venv) mailman@new-sever ~ (v3.3.9)> *fg*
Send job 1, 'ipython3' to foreground
In [3]: *con = MySQLdb.connect("localhost", "mailman3web",
"*****************", "mailman3web")*
In [4]:
*cursor = con.cursor()*
In [5]: *cursor.execute("show tables")*
Out[5]: 34
In [6]: *print(cursor.fetchall())*
(('account_emailaddress',), ('account_emailconfirmation',),
('auth_group',), ('auth_group_permissions',), ('auth_permission',),
('auth_user',), ('auth_user_groups',), ('auth_user_user_permissions',),
('django_admin_log',), ('django_content_type',),
('django_mailman3_maildomain',), ('django_mailman3_profile',),
('django_migrations',), ('django_q_ormq',), ('django_q_schedule',),
('django_q_task',), ('django_session',), ('django_site',),
('hyperkitty_attachment',), ('hyperkitty_email',),
('hyperkitty_favorite',), ('hyperkitty_lastview',),
('hyperkitty_mailinglist',), ('hyperkitty_profile',),
('hyperkitty_sender',), ('hyperkitty_tag',), ('hyperkitty_tagging',),
('hyperkitty_thread',), ('hyperkitty_threadcategory',),
('hyperkitty_vote',), ('socialaccount_socialaccount',),
('socialaccount_socialapp',), ('socialaccount_socialapp_sites',),
('socialaccount_socialtoken',))
In [7]: *cursor.execute("select * from account_emailaddress")*
Out[7]: 2530
In [8]: *print(cursor.fetchall())*
So what can I do? Is there a way to troubleshoot the root cause of this
issue?
Best Regards,
Helio Loureiro
https://helio.loureiro.eng.br
https://github.com/helioloureiro
https://mastodon.social/@helioloureiro
On Tue, 19 Dec 2023 at 11:11, Helio Loureiro <helio(a)loureiro.eng.br> wrote:
> Hi,
>
> No luck :(
>
> (venv) mailman@new-server ~ (v3.3.9)> *pip freeze | egrep
> "mailman-web|django-mailman3|django-allauth"*
> django-allauth==0.59.0
> django-mailman3==1.3.11
> mailman-web==0.0.8
> (venv) mailman@new-server ~ (v3.3.9)> *pip install -U
> django-allauth==0.58.0*
> Collecting django-allauth==0.58.0
> Downloading django-allauth-0.58.0.tar.gz (861 kB)
> ---------------------------------------- 861.7/861.7 KB 9.4 MB/s eta
> 0:00:00
> Installing build dependencies ... done
> Getting requirements to build wheel ... done
> Installing backend dependencies ... done
> Preparing metadata (pyproject.toml) ... done
> Requirement already satisfied: requests-oauthlib>=0.3.0 in
> ./venv/lib/python3.10/site-packages (from django-allauth==0.58.0) (1.3.1)
> Requirement already satisfied: Django>=3.2 in
> ./venv/lib/python3.10/site-packages (from django-allauth==0.58.0) (4.1.13)
> Requirement already satisfied: pyjwt[crypto]>=1.7 in
> ./venv/lib/python3.10/site-packages (from django-allauth==0.58.0) (2.8.0)
> Requirement already satisfied: requests>=2.0.0 in
> ./venv/lib/python3.10/site-packages (from django-allauth==0.58.0) (2.31.0)
> Requirement already satisfied: python3-openid>=3.0.8 in
> ./venv/lib/python3.10/site-packages (from django-allauth==0.58.0) (3.2.0)
> Requirement already satisfied: asgiref<4,>=3.5.2 in
> ./venv/lib/python3.10/site-packages (from
> Django>=3.2->django-allauth==0.58.0) (3.7.2)
> Requirement already satisfied: sqlparse>=0.2.2 in
> ./venv/lib/python3.10/site-packages (from
> Django>=3.2->django-allauth==0.58.0) (0.4.4)
> Requirement already satisfied: cryptography>=3.4.0 in
> ./venv/lib/python3.10/site-packages (from
> pyjwt[crypto]>=1.7->django-allauth==0.58.0) (41.0.7)
> Requirement already satisfied: defusedxml in
> ./venv/lib/python3.10/site-packages (from
> python3-openid>=3.0.8->django-allauth==0.58.0) (0.7.1)
> Requirement already satisfied: urllib3<3,>=1.21.1 in
> ./venv/lib/python3.10/site-packages (from
> requests>=2.0.0->django-allauth==0.58.0) (2.1.0)
> Requirement already satisfied: charset-normalizer<4,>=2 in
> ./venv/lib/python3.10/site-packages (from
> requests>=2.0.0->django-allauth==0.58.0) (3.3.2)
> Requirement already satisfied: idna<4,>=2.5 in
> ./venv/lib/python3.10/site-packages (from
> requests>=2.0.0->django-allauth==0.58.0) (3.6)
> Requirement already satisfied: certifi>=2017.4.17 in
> ./venv/lib/python3.10/site-packages (from
> requests>=2.0.0->django-allauth==0.58.0) (2023.11.17)
> Requirement already satisfied: oauthlib>=3.0.0 in
> ./venv/lib/python3.10/site-packages (from
> requests-oauthlib>=0.3.0->django-allauth==0.58.0) (3.2.2)
> Requirement already satisfied: typing-extensions>=4 in
> ./venv/lib/python3.10/site-packages (from
> asgiref<4,>=3.5.2->Django>=3.2->django-allauth==0.58.0) (4.9.0)
> Requirement already satisfied: cffi>=1.12 in
> ./venv/lib/python3.10/site-packages (from
> cryptography>=3.4.0->pyjwt[crypto]>=1.7->django-allauth==0.58.0) (1.16.0)
> Requirement already satisfied: pycparser in
> ./venv/lib/python3.10/site-packages (from
> cffi>=1.12->cryptography>=3.4.0->pyjwt[crypto]>=1.7->django-allauth==0.58.0)
> (2.21)
> Building wheels for collected packages: django-allauth
> Building wheel for django-allauth (pyproject.toml) ... done
> Created wheel for django-allauth:
> filename=django_allauth-0.58.0-py3-none-any.whl size=1157319
> sha256=a430c552101d1ad47bc00b16d1c1d6df728afacdd13823927b4cbfb02c35dbfc
> Stored in directory:
> /local/mailman/.cache-ubuntu-22.04/pip/wheels/55/0a/79/e199827a18f310906c2a90b0e92b89c41daf21d2a502db6710
> Successfully built django-allauth
> Installing collected packages: django-allauth
> Attempting uninstall: django-allauth
> Found existing installation: django-allauth 0.59.0
> Uninstalling django-allauth-0.59.0:
> Successfully uninstalled django-allauth-0.59.0
> Successfully installed django-allauth-0.58.0
> (venv) mailman@new-server ~ (v3.3.9)> *mailman-web migrate*
> System check identified some issues:
>
> WARNINGS:
> account.EmailAddress: (models.W036) MariaDB does not support unique
> constraints with conditions.
> HINT: A constraint won't be created. Silence this warning if you don't
> care about it.
> account.EmailAddress: (models.W043) MariaDB does not support indexes on
> expressions.
> HINT: An index won't be created. Silence this warning if you don't care
> about it.
> Operations to perform:
> Apply all migrations: account, admin, auth, contenttypes,
> django_mailman3, django_q, hyperkitty, postorius, sessions, sites,
> socialaccount
> Running migrations:
> Applying account.0004_alter_emailaddress_drop_unique_email...Traceback
> (most recent call last):
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/utils.py",
> line 89, in _execute
> return self.cursor.execute(sql, params)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/mysql/base.py",
> line 75, in execute
> return self.cursor.execute(query, args)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
> 179, in execute
> res = self._query(mogrified_query)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
> 330, in _query
> db.query(q)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/connections.py",
> line 257, in query
> _mysql.connection.query(self, query)
> MySQLdb.OperationalError: (2013, 'Lost connection to MySQL server during
> query')
>
> The above exception was the direct cause of the following exception:
>
> Traceback (most recent call last):
> File "/local/mailman/venv/bin/mailman-web", line 8, in <module>
> sys.exit(main())
> File
> "/local/mailman/venv/lib/python3.10/site-packages/mailman_web/manage.py",
> line 90, in main
> execute_from_command_line(sys.argv)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/core/management/__init__.py",
> line 446, in execute_from_command_line
> utility.execute()
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/core/management/__init__.py",
> line 440, in execute
> self.fetch_command(subcommand).run_from_argv(self.argv)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/core/management/base.py",
> line 402, in run_from_argv
> self.execute(*args, **cmd_options)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/core/management/base.py",
> line 448, in execute
> output = self.handle(*args, **options)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/core/management/base.py",
> line 96, in wrapped
> res = handle_func(*args, **kwargs)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/core/management/commands/migrate.py",
> line 349, in handle
> post_migrate_state = executor.migrate(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/migrations/executor.py",
> line 135, in migrate
> state = self._migrate_all_forwards(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/migrations/executor.py",
> line 167, in _migrate_all_forwards
> state = self.apply_migration(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/migrations/executor.py",
> line 252, in apply_migration
> state = migration.apply(state, schema_editor)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/migrations/migration.py",
> line 130, in apply
> operation.database_forwards(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/migrations/operations/fields.py",
> line 235, in database_forwards
> schema_editor.alter_field(from_model, from_field, to_field)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/base/schema.py",
> line 788, in alter_field
> self._alter_field(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/base/schema.py",
> line 858, in _alter_field
> self.execute(self._delete_unique_sql(model, constraint_name))
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/base/schema.py",
> line 199, in execute
> cursor.execute(sql, params)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/utils.py",
> line 67, in execute
> return self._execute_with_wrappers(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/utils.py",
> line 80, in _execute_with_wrappers
> return executor(sql, params, many, context)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/utils.py",
> line 84, in _execute
> with self.db.wrap_database_errors:
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/utils.py", line
> 91, in __exit__
> raise dj_exc_value.with_traceback(traceback) from exc_value
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/utils.py",
> line 89, in _execute
> return self.cursor.execute(sql, params)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/mysql/base.py",
> line 75, in execute
> return self.cursor.execute(query, args)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
> 179, in execute
> res = self._query(mogrified_query)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
> 330, in _query
> db.query(q)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/connections.py",
> line 257, in query
> _mysql.connection.query(self, query)
> django.db.utils.OperationalError: (2013, 'Lost connection to MySQL server
> during query')
> (venv) mailman@new-server ~ (v3.3.9) [0|1]> *more
> /etc/mailman3/settings.py*
> # Mailman Web configuration file.
> # /etc/mailman3/settings.py
>
> # Get the default settings.
> from mailman_web.settings.base import *
> from mailman_web.settings.mailman import *
>
> # Settings below supplement or override the defaults.
>
> #: Default list of admins who receive the emails from error logging.
> ADMINS = (
> ('Mailman Suite Admin', 'root@localhost'),
> )
>
> # Postgresql database setup.
> DATABASES = {
> 'default': {
> 'ENGINE': 'django.db.backends.mysql',
> 'NAME': 'mailman3web',
> 'USER': 'mailman3web',
> # TODO: Replace this with the password.
> 'PASSWORD': '***********',
> 'HOST': 'localhost',
> # PORT: set to empty string for default.
> 'PORT': '3306',
> # OPTIONS: Extra parameters to use when connecting to the database.
> #'OPTIONS': {
> # Set sql_mode to 'STRICT_TRANS_TABLES' for MySQL. See
> # https://docs.djangoproject.com/en/1.11/ref/
> # databases/#setting-sql-mode
> # 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
> # 'charset': 'utf8mb4',
> #},
>
> }
> }
>
> # 'collectstatic' command will copy all the static files here.
> # Alias this location from your webserver to `/static`
> STATIC_ROOT = '/local/mailman/web/static'
>
> # enable the 'compress' command.
> COMPRESS_ENABLED = True
>
> # Make sure that this directory is created or Django will fail on start.
> LOGGING['handlers']['file']['filename'] =
> '/local/mailman/web/logs/mailmanweb.log'
>
> #: See https://docs.djangoproject.com/en/dev/ref/settings/#allowed-hosts
> ALLOWED_HOSTS = [
> "localhost", # Archiving API from Mailman, keep it.
> "127.0.0.1",
> # "lists.your-domain.org",
> # Add here all production domains you have.
> "*"
> ]
>
> #: See
> https://docs.djangoproject.com/en/dev/ref/settings/#csrf-trusted-origins
> (venv) mailman@new-server ~ (v3.3.9)> *mysql -umailman3web -p -h
> localhost mailman3web*
> Enter password:
> Reading table information for completion of table and column names
> You can turn off this feature to get a quicker startup with -A
>
> Welcome to the MariaDB monitor. Commands end with ; or \g.
> Your MariaDB connection id is 32
> Server version: 10.6.12-MariaDB-0ubuntu0.22.04.1 Ubuntu 22.04
>
> Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
>
> Type 'help;' or '\h' for help. Type '\c' to clear the current input
> statement.
>
> MariaDB [mailman3web]> show tables;
> +-------------------------------+
> | Tables_in_mailman3web |
> +-------------------------------+
> | account_emailaddress |
> | account_emailconfirmation |
> | auth_group |
> | auth_group_permissions |
> | auth_permission |
> | auth_user |
> | auth_user_groups |
> | auth_user_user_permissions |
> | django_admin_log |
> | django_content_type |
> | django_mailman3_maildomain |
> | django_mailman3_profile |
> | django_migrations |
> | django_q_ormq |
> | django_q_schedule |
> | django_q_task |
> | django_session |
> | django_site |
> | hyperkitty_attachment |
> | hyperkitty_email |
> | hyperkitty_favorite |
> | hyperkitty_lastview |
> | hyperkitty_mailinglist |
> | hyperkitty_profile |
> | hyperkitty_sender |
> | hyperkitty_tag |
> | hyperkitty_tagging |
> | hyperkitty_thread |
> | hyperkitty_threadcategory |
> | hyperkitty_vote |
> | socialaccount_socialaccount |
> | socialaccount_socialapp |
> | socialaccount_socialapp_sites |
> | socialaccount_socialtoken |
> +-------------------------------+
> 34 rows in set (0.000 sec)
>
> Best Regards,
> Helio Loureiro
> https://helio.loureiro.eng.br
> https://github.com/helioloureiro
> https://mastodon.social/@helioloureiro
>
>
> On Mon, 18 Dec 2023 at 17:11, Mark Sapiro <mark(a)msapiro.net> wrote:
>
>> On 12/18/23 6:24 AM, Helio Loureiro wrote:
>> > Hi,
>> >
>> > Indeed it was the configuration. It was placed into
>> > /etc/mailman3/mailman-web.py. After a I changed to
>> > /etc/mailman3/settings.py a few things advanced a little bit more.
>> >
>> > I had to figure out how to fix mysqlclient installation since there
>> isn't a
>> > mention about it and the simple "pip install mysqclient" was breaking
>> with
>> > pkg-config issues. But it did work at the end.
>> >
>> > Now I can see further messages on mailman3-web than before.
>> >
>> > (venv) mailman@new-server ~ (v3.3.9)> mailman-web migrate
>> > System check identified some issues:
>> >
>> > WARNINGS:
>> > account.EmailAddress: (models.W036) MariaDB does not support unique
>> > constraints with conditions.
>> > HINT: A constraint won't be created. Silence this warning if you don't
>> care
>> > about it.
>> > account.EmailAddress: (models.W043) MariaDB does not support indexes on
>> > expressions.
>> > HINT: An index won't be created. Silence this warning if you don't care
>> > about it.
>> > Operations to perform:
>> > Apply all migrations: account, admin, auth, contenttypes,
>> > django_mailman3, django_q, hyperkitty, postorius, sessions, sites,
>> > socialaccount
>> > Running migrations:
>> > Applying
>> account.0004_alter_emailaddress_drop_unique_email...Traceback
>> > (most recent call last):
>>
>>
>> I'm not sure why there would be an issue with this migration, but there
>> is a possible compatibility issue depending on how you installed things.
>>
>> django-mailman3<=1.3.11 is not compatible with django-allauth>=0.58.
>>
>> In your venv, try
>> ```
>> pip install django-allauth\<0.58
>> ```
>>
>> --
>> Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
>> San Francisco Bay Area, California better use your sense - B. Dylan
>>
>> _______________________________________________
>> Mailman-users mailing list -- mailman-users(a)mailman3.org
>> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
>> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>> Archived at:
>> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
>>
>> This message sent to helio(a)loureiro.eng.br
>>
>
1 year, 4 months

[MM3-users] Re: Migration from old server to new server failed
by Helio Loureiro
Hi,
I repeated the steps today.
First I waited to end the errors raised because the mailman3-web wasn't
running.
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File
"/local/mailman/venv/lib/python3.10/site-packages/urllib3/connectionpool.py",
line 793, in urlopen
response = self._make_request(
File
"/local/mailman/venv/lib/python3.10/site-packages/urllib3/connectionpool.py",
line 496, in _make_request
conn.request(
File
"/local/mailman/venv/lib/python3.10/site-packages/urllib3/connection.py",
line 400, in request
self.endheaders()
File "/usr/lib/python3.10/http/client.py", line 1278, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "/usr/lib/python3.10/http/client.py", line 1038, in _send_output
self.send(msg)
File "/usr/lib/python3.10/http/client.py", line 976, in send
self.connect()
File
"/local/mailman/venv/lib/python3.10/site-packages/urllib3/connection.py",
line 238, in connect
self.sock = self._new_conn()
File
"/local/mailman/venv/lib/python3.10/site-packages/urllib3/connection.py",
line 213, in _new_conn
raise NewConnectionError(
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection
object at 0x7f0fdc2f72b0>: Failed to establish a new connection: [Errno
111] Connection refused
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File
"/local/mailman/venv/lib/python3.10/site-packages/requests/adapters.py",
line 486, in send
resp = conn.urlopen(
File
"/local/mailman/venv/lib/python3.10/site-packages/urllib3/connectionpool.py",
line 847, in urlopen
retries = retries.increment(
File
"/local/mailman/venv/lib/python3.10/site-packages/urllib3/util/retry.py",
line 515, in increment
raise MaxRetryError(_pool, url, reason) from reason # type:
ignore[arg-type]
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='127.0.0.1',
port=8000): Max retries exceeded with url: /archives/api/mailman/archive
(Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at
0x7f0fdc2f72b0>: Failed to establish a new connection: [Errno 111]
Connection refused'))
Which seems to keep forever. So eventually I gave up and moved forward.
And I changed to use the uwsgi socket instead of the direct port.
(venv) mailman@new-mailman3 ~ (v3.1.1) [0|SIGINT]> mailman-web migrate
System check identified some issues:
WARNINGS:
account.EmailAddress: (models.W036) MariaDB does not support unique
constraints with conditions.
HINT: A constraint won't be created. Silence this warning if you
don't care about it.
account.EmailAddress: (models.W043) MariaDB does not support indexes on
expressions.
HINT: An index won't be created. Silence this warning if you don't
care about it.
Operations to perform:
Apply all migrations: account, admin, auth, contenttypes,
django_mailman3, django_q, hyperkitty, postorius, sessions, sites,
socialaccount
Running migrations:
Applying account.0003_alter_emailaddress_create_unique_verified_email...
OK
Applying account.0004_alter_emailaddress_drop_unique_email... OK
Applying account.0005_emailaddress_idx_upper_email... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying auth.0012_alter_user_first_name_max_length... OK
Applying django_mailman3.0003_sessions... OK
Applying django_q.0010_auto_20200610_0856... OK
Applying django_q.0011_auto_20200628_1055... OK
Applying django_q.0012_auto_20200702_1608... OK
Applying django_q.0013_task_attempt_count... OK
Applying django_q.0014_schedule_cluster... OK
Applying hyperkitty.0016_auto_20180309_0056... OK
Applying hyperkitty.0017_file_attachments... OK
Applying hyperkitty.0018_threadcategory_color... OK
Applying hyperkitty.0019_auto_20190127_null_description... OK
Applying hyperkitty.0020_auto_20190907_1927... OK
Applying hyperkitty.0021_add_owners_mods...Traceback (most recent call
last):
File
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/utils.py",
line 87, in _execute
return self.cursor.execute(sql)
File
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/mysql/base.py",
line 75, in execute
return self.cursor.execute(query, args)
File
"/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
179, in execute
res = self._query(mogrified_query)
File
"/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
330, in _query
db.query(q)
File
"/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/connections.py",
line 261, in query
_mysql.connection.query(self, query)
MySQLdb.OperationalError: (1050, "Table 'hyperkitty_mailinglist_moderators'
already exists")
Then dropping table hyperkitty_mailinglist_moderators.
(venv) mailman@new-mailman3 ~ (v3.1.1)> mailman-web migrate
System check identified some issues:
WARNINGS:
account.EmailAddress: (models.W036) MariaDB does not support unique
constraints with conditions.
HINT: A constraint won't be created. Silence this warning if you
don't care about it.
account.EmailAddress: (models.W043) MariaDB does not support indexes on
expressions.
HINT: An index won't be created. Silence this warning if you don't
care about it.
Operations to perform:
Apply all migrations: account, admin, auth, contenttypes,
django_mailman3, django_q, hyperkitty, postorius, sessions, sites,
socialaccount
Running migrations:
Applying hyperkitty.0021_add_owners_mods...Traceback (most recent call
last):
File
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/utils.py",
line 87, in _execute
return self.cursor.execute(sql)
File
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/mysql/base.py",
line 75, in execute
return self.cursor.execute(query, args)
File
"/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
179, in execute
res = self._query(mogrified_query)
File
"/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
330, in _query
db.query(q)
File
"/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/connections.py",
line 261, in query
_mysql.connection.query(self, query)
MySQLdb.OperationalError: (1050, "Table 'hyperkitty_mailinglist_owners'
already exists")
After dropping table hyperkitty_mailinglist_owners.
(venv) mailman@new-mailman3 ~ (v3.1.1) [0|1]> mailman-web migrate
System check identified some issues:
WARNINGS:
account.EmailAddress: (models.W036) MariaDB does not support unique
constraints with conditions.
HINT: A constraint won't be created. Silence this warning if you
don't care about it.
account.EmailAddress: (models.W043) MariaDB does not support indexes on
expressions.
HINT: An index won't be created. Silence this warning if you don't
care about it.
Operations to perform:
Apply all migrations: account, admin, auth, contenttypes,
django_mailman3, django_q, hyperkitty, postorius, sessions, sites,
socialaccount
Running migrations:
Applying hyperkitty.0021_add_owners_mods...Traceback (most recent call
last):
File
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/utils.py",
line 87, in _execute
return self.cursor.execute(sql)
File
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/mysql/base.py",
line 75, in execute
return self.cursor.execute(query, args)
File
"/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
179, in execute
res = self._query(mogrified_query)
File
"/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
330, in _query
db.query(q)
File
"/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/connections.py",
line 261, in query
_mysql.connection.query(self, query)
MySQLdb.OperationalError: (1050, "Table 'hyperkitty_mailinglist_moderators'
already exists")
After dropping table hyperkitty_mailinglist_moderators.
(venv) mailman@new-mailman3 ~ (v3.1.1) [0|1]> mailman-web migrate
System check identified some issues:
WARNINGS:
account.EmailAddress: (models.W036) MariaDB does not support unique
constraints with conditions.
HINT: A constraint won't be created. Silence this warning if you
don't care about it.
account.EmailAddress: (models.W043) MariaDB does not support indexes on
expressions.
HINT: An index won't be created. Silence this warning if you don't
care about it.
Operations to perform:
Apply all migrations: account, admin, auth, contenttypes,
django_mailman3, django_q, hyperkitty, postorius, sessions, sites,
socialaccount
Running migrations:
Applying hyperkitty.0021_add_owners_mods... OK
Applying hyperkitty.0022_mailinglist_archive_rendering_mode... OK
Applying hyperkitty.0023_alter_mailinglist_name... OK
Applying postorius.0004_create_email_template...Traceback (most recent
call last):
File
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/utils.py",
line 87, in _execute
return self.cursor.execute(sql)
File
"/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/mysql/base.py",
line 75, in execute
return self.cursor.execute(query, args)
File
"/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
179, in execute
res = self._query(mogrified_query)
File
"/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
330, in _query
db.query(q)
File
"/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/connections.py",
line 261, in query
_mysql.connection.query(self, query)
MySQLdb.OperationalError: (1050, "Table 'postorius_emailtemplate' already
exists")
After dropping table postorius_emailtemplate.
(venv) mailman@new-mailman3 ~ (v3.1.1) [0|1]> mailman-web migrate
System check identified some issues:
WARNINGS:
account.EmailAddress: (models.W036) MariaDB does not support unique
constraints with conditions.
HINT: A constraint won't be created. Silence this warning if you
don't care about it.
account.EmailAddress: (models.W043) MariaDB does not support indexes on
expressions.
HINT: An index won't be created. Silence this warning if you don't
care about it.
Operations to perform:
Apply all migrations: account, admin, auth, contenttypes,
django_mailman3, django_q, hyperkitty, postorius, sessions, sites,
socialaccount
Running migrations:
Applying postorius.0004_create_email_template... OK
Applying postorius.0005_auto_20180707_1107... OK
Applying postorius.0006_auto_20180711_1359... OK
Applying postorius.0007_auto_20180712_0536... OK
Applying postorius.0008_auto_20190310_0717... OK
Applying postorius.0009_auto_20190508_1604... OK
Applying postorius.0010_auto_20190821_0621... OK
Applying postorius.0011_auto_20191109_1219... OK
Applying postorius.0012_auto_20200420_2136... OK
Applying postorius.0013_auto_20201116_0058... OK
Applying postorius.0014_auto_20210329_2248... OK
Applying postorius.0015_auto_20210619_0509... OK
Applying postorius.0016_auto_20210810_2157... OK
Applying postorius.0017_alter_emailtemplate_language... OK
Applying postorius.0018_alter_emailtemplate_language... OK
Applying socialaccount.0004_app_provider_id_settings... OK
Applying socialaccount.0005_socialtoken_nullable_app... OK
Applying socialaccount.0006_alter_socialaccount_extra_data... OK
At this point the errors remains about not reaching web part. So I started
mailman3-web.
Then I see these errors on var/log/mailman.log
Feb 19 15:35:14 2024 (543890) Traceback (most recent call last):
File
"/local/mailman/venv/lib/python3.10/site-packages/mailman_hyperkitty/__init__.py",
line 158, in _archive_message
url = self._send_message(mlist, msg)
File
"/local/mailman/venv/lib/python3.10/site-packages/mailman_hyperkitty/__init__.py",
line 228, in _send_message
raise ValueError(result.text)
ValueError: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL was not found on this server.</p>
<hr>
<address>Apache/2.4.52 (Ubuntu) Server at 127.0.0.1 Port 80</address>
</body></html>
Feb 19 15:35:14 2024 (543890) HyperKitty failure on
http://127.0.0.1/archives/api/mailman/archive: <!DOCTYPE HTML PUBLIC
"-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL was not found on this server.</p>
<hr>
<address>Apache/2.4.52 (Ubuntu) Server at 127.0.0.1 Port 80</address>
</body></html>
(404)
Feb 19 15:35:14 2024 (543890) Could not archive the message with id <
ff1707bb-d105-4f37-b3f8-9766b3563127(a)SESAMR604.domain.com>
Feb 19 15:35:14 2024 (543890) archiving failed, re-queuing (mailing-list
mylist.new-mailman.domain.com, message <
ff1707bb-d105-4f37-b3f8-9766b3563127(a)machine.domain.com>)
Feb 19 15:35:14 2024 (543890) Exception in the HyperKitty archiver:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL was not found on this server.</p>
<hr>
<address>Apache/2.4.52 (Ubuntu) Server at 127.0.0.1 Port 80</address>
</body></html>
And I can't get access to the hyperkitty at all.
On var/logs/uwsgi-error.log:
--- Logging error ---
Traceback (most recent call last):
File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
line 356, in pusher
task = SignedPackage.loads(task[1])
File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/signing.py",
line 25, in loads
return signing.loads(
File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/core_signing.py",
line 35, in loads
base64d = force_bytes(TimestampSigner(key, salt=salt).unsign(s,
max_age=max_age))
File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/core_signing.py",
line 70, in unsign
result = super(TimestampSigner, self).unsign(value)
File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/core_signing.py",
line 55, in unsign
raise BadSignature('Signature "%s" does not match' % sig)
django.core.signing.BadSignature: Signature "48do9gGvueBxakX_a4uNmSwD7cs"
does not match
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.10/logging/__init__.py", line 1100, in emit
msg = self.format(record)
File "/usr/lib/python3.10/logging/__init__.py", line 943, in format
return fmt.format(record)
File "/usr/lib/python3.10/logging/__init__.py", line 678, in format
record.message = record.getMessage()
File "/usr/lib/python3.10/logging/__init__.py", line 368, in getMessage
msg = msg % self.args
TypeError: not all arguments converted during string formatting
Call stack:
File "/local/mailman/venv/bin/mailman-web", line 8, in <module>
sys.exit(main())
File
"/local/mailman/venv/lib/python3.10/site-packages/mailman_web/manage.py",
line 90, in main
execute_from_command_line(sys.argv)
File
"/local/mailman/venv/lib/python3.10/site-packages/django/core/management/__init__.py",
line 446, in execute_from_command_line
utility.execute()
File
"/local/mailman/venv/lib/python3.10/site-packages/django/core/management/__init__.py",
line 440, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File
"/local/mailman/venv/lib/python3.10/site-packages/django/core/management/base.py",
line 402, in run_from_argv
self.execute(*args, **cmd_options)
File
"/local/mailman/venv/lib/python3.10/site-packages/django/core/management/base.py",
line 448, in execute
output = self.handle(*args, **options)
File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/management/commands/qcluster.py",
line 22, in handle
q.start()
File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
line 78, in start
self.sentinel.start()
File "/usr/lib/python3.10/multiprocessing/process.py", line 121, in start
self._popen = self._Popen(self)
File "/usr/lib/python3.10/multiprocessing/context.py", line 224, in _Popen
return _default_context.get_context().Process._Popen(process_obj)
File "/usr/lib/python3.10/multiprocessing/context.py", line 281, in _Popen
return Popen(process_obj)
File "/usr/lib/python3.10/multiprocessing/popen_fork.py", line 19, in
__init__
self._launch(process_obj)
File "/usr/lib/python3.10/multiprocessing/popen_fork.py", line 71, in
_launch
code = process_obj._bootstrap(parent_sentinel=child_r)
File "/usr/lib/python3.10/multiprocessing/process.py", line 314, in
_bootstrap
self.run()
File "/usr/lib/python3.10/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
line 168, in __init__
self.start()
File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
line 172, in start
self.spawn_cluster()
File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
line 248, in spawn_cluster
self.pusher = self.spawn_pusher()
File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
line 201, in spawn_pusher
return self.spawn_process(pusher, self.task_queue, self.event_out,
self.broker)
File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
line 197, in spawn_process
p.start()
File "/usr/lib/python3.10/multiprocessing/process.py", line 121, in start
self._popen = self._Popen(self)
File "/usr/lib/python3.10/multiprocessing/context.py", line 224, in _Popen
return _default_context.get_context().Process._Popen(process_obj)
File "/usr/lib/python3.10/multiprocessing/context.py", line 281, in _Popen
return Popen(process_obj)
File "/usr/lib/python3.10/multiprocessing/popen_fork.py", line 19, in
__init__
self._launch(process_obj)
File "/usr/lib/python3.10/multiprocessing/popen_fork.py", line 71, in
_launch
code = process_obj._bootstrap(parent_sentinel=child_r)
File "/usr/lib/python3.10/multiprocessing/process.py", line 314, in
_bootstrap
self.run()
File "/usr/lib/python3.10/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
line 358, in pusher
logger.error(e, traceback.format_exc())
Message: BadSignature('Signature "48do9gGvueBxakX_a4uNmSwD7cs" does not
match')
Arguments: ('Traceback (most recent call last):\n File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
line 356, in pusher\n task = SignedPackage.loads(task[1])\n File
"/local/mailman/venv/lib/python3.10/sit
e-packages/django_q/signing.py", line 25, in loads\n return
signing.loads(\n File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/core_signing.py",
line 35, in loads\n base64d = force_bytes(TimestampSigner(key, salt=sa
lt).unsign(s, max_age=max_age))\n File
"/local/mailman/venv/lib/python3.10/site-packages/django_q/core_signing.py",
line 70, in unsign\n result = super(TimestampSigner,
self).unsign(value)\n File "/local/mailman/venv/lib/python3.10
/site-packages/django_q/core_signing.py", line 55, in unsign\n raise
BadSignature(\'Signature "%s" does not match\' %
sig)\ndjango.core.signing.BadSignature: Signature
"48do9gGvueBxakX_a4uNmSwD7cs" does not match\n',)
I'm using uwsgi via apache:
(venv) mailman@new-mailman3 ~ (v3.1.1)> more
/etc/apache2/conf-enabled/mailman3.conf
Alias /mailman3/favicon.ico /local/mailman/web/static/favicon.ico
Alias /mailman/favicon.ico /local/mailman/web/static/favicon.ico
Alias /favicon.ico /local/mailman/web/static/favicon.ico
Alias /mailman3/static /local/mailman/web/static
Alias /mailman/static /local/mailman/web/static
Alias /static /local/mailman/web/static
<Directory "/local/mailman/web/static">
Require all granted
</Directory>
<IfModule mod_proxy_uwsgi.c>
ProxyPass /mailman3/favicon.ico !
ProxyPass /mailman/favicon.ico !
ProxyPass /favicon.ico !
ProxyPass /mailman3/static !
ProxyPass /mailman/static !
ProxyPass /static !
ProxyPass /mailman3
unix:/local/mailman/var/uwsgi.sock|uwsgi://localhost/
ProxyPass /mailman
unix:/local/mailman/var/uwsgi.sock|uwsgi://localhost/
#ProxyPass /mailman3 http://localhost:8000/ timeout=180
#ProxyPass /mailman http://localhost:8000/ timeout=180
#ProxyPass / http://localhost:8000/ timeout=180
</IfModule>
Best Regards,
Helio Loureiro
https://helio.loureiro.eng.br
https://github.com/helioloureiro
https://mastodon.social/@helioloureiro
On Fri, 16 Feb 2024 at 22:39, Mark Sapiro <mark(a)msapiro.net> wrote:
> On 2/16/24 07:12, Helio Loureiro wrote:
>
> > - start mailman3 and mailman-3web
> > - run mailman3-web migrate
>
> You should run mailman3-web migrate when mailman-3web is not running.
>
> > django.db.utils.OperationalError: (1050, "Table
> > 'hyperkitty_mailinglist_moderators' already exists")
> >
> > I tried to drop the table, but then it complained about another one. I
> > dropped all the complained tables and as result hypperkitty never
> > started. So I went back to see why the first error happened.
>
> The errors occurred because you had recently added tables in your
> database so they couldn't be added by the migrations. Dropping the
> tables was the correct thing to do.
>
> Did you ultimately successfully run all the migrations?
>
> When you say `hypperkitty never started`, what exactly does that mean?
> What happens when you try to access the archives? Can you access
> postorius? Are any errors logged in mailman3-web's log?
>
> --
> Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
> San Francisco Bay Area, California better use your sense - B. Dylan
>
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
> Archived at:
> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
>
> This message sent to helio(a)loureiro.eng.br
>
1 year, 2 months

[MM3-users] Internal Server Error: /mailman3/accounts/fedora/login/
by Mohsen Masoudfar
Hi,
I am getting the following errors starting some days ago. It is unclear to me what is causing this. I searched internet, there are some similar reports that mention bugs causing this. I am running mailman3 as Ubuntu 18 package and they do not provide any update for this.
Internal Server Error: /mailman3/accounts/fedora/login/
ProgrammingError at /accounts/fedora/login/ relation "socialaccount_openidstore" does not exist LINE 1: SELECT COUNT(*) AS "__count" FROM "socialaccount_openidstore...
^
Request Method: GET
Request URL: https://nam12.safelinks.protection.outlook.com/?url=https%3A%2F%2Flistserv2…
Django Version: 1.11.11
Python Executable: /usr/bin/uwsgi-core
Python Version: 2.7.17
Python Path: ['.', '', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']
Server time: Tue, 27 Dec 2022 11:01:12 -0500 Installed Applications:
('hyperkitty',
'postorius',
'django_mailman3',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'django_gravatar',
'paintstore',
'compressor',
'haystack',
'django_extensions',
'django_q',
'allauth',
'allauth.account',
'allauth.socialaccount',
'django_mailman3.lib.auth.fedora')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django_mailman3.middleware.TimezoneMiddleware',
'postorius.middleware.PostoriusMiddleware')
Traceback:
File "/usr/lib/python2.7/dist-packages/django/core/handlers/exception.py" in inner
41. response = get_response(request)
File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in _legacy_get_response
249. response = self._get_response(request)
File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in _get_response
187. response = self.process_exception_by_middleware(e, request)
File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in _get_response
185. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/python2.7/dist-packages/django/views/generic/base.py" in view
68. return self.dispatch(request, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/django/views/generic/base.py" in dispatch
88. return handler(request, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/django_mailman3/lib/auth/fedora/views.py" in get
59. return self.post(request, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/django_mailman3/lib/auth/fedora/views.py" in post
72. auth_request = client.begin(form.cleaned_data['openid'])
File "/usr/lib/python2.7/dist-packages/openid/consumer/consumer.py" in begin
353. return self.beginWithoutDiscovery(service, anonymous)
File "/usr/lib/python2.7/dist-packages/openid/consumer/consumer.py" in beginWithoutDiscovery
376. auth_req = self.consumer.begin(service)
File "/usr/lib/python2.7/dist-packages/openid/consumer/consumer.py" in begin
598. assoc = self._getAssociation(service_endpoint)
File "/usr/lib/python2.7/dist-packages/openid/consumer/consumer.py" in _getAssociation
1158. assoc = self.store.getAssociation(endpoint.server_url)
File "/usr/lib/python2.7/dist-packages/allauth/socialaccount/providers/openid/utils.py" in getAssociation
96. if stored_assocs.count() == 0:
File "/usr/lib/python2.7/dist-packages/django/db/models/query.py" in count
364. return self.query.get_count(using=self.db)
File "/usr/lib/python2.7/dist-packages/django/db/models/sql/query.py" in get_count
504. number = obj.get_aggregation(using, ['__count'])['__count']
File "/usr/lib/python2.7/dist-packages/django/db/models/sql/query.py" in get_aggregation
485. result = compiler.execute_sql(SINGLE)
File "/usr/lib/python2.7/dist-packages/django/db/models/sql/compiler.py" in execute_sql
899. raise original_exception
Exception Type: ProgrammingError at /accounts/fedora/login/ Exception Value: relation "socialaccount_openidstore" does not exist LINE 1: SELECT COUNT(*) AS "__count" FROM "socialaccount_openidstore...
^
Request information:
USER: AnonymousUser
GET:
process = u'login'
next = u'/mailman3/hyperkitty/list/sec_g_zoom(a)listserv2.aaas.org/message/new'
POST: No POST data
FILES: No FILES data
COOKIES: No cookie data
META:
CONTEXT_DOCUMENT_ROOT = '/var/www/html'
CONTEXT_PREFIX = ''
DOCUMENT_ROOT = '/var/www/html'
GATEWAY_INTERFACE = 'CGI/1.1'
HTTPS = 'on'
HTTP_ACCEPT = '*/*'
HTTP_ACCEPT_ENCODING = 'gzip, deflate, br'
HTTP_CONNECTION = 'keep-alive'
HTTP_FROM = 'googlebot(at)googlebot.com'
HTTP_HOST = 'listserv2.aaas.org'
HTTP_USER_AGENT = 'Googlebot/2.1 (+https://nam12.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.google.com%2Fbot.html&data=05%7C01%7Cmmasoudf%40aaas.org%7Cc767333920c94048355708dae823947a%7C2eebd8ff9ed140f0a15638e5dfb3bc56%7C0%7C0%7C638077536774767693%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=8%2F5tgjkoHnu%2BWaHwrNVRzcJUh%2BcQ9%2BFUkmB3psMzKMU%3D&reserved=0)'
PATH = '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin'
PATH_INFO = u'/accounts/fedora/login/'
QUERY_STRING = 'process=login&next=%2Fmailman3%2Fhyperkitty%2Flist%2Fsec_g_zoom%40listserv2.aaas.org%2Fmessage%2Fnew'
REMOTE_ADDR = '66.249.66.53'
REMOTE_PORT = '37189'
REQUEST_METHOD = 'GET'
REQUEST_SCHEME = 'https'
REQUEST_URI = '/mailman3/accounts/fedora/login/?process=login&next=%2Fmailman3%2Fhyperkitty%2Flist%2Fsec_g_zoom%40listserv2.aaas.org%2Fmessage%2Fnew'
SCRIPT_FILENAME = 'proxy:uwsgi://localhost//accounts/fedora/login/'
SCRIPT_NAME = u'/mailman3'
SERVER_ADDR = '172.24.9.130'
SERVER_ADMIN = 'mmasoudf(a)aaas.org'
SERVER_NAME = 'listserv2.aaas.org'
SERVER_PORT = '443'
SERVER_PROTOCOL = 'HTTP/1.1'
SERVER_SIGNATURE = '<address>Apache/2.4.29 (Ubuntu) Server at listserv2.aaas.org Port 443</address>\n'
SERVER_SOFTWARE = 'Apache/2.4.29 (Ubuntu)'
SSL_TLS_SNI = 'listserv2.aaas.org'
uwsgi.core = 0
uwsgi.node = 'listserv2'
uwsgi.version = '2.0.15-debian'
wsgi.errors = <open file 'wsgi_errors', mode 'w' at 0x7fdfa1c748a0> wsgi.file_wrapper = ''
wsgi.input = <uwsgi._Input object at 0x7fdfa1ccc710> wsgi.multiprocess = False wsgi.multithread = True wsgi.run_once = False wsgi.url_scheme = 'https'
wsgi.version = u'(1, 0)'
Settings:
Using settings module settings
ABSOLUTE_URL_OVERRIDES = {}
ACCOUNT_AUTHENTICATION_METHOD = 'username_email'
ACCOUNT_DEFAULT_HTTP_PROTOCOL = 'https'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
ACCOUNT_UNIQUE_EMAIL = True
ADMINS = u"(('Mailman Suite Admin', 'mmasoudf(a)aaas.org'),)"
ALLOWED_HOSTS = ['*']
APPEND_SLASH = True
AUTHENTICATION_BACKENDS = u"('django.contrib.auth.backends.ModelBackend', 'allauth.account.auth_backends.AuthenticationBackend')"
AUTH_PASSWORD_VALIDATORS = u'********************'
AUTH_USER_MODEL = u'auth.User'
BASE_DIR = '/usr/share/mailman3-web'
CACHES = {u'default': {u'BACKEND': u'django.core.cache.backends.locmem.LocMemCache'}}
CACHE_MIDDLEWARE_ALIAS = u'default'
CACHE_MIDDLEWARE_KEY_PREFIX = u'********************'
CACHE_MIDDLEWARE_SECONDS = 600
COMPRESS_CACHEABLE_PRECOMPILERS = u'()'
COMPRESS_CACHE_BACKEND = u'default'
COMPRESS_CACHE_KEY_FUNCTION = u'********************'
COMPRESS_CLEAN_CSS_ARGUMENTS = u''
COMPRESS_CLEAN_CSS_BINARY = u'cleancss'
COMPRESS_CLOSURE_COMPILER_ARGUMENTS = u''
COMPRESS_CLOSURE_COMPILER_BINARY = u'java -jar compiler.jar'
COMPRESS_CSS_COMPRESSOR = u'compressor.css.CssCompressor'
COMPRESS_CSS_FILTERS = [u'compressor.filters.css_default.CssAbsoluteFilter']
COMPRESS_CSS_HASHING_METHOD = u'mtime'
COMPRESS_DATA_URI_MAX_SIZE = 1024
COMPRESS_DEBUG_TOGGLE = None
COMPRESS_ENABLED = True
COMPRESS_JINJA2_GET_ENVIRONMENT = <function JINJA2_GET_ENVIRONMENT at 0x7fdfa1de2f50> COMPRESS_JS_COMPRESSOR = u'compressor.js.JsCompressor'
COMPRESS_JS_FILTERS = [u'compressor.filters.jsmin.JSMinFilter']
COMPRESS_MINT_DELAY = 30
COMPRESS_MTIME_DELAY = 10
COMPRESS_OFFLINE = False
COMPRESS_OFFLINE_CONTEXT = {u'STATIC_URL': '/mailman3/static/'} COMPRESS_OFFLINE_MANIFEST = u'manifest.json'
COMPRESS_OFFLINE_TIMEOUT = 31536000
COMPRESS_OUTPUT_DIR = u'CACHE'
COMPRESS_PARSER = u'compressor.parser.AutoSelectParser'
COMPRESS_PRECOMPILERS = u"(('text/less', 'lessc {infile} {outfile}'), ('text/x-scss', 'sass -t compressed {infile} {outfile}'), ('text/x-sass', 'sass -t compressed {infile} {outfile}'))"
COMPRESS_REBUILD_TIMEOUT = 2592000
COMPRESS_ROOT = '/var/lib/mailman3/web/static'
COMPRESS_STORAGE = u'compressor.storage.CompressorFileStorage'
COMPRESS_TEMPLATE_FILTER_CONTEXT = {u'STATIC_URL': '/mailman3/static/'} COMPRESS_URL = '/mailman3/static/'
COMPRESS_URL_PLACEHOLDER = u'/__compressor_url_placeholder__/'
COMPRESS_VERBOSE = False
COMPRESS_YUGLIFY_BINARY = u'yuglify'
COMPRESS_YUGLIFY_CSS_ARGUMENTS = u'--terminal'
COMPRESS_YUGLIFY_JS_ARGUMENTS = u'--terminal'
COMPRESS_YUI_BINARY = u'java -jar yuicompressor.jar'
COMPRESS_YUI_CSS_ARGUMENTS = u''
COMPRESS_YUI_JS_ARGUMENTS = u''
CSRF_COOKIE_AGE = 31449600
CSRF_COOKIE_DOMAIN = None
CSRF_COOKIE_HTTPONLY = False
CSRF_COOKIE_NAME = u'csrftoken'
CSRF_COOKIE_PATH = u'/'
CSRF_COOKIE_SECURE = False
CSRF_FAILURE_VIEW = u'django.views.csrf.csrf_failure'
CSRF_HEADER_NAME = u'HTTP_X_CSRFTOKEN'
CSRF_TRUSTED_ORIGINS = []
CSRF_USE_SESSIONS = False
DATABASES = {'default': {'ENGINE': 'django.db.backends.postgresql_psycopg2', 'AUTOCOMMIT': True, 'ATOMIC_REQUESTS': False, 'NAME': 'mailman3web', 'CONN_MAX_AGE': 0, 'TIME_ZONE': None, 'PORT': '', 'HOST': 'localhost', 'USER': 'mailman3web', 'TEST': {'COLLATION': None, 'CHARSET': None, 'NAME': None, 'MIRROR': None}, 'PASSWORD': u'********************', 'OPTIONS': {}}} DATABASE_ROUTERS = [] DATA_UPLOAD_MAX_MEMORY_SIZE = 2621440 DATA_UPLOAD_MAX_NUMBER_FIELDS = 1000 DATETIME_FORMAT = u'N j, Y, P'
DATETIME_INPUT_FORMATS = [u'%Y-%m-%d %H:%M:%S', u'%Y-%m-%d %H:%M:%S.%f', u'%Y-%m-%d %H:%M', u'%Y-%m-%d', u'%m/%d/%Y %H:%M:%S', u'%m/%d/%Y %H:%M:%S.%f', u'%m/%d/%Y %H:%M', u'%m/%d/%Y', u'%m/%d/%y %H:%M:%S', u'%m/%d/%y %H:%M:%S.%f', u'%m/%d/%y %H:%M', u'%m/%d/%y'] DATE_FORMAT = u'N j, Y'
DATE_INPUT_FORMATS = [u'%Y-%m-%d', u'%m/%d/%Y', u'%m/%d/%y', u'%b %d %Y', u'%b %d, %Y', u'%d %b %Y', u'%d %b, %Y', u'%B %d %Y', u'%B %d, %Y', u'%d %B %Y', u'%d %B, %Y'] DEBUG = False DEBUG_PROPAGATE_EXCEPTIONS = False DECIMAL_SEPARATOR = u'.'
DEFAULT_CHARSET = u'utf-8'
DEFAULT_CONTENT_TYPE = u'text/html'
DEFAULT_EXCEPTION_REPORTER_FILTER = u'django.views.debug.SafeExceptionReporterFilter'
DEFAULT_FILE_STORAGE = u'django.core.files.storage.FileSystemStorage'
DEFAULT_FROM_EMAIL = 'postorius(a)listserv2.aaas.org'
DEFAULT_INDEX_TABLESPACE = u''
DEFAULT_TABLESPACE = u''
DISALLOWED_USER_AGENTS = []
EMAILNAME = 'listserv2.aaas.org'
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = u'localhost'
EMAIL_HOST_PASSWORD = u'********************'
EMAIL_HOST_USER = u''
EMAIL_PORT = 25
EMAIL_SSL_CERTFILE = None
EMAIL_SSL_KEYFILE = u'********************'
EMAIL_SUBJECT_PREFIX = u'[Django] '
EMAIL_TIMEOUT = None
EMAIL_USE_LOCALTIME = False
EMAIL_USE_SSL = False
EMAIL_USE_TLS = False
FILE_CHARSET = u'utf-8'
FILE_UPLOAD_DIRECTORY_PERMISSIONS = None FILE_UPLOAD_HANDLERS = [u'django.core.files.uploadhandler.MemoryFileUploadHandler', u'django.core.files.uploadhandler.TemporaryFileUploadHandler']
FILE_UPLOAD_MAX_MEMORY_SIZE = 2621440
FILE_UPLOAD_PERMISSIONS = None
FILE_UPLOAD_TEMP_DIR = None
FILTER_VHOST = False
FIRST_DAY_OF_WEEK = 0
FIXTURE_DIRS = []
FORCE_SCRIPT_NAME = None
FORMAT_MODULE_PATH = None
FORM_RENDERER = u'django.forms.renderers.DjangoTemplates'
HAYSTACK_CONNECTIONS = {'default': {'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine', 'PATH': '/var/lib/mailman3/web/fulltext_index'}}
HOSTNAME = 'localhost.local'
IGNORABLE_404_URLS = []
INSTALLED_APPS = u"('hyperkitty', 'postorius', 'django_mailman3', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'django_gravatar', 'paintstore', 'compressor', 'haystack', 'django_extensions', 'django_q', 'allauth', 'allauth.account', 'allauth.socialaccount', 'django_mailman3.lib.auth.fedora')"
INTERNAL_IPS = []
LANGUAGES = [(u'af', u'Afrikaans'), (u'ar', u'Arabic'), (u'ast', u'Asturian'), (u'az', u'Azerbaijani'), (u'bg', u'Bulgarian'), (u'be', u'Belarusian'), (u'bn', u'Bengali'), (u'br', u'Breton'), (u'bs', u'Bosnian'), (u'ca', u'Catalan'), (u'cs', u'Czech'), (u'cy', u'Welsh'), (u'da', u'Danish'), (u'de', u'German'), (u'dsb', u'Lower Sorbian'), (u'el', u'Greek'), (u'en', u'English'), (u'en-au', u'Australian English'), (u'en-gb', u'British English'), (u'eo', u'Esperanto'), (u'es', u'Spanish'), (u'es-ar', u'Argentinian Spanish'), (u'es-co', u'Colombian Spanish'), (u'es-mx', u'Mexican Spanish'), (u'es-ni', u'Nicaraguan Spanish'), (u'es-ve', u'Venezuelan Spanish'), (u'et', u'Estonian'), (u'eu', u'Basque'), (u'fa', u'Persian'), (u'fi', u'Finnish'), (u'fr', u'French'), (u'fy', u'Frisian'), (u'ga', u'Irish'), (u'gd', u'Scottish Gaelic'), (u'gl', u'Galician'), (u'he', u'Hebrew'), (u'hi', u'Hindi'), (u'hr', u'Croatian'), (u'hsb', u'Upper Sorbian'), (u'hu', u'Hungarian'), (u'ia', u'Interlingua'), (u'id', u'Indonesian'), (u'io', u'Ido'), (u'is', u'Icelandic'), (u'it', u'Italian'), (u'ja', u'Japanese'), (u'ka', u'Georgian'), (u'kk', u'Kazakh'), (u'km', u'Khmer'), (u'kn', u'Kannada'), (u'ko', u'Korean'), (u'lb', u'Luxembourgish'), (u'lt', u'Lithuanian'), (u'lv', u'Latvian'), (u'mk', u'Macedonian'), (u'ml', u'Malayalam'), (u'mn', u'Mongolian'), (u'mr', u'Marathi'), (u'my', u'Burmese'), (u'nb', u'Norwegian Bokm\xe5l'), (u'ne', u'Nepali'), (u'nl', u'Dutch'), (u'nn', u'Norwegian Nynorsk'), (u'os', u'Ossetic'), (u'pa', u'Punjabi'), (u'pl', u'Polish'), (u'pt', u'Portuguese'), (u'pt-br', u'Brazilian Portuguese'), (u'ro', u'Romanian'), (u'ru', u'Russian'), (u'sk', u'Slovak'), (u'sl', u'Slovenian'), (u'sq', u'Albanian'), (u'sr', u'Serbian'), (u'sr-latn', u'Serbian Latin'), (u'sv', u'Swedish'), (u'sw', u'Swahili'), (u'ta', u'Tamil'), (u'te', u'Telugu'), (u'th', u'Thai'), (u'tr', u'Turkish'), (u'tt', u'Tatar'), (u'udm', u'Udmurt'), (u'uk', u'Ukrainian'), (u'ur', u'Urdu'), (u'vi', u'Vietnamese'), (u'zh-hans', u'Simplified Chinese'), (u'zh-hant', u'Traditional Chinese')] LANGUAGES_BIDI = [u'he', u'ar', u'fa', u'ur'] LANGUAGE_CODE = 'en-us'
LANGUAGE_COOKIE_AGE = None
LANGUAGE_COOKIE_DOMAIN = None
LANGUAGE_COOKIE_NAME = u'django_language'
LANGUAGE_COOKIE_PATH = u'/'
LOCALE_PATHS = []
LOGGING = {'loggers': {'django': {'handlers': ['file'], 'propagate': True, 'level': 'INFO'}, 'hyperkitty': {'handlers': ['file'], 'propagate': True, 'level': 'INFO'}, 'django.request': {'handlers': ['mail_admins', 'file'], 'propagate': True, 'level': 'INFO'}, 'postorius': {'handlers': ['file'], 'propagate': True, 'level': 'INFO'}}, 'disable_existing_loggers': False, 'handlers': {'console': {'formatter': 'simple', 'class': 'logging.StreamHandler'}, 'file': {'level': 'INFO', 'formatter': 'verbose', 'class': 'logging.handlers.RotatingFileHandler', 'filename': '/var/log/mailman3/web/mailman-web.log'}, 'mail_admins': {'class': 'django.utils.log.AdminEmailHandler', 'filters': ['require_debug_false'], 'level': 'ERROR'}}, 'formatters': {'simple': {'format': '%(levelname)s %(message)s'}, 'verbose': {'format': '%(levelname)s %(asctime)s %(process)d %(name)s %(message)s'}}, 'version': 1, 'filters': {'require_debug_false': {'()': 'django.utils.log.RequireDebugFalse'}}}
LOGGING_CONFIG = u'logging.config.dictConfig'
LOGIN_REDIRECT_URL = 'list_index'
LOGIN_URL = 'account_login'
LOGOUT_REDIRECT_URL = None
LOGOUT_URL = 'account_logout'
MAILMAN_ARCHIVER_FROM = u"('127.0.0.1', '::1')"
MAILMAN_ARCHIVER_KEY = u'********************'
MAILMAN_REST_API_PASS = u'********************'
MAILMAN_REST_API_URL = u'********************'
MAILMAN_REST_API_USER = u'********************'
MANAGERS = []
MEDIA_ROOT = u''
MEDIA_URL = u''
MESSAGE_STORAGE = u'django.contrib.messages.storage.fallback.FallbackStorage'
MESSAGE_TAGS = {40: 'danger'}
MIDDLEWARE = None
MIDDLEWARE_CLASSES = u"('django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.security.SecurityMiddleware', 'django_mailman3.middleware.TimezoneMiddleware', 'postorius.middleware.PostoriusMiddleware')"
MIGRATION_MODULES = {}
MONTH_DAY_FORMAT = u'F j'
NUMBER_GROUPING = 0
PASSWORD_HASHERS = u'********************'
PASSWORD_RESET_TIMEOUT_DAYS = u'********************'
PREPEND_WWW = False
Q_CLUSTER = {'orm': 'default', 'save_limit': 100, 'timeout': 300} ROOT_URLCONF = 'urls'
SECRET_KEY = u'********************'
SECURE_BROWSER_XSS_FILTER = False
SECURE_CONTENT_TYPE_NOSNIFF = False
SECURE_HSTS_INCLUDE_SUBDOMAINS = False
SECURE_HSTS_PRELOAD = False
SECURE_HSTS_SECONDS = 0
SECURE_PROXY_SSL_HEADER = None
SECURE_REDIRECT_EXEMPT = []
SECURE_SSL_HOST = None
SECURE_SSL_REDIRECT = False
SERVER_EMAIL = 'root(a)listserv2.aaas.org'
SESSION_CACHE_ALIAS = u'default'
SESSION_COOKIE_AGE = 1209600
SESSION_COOKIE_DOMAIN = None
SESSION_COOKIE_HTTPONLY = True
SESSION_COOKIE_NAME = u'sessionid'
SESSION_COOKIE_PATH = u'/'
SESSION_COOKIE_SECURE = False
SESSION_ENGINE = u'django.contrib.sessions.backends.db'
SESSION_EXPIRE_AT_BROWSER_CLOSE = False
SESSION_FILE_PATH = None
SESSION_SAVE_EVERY_REQUEST = False
SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer'
SETTINGS_MODULE = 'settings'
SHORT_DATETIME_FORMAT = u'm/d/Y P'
SHORT_DATE_FORMAT = u'm/d/Y'
SIGNING_BACKEND = u'django.core.signing.TimestampSigner'
SILENCED_SYSTEM_CHECKS = []
SITE_ID = 1
SOCIALACCOUNT_PROVIDERS = {}
STATICFILES_DIRS = u'()'
STATICFILES_FINDERS = u"('django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder', 'compressor.finders.CompressorFinder')"
STATICFILES_STORAGE = u'django.contrib.staticfiles.storage.StaticFilesStorage'
STATIC_ROOT = '/var/lib/mailman3/web/static'
STATIC_URL = '/mailman3/static/'
TEMPLATES = [{'DIRS': [], 'APP_DIRS': True, 'OPTIONS': {'context_processors': ['django.template.context_processors.debug', 'django.template.context_processors.i18n', 'django.template.context_processors.media', 'django.template.context_processors.static', 'django.template.context_processors.tz', 'django.template.context_processors.csrf', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', 'django_mailman3.context_processors.common', 'hyperkitty.context_processors.common', 'postorius.context_processors.postorius']}, 'BACKEND': 'django.template.backends.django.DjangoTemplates'}]
TEST_NON_SERIALIZED_APPS = []
TEST_RUNNER = u'django.test.runner.DiscoverRunner'
THOUSAND_SEPARATOR = u','
TIME_FORMAT = u'P'
TIME_INPUT_FORMATS = [u'%H:%M:%S', u'%H:%M:%S.%f', u'%H:%M'] TIME_ZONE = 'UTC'
USE_ETAGS = False
USE_I18N = True
USE_L10N = True
USE_THOUSAND_SEPARATOR = False
USE_TZ = True
USE_X_FORWARDED_HOST = True
USE_X_FORWARDED_PORT = False
WSGI_APPLICATION = 'wsgi.application'
X_FRAME_OPTIONS = u'SAMEORIGIN'
YEAR_MONTH_FORMAT = u'F Y'
Best regards
Mohsen Masoudfar
2 years, 3 months

[MM3-users] Re: Hacking attempts?
by Tim Cutts
You could use an application like fail2ban to watch your mailman/web logs and automatically firewall off attacking IP addresses which cause a lot of these errors in a defined window of time. This application is independent from mailman, and you can use it to protect against all kinds of brute force attacks. Ssh, web, mail - anything that creates a log file recording errors from remote IP addresses.
Just be careful when configuring it for remote servers so you don’t saw off the branch you’re sitting on…. I run a mail server for my family, and on one occasion a family member repeatedly got her password wrong which caused fail2ban to lock all of us out because it blocked our home NAT address, and I had to use my mobile phone to unblock us. :-)
Tim
> On 14 Jul 2022, at 08:29, Lists via Mailman-users <mailman-users(a)mailman3.org> wrote:
>
> Hi,
>
> We are seeing thousands of these emails every day, looks like someone is trying to hack our Mailman3 but would appreciate someone with more knowledge of MM3 to confirm.
>
> Is this a problem with our setup? i.e. the “Internal Server Error” bit, or are the hackers just sending bad data that is causing the error? also how do we stop/block this?
>
> TIA and here is a typical email:
>
>
> Subject: [Django] ERROR (EXTERNAL IP): Internal Server Error: /mailman3/accounts/fedora/login/
>
> Internal Server Error: /mailman3/accounts/fedora/login/
>
> TypeError at /accounts/fedora/login/
> _openid_consumer() missing 2 required positional arguments: 'provider' and 'endpoint'
>
> Request Method: GET
> Request URL: https://mailman.ardc.net/mailman3/accounts/fedora/login/?process=login&next… <https://mailman.ardc.net/mailman3/accounts/fedora/login/?process=login&next…>
> Django Version: 2.2.26
> Python Executable: /usr/bin/uwsgi-core
> Python Version: 3.9.2
> Python Path: ['.', '', '/usr/lib/python39.zip', '/usr/lib/python3.9', '/usr/lib/python3.9/lib-dynload', '/usr/local/lib/python3.9/dist-packages', '/usr/lib/python3/dist-packages', '/usr/lib/python3.9/dist-packages']
> Server time: Thu, 14 Jul 2022 02:34:04 -0400
> Installed Applications:
> ('hyperkitty',
> 'postorius',
> 'django_mailman3',
> 'django.contrib.admin',
> 'django.contrib.auth',
> 'django.contrib.contenttypes',
> 'django.contrib.sessions',
> 'django.contrib.sites',
> 'django.contrib.messages',
> 'django.contrib.staticfiles',
> 'rest_framework',
> 'django_gravatar',
> 'compressor',
> 'haystack',
> 'django_extensions',
> 'django_q',
> 'allauth',
> 'allauth.account',
> 'allauth.socialaccount',
> 'django_mailman3.lib.auth.fedora')
> Installed Middleware:
> ('django.contrib.sessions.middleware.SessionMiddleware',
> 'django.middleware.common.CommonMiddleware',
> 'django.middleware.csrf.CsrfViewMiddleware',
> 'django.middleware.locale.LocaleMiddleware',
> 'django.contrib.auth.middleware.AuthenticationMiddleware',
> 'django.contrib.messages.middleware.MessageMiddleware',
> 'django.middleware.clickjacking.XFrameOptionsMiddleware',
> 'django.middleware.security.SecurityMiddleware',
> 'django_mailman3.middleware.TimezoneMiddleware',
> 'postorius.middleware.PostoriusMiddleware')
>
>
> Traceback:
>
> File "/usr/lib/python3/dist-packages/django/core/handlers/exception.py" in inner
> 34. response = get_response(request)
>
> File "/usr/lib/python3/dist-packages/django/core/handlers/base.py" in _get_response
> 115. response = self.process_exception_by_middleware(e, request)
>
> File "/usr/lib/python3/dist-packages/django/core/handlers/base.py" in _get_response
> 113. response = wrapped_callback(request, *callback_args, **callback_kwargs)
>
> File "/usr/lib/python3/dist-packages/django/views/generic/base.py" in view
> 71. return self.dispatch(request, *args, **kwargs)
>
> File "/usr/lib/python3/dist-packages/django/views/generic/base.py" in dispatch
> 97. return handler(request, *args, **kwargs)
>
> File "/usr/lib/python3/dist-packages/django_mailman3/lib/auth/fedora/views.py" in get
> 56. return self.post(request, *args, **kwargs)
>
> File "/usr/lib/python3/dist-packages/django_mailman3/lib/auth/fedora/views.py" in post
> 67. client = _openid_consumer(request)
>
> Exception Type: TypeError at /accounts/fedora/login/
> Exception Value: _openid_consumer() missing 2 required positional arguments: 'provider' and 'endpoint'
> Request information:
> USER: AnonymousUser
>
> GET:
> process = 'login'
> next = '/mailman3/hyperkitty/list/44net(a)mailman.ampr.org <mailto:mailman3/hyperkitty/list/44net@mailman.ampr.org>/message/O5Z2YZBJZXFPH2ACAORN6BST7B2S3M3P/'
>
> POST: No POST data
>
> FILES: No FILES data
>
> COOKIES: No cookie data
>
> META:
> CONTEXT_DOCUMENT_ROOT = '/var/www/html'
> CONTEXT_PREFIX = ''
> DOCUMENT_ROOT = '/var/www/html'
> GATEWAY_INTERFACE = 'CGI/1.1'
> HTTPS = 'on'
> HTTP_ACCEPT = 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
> HTTP_ACCEPT_ENCODING = 'gzip,deflate'
> HTTP_CONNECTION = 'Keep-Alive'
> HTTP_HOST = 'mailman.ardc.net <http://mailman.ardc.net/>'
> HTTP_USER_AGENT = 'Mozilla/5.0 (compatible; BLEXBot/1.0; +http://webmeup-crawler.com/ <http://webmeup-crawler.com/>)'
> PATH = '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
> PATH_INFO = '/accounts/fedora/login/'
> QUERY_STRING = 'process=login&next=/mailman3/hyperkitty/list/44net(a)mailman.ampr.org <mailto:process=login&next=/mailman3/hyperkitty/list/44net@mailman.ampr.org>/message/O5Z2YZBJZXFPH2ACAORN6BST7B2S3M3P/'
> REMOTE_ADDR = '157.90.177.212'
> REMOTE_PORT = '63384'
> REQUEST_METHOD = 'GET'
> REQUEST_SCHEME = 'https'
> REQUEST_URI = '/mailman3/accounts/fedora/login/?process=login&next=/mailman3/hyperkitty/list/44net(a)mailman.ampr.org <mailto:mailman3/accounts/fedora/login/?process=login&next=/mailman3/hyperkitty/list/44net@mailman.ampr.org>/message/O5Z2YZBJZXFPH2ACAORN6BST7B2S3M3P/'
> SCRIPT_FILENAME = 'proxy:uwsgi://localhost//accounts/fedora/login/' <uwsgi://localhost//accounts/fedora/login/'>
> SCRIPT_NAME = '/mailman3'
> SERVER_ADDR = '44.1.1.29'
> SERVER_ADMIN = 'postmaster(a)ardc.net <mailto:postmaster@ardc.net>'
> SERVER_NAME = 'mailman.ardc.net <http://mailman.ardc.net/>'
> SERVER_PORT = '443'
> SERVER_PROTOCOL = 'HTTP/1.1'
> SERVER_SIGNATURE = '<address>Apache/2.4.53 (Debian) Server at mailman.ardc.net <http://mailman.ardc.net/> Port 443</address>\n'
> SERVER_SOFTWARE = 'Apache/2.4.53 (Debian)'
> SSL_TLS_SNI = 'mailman.ardc.net <http://mailman.ardc.net/>'
> uwsgi.core = 1
> uwsgi.node = b'mailman'
> uwsgi.version = b'2.0.19.1-debian'
> wsgi.errors = <_io.TextIOWrapper name=2 mode='w' encoding='UTF-8'>
> wsgi.file_wrapper = ''
> wsgi.input = <uwsgi._Input object at 0x7f8e0b4a0410>
> wsgi.multiprocess = False
> wsgi.multithread = True
> wsgi.run_once = False
> wsgi.url_scheme = 'https'
> wsgi.version = '(1, 0)'
>
> Settings:
> Using settings module settings
> ABSOLUTE_URL_OVERRIDES = {}
> ACCOUNT_AUTHENTICATION_METHOD = 'username_email'
> ACCOUNT_DEFAULT_HTTP_PROTOCOL = 'https'
> ACCOUNT_EMAIL_REQUIRED = True
> ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
> ACCOUNT_UNIQUE_EMAIL = True
> ADMINS = "(('Mailman Suite Admin', 'postmaster(a)ardc.net <mailto:postmaster@ardc.net>'),)"
> ALLOWED_HOSTS = ['*']
> APPEND_SLASH = True
> AUTHENTICATION_BACKENDS = "('django.contrib.auth.backends.ModelBackend', 'allauth.account.auth_backends.AuthenticationBackend')"
> AUTH_PASSWORD_VALIDATORS = '********************'
> AUTH_USER_MODEL = 'auth.User'
> BASE_DIR = '/usr/share/mailman3-web'
> CACHES = {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}}
> CACHE_MIDDLEWARE_ALIAS = 'default'
> CACHE_MIDDLEWARE_KEY_PREFIX = '********************'
> CACHE_MIDDLEWARE_SECONDS = 600
> COMPRESSORS = {'css': 'compressor.css.CssCompressor', 'js': 'compressor.js.JsCompressor'}
> COMPRESS_CACHEABLE_PRECOMPILERS = '()'
> COMPRESS_CACHE_BACKEND = 'default'
> COMPRESS_CACHE_KEY_FUNCTION = '********************'
> COMPRESS_CLEAN_CSS_ARGUMENTS = ''
> COMPRESS_CLEAN_CSS_BINARY = 'cleancss'
> COMPRESS_CLOSURE_COMPILER_ARGUMENTS = ''
> COMPRESS_CLOSURE_COMPILER_BINARY = 'java -jar compiler.jar'
> COMPRESS_CSS_HASHING_METHOD = 'mtime'
> COMPRESS_DATA_URI_MAX_SIZE = 1024
> COMPRESS_DEBUG_TOGGLE = None
> COMPRESS_ENABLED = True
> COMPRESS_FILTERS = {'css': ['compressor.filters.css_default.CssAbsoluteFilter'], 'js': ['compressor.filters.jsmin.JSMinFilter']}
> COMPRESS_JINJA2_GET_ENVIRONMENT = <function CompressorConf.JINJA2_GET_ENVIRONMENT at 0x7f8e17d7a670>
> COMPRESS_MINT_DELAY = 30
> COMPRESS_MTIME_DELAY = 10
> COMPRESS_OFFLINE = True
> COMPRESS_OFFLINE_CONTEXT = {'STATIC_URL': '/mailman3/static/'}
> COMPRESS_OFFLINE_MANIFEST = 'manifest.json'
> COMPRESS_OFFLINE_TIMEOUT = 31536000
> COMPRESS_OUTPUT_DIR = 'CACHE'
> COMPRESS_PARSER = 'compressor.parser.AutoSelectParser'
> COMPRESS_PRECOMPILERS = '()'
> COMPRESS_REBUILD_TIMEOUT = 2592000
> COMPRESS_ROOT = '/var/lib/mailman3/web/static'
> COMPRESS_STORAGE = 'compressor.storage.CompressorFileStorage'
> COMPRESS_TEMPLATE_FILTER_CONTEXT = {'STATIC_URL': '/mailman3/static/'}
> COMPRESS_URL = '/mailman3/static/'
> COMPRESS_URL_PLACEHOLDER = '/__compressor_url_placeholder__/'
> COMPRESS_VERBOSE = False
> COMPRESS_YUGLIFY_BINARY = 'yuglify'
> COMPRESS_YUGLIFY_CSS_ARGUMENTS = '--terminal'
> COMPRESS_YUGLIFY_JS_ARGUMENTS = '--terminal'
> COMPRESS_YUI_BINARY = 'java -jar yuicompressor.jar'
> COMPRESS_YUI_CSS_ARGUMENTS = ''
> COMPRESS_YUI_JS_ARGUMENTS = ''
> CSRF_COOKIE_AGE = 31449600
> CSRF_COOKIE_DOMAIN = None
> CSRF_COOKIE_HTTPONLY = False
> CSRF_COOKIE_NAME = 'csrftoken'
> CSRF_COOKIE_PATH = '/'
> CSRF_COOKIE_SAMESITE = 'Lax'
> CSRF_COOKIE_SECURE = False
> CSRF_FAILURE_VIEW = 'django.views.csrf.csrf_failure'
> CSRF_HEADER_NAME = 'HTTP_X_CSRFTOKEN'
> CSRF_TRUSTED_ORIGINS = []
> CSRF_USE_SESSIONS = False
> DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql', 'NAME': 'mailman', 'USER': 'mailman', 'PASSWORD': '********************', 'HOST': ‘X.X.X.X', 'PORT': '', 'OPTIONS': {'init_command': "SET sql_mode='STRICT_TRANS_TABLES'", 'charset': 'utf8mb4'}, 'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0, 'TIME_ZONE': None, 'TEST': {'CHARSET': None, 'COLLATION': None, 'NAME': None, 'MIRROR': None}}}
> DATABASE_ROUTERS = []
> DATA_UPLOAD_MAX_MEMORY_SIZE = 2621440
> DATA_UPLOAD_MAX_NUMBER_FIELDS = 1000
> DATETIME_FORMAT = 'N j, Y, P'
> DATETIME_INPUT_FORMATS = ['%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f', '%Y-%m-%d %H:%M', '%Y-%m-%d', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%Y', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M', '%m/%d/%y']
> DATE_FORMAT = 'N j, Y'
> DATE_INPUT_FORMATS = ['%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', '%b %d %Y', '%b %d, %Y', '%d %b %Y', '%d %b, %Y', '%B %d %Y', '%B %d, %Y', '%d %B %Y', '%d %B, %Y']
> DEBUG = False
> DEBUG_PROPAGATE_EXCEPTIONS = False
> DECIMAL_SEPARATOR = '.'
> DEFAULT_CHARSET = 'utf-8'
> DEFAULT_CONTENT_TYPE = 'text/html'
> DEFAULT_EXCEPTION_REPORTER_FILTER = 'django.views.debug.SafeExceptionReporterFilter'
> DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
> DEFAULT_FROM_EMAIL = 'postorius(a)mailman.ardc.net <mailto:postorius@mailman.ardc.net>'
> DEFAULT_INDEX_TABLESPACE = ''
> DEFAULT_TABLESPACE = ''
> DISALLOWED_USER_AGENTS = []
> EMAILNAME = 'mailman.ardc.net <http://mailman.ardc.net/>'
> EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
> EMAIL_HOST = 'localhost'
> EMAIL_HOST_PASSWORD = '********************'
> EMAIL_HOST_USER = ''
> EMAIL_PORT = 25
> EMAIL_SSL_CERTFILE = None
> EMAIL_SSL_KEYFILE = '********************'
> EMAIL_SUBJECT_PREFIX = '[Django] '
> EMAIL_TIMEOUT = None
> EMAIL_USE_LOCALTIME = False
> EMAIL_USE_SSL = False
> EMAIL_USE_TLS = False
> FILE_CHARSET = 'utf-8'
> FILE_UPLOAD_DIRECTORY_PERMISSIONS = None
> FILE_UPLOAD_HANDLERS = ['django.core.files.uploadhandler.MemoryFileUploadHandler', 'django.core.files.uploadhandler.TemporaryFileUploadHandler']
> FILE_UPLOAD_MAX_MEMORY_SIZE = 2621440
> FILE_UPLOAD_PERMISSIONS = None
> FILE_UPLOAD_TEMP_DIR = None
> FILTER_VHOST = False
> FIRST_DAY_OF_WEEK = 0
> FIXTURE_DIRS = []
> FORCE_SCRIPT_NAME = None
> FORMAT_MODULE_PATH = None
> FORM_RENDERER = 'django.forms.renderers.DjangoTemplates'
> HAYSTACK_CONNECTIONS = {'default': {'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine', 'PATH': '/var/lib/mailman3/web/fulltext_index'}}
> HOSTNAME = 'localhost.local'
> IGNORABLE_404_URLS = []
> INSTALLED_APPS = "('hyperkitty', 'postorius', 'django_mailman3', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'django_gravatar', 'compressor', 'haystack', 'django_extensions', 'django_q', 'allauth', 'allauth.account', 'allauth.socialaccount', 'django_mailman3.lib.auth.fedora')"
> INTERNAL_IPS = []
> LANGUAGES = [('af', 'Afrikaans'), ('ar', 'Arabic'), ('ast', 'Asturian'), ('az', 'Azerbaijani'), ('bg', 'Bulgarian'), ('be', 'Belarusian'), ('bn', 'Bengali'), ('br', 'Breton'), ('bs', 'Bosnian'), ('ca', 'Catalan'), ('cs', 'Czech'), ('cy', 'Welsh'), ('da', 'Danish'), ('de', 'German'), ('dsb', 'Lower Sorbian'), ('el', 'Greek'), ('en', 'English'), ('en-au', 'Australian English'), ('en-gb', 'British English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('es-ar', 'Argentinian Spanish'), ('es-co', 'Colombian Spanish'), ('es-mx', 'Mexican Spanish'), ('es-ni', 'Nicaraguan Spanish'), ('es-ve', 'Venezuelan Spanish'), ('et', 'Estonian'), ('eu', 'Basque'), ('fa', 'Persian'), ('fi', 'Finnish'), ('fr', 'French'), ('fy', 'Frisian'), ('ga', 'Irish'), ('gd', 'Scottish Gaelic'), ('gl', 'Galician'), ('he', 'Hebrew'), ('hi', 'Hindi'), ('hr', 'Croatian'), ('hsb', 'Upper Sorbian'), ('hu', 'Hungarian'), ('hy', 'Armenian'), ('ia', 'Interlingua'), ('id', 'Indonesian'), ('io', 'Ido'), ('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka', 'Georgian'), ('kab', 'Kabyle'), ('kk', 'Kazakh'), ('km', 'Khmer'), ('kn', 'Kannada'), ('ko', 'Korean'), ('lb', 'Luxembourgish'), ('lt', 'Lithuanian'), ('lv', 'Latvian'), ('mk', 'Macedonian'), ('ml', 'Malayalam'), ('mn', 'Mongolian'), ('mr', 'Marathi'), ('my', 'Burmese'), ('nb', 'Norwegian Bokmål'), ('ne', 'Nepali'), ('nl', 'Dutch'), ('nn', 'Norwegian Nynorsk'), ('os', 'Ossetic'), ('pa', 'Punjabi'), ('pl', 'Polish'), ('pt', 'Portuguese'), ('pt-br', 'Brazilian Portuguese'), ('ro', 'Romanian'), ('ru', 'Russian'), ('sk', 'Slovak'), ('sl', 'Slovenian'), ('sq', 'Albanian'), ('sr', 'Serbian'), ('sr-latn', 'Serbian Latin'), ('sv', 'Swedish'), ('sw', 'Swahili'), ('ta', 'Tamil'), ('te', 'Telugu'), ('th', 'Thai'), ('tr', 'Turkish'), ('tt', 'Tatar'), ('udm', 'Udmurt'), ('uk', 'Ukrainian'), ('ur', 'Urdu'), ('vi', 'Vietnamese'), ('zh-hans', 'Simplified Chinese'), ('zh-hant', 'Traditional Chinese')]
> LANGUAGES_BIDI = ['he', 'ar', 'fa', 'ur']
> LANGUAGE_CODE = 'en-us'
> LANGUAGE_COOKIE_AGE = None
> LANGUAGE_COOKIE_DOMAIN = None
> LANGUAGE_COOKIE_NAME = 'django_language'
> LANGUAGE_COOKIE_PATH = '/'
> LOCALE_PATHS = []
> LOGGING = {'version': 1, 'disable_existing_loggers': False, 'filters': {'require_debug_false': {'()': 'django.utils.log.RequireDebugFalse'}}, 'handlers': {'mail_admins': {'level': 'ERROR', 'filters': ['require_debug_false'], 'class': 'django.utils.log.AdminEmailHandler'}, 'file': {'level': 'INFO', 'class': 'logging.handlers.RotatingFileHandler', 'filename': '/var/log/mailman3/web/mailman-web.log', 'formatter': 'verbose'}, 'console': {'class': 'logging.StreamHandler', 'formatter': 'simple'}}, 'loggers': {'django.request': {'handlers': ['mail_admins', 'file'], 'level': 'INFO', 'propagate': True}, 'django': {'handlers': ['file'], 'level': 'INFO', 'propagate': True}, 'hyperkitty': {'handlers': ['file'], 'level': 'INFO', 'propagate': True}, 'postorius': {'handlers': ['file'], 'level': 'INFO', 'propagate': True}}, 'formatters': {'verbose': {'format': '%(levelname)s %(asctime)s %(process)d %(name)s %(message)s'}, 'simple': {'format': '%(levelname)s %(message)s'}}}
> LOGGING_CONFIG = 'logging.config.dictConfig'
> LOGIN_REDIRECT_URL = 'list_index'
> LOGIN_URL = 'account_login'
> LOGOUT_REDIRECT_URL = None
> LOGOUT_URL = 'account_logout'
> MAILMAN_ARCHIVER_FROM = "('127.0.0.1', '::1', '10.4.16.129', '44.1.1.29')"
> MAILMAN_ARCHIVER_KEY = '********************'
> MAILMAN_REST_API_PASS = '********************'
> MAILMAN_REST_API_URL = '********************'
> MAILMAN_REST_API_USER = '********************'
> MANAGERS = []
> MEDIA_ROOT = ''
> MEDIA_URL = ''
> MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage'
> MESSAGE_TAGS = {40: 'danger'}
> MIDDLEWARE = "('django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.security.SecurityMiddleware', 'django_mailman3.middleware.TimezoneMiddleware', 'postorius.middleware.PostoriusMiddleware')"
> MIGRATION_MODULES = {}
> MONTH_DAY_FORMAT = 'F j'
> NUMBER_GROUPING = 0
> PASSWORD_HASHERS = '********************'
> PASSWORD_RESET_TIMEOUT_DAYS = '********************'
> POSTORIUS_TEMPLATE_BASE_URL = 'http://localhost/mailman3/ <http://localhost/mailman3/>'
> PREPEND_WWW = False
> Q_CLUSTER = {'timeout': 300, 'save_limit': 100, 'orm': 'default', 'poll': 5}
> ROOT_URLCONF = 'urls'
> SECRET_KEY = '********************'
> SECURE_BROWSER_XSS_FILTER = False
> SECURE_CONTENT_TYPE_NOSNIFF = False
> SECURE_HSTS_INCLUDE_SUBDOMAINS = False
> SECURE_HSTS_PRELOAD = False
> SECURE_HSTS_SECONDS = 0
> SECURE_PROXY_SSL_HEADER = None
> SECURE_REDIRECT_EXEMPT = []
> SECURE_SSL_HOST = None
> SECURE_SSL_REDIRECT = False
> SERVER_EMAIL = 'root(a)mailman.ardc.net <mailto:root@mailman.ardc.net>'
> SESSION_CACHE_ALIAS = 'default'
> SESSION_COOKIE_AGE = 1209600
> SESSION_COOKIE_DOMAIN = None
> SESSION_COOKIE_HTTPONLY = True
> SESSION_COOKIE_NAME = 'sessionid'
> SESSION_COOKIE_PATH = '/'
> SESSION_COOKIE_SAMESITE = 'Lax'
> SESSION_COOKIE_SECURE = False
> SESSION_ENGINE = 'django.contrib.sessions.backends.db'
> SESSION_EXPIRE_AT_BROWSER_CLOSE = False
> SESSION_FILE_PATH = None
> SESSION_SAVE_EVERY_REQUEST = False
> SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer'
> SETTINGS_MODULE = 'settings'
> SHORT_DATETIME_FORMAT = 'm/d/Y P'
> SHORT_DATE_FORMAT = 'm/d/Y'
> SIGNING_BACKEND = 'django.core.signing.TimestampSigner'
> SILENCED_SYSTEM_CHECKS = []
> SITE_ID = 1
> SOCIALACCOUNT_PROVIDERS = {}
> STATICFILES_DIRS = '()'
> STATICFILES_FINDERS = "('django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder', 'compressor.finders.CompressorFinder')"
> STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage'
> STATIC_ROOT = '/var/lib/mailman3/web/static'
> STATIC_URL = '/mailman3/static/'
> TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': {'context_processors': ['django.template.context_processors.debug', 'django.template.context_processors.i18n', 'django.template.context_processors.media', 'django.template.context_processors.static', 'django.template.context_processors.tz', 'django.template.context_processors.csrf', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', 'django_mailman3.context_processors.common', 'hyperkitty.context_processors.common', 'postorius.context_processors.postorius']}}]
> TEST_NON_SERIALIZED_APPS = []
> TEST_RUNNER = 'django.test.runner.DiscoverRunner'
> THOUSAND_SEPARATOR = ','
> TIME_FORMAT = 'P'
> TIME_INPUT_FORMATS = ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']
> TIME_ZONE = 'UTC'
> USE_I18N = True
> USE_L10N = True
> USE_THOUSAND_SEPARATOR = False
> USE_TZ = True
> USE_X_FORWARDED_HOST = True
> USE_X_FORWARDED_PORT = False
> WSGI_APPLICATION = 'wsgi.application'
> X_FRAME_OPTIONS = 'SAMEORIGIN'
> YEAR_MONTH_FORMAT = 'F Y’
>
>
>
>
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
2 years, 9 months

[MM3-users] Re: using SSH/TLS with external MTA
by Roland Giesler
On 2024/07/28 00:39, Mark Sapiro wrote:
> On 7/27/24 15:16, Roland Giesler via Mailman-users wrote:
>>
>> The server runs power-mailinabox, which uses Postfix indeed. All my
>> mail, and quite a few others' mail is sent from the using SMTP-Auth
>> on port 465. Actually, this message is sent via that server too. So
>> it's clear to me that MM3 is not authenticating for some reason.
>
> What do you see in Mailman's smtp.log and in the mail.log on the mail
> server?
The smtp log is in syslog...
Jul 28 12:48:19 mailman postfix/smtpd[63855]: connect from localhost[::1]
Jul 28 12:48:19 mailman postfix/smtpd[63855]: NOQUEUE: reject: RCPT from
localhost[::1]: 454 4.7.1 <roland(a)giesler.za.net>: Relay access denied;
from=<postorius(a)giesler.za.net> to=<roland(a)giesler.za.net> proto=ESMTP
helo=<mailman.fast.za.net>
Jul 28 12:48:19 mailman postfix/smtpd[63769]: lost connection after RSET
from localhost[::1]
Jul 28 12:48:19 mailman postfix/smtpd[63769]: disconnect from
localhost[::1] ehlo=1 mail=1 rcpt=0/1 rset=1 commands=3/4
Jul 28 12:48:19 mailman postfix/smtpd[63769]: connect from localhost[::1]
Jul 28 12:48:19 mailman postfix/smtpd[63769]: 4D0DE120A5B:
client=localhost[::1]
Jul 28 12:48:19 mailman postfix/cleanup[63291]: 4D0DE120A5B:
message-id=<172217089931.2150.9004701361968608890(a)mailman.fast.za.net>
Jul 28 12:48:19 mailman postfix/qmgr[330]: 4D0DE120A5B:
from=<root(a)giesler.za.net>, size=21782, nrcpt=1 (queue active)
Jul 28 12:48:19 mailman postfix/smtpd[63769]: disconnect from
localhost[::1] ehlo=1 mail=1 rcpt=1 data=1 quit=1 commands=5
Jul 28 12:48:19 mailman postfix/local[63575]: 4D0DE120A5B:
to=<root@localhost>, relay=local, delay=0.01, delays=0.01/0/0/0,
dsn=2.0.0, status=sent (delivered to mailbox)
Jul 28 12:48:19 mailman postfix/qmgr[330]: 4D0DE120A5B: removed
I think I see what's going on here. The mail is being sent from
postorius(a)giesler.za.net and there is no log entry on
box2.gtahardware.co.za that shows this logon attempt. So it seems it's
not going to that server, but rather to the local postfix.
A mail was sent to root on the localhost with the following content:
Return-Path: <root(a)giesler.za.net>
X-Original-To: root@localhost
Delivered-To: root@localhost
Received: from mailman.fast.za.net (localhost [IPv6:::1])
by mailman.localdomain (Postfix) with ESMTP id 2174A120A5B
for <root@localhost>; Sun, 28 Jul 2024 13:11:03 +0000 (UTC)
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Subject: [Django] ERROR (EXTERNAL IP): Internal Server Error:
/accounts/login/
From: root(a)giesler.za.net
To: root@localhost
Date: Sun, 28 Jul 2024 13:11:03 -0000
Message-ID: <172217226313.2150.10895652368679013629(a)mailman.fast.za.net>
Internal Server Error: /accounts/login/
SMTPRecipientsRefused at /accounts/login/
{'roland(a)giesler.za.net': (454, b'4.7.1 <roland(a)giesler.za.net>: Relay acce=
ss denied')}
Request Method: POST
Request URL: http://192.168.161.103/accounts/login/
Django Version: 3.2.12
Python Executable: /usr/bin/uwsgi-core
Python Version: 3.10.12
Python Path: ['.', '', '/usr/lib/python310.zip', '/usr/lib/python3.10', '/u=
sr/lib/python3.10/lib-dynload', '/usr/local/lib/python3.10/dist-packages', =
'/usr/lib/python3/dist-packages', '/usr/lib/python3.10/dist-packages']
Server time: Sun, 28 Jul 2024 15:11:03 +0200
Installed Applications:
('hyperkitty',
'postorius',
'django_mailman3',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'django_gravatar',
'compressor',
'haystack',
'django_extensions',
'django_q',
'allauth',
'allauth.account',
'allauth.socialaccount',
'django_mailman3.lib.auth.fedora')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django_mailman3.middleware.TimezoneMiddleware',
'postorius.middleware.PostoriusMiddleware')
Traceback (most recent call last):
File
"/usr/lib/python3/dist-packages/django/core/handlers/exception.py", line
47, in inner
response =3D get_response(request)
File "/usr/lib/python3/dist-packages/django/core/handlers/base.py",
line 181, in _get_response
response =3D wrapped_callback(request, *callback_args,
**callback_kwargs)
File "/usr/lib/python3/dist-packages/django/views/generic/base.py",
line 70, in view
return self.dispatch(request, *args, **kwargs)
File "/usr/lib/python3/dist-packages/django/utils/decorators.py",
line 43, in _wrapper
return bound_method(*args, **kwargs)
File
"/usr/lib/python3/dist-packages/django/views/decorators/debug.py", line
89, in sensitive_post_parameters_wrapper
return view(request, *args, **kwargs)
File "/usr/lib/python3/dist-packages/allauth/account/views.py", line
146, in dispatch
return super(LoginView, self).dispatch(request, *args, **kwargs)
File "/usr/lib/python3/dist-packages/allauth/account/views.py", line
74, in dispatch
response =3D super(RedirectAuthenticatedUserMixin, self).dispatch(
File "/usr/lib/python3/dist-packages/django/views/generic/base.py",
line 98, in dispatch
return handler(request, *args, **kwargs)
File "/usr/lib/python3/dist-packages/allauth/account/views.py", line
102, in post
response =3D self.form_valid(form)
File "/usr/lib/python3/dist-packages/allauth/account/views.py", line
159, in form_valid
return form.login(self.request, redirect_url=3Dsuccess_url)
File "/usr/lib/python3/dist-packages/allauth/account/forms.py", line
196, in login
ret =3D perform_login(
File "/usr/lib/python3/dist-packages/allauth/account/utils.py", line
175, in perform_login
send_email_confirmation(request, user, signup=3Dsignup, email=3Demail)
File "/usr/lib/python3/dist-packages/allauth/account/utils.py", line
346, in send_email_confirmation
email_address.send_confirmation(request, signup=3Dsignup)
File "/usr/lib/python3/dist-packages/allauth/account/models.py", line
62, in send_confirmation
confirmation.send(request, signup=3Dsignup)
File "/usr/lib/python3/dist-packages/allauth/account/models.py", line
169, in send
get_adapter(request).send_confirmation_mail(request, self, signup)
File "/usr/lib/python3/dist-packages/allauth/account/adapter.py",
line 464, in send_confirmation_mail
self.send_mail(email_template,
emailconfirmation.email_address.email, ctx)
File "/usr/lib/python3/dist-packages/allauth/account/adapter.py",
line 136, in send_mail
msg.send()
File "/usr/lib/python3/dist-packages/django/core/mail/message.py",
line 284, in send
return self.get_connection(fail_silently).send_messages([self])
File
"/usr/lib/python3/dist-packages/django/core/mail/backends/smtp.py", line
109, in send_messages
sent =3D self._send(message)
File
"/usr/lib/python3/dist-packages/django/core/mail/backends/smtp.py", line
125, in _send
self.connection.sendmail(from_email, recipients,
message.as_bytes(linesep=3D'\r\n'))
File "/usr/lib/python3.10/smtplib.py", line 901, in sendmail
raise SMTPRecipientsRefused(senderrs)
Exception Type: SMTPRecipientsRefused at /accounts/login/
Exception Value: {'roland(a)giesler.za.net': (454, b'4.7.1
<roland(a)giesler.za.net>: Relay access denied')}
Request information:
USER: AnonymousUser
GET: No GET data
POST:
csrfmiddlewaretoken =3D
'41gp97hhfO2FhiEzOFLf1c5P3WLxk5TZvOgF0Qske6zI3EHtk8YK3w6wlEhLQAVS'
login =3D 'roland(a)giesler.za.net'
password =3D '********************'
next =3D '/postorius/lists/'
FILES: No FILES data
COOKIES:
csrftoken =3D
'aW8mw1heNIcuQ1YTMwnWMzi9DMaDFES6BJ8CnKshM0JxCn1NiZArOTjQVuGRb9UZ'
META:
CONTENT_LENGTH =3D '164'
CONTENT_TYPE =3D 'application/x-www-form-urlencoded'
CSRF_COOKIE =3D
'aW8mw1heNIcuQ1YTMwnWMzi9DMaDFES6BJ8CnKshM0JxCn1NiZArOTjQVuGRb9UZ'
DOCUMENT_ROOT =3D '/usr/share/nginx/html'
HTTP_ACCEPT =3D
'text/html,application/xhtml+xml,application/xml;q=3D0.9,image/avif,image/webp,image/apng,*/*;q=3D0.8'
HTTP_ACCEPT_ENCODING =3D 'gzip, deflate'
HTTP_ACCEPT_LANGUAGE =3D 'en-GB,en'
HTTP_CACHE_CONTROL =3D 'max-age=3D0'
HTTP_CONNECTION =3D 'keep-alive'
HTTP_CONTENT_LENGTH =3D '164'
HTTP_CONTENT_TYPE =3D 'application/x-www-form-urlencoded'
HTTP_COOKIE =3D
'csrftoken=3DaW8mw1heNIcuQ1YTMwnWMzi9DMaDFES6BJ8CnKshM0JxCn1NiZArOTjQVuGRb9UZ'
HTTP_HOST =3D '192.168.161.103'
HTTP_ORIGIN =3D 'http://192.168.161.103'
HTTP_REFERER =3D
'http://192.168.161.103/accounts/login/?next=3D/postorius/lists/'
HTTP_SEC_GPC =3D '1'
HTTP_UPGRADE_INSECURE_REQUESTS =3D '1'
HTTP_USER_AGENT =3D 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36'
PATH_INFO =3D '/accounts/login/'
QUERY_STRING =3D ''
REMOTE_ADDR =3D '192.168.131.150'
REMOTE_PORT =3D '60098'
REQUEST_METHOD =3D 'POST'
REQUEST_SCHEME =3D 'http'
REQUEST_URI =3D '/accounts/login/'
SCRIPT_NAME =3D ''
SERVER_NAME =3D ''
SERVER_PORT =3D '80'
SERVER_PROTOCOL =3D 'HTTP/1.1'
uwsgi.core =3D 1
uwsgi.node =3D b'mailman'
uwsgi.version =3D b'2.0.20-debian'
wsgi.errors =3D <_io.TextIOWrapper name=3D2 mode=3D'w'
encoding=3D'ANSI_X3.4-1968'>
wsgi.file_wrapper =3D <built-in function uwsgi_sendfile>
wsgi.input =3D <uwsgi._Input object at 0x7facb44bd530>
wsgi.multiprocess =3D False
wsgi.multithread =3D True
wsgi.run_once =3D False
wsgi.url_scheme =3D 'http'
wsgi.version =3D '(1, 0)'
Settings:
Using settings module settings
ABSOLUTE_URL_OVERRIDES =3D {}
ACCOUNT_AUTHENTICATION_METHOD =3D 'username_email'
ACCOUNT_DEFAULT_HTTP_PROTOCOL =3D 'https'
ACCOUNT_EMAIL_REQUIRED =3D True
ACCOUNT_EMAIL_VERIFICATION =3D 'mandatory'
ACCOUNT_UNIQUE_EMAIL =3D True
ADMINS =3D "(('Mailman Suite Admin', 'root@localhost'),)"
ALLOWED_HOSTS =3D ['*']
APPEND_SLASH =3D True
AUTHENTICATION_BACKENDS =3D
"('django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend')"
AUTH_PASSWORD_VALIDATORS =3D '********************'
AUTH_USER_MODEL =3D 'auth.User'
BASE_DIR =3D '/usr/share/mailman3-web'
CACHES =3D {'default': {'BACKEND':
'django.core.cache.backends.locmem.LocMemCache'}}
CACHE_MIDDLEWARE_ALIAS =3D 'default'
CACHE_MIDDLEWARE_KEY_PREFIX =3D '********************'
CACHE_MIDDLEWARE_SECONDS =3D 600
COMPRESSORS =3D {'css': 'compressor.css.CssCompressor', 'js':
'compressor.js.JsCompressor'}
COMPRESS_CACHEABLE_PRECOMPILERS =3D '()'
COMPRESS_CACHE_BACKEND =3D 'default'
COMPRESS_CACHE_KEY_FUNCTION =3D '********************'
COMPRESS_CLEAN_CSS_ARGUMENTS =3D ''
COMPRESS_CLEAN_CSS_BINARY =3D 'cleancss'
COMPRESS_CLOSURE_COMPILER_ARGUMENTS =3D ''
COMPRESS_CLOSURE_COMPILER_BINARY =3D 'java -jar compiler.jar'
COMPRESS_CSS_HASHING_METHOD =3D 'mtime'
COMPRESS_DATA_URI_MAX_SIZE =3D 1024
COMPRESS_DEBUG_TOGGLE =3D None
COMPRESS_ENABLED =3D True
COMPRESS_FILTERS =3D {'css':
['compressor.filters.css_default.CssAbsoluteFilter'], 'js':
['compressor.filters.jsmin.JSMinFilter']}
COMPRESS_JINJA2_GET_ENVIRONMENT =3D <function
CompressorConf.JINJA2_GET_ENVIRONMENT at 0x7facb6a52b00>
COMPRESS_MINT_DELAY =3D 30
COMPRESS_MTIME_DELAY =3D 10
COMPRESS_OFFLINE =3D True
COMPRESS_OFFLINE_CONTEXT =3D {'STATIC_URL': '/mailman3/static/'}
COMPRESS_OFFLINE_MANIFEST =3D 'manifest.json'
COMPRESS_OFFLINE_TIMEOUT =3D 31536000
COMPRESS_OUTPUT_DIR =3D 'CACHE'
COMPRESS_PARSER =3D 'compressor.parser.AutoSelectParser'
COMPRESS_PRECOMPILERS =3D '()'
COMPRESS_REBUILD_TIMEOUT =3D 2592000
COMPRESS_ROOT =3D '/var/lib/mailman3/web/static'
COMPRESS_STORAGE =3D 'compressor.storage.CompressorFileStorage'
COMPRESS_TEMPLATE_FILTER_CONTEXT =3D {'STATIC_URL': '/mailman3/static/'}
COMPRESS_URL =3D '/mailman3/static/'
COMPRESS_URL_PLACEHOLDER =3D '/__compressor_url_placeholder__/'
COMPRESS_VERBOSE =3D False
COMPRESS_YUGLIFY_BINARY =3D 'yuglify'
COMPRESS_YUGLIFY_CSS_ARGUMENTS =3D '--terminal'
COMPRESS_YUGLIFY_JS_ARGUMENTS =3D '--terminal'
COMPRESS_YUI_BINARY =3D 'java -jar yuicompressor.jar'
COMPRESS_YUI_CSS_ARGUMENTS =3D ''
COMPRESS_YUI_JS_ARGUMENTS =3D ''
CSRF_COOKIE_AGE =3D 31449600
CSRF_COOKIE_DOMAIN =3D None
CSRF_COOKIE_HTTPONLY =3D False
CSRF_COOKIE_NAME =3D 'csrftoken'
CSRF_COOKIE_PATH =3D '/'
CSRF_COOKIE_SAMESITE =3D 'Lax'
CSRF_COOKIE_SECURE =3D False
CSRF_FAILURE_VIEW =3D 'django.views.csrf.csrf_failure'
CSRF_HEADER_NAME =3D 'HTTP_X_CSRFTOKEN'
CSRF_TRUSTED_ORIGINS =3D []
CSRF_USE_SESSIONS =3D False
DATABASES =3D {'default': {'ENGINE': 'django.db.backends.mysql', 'NAME':
'mailman3web', 'USER': 'mailman3web', 'PASSWORD':
'********************', 'HOST': 'localhost', 'PORT': '', 'OPTIONS':
{'init_command': "SET sql_mode=3D'STRICT_TRANS_TABLES'"},
'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0,
'TIME_ZONE': None, 'TEST': {'CHARSET': None, 'COLLATION': None,
'MIGRATE': True, 'MIRROR': None, 'NAME': None}}}
DATABASE_ROUTERS =3D []
DATA_UPLOAD_MAX_MEMORY_SIZE =3D 2621440
DATA_UPLOAD_MAX_NUMBER_FIELDS =3D 1000
DATA_UPLOAD_MAX_NUMBER_FILES =3D 100
DATETIME_FORMAT =3D 'N j, Y, P'
DATETIME_INPUT_FORMATS =3D ['%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f',
'%Y-%m-%d %H:%M', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y
%H:%M', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M']
DATE_FORMAT =3D 'N j, Y'
DATE_INPUT_FORMATS =3D ['%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', '%b %d %Y',
'%b %d, %Y', '%d %b %Y', '%d %b, %Y', '%B %d %Y', '%B %d, %Y', '%d %B
%Y', '%d %B, %Y']
DEBUG =3D False
DEBUG_PROPAGATE_EXCEPTIONS =3D False
DECIMAL_SEPARATOR =3D '.'
DEFAULT_AUTO_FIELD =3D 'django.db.models.AutoField'
DEFAULT_CHARSET =3D 'utf-8'
DEFAULT_EXCEPTION_REPORTER =3D 'django.views.debug.ExceptionReporter'
DEFAULT_EXCEPTION_REPORTER_FILTER =3D
'django.views.debug.SafeExceptionReporterFilter'
DEFAULT_FILE_STORAGE =3D 'django.core.files.storage.FileSystemStorage'
DEFAULT_FROM_EMAIL =3D 'postorius(a)giesler.za.net'
DEFAULT_HASHING_ALGORITHM =3D 'sha256'
DEFAULT_INDEX_TABLESPACE =3D ''
DEFAULT_TABLESPACE =3D ''
DISALLOWED_USER_AGENTS =3D []
EMAILNAME =3D 'giesler.za.net'
EMAIL_BACKEND =3D 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST =3D 'localhost'
EMAIL_HOST_PASSWORD =3D '********************'
EMAIL_HOST_USER =3D ''
EMAIL_PORT =3D 25
EMAIL_SSL_CERTFILE =3D None
EMAIL_SSL_KEYFILE =3D '********************'
EMAIL_SUBJECT_PREFIX =3D '[Django] '
EMAIL_TIMEOUT =3D None
EMAIL_USE_LOCALTIME =3D False
EMAIL_USE_SSL =3D False
EMAIL_USE_TLS =3D False
FILE_UPLOAD_DIRECTORY_PERMISSIONS =3D None
FILE_UPLOAD_HANDLERS =3D
['django.core.files.uploadhandler.MemoryFileUploadHandler',
'django.core.files.uploadhandler.TemporaryFileUploadHandler']
FILE_UPLOAD_MAX_MEMORY_SIZE =3D 2621440
FILE_UPLOAD_PERMISSIONS =3D 420
FILE_UPLOAD_TEMP_DIR =3D None
FILTER_VHOST =3D False
FIRST_DAY_OF_WEEK =3D 0
FIXTURE_DIRS =3D []
FORCE_SCRIPT_NAME =3D None
FORMAT_MODULE_PATH =3D None
FORM_RENDERER =3D 'django.forms.renderers.DjangoTemplates'
HAYSTACK_CONNECTIONS =3D {'default': {'ENGINE':
'haystack.backends.whoosh_backend.WhooshEngine', 'PATH':
'/var/lib/mailman3/web/fulltext_index'}}
HOSTNAME =3D 'localhost.local'
IGNORABLE_404_URLS =3D []
INSTALLED_APPS =3D "('hyperkitty', 'postorius', 'django_mailman3',
'django.contrib.admin', 'django.contrib.auth',
'django.contrib.contenttypes', 'django.contrib.sessions',
'django.contrib.sites', 'django.contrib.messages',
'django.contrib.staticfiles', 'rest_framework', 'django_gravatar',
'compressor', 'haystack', 'django_extensions', 'django_q', 'allauth',
'allauth.account', 'allauth.socialaccount',
'django_mailman3.lib.auth.fedora')"
INTERNAL_IPS =3D []
LANGUAGES =3D [('af', 'Afrikaans'), ('ar', 'Arabic'), ('ar-dz',
'Algerian Arabic'), ('ast', 'Asturian'), ('az', 'Azerbaijani'), ('bg',
'Bulgarian'), ('be', 'Belarusian'), ('bn', 'Bengali'), ('br', 'Breton'),
('bs', 'Bosnian'), ('ca', 'Catalan'), ('cs', 'Czech'), ('cy', 'Welsh'),
('da', 'Danish'), ('de', 'German'), ('dsb', 'Lower Sorbian'), ('el',
'Greek'), ('en', 'English'), ('en-au', 'Australian English'), ('en-gb',
'British English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('es-ar',
'Argentinian Spanish'), ('es-co', 'Colombian Spanish'), ('es-mx',
'Mexican Spanish'), ('es-ni', 'Nicaraguan Spanish'), ('es-ve',
'Venezuelan Spanish'), ('et', 'Estonian'), ('eu', 'Basque'), ('fa',
'Persian'), ('fi', 'Finnish'), ('fr', 'French'), ('fy', 'Frisian'),
('ga', 'Irish'), ('gd', 'Scottish Gaelic'), ('gl', 'Galician'), ('he',
'Hebrew'), ('hi', 'Hindi'), ('hr', 'Croatian'), ('hsb', 'Upper
Sorbian'), ('hu', 'Hungarian'), ('hy', 'Armenian'), ('ia',
'Interlingua'), ('id', 'Indonesian'), ('ig', 'Igbo'), ('io', 'Ido'),
('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka',
'Georgian'), ('kab', 'Kabyle'), ('kk', 'Kazakh'), ('km', 'Khmer'),
('kn', 'Kannada'), ('ko', 'Korean'), ('ky', 'Kyrgyz'), ('lb',
'Luxembourgish'), ('lt', 'Lithuanian'), ('lv', 'Latvian'), ('mk',
'Macedonian'), ('ml', 'Malayalam'), ('mn', 'Mongolian'), ('mr',
'Marathi'), ('my', 'Burmese'), ('nb', 'Norwegian Bokm=C3=A5l'), ('ne',
'Nepali'), ('nl', 'Dutch'), ('nn', 'Norwegian Nynorsk'), ('os',
'Ossetic'), ('pa', 'Punjabi'), ('pl', 'Polish'), ('pt', 'Portuguese'),
('pt-br', 'Brazilian Portuguese'), ('ro', 'Romanian'), ('ru',
'Russian'), ('sk', 'Slovak'), ('sl', 'Slovenian'), ('sq', 'Albanian'),
('sr', 'Serbian'), ('sr-latn', 'Serbian Latin'), ('sv', 'Swedish'),
('sw', 'Swahili'), ('ta', 'Tamil'), ('te', 'Telugu'), ('tg', 'Tajik'),
('th', 'Thai'), ('tk', 'Turkmen'), ('tr', 'Turkish'), ('tt', 'Tatar'),
('udm', 'Udmurt'), ('uk', 'Ukrainian'), ('ur', 'Urdu'), ('uz', 'Uzbek'),
('vi', 'Vietnamese'), ('zh-hans', 'Simplified Chinese'), ('zh-hant',
'Traditional Chinese')]
LANGUAGES_BIDI =3D ['he', 'ar', 'ar-dz', 'fa', 'ur']
LANGUAGE_CODE =3D 'en-za'
LANGUAGE_COOKIE_AGE =3D None
LANGUAGE_COOKIE_DOMAIN =3D None
LANGUAGE_COOKIE_HTTPONLY =3D False
LANGUAGE_COOKIE_NAME =3D 'django_language'
LANGUAGE_COOKIE_PATH =3D '/'
LANGUAGE_COOKIE_SAMESITE =3D None
LANGUAGE_COOKIE_SECURE =3D False
LOCALE_PATHS =3D []
LOGGING =3D {'version': 1, 'disable_existing_loggers': False, 'filters':
{'require_debug_false': {'()': 'django.utils.log.RequireDebugFalse'}},
'handlers': {'mail_admins': {'level': 'ERROR', 'filters':
['require_debug_false'], 'class': 'django.utils.log.AdminEmailHandler'},
'file': {'level': 'INFO', 'class':
'logging.handlers.RotatingFileHandler', 'filename':
'/var/log/mailman3/web/mailman-web.log', 'formatter': 'verbose'},
'console': {'class': 'logging.StreamHandler', 'formatter': 'simple'}},
'loggers': {'django.request': {'handlers': ['mail_admins', 'file'],
'level': 'INFO', 'propagate': True}, 'django': {'handlers': ['file'],
'level': 'INFO', 'propagate': True}, 'hyperkitty': {'handlers':
['file'], 'level': 'INFO', 'propagate': True}, 'postorius': {'handlers':
['file'], 'level': 'INFO', 'propagate': True}}, 'formatters':
{'verbose': {'format': '%(levelname)s %(asctime)s %(process)d %(name)s
%(message)s'}, 'simple': {'format': '%(levelname)s %(message)s'}}}
LOGGING_CONFIG =3D 'logging.config.dictConfig'
LOGIN_REDIRECT_URL =3D 'list_index'
LOGIN_URL =3D 'account_login'
LOGOUT_REDIRECT_URL =3D None
LOGOUT_URL =3D 'account_logout'
MAILMAN_ARCHIVER_FROM =3D "('127.0.0.1', '::1')"
MAILMAN_ARCHIVER_KEY =3D '********************'
MAILMAN_REST_API_PASS =3D '********************'
MAILMAN_REST_API_URL =3D '********************'
MAILMAN_REST_API_USER =3D '********************'
MANAGERS =3D []
MEDIA_ROOT =3D ''
MEDIA_URL =3D '/'
MESSAGE_STORAGE =3D
'django.contrib.messages.storage.fallback.FallbackStorage'
MESSAGE_TAGS =3D {40: 'danger'}
MIDDLEWARE =3D "('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
'django_mailman3.middleware.TimezoneMiddleware',
'postorius.middleware.PostoriusMiddleware')"
MIGRATION_MODULES =3D {}
MONTH_DAY_FORMAT =3D 'F j'
NUMBER_GROUPING =3D 0
PASSWORD_HASHERS =3D '********************'
PASSWORD_RESET_TIMEOUT =3D '********************'
PASSWORD_RESET_TIMEOUT_DAYS =3D '********************'
POSTORIUS_TEMPLATE_BASE_URL =3D 'http://localhost/mailman3/'
PREPEND_WWW =3D False
Q_CLUSTER =3D {'timeout': 300, 'save_limit': 100, 'orm': 'default',
'poll': 5}
ROOT_URLCONF =3D 'urls'
SECRET_KEY =3D '********************'
SECURE_BROWSER_XSS_FILTER =3D False
SECURE_CONTENT_TYPE_NOSNIFF =3D True
SECURE_HSTS_INCLUDE_SUBDOMAINS =3D False
SECURE_HSTS_PRELOAD =3D False
SECURE_HSTS_SECONDS =3D 0
SECURE_PROXY_SSL_HEADER =3D None
SECURE_REDIRECT_EXEMPT =3D []
SECURE_REFERRER_POLICY =3D 'same-origin'
SECURE_SSL_HOST =3D None
SECURE_SSL_REDIRECT =3D False
SERVER_EMAIL =3D 'root(a)giesler.za.net'
SESSION_CACHE_ALIAS =3D 'default'
SESSION_COOKIE_AGE =3D 1209600
SESSION_COOKIE_DOMAIN =3D None
SESSION_COOKIE_HTTPONLY =3D True
SESSION_COOKIE_NAME =3D 'sessionid'
SESSION_COOKIE_PATH =3D '/'
SESSION_COOKIE_SAMESITE =3D 'Lax'
SESSION_COOKIE_SECURE =3D False
SESSION_ENGINE =3D 'django.contrib.sessions.backends.db'
SESSION_EXPIRE_AT_BROWSER_CLOSE =3D False
SESSION_FILE_PATH =3D None
SESSION_SAVE_EVERY_REQUEST =3D False
SESSION_SERIALIZER =3D
'django.contrib.sessions.serializers.PickleSerializer'
SETTINGS_MODULE =3D 'settings'
SHORT_DATETIME_FORMAT =3D 'm/d/Y P'
SHORT_DATE_FORMAT =3D 'm/d/Y'
SIGNING_BACKEND =3D 'django.core.signing.TimestampSigner'
SILENCED_SYSTEM_CHECKS =3D []
SITE_ID =3D 1
SOCIALACCOUNT_PROVIDERS =3D {}
STATICFILES_DIRS =3D '()'
STATICFILES_FINDERS =3D
"('django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'compressor.finders.CompressorFinder')"
STATICFILES_STORAGE =3D
'django.contrib.staticfiles.storage.StaticFilesStorage'
STATIC_ROOT =3D '/var/lib/mailman3/web/static'
STATIC_URL =3D '/mailman3/static/'
TEMPLATES =3D [{'BACKEND':
'django.template.backends.django.DjangoTemplates', 'DIRS': [],
'APP_DIRS': True, 'OPTIONS': {'context_processors':
['django.template.context_processors.debug',
'django.template.context_processors.i18n',
'django.template.context_processors.media',
'django.template.context_processors.static',
'django.template.context_processors.tz',
'django.template.context_processors.csrf',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'django_mailman3.context_processors.common',
'hyperkitty.context_processors.common',
'postorius.context_processors.postorius']}}]
TEST_NON_SERIALIZED_APPS =3D []
TEST_RUNNER =3D 'django.test.runner.DiscoverRunner'
THOUSAND_SEPARATOR =3D ','
TIME_FORMAT =3D 'P'
TIME_INPUT_FORMATS =3D ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']
TIME_ZONE =3D 'Africa/Johannesburg'
USE_I18N =3D True
USE_L10N =3D True
USE_THOUSAND_SEPARATOR =3D False
USE_TZ =3D True
USE_X_FORWARDED_HOST =3D True
USE_X_FORWARDED_PORT =3D False
WSGI_APPLICATION =3D 'wsgi.application'
X_FRAME_OPTIONS =3D 'DENY'
YEAR_MONTH_FORMAT =3D 'F Y'
8 months, 3 weeks

[MM3-users] Re: Post installation issues (recipients refused) with Exim4 in a virtual host environment
by Kyriakos Terzopoulos
Please also find below the mailman conf command:
(venv) mailman@hestia:~/venv/bin$ ./mailman conf
[ARC] authserv_id:
[ARC] dkim: yes
[ARC] dmarc: yes
[ARC] domain:
[ARC] enabled: no
[ARC] privkey:
[ARC] selector:
[ARC] sig_headers: From, Sender, Reply-To, Subject, Date, Message-ID, To,
Cc, MIME-Version, Content-Type, Content-Transfer-Encoding, Content-ID,
Content-Description, Resent-Date, Resent-From, Resent-Sender, Resent-To,
Resent-Cc, Resent-Message-ID, In-Reply-To, References, List-Id, List-Help,
List-Unsubscribe, List-Subscribe, List-Post, List-Owner, List-Archive
[ARC] trusted_authserv_ids:
[antispam] header_checks:
[antispam] jump_chain: hold
[archiver.hyperkitty] class: mailman_hyperkitty.Archiver
[archiver.hyperkitty] clobber_date: maybe
[archiver.hyperkitty] clobber_skew: 1d
[archiver.hyperkitty] configuration: /etc/mailman3/mailman-hyperkitty.cfg
[archiver.hyperkitty] enable: yes
[archiver.mail_archive] class: mailman.archiving.mailarchive.MailArchive
[archiver.mail_archive] clobber_date: maybe
[archiver.mail_archive] clobber_skew: 1d
[archiver.mail_archive] configuration: python:mailman.config.mail_archive
[archiver.mail_archive] enable: no
[archiver.mhonarc] class: mailman.archiving.mhonarc.MHonArc
[archiver.mhonarc] clobber_date: maybe
[archiver.mhonarc] clobber_skew: 1d
[archiver.mhonarc] configuration: python:mailman.config.mhonarc
[archiver.mhonarc] enable: no
[archiver.prototype] class: mailman.archiving.prototype.Prototype
[archiver.prototype] clobber_date: maybe
[archiver.prototype] clobber_skew: 1d
[archiver.prototype] configuration: changeme
[archiver.prototype] enable: yes
[bounces] register_bounces_every: 15m
[database] class: mailman.database.postgresql.PostgreSQLDatabase
[database] debug: no
[database] url: postgresql://mailman:XXXXXXXXXX@localhost/mailman
[devmode] enabled: no
[devmode] recipient:
[devmode] testing: no
[devmode] wait: 60s
[digests] mime_digest_keep_headers:
Date From To Cc Subject Message-ID Keywords
In-Reply-To References Content-Type MIME-Version
Content-Transfer-Encoding Precedence Reply-To
Message List-Post
[digests] plain_digest_keep_headers:
Message Date From
Subject To Cc
Message-ID Keywords
Content-Type
[dmarc] cache_lifetime: 7d
[dmarc] org_domain_data_url:
https://publicsuffix.org/list/public_suffix_list.dat
[dmarc] resolver_lifetime: 5s
[dmarc] resolver_timeout: 3s
[language.ar] charset: utf-8
[language.ar] description: Arabic
[language.ar] enabled: yes
[language.ast] charset: utf-8
[language.ast] description: Asturian
[language.ast] enabled: yes
[language.bg] charset: utf-8
[language.bg] description: Bulgarian
[language.bg] enabled: yes
[language.ca] charset: utf-8
[language.ca] description: Catalan
[language.ca] enabled: yes
[language.cs] charset: utf-8
[language.cs] description: Czech
[language.cs] enabled: yes
[language.da] charset: utf-8
[language.da] description: Danish
[language.da] enabled: yes
[language.de] charset: utf-8
[language.de] description: German
[language.de] enabled: yes
[language.el] charset: utf-8
[language.el] description: Greek
[language.el] enabled: yes
[language.en] charset: us-ascii
[language.en] description: English (USA)
[language.en] enabled: yes
[language.es] charset: utf-8
[language.es] description: Spanish
[language.es] enabled: yes
[language.et] charset: utf-8
[language.et] description: Estonian
[language.et] enabled: yes
[language.eu] charset: utf-8
[language.eu] description: Euskara
[language.eu] enabled: yes
[language.fi] charset: utf-8
[language.fi] description: Finnish
[language.fi] enabled: yes
[language.fr] charset: utf-8
[language.fr] description: French
[language.fr] enabled: yes
[language.gl] charset: utf-8
[language.gl] description: Galician
[language.gl] enabled: yes
[language.he] charset: utf-8
[language.he] description: Hebrew
[language.he] enabled: yes
[language.hr] charset: utf-8
[language.hr] description: Croatian
[language.hr] enabled: yes
[language.hu] charset: utf-8
[language.hu] description: Hungarian
[language.hu] enabled: yes
[language.ia] charset: utf-8
[language.ia] description: Interlingua
[language.ia] enabled: yes
[language.it] charset: utf-8
[language.it] description: Italian
[language.it] enabled: yes
[language.ja] charset: utf-8
[language.ja] description: Japanese
[language.ja] enabled: yes
[language.ko] charset: utf-8
[language.ko] description: Korean
[language.ko] enabled: yes
[language.lt] charset: utf-8
[language.lt] description: Lithuanian
[language.lt] enabled: yes
[language.nl] charset: utf-8
[language.nl] description: Dutch
[language.nl] enabled: yes
[language.no] charset: utf-8
[language.no] description: Norwegian
[language.no] enabled: yes
[language.pl] charset: utf-8
[language.pl] description: Polish
[language.pl] enabled: yes
[language.pt] charset: utf-8
[language.pt] description: Portuguese
[language.pt] enabled: yes
[language.pt_BR] charset: utf-8
[language.pt_BR] description: Portuguese (Brazil)
[language.pt_BR] enabled: yes
[language.ro] charset: utf-8
[language.ro] description: Romanian
[language.ro] enabled: yes
[language.ru] charset: utf-8
[language.ru] description: Russian
[language.ru] enabled: yes
[language.sk] charset: utf-8
[language.sk] description: Slovak
[language.sk] enabled: yes
[language.sl] charset: utf-8
[language.sl] description: Slovenian
[language.sl] enabled: yes
[language.sr] charset: utf-8
[language.sr] description: Serbian
[language.sr] enabled: yes
[language.sv] charset: utf-8
[language.sv] description: Swedish
[language.sv] enabled: yes
[language.tr] charset: utf-8
[language.tr] description: Turkish
[language.tr] enabled: yes
[language.uk] charset: utf-8
[language.uk] description: Ukrainian
[language.uk] enabled: yes
[language.vi] charset: utf-8
[language.vi] description: Vietnamese
[language.vi] enabled: yes
[language.zh_CN] charset: utf-8
[language.zh_CN] description: Chinese
[language.zh_CN] enabled: yes
[language.zh_TW] charset: utf-8
[language.zh_TW] description: Chinese (Taiwan)
[language.zh_TW] enabled: yes
[logging.archiver] datefmt: %b %d %H:%M:%S %Y
[logging.archiver] format: %(asctime)s (%(process)d) %(message)s
[logging.archiver] level: info
[logging.archiver] path: mailman.log
[logging.archiver] propagate: no
[logging.bounce] datefmt: %b %d %H:%M:%S %Y
[logging.bounce] format: %(asctime)s (%(process)d) %(message)s
[logging.bounce] level: info
[logging.bounce] path: bounce.log
[logging.bounce] propagate: no
[logging.config] datefmt: %b %d %H:%M:%S %Y
[logging.config] format: %(asctime)s (%(process)d) %(message)s
[logging.config] level: info
[logging.config] path: mailman.log
[logging.config] propagate: no
[logging.database] datefmt: %b %d %H:%M:%S %Y
[logging.database] format: %(asctime)s (%(process)d) %(message)s
[logging.database] level: warn
[logging.database] path: mailman.log
[logging.database] propagate: no
[logging.debug] datefmt: %b %d %H:%M:%S %Y
[logging.debug] format: %(asctime)s (%(process)d) %(message)s
[logging.debug] level: info
[logging.debug] path: debug.log
[logging.debug] propagate: no
[logging.error] datefmt: %b %d %H:%M:%S %Y
[logging.error] format: %(asctime)s (%(process)d) %(message)s
[logging.error] level: info
[logging.error] path: mailman.log
[logging.error] propagate: no
[logging.fromusenet] datefmt: %b %d %H:%M:%S %Y
[logging.fromusenet] format: %(asctime)s (%(process)d) %(message)s
[logging.fromusenet] level: info
[logging.fromusenet] path: mailman.log
[logging.fromusenet] propagate: no
[logging.http] datefmt: %b %d %H:%M:%S %Y
[logging.http] format: %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s"
[logging.http] level: info
[logging.http] path: mailman.log
[logging.http] propagate: no
[logging.locks] datefmt: %b %d %H:%M:%S %Y
[logging.locks] format: %(asctime)s (%(process)d) %(message)s
[logging.locks] level: info
[logging.locks] path: mailman.log
[logging.locks] propagate: no
[logging.mischief] datefmt: %b %d %H:%M:%S %Y
[logging.mischief] format: %(asctime)s (%(process)d) %(message)s
[logging.mischief] level: info
[logging.mischief] path: mailman.log
[logging.mischief] propagate: no
[logging.plugins] datefmt: %b %d %H:%M:%S %Y
[logging.plugins] format: %(asctime)s (%(process)d) %(message)s
[logging.plugins] level: info
[logging.plugins] path: plugins.log
[logging.plugins] propagate: no
[logging.root] datefmt: %b %d %H:%M:%S %Y
[logging.root] format: %(asctime)s (%(process)d) %(message)s
[logging.root] level: info
[logging.root] path: mailman.log
[logging.root] propagate: no
[logging.runner] datefmt: %b %d %H:%M:%S %Y
[logging.runner] format: %(asctime)s (%(process)d) %(message)s
[logging.runner] level: info
[logging.runner] path: mailman.log
[logging.runner] propagate: no
[logging.smtp] datefmt: %b %d %H:%M:%S %Y
[logging.smtp] every: $msgid smtp to $listname for $recip recips, completed
in $time seconds
[logging.smtp] failure: $msgid delivery to $recip failed with code
$smtpcode, $smtpmsg
[logging.smtp] format: %(asctime)s (%(process)d) %(message)s
[logging.smtp] level: info
[logging.smtp] path: smtp.log
[logging.smtp] propagate: no
[logging.smtp] refused: $msgid post to $listname from $sender, $size bytes,
$refused failures
[logging.smtp] success: $msgid post to $listname from $sender, $size bytes
[logging.subscribe] datefmt: %b %d %H:%M:%S %Y
[logging.subscribe] format: %(asctime)s (%(process)d) %(message)s
[logging.subscribe] level: info
[logging.subscribe] path: mailman.log
[logging.subscribe] propagate: no
[logging.task] datefmt: %b %d %H:%M:%S %Y
[logging.task] format: %(asctime)s (%(process)d) %(message)s
[logging.task] level: info
[logging.task] path: mailman.log
[logging.task] propagate: no
[logging.vette] datefmt: %b %d %H:%M:%S %Y
[logging.vette] format: %(asctime)s (%(process)d) %(message)s
[logging.vette] level: info
[logging.vette] path: mailman.log
[logging.vette] propagate: no
[mailman] anonymous_list_keep_headers: ^x-mailman- ^x-content-filtered-by:
^x-topics:
^x-ack: ^x-beenthere: ^x-list-administrivia: ^x-spam-
[mailman] cache_life: 7d
[mailman] check_max_size_on_filtered_message: no
[mailman] default_language: en
[mailman] email_commands_max_lines: 10
[mailman] filter_report: no
[mailman] filtered_messages_are_preservable: no
[mailman] hold_digest: no
[mailman] html_to_plain_text_command: /usr/bin/lynx -dump $filename
[mailman] layout: local
[mailman] listname_chars: [-_.0-9a-z]
[mailman] masthead_threshold: 4
[mailman] moderator_request_life: 180d
[mailman] noreply_address: noreply
[mailman] pending_request_life: 3d
[mailman] post_hook:
[mailman] pre_hook:
[mailman] run_tasks_every: 1h
[mailman] sender_headers: from from_ reply-to sender
[mailman] site_owner: kterzopoulos(a)XXXXXX.com
[mta] configuration: python:mailman.config.exim4
[mta] delivery_retry_period: 5d
[mta] incoming: mailman.mta.exim4.LMTP
[mta] lmtp_host: localhost
[mta] lmtp_port: 8024
[mta] max_autoresponses_per_day: 10
[mta] max_delivery_threads: 0
[mta] max_recipients: 500
[mta] max_sessions_per_connection: 0
[mta] outgoing: mailman.mta.deliver.deliver
[mta] remove_dkim_headers: no
[mta] smtp_host: mail.myproject.eu
[mta] smtp_pass:
[mta] smtp_port: 25
[mta] smtp_secure_mode: smtp
[mta] smtp_user:
[mta] smtp_verify_cert: yes
[mta] smtp_verify_hostname: yes
[mta] verp_confirm_format: $address+$cookie
[mta] verp_confirm_regexp: ^(.*<)?(?P<addr>[^+]+?)\+(?P<cookie>[^@]+)@.*$
[mta] verp_confirmations: yes
[mta] verp_delimiter: +
[mta] verp_delivery_interval: 1
[mta] verp_format: ${bounces}+${local}=${domain}
[mta] verp_personalized_deliveries: yes
[mta] verp_probe_format: $bounces+$token@$domain
[mta] verp_probe_regexp: ^(?P<bounces>[^+]+?)\+(?P<token>[^@]+)@.*$
[mta] verp_probes: no
[mta] verp_regexp:
^(?P<bounces>[^+]+?)\+(?P<local>[^=]+)=(?P<domain>[^@]+)@.*$
[nntp] gatenews_every: 5m
[nntp] host:
[nntp] password:
[nntp] port:
[nntp] remove_headers:
nntp-posting-host nntp-posting-date x-trace
x-complaints-to xref date-received posted
posting-version relay-version received
[nntp] rewrite_duplicate_headers:
To X-Original-To
CC X-Original-CC
Content-Transfer-Encoding X-Original-Content-Transfer-Encoding
MIME-Version X-MIME-Version
[nntp] user:
[passwords] configuration: python:mailman.config.passlib
[passwords] password_length: 8
[paths.dev] archive_dir: $var_dir/archives
[paths.dev] bin_dir: $argv
[paths.dev] cache_dir: $var_dir/cache
[paths.dev] data_dir: $var_dir/data
[paths.dev] etc_dir: $var_dir/etc
[paths.dev] ext_dir: $var_dir/ext
[paths.dev] list_data_dir: $var_dir/lists
[paths.dev] lock_dir: $var_dir/locks
[paths.dev] lock_file: $lock_dir/master.lck
[paths.dev] log_dir: $var_dir/logs
[paths.dev] messages_dir: $var_dir/messages
[paths.dev] pid_file: $var_dir/master.pid
[paths.dev] queue_dir: $var_dir/queue
[paths.dev] template_dir: $var_dir/templates
[paths.dev] var_dir: $cfg_file/../..
[paths.fhs] archive_dir: $var_dir/archives
[paths.fhs] bin_dir: /sbin
[paths.fhs] cache_dir: $var_dir/cache
[paths.fhs] data_dir: $var_dir/data
[paths.fhs] etc_dir: /etc
[paths.fhs] ext_dir: /etc/mailman.d
[paths.fhs] list_data_dir: $var_dir/lists
[paths.fhs] lock_dir: /var/lock/mailman
[paths.fhs] lock_file: $lock_dir/master.lck
[paths.fhs] log_dir: /var/log/mailman
[paths.fhs] messages_dir: $var_dir/messages
[paths.fhs] pid_file: /var/run/mailman/master.pid
[paths.fhs] queue_dir: /var/spool/mailman
[paths.fhs] template_dir: $var_dir/templates
[paths.fhs] var_dir: /var/lib/mailman
[paths.here] archive_dir: $var_dir/archives
[paths.here] bin_dir: $argv
[paths.here] cache_dir: $var_dir/cache
[paths.here] data_dir: $var_dir/data
[paths.here] etc_dir: $var_dir/etc
[paths.here] ext_dir: $var_dir/ext
[paths.here] list_data_dir: $var_dir/lists
[paths.here] lock_dir: $var_dir/locks
[paths.here] lock_file: $lock_dir/master.lck
[paths.here] log_dir: $var_dir/logs
[paths.here] messages_dir: $var_dir/messages
[paths.here] pid_file: $var_dir/master.pid
[paths.here] queue_dir: $var_dir/queue
[paths.here] template_dir: $var_dir/templates
[paths.here] var_dir: $cwd/var
[paths.local] archive_dir: $var_dir/archives
[paths.local] bin_dir: $argv
[paths.local] cache_dir: $var_dir/cache
[paths.local] data_dir: $var_dir/data
[paths.local] etc_dir: $var_dir/etc
[paths.local] ext_dir: $var_dir/ext
[paths.local] list_data_dir: $var_dir/lists
[paths.local] lock_dir: $var_dir/locks
[paths.local] lock_file: $lock_dir/master.lck
[paths.local] log_dir: $var_dir/logs
[paths.local] messages_dir: $var_dir/messages
[paths.local] pid_file: $var_dir/master.pid
[paths.local] queue_dir: $var_dir/queue
[paths.local] template_dir: $var_dir/templates
[paths.local] var_dir: /opt/mailman/venv
[plugin.master] class:
[plugin.master] component_package:
[plugin.master] configuration:
[plugin.master] enabled: no
[runner.archive] class: mailman.runners.archive.ArchiveRunner
[runner.archive] instances: 1
[runner.archive] max_restarts: 10
[runner.archive] path: $QUEUE_DIR/$name
[runner.archive] sleep_time: 1s
[runner.archive] start: yes
[runner.bad] class: mailman.runners.fake.BadRunner
[runner.bad] instances: 1
[runner.bad] max_restarts: 10
[runner.bad] path: $QUEUE_DIR/$name
[runner.bad] sleep_time: 1s
[runner.bad] start: no
[runner.bounces] class: mailman.runners.bounce.BounceRunner
[runner.bounces] instances: 1
[runner.bounces] max_restarts: 10
[runner.bounces] path: $QUEUE_DIR/$name
[runner.bounces] sleep_time: 2m
[runner.bounces] start: yes
[runner.command] class: mailman.runners.command.CommandRunner
[runner.command] instances: 1
[runner.command] max_restarts: 10
[runner.command] path: $QUEUE_DIR/$name
[runner.command] sleep_time: 1s
[runner.command] start: yes
[runner.digest] class: mailman.runners.digest.DigestRunner
[runner.digest] instances: 1
[runner.digest] max_restarts: 10
[runner.digest] path: $QUEUE_DIR/$name
[runner.digest] sleep_time: 1s
[runner.digest] start: yes
[runner.in] class: mailman.runners.incoming.IncomingRunner
[runner.in] instances: 1
[runner.in] max_restarts: 10
[runner.in] path: $QUEUE_DIR/$name
[runner.in] sleep_time: 1s
[runner.in] start: yes
[runner.lmtp] class: mailman.runners.lmtp.LMTPRunner
[runner.lmtp] instances: 1
[runner.lmtp] max_restarts: 10
[runner.lmtp] path:
[runner.lmtp] sleep_time: 1s
[runner.lmtp] start: yes
[runner.nntp] class: mailman.runners.nntp.NNTPRunner
[runner.nntp] instances: 1
[runner.nntp] max_restarts: 10
[runner.nntp] path: $QUEUE_DIR/$name
[runner.nntp] sleep_time: 1s
[runner.nntp] start: yes
[runner.out] class: mailman.runners.outgoing.OutgoingRunner
[runner.out] instances: 1
[runner.out] max_restarts: 10
[runner.out] path: $QUEUE_DIR/$name
[runner.out] sleep_time: 1s
[runner.out] start: yes
[runner.pipeline] class: mailman.runners.pipeline.PipelineRunner
[runner.pipeline] instances: 1
[runner.pipeline] max_restarts: 10
[runner.pipeline] path: $QUEUE_DIR/$name
[runner.pipeline] sleep_time: 1s
[runner.pipeline] start: yes
[runner.rest] class: mailman.runners.rest.RESTRunner
[runner.rest] instances: 1
[runner.rest] max_restarts: 10
[runner.rest] path:
[runner.rest] sleep_time: 1s
[runner.rest] start: yes
[runner.retry] class: mailman.runners.retry.RetryRunner
[runner.retry] instances: 1
[runner.retry] max_restarts: 10
[runner.retry] path: $QUEUE_DIR/$name
[runner.retry] sleep_time: 15m
[runner.retry] start: yes
[runner.shunt] class: mailman.runners.fake.ShuntRunner
[runner.shunt] instances: 1
[runner.shunt] max_restarts: 10
[runner.shunt] path: $QUEUE_DIR/$name
[runner.shunt] sleep_time: 1s
[runner.shunt] start: no
[runner.task] class: mailman.runners.task.TaskRunner
[runner.task] instances: 1
[runner.task] max_restarts: 10
[runner.task] path:
[runner.task] sleep_time: 1m
[runner.task] start: yes
[runner.virgin] class: mailman.runners.virgin.VirginRunner
[runner.virgin] instances: 1
[runner.virgin] max_restarts: 10
[runner.virgin] path: $QUEUE_DIR/$name
[runner.virgin] sleep_time: 1s
[runner.virgin] start: yes
[shell] banner: Welcome to the GNU Mailman shell
Use commit() to commit changes.
Use abort() to discard changes since the last commit.
Exit with ctrl+D does an implicit commit() but exit() does not.
[shell] history_file: $var_dir/history.py
[shell] prompt: >>>
[shell] use_ipython: no
[styles] default: legacy-default
[webservice] admin_pass: restpass
[webservice] admin_user: restadmin
[webservice] api_version: 3.1
[webservice] configuration: python:mailman.config.gunicorn
[webservice] hostname: localhost
[webservice] port: 8001
[webservice] show_tracebacks: yes
[webservice] use_https: no
[webservice] workers: 2
*Kyriakos Terzopoulos
*Web developer / e-learning expert
*Tel:*+30 211 213 9858
*Mobile:* +30 694 526 4512
* E-mail: *kyriakos.terzopoulos(a)gmail.com
* Skype:* kyriakos.terzopoulos
Find me on Facebook <http://www.facebook.com/cirrus3d>
Follow me on Twitter <http://twitter.com/#%21/cirrus3d>
On Wed, 11 Oct 2023 at 12:37, Kyriakos Terzopoulos <
kyriakos.terzopoulos(a)gmail.com> wrote:
> Hi,
>
> I have the following in my mailman log
>
> [11/Oct/2023:12:31:39 +0300] "GET /3.1/lists/
> testlist(a)myproject.eu/held/count HTTP/1.1" 200 73 "-" "GNU Mailman REST
> client v3.3.5"
> [11/Oct/2023:12:31:43 +0300] "GET /3.1/lists/testlist.myproject.eu
> HTTP/1.1" 200 425 "-" "GNU Mailman REST client v3.3.5"
> [11/Oct/2023:12:31:43 +0300] "GET /3.1/lists/testlist(a)myproject.eu/config
> HTTP/1.1" 200 3111 "-" "GNU Mailman REST client v3.3.5"
> [11/Oct/2023:12:31:43 +0300] "GET /3.1/lists/
> testlist.myproject.eu/archivers HTTP/1.1" 200 100 "-" "GNU Mailman REST
> client v3.3.5"
> [11/Oct/2023:12:31:51 +0300] "GET /3.1/lists/testlist.myproject.eu
> HTTP/1.1" 200 425 "-" "GNU Mailman REST client v3.3.5"
> Oct 11 12:31:51 2023 (1534165) deque: do_confirm_verify
> Traceback (most recent call last):
> File
> "/opt/mailman/venv/lib/python3.10/site-packages/mailman/app/workflow.py",
> line 69, in __next__
> return step()
> File
> "/opt/mailman/venv/lib/python3.10/site-packages/mailman/app/subscriptions.py",
> line 382, in _step_send_confirmation
> raise StopIteration
> StopIteration
> [11/Oct/2023:12:31:51 +0300] "POST /3.1/members HTTP/1.1" 202 143 "-" "GNU
> Mailman REST client v3.3.5"
> [11/Oct/2023:12:31:51 +0300] "GET /3.1/lists/testlist.myproject.eu
> HTTP/1.1" 200 425 "-" "GNU Mailman REST client v3.3.5"
> [11/Oct/2023:12:31:51 +0300] "GET /3.1/lists/testlist(a)myproject.eu/config
> HTTP/1.1" 200 3111 "-" "GNU Mailman REST client v3.3.5"
> [11/Oct/2023:12:31:51 +0300] "GET /3.1/lists/
> testlist.myproject.eu/archivers HTTP/1.1" 200 100 "-" "GNU Mailman REST
> client v3.3.5"
>
> *Kyriakos Terzopoulos
> *Web developer / e-learning expert
>
> *Tel:*+30 211 213 9858
>
> *Mobile:* +30 694 526 4512
>
> * E-mail: *kyriakos.terzopoulos(a)gmail.com
> * Skype:* kyriakos.terzopoulos
> Find me on Facebook <http://www.facebook.com/cirrus3d>
> Follow me on Twitter <http://twitter.com/#%21/cirrus3d>
>
>
>
> On Wed, 11 Oct 2023 at 11:54, Odhiambo Washington <odhiambo(a)gmail.com>
> wrote:
>
>> On Wed, Oct 11, 2023 at 11:15 AM Kyriakos Terzopoulos <
>> kyriakos.terzopoulos(a)gmail.com> wrote:
>>
>> > Hi,
>> >
>> > I have set up (I believe successfully) and configured the following in a
>> > Virtualhost environment (with HestiaCP):
>> >
>> > - A record for lists.mydomain.com
>> > - Venv
>> > - Mailman core
>> > - Mailman web (run migrate, collectstatic, compress, compilemessages)
>> > Postorius
>> > - gunicorn, hyperkitty
>> > - Nginx
>> > - SMTP exim4 conf
>> >
>> > I can see Posrorius and I have logged in and created my first mailing
>> list:
>> >
>> > [image: Screenshot 2023-10-11 at 10.57.31 AM.png]
>> >
>> > My issue is that even though I have subscribed to my list as you can see
>> > above, I am not receiving the confirmation email. I get a "recipients
>> > refused" error. The smtp log for mailman is as follows:
>> >
>> > Oct 11 10:41:20 2023 (1533666)
>> > <169701007904.1534165.14569329382406660776@localhost> recipients
>> refused:
>> > {'
>> > kyriakos.terzopoulos(a)gmail.com': (550, b'Verification failed for
>> > <testlist-bounces+kyriakos.terzopoulos=gmail.com(a)myproject.eu
>> > >\nUnrouteable
>> > address\nSender verify failed')}
>> >
>> > Oct 11 10:41:20 2023 (1533666)
>> > <169701007904.1534165.14569329382406660776@localhost> smtp to
>> > testlist(a)myproject.eu for 1 recips, completed in 0.26796579360961914
>> > seconds
>> >
>> > Oct 11 10:41:20 2023 (1533666)
>> > <169701007904.1534165.14569329382406660776@localhost> post to
>> > testlist(a)myproject.eu from
>> > testlist-confirm+c9b20c5290bec43147a7e96a6b8cd825daf913d7(a)myproject.eu,
>> > 1667 bytes, 1 failures
>> >
>> > Oct 11 10:41:20 2023 (1533666)
>> > <169701007904.1534165.14569329382406660776@localhost> delivery to
>> > kyriakos.terzopoulos(a)gmail.com failed with code 550, b'Verification
>> failed
>> > for <testlist-bounces+kyriakos.terzopoulos=gmail.com(a)myproject.eu
>> > >\nUnrouteable
>> > address\nSender verify failed'
>> >
>> > I have used the configuration for exim that is here
>> > <
>> >
>> https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/docs/mta.h…
>> > >
>> > and
>> > I have also tested with the alternative approach that is documented in
>> >
>>
>> What do you have in the Exim's mainlog?
>>
>>
>> --
>> Best regards,
>> Odhiambo WASHINGTON,
>> Nairobi,KE
>> +254 7 3200 0004/+254 7 2274 3223
>> "Oh, the cruft.", egrep -v '^$|^.*#' ¯\_(ツ)_/¯ :-)
>> [How to ask smart questions:
>> http://www.catb.org/~esr/faqs/smart-questions.html]
>> _______________________________________________
>> Mailman-users mailing list -- mailman-users(a)mailman3.org
>> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
>> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>> Archived at:
>> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
>>
>> This message sent to kyriakos.terzopoulos(a)gmail.com
>>
>
1 year, 6 months

[MM3-users] Re: Migration from old server to new server failed
by Helio Loureiro
Hi,
Any suggestions here?
Best Regards,
Helio Loureiro
https://helio.loureiro.eng.br
https://github.com/helioloureiro
https://mastodon.social/@helioloureiro
On Mon, 19 Feb 2024 at 14:44, Helio Loureiro <helio(a)loureiro.eng.br> wrote:
> Hi,
>
> I repeated the steps today.
>
> First I waited to end the errors raised because the mailman3-web wasn't
> running.
>
> The above exception was the direct cause of the following exception:
>
> Traceback (most recent call last):
> File
> "/local/mailman/venv/lib/python3.10/site-packages/urllib3/connectionpool.py",
> line 793, in urlopen
> response = self._make_request(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/urllib3/connectionpool.py",
> line 496, in _make_request
> conn.request(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/urllib3/connection.py",
> line 400, in request
> self.endheaders()
> File "/usr/lib/python3.10/http/client.py", line 1278, in endheaders
> self._send_output(message_body, encode_chunked=encode_chunked)
> File "/usr/lib/python3.10/http/client.py", line 1038, in _send_output
> self.send(msg)
> File "/usr/lib/python3.10/http/client.py", line 976, in send
> self.connect()
> File
> "/local/mailman/venv/lib/python3.10/site-packages/urllib3/connection.py",
> line 238, in connect
> self.sock = self._new_conn()
> File
> "/local/mailman/venv/lib/python3.10/site-packages/urllib3/connection.py",
> line 213, in _new_conn
> raise NewConnectionError(
> urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection
> object at 0x7f0fdc2f72b0>: Failed to establish a new connection: [Errno
> 111] Connection refused
>
> The above exception was the direct cause of the following exception:
>
> Traceback (most recent call last):
> File
> "/local/mailman/venv/lib/python3.10/site-packages/requests/adapters.py",
> line 486, in send
> resp = conn.urlopen(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/urllib3/connectionpool.py",
> line 847, in urlopen
> retries = retries.increment(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/urllib3/util/retry.py",
> line 515, in increment
> raise MaxRetryError(_pool, url, reason) from reason # type:
> ignore[arg-type]
> urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='127.0.0.1',
> port=8000): Max retries exceeded with url: /archives/api/mailman/archive
> (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at
> 0x7f0fdc2f72b0>: Failed to establish a new connection: [Errno 111]
> Connection refused'))
>
> Which seems to keep forever. So eventually I gave up and moved forward.
> And I changed to use the uwsgi socket instead of the direct port.
>
> (venv) mailman@new-mailman3 ~ (v3.1.1) [0|SIGINT]> mailman-web migrate
> System check identified some issues:
>
> WARNINGS:
> account.EmailAddress: (models.W036) MariaDB does not support unique
> constraints with conditions.
> HINT: A constraint won't be created. Silence this warning if you
> don't care about it.
> account.EmailAddress: (models.W043) MariaDB does not support indexes on
> expressions.
> HINT: An index won't be created. Silence this warning if you don't
> care about it.
> Operations to perform:
> Apply all migrations: account, admin, auth, contenttypes,
> django_mailman3, django_q, hyperkitty, postorius, sessions, sites,
> socialaccount
> Running migrations:
> Applying account.0003_alter_emailaddress_create_unique_verified_email...
> OK
> Applying account.0004_alter_emailaddress_drop_unique_email... OK
> Applying account.0005_emailaddress_idx_upper_email... OK
> Applying admin.0003_logentry_add_action_flag_choices... OK
> Applying auth.0009_alter_user_last_name_max_length... OK
> Applying auth.0010_alter_group_name_max_length... OK
> Applying auth.0011_update_proxy_permissions... OK
> Applying auth.0012_alter_user_first_name_max_length... OK
> Applying django_mailman3.0003_sessions... OK
> Applying django_q.0010_auto_20200610_0856... OK
> Applying django_q.0011_auto_20200628_1055... OK
> Applying django_q.0012_auto_20200702_1608... OK
> Applying django_q.0013_task_attempt_count... OK
> Applying django_q.0014_schedule_cluster... OK
> Applying hyperkitty.0016_auto_20180309_0056... OK
> Applying hyperkitty.0017_file_attachments... OK
> Applying hyperkitty.0018_threadcategory_color... OK
> Applying hyperkitty.0019_auto_20190127_null_description... OK
> Applying hyperkitty.0020_auto_20190907_1927... OK
> Applying hyperkitty.0021_add_owners_mods...Traceback (most recent call
> last):
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/utils.py",
> line 87, in _execute
> return self.cursor.execute(sql)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/mysql/base.py",
> line 75, in execute
> return self.cursor.execute(query, args)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
> 179, in execute
> res = self._query(mogrified_query)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
> 330, in _query
> db.query(q)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/connections.py",
> line 261, in query
> _mysql.connection.query(self, query)
> MySQLdb.OperationalError: (1050, "Table
> 'hyperkitty_mailinglist_moderators' already exists")
>
> Then dropping table hyperkitty_mailinglist_moderators.
>
> (venv) mailman@new-mailman3 ~ (v3.1.1)> mailman-web migrate
> System check identified some issues:
>
> WARNINGS:
> account.EmailAddress: (models.W036) MariaDB does not support unique
> constraints with conditions.
> HINT: A constraint won't be created. Silence this warning if you
> don't care about it.
> account.EmailAddress: (models.W043) MariaDB does not support indexes on
> expressions.
> HINT: An index won't be created. Silence this warning if you don't
> care about it.
> Operations to perform:
> Apply all migrations: account, admin, auth, contenttypes,
> django_mailman3, django_q, hyperkitty, postorius, sessions, sites,
> socialaccount
> Running migrations:
> Applying hyperkitty.0021_add_owners_mods...Traceback (most recent call
> last):
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/utils.py",
> line 87, in _execute
> return self.cursor.execute(sql)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/mysql/base.py",
> line 75, in execute
> return self.cursor.execute(query, args)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
> 179, in execute
> res = self._query(mogrified_query)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
> 330, in _query
> db.query(q)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/connections.py",
> line 261, in query
> _mysql.connection.query(self, query)
> MySQLdb.OperationalError: (1050, "Table 'hyperkitty_mailinglist_owners'
> already exists")
>
> After dropping table hyperkitty_mailinglist_owners.
>
> (venv) mailman@new-mailman3 ~ (v3.1.1) [0|1]> mailman-web migrate
> System check identified some issues:
>
> WARNINGS:
> account.EmailAddress: (models.W036) MariaDB does not support unique
> constraints with conditions.
> HINT: A constraint won't be created. Silence this warning if you
> don't care about it.
> account.EmailAddress: (models.W043) MariaDB does not support indexes on
> expressions.
> HINT: An index won't be created. Silence this warning if you don't
> care about it.
> Operations to perform:
> Apply all migrations: account, admin, auth, contenttypes,
> django_mailman3, django_q, hyperkitty, postorius, sessions, sites,
> socialaccount
> Running migrations:
> Applying hyperkitty.0021_add_owners_mods...Traceback (most recent call
> last):
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/utils.py",
> line 87, in _execute
> return self.cursor.execute(sql)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/mysql/base.py",
> line 75, in execute
> return self.cursor.execute(query, args)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
> 179, in execute
> res = self._query(mogrified_query)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
> 330, in _query
> db.query(q)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/connections.py",
> line 261, in query
> _mysql.connection.query(self, query)
> MySQLdb.OperationalError: (1050, "Table
> 'hyperkitty_mailinglist_moderators' already exists")
>
> After dropping table hyperkitty_mailinglist_moderators.
>
> (venv) mailman@new-mailman3 ~ (v3.1.1) [0|1]> mailman-web migrate
> System check identified some issues:
>
> WARNINGS:
> account.EmailAddress: (models.W036) MariaDB does not support unique
> constraints with conditions.
> HINT: A constraint won't be created. Silence this warning if you
> don't care about it.
> account.EmailAddress: (models.W043) MariaDB does not support indexes on
> expressions.
> HINT: An index won't be created. Silence this warning if you don't
> care about it.
> Operations to perform:
> Apply all migrations: account, admin, auth, contenttypes,
> django_mailman3, django_q, hyperkitty, postorius, sessions, sites,
> socialaccount
> Running migrations:
> Applying hyperkitty.0021_add_owners_mods... OK
> Applying hyperkitty.0022_mailinglist_archive_rendering_mode... OK
> Applying hyperkitty.0023_alter_mailinglist_name... OK
> Applying postorius.0004_create_email_template...Traceback (most recent
> call last):
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/utils.py",
> line 87, in _execute
> return self.cursor.execute(sql)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/db/backends/mysql/base.py",
> line 75, in execute
> return self.cursor.execute(query, args)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
> 179, in execute
> res = self._query(mogrified_query)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/cursors.py", line
> 330, in _query
> db.query(q)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/MySQLdb/connections.py",
> line 261, in query
> _mysql.connection.query(self, query)
> MySQLdb.OperationalError: (1050, "Table 'postorius_emailtemplate' already
> exists")
>
> After dropping table postorius_emailtemplate.
>
> (venv) mailman@new-mailman3 ~ (v3.1.1) [0|1]> mailman-web migrate
> System check identified some issues:
>
> WARNINGS:
> account.EmailAddress: (models.W036) MariaDB does not support unique
> constraints with conditions.
> HINT: A constraint won't be created. Silence this warning if you
> don't care about it.
> account.EmailAddress: (models.W043) MariaDB does not support indexes on
> expressions.
> HINT: An index won't be created. Silence this warning if you don't
> care about it.
> Operations to perform:
> Apply all migrations: account, admin, auth, contenttypes,
> django_mailman3, django_q, hyperkitty, postorius, sessions, sites,
> socialaccount
> Running migrations:
> Applying postorius.0004_create_email_template... OK
> Applying postorius.0005_auto_20180707_1107... OK
> Applying postorius.0006_auto_20180711_1359... OK
> Applying postorius.0007_auto_20180712_0536... OK
> Applying postorius.0008_auto_20190310_0717... OK
> Applying postorius.0009_auto_20190508_1604... OK
> Applying postorius.0010_auto_20190821_0621... OK
> Applying postorius.0011_auto_20191109_1219... OK
> Applying postorius.0012_auto_20200420_2136... OK
> Applying postorius.0013_auto_20201116_0058... OK
> Applying postorius.0014_auto_20210329_2248... OK
> Applying postorius.0015_auto_20210619_0509... OK
> Applying postorius.0016_auto_20210810_2157... OK
> Applying postorius.0017_alter_emailtemplate_language... OK
> Applying postorius.0018_alter_emailtemplate_language... OK
> Applying socialaccount.0004_app_provider_id_settings... OK
> Applying socialaccount.0005_socialtoken_nullable_app... OK
> Applying socialaccount.0006_alter_socialaccount_extra_data... OK
>
> At this point the errors remains about not reaching web part. So I
> started mailman3-web.
>
> Then I see these errors on var/log/mailman.log
>
> Feb 19 15:35:14 2024 (543890) Traceback (most recent call last):
> File
> "/local/mailman/venv/lib/python3.10/site-packages/mailman_hyperkitty/__init__.py",
> line 158, in _archive_message
> url = self._send_message(mlist, msg)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/mailman_hyperkitty/__init__.py",
> line 228, in _send_message
> raise ValueError(result.text)
> ValueError: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
> <html><head>
> <title>404 Not Found</title>
> </head><body>
> <h1>Not Found</h1>
> <p>The requested URL was not found on this server.</p>
> <hr>
> <address>Apache/2.4.52 (Ubuntu) Server at 127.0.0.1 Port 80</address>
> </body></html>
>
> Feb 19 15:35:14 2024 (543890) HyperKitty failure on
> http://127.0.0.1/archives/api/mailman/archive: <!DOCTYPE HTML PUBLIC
> "-//IETF//DTD HTML 2.0//EN">
> <html><head>
> <title>404 Not Found</title>
> </head><body>
> <h1>Not Found</h1>
> <p>The requested URL was not found on this server.</p>
> <hr>
> <address>Apache/2.4.52 (Ubuntu) Server at 127.0.0.1 Port 80</address>
> </body></html>
> (404)
> Feb 19 15:35:14 2024 (543890) Could not archive the message with id <
> ff1707bb-d105-4f37-b3f8-9766b3563127(a)SESAMR604.domain.com>
> Feb 19 15:35:14 2024 (543890) archiving failed, re-queuing (mailing-list
> mylist.new-mailman.domain.com, message <
> ff1707bb-d105-4f37-b3f8-9766b3563127(a)machine.domain.com>)
> Feb 19 15:35:14 2024 (543890) Exception in the HyperKitty archiver:
> <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
> <html><head>
> <title>404 Not Found</title>
> </head><body>
> <h1>Not Found</h1>
> <p>The requested URL was not found on this server.</p>
> <hr>
> <address>Apache/2.4.52 (Ubuntu) Server at 127.0.0.1 Port 80</address>
> </body></html>
>
> And I can't get access to the hyperkitty at all.
>
> On var/logs/uwsgi-error.log:
>
> --- Logging error ---
> Traceback (most recent call last):
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
> line 356, in pusher
> task = SignedPackage.loads(task[1])
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django_q/signing.py",
> line 25, in loads
> return signing.loads(
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django_q/core_signing.py",
> line 35, in loads
> base64d = force_bytes(TimestampSigner(key, salt=salt).unsign(s,
> max_age=max_age))
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django_q/core_signing.py",
> line 70, in unsign
> result = super(TimestampSigner, self).unsign(value)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django_q/core_signing.py",
> line 55, in unsign
> raise BadSignature('Signature "%s" does not match' % sig)
> django.core.signing.BadSignature: Signature "48do9gGvueBxakX_a4uNmSwD7cs"
> does not match
>
> During handling of the above exception, another exception occurred:
>
> Traceback (most recent call last):
> File "/usr/lib/python3.10/logging/__init__.py", line 1100, in emit
> msg = self.format(record)
> File "/usr/lib/python3.10/logging/__init__.py", line 943, in format
> return fmt.format(record)
> File "/usr/lib/python3.10/logging/__init__.py", line 678, in format
> record.message = record.getMessage()
> File "/usr/lib/python3.10/logging/__init__.py", line 368, in getMessage
> msg = msg % self.args
> TypeError: not all arguments converted during string formatting
> Call stack:
> File "/local/mailman/venv/bin/mailman-web", line 8, in <module>
> sys.exit(main())
> File
> "/local/mailman/venv/lib/python3.10/site-packages/mailman_web/manage.py",
> line 90, in main
> execute_from_command_line(sys.argv)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/core/management/__init__.py",
> line 446, in execute_from_command_line
> utility.execute()
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/core/management/__init__.py",
> line 440, in execute
> self.fetch_command(subcommand).run_from_argv(self.argv)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/core/management/base.py",
> line 402, in run_from_argv
> self.execute(*args, **cmd_options)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django/core/management/base.py",
> line 448, in execute
> output = self.handle(*args, **options)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django_q/management/commands/qcluster.py",
> line 22, in handle
> q.start()
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
> line 78, in start
> self.sentinel.start()
> File "/usr/lib/python3.10/multiprocessing/process.py", line 121, in start
> self._popen = self._Popen(self)
> File "/usr/lib/python3.10/multiprocessing/context.py", line 224, in
> _Popen
> return _default_context.get_context().Process._Popen(process_obj)
> File "/usr/lib/python3.10/multiprocessing/context.py", line 281, in
> _Popen
> return Popen(process_obj)
> File "/usr/lib/python3.10/multiprocessing/popen_fork.py", line 19, in
> __init__
> self._launch(process_obj)
> File "/usr/lib/python3.10/multiprocessing/popen_fork.py", line 71, in
> _launch
> code = process_obj._bootstrap(parent_sentinel=child_r)
> File "/usr/lib/python3.10/multiprocessing/process.py", line 314, in
> _bootstrap
> self.run()
> File "/usr/lib/python3.10/multiprocessing/process.py", line 108, in run
> self._target(*self._args, **self._kwargs)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
> line 168, in __init__
> self.start()
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
> line 172, in start
> self.spawn_cluster()
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
> line 248, in spawn_cluster
> self.pusher = self.spawn_pusher()
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
> line 201, in spawn_pusher
> return self.spawn_process(pusher, self.task_queue, self.event_out,
> self.broker)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
> line 197, in spawn_process
> p.start()
> File "/usr/lib/python3.10/multiprocessing/process.py", line 121, in start
> self._popen = self._Popen(self)
> File "/usr/lib/python3.10/multiprocessing/context.py", line 224, in
> _Popen
> return _default_context.get_context().Process._Popen(process_obj)
> File "/usr/lib/python3.10/multiprocessing/context.py", line 281, in
> _Popen
> return Popen(process_obj)
> File "/usr/lib/python3.10/multiprocessing/popen_fork.py", line 19, in
> __init__
> self._launch(process_obj)
> File "/usr/lib/python3.10/multiprocessing/popen_fork.py", line 71, in
> _launch
> code = process_obj._bootstrap(parent_sentinel=child_r)
> File "/usr/lib/python3.10/multiprocessing/process.py", line 314, in
> _bootstrap
> self.run()
> File "/usr/lib/python3.10/multiprocessing/process.py", line 108, in run
> self._target(*self._args, **self._kwargs)
> File
> "/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
> line 358, in pusher
> logger.error(e, traceback.format_exc())
> Message: BadSignature('Signature "48do9gGvueBxakX_a4uNmSwD7cs" does not
> match')
> Arguments: ('Traceback (most recent call last):\n File
> "/local/mailman/venv/lib/python3.10/site-packages/django_q/cluster.py",
> line 356, in pusher\n task = SignedPackage.loads(task[1])\n File
> "/local/mailman/venv/lib/python3.10/sit
> e-packages/django_q/signing.py", line 25, in loads\n return
> signing.loads(\n File
> "/local/mailman/venv/lib/python3.10/site-packages/django_q/core_signing.py",
> line 35, in loads\n base64d = force_bytes(TimestampSigner(key, salt=sa
> lt).unsign(s, max_age=max_age))\n File
> "/local/mailman/venv/lib/python3.10/site-packages/django_q/core_signing.py",
> line 70, in unsign\n result = super(TimestampSigner,
> self).unsign(value)\n File "/local/mailman/venv/lib/python3.10
> /site-packages/django_q/core_signing.py", line 55, in unsign\n raise
> BadSignature(\'Signature "%s" does not match\' %
> sig)\ndjango.core.signing.BadSignature: Signature
> "48do9gGvueBxakX_a4uNmSwD7cs" does not match\n',)
>
> I'm using uwsgi via apache:
>
> (venv) mailman@new-mailman3 ~ (v3.1.1)> more
> /etc/apache2/conf-enabled/mailman3.conf
> Alias /mailman3/favicon.ico /local/mailman/web/static/favicon.ico
> Alias /mailman/favicon.ico /local/mailman/web/static/favicon.ico
> Alias /favicon.ico /local/mailman/web/static/favicon.ico
> Alias /mailman3/static /local/mailman/web/static
> Alias /mailman/static /local/mailman/web/static
> Alias /static /local/mailman/web/static
>
> <Directory "/local/mailman/web/static">
> Require all granted
> </Directory>
>
> <IfModule mod_proxy_uwsgi.c>
> ProxyPass /mailman3/favicon.ico !
> ProxyPass /mailman/favicon.ico !
> ProxyPass /favicon.ico !
> ProxyPass /mailman3/static !
> ProxyPass /mailman/static !
> ProxyPass /static !
> ProxyPass /mailman3
> unix:/local/mailman/var/uwsgi.sock|uwsgi://localhost/
> ProxyPass /mailman
> unix:/local/mailman/var/uwsgi.sock|uwsgi://localhost/
> #ProxyPass /mailman3 http://localhost:8000/ timeout=180
> #ProxyPass /mailman http://localhost:8000/ timeout=180
> #ProxyPass / http://localhost:8000/ timeout=180
> </IfModule>
>
> Best Regards,
> Helio Loureiro
> https://helio.loureiro.eng.br
> https://github.com/helioloureiro
> https://mastodon.social/@helioloureiro
>
>
> On Fri, 16 Feb 2024 at 22:39, Mark Sapiro <mark(a)msapiro.net> wrote:
>
>> On 2/16/24 07:12, Helio Loureiro wrote:
>>
>> > - start mailman3 and mailman-3web
>> > - run mailman3-web migrate
>>
>> You should run mailman3-web migrate when mailman-3web is not running.
>>
>> > django.db.utils.OperationalError: (1050, "Table
>> > 'hyperkitty_mailinglist_moderators' already exists")
>> >
>> > I tried to drop the table, but then it complained about another one. I
>> > dropped all the complained tables and as result hypperkitty never
>> > started. So I went back to see why the first error happened.
>>
>> The errors occurred because you had recently added tables in your
>> database so they couldn't be added by the migrations. Dropping the
>> tables was the correct thing to do.
>>
>> Did you ultimately successfully run all the migrations?
>>
>> When you say `hypperkitty never started`, what exactly does that mean?
>> What happens when you try to access the archives? Can you access
>> postorius? Are any errors logged in mailman3-web's log?
>>
>> --
>> Mark Sapiro <mark(a)msapiro.net> The highway is for gamblers,
>> San Francisco Bay Area, California better use your sense - B. Dylan
>>
>> _______________________________________________
>> Mailman-users mailing list -- mailman-users(a)mailman3.org
>> To unsubscribe send an email to mailman-users-leave(a)mailman3.org
>> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/
>> Archived at:
>> https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/message…
>>
>> This message sent to helio(a)loureiro.eng.br
>>
>
1 year, 2 months

[MM3-users] Re: Hacking attempts?
by Lists
Hi Tim,
Yes, we use fail2ban already. I just wanted to check that this is actually being caused solely by the would be hackers and the “error” isn’t indicative of something we’ve configured wrong within MM3?
Also, this error doesn’t appear in the MM or Apache logs, it just gets emailed, so I am going to have to figure out how to turn on the appropriate logging in order to get fail2ban to monitor it. Any pointers in this regard would be gratefully received.
Thanks,
Chris
> On 14 Jul 2022, at 13:09, Tim Cutts <tim(a)thecutts.org> wrote:
>
> You could use an application like fail2ban to watch your mailman/web logs and automatically firewall off attacking IP addresses which cause a lot of these errors in a defined window of time. This application is independent from mailman, and you can use it to protect against all kinds of brute force attacks. Ssh, web, mail - anything that creates a log file recording errors from remote IP addresses.
>
> Just be careful when configuring it for remote servers so you don’t saw off the branch you’re sitting on…. I run a mail server for my family, and on one occasion a family member repeatedly got her password wrong which caused fail2ban to lock all of us out because it blocked our home NAT address, and I had to use my mobile phone to unblock us. :-)
>
> Tim
>
>> On 14 Jul 2022, at 08:29, Lists via Mailman-users <mailman-users(a)mailman3.org <mailto:mailman-users@mailman3.org>> wrote:
>>
>> Hi,
>>
>> We are seeing thousands of these emails every day, looks like someone is trying to hack our Mailman3 but would appreciate someone with more knowledge of MM3 to confirm.
>>
>> Is this a problem with our setup? i.e. the “Internal Server Error” bit, or are the hackers just sending bad data that is causing the error? also how do we stop/block this?
>>
>> TIA and here is a typical email:
>>
>>
>> Subject: [Django] ERROR (EXTERNAL IP): Internal Server Error: /mailman3/accounts/fedora/login/
>>
>> Internal Server Error: /mailman3/accounts/fedora/login/
>>
>> TypeError at /accounts/fedora/login/
>> _openid_consumer() missing 2 required positional arguments: 'provider' and 'endpoint'
>>
>> Request Method: GET
>> Request URL: https://mailman.ardc.net/mailman3/accounts/fedora/login/?process=login&next… <https://mailman.ardc.net/mailman3/accounts/fedora/login/?process=login&next…><https://mailman.ardc.net/mailman3/accounts/fedora/login/?process=login&next… <https://mailman.ardc.net/mailman3/accounts/fedora/login/?process=login&next…>>
>> Django Version: 2.2.26
>> Python Executable: /usr/bin/uwsgi-core
>> Python Version: 3.9.2
>> Python Path: ['.', '', '/usr/lib/python39.zip', '/usr/lib/python3.9', '/usr/lib/python3.9/lib-dynload', '/usr/local/lib/python3.9/dist-packages', '/usr/lib/python3/dist-packages', '/usr/lib/python3.9/dist-packages']
>> Server time: Thu, 14 Jul 2022 02:34:04 -0400
>> Installed Applications:
>> ('hyperkitty',
>> 'postorius',
>> 'django_mailman3',
>> 'django.contrib.admin',
>> 'django.contrib.auth',
>> 'django.contrib.contenttypes',
>> 'django.contrib.sessions',
>> 'django.contrib.sites',
>> 'django.contrib.messages',
>> 'django.contrib.staticfiles',
>> 'rest_framework',
>> 'django_gravatar',
>> 'compressor',
>> 'haystack',
>> 'django_extensions',
>> 'django_q',
>> 'allauth',
>> 'allauth.account',
>> 'allauth.socialaccount',
>> 'django_mailman3.lib.auth.fedora')
>> Installed Middleware:
>> ('django.contrib.sessions.middleware.SessionMiddleware',
>> 'django.middleware.common.CommonMiddleware',
>> 'django.middleware.csrf.CsrfViewMiddleware',
>> 'django.middleware.locale.LocaleMiddleware',
>> 'django.contrib.auth.middleware.AuthenticationMiddleware',
>> 'django.contrib.messages.middleware.MessageMiddleware',
>> 'django.middleware.clickjacking.XFrameOptionsMiddleware',
>> 'django.middleware.security.SecurityMiddleware',
>> 'django_mailman3.middleware.TimezoneMiddleware',
>> 'postorius.middleware.PostoriusMiddleware')
>>
>>
>> Traceback:
>>
>> File "/usr/lib/python3/dist-packages/django/core/handlers/exception.py" in inner
>> 34. response = get_response(request)
>>
>> File "/usr/lib/python3/dist-packages/django/core/handlers/base.py" in _get_response
>> 115. response = self.process_exception_by_middleware(e, request)
>>
>> File "/usr/lib/python3/dist-packages/django/core/handlers/base.py" in _get_response
>> 113. response = wrapped_callback(request, *callback_args, **callback_kwargs)
>>
>> File "/usr/lib/python3/dist-packages/django/views/generic/base.py" in view
>> 71. return self.dispatch(request, *args, **kwargs)
>>
>> File "/usr/lib/python3/dist-packages/django/views/generic/base.py" in dispatch
>> 97. return handler(request, *args, **kwargs)
>>
>> File "/usr/lib/python3/dist-packages/django_mailman3/lib/auth/fedora/views.py" in get
>> 56. return self.post(request, *args, **kwargs)
>>
>> File "/usr/lib/python3/dist-packages/django_mailman3/lib/auth/fedora/views.py" in post
>> 67. client = _openid_consumer(request)
>>
>> Exception Type: TypeError at /accounts/fedora/login/
>> Exception Value: _openid_consumer() missing 2 required positional arguments: 'provider' and 'endpoint'
>> Request information:
>> USER: AnonymousUser
>>
>> GET:
>> process = 'login'
>> next = '/mailman3/hyperkitty/list/44net(a)mailman.ampr.org <mailto:mailman3/hyperkitty/list/44net@mailman.ampr.org><mailto:mailman3/hyperkitty/list/44net@mailman.ampr.org <mailto:mailman3/hyperkitty/list/44net@mailman.ampr.org>>/message/O5Z2YZBJZXFPH2ACAORN6BST7B2S3M3P/'
>>
>> POST: No POST data
>>
>> FILES: No FILES data
>>
>> COOKIES: No cookie data
>>
>> META:
>> CONTEXT_DOCUMENT_ROOT = '/var/www/html'
>> CONTEXT_PREFIX = ''
>> DOCUMENT_ROOT = '/var/www/html'
>> GATEWAY_INTERFACE = 'CGI/1.1'
>> HTTPS = 'on'
>> HTTP_ACCEPT = 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
>> HTTP_ACCEPT_ENCODING = 'gzip,deflate'
>> HTTP_CONNECTION = 'Keep-Alive'
>> HTTP_HOST = 'mailman.ardc.net <http://mailman.ardc.net/> <http://mailman.ardc.net/ <http://mailman.ardc.net/>>'
>> HTTP_USER_AGENT = 'Mozilla/5.0 (compatible; BLEXBot/1.0; +http://webmeup-crawler.com/ <http://webmeup-crawler.com/> <http://webmeup-crawler.com/ <http://webmeup-crawler.com/>>)'
>> PATH = '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
>> PATH_INFO = '/accounts/fedora/login/'
>> QUERY_STRING = 'process=login&next=/mailman3/hyperkitty/list/44net(a)mailman.ampr.org <mailto:process=login&next=/mailman3/hyperkitty/list/44net@mailman.ampr.org><mailto:process=login&next=/mailman3/hyperkitty/list/44net@mailman.ampr.org <mailto:process=login&next=/mailman3/hyperkitty/list/44net@mailman.ampr.org>>/message/O5Z2YZBJZXFPH2ACAORN6BST7B2S3M3P/'
>> REMOTE_ADDR = '157.90.177.212'
>> REMOTE_PORT = '63384'
>> REQUEST_METHOD = 'GET'
>> REQUEST_SCHEME = 'https'
>> REQUEST_URI = '/mailman3/accounts/fedora/login/?process=login&next=/mailman3/hyperkitty/list/44net(a)mailman.ampr.org <mailto:mailman3/accounts/fedora/login/?process=login&next=/mailman3/hyperkitty/list/44net@mailman.ampr.org><mailto:mailman3/accounts/fedora/login/?process=login&next=/mailman3/hyperkitty/list/44net@mailman.ampr.org <mailto:mailman3/accounts/fedora/login/?process=login&next=/mailman3/hyperkitty/list/44net@mailman.ampr.org>>/message/O5Z2YZBJZXFPH2ACAORN6BST7B2S3M3P/'
>> SCRIPT_FILENAME = 'proxy:uwsgi://localhost//accounts/fedora/login/' <uwsgi://localhost//accounts/fedora/login/'><uwsgi://localhost//accounts/fedora/login/' <uwsgi://localhost//accounts/fedora/login/'>>
>> SCRIPT_NAME = '/mailman3'
>> SERVER_ADDR = '44.1.1.29'
>> SERVER_ADMIN = 'postmaster(a)ardc.net <mailto:postmaster@ardc.net> <mailto:postmaster@ardc.net <mailto:postmaster@ardc.net>>'
>> SERVER_NAME = 'mailman.ardc.net <http://mailman.ardc.net/> <http://mailman.ardc.net/ <http://mailman.ardc.net/>>'
>> SERVER_PORT = '443'
>> SERVER_PROTOCOL = 'HTTP/1.1'
>> SERVER_SIGNATURE = '<address>Apache/2.4.53 (Debian) Server at mailman.ardc.net <http://mailman.ardc.net/><http://mailman.ardc.net/ <http://mailman.ardc.net/>> Port 443</address>\n'
>> SERVER_SOFTWARE = 'Apache/2.4.53 (Debian)'
>> SSL_TLS_SNI = 'mailman.ardc.net <http://mailman.ardc.net/> <http://mailman.ardc.net/ <http://mailman.ardc.net/>>'
>> uwsgi.core = 1
>> uwsgi.node = b'mailman'
>> uwsgi.version = b'2.0.19.1-debian'
>> wsgi.errors = <_io.TextIOWrapper name=2 mode='w' encoding='UTF-8'>
>> wsgi.file_wrapper = ''
>> wsgi.input = <uwsgi._Input object at 0x7f8e0b4a0410>
>> wsgi.multiprocess = False
>> wsgi.multithread = True
>> wsgi.run_once = False
>> wsgi.url_scheme = 'https'
>> wsgi.version = '(1, 0)'
>>
>> Settings:
>> Using settings module settings
>> ABSOLUTE_URL_OVERRIDES = {}
>> ACCOUNT_AUTHENTICATION_METHOD = 'username_email'
>> ACCOUNT_DEFAULT_HTTP_PROTOCOL = 'https'
>> ACCOUNT_EMAIL_REQUIRED = True
>> ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
>> ACCOUNT_UNIQUE_EMAIL = True
>> ADMINS = "(('Mailman Suite Admin', 'postmaster(a)ardc.net <mailto:postmaster@ardc.net><mailto:postmaster@ardc.net <mailto:postmaster@ardc.net>>'),)"
>> ALLOWED_HOSTS = ['*']
>> APPEND_SLASH = True
>> AUTHENTICATION_BACKENDS = "('django.contrib.auth.backends.ModelBackend', 'allauth.account.auth_backends.AuthenticationBackend')"
>> AUTH_PASSWORD_VALIDATORS = '********************'
>> AUTH_USER_MODEL = 'auth.User'
>> BASE_DIR = '/usr/share/mailman3-web'
>> CACHES = {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}}
>> CACHE_MIDDLEWARE_ALIAS = 'default'
>> CACHE_MIDDLEWARE_KEY_PREFIX = '********************'
>> CACHE_MIDDLEWARE_SECONDS = 600
>> COMPRESSORS = {'css': 'compressor.css.CssCompressor', 'js': 'compressor.js.JsCompressor'}
>> COMPRESS_CACHEABLE_PRECOMPILERS = '()'
>> COMPRESS_CACHE_BACKEND = 'default'
>> COMPRESS_CACHE_KEY_FUNCTION = '********************'
>> COMPRESS_CLEAN_CSS_ARGUMENTS = ''
>> COMPRESS_CLEAN_CSS_BINARY = 'cleancss'
>> COMPRESS_CLOSURE_COMPILER_ARGUMENTS = ''
>> COMPRESS_CLOSURE_COMPILER_BINARY = 'java -jar compiler.jar'
>> COMPRESS_CSS_HASHING_METHOD = 'mtime'
>> COMPRESS_DATA_URI_MAX_SIZE = 1024
>> COMPRESS_DEBUG_TOGGLE = None
>> COMPRESS_ENABLED = True
>> COMPRESS_FILTERS = {'css': ['compressor.filters.css_default.CssAbsoluteFilter'], 'js': ['compressor.filters.jsmin.JSMinFilter']}
>> COMPRESS_JINJA2_GET_ENVIRONMENT = <function CompressorConf.JINJA2_GET_ENVIRONMENT at 0x7f8e17d7a670>
>> COMPRESS_MINT_DELAY = 30
>> COMPRESS_MTIME_DELAY = 10
>> COMPRESS_OFFLINE = True
>> COMPRESS_OFFLINE_CONTEXT = {'STATIC_URL': '/mailman3/static/'}
>> COMPRESS_OFFLINE_MANIFEST = 'manifest.json'
>> COMPRESS_OFFLINE_TIMEOUT = 31536000
>> COMPRESS_OUTPUT_DIR = 'CACHE'
>> COMPRESS_PARSER = 'compressor.parser.AutoSelectParser'
>> COMPRESS_PRECOMPILERS = '()'
>> COMPRESS_REBUILD_TIMEOUT = 2592000
>> COMPRESS_ROOT = '/var/lib/mailman3/web/static'
>> COMPRESS_STORAGE = 'compressor.storage.CompressorFileStorage'
>> COMPRESS_TEMPLATE_FILTER_CONTEXT = {'STATIC_URL': '/mailman3/static/'}
>> COMPRESS_URL = '/mailman3/static/'
>> COMPRESS_URL_PLACEHOLDER = '/__compressor_url_placeholder__/'
>> COMPRESS_VERBOSE = False
>> COMPRESS_YUGLIFY_BINARY = 'yuglify'
>> COMPRESS_YUGLIFY_CSS_ARGUMENTS = '--terminal'
>> COMPRESS_YUGLIFY_JS_ARGUMENTS = '--terminal'
>> COMPRESS_YUI_BINARY = 'java -jar yuicompressor.jar'
>> COMPRESS_YUI_CSS_ARGUMENTS = ''
>> COMPRESS_YUI_JS_ARGUMENTS = ''
>> CSRF_COOKIE_AGE = 31449600
>> CSRF_COOKIE_DOMAIN = None
>> CSRF_COOKIE_HTTPONLY = False
>> CSRF_COOKIE_NAME = 'csrftoken'
>> CSRF_COOKIE_PATH = '/'
>> CSRF_COOKIE_SAMESITE = 'Lax'
>> CSRF_COOKIE_SECURE = False
>> CSRF_FAILURE_VIEW = 'django.views.csrf.csrf_failure'
>> CSRF_HEADER_NAME = 'HTTP_X_CSRFTOKEN'
>> CSRF_TRUSTED_ORIGINS = []
>> CSRF_USE_SESSIONS = False
>> DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql', 'NAME': 'mailman', 'USER': 'mailman', 'PASSWORD': '********************', 'HOST': ‘X.X.X.X', 'PORT': '', 'OPTIONS': {'init_command': "SET sql_mode='STRICT_TRANS_TABLES'", 'charset': 'utf8mb4'}, 'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0, 'TIME_ZONE': None, 'TEST': {'CHARSET': None, 'COLLATION': None, 'NAME': None, 'MIRROR': None}}}
>> DATABASE_ROUTERS = []
>> DATA_UPLOAD_MAX_MEMORY_SIZE = 2621440
>> DATA_UPLOAD_MAX_NUMBER_FIELDS = 1000
>> DATETIME_FORMAT = 'N j, Y, P'
>> DATETIME_INPUT_FORMATS = ['%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f', '%Y-%m-%d %H:%M', '%Y-%m-%d', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%Y', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M', '%m/%d/%y']
>> DATE_FORMAT = 'N j, Y'
>> DATE_INPUT_FORMATS = ['%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', '%b %d %Y', '%b %d, %Y', '%d %b %Y', '%d %b, %Y', '%B %d %Y', '%B %d, %Y', '%d %B %Y', '%d %B, %Y']
>> DEBUG = False
>> DEBUG_PROPAGATE_EXCEPTIONS = False
>> DECIMAL_SEPARATOR = '.'
>> DEFAULT_CHARSET = 'utf-8'
>> DEFAULT_CONTENT_TYPE = 'text/html'
>> DEFAULT_EXCEPTION_REPORTER_FILTER = 'django.views.debug.SafeExceptionReporterFilter'
>> DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
>> DEFAULT_FROM_EMAIL = 'postorius(a)mailman.ardc.net <mailto:postorius@mailman.ardc.net><mailto:postorius@mailman.ardc.net <mailto:postorius@mailman.ardc.net>>'
>> DEFAULT_INDEX_TABLESPACE = ''
>> DEFAULT_TABLESPACE = ''
>> DISALLOWED_USER_AGENTS = []
>> EMAILNAME = 'mailman.ardc.net <http://mailman.ardc.net/> <http://mailman.ardc.net/ <http://mailman.ardc.net/>>'
>> EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
>> EMAIL_HOST = 'localhost'
>> EMAIL_HOST_PASSWORD = '********************'
>> EMAIL_HOST_USER = ''
>> EMAIL_PORT = 25
>> EMAIL_SSL_CERTFILE = None
>> EMAIL_SSL_KEYFILE = '********************'
>> EMAIL_SUBJECT_PREFIX = '[Django] '
>> EMAIL_TIMEOUT = None
>> EMAIL_USE_LOCALTIME = False
>> EMAIL_USE_SSL = False
>> EMAIL_USE_TLS = False
>> FILE_CHARSET = 'utf-8'
>> FILE_UPLOAD_DIRECTORY_PERMISSIONS = None
>> FILE_UPLOAD_HANDLERS = ['django.core.files.uploadhandler.MemoryFileUploadHandler', 'django.core.files.uploadhandler.TemporaryFileUploadHandler']
>> FILE_UPLOAD_MAX_MEMORY_SIZE = 2621440
>> FILE_UPLOAD_PERMISSIONS = None
>> FILE_UPLOAD_TEMP_DIR = None
>> FILTER_VHOST = False
>> FIRST_DAY_OF_WEEK = 0
>> FIXTURE_DIRS = []
>> FORCE_SCRIPT_NAME = None
>> FORMAT_MODULE_PATH = None
>> FORM_RENDERER = 'django.forms.renderers.DjangoTemplates'
>> HAYSTACK_CONNECTIONS = {'default': {'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine', 'PATH': '/var/lib/mailman3/web/fulltext_index'}}
>> HOSTNAME = 'localhost.local'
>> IGNORABLE_404_URLS = []
>> INSTALLED_APPS = "('hyperkitty', 'postorius', 'django_mailman3', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'django_gravatar', 'compressor', 'haystack', 'django_extensions', 'django_q', 'allauth', 'allauth.account', 'allauth.socialaccount', 'django_mailman3.lib.auth.fedora')"
>> INTERNAL_IPS = []
>> LANGUAGES = [('af', 'Afrikaans'), ('ar', 'Arabic'), ('ast', 'Asturian'), ('az', 'Azerbaijani'), ('bg', 'Bulgarian'), ('be', 'Belarusian'), ('bn', 'Bengali'), ('br', 'Breton'), ('bs', 'Bosnian'), ('ca', 'Catalan'), ('cs', 'Czech'), ('cy', 'Welsh'), ('da', 'Danish'), ('de', 'German'), ('dsb', 'Lower Sorbian'), ('el', 'Greek'), ('en', 'English'), ('en-au', 'Australian English'), ('en-gb', 'British English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('es-ar', 'Argentinian Spanish'), ('es-co', 'Colombian Spanish'), ('es-mx', 'Mexican Spanish'), ('es-ni', 'Nicaraguan Spanish'), ('es-ve', 'Venezuelan Spanish'), ('et', 'Estonian'), ('eu', 'Basque'), ('fa', 'Persian'), ('fi', 'Finnish'), ('fr', 'French'), ('fy', 'Frisian'), ('ga', 'Irish'), ('gd', 'Scottish Gaelic'), ('gl', 'Galician'), ('he', 'Hebrew'), ('hi', 'Hindi'), ('hr', 'Croatian'), ('hsb', 'Upper Sorbian'), ('hu', 'Hungarian'), ('hy', 'Armenian'), ('ia', 'Interlingua'), ('id', 'Indonesian'), ('io', 'Ido'), ('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka', 'Georgian'), ('kab', 'Kabyle'), ('kk', 'Kazakh'), ('km', 'Khmer'), ('kn', 'Kannada'), ('ko', 'Korean'), ('lb', 'Luxembourgish'), ('lt', 'Lithuanian'), ('lv', 'Latvian'), ('mk', 'Macedonian'), ('ml', 'Malayalam'), ('mn', 'Mongolian'), ('mr', 'Marathi'), ('my', 'Burmese'), ('nb', 'Norwegian Bokmål'), ('ne', 'Nepali'), ('nl', 'Dutch'), ('nn', 'Norwegian Nynorsk'), ('os', 'Ossetic'), ('pa', 'Punjabi'), ('pl', 'Polish'), ('pt', 'Portuguese'), ('pt-br', 'Brazilian Portuguese'), ('ro', 'Romanian'), ('ru', 'Russian'), ('sk', 'Slovak'), ('sl', 'Slovenian'), ('sq', 'Albanian'), ('sr', 'Serbian'), ('sr-latn', 'Serbian Latin'), ('sv', 'Swedish'), ('sw', 'Swahili'), ('ta', 'Tamil'), ('te', 'Telugu'), ('th', 'Thai'), ('tr', 'Turkish'), ('tt', 'Tatar'), ('udm', 'Udmurt'), ('uk', 'Ukrainian'), ('ur', 'Urdu'), ('vi', 'Vietnamese'), ('zh-hans', 'Simplified Chinese'), ('zh-hant', 'Traditional Chinese')]
>> LANGUAGES_BIDI = ['he', 'ar', 'fa', 'ur']
>> LANGUAGE_CODE = 'en-us'
>> LANGUAGE_COOKIE_AGE = None
>> LANGUAGE_COOKIE_DOMAIN = None
>> LANGUAGE_COOKIE_NAME = 'django_language'
>> LANGUAGE_COOKIE_PATH = '/'
>> LOCALE_PATHS = []
>> LOGGING = {'version': 1, 'disable_existing_loggers': False, 'filters': {'require_debug_false': {'()': 'django.utils.log.RequireDebugFalse'}}, 'handlers': {'mail_admins': {'level': 'ERROR', 'filters': ['require_debug_false'], 'class': 'django.utils.log.AdminEmailHandler'}, 'file': {'level': 'INFO', 'class': 'logging.handlers.RotatingFileHandler', 'filename': '/var/log/mailman3/web/mailman-web.log', 'formatter': 'verbose'}, 'console': {'class': 'logging.StreamHandler', 'formatter': 'simple'}}, 'loggers': {'django.request': {'handlers': ['mail_admins', 'file'], 'level': 'INFO', 'propagate': True}, 'django': {'handlers': ['file'], 'level': 'INFO', 'propagate': True}, 'hyperkitty': {'handlers': ['file'], 'level': 'INFO', 'propagate': True}, 'postorius': {'handlers': ['file'], 'level': 'INFO', 'propagate': True}}, 'formatters': {'verbose': {'format': '%(levelname)s %(asctime)s %(process)d %(name)s %(message)s'}, 'simple': {'format': '%(levelname)s %(message)s'}}}
>> LOGGING_CONFIG = 'logging.config.dictConfig'
>> LOGIN_REDIRECT_URL = 'list_index'
>> LOGIN_URL = 'account_login'
>> LOGOUT_REDIRECT_URL = None
>> LOGOUT_URL = 'account_logout'
>> MAILMAN_ARCHIVER_FROM = "('127.0.0.1', '::1', '10.4.16.129', '44.1.1.29')"
>> MAILMAN_ARCHIVER_KEY = '********************'
>> MAILMAN_REST_API_PASS = '********************'
>> MAILMAN_REST_API_URL = '********************'
>> MAILMAN_REST_API_USER = '********************'
>> MANAGERS = []
>> MEDIA_ROOT = ''
>> MEDIA_URL = ''
>> MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage'
>> MESSAGE_TAGS = {40: 'danger'}
>> MIDDLEWARE = "('django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.security.SecurityMiddleware', 'django_mailman3.middleware.TimezoneMiddleware', 'postorius.middleware.PostoriusMiddleware')"
>> MIGRATION_MODULES = {}
>> MONTH_DAY_FORMAT = 'F j'
>> NUMBER_GROUPING = 0
>> PASSWORD_HASHERS = '********************'
>> PASSWORD_RESET_TIMEOUT_DAYS = '********************'
>> POSTORIUS_TEMPLATE_BASE_URL = 'http://localhost/mailman3/ <http://localhost/mailman3/><http://localhost/mailman3/ <http://localhost/mailman3/>>'
>> PREPEND_WWW = False
>> Q_CLUSTER = {'timeout': 300, 'save_limit': 100, 'orm': 'default', 'poll': 5}
>> ROOT_URLCONF = 'urls'
>> SECRET_KEY = '********************'
>> SECURE_BROWSER_XSS_FILTER = False
>> SECURE_CONTENT_TYPE_NOSNIFF = False
>> SECURE_HSTS_INCLUDE_SUBDOMAINS = False
>> SECURE_HSTS_PRELOAD = False
>> SECURE_HSTS_SECONDS = 0
>> SECURE_PROXY_SSL_HEADER = None
>> SECURE_REDIRECT_EXEMPT = []
>> SECURE_SSL_HOST = None
>> SECURE_SSL_REDIRECT = False
>> SERVER_EMAIL = 'root(a)mailman.ardc.net <mailto:root@mailman.ardc.net> <mailto:root@mailman.ardc.net <mailto:root@mailman.ardc.net>>'
>> SESSION_CACHE_ALIAS = 'default'
>> SESSION_COOKIE_AGE = 1209600
>> SESSION_COOKIE_DOMAIN = None
>> SESSION_COOKIE_HTTPONLY = True
>> SESSION_COOKIE_NAME = 'sessionid'
>> SESSION_COOKIE_PATH = '/'
>> SESSION_COOKIE_SAMESITE = 'Lax'
>> SESSION_COOKIE_SECURE = False
>> SESSION_ENGINE = 'django.contrib.sessions.backends.db'
>> SESSION_EXPIRE_AT_BROWSER_CLOSE = False
>> SESSION_FILE_PATH = None
>> SESSION_SAVE_EVERY_REQUEST = False
>> SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer'
>> SETTINGS_MODULE = 'settings'
>> SHORT_DATETIME_FORMAT = 'm/d/Y P'
>> SHORT_DATE_FORMAT = 'm/d/Y'
>> SIGNING_BACKEND = 'django.core.signing.TimestampSigner'
>> SILENCED_SYSTEM_CHECKS = []
>> SITE_ID = 1
>> SOCIALACCOUNT_PROVIDERS = {}
>> STATICFILES_DIRS = '()'
>> STATICFILES_FINDERS = "('django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder', 'compressor.finders.CompressorFinder')"
>> STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage'
>> STATIC_ROOT = '/var/lib/mailman3/web/static'
>> STATIC_URL = '/mailman3/static/'
>> TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': {'context_processors': ['django.template.context_processors.debug', 'django.template.context_processors.i18n', 'django.template.context_processors.media', 'django.template.context_processors.static', 'django.template.context_processors.tz', 'django.template.context_processors.csrf', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', 'django_mailman3.context_processors.common', 'hyperkitty.context_processors.common', 'postorius.context_processors.postorius']}}]
>> TEST_NON_SERIALIZED_APPS = []
>> TEST_RUNNER = 'django.test.runner.DiscoverRunner'
>> THOUSAND_SEPARATOR = ','
>> TIME_FORMAT = 'P'
>> TIME_INPUT_FORMATS = ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']
>> TIME_ZONE = 'UTC'
>> USE_I18N = True
>> USE_L10N = True
>> USE_THOUSAND_SEPARATOR = False
>> USE_TZ = True
>> USE_X_FORWARDED_HOST = True
>> USE_X_FORWARDED_PORT = False
>> WSGI_APPLICATION = 'wsgi.application'
>> X_FRAME_OPTIONS = 'SAMEORIGIN'
>> YEAR_MONTH_FORMAT = 'F Y’
>>
>>
>>
>>
>> _______________________________________________
>> Mailman-users mailing list -- mailman-users(a)mailman3.org <mailto:mailman-users@mailman3.org>
>> To unsubscribe send an email to mailman-users-leave(a)mailman3.org <mailto:mailman-users-leave@mailman3.org>
>> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/ <https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/>
>
> _______________________________________________
> Mailman-users mailing list -- mailman-users(a)mailman3.org <mailto:mailman-users@mailman3.org>
> To unsubscribe send an email to mailman-users-leave(a)mailman3.org <mailto:mailman-users-leave@mailman3.org>
> https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/ <https://lists.mailman3.org/mailman3/lists/mailman-users.mailman3.org/>
2 years, 9 months