Hi Everyone,
I am pleased to announce new stable releases for:
- Postorius: 1.3.3
Changelog: https://docs.mailman3.org/projects/postorius/en/latest/news.html#id1
Download: https://pypi.org/project/postorius/1.3.3/
- Hyperkitty: 1.3.3
Changelog: https://hyperkitty.readthedocs.io/en/latest/news.html#id1
Download: https://pypi.org/project/HyperKitty/1.3.3rc1/
- Mailmanclient: 3.3.1
Changelog: https://docs.mailman3.org/projects/mailmanclient/en/latest/src/mailmanclien…
Download: https://pypi.org/project/mailmanclient/3.3.1/
- Django-mailman3: 1.3.3
Changelog: https://gitlab.com/mailman/django-mailman3/-/blob/master/README.rst
Download: https://pypi.org/project/django-mailman3/1.3.3
Python 3.6+ and Django 2.0+ is supported for all of them. Django 3.0 support for Hyperkitty requires manually upgrading a dependency (django-haystack>=3.0b2, once a stable version of this has been released, it shouldn't require manually upgrading).
There are tons of bug-fixes across the board and some new features.
Biggest visible change is switch to Bootstrap 4, which has been long pending for us. Bootstrap 4 completely changes the CSS grid model using the new Flexbox. There might be some small changes or breakages when using on mobile. Please report such issues to us via Gitlab!
Some other notable changes are in Postorius, which includes many more list settings exposed include content filtering settings, bounce processing (which was added in the previous release of Mailman Core) settings and some other ones. Settings page is also slightly different with all the sections on the vertical menu on left instead of horizontal tabs. You can now also specify a reason when rejecting held messages.
There was also a gnarly bug, which caused the name of some members to be the string "None". For the longest time, I couldn't figure out the reason for it, but it ended up being a simple fix in mailmanclient's json serialization of display_name, which would result in Python's None value being passed as string "None" to Mailman's API for subscription.
There is also better support for filtering visible lists based on the current vhost, which I see a few people are already waiting for from mailman-users list.
A full changelog has been added to each project in the top.
--
thanks,
Abhilash Raj (maxking)
Hi Team,
I am currently running Mailman 3 with version 3.3.1 and in
built postfix version 2.10.1-6 on RHEL 7.5 with PostgreSQL 11.7 version
with default values in production environment from the past 4 months
almost. As of now, we are having around 1327 lists created on this.
When I am trying to do some operations like creating the
lists, deleting the lists or accessing the lists through the GUI, I am
getting the below error. If I am trying to do the operations through API or
through mailman shell, still I am not able to connect to the API.
Something went wrong
Mailman REST API not available. Please start Mailman core.
But my mailman core was working fine in the background. At
the same time I was able to do other operations on a few other lists.
By the time I am getting the above error, the mailman.log
recorded the below messages.
*[2020-09-16 12:49:08 +0530] [2600] [CRITICAL] WORKER TIMEOUT (pid:20234)*
*[2020-09-16 12:49:08 +0530] [20234] [INFO] Worker exiting (pid: 20234)*
*[2020-09-16 12:49:09 +0530] [21042] [INFO] Booting worker with pid: 21042*
My mailman.cfg configuration is as below. The timeout value
is the default value. I did not set any customized value.
*(venv3) [root@lsmgr mailman]# grep -v ^#
/var/lib/mailman/mailman/var/etc/mailman.cfg*
*[archiver.hyperkitty]*
*class: mailman_hyperkitty.Archiver*
*enable: yes*
*configuration: /var/lib/mailman/mailman-hyperkitty/mailman-hyperkitty.cfg*
*[mta]*
*incoming: mailman.mta.postfix.LMTP*
*outgoing: mailman.mta.deliver.deliver*
*lmtp_host: 0.0.0.0*
*lmtp_port: 8024*
*smtp_host: localhost*
*smtp_port: 25*
*[webservice]*
*workers: 10*
*[database]*
*class: mailman.database.postgresql.PostgreSQLDatabase*
*url: postgres://<postgresdbuser>:<postgresdbpassword>@127.0.0.1/mailman
<http://127.0.0.1/mailman>*
Then as per the suggestion I got earlier I configured the
[webservice] section in the above file as below.
*[webservice]*
*configuration: /var/lib/mailman/mailman/var/etc/gunicorn.cfg*
* [root@lsmgr logs]# cat
/var/lib/mailman/mailman/var/etc/gunicorn.cfg*
*[gunicorn]*
*workers = 10*
*timeout = 90 *
After the above configuration, I found many errors like below in
mailman.log file:
*sqlalchemy.exc.NoSuchColumnError: "Could not locate column in row for
column 'pended.id <http://pended.id>'"*
*sqlalchemy.exc.ResourceClosedError: This result object does not return
rows. It has been closed automatically.*
*sqlalchemy.exc.DatabaseError: (psycopg2.DatabaseError) error with status
PGRES_TUPLES_OK and no message from the libpq*
The above might be few of the errors. FYI, for the creation of each list,
it is taking almost around 15 to 20 minutes. After multiple times of the
above error messages, at some time, I am fortunately getting the list
created or some other operation getting done.
I found the same scenario when the workers are from default 2
to 10. I don't understand where exactly I need to focus to solve the issue.
Please let me know if I have to share any other details for
you to suggest to me.
--
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>
Hi,
I created a new mailinglist and got during the test-process the following
errormessage in my mailman.log after:
...
Sep 19 22:55:08 2020 (1433) ACCEPT:
<000001d68ec7$2553e6e0$6ffbb4a0$(a)domain-01.de>
Errors:
Sep 19 22:55:09 2020 (1436) Cannot connect to SMTP server localhost on port
25
HTTPSConnectionPool(host='webmail.domain-02.de', port=443): Max retries
exceeded with url:
/mailman3/postorius/api/templates/list/mylist.lists.domain-03.de/list:member
:regular:footer (Caused by NewConnectionError('<urllib3.connec
tion.VerifiedHTTPSConnection object at 0x7fc8380f1748>: Failed to establish
a new connection: [Errno -2] Name or service not known'))
...
domain02.de isn't involved in mailman3 either as a user domain nor as a
list-domain.
After deleting the template
mailman3/postorius/api/templates/list/mylist.lists.domain-03.de/list:member:
regular:footer the mail to the list is processed without problems:
Sep 19 22:56:22 2020 (1436) <000001d68ec7$2553e6e0$6ffbb4a0$(a)domain-01.de>
smtp to mylist(a)list.domain-03.de for 1 recips, completed in
0.21389174461364746 seconds
Sep 19 22:56:22 2020 (1436) <000001d68ec7$2553e6e0$6ffbb4a0$(a)wbock.de> post
to mylist(a)list.domain-03.de from user(a)domain-01.de, 1331 bytes
Please help to solve this problem?
Thanks and regards
Wolfgang
Hi,
after creating a new list I got the following errormessage:
mailman aliases -> postmap: warning: /var/lib/mailman3/data/postfix_vmap,
line 17: expected format: key whitespace value
/var/lib/mailman3/data/postfix_vmap
# AUTOMATICALLY GENERATED BY MAILMAN ON 2020-09-19 07:44:34
....
xxxxxxxxxxx(a)lists.xxxxxxxxxxxxxxxx.de
xxxxxxxxxxx(a)xxxxxxxxxxxxx.de
xxxxxxxxxxx-bounces(a)lists.xxxxxxxxxxxxxxxx.de
xxxxxxxxxxx-bounces(a)xxxxxxxxxxxxx.de
xxxxxxxxxxx-confirm(a)lists.xxxxxxxxxxxxxxxx.de
xxxxxxxxxxx-confirm(a)xxxxxxxxxxxxx.de
xxxxxxxxxxx-join(a)lists.xxxxxxxxxxxxxxxx.de
xxxxxxxxxxx-join(a)xxxxxxxxxxxxx.de
xxxxxxxxxxx-leave(a)lists.xxxxxxxxxxxxxxxx.de
xxxxxxxxxxx-leave(a)xxxxxxxxxxxxx.de
xxxxxxxxxxx-owner(a)lists.xxxxxxxxxxxxxxxx.de
xxxxxxxxxxx-owner(a)xxxxxxxxxxxxx.de
xxxxxxxxxxx-request(a)lists.xxxxxxxxxxxxxxxx.de
xxxxxxxxxxx-request(a)xxxxxxxxxxxxx.de
xxxxxxxxxxx-subscribe(a)lists.xxxxxxxxxxxxxxxx.de
xxxxxxxxxxx-subscribe(a)xxxxxxxxxxxxx.de
xxxxxxxxxxx-unsubscribe@lists.xxxxxxxxxxxxxxxx.dexxxxxxxxxxx-unsubscribe@xxx
xxxxxxxxxx.de
The last line in the left part contains 48 chars.
I solved the problem by adding a whitespace in the last line and I made a
new postmap for postfix_vmap.
But it would be better to solve the problem by changing the genaliases
process in the next update.
Regards
Wolfgang
Hi Mark,
Thanks for the help with this! Other list members will also see the e-mail as coming from user(a)invalid.domain<mailto:user@invalid.domain>. I will continue testing the other scenarios and will reply back as soon as possible.
Thanks again for the help with this and have a nice day!
Peter
On Mon, Sep 21, 2020 at 9:00 PM Mark Sapiro <mark(a)msapiro.net> wrote:
On 9/21/20 10:49 AM, peterbw(a)gmail.com<mailto:peterbw@gmail.com> wrote:
> Hi,
>
> We've recently noticed an issue where users who are cc'd in a message where a mailing list is also within the cc list are getting rewritten a user(a)invalid.domain.
>
> This issue looks like it may be related to Outlook and how user names are displayed specifically. Here is an example:
>
> To: test_user(a)gmail.com<mailto:test_user@gmail.com>
> cc: listserv(a)lists.test.org<mailto:listserv@lists.test.org>; Williams, Peter;
>
> "Williams, Peter" maps to a user e-mail in the Outlook Global Address book. When the message is sent the list will send the message with the first name and last name separated, for example the message will appear:
>
> to: test_user(a)gmail.com<mailto:test_user@gmail.com>
> cc: listserv(a)lists.test.org<mailto:listserv@lists.test.org>, Williams(a)invalid.domain, Peter(a)invalid.domain
Because apparently Outlook is sending the message with the literal
> Cc: listserv(a)lists.test.org<mailto:listserv@lists.test.org>; Williams, Peter;
instead of something like
> Cc: listserv(a)lists.test.org<mailto:listserv@lists.test.org>, "Williams, Peter" <peters_real_address(a)example.com<mailto:peters_real_address@example.com>>
Then some MTA in the chain is seeing the unqualified addresses Williams
and Peter and appending its own local domain.
> This only seems to happen with users who are cc'd who are also members of the list that is being cc'd. For example in the scenario above my e-mail that is cc'd is also a member of listserv(a)lists.test.org<mailto:listserv@lists.test.org>.
In this case, where do you see this? i.e., do other list members see it
in the message they receive from the list?
I don't know why that would be. I'm certain that Mailman is not involved
in this and the Williams(a)invalid.domain and Peter(a)invalid.domain
addresses are in the Cc: as received by Mailman.
> This issue does not occur if the user e-mail address is listed before the mailing list in the cc field. So for example, if the cc in the scenario above contained Williams, Peter; listserv(a)lists.test.org<mailto:listserv@lists.test.org>; it would route properly.
Again, I think this is Outlook.
What's in the Cc: of the mail that test_user(a)gmail.com<mailto:test_user@gmail.com> receives directly?
What happens if you send mail in this way with
To: test_user(a)gmail.com<mailto:test_user@gmail.com>
cc: other_user(a)gmail.com<mailto:other_user@gmail.com>; Williams, Peter;
Again, what's in the Cc: of the mail that test_user(a)gmail.com<mailto:test_user@gmail.com> and
other_user(a)gmail.com<mailto:other_user@gmail.com> receive?
Also, please see <https://wiki.list.org/DOC/Mailman%20is%20not%20Listserv>.
--
Mark Sapiro <mark(a)msapiro.net<mailto:mark@msapiro.net>> The highway is for gamblers,
San Francisco Bay Area, California better use your sense - B. Dylan
_______________________________________________
Mailman-users mailing list -- mailman-users(a)mailman3.org<mailto:mailman-users@mailman3.org>
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/
Hi,
I set up the mailman3 services and lists, and we can send mail to the
list successfully. However in the Archive section I couldn't see
anything and all the lists were "inactive" and hence were hidden by default.
I confirmed that api_key set in the /etc/mailman3/mailman-hyperkitty.cfg
and /etc/mailman3/mailman-web.py is the same. I also confirmed that the
apache2 wsgi module has been loaded.
In the mailman.cfg database is set to mysql and in the mailman-web.py
database is set to sqlite3. Does it matter? I tried to search but
couldn't find any further information or discussion about this.
There is no systemd service for Hyperkitty. How can I check if
Hyperkitty is running or not?
Thanks, Franklin
I apologize, because I think this was talked about before, but I could not find it in the archives.
For one list, the REST API times out. Doesn’t seem to matter which page I try to go to. The uwsgi-error.log entry:
--- Logging error ---
Traceback (most recent call last):
File "/usr/lib/python3.8/site-packages/django/db/utils.py", line 96, in inner
return func(*args, **kwargs)
psycopg2.ProgrammingError: no results to fetch
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/lib/python3.8/site-packages/django_q/cluster.py", line 332, in pusher
task_set = broker.dequeue()
File "/usr/lib/python3.8/site-packages/django_q/brokers/orm.py", line 67, in dequeue
if tasks:
File "/usr/lib/python3.8/site-packages/django/db/models/query.py", line 278, in __bool__
self._fetch_all()
File "/usr/lib/python3.8/site-packages/django/db/models/query.py", line 1242, in _fetch_all
self._result_cache = list(self._iterable_class(self))
File "/usr/lib/python3.8/site-packages/django/db/models/query.py", line 55, in __iter__
results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)
File "/usr/lib/python3.8/site-packages/django/db/models/sql/compiler.py", line 1175, in execute_sql
return list(result)
File "/usr/lib/python3.8/site-packages/django/db/models/sql/compiler.py", line 1554, in cursor_iter
for rows in iter((lambda: cursor.fetchmany(itersize)), sentinel):
File "/usr/lib/python3.8/site-packages/django/db/models/sql/compiler.py", line 1554, in <lambda>
for rows in iter((lambda: cursor.fetchmany(itersize)), sentinel):
File "/usr/lib/python3.8/site-packages/django/db/utils.py", line 96, in inner
return func(*args, **kwargs)
File "/usr/lib/python3.8/site-packages/django/db/utils.py", line 89, in __exit__
raise dj_exc_value.with_traceback(traceback) from exc_value
File "/usr/lib/python3.8/site-packages/django/db/utils.py", line 96, in inner
return func(*args, **kwargs)
django.db.utils.ProgrammingError: no results to fetch
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.8/logging/__init__.py", line 1081, in emit
msg = self.format(record)
File "/usr/lib/python3.8/logging/__init__.py", line 925, in format
return fmt.format(record)
File "/usr/lib/python3.8/logging/__init__.py", line 664, in format
record.message = record.getMessage()
File "/usr/lib/python3.8/logging/__init__.py", line 369, in getMessage
msg = msg % self.args
TypeError: not all arguments converted during string formatting
Call stack:
File "./manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/usr/lib/python3.8/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
utility.execute()
File "/usr/lib/python3.8/site-packages/django/core/management/__init__.py", line 375, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/lib/python3.8/site-packages/django/core/management/base.py", line 323, in run_from_argv
self.execute(*args, **cmd_options)
File "/usr/lib/python3.8/site-packages/django/core/management/base.py", line 364, in execute
output = self.handle(*args, **options)
File "/usr/lib/python3.8/site-packages/django_q/management/commands/qcluster.py", line 22, in handle
q.start()
File "/usr/lib/python3.8/site-packages/django_q/cluster.py", line 67, in start
self.sentinel.start()
File "/usr/lib/python3.8/multiprocessing/process.py", line 121, in start
self._popen = self._Popen(self)
File "/usr/lib/python3.8/multiprocessing/context.py", line 224, in _Popen
return _default_context.get_context().Process._Popen(process_obj)
File "/usr/lib/python3.8/multiprocessing/context.py", line 277, in _Popen
return Popen(process_obj)
File "/usr/lib/python3.8/multiprocessing/popen_fork.py", line 19, in __init__
self._launch(process_obj)
File "/usr/lib/python3.8/multiprocessing/popen_fork.py", line 75, in _launch
code = process_obj._bootstrap(parent_sentinel=child_r)
File "/usr/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
self.run()
File "/usr/lib/python3.8/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "/usr/lib/python3.8/site-packages/django_q/cluster.py", line 157, in __init__
self.start()
File "/usr/lib/python3.8/site-packages/django_q/cluster.py", line 162, in start
self.guard()
File "/usr/lib/python3.8/site-packages/django_q/cluster.py", line 268, in guard
self.reincarnate(self.pusher)
File "/usr/lib/python3.8/site-packages/django_q/cluster.py", line 210, in reincarnate
self.pusher = self.spawn_pusher()
File "/usr/lib/python3.8/site-packages/django_q/cluster.py", line 190, in spawn_pusher
return self.spawn_process(pusher, self.task_queue, self.event_out, self.broker)
File "/usr/lib/python3.8/site-packages/django_q/cluster.py", line 186, in spawn_process
p.start()
File "/usr/lib/python3.8/multiprocessing/process.py", line 121, in start
self._popen = self._Popen(self)
File "/usr/lib/python3.8/multiprocessing/context.py", line 224, in _Popen
return _default_context.get_context().Process._Popen(process_obj)
File "/usr/lib/python3.8/multiprocessing/context.py", line 277, in _Popen
return Popen(process_obj)
File "/usr/lib/python3.8/multiprocessing/popen_fork.py", line 19, in __init__
self._launch(process_obj)
File "/usr/lib/python3.8/multiprocessing/popen_fork.py", line 75, in _launch
code = process_obj._bootstrap(parent_sentinel=child_r)
File "/usr/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap
self.run()
File "/usr/lib/python3.8/multiprocessing/process.py", line 108, in run
self._target(*self._args, **self._kwargs)
File "/usr/lib/python3.8/site-packages/django_q/cluster.py", line 334, in pusher
logger.error(e, traceback.format_exc())
Message: ProgrammingError('no results to fetch')
Arguments: ('Traceback (most recent call last):\n File "/usr/lib/python3.8/site-packages/django/db/utils.py", line 96, in inner\n return func(*args, **kwargs)\npsycopg2.ProgrammingError: no results to fetch\n
\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File "/usr/lib/python3.8/site-packages/django_q/cluster.py", line 332, in pusher\n task_set = bro
ker.dequeue()\n File "/usr/lib/python3.8/site-packages/django_q/brokers/orm.py", line 67, in dequeue\n if tasks:\n File "/usr/lib/python3.8/site-packages/django/db/models/query.py", line 278, in __bool__\n
self._fetch_all()\n File "/usr/lib/python3.8/site-packages/django/db/models/query.py", line 1242, in _fetch_all\n self._result_cache = list(self._iterable_class(self))\n File "/usr/lib/python3.8/site-packa
ges/django/db/models/query.py", line 55, in __iter__\n results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)\n File "/usr/lib/python3.8/site-packages/django/db/models/sq
l/compiler.py", line 1175, in execute_sql\n return list(result)\n File "/usr/lib/python3.8/site-packages/django/db/models/sql/compiler.py", line 1554, in cursor_iter\n for rows in iter((lambda: cursor.fetc
hmany(itersize)), sentinel):\n File "/usr/lib/python3.8/site-packages/django/db/models/sql/compiler.py", line 1554, in <lambda>\n for rows in iter((lambda: cursor.fetchmany(itersize)), sentinel):\n File "/us
r/lib/python3.8/site-packages/django/db/utils.py", line 96, in inner\n return func(*args, **kwargs)\n File "/usr/lib/python3.8/site-packages/django/db/utils.py", line 89, in __exit__\n raise dj_exc_value.w
ith_traceback(traceback) from exc_value\n File "/usr/lib/python3.8/site-packages/django/db/utils.py", line 96, in inner\n return func(*args, **kwargs)\ndjango.db.utils.ProgrammingError: no results to fetch\n'
,)
The other lists work fine.
Thank you,
Seth
Hi,
I am trying to find how I may change this. I have an attachment of 800 KB, and when I post it to the list, I do not get any response and nothing is hold. It looks like the message is just dropped.
Best regards
Mohsen Masoudfar
Lead System Analyst, IT Operation
American Association for the Advancement of Science
1200 New York Ave, NW, Washington, DC 20005
202-326-7087
Hi,
We want to create thousand of lists. We use a simple curl command
curl --user restadmin:restpass -X POST http://localhost:8001/3.1/lists -d fqdn_listname=nameOfTheList(a)example.com
After creating ~2k of them we started getting errors in Mailman logs:
```
[2020-09-16 17:11:10 +0200] [4564] [DEBUG] POST /3.1/lists
[2020-09-16 17:11:41 +0200] [1339] [CRITICAL] WORKER TIMEOUT (pid:4564)
[2020-09-16 17:11:41 +0200] [4564] [INFO] Worker exiting (pid: 4564)
[2020-09-16 17:11:41 +0200] [5019] [INFO] Booting worker with pid: 5019
```
Since then creation fails in most cases.
We increased timeout in mailman.cfg
```
[gunicorn]
workers: 4
timeout: 900
```
And we increased timeout in nginx
```
http {
# MODIF UNICORN
proxy_connect_timeout 300s;
proxy_read_timeout 300s;
# MODIF UNICORN
```
Where might be the problem? How to start investigating and fix it?
Thanks,
Paweł
Hi,
We've recently noticed an issue where users who are cc'd in a message where a mailing list is also within the cc list are getting rewritten a user(a)invalid.domain.
This issue looks like it may be related to Outlook and how user names are displayed specifically. Here is an example:
To: test_user(a)gmail.com
cc: listserv(a)lists.test.org; Williams, Peter;
"Williams, Peter" maps to a user e-mail in the Outlook Global Address book. When the message is sent the list will send the message with the first name and last name separated, for example the message will appear:
to: test_user(a)gmail.com
cc: listserv(a)lists.test.org, Williams(a)invalid.domain, Peter(a)invalid.domain
This only seems to happen with users who are cc'd who are also members of the list that is being cc'd. For example in the scenario above my e-mail that is cc'd is also a member of listserv(a)lists.test.org.
This issue does not occur if the user e-mail address is listed before the mailing list in the cc field. So for example, if the cc in the scenario above contained Williams, Peter; listserv(a)lists.test.org; it would route properly.
Do you know what may be causing this? Please let me know if there is any additional information I may provide regarding this and I will try to respond as soon as possible.
Thanks and have a nice day!
Peter