Installing the mailman package on Debian is easy… but at some point, you gotta run into exim4 configuration again! >:(
Fact is exim4 does not by default and strongly discourages using piping to programs in /etc/aliases… which unfortunately is the way mailman likes to get its incoming mail. Bleh! :|
After having tried a gazillion different things I finally managed to get it to work by adding the following into /etc/exima4/exim4.conf.template …
This is derived from http://www.exim.org/howto/mailman21.html .
Top of the file:
# Home dir for your Mailman installation -- aka Mailman's prefix # directory. # By default this is set to "/usr/local/mailman" # On a Red Hat/Fedora system using the RPM use "/var/mailman" # On Debian using the deb package use "/var/lib/mailman" # This is normally the same as ~mailman MM_HOME=/var/lib/mailman # # User and group for Mailman, should match your --with-mail-gid # switch to Mailman's configure script. # Value is normally "mailman" MM_UID=list MM_GID=list # # Domains that your lists are in - colon separated list # you may wish to add these into local_domains as well domainlist mm_domains=ns34611.ovh.net:b2evo.net:b2ee.com # # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # # These values are derived from the ones above and should not need # editing unless you have munged your mailman installation # # The path of the Mailman mail wrapper script MM_WRAP=MM_HOME/mail/mailman # # The path of the list config file (used as a required file when # verifying list addresses) MM_LISTCHK=MM_HOME/lists/${lc::$local_part}/config.pck
Make sure you check the user and group here, as an error there will result in a very hard to detect error (no explicit log message anywere). I used “list” because that group of the handler ( /var/lib/mailman/mail/mailman ).
In the router section (after the system_aliases sub-section):
mailman_router: driver = accept domains = +mm_domains require_files = MM_LISTCHK local_part_suffix_optional local_part_suffix = -admin : \ -bounces : -bounces+* : \ -confirm : -confirm+* : \ -join : -leave : \ -owner : -request : \ -subscribe : -unsubscribe transport = mailman_transport
At the end of the transport section:
mailman_transport: driver = pipe command = MM_WRAP \ '${if def:local_part_suffix \ {${sg{$local_part_suffix}{-(\\w+)(\\+.*)?}{\$1}}} \ {post}}' \ $local_part current_directory = MM_HOME home_directory = MM_HOME user = MM_UID group = MM_GID
I hope this can save some time to someone, someday… ;)
Comments from long ago:
Comment from: alex
Thanks, saved me a lot of time!
2006-07-21 08-03