What is it?qmail is a secure, reliable, efficient, simple message transfer agent. It is designed for typical Internet-connected UNIX hosts. As of October 2001, qmail is the second most common SMTP server on the Internet, and has by far the fastest growth of any SMTP server.
Secure: Security isn't just a goal, but an absolute requirement. Mail delivery is critical for users; it cannot be turned off, so it must be completely secure. (This is why I started writing qmail: I was sick of the security holes in sendmail and other MTAs.)
Reliable: qmail's straight-paper-path philosophy guarantees that a message, once accepted into the system, will never be lost. qmail also optionally supports maildir, a new, super-reliable user mailbox format. Maildirs, unlike mbox files and mh folders, won't be corrupted if the system crashes during delivery. Even better, not only can a user safely read his mail over NFS, but any number of NFS clients can deliver mail to him at the same time.
Efficient: On a Pentium under BSD/OS, qmail can easily sustain 200000 local messages per day---that's separate messages injected and delivered to mailboxes in a real test! Although remote deliveries are inherently limited by the slowness of DNS and SMTP, qmail overlaps 20 simultaneous deliveries by default, so it zooms quickly through mailing lists. (This is why I finished qmail: I had to get a big mailing list set up.)
Simple: qmail is vastly smaller than any other Internet MTA. Some reasons why: (1) Other MTAs have separate forwarding, aliasing, and mailing list mechanisms. qmail has one simple forwarding mechanism that lets users handle their own mailing lists. (2) Other MTAs offer a spectrum of delivery modes, from fast+unsafe to slow+queued. qmail-send is instantly triggered by new items in the queue, so the qmail system has just one delivery mode: fast+queued. (3) Other MTAs include, in effect, a specialized version of inetd that watches the load average. qmail's design inherently limits the machine load, so qmail-smtpd can safely run from your system's inetd.
Replacement for sendmail: qmail supports host and user masquerading, full host hiding, virtual domains, null clients, list-owner rewriting, relay control, double-bounce recording, arbitrary RFC 822 address lists, cross-host mailing list loop detection, per-recipient checkpointing, downed host backoffs, independent message retry schedules, etc. qmail also includes a drop-in ``sendmail'' wrapper so that it will be used transparently by your current UAs.
qmail's modular, lightweight design and sensible queue management make it the fastest available message transfer agent. Here's how it stacks up against the competition in five different speed measurements.
- Scheduling: I sent a message to 8192 ``trash'' recipients on my home machine. All the deliveries were done in a mere 78 seconds---a rate of over 9 million deliveries a day! Compare this to the speed advertised for Zmailer's scheduling: 1.1 million deliveries a day on a SparcStation-10/50. (My home machine is a 16MB Pentium-100 under BSD/OS, with the default qmail configuration. qmail's logs were piped through accustamp and written to disk as usual.)
- Local mailing lists: When qmail is delivering a message to a mailbox, it physically writes the message to disk before it announces success---that way, mail doesn't get lost if the power goes out. I tried sending a message to 1024 local mailboxes on the same disk on my home machine; all the deliveries were done in 25.5 seconds. That's more than 3.4 million deliveries a day! Sending 1024 copies to a single mailbox was just as fast. Compare these figures to Zmailer's advertised rate for throwing recipients away without even delivering the message---only 0.48 million per day on the SparcStation.
- Mailing lists with remote recipients: qmail uses the same delivery strategy that makes LSOFT's LSMTP so fast for outgoing mailing lists---you choose how many parallel SMTP connections you want to run, and qmail runs exactly that many. Of course, performance varies depending on how far away your recipients are. The advantage of qmail over other packages is its smallness: for example, one Linux user is running 60 simultaneous connections, without swapping, on a machine with just 16MB of memory!
- Separate local messages: What LSOFT doesn't tell you about LSMTP is how many separate messages it can handle in a day. Does it get bogged down as the queue fills up? On my home machine, I disabled qmail's deliveries and then sent 5000 separate messages to one recipient. The messages were all safely written to the queue disk in 23 minutes, with no slowdown as the queue filled up. After I reenabled deliveries, all the messages were delivered to the recipient's mailbox in under 12 minutes. End-to-end rate: more than 200000 individual messages a day!
- Overall performance: What really matters is how well qmail performs with your mail load. Red Hat Software found one day that their mail hub, a 48MB Pentium running sendmail 8.7, was running out of steam at 70000 messages a day. They shifted the load to qmail---on a smaller machine, a 16MB 486/66---and now they're doing fine.
Mailing lists under qmail
Mailing list management is one of qmail's strengths. Notable features:
- qmail lets each user handle his own mailing lists. The delivery instructions for user-whatever go into ~user/.qmail-whatever.
- qmail makes it really easy to set up mailing list owners. If the user touches ~user/.qmail-whatever-owner, all bounces will come back to him.
- qmail supports VERPs, which permit completely reliable automated bounce handling for mailing lists of any size.
- SPEED---qmail blasts through mailing lists two orders of magnitude faster than sendmail. For example, each message on the qmail mailing list is delivered to more than 1000 hosts around the world in just 76 seconds.
- qmail automatically prevents mailing list loops, even across hosts.
- qmail allows inconceivably gigantic mailing lists. No random limits.
- qmail handles aliasing and forwarding with the same simple mechanism. For example, Postmaster is controlled by ~alias/.qmail-postmaster. This means that cross-host loop detection also applies to aliases.
- qmail supports the ezmlm mailing list manager, which easily and automatically handles bounces, subscription requests, and archives.
All qmail releases are announced at cr.yp.to/qmail.html. You can also download netqmail 1.04 here .