[Mailman-Developers] MTA interface for MM 2.1
Nigel Metheringham
Nigel.Metheringham@Vdata.co.uk
21 Nov 2001 23:00:31 +0000
People are probably familiar with teh current ability of exim to be
configured to automagically see lists and handle them appropriately.
There is also a wrapper (in scripts/auto) in MM 2.1 that attempts to do
the same thing for postfix (BTW it will need updating for the additional
aliases now used).
MM 2.1 uses some additional list entry points. This means that for an
alias based approach to injecting mail there are now more aliases, and
worse they aren't regular. Here's the alias set for a list with
basename x (I have truncated the path on wrapper to make it fit without
wrapping):-
x |wrapper post x
x-admin |wrapper mailowner x
x-request |wrapper mailcmd x
x-join |wrapper join x
x-leave |wrapper leave x
x-bounces |wrapper bounces x
x-owner |wrapper mailowner x
Additionally if VERP is being used, the bounces alias should also be
matching stuff like
x-bounces+aperson=dom.ain@mailhost.dom
Exim (and I guess other mailers - I'm going to talk on what I know and
then let other folks talk on the other MTAs), can handle stuff based on
regular expressions, so given a list x (matched by some magic - current
config does it by checking if the file /home/mailman/lists/x/config.db
exists) its dead easy to match an address suffix (I think the postfix
folks call this an extension )
-(admin|request|join|leave|bounces|owner)
However, since the argument to wrapper varies with the extension I then
need an additional lookup to convert that extention to the wrapper
command.
So, for exim, life would be much easier if I could handle these
(excluding the post command) by having
(.+)-(admin|request|join|leave|bounces|owner)
map to
|wrapper $2 $1
[$1 & $2 are the regexp matches from the expression above]
Barry - any chance of regularising the naming of the entry points, or
adding aliases for admin, request and owner??
I would guess this approach would work for several different mailers.
BTW VERP could be handled by changing the intitial regexp to
([a-z0-9_-]*)-(admin|request|join|leave|bounces|owner)(\+.*)
An alternative approach might be that all addresses that are caught by
the MTA list matching stuff are passed direct into the Mailman address
handler, so you just invoked
wrapper mailman-address-handler <address>
and let the python do the magic from there on.
Nigel.
If it was then possible to