#options{padding:1em 0 0 2em}#options img{margin:10px 4px 0 0;float:left}#options img.collapse{margin-right:0.5em}#options img:hover{cursor:pointer}#chapters a{text-decoration:none}#chapters,.chapter,.section{float:left;clear:both;list-style:none;white-space:nowrap}#chapters li.chapter .button{width:12px;height:12px;margin:10px 10px 0 0;background-repeat:no-repeat;float:left;display:none}#chapters li.chapter .button:hover{cursor:pointer}#chapters.expandable li.chapter .button{display:block;background-image:url('../../../../doc/plus-12x12.png')}#chapters.expandable li.chapter span.chapter_title.nosub{margin-left:22px}#chapters.expandable li.chapter ul.sections{display:none}#chapters.expandable li.chapter.open .button{background-image:url('../../../../doc/minus-12x12.png')}#chapters.expandable li.chapter.open ul.sections{display:block}$('#chapters').addClass('expandable').find('.button').click(function(){$(this).parent().toggleClass('open');});$('#options img.expand').click(function(){$('.chapter').addClass('open');});$('#options img.collapse').click(function(){$('.chapter').removeClass('open')});$('#options').removeClass('hidden');PNG  IHDR 値bKGD X pHYsHHFk> vpAg Υ2~IDAT8mSTu{`aWn"A@B9v@3 ""HtЉ²!ɂUA0IHB1 7Y➳~|3ϛ`xVh-@jzE̸3Ѭ*^H!1DD,p0|u.TG)q҆*RN]^r7q͊3}kq12{~cd'­xx7V PJrI#h^ҚrglB>e_/- Ml5S!Ϊ;݁odرYp'B8U#wA ݪ)f4 $(r6Mf[ Y.d6f(.(_N=upSL"ks%ܢVtiXHYK*L" W`Fz}c4[wv~;$ ŀpƟs4kuOu>R F= Xv X{t]Ym%l>;?kV {mm%~t*wvV%$3}m]vɵyk1X.vG9ȍRiXrVAnss_gcE+<`Xj ͏ b vpAg Υ2~AIDAT8eOuCLC ,t FF9M1Ո-0f`@o!z!@O;8s/zϟ_LYb0I7smt1=A'NΒ$7"H?H"WN-ӆd~mP#|Aa %;|ڤA;Yטּ+U'|Pβcly脤6IyAV^S MZ<+56&1<; N(7vE9F뵽T!u[W\iͶ*JӸXPӪA3;+[gi%;SV1H?z%`vL?Sʴy]*z`M}墟-[nVpD'(?t`vޡA0 IxcX&x7 Z7^ GŚ Zݙ3!ioxZL\͚iʊHdugBO0dx u=;gƺ B9vqvbH96$8 G'NAÐ@1(,\4?f/r> 8|C,H Ʊ߶SgeUqZgߨCWzuL <2VJ.f*;=: <B`Z%4_eOX>4+=HY $w#df4|3P0a"o(p]]9o=⁣v.52}nJw=y;fZؗ'8ROm3Xv_\W U`L2o[82{AɑS#r(Ngj3ٿo~\: ^=qr .a.]ǃŶkFRtõw|zcڀYX=I1T&ш};> <@އ7Q {ByeKwGOGӹ e"zTXtSoftwarexsLOJUMLO JML/Ԯ MIENDB` Documentation for Exim

Exim Internet Mailer

Documentation for Exim

Exim has a set of documentation released with it. A text file of the main documentation is released as part of the Exim tar archive. Additionally, postscript and texinfo forms of the documentation are available in separate tar archives on the ftp sites. There is also a book.

New user documentation can be found at the Exim New Users site

User supported documentation, FAQs and hints can be found in the wiki.

There are 3 main sets of documentation for Exim, all of which are also available below in html form.

The main user and configuration manual is the specification document

The Exim Specification - Version 4.72 (PDF) - The master documentation for Exim containing all required detail to install, configure and use Exim. Changes to the documentation (normally reflecting changes to the functionality of Exim) are shown on a green background like this segment.

The Exim Filter Specification - Version 4.72 (PDF) - Additional information on the Exim filter language.

HOWTO Documentation

Frequently Asked Questions - FAQ

The wikified FAQ for Exim 4 can be found here. The FAQ for the obsolete Exim 3 releases can be found on the FTP site - see the download pages.

Copies of Documentation

Copies of the main Exim documentation in HTML format as used on this site in a compressed tar file are available from the main ftp site and mirrors (see file exim-html-*).

Exim Filter Specification - Table of Contents

The Exim Mail Transport Agent



This document was generated on 2 April 1998 using the texi2html translator version 1.52.

Exim Filter Specification - Exim's User interface to mail filtering Go to the first, previous, next, last section, table of contents.


1 Exim's User interface to mail filtering

Exim is a mail transfer agent for Unix systems. This document describes the user interface to its in-built mail filtering facility, and is copyright (c) University of Cambridge 1998. -------------------------------------------------------------------------


Go to the first, previous, next, last section, table of contents. Exim Filter Specification - Significant deliveries Go to the first, previous, next, last section, table of contents.


1.9 Significant deliveries

When in the course of delivery a message is processed by a filter file, what happens next, that is, after the whole filter file has been processed, depends on whether the filter has set up any significant deliveries or not. If there is at least one significant delivery, then the filter is considered to have handled the entire delivery arrangements for the current address, and no further processing of the address takes place. If, however, no significant deliveries have been set up, Exim continues processing the current address as if there were no filter file, and typically sets up a delivery of a copy of the message into a local mailbox. In particular, this happens in the special case of a filter file containing only comments.

The delivery commands `deliver', `save', and `pipe' are by default significant. However, if such a command is preceded by the word "unseen", then its delivery is not considered to be significant. In contrast, other commands such as "mail" and "vacation" do not count as significant deliveries unless preceded by the word "seen".


Go to the first, previous, next, last section, table of contents. Exim Filter Specification - Filter commands Go to the first, previous, next, last section, table of contents.


1.10 Filter commands

The filter commands which are described in subsequent setions are listed below, with the section in which they are described in brackets:



`add'              increment a user variable ("The add command")

`deliver'          deliver to an email address ("The deliver command")
`finish'           end processing ("Other commands")
`if'               test condition(s) ("Obeying commands conditionally")
`logfile'          define log file ("Logging commands")

`logwrite'         write to log file ("Logging commands")

`mail'             send a reply message ("Mail commands")
`pipe'             pipe to a command ("The pipe command")
`save'             save to a file ("The save command")
`testprint'        print while testing ("Other commands")
`vacation'         tailored form of `mail' ("Mail commands")

In addition, when Exim's filtering facilities are being used as a system filter, the `fail', `freeze', and `headers' commands are available. However, since they are usable only by the system administrator and not by ordinary users, they are described in the main Exim specification rather than in this document.


Go to the first, previous, next, last section, table of contents. Exim Filter Specification - The add command Go to the first, previous, next, last section, table of contents.


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


1.2 Testing a new filter file

Filter files, especially the more complicated ones, should always be tested, as it is easy to make mistakes. Exim provides a facility for preliminary testing of a filter file before installing it. This tests the syntax of the file and its basic operation, and can also be used with ordinary `.forward' Exim Overview

The Exim Mail Transport Agent


Table of Contents


Exim Overview

Date: 10 July 1997

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.

Exim is in production use on a number of sites that move tens of thousands of messages per day. This document contains an overview description of the way Exim works, with a certain amount of omission and simplification to keep it fairly short. Please address any enquiries about Exim to Philip Hazel:


Email:  <ph10@cus.cam.ac.uk>
Phone:  +44 1223 334714
Fax:    +44 1223 334679

University of Cambridge Computer Laboratory Pembroke Street Cambridge CB2 3QG United Kingdom

This document is copyright (c) University of Cambridge 1997, but copying permission is granted to all. -------------------------------------------------------------------------

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

Background

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 configuration interfaces are taken from Smail 3, though the actual code of Exim is entirely new.

My intention was to write a mailer that had more functionality than Smail 3, but which retained the simple lightweight approach, as this seemed to me to be all that was needed for systems directly connected to the Internet, where most messages are delivered almost immediately.

Availability

The current distribution of Exim is available from


$st{ftp://ftp.cus.cam.ac.uk/pub/software/programs/exim/exim-$si{n.nn}.tar.gz}

where n.nn is the version number. The distribution contains an ASCII copy of the documentation; other formats are available from


$st{ftp://ftp.cus.cam.ac.uk/pub/software/programs/exim/exim-postscript-$si{n.nn}.tar.gz}
$st{ftp://ftp.cus.cam.ac.uk/pub/software/programs/exim/exim-texinfo-$si{n.nn}.tar.gz}

The following operating systems are currently supported: AIX, BSDI, DGUX, FreeBSD, HI-OSF (Hitachi), HP-UX, IRIX, Linux, MIPS RISCOS, NetBSD, OpenBSD, DEC OSF1 (aka Digital UNIX), SCO, SCO SVR4.2 (aka UNIX-SV), SunOS4, SunOS5, Ultrix, and Unixware.

Limitations

For the benefit of those reading this overview to see whether Exim is of interest to them, its limitations are listed first.

  • 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.
  • Exim uses file names that are longer than 14 characters.
  • 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.
  • 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.
  • 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; both of these can be used to send messages to some other transport mechanism such as UUCP. Batched SMTP input is also catered for.

Main 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.

Here is a summary of Exim's main features. More details are given in the sections which follow.

  • 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.
  • Regular expressions are available in a number of configuration parameters.
  • Domain lists can include file lookups, making it possible to support a large number of local domains.
  • Exim has flexible retry algorithms, applicable to mail routing as well as to delivery.
  • Exim contains header and envelope rewriting facilities.
  • Unqualified addresses are accepted only from specified hosts or networks.
  • Exim can perform multiple deliveries down the same SMTP channel after deliveries to a host have been delayed.
  • 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.
  • 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.
  • Exim supports optional checking of incoming return path (sender) and receiver addresses as they are received by SMTP.
  • SMTP calls from specific hosts and networks, optionally from specific idents, can be locked out, and incoming SMTP messages from specific senders can also be locked out.
  • 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.
  • Messages on the queue can be `frozen' and `thawed' by the administrator.
  • 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.
  • Exim stats a user's home directory before looking for a `.forward' file, in order to detect the case of a missing NFS mount.
  • 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.
  • 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.
  • Periodic warnings are automatically sent to messages' senders when delivery is delayed -- the time between warnings is configurable.
  • 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.
  • Exim 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. It always uses `setuid()' when doing local deliveries.
  • 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.
  • Exim contains support for IPv6.
  • 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.