X-Git-Url: https://git.exim.org/exim-website.git/blobdiff_plain/cad98b98badf9e9b061c07f42e0915b401faf9e0..bd4f5f4ba8bd20af3d6131cde9c96526c5cf5d72:/howto/mailman20.html diff --git a/howto/mailman20.html b/howto/mailman20.html new file mode 100644 index 0000000..6aca5ca --- /dev/null +++ b/howto/mailman20.html @@ -0,0 +1,270 @@ + + +
+Mailman is a list manager with web front end and built in + archiving functions. Details can be found at http://www.list.org/
+ +There is no Mailman configuration needed other than the + standard options detailed in the Mailman install documentation. + The exim configuration is transparent to Mailman. The uid/gid + settings for Mailman must match those in the config fragments + given below.
+ +The exim configuration is built so that a list created within + Mailman automagically appears to exim without the need for + additional alias files etc to be changed.
+ +The drawback of this configuration is that it will work poorly + on systems supporting lists in several different mail domains - + for that matter Mailman itself has poor support for this right + now. This may change in the future
+ +The configuration file segments included are to be built on top + of an already functional exim configuration, which accepts mail + for the domain which the list resides in (ie that domain is + already in local_domains - should this domain be separate + from the others handled by this exim, then add the list domain to + local_domains, add a domains=my.list.domain + option to each of the directors and you may wish to exclude that + domain from the other directors.
+ +Your exim configuration also needs a working alias + configuration, with entries (within the list domain) for + mailman, mailman-request and + mailman-admin (plus any other global contact addresses + for the list master). These addresses point to a (or some - not + necessarily the same for all of these aliases) human rather than + being piped into Mailman. You do not need to put per-list + entries into the system alias file, and doing so will most likely + break things since the user id used for delivery is likely to be + incorrect or not set (which causes an exim delivery time config + error).
+ +There are 3 config file sections below which need pasting into + the appropriate parts of the main exim config file. The first one + may also need tailoring to your Mailman configuration
+ ++## Top section of config file - macro definitions +## Tailor these to fit your installation +## pretty much everything else should just fit... +## +# home dir for Mailman +MAILMAN_HOME=/home/mailman +# wrapper script for mailman +MAILMAN_WRAP=MAILMAN_HOME/mail/wrapper +# user and group for Mailman +MAILMAN_UID=exim +MAILMAN_GID=exim ++
+## Transports section +## +## Three transports for list mail, request mail and admin mail +## respectively +## Mailman is installed in MAILMAN_HOME +## Mailman is configured to be invoked as user exim +list_transport: + driver = pipe + command = MAILMAN_WRAP post ${lc:$local_part} + current_directory = MAILMAN_HOME + home_directory = MAILMAN_HOME + user = MAILMAN_UID + group = MAILMAN_GID + +list_request_transport: + driver = pipe + command = MAILMAN_WRAP mailcmd ${lc:$local_part} + current_directory = MAILMAN_HOME + home_directory = MAILMAN_HOME + user = MAILMAN_UID + group = MAILMAN_GID + +list_admin_transport: + driver = pipe + command = MAILMAN_WRAP mailowner ${lc:$local_part} + current_directory = MAILMAN_HOME + home_directory = MAILMAN_HOME + user = MAILMAN_UID + group = MAILMAN_GID + +### 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 +## MAILMAN_HOME/lists/+ +/config.db +## exists. + +list_owner_director: + driver = smartuser + require_files = MAILMAN_HOME/lists/${lc:$local_part}/config.db + suffix = "-owner" + new_address = "${lc:$local_part}-admin@${domain}" + +owner_list_director: + driver = smartuser + require_files = MAILMAN_HOME/lists/${lc:$local_part}/config.db + 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 = MAILMAN_HOME/lists/${lc:$local_part}/config.db + transport = list_admin_transport + +list_request_director: + driver = smartuser + suffix = -request + require_files = MAILMAN_HOME/lists/${lc:$local_part}/config.db + transport = list_request_transport + +list_director: + driver = smartuser + require_files = MAILMAN_HOME/lists/${lc:$local_part}/config.db + transport = list_transport + +## End of directors fragment +## End of config files bits +
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.
+ +One solution passed to me for handling virtual domains was - + Since I use Mailman in a virtual domain configuration with a + separate installation for each virtual domain, I did a slight + modification like this:
+ ++## transport configurations + +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 + ++ +
This is a set of configuration directives I used on the list + boxes I admin. Some of these are necessary, others are cosmetic, + a few are probably superfluous - they work for me!
++# definition of injecting IP addresses +LOCAL_NETS=127.0.0.1/32 +# +# Extra logging data - not necessary but makes the logs more +# useful, but bigger +# lookup all hostnames - puts hostnames into log as well as ips +host_lookup = 0.0.0.0/0 +# tweak logging +log_all_parents +log_file_path = /var/log/exim/%s.log +log_received_recipients +log_refused_recipients +log_received_sender +log_smtp_confirmation +# +# RBL settings - these are more severe than I use +rbl_domains = rbl.maps.vix.com/reject:relays.mail-abuse.org/reject:dul.maps.vix.com/reject:relays.orbs.org=127.0.0.2,127.0.0.3/reject +rbl_hosts = !LOCAL_NETS:0.0.0.0/0 +rbl_log_rcpt_count +recipients_reject_except=postmaster@*:*-admin@* +# +# relay control - from our local network only +host_accept_relay = LOCAL_NETS +# +# delay warnings - second line is now default, but earlier versions of +# exim need it setting +delay_warning = 26h +##delay_warning_condition = "${if match{$h_precedence:}{(?i)bulk|list|junk}{no}{yes}}" +# +# Verify receipient addresses on everything except local injects +# DO NOT verify addresses from Mailman - this would slow down +# the acceptance of messages dramatically +receiver_verify_hosts = !127.0.0.1/8:0.0.0.0/0 +sender_verify +# +# performance tweaks - 1st is good for linux, maybe less so for others +split_spool_directory +remote_max_parallel = 15 ++ +
This is how a set of address tests for the exim lists look on a +working system. (command lines start with ">")
++> /usr/sbin/exim -v -bt exim-users +exim-users@www.exim.org + deliver to exim-users in domain www.exim.org + director = list_director, transport = list_transport + +> /usr/sbin/exim -bt exim-users-request +exim-users-request@www.exim.org + deliver to exim-users in domain www.exim.org + director = list_request_director, transport = list_request_transport + +> /usr/sbin/exim -bt exim-users-admin +exim-users-admin@www.exim.org + deliver to exim-users in domain www.exim.org + director = list_admin_director, transport = list_admin_transport + +
+ Nigel Metheringham + +$Cambridge$
+ +