# add a director at the bottom of the director section of the config file unknownuser: driver = smartuser transport = unknownuser_pipe no_verify # add a transport unknownuser_pipe: driver = pipe command = /opt/exim/util/baduser.sh ignore_status return_output user = nobody
MTA | Maturity | Security | Features | Performance | Sendmail Compatibility | Modular |
qmail | medium | high | high | high | addons | yes |
Sendmail | high | low | high | low | yes | no |
Postfix | medium | high | medium | high | yes | yes |
exim | medium | low | high | medium | yes | no |
Courier | low | medium | high | medium | optional | yes |
Maturity depends on the number of years it has had popular acceptance; for all of these open-source Mail Transport Agents, it also suggests how many eyes have been looking for bugs in the source code.
Security is a function of whether the Mail Transport Agent was designed for potential security problems from the outset. Exim's low rating is because the author expressly said he isn't a security expert and as such hasn't performed a complete audit; there haven't been any security holes found, unlike in sendmail, but if there ever were, there was the potential for a worse hole than in qmail.
The Features column only marks down Postfix, because Postfix is young and the focus has been on security and basic features. However, if your main requirement is the fastest Mail Transport Agent, postfix is a good choice.
Sendmail Compatibility refers to whether you can 'drop in' a new Mail Transport Agent and programs which expect the '/usr/bin/sendmail' binary will work with no other changes.
Performance depends entirely on your needs; sendmail can do just fine on many thousands of email messages daily, perhaps up to a few thousands an hour. Exim has been used on hosts sending more than 10,000 emails hourly; qmail and postfix at least twice that and probably much more.
In the balance, for my servers, I was most interested in a Mail Transport Agent that wouldn't drive me up the wall when I wanted to make changes, since I'm a bear with little brain (or memory for what I did six months ago when I last changed something). So far I've been entirely happy with Exim.
# MAIN CONFIGURATION SETTINGS primary_hostname = coder.com local_domains = "matrix.coder.com :\ engine.coder.com" local_domains_include_host = true never_users = root host_accept_relay = localhost relay_domains = "matrix.coder.com :\ engine.coder.com" sender_verify trusted_users = mail:coder end # TRANSPORTS CONFIGURATION remote_smtp: driver = smtp local_delivery: driver = appendfile file = /var/mail/${local_part} delivery_date_add envelope_to_add return_path_add group = mail mode = 0660 address_pipe: driver = pipe return_output address_file: driver = appendfile delivery_date_add envelope_to_add return_path_add address_reply: driver = autoreply end # DIRECTORS CONFIGURATION # Specifies how local addresses are handled system_aliases: driver = aliasfile file = /etc/aliases search_type = lsearch user = coder group = mail file_transport = address_file pipe_transport = address_pipe userforward: driver = forwardfile file = .forward no_verify no_expn check_ancestor file_transport = address_file pipe_transport = address_pipe reply_transport = address_reply localuser: driver = localuser transport = local_delivery end # ROUTERS CONFIGURATION # Specifies how remote addresses are handled lookuphost: driver = lookuphost transport = remote_smtp end RETRY CONFIGURATION * * F,2h,15m; G,16h,1h,1.5; F,4d,8h # REWRITE CONFIGURATION end # AUTHENTICATION CONFIGURATION end