About

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

Debugging guides & tools

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
history | show excerpt | excerpt history