.TH EXIM 8 .SH exim exim \- Mail Transfer Agent .SH SYNOPSIS .B exim .I "[options] arguments ..." .br .B mailq .I "[options] arguments ..." .br .B rmail .I "[options] arguments ..." .br .B rsmtp .I "[options] arguments ..." .br .B runq .I "[options] arguments ..." .br .B sendmail .I "[options] arguments ..." .SH "DESCRIPTION" .B Exim is a mail transport agent (MTA) developed at the University of Cambridge for use on Unix systems connected to the Internet. It is freely available under the terms of the GNU General Public Licence. In style it is similar to Smail 3, but its facilities are more extensive, and in particular it has some defences against mail bombs and unsolicited junk mail, in the form of options for refusing messages from particular hosts, networks, or senders. .PP Exim's command line takes the standard Unix form of a sequence of options, each starting with a hyphen character, followed by a number of arguments. The options are compatible with the main options of Sendmail, and there are also some additional options, some of which are compatible with Smail 3. Certain combinations of options do not make sense, and provoke an error if used. The form of the arguments depends on which options are set. .PP If Exim is called under the name mailq, it behaves as if the option -bp were present before any other options. This is for compatibility with some systems that contain a command of that name in one of the standard libraries, symbolically linked to /usr/lib/sendmail. .PP If Exim is called under the name rsmtp it behaves as if the option -bS were present before any other options, for compatibility with smail. The -bS option is used for reading in a number of messages in batched SMTP format. .PP If Exim is called under the name rmail it behaves as if the option -i were present before any other options, for compatibility with smail. The -i option is used for reading a message that should not be terminated by a dot on a line by itself. The name rmail is used as an interface by some UUCP systems. .PP If Exim is called under the name runq it behaves as if the option -q were present before any other options, for compatibility with smail. The -q option causes a single queue-runner process to be started. .SH LIMITATIONS For the benefit of those reading this overview to see whether Exim is of interest to them, its limitations are listed first. .TP .B ANSI-C Exim is written in ANSI C. This should not be much of a limitation these days. However, to help with systems that lack a true ANSI C library, Exim avoids making any use of the value returned by the sprintf() function, which is one of the main incompatibilities. It has its own version of strerror() for use with SunOS4 and any other system that lacks this function, and a macro can be defined to turn memmove() into bcopy() if necessary. .TP .B Filenames Exim uses file names that are longer than 14 characters. .TP .B Bangpaths Exim is intended for use as an Internet mailer, and therefore handles addresses in RFC 822 domain format only. It cannot handle 'bang paths', though simple two-component bang paths can be converted by a straightforward rewriting configuration. .TP .B Domains required Exim insists that every address it handles has a domain attached. For incoming local messages, domainless addresses are automatically qualified with a configured domain value. Configuration options specify from which remote systems unqualified addresses are acceptable. .TP .B Transports The only external transport currently implemented is an SMTP transport over a TCP/IP network (using sockets), suitable for machines on the Internet. However, a pipe transport is available, and there are facilities for writing messages to files in 'batched SMTP' format; this can be used to send messages to some other transport mechanism. Batched SMTP input is also catered for. .SH FEATURES Exim follows the same general approach of decentralized control that Smail 3 does. There is no central process doing overall management of mail delivery. However, unlike Smail, the independent delivery processes share data in the form of 'hints', which makes delivery more efficient in some cases. The hints are kept in a number of DBM files. If any of these files are lost, the only effect is to change the pattern of delivery attempts and retries. .PP Many configuration options can be given as expansion strings, and as these can include file lookups, much of Exim's operation can be made table-driven if desired. For example, it is possible to do local delivery on a machine on which the users do not have accounts. .PP Regular expressions are available in a number of configuration parameters. .PP Domain lists can include file lookups, making it possible to support a large number of local domains. .PP Exim has flexible retry algorithms, applicable to mail routing as well as to delivery. .PP Exim contains header and envelope rewriting facilities. .PP Unqualified addresses are accepted only from specified hosts or networks. .PP Exim can perform multiple deliveries down the same SMTP channel after deliveries to a host have been delayed. .PP Exim can be configured to do local deliveries immediately but to leave remote deliveries until the message is picked up by a queue-runner process. This increases the likelihood of multiple messages being sent down a single SMTP connection. .PP When copies of a message have to be delivered to more than one remote host, up to a configured maximum number of remote deliveries can be done in parallel. .PP Exim supports optional checking of incoming return path (sender) and receiver addresses as they are received by SMTP. .PP SMTP calls from specific machines, optionally from specific idents, can be locked out, and incoming SMTP messages from specific senders can also be locked out. .PP It is possible to control which hosts may use the Exim host as a relay for onward transmission of mail; the control can be made to depend on the address domain. .PP Messages on the queue can be 'frozen' and 'thawed' by the administrator. .PP The maximum size of message can be specified. Exim can handle a number of independent local domains on the same machine; each domain can have its own alias files, etc. These are commonly called "virtual domains". .PP Exim stats a user's home directory before looking for a .forward file, in order to detect the case of a missing NFS mount. .PP Exim contains an optional built-in mail filtering facility. This enables users to set up their own mail filtering in a straightfoward manner without the need to run an external program. There can also be a system filter file that applies to all messages. .PP There is support for multiple user mailboxes controlled by prefixes or suffixes on the user name, either via the filter mechanism or through multiple .forward files. .PP Periodic warnings are automatically sent to messages' senders when delivery is delayed - the time between warnings is configurable. .PP A queue run can be manually started to deliver just a particular portion of the queue, or those messages with a recipient whose address contains a given string. .PP Exim can be configured to run as root all the time, except when performing local deliveries, which it always does in a separate process under an appropriate uid and gid. Alternatively, it can be configured to run as root only when needed; in particular, it need not run as root when receiving incoming messages or when sending out messages over SMTP. .PP I have tried to make the wording of delivery failure messages clearer and simpler, for the benefit of those less-experienced people who are now using email. .PP The Exim Monitor is an optional extra; it displays information about Exim's processing in an X window, and an administrator can perform a number of control actions from the window interface. .SH METHOD OF OPERATION When Exim receives a message, it writes two files in its spool directory. The first contains the envelope information, the current status of the message, and the headers, while the second contains the body of the message. The status of the message includes a complete list of recipients and a list of those that have already received the message. The header file gets updated during the course of delivery if necessary. .PP A message remains in the spool directory until it is completely delivered to its recipients or to an error address, or until it is deleted by an administrator or by the user who originally created it. In cases when delivery cannot proceed - for example, when a message can neither be delivered to its recipients nor returned to its sender, the message is marked 'frozen' on the spool, and no more deliveries are attempted. The administrator can thaw such messages when the problem has been corrected, and can also freeze individual messages by hand if necessary. .PP As delivery proceeds, Exim writes timestamped information about each address to a per-message log file; this includes any delivery error messages. This log is solely for the benefit of the administrator. All the information Exim itself needs for delivery is kept in the header spool file. The message log file is deleted with the spool files. If a message is delayed for more than a configured time, a warning message is sent to the sender. This is repeated whenever the same time elapses again without delivery being complete. .PP The main delivery processing elements of Exim are called directors, routers, and transports. Code for a number of these is provided, and compile-time options specify which ones are actually included in the binary. Directors handle addresses that include one of the local domains, routers handle remote addresses, and transports do actual deliveries. .SH TRUSTED AND ADMIN USERS Some Exim options are available only to "trusted users" and others are available only to "admin users". .PP A trusted user is root or the Exim user (if defined) or any user listed in the trusted_users configuration option, or any user, if the currently set group is one of those listed in the trusted_groups configuration option. Trusted users are permitted to use the -f option to specify the senders of messages that are passed to Exim through the local interface, and also to specify host names, host addresses, protocol names, and ident values. Thus they are able to insert messages into Exim's queue locally that have the characteristics of messages received from a remote host. .PP An admin user is root or the Exim user (if defined) or any user that is a member of the Exim group (if defined). The current group does not have to be the Exim group. Admin users are permitted to operate on messages in the queue, for example, to force delivery failures. It is also necessary to be an admin user in order to see the full information provided by the Exim monitor. .SH OPTIONS Exim's command options are as follows: .TP .B -bd Run Exim as a daemon, awaiting incoming SMTP connections. This option can be used only by an admin user. If either of the -d or -dm options are set, the daemon does not disconnect from the controlling terminal. By default, Exim listens for incoming connections on all the host's interfaces, but it can be restricted to specific interfaces by setting the local_interfaces option in the configuration file. The standard SMTP port is used, but this can be varied by means of the -oX option. Most commonly, the -bd option is combined with the -q