Exim is a sendmail-compatible Mail Transfer Agent, licensed under the GPL, designed for Unix-like operating systems.
Exim is a Mail Transfer Agent (MTA), used to route and deliver email, for Unix-like operating systems. As an MTA, it is responsible for email getting from A to B, but not for client access to that email. Exim is used as the default MTA of some Linux distributions and for some control panel software. Its documentation is extensive and exhaustive, in the form of The Exim Specification. An undocumented feature is a bug. More details can be found in the wikipedia article on Exim.
Exim is licensed under the GNU General Public License, with various linking exemptions. There is a great deal of flexibility in the way mail can be routed, and there are extensive facilities for checking incoming mail.
Exim uses an ordered list of Routers to decide how to deliver a given message to a given recipient, accomplishing the delivery with a Transport. It uses a powerful string expansion system to provide configuration flexibility, including lookups of various forms and a wide variety of primitives. Authenticators are used to manage both the client and server side of authentication.
Exim Features
- SMTP
- TLS (via either OpenSSL or GnuTLS)
- SMTP AUTH over a variety of authentication mechanisms, with data from various sources
- Native support for mbox, mbx, maildir & mailstore formats, plus LMTP to a socket or invoking arbitrary delivery programs.
- Filtering with Sieve and a powerful native filter language
- Extensive string expansion configuration language
- Support for many lookup types (Postgresql, Mysql, Sqlite, Oracle, LDAP, cdb, dbm, lsearch, NIS, DNS, whoson, passwd)
- Native support for DNSxL lookups, socket communication,
- An extensive Access Control List (ACL) system for filtering inbound email, with
- Optional embedded Perl interpreter
${perl...}
, plus support for dynamically loading modules${dlfunc...}
- Map/filter/reduce functions, lists
- Strong regular expression support (the original author of Exim is also the author of PCRE, which was written for Exim)
Resources
- Specification of the Exim Mail Transfer Agent is an authoritative reference manual, maintained as a first-class part of the project: if functionality deviates, or is undocumented, then that is a bug
- The wiki is hosted on GitHub and can be edited by anyone with a GitHub account.
- The Debian project supplies Exim as Exim4 and provide various resources about their customizations (which also apply to Ubuntu)
- The Exim-Users mailing-list is a general place to ask questions
- The canonical git repository is publicly available
- There is a paper book on Exim4 available
Debugging guides & tools
- http://wiki.exim.org/TestingExim
- http://wiki.exim.org/FAQ/General_Debugging
- http://wiki.debian.org/PkgExim4UserFAQ
- http://www.debian-administration.org/article/633/Testing_SMTP_servers_with_SWAKS (uses swaks)
How to ask good questions
- Specify your operating system and version of Exim:
uname -sr
,lsb_release -d
,exim -bV
- Specify what you are trying to do (and perhaps why)
- Mention things you have tried already
- Describe what you are seeing, and how that is not what you expect
- As appropriate, provide samples of the configuration used and the logs seen