Comparison of Mail Servers
From Gentoo Linux Wiki
This is a quick rough draft just to get some layout. I'm hoping some Exim, Sendmail, Courier, and qmail people eventually runs with this and fill in my Postfix-centric gaps.
This maybe useful, at least the best impartial (no flame) comparison I could find: shearer.org/MTA_Comparison
Contents |
[edit] The Major Players
[edit] Courier
Courier MTA not to be confused with Courier-imap. Latest version 0.53.3
[edit] Exim
Latest version 4.66.
[edit] Postfix
http://www.postfix.org/start.html
Latest stable version: Postfix 2.4 Patchlevel 6 (26.12.07)
Actively developed due to Linux community momentum. Very lightweight and easy to configure. Support multiple queue. Out of box working well and give high performance.
[edit] qmail
Latest version 1.03 though there is some confusion here. 1.03 was released in 1998 and the license prevents users from integrating their own patches into the code base. Recently a package called netqmail-1.05 was released as a patch to 1.03, but providing a single package with the essential qmail patches as decided by the fellows behind LWQ.
[edit] Sendmail
Latest version 8.13.8. Development has slowed in recent years.
A lot of the info comparing sendmail to other mailers is very dated, so take with a grain of salt. It used to ship with rotten default settings that resulted in slowness and poor scalability, and used to be poorly documented. Also in the late 90s/early 00s there was a string of security problems getting a lot of press. Of course the security problems were fixed long ago, but sendmail's reputation was tarnished and it inspired people to develop alternatives like qmail and postfix, built from the ground up with security and scalability in mind.
Sendmail is still very widely used and is still the default MTA on a lot of systems. Its scalability is improved but may not be in the same league as postfix or qmail. Main things to know:
-
easy to install(all apps are easy to install with Gentoo) - featureful if your delivery/relay setups are complex
- unintuitive to configure; config files are complicated, even for simple setups
- works well out of the box for low to medium traffic environments
- has commercial support
- C based "milter" system is more efficient than the filter plugin systems in other MTAs
- antispam, antivirus options are relatively rudimentary; admins are encouraged to use milters or post-processing, although RBL services are supported
- development momentum has slowed (because it's stable)
- considered too bloated by some, too many esoteric features
[edit] Monolithic
Sendmail and Exim are a single binary, where as Postfix and qmail are a collection of processes that each have specific duties. There are advantages in both approaches.
[edit] Milters
Sendmail milters use less system resources than filtering in Postfix and qmail. When a milter completes it's completion code is kept and the binary acts on it. Postfix and qmail both have to requeue the message... I don't think I'm explaining this very well.
[edit] sendmail -v
A monolithic binary allows you to watch the whole handling of the email whereas Postfix or qmail lose track of it after the message is passed to another binary. Postfix has since implemented a workalike function that sends the connection and delivery details back to the sender.
[edit] Mail storage
MTAs maintain inbound and outbound queues. Some MTAs can be configured to use an external database for this, but usually they just use their own flat-file database, with each message in a separate file. MTAs vary in their ability to show you what's in the queue, due to their architectures.
Mail for local users will be stored somewhere, as well: from the user's point of view, their "inbox". Many MTAs currently support at least two methods of storing such incoming mail on the filesystem: maildir and mbox. Some also support using external databases or other outdated filesystem based formats like mh. External databases can scale well, but introduce a dependency; many sysadmins don't want to introduce any more possible points of failure into their mail systems than they have to. Don't run a database if you're not prepared to secure it, make regular backups, and tune it as necessary.
[edit] maildir vs mbox
I believe Exim, Postfix, qmail, and Sendmail all support .maildir/ now though Sendmail may still depend on a delivery agent like procmail to make that happen.
[edit] .maildir/
Stores each message in a separate file. Less file locking. Allows the use of shared storage which is important for scaling. Hard on filesystems due to each mail being a single file. Read more about it at wikipedia:Maildir.
[edit] mbox
mbox is an older mail storage format that stores all mail serially, in a single file, with each message separated by a line of metadata. Although it is very widely supported and easy to work with, it has several drawbacks and is therefore considered by many to be deprecated:
- it does not scale with number of threads: only one process may work on the file at a time.
- access is slow: the file is not indexed and can only be processed serially to find all the headers.
- delete scales poorly: if one email needs to be deleted from the middle of the file, the whole file needs to be rewritten.
- single point of failure: a small error in the mail format corrupts the whole mbox.
- there are actually 4 slightly different mbox formats that are not fully compatible with each other, so tools working with them will sometimes mix formats in the same box, resulting in corruption.
Read more about it at wikipedia:Mbox and here.
[edit] ssmtp
Is not an MTA
[edit] Local Delivery
not supported
[edit] Daemon
not a daemon so it's not listening on port 25 and if your mail-hub host is unavailable it will never resend your message!
[edit] Does it do anything?
relays email that it recieved via calls to the local /usr/sbin/sendmail wrapper.
