New subscribed (by invitation) user: no password received in invitation/welcome e-mail. Postorius sign up / password reset broken

Hi there,
I migrated form MM2.1 to MM3.3.10 on Debian Trixie (mariadb backend) -- I know that's a bit unorthodox to ask here for help on a non venv-based installation, but hopefully I'll first gain a bit of insight of MM3 in order to formulate a more precise request to Debian maintainers.
## Issue #1.
A newly invited (from Postorius mass subscription page) and confirmed user doesn't get any password in their invitation/welcome e-mail. I guess that's because MM3 allows a user to subscribe without having an account, right? Else, there's a problem.
## Issue #2
Anyway, if that new user asks for a password reset on Postorius they get
"Server error An error occurred while processing your request."
Log shows:
ERROR 2025-08-29 17:59:17,227 173488 django.request Internal Server Error: /accounts/password/reset/
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/django/core/handlers/exception.py", line 55, in inner
response = get_response(request)
File "/usr/lib/python3/dist-packages/django/core/handlers/base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/python3/dist-packages/django/views/generic/base.py", line 105, in view
return self.dispatch(request, *args, **kwargs)
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/django/utils/decorators.py", line 46, in _wrapper
return bound_method(*args, **kwargs)
File "/usr/lib/python3/dist-packages/django/views/generic/base.py", line 144, in dispatch
return handler(
form.save(self.request)
~~~~~~~~~^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/allauth/account/forms.py", line 633, in save
adapter.send_password_reset_mail(user, email, context)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/allauth/account/adapter.py", line 577, in send_password_reset_mail
return self.send_mail("account/email/password_reset_key", email, context)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/allauth/account/adapter.py", line 201, in send_mail
msg.send()
~~~~~~~~^^
File "/usr/lib/python3/dist-packages/django/core/mail/message.py", line 299, in send
return self.get_connection(fail_silently).send_messages([self])
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^
File "/usr/lib/python3/dist-packages/django/core/mail/backends/smtp.py", line 134, in send_messages
sent = self._send(message)
File "/usr/lib/python3/dist-packages/django/core/mail/backends/smtp.py", line 152, in _send
self.connection.sendmail(
~~~~~~~~~~~~~~~~~~~~~~~~^
from_email, recipients, message.as_bytes(linesep="\r\n")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/lib/python3.13/smtplib.py", line 861, in sendmail
self.ehlo_or_helo_if_needed()
~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
File "/usr/lib/python3.13/smtplib.py", line 611, in ehlo_or_helo_if_needed
if not (200 <= self.ehlo()[0] <= 299):
~~~~~~~~~^^
File "/usr/lib/python3.13/smtplib.py", line 451, in ehlo
self.putcmd(self.ehlo_msg, name or self.local_hostname)
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.13/smtplib.py", line 378, in putcmd
self.send(f'{s}{CRLF}')
~~~~~~~~~^^^^^^^^^^^^^^
File "/usr/lib/python3.13/smtplib.py", line 365, in send
raise SMTPServerDisconnected('please run connect() first')
smtplib.SMTPServerDisconnected: please run connect() first
The same happens if the new users tries to sign up.
Any idea?
Cheers
Marco

^m'e via Mailman-users writes:
I migrated form MM2.1 to MM3.3.10 on Debian Trixie (mariadb backend) -- I know that's a bit unorthodox to ask here for help on a non venv-based installation,
We appreciate your courtesy, but this is inaccurate. If you install a distro-packaged Mailman and it doesn't do the basic stuff such as "start" or "respond to web requests" out of the box, that's a distro problem. (That includes any features missing because of the inevitable lag in distro packaging.)
On the other hand, if you have a misconception (see Issue #1) or if Mailman is basically working but doing a particular weird thing (in your opinion, and that's Issue #2), asking here is the right thing to do. Distro maintainers are frequently experts in packaging but ordinary users of their package without expertise in troubleshooting the package, and usually zero interest in educating users. That is what we are here for!
And, obviously, "real" bugs may manifest first in a distro package.
but hopefully I'll first gain a bit of insight of MM3 in order to formulate a more precise request to Debian maintainers.
I don't think these are Mailman issues, and quite likely they're not Debian issues.
## Issue #1.
A newly invited (from Postorius mass subscription page) and confirmed user doesn't get any password in their invitation/welcome e-mail.
The invitation/welcome emails usually don't know if the user is verified, and they are otherwise not personalized, so sending a one-time password (OTP) at that time would be a lot more complicated than it's worth. Also, many users may prefer to NOT set a password at all. For example, if you configure the Gmail socialauth plugin, a Gmail user can log in without doing the OTP dance. (I think we still require the dance to verify the address, because socialauth is hard and the burden is small. And if 'confirm' is set in the list preferences, you have to either log in to Postorius to subscribe, or do the dance for an email subscription.)
Because Mailman 3 has a model of a user with multiple addresses and subscriptions, the burden of using the reset password dance for the initial setting of a password is considered very small (it usually is done once during the user's association with the Mailman instance, if at all). So that's the way we do it.
## Issue #2
Anyway, if that new user asks for a password reset on Postorius they get
"Server error An error occurred while processing your request."
This appears to be an MTA misconfiguration, either in Mailman or possibly in the MTA:
File "/usr/lib/python3.13/smtplib.py", line 861, in sendmail self.ehlo_or_helo_if_needed()
Mailman tried to connect to a mail server.
File "/usr/lib/python3.13/smtplib.py", line 365, in send raise SMTPServerDisconnected('please run connect() first') smtplib.SMTPServerDisconnected: please run connect() first
It failed.
Twp possibilities off hand: (1) The server expects authenticated and/or encrypted email (SASL and TLS), but Mailman is not configured to do that. (2) A typo in the server IP or hostname.
There are all sorts of other reasons why a server might refuse a connection, but we'd need a lot more information to diagnose.
Steve
-- GNU Mailman consultant (installation, migration, customization) Sirius Open Source https://www.siriusopensource.com/ Software systems consulting in Europe, North America, and Japan

Thanks Steve.
Yeah, indeed, it was a stupid configuration error.
So, while investigating malformed-url errors
(https://lists.mailman3.org/archives/list/mailman-users@mailman3.org/thread/LRGWS77SBCVCHBQGHCXZBVXQBXU62MTD/)[*],
I had set mistakenly in /etc/mailman3/mailman-web.py
:
EMAIL_HOST = ''
Of course, then how can Postorius contact my SMTP!? Bah, tweaking stuff uncritically is always Bad Thing (TM), dumb me.
Everything looks OK now. The workflow is clear: the new user can get their password via the reset page and then go through with e-mail verification, etc.
[*] I had meanwhile disabled unused apps to reduce attack surface and noise.
Cheers,
Marco
On 2025-08-29 19:42, Stephen J. Turnbull wrote:
^m'e via Mailman-users writes:
I migrated form MM2.1 to MM3.3.10 on Debian Trixie (mariadb backend) -- I know that's a bit unorthodox to ask here for help on a non venv-based installation,
We appreciate your courtesy, but this is inaccurate. If you install a distro-packaged Mailman and it doesn't do the basic stuff such as "start" or "respond to web requests" out of the box, that's a distro problem. (That includes any features missing because of the inevitable lag in distro packaging.)
On the other hand, if you have a misconception (see Issue #1) or if Mailman is basically working but doing a particular weird thing (in your opinion, and that's Issue #2), asking here is the right thing to do. Distro maintainers are frequently experts in packaging but ordinary users of their package without expertise in troubleshooting the package, and usually zero interest in educating users. That is what we are here for!
And, obviously, "real" bugs may manifest first in a distro package.
but hopefully I'll first gain a bit of insight of MM3 in order to formulate a more precise request to Debian maintainers.
I don't think these are Mailman issues, and quite likely they're not Debian issues.
## Issue #1.
A newly invited (from Postorius mass subscription page) and confirmed user doesn't get any password in their invitation/welcome e-mail.
The invitation/welcome emails usually don't know if the user is verified, and they are otherwise not personalized, so sending a one-time password (OTP) at that time would be a lot more complicated than it's worth. Also, many users may prefer to NOT set a password at all. For example, if you configure the Gmail socialauth plugin, a Gmail user can log in without doing the OTP dance. (I think we still require the dance to verify the address, because socialauth is hard and the burden is small. And if 'confirm' is set in the list preferences, you have to either log in to Postorius to subscribe, or do the dance for an email subscription.)
Because Mailman 3 has a model of a user with multiple addresses and subscriptions, the burden of using the reset password dance for the initial setting of a password is considered very small (it usually is done once during the user's association with the Mailman instance, if at all). So that's the way we do it.
## Issue #2
Anyway, if that new user asks for a password reset on Postorius they get
"Server error An error occurred while processing your request."
This appears to be an MTA misconfiguration, either in Mailman or possibly in the MTA:
File "/usr/lib/python3.13/smtplib.py", line 861, in sendmail self.ehlo_or_helo_if_needed()
Mailman tried to connect to a mail server.
File "/usr/lib/python3.13/smtplib.py", line 365, in send raise SMTPServerDisconnected('please run connect() first') smtplib.SMTPServerDisconnected: please run connect() first
It failed.
Twp possibilities off hand: (1) The server expects authenticated and/or encrypted email (SASL and TLS), but Mailman is not configured to do that. (2) A typo in the server IP or hostname.
There are all sorts of other reasons why a server might refuse a connection, but we'd need a lot more information to diagnose.
Steve
Mailman's content filtering has removed the following MIME parts from this message.
Content-Type: application/pgp-keys Name: OpenPGP_0xC366FCF67CDBD9F9.asc

Marco Emilio Poleggi via Mailman-users writes:
Yeah, indeed, it was a stupid configuration error.
Those are always annoying. I'm really happy that it was that easy, and that things are working well for you now.
Steve
-- GNU Mailman consultant (installation, migration, customization) Sirius Open Source https://www.siriusopensource.com/ Software systems consulting in Europe, North America, and Japan
participants (3)
-
^m'e
-
Marco Emilio Poleggi
-
Stephen J. Turnbull