[Exim] Exim and mailman - HOWTO

Top Page
Delete this message
Reply to this message
Author: Nigel Metheringham
Date:  
To: mailman-users
CC: exim-users
Subject: [Exim] Exim and mailman - HOWTO
Before I carefully forget this and have to rediscover it when someone
asks about it, here is how I am configuring exim to work nicely with
mailman. Configs are for exim 3.0x, however these parts of the config
have not changed so it should all work for older versions too.

It all looks rather longer and more complicated that my previous
varient of this for handling smartlist, but thats basically because I
found it too hard to use regular expressions and similar to collapse
the admin, request and list functions all into one, so there are pretty
much replicated sections for each subfunction.

BTW when a mailman list is created it "magically" appears as a working
list to exim - no aliases, no reconfig and no restarting the daemon.

Config file fragments follow:-

## Transports section
##
## Three transports for list mail, request mail and admin mail
## respectively
## Mailman is installed in /home/mailman
## Mailman is configured to be invoked as user exim
list_transport:
           driver = pipe
           command = "/home/mailman/mail/wrapper post ${lc:$local_part}"
           current_directory = /home/mailman
           home_directory = /home/mailman
           user = exim
           group = exim


list_request_transport:
           driver = pipe
           command = "/home/mailman/mail/wrapper mailcmd 
${lc:$local_part}"
           current_directory = /home/mailman
           home_directory = /home/mailman
           user = exim
           group = exim


list_admin_transport:
           driver = pipe
           command = "/home/mailman/mail/wrapper mailowner 
${lc:$local_part}"
           current_directory = /home/mailman
           home_directory = /home/mailman
           user = exim
           group = exim


### end of transports section fragment

## Directors section [this deals with local addresses]
##
## First 2 directors rewrite list-owner or owner-list to list-admin
## This is only done if the list exists.
## List existence checks are done by seeing if the file
## /home/mailman/lists/<list>/listinfo.html
## exists.

list_owner_director:
driver = smartuser
require_files = /home/mailman/lists/${lc:$local_part}/listinfo.html
suffix = "-owner"
new_address = "${lc:$local_part}-admin@${domain}"

owner_list_director:
driver = smartuser
require_files = /home/mailman/lists/${lc:$local_part}/listinfo.html
prefix = "owner-"
new_address = "${lc:$local_part}-admin@${domain}"

##
## Next 3 directors direct admin, request and list mail to the
appropriate
## transport. List existence is checked as above.

list_admin_director:
driver = smartuser
suffix = -admin
require_files = /home/mailman/lists/${lc:$local_part}/listinfo.html
transport = list_admin_transport

list_request_director:
driver = smartuser
suffix = -request
require_files = /home/mailman/lists/${lc:$local_part}/listinfo.html
transport = list_request_transport

list_director:
driver = smartuser
require_files = /home/mailman/lists/${lc:$local_part}/listinfo.html
transport = list_transport

## End of directors fragment
## End of config files bits

Basically thats everything.
Exim should be configured to allow reasonable volume - ie no setting
max_recipients down to a silly value, and with normal degrees of
security - ie allowing relaying from 127.0.0.1 (thats vital), but
pretty much nothing else. Parallel deliveries and other tweaks can
also be used.
Delay warning messages should be switched off or configured to only
happen for non-list mail - unless you like receiving tons of mail when
a host is down.

Problems:-

- Mailman's detection of exim bounces needs improving - it really
should make use of the extra header information that exim
provides. It also should recognise and deal with or ignore
delay warning messages.
- List existence is checked on whether there is a listinfo.html
file for a list. If you delete lists by foul means, be aware of
this.

Mailman config is very simple - you just need to make sure that the
user in the transport configuration stanzas (exim in this case) is used
as the mail user when configuring mailman, and that its installed in
the right place.

Hope this stuff helps, and it would be nice if it could be integrated
into the exim and/or mailman FAQs.

    Nigel.
-- 
[ Nigel Metheringham                  Nigel.Metheringham@??? ]
[ Phone: +44 1423 850000                         Fax +44 1423 858866 ]