Mail Delivery Agents for Linux
Written in Python. Supports POP3, APOP, IMAP4, SSL, mbox, Maildir, SMTP via local MTA. Flexible filtering, and integration with external mail filter utilities. Small, fast. GNU GPL.
Access via IMAP, POP3, KPOP. Written in C by Rob Siemborski. Supports BerkeleyDB database as a mail store. (No support for mbox, Maildir, mh, etc. mail stores.) Comments.
UW (University of Washington) IMAPd:
Written in C by Mark Crispin. Supports mbox mail stores only. Also includes a separate pop3d that can relay commands to an IMAPd. Note: This software has had a shaky security history. Comments.
Supports Maildir and mbox mail stores. Written in C by Timo Sirainen. Also includes a separate pop3d. A fairly new (a/o 2004) piece of software, but has an impressive reputation already for security and performance. Comments (by author).
MDA written in C by Eelco van Beek and Roel Rozendaal. Provides IMAP and POP3 daemons that use a MySQL or PostgreSQL mail store.
Described as "Drop-in POP3 and IMAP4 server package", written in C++ by Daniel Kroening. Provides separate IMAP and POP3 daemons, and an optional SMTP daemon, omail.
Fetchmail, an MDA written in C by Eric S. Raymond based on Carl Harris's popclient, is designed for retrieval and forwarding of mail over demand, periodic links, with optional multidrop or domain support. Retrieved mail is handed off to a local MTA, which is thus required. (Exception: You can run Fetchmail with an --mda or -m option, causing it to hand off mail to an MDA directly, rather than to an MTA.) Access via POP2, POP3, RPOP, APOP, KPOP, IMAP, ETRN, and ODMR. Mail store format: N/A, since mail is handed off to a local MTA or a local delivery agent.
Python-based MDA by Charles Cazabon. Access via POP3. Supports Maildir and mbox mail stores (via an included LDA). Supports multidrop or domain mailboxes. Written to work around what the author saw as misfeatures in Fetchmail.
Simple POP3 mail retriever for demand dialup, written in C by Sam Varshavchik, and intended to hand off mail to a secondary MDA such as procmail.
Note to self: Self, you might want to supplement the above by adding the POP3-only MDAs — BSD in.pop3d (aka popper) by Katie Stevens, Glynn Clements, Fabio Coatti, and Filippo Grassilli, cucipop (Cubic Circle POP3 daemon) by S.R. van den Berg, fetchpop by Seung-Hong Oh, get-mail by Rajko Albrecht, gnu-pop3d by Jakob Kaivo, gwpop (in Perl4) by Stephane Bortzmeyer, ids-pop3d by Jakob Kaivo, Pmail by Ming Xu, pop-perl5 (in Perl) by William M. Perry, Bill Reynolds, Steve McCarthy, Sven Neuhaus, and Kevin Everets, POP3Lite by Gergely Nagy, popclient by Carl Harris and Eric S. Raymond, popspam by James DeRidder PopTart by James Anderson, qmail-pop3d by Daniel J. Bernstein (proprietary), qpopper by Randall Gellens, solid-pop3d by Jerzy Balamut and Arkadiusz Miskiewicz, Teapop by Ibrahim Khalifa, tpop3d by Chris Lightfoot, virtualmail-pop3d (aka vm-pop3d) by Jeremy C. Reed, yapops by Nir Oren, zpop3d by Laurent Monin, etc. (This list includes both POP3 clients and POP3 daemons.)
Local MDAs (also known as local delivery agent = LDA):
Procmail is the most common local MDA and filtering agent on *ix systems, and was written in C by S.R. van den Berg and Philip Guenther. Supports mbox and Maildir mail stores. Procmail is a very mature codebase that can do anything at all possible with e-mail. At the same time, it suffers an infamously difficult command syntax.
Maildrop is a local MDA and filtering agent written in C++ by Sam Varshavchik, and comes by default with the Courier MTA. Supports mbox and Maildir mail stores. Has a much less opaque filtering syntax than does procmail.
Perl-based local MDA and filtering agent by Raphael Manfredi using lex-like rules, easier to configure and with more functionality than procmail.
/bin/mail (formerly mail.local):
The simplest possible local MDA. Processes alias definitions but not .forward files; has no filtering abilities.
You can use Eric Altman's sendmail binary as your local delivery agent, in which case it gets flags like "-oem -i -f". But really, you should use practically anything else.
Deliver is a local delivery agent often provided with sendmail, coded in C starting in 1991 by Chip Salzenberg as a replacement for Xenix's /usr/lib/mail/mail.local, and (now) does both mail drop-off and filtering. Largely replaced by procmail.
Grandma was written as a replacement for maildrop with more foolproof configuration/filtering syntax and better ability to integrate with external programs. It was written in Perl by David Benfell. Supports Maildir mail stores.