Steven Jones via Mailman-Users writes:

 > How do you handle the mail routeing?  Ie its done inside postfix I
 > assume?

Yes.  The Postfix routing algorithm is deterministic and
well-documented.  In the simplest case where Mailman has a dedicated
MTA (aka smarthost) that serves only Mailman lists and the required
adminstrative addresses (postmaster, abuse, webmaster, etc), you just
put

transport_maps = hash:$PATH_TO_MAILMAN_3_HOME/var/data/postfix_lmtp
# This 
local_recipient_maps =
  $EXISTING_MAPS                # usually local users (root) and /etc/aliases
  hash:$PATH_TO_MAILMAN_3_HOME/var/data/postfix_lmtp
relay_domains = hash:$PATH_TO_MAILMAN_3_HOME/var/data/postfix_domains
# should already be set for Mailman 2
recipient_delimiter = +

If your existing configuration puts your Mailman 3 domain in either
'virtual_alias_domains' or in 'virtual_mailbox_domains', you need to
use the alias domain feature of the mailhost configuration, and add

virtual_alias_maps = hash:$PATH_TO_MAILMAN_3_HOME/var/data/postfix_vmap

This configuration is explained in detail in
https://docs.mailman3.org/projects/mailman/en/latest/src/mailman/docs/mta.html#postfix

You can also use other static databases such as regexp: (slower than
hash:, but no postmap needed) or lmdb: (faster than hash;).  I have an
in-process merge request [1] (waiting on docs and tests, mea culpa)
that allows use of SQL (specifically PostgreSQL, but should generalize
to SQLite or MySQL) which speeds up the migration process dramatically
for large (> 500 lists) sites.

Effectively zero downtime can be achieved by moving each Mailman 2
config.pck file out of the lists/$LIST directory before migrating it.
(I have a script for this but I may need to clean client-specific
data.)  Generating the var/data/postfix_* files can take many seconds
with a large number of lists, and during that interval posts may
bounce back to senders.  It may be possible to configure Postfix to
return a temporary failure status but I haven't investigated that.
Direct use of the database via the MR mentioned cuts the worst case
race to subsecond.

Footnotes: 
[1]  https://gitlab.com/mailman/mailman/-/merge_requests/1161
Successfully used in production on a 20K list system and a 5K list
system since 2024.

-- 
GNU Mailman consultant (installation, migration, customization)
Sirius Open Source    https://www.siriusopensource.com/
Software systems consulting in Europe, North America, and Japan
------------------------------------------------------
Mailman-Users mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/mailman-users.python.org/
Mailman FAQ: http://wiki.list.org/x/AgA3
Security Policy: http://wiki.list.org/x/QIA9
Searchable Archives: https://www.mail-archive.com/[email protected]/
    https://mail.python.org/archives/list/[email protected]/
Member address: [email protected]

Reply via email to