Go to the first, previous, next, last section, table of contents.


"If I have seen further it is by standing on the shoulders of giants."
(Isaac Newton)

Exim is a mail transfer agent (MTA) for Unix systems connected to the Internet. Configuration files currently exist for the following operating systems: AIX, BSDI, DGUX, Digital UNIX, FreeBSD, HI-OSF (Hitachi), HP-UX, IRIX, Linux, MIPS RISCOS, NetBSD, OpenBSD, QNX, SCO, SCO SVR4.2 (aka UNIX-SV), SunOS4, SunOS5, Ultrix, and Unixware. However, code is not available for determining system load averages under Ultrix.

The terms and conditions for the use and distribution of Exim are contained in the file `NOTICE'. Exim is distributed under the terms of the GNU General Public Licence, a copy of which may be found in the file `LICENCE'.

Exim owes a great deal to Smail 3 and its author, Ron Karr. Without the experience of running and working on the Smail 3 code, I could never have contemplated starting to write a new mailer. Many of the ideas and user interfaces are taken from Smail 3, though the actual code of Exim is entirely new.

I am indebted to my colleague Piete Brooks for suggesting and implementing the scheme for building Exim for multiple architectures and operating systems, for porting Exim to several different versions of Unix, and for numerous suggestions. Many other people, both in Cambridge and around the world, have contributed to the development and the testing of Exim, and to porting it to various operating systems. I am grateful to them all.

This edition of the Exim specification applies to version 2.00 of Exim. Substantive changes from the 1.90 edition are marked by bars in the right margin, except in the Texinfo version of the documentation, because Texinfo doesn't support change bars. Minor corrections and rewordings are not so marked.

As the program is still developing, there may be features in later versions of the program that have not yet made it into this document, which is updated only when there is a reasonable batch of changes to make. However, all changes are noted briefly in the distributed file called `doc/ChangeLog', and specifications of new features that are not in this manual are placed in `doc/NewStuff'.

Mailing list and Web site

There is a web site at `http://www.exim.org' by courtesy of Planet Online Ltd, who also run the following mailing lists:

`exim-users@exim.org'              general discussion list
`exim-users-digest@exim.org'       digest form of `exim-users'
`exim-announce@exim.org'           moderated, low volume announcements list

Messages that are sent to the announcements list are automatically copied to the main list, and thence to the digest list. You should therefore join only one list. Requests to be added to or deleted from the mailing lists should be sent to `exim-users-request@exim.org', `exim-users-digest-request@exim.org', or `exim-announce-request@exim.org', respectively.

By courtesy of Martin Hamilton, there is an archive of the `exim-users' list in plain text form at `http://www.roads.lut.ac.uk/lists/exim-users/exim-users.archive' and in HTML via Hypermail at `http://www.roads.lut.ac.uk/lists/exim-users/'.

The list is also forwarded to `http://www.findmail.com/list/exim-users', which is an archiving system with searching capabilities.


The current release of Exim is always to be found in


where n.nn is the highest such version number in the directory. When there is only a small amount of change from one version to the next, a patch file may be provided, with a final component name of the form


The main distribution contains ASCII versions of this specification and other documentation; other formats of the documents are available in separate files:


These tar files contain only the `/doc' directory, not the complete distribution. The documentation is also available online at the web site.

There is a directory called


which contains miscellaneous files contributed to the Exim community by Exim users.

There are a number of sites that maintain mirrors of the Exim ftp directory. Those that I know about are listed in the file




These are some of the main features of Exim:

Support for IPv6

The current IP protocol is more strictly called IPv4. IPv6 is the next generation of IP protocol; it is currently in an experimental state. A number of vendors have released IPv6 versions of their systems and libraries.

If Exim is built with HAVE_IPV6 set, it uses the IPv6 API for TCP/IP input and output. IP addresses can be given in IPv6 as well as IPv4 notation; incoming IPv4 calls use the embedded IPv6 address notation. Currently, Exim cannot discover for itself the addresses of the host's IPv6 interfaces (at least, not on Solaris 2 -- I don't know the position on other systems) so the `local_interfaces' option must always be used to list them explicitly, in order to prevent mail looping.

See the file `README.IPV6' for general information about the current state of IPv6 support in Exim.

Calling interface

Like many MTAs, Exim has adopted the Sendmail interface so that it can be a straight replacement for `/usr/lib/sendmail'. All the relevant Sendmail options are implemented, with two reservations. There are also some additional options that are compatible with Smail 3, and some further options that are new to Exim.

The `-t' option, for taking a list of recipients from a message's headers, is documented (for Sendmail) as suppressing delivery to any addresses on the command line. However, it appears that this is not the case in practice. For this reason, Exim has an option called `extract_addresses_remove_arguments' which controls its behaviour in this regard.

Sendmail uses the `-bi' option as a request to rebuild the alias file. As Exim does not have the concept of a single alias file, it cannot mimic this behaviour. It can be configured to run a particular script when this option is received; otherwise the option is ignored.

The runtime configuration is held in a single text file which is divided into a number of sections. The entries in this file consist of keywords and values, in the style of Smail 3 configuration files. A default configuration file which is suitable for simple installations is provided in the distribution.

Control of messages on the queue can be done via certain privileged command line options. There is also an optional monitor program called `eximon', which displays current information in an X window, and contains a menu interface to Exim's command line administration options.


The term local part, which is taken from RFC 822, is used to refer to that part of an email address that precedes the @ sign. The part that follows the @ sign is called the domain or mail domain.

The word domain is sometimes used to mean all but the first component of a machine's name. It is not used in that sense here, where it normally refers to the part of an email address following the @ sign.

Local domains are mail domains for which the current host is responsible; in other words, it has special knowledge of what to do with messages sent to such domains, and normally that means using the local part of the address either to deliver the message on the local host or to transform the address using an alias file or something similar. All other domains are remote domains, whose appearance normally causes the message to be transmitted to some other host.

The qualitative distinction between local and remote domains is not always entirely clear-cut, since a host can have special knowledge about routing for remote domains, and messages for local domains may under some circumstances be passed to other hosts.

The terms local delivery and remote delivery are used to distinguish delivery to a file or a pipe on the local machine from delivery by SMTP to some remote machine. The type of delivery does not necessarily correspond to the type of address. Mail for a local domain may get passed on to some other host, while mail for a remote domain might get delivered locally to a file or pipe for onward transmission by some other means. However, these are special cases.

The term mailmaster is used to refer to the person in charge of maintaining the mail software on a given computer. Commonly this will be the same person who fulfils the postmaster role, but this may not always be the case.

The term queue is used to refer to the set of messages awaiting delivery, because this term is in widespread use in the context of MTAs. However, in Exim's case the reality is more like a pool than a queue, because there is normally no ordering of waiting messages.

The term queue-runner is used to describe a process that scans the queue and attempts to deliver those messages whose retry times have come. This term is used by other MTAs, and also relates to the command `runq', but in Exim the waiting messages are normally processed in an unpredictable order.

Go to the first, previous, next, last section, table of contents.