![](https://secure.gravatar.com/avatar/25e6ab39c74f685a555048a24a374bc0.jpg?s=120&d=mm&r=g)
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@VData.co.uk ] [ Phone: +44 1423 850000 Fax +44 1423 858866 ]
![](https://secure.gravatar.com/avatar/c51d820a2006751f09a4467134de3f2b.jpg?s=120&d=mm&r=g)
Nice cut, Nigel. Very clean, very useful. I will start using this config myself, in combination with the virtual hosting approach I (kindof) described in an earlier posting. Thanks for sharing this with us. <tomas/>
![](https://secure.gravatar.com/avatar/001c7960fd6e89b92555c681f7e38f8f.jpg?s=120&d=mm&r=g)
On 25 Aug, Nigel Metheringham wrote:
I have been using Exim and Mailman for a while running a couple of lists. I am running Debian (SLink). I have had no serious problems making this combo work. I read some mailing list archives about how to set it up. Pretty straight forward, and as I said, it works great. The only real change I had to do was to make Exim run as a daemon instead of from inetd.
Does this mean that this HOWTO doesn't apply for Debian. or have I missed something?
--
Regards, Christian Dysthe E-mail: cdysthe@oddbird.dyndns.org Web: http://oddbird.dyndns.org/cdysthe/ ICQ 3945810 Powered by Debian GNU/Linux
"Clones are people two"
![](https://secure.gravatar.com/avatar/c51d820a2006751f09a4467134de3f2b.jpg?s=120&d=mm&r=g)
Christian Dysthe wrote:
I have Debian 2.1 installed. I use exim in combination with mailman. I run exim from inetd. I have no problem with this configuration.
Does this mean that this HOWTO doesn't apply for Debian. or have I missed something?
In your current config, for each created list you need to update the alises to reflect this new list, right? By using Nigel's suggested config, you don't have to bother about updating aliases any more. Isn't that great?
Cheers, Tomas
![](https://secure.gravatar.com/avatar/c51d820a2006751f09a4467134de3f2b.jpg?s=120&d=mm&r=g)
Nigel, your mailman director and transport configuration for exim works well. I changed to "require_files .../config.db" as Harald suggested. Since I use mailman in a virtual domain configuration with a separate installation for each virtual domain, I did a slight modification like this:
command = "/virtual/${domain}/mailman/mail/wrapper post
${lc:$local_part}" current_directory = /virtual/${domain}/mailman home_directory = /virtual/${domain}/mailman
and in the director part:
require_files = /virtual/${domain}/mailman/lists/${lc:$local_part}/config.db
The more I learn about Exim the more satisfied I get choosing it as my MTA.
<tomas/>
![](https://secure.gravatar.com/avatar/c51d820a2006751f09a4467134de3f2b.jpg?s=120&d=mm&r=g)
Nice cut, Nigel. Very clean, very useful. I will start using this config myself, in combination with the virtual hosting approach I (kindof) described in an earlier posting. Thanks for sharing this with us. <tomas/>
![](https://secure.gravatar.com/avatar/001c7960fd6e89b92555c681f7e38f8f.jpg?s=120&d=mm&r=g)
On 25 Aug, Nigel Metheringham wrote:
I have been using Exim and Mailman for a while running a couple of lists. I am running Debian (SLink). I have had no serious problems making this combo work. I read some mailing list archives about how to set it up. Pretty straight forward, and as I said, it works great. The only real change I had to do was to make Exim run as a daemon instead of from inetd.
Does this mean that this HOWTO doesn't apply for Debian. or have I missed something?
--
Regards, Christian Dysthe E-mail: cdysthe@oddbird.dyndns.org Web: http://oddbird.dyndns.org/cdysthe/ ICQ 3945810 Powered by Debian GNU/Linux
"Clones are people two"
![](https://secure.gravatar.com/avatar/c51d820a2006751f09a4467134de3f2b.jpg?s=120&d=mm&r=g)
Christian Dysthe wrote:
I have Debian 2.1 installed. I use exim in combination with mailman. I run exim from inetd. I have no problem with this configuration.
Does this mean that this HOWTO doesn't apply for Debian. or have I missed something?
In your current config, for each created list you need to update the alises to reflect this new list, right? By using Nigel's suggested config, you don't have to bother about updating aliases any more. Isn't that great?
Cheers, Tomas
![](https://secure.gravatar.com/avatar/c51d820a2006751f09a4467134de3f2b.jpg?s=120&d=mm&r=g)
Nigel, your mailman director and transport configuration for exim works well. I changed to "require_files .../config.db" as Harald suggested. Since I use mailman in a virtual domain configuration with a separate installation for each virtual domain, I did a slight modification like this:
command = "/virtual/${domain}/mailman/mail/wrapper post
${lc:$local_part}" current_directory = /virtual/${domain}/mailman home_directory = /virtual/${domain}/mailman
and in the director part:
require_files = /virtual/${domain}/mailman/lists/${lc:$local_part}/config.db
The more I learn about Exim the more satisfied I get choosing it as my MTA.
<tomas/>
participants (3)
-
Christian Dysthe
-
Nigel Metheringham
-
Tomas Fasth