File: spec_1.html

package info (click to toggle)
exim-html 3.20-1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k, sarge, woody
  • size: 2,868 kB
  • ctags: 4,188
  • sloc: makefile: 40; sh: 19
file content (633 lines) | stat: -rw-r--r-- 22,777 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
<HTML>
<HEAD>
<!-- This HTML file has been created by texi2html 1.52
     from spec on 25 November 2000 -->

<TITLE>Exim Specification - 1. Introduction</TITLE>
</HEAD>
<body bgcolor="#FFFFFF" text="#00005A" link="#FF6600" alink="#FF9933" vlink="#990000">
Go to the first, previous, <A HREF="spec_2.html">next</A>, <A HREF="spec_59.html">last</A> section, <A HREF="spec_toc.html">table of contents</A>.
<P><HR><P>


<H1><A NAME="SEC1" HREF="spec_toc.html#TOC1">1. Introduction</A></H1>

<P>
<EM>If I have seen further it is by standing on the shoulders of giants.</EM>
<br>(Isaac Newton).
<P>

</P>
<P>
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, FreeBSD, GNU/Hurd, GNU/Linux, HI-OSF (Hitachi), HP-UX, IRIX, MIPS
RISCOS, NetBSD, OpenBSD, QNX, SCO, SCO SVR4.2 (aka UNIX-SV), Solaris (aka
SunOS5), SunOS4, Tru64-Unix (formerly Digital UNIX, formerly DEC-OSF1), Ultrix,
and Unixware. However, code is not available for determining system load
averages under Ultrix.

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

</P>
<P>
The use, supply or promotion of Exim for the purpose of sending bulk,
unsolicited electronic mail is incompatible with the basic aims of the program,
which revolve around the free provision of a service that enhances the quality
of personal communications. The author of Exim regards indiscriminate
mass-mailing as an antisocial, irresponsible abuse of the Internet.

</P>
<P>
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.

</P>
<P>
I am indebted to my colleague Piete Brooks for originally implementing the
scheme for building Exim for multiple architectures and operating systems, for
porting early versions of Exim to several different versions of Unix, and for
numerous suggestions when I was first developing it. 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.

</P>
<P>
<font color=green>
This document is very much a reference manual; it is not a tutorial. Although
there are some discussions and examples in places, the information is mostly
organized in a way that makes it easy to look up, rather than in a natural
order for sequential reading. Furthermore, the manual aims to cover every
aspect of Exim in detail, including a number of rarely-user, special-purpose
features that are unlikely to be of very wide interest. It is hoped that,
within the next year, a book about Exim will be published which will provide
more in-depth explanatory, introductory, and tutorial material.
</font>

</P>
<P>
This edition of the Exim specification applies to version 3.20 of Exim.
Substantive changes from the 3.10 edition are marked by bars in
the right-hand margin in the PostScript, PDF, and plain text versions of the
document. Changes are not marked in the Texinfo version, because Texinfo
doesn't support change bars. In the HTML version, a different colour is used.
Minor corrections and rewordings are not marked.

</P>
<P>
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 the most significant digit of the fractional part of the version number
changes. However, all changes are noted briefly in the file called
<TT>`doc/ChangeLog'</TT>, and specifications of new features that are not yet in this
manual are placed in <TT>`doc/NewStuff'</TT>.
<font color=green>
Complete lists of options are maintained in <TT>`doc/OptionsLists.txt'</TT>.
</font>

</P>

<P>



<H2><A NAME="SEC2" HREF="spec_toc.html#TOC2">1.1 Web site and Mailing list</A></H2>

<P>
There is a web site at <A HREF="http://www.exim.org">http://www.exim.org</A> by courtesy of Planet Online
Ltd, who are situated in the UK. The site is mirrored in the USA and a number
of of other countries; links to the mirrors are listed on the home page. Planet
Online also run the following mailing lists:

<PRE>
<EM>exim-users@exim.org</EM>              general discussion list
<EM>exim-announce@exim.org</EM>           moderated, low volume announcements list
<font color=green><EM>pop-imap@exim.org</EM>                discussion of POP/IMAP issues
</font>
</PRE>

<P>
You can subscribe to these lists, change your existing subscription,
<font color=green>
and view or search
</font>
the archives via the `mailing lists' link on the Exim home page.

</P>
<P>
By courtesy of Martin Hamilton, there is also an archive of the <EM>exim-users</EM>
list in plain text form at
<A HREF="http://www.roads.lut.ac.uk/lists/exim-users/exim-users.archive">http://www.roads.lut.ac.uk/lists/exim-users/exim-users.archive</A> and in HTML
via Hypermail at <A HREF="http://www.roads.lut.ac.uk/lists/exim-users/">http://www.roads.lut.ac.uk/lists/exim-users/</A>.
The list is also forwarded to
<A HREF="http://www.egroups.com/list/exim-users">http://www.egroups.com/list/exim-users</A>,
which is another archiving system with searching capabilities.

</P>



<H2><A NAME="SEC3" HREF="spec_toc.html#TOC3">1.2 Availability</A></H2>

<P>
The master ftp site for the Exim distribution is

<PRE>
<A HREF="ftp://ftp.csx.cam.ac.uk/pub/software/email/exim">ftp://ftp.csx.cam.ac.uk/pub/software/email/exim</A>
</PRE>

<P>
Those mirror sites that I know about are listed in the file

<PRE>
<A HREF="ftp://ftp.csx.cam.ac.uk/pub/software/email/exim/Mirrors">ftp://ftp.csx.cam.ac.uk/pub/software/email/exim/Mirrors</A>
</PRE>

<P>
<font color=green>
The current release of Exim is always to be found in files called

<PRE>
<TT>`exim-<EM>n.nn</EM>.tar.gz'</TT>
and
<TT>`exim-<EM>n.nn</EM>.tar.bz2'</TT>
</PRE>

<P>
where <EM>n.nn</EM> is the highest such version number in the directory.
The two files contain identical data; the only difference is the type of
compression. The <TT>`.bz2'</TT> file is usually a lot smaller than the <TT>`.gz'</TT> file.
</font>
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

<PRE>
<TT>`exim-patch-<EM>n.nn</EM>-<EM>m.mm</EM>.gz'</TT>
</PRE>

<P>
For each released version, the log of changes is made separately available in
the directory

<PRE>
<A HREF="ftp://ftp.csx.cam.ac.uk/pub/software/email/exim/ChangeLogs">ftp://ftp.csx.cam.ac.uk/pub/software/email/exim/ChangeLogs</A>
</PRE>

<P>
so that it is possible to find out what has changed without having to download
the entire distribution. The main distribution contains ASCII versions of this
specification and other documentation; other formats of the documents are
available in separate files:
<font color=green>

<PRE>
<TT>`exim-html-<EM>n.nn</EM>.tar.gz'</TT>
<TT>`exim-pdf-<EM>n.nn</EM>.tar.gz'</TT>
<TT>`exim-postscript-<EM>n.nn</EM>.tar.gz'</TT>
<TT>`exim-texinfo-<EM>n.nn</EM>.tar.gz'</TT>
</PRE>

<P>
These tar files contain only the <TT>`/doc'</TT> directory, not the complete
distribution, and are also available in <TT>`.bz2'</TT> as well as <TT>`.gz'</TT> forms.
</font>

</P>
<P>
An FAQ is available in two different formats from

<PRE>
<A HREF="ftp://ftp.csx.cam.ac.uk/pub/software/email/exim/FAQ.txt.gz">ftp://ftp.csx.cam.ac.uk/pub/software/email/exim/FAQ.txt.gz</A>
<A HREF="ftp://ftp.csx.cam.ac.uk/pub/software/email/exim/FAQ.html.gz">ftp://ftp.csx.cam.ac.uk/pub/software/email/exim/FAQ.html.gz</A>
</PRE>

<P>
The FAQ and other HTML documentation is also available online at the web site
and its mirrors.

</P>
<P>
At the ftp site, there is a directory called

<PRE>
<A HREF="ftp://ftp.csx.cam.ac.uk/pub/software/email/exim/Contrib/">ftp://ftp.csx.cam.ac.uk/pub/software/email/exim/Contrib/</A>
</PRE>

<P>
which contains miscellaneous files contributed to the Exim community by Exim
users, and there is also a collection of contributed configuration examples in

<PRE>
<A HREF="ftp://ftp.csx.cam.ac.uk/pub/software/email/exim/config.samples.tar.gz">ftp://ftp.csx.cam.ac.uk/pub/software/email/exim/config.samples.tar.gz</A>
</PRE>



<H2><A NAME="SEC4" HREF="spec_toc.html#TOC4">1.3 Limitations</A></H2>

<P>
<A NAME="IDX1"></A>

</P>

<UL>

<LI>

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 <EM>sprintf()</EM> function, which is one
<A NAME="IDX2"></A>
of the main incompatibilities.
<A NAME="IDX3"></A>
<A NAME="IDX4"></A>
<A NAME="IDX5"></A>
It has its own version of <EM>strerror()</EM> for use with SunOS4 and any other system
that lacks this function, and a macro can be defined to turn <EM>memmove()</EM> into
<EM>bcopy()</EM> if necessary.
Exim uses file names that are longer than fourteen characters.

<LI>

Exim is intended for use as an Internet mailer, and therefore handles addresses
in RFC 822 domain format only.
<A NAME="IDX6"></A>
It cannot handle `bang paths', though simple two-component bang paths can be
converted by a straightforward rewriting configuration. This restriction does
not prevent Exim from being interfaced to UUCP, provided domain addresses are
used.

<LI>

<A NAME="IDX7"></A>
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. These are then qualified on
arrival.

<LI>

<A NAME="IDX8"></A>
<A NAME="IDX9"></A>
The only external transport currently implemented is an SMTP transport over a
TCP/IP network (using sockets, including support for IPv6). However, a pipe
transport is available, and there are facilities for writing messages to files
and pipes, optionally in <EM>batched SMTP</EM> format; these facilities can be used
to send messages to some other transport mechanism such as UUCP, provided it
can handle domain-style addresses. Batched SMTP input is also catered for.

<LI>

Exim is not designed for storing mail for dial-in hosts. When the volumes of
such mail are large, it is better to get the messages `delivered' into files
(that is, off Exim's queue) and subsequently passed on to the dial-in hosts by
other means.

<LI>

<font color=green>
It used not to be easy to set up Exim to rewrite addresses only in some copies
of a message and not others, for example, to retain locally-meaningful
addresses locally, but rewrite them for any copies of messages that are sent
off-site. From release 3.20, doing this has been made a lot simpler by adding a
facility for rewriting at transport time.
</font>
</UL>



<H2><A NAME="SEC5" HREF="spec_toc.html#TOC5">1.4 Features</A></H2>

<P>
These are some of the main features of Exim:

</P>

<UL>

<LI>

Exim follows the same general approach of decentralized control that Smail
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.

<LI>

Many configuration options can be given as expansion strings, which are
transformed in various ways when they are used. 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. The ultimate flexibility can be obtained (at a price) by
running a Perl interpreter while expanding a string.

<LI>

Exim has flexible retry algorithms, applicable to directing and routing
addresses as well as to delivery.

<LI>

Exim contains header and envelope rewriting facilities.

<LI>

Unqualified addresses are accepted only from specified hosts or networks.

<LI>

Exim can perform multiple deliveries down the same SMTP channel after deliveries
have been delayed.

<LI>

Exim can be configured to do local deliveries immediately but to leave remote
(SMTP) 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.

<LI>

Remote deliveries of the same message to different hosts can optionally be done
in parallel.

<LI>

Incoming SMTP messages start delivery as soon as they are received, without
waiting for the SMTP call to close.

<LI>

Exim has support for the SMTP AUTH extension for authenticating clients,
<font color=green>
and for the STARTTLS extension for setting up encrypted connections.
</font>

<LI>

Perl-compatible regular expressions are available in a number of configuration
parameters.

<LI>

Domain lists can include file lookups, making it possible to support very large
numbers of local domains.

<LI>

Exim supports optional checking of incoming return path (sender) and receiver
addresses as they are received by SMTP.

<LI>

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. Exim also supports the use of the Realtime Blocking List (RBL).

<LI>

Hosts that are permitted to relay mail through a machine to another external
domain can be controlled by IP number or IP network number. Relay control by
recipient domain and sender address is also available.

<LI>

Messages on the queue can be `frozen' and `thawed' by the administrator.

<LI>

Exim can handle a number of independent local domains on the same machine; each
domain can have its own alias files, etc. This facility is sometimes known as
`virtual domains'.

<LI>

Simple mailing lists can be handled directly by Exim itself (but for `serious'
mailing list operations, it is best to use it in conjunction with specialist
mailing list software).

<LI>

Exim stats a user's home directory before looking for a <TT>`.forward'</TT> file, in
order to detect the case of a missing NFS mount. Delivery is delayed if the
directory is unavailable.

<LI>

Exim contains an optional built-in mail filtering facility. This can be
configured to allow users to provide personal filter files, and it is also
possible for a system-wide filter file to be applied to every message.

<LI>

There is support for multiple user mailboxes controlled by prefixes or suffixes
on the user name, either via the filter mechanism or through multiple
<TT>`.forward'</TT> files.

<LI>

Periodic warnings are automatically sent to messages' senders when delivery is
delayed -- the time between warnings is configurable. The warnings can be
made conditional on the contents of the message.

<LI>

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.
There is support for the ETRN command in SMTP to interface to this.

<LI>

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. See chapter
55 for a discussion of security issues.

<LI>

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. Alternative wording for these messages can be provided in a separate
file.

<LI>

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. However, all such actions are also available
from the command line interface.
</UL>



<H2><A NAME="SEC6" HREF="spec_toc.html#TOC6">1.5 Support for IPv6</A></H2>

<P>
<font color=green>
IPv6 is the next generation of IP protocol which will in time replace IPv4; it
is currently in an experimental state. A number of vendors have already
released IPv6 versions of their systems and networking libraries.

</P>
<P>
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. In the DNS, two new
record types, A6 and AAAA, are used for finding IPv6 addresses. A6 records are
supposed, in time, to supersede AAAA records. At present, to be on the safe
side, when trying to find host addresses from the DNS, Exim looks for all three
record types: A6, AAAA, and A, in that order, and builds a combined list of
addresses found (dropping any duplicates). In future this may change (for
example, to stop once one kind of address has been found).
</font>

</P>



<H2><A NAME="SEC7" HREF="spec_toc.html#TOC7">1.6 Calling interface</A></H2>

<P>
Like many MTAs, Exim has adopted the Sendmail interface so that it can be a
straight replacement for <TT>`/usr/lib/sendmail'</TT> or <TT>`/usr/sbin/sendmail'</TT>. 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.

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

</P>
<P>
Sendmail uses the -<EM>bi</EM> 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.

</P>
<P>
The run time 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.

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

</P>



<H2><A NAME="SEC8" HREF="spec_toc.html#TOC8">1.7 Terminology</A></H2>

<P>
<A NAME="IDX10"></A>
<A NAME="IDX11"></A>
The term <EM>local part</EM>, 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 <EM>domain</EM> or <EM>mail domain</EM>.

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

</P>
<P>
<A NAME="IDX12"></A>
<A NAME="IDX13"></A>
<EM>Local domains</EM> are mail domains for which the current host is responsible
for handling the entire address; 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 <EM>remote domains</EM>, which normally cause the message to be
transmitted to some other host.

</P>
<P>
The 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.

</P>
<P>
<A NAME="IDX14"></A>
<A NAME="IDX15"></A>
The terms <EM>local delivery</EM> and <EM>remote delivery</EM> 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.

</P>
<P>
<A NAME="IDX16"></A>
The term <EM>default</EM> appears frequently in this manual. It is used to qualify a
value which is used in the absence of any setting in the configuration. It may
also qualify an action which is taken unless a configuration setting specifies
otherwise.

</P>
<P>
The term <EM>defer</EM> is used when the delivery of a message to a specific
destination cannot immediately take place for some reason (a remote host may be
down, or a user's local mailbox may be full). Such deliveries are <EM>deferred</EM>
until a later time.

</P>
<P>
<A NAME="IDX17"></A>
<A NAME="IDX18"></A>
The term <EM>mailmaster</EM> 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.

</P>
<P>
<A NAME="IDX19"></A>
The term <EM>queue</EM> 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.

</P>
<P>
<A NAME="IDX20"></A>
The term <EM>queue-runner</EM> 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 <EM>runq</EM>, but in Exim
the waiting messages are normally processed in an unpredictable order.

</P>

<P><HR><P>
Go to the first, previous, <A HREF="spec_2.html">next</A>, <A HREF="spec_59.html">last</A> section, <A HREF="spec_toc.html">table of contents</A>.
</BODY>
</HTML>