Commit | Line | Data |
---|---|---|
168e428f PH |
1 | //////////////////////////////////////////////////////////////////////////// |
2 | $Cambridge: exim/doc/doc-docbook/spec.ascd,v 1.1 2005/06/16 10:32:31 ph10 Exp $ | |
3 | ||
4 | This is the primary source of the Exim Manual. It is an AsciiDoc document | |
5 | that is converted into DocBook XML for subsequent conversion into printing | |
6 | and online formats. The markup used herein is traditional AsciiDoc markup, | |
7 | with some extras. The markup is summarized in a file called AdMarkup.txt. A | |
8 | private AsciiDoc configuration file specifies how the extra markup is to be | |
9 | translated into DocBook XML. You MUST use this private AsciiDoc markup if you | |
10 | want to get sensible results from processing this document. | |
11 | //////////////////////////////////////////////////////////////////////////// | |
12 | ||
13 | ||
14 | ||
15 | //////////////////////////////////////////////////////////////////////////// | |
16 | I am abusing the <abstract> DocBook element as the only trivial way of getting | |
17 | this information onto the title verso page in the printed renditions. A better | |
18 | title page would be a useful improvement. The <abstract> element is removed by | |
19 | preprocessing for the HTML renditions, and the whole <docbookinfo> element is | |
20 | removed for ascii output formats. | |
21 | //////////////////////////////////////////////////////////////////////////// | |
22 | ||
23 | Specification of the Exim Mail Transfer Agent | |
24 | ============================================= | |
25 | :abstract: University of Cambridge Computing Service, New Museums Site, Pembroke Street, Cambridge CB2 3QH, England | |
26 | :author: Philip Hazel | |
27 | :copyright: University of Cambridge | |
28 | :cpyear: 2005 | |
29 | :date: 13 May 2005 | |
30 | :doctitleabbrev: The Exim MTA | |
31 | :revision: 4.50 | |
32 | ||
33 | ||
34 | ////////////////////////////////////////////////////////////////////////////// | |
35 | ***WARNING*** Do not put anything, not even a titleabbrev, setting before | |
36 | the first chapter (luckily it does not need one) because if you do, AsciiDoc | |
37 | creates an empty <preface> element, which we do not want. | |
38 | ////////////////////////////////////////////////////////////////////////////// | |
39 | ||
40 | Introduction | |
41 | ------------ | |
42 | ||
43 | //////////////////////////////////////////////////////////////////////////// | |
44 | These are definitions of AsciiDoc "attributes" that are in effect "variables" | |
45 | whose values can be substituted. The first makes index entries shorter. The | |
46 | second avoids problems with literal asterisks getting tangled up with bold | |
47 | emphasis quotes. The others are here for convenience of editing. | |
48 | ||
49 | ***WARNING*** The positioning of these definitions, after the first Chapter | |
50 | title, seems to be important. If they are placed earlier, they give rise to | |
51 | incorrect XML. | |
52 | //////////////////////////////////////////////////////////////////////////// | |
53 | ||
54 | :ACL: access control lists (ACLs) | |
55 | :star: * | |
56 | :previousversion: 4.40 | |
57 | :version: 4.50 | |
58 | ||
59 | ||
60 | //////////////////////////////////////////////////////////////////////////// | |
61 | This chunk of literal XML implements index entries of the form "x, see y" and | |
62 | "x, see also y". It didn't seem worth inventing AsciiDoc markup for this, | |
63 | because is it not something that is likely to change often. | |
64 | //////////////////////////////////////////////////////////////////////////// | |
65 | ||
66 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |
67 | <indexterm role="concept"> | |
68 | <primary>$1, $2, etc.</primary> | |
69 | <see><emphasis>numerical variables</emphasis></see> | |
70 | </indexterm> | |
71 | <indexterm role="concept"> | |
72 | <primary>address</primary> | |
73 | <secondary>rewriting</secondary> | |
74 | <see><emphasis>rewriting</emphasis></see> | |
75 | </indexterm> | |
76 | <indexterm role="concept"> | |
77 | <primary>CR character</primary> | |
78 | <see><emphasis>carriage return</emphasis></see> | |
79 | </indexterm> | |
80 | <indexterm role="concept"> | |
81 | <primary>CRL</primary> | |
82 | <see><emphasis>certificate revocation list</emphasis></see> | |
83 | </indexterm> | |
84 | <indexterm role="concept"> | |
85 | <primary>delivery</primary> | |
86 | <secondary>failure report</secondary> | |
87 | <see><emphasis>bounce message</emphasis></see> | |
88 | </indexterm> | |
89 | <indexterm role="concept"> | |
90 | <primary>dialup</primary> | |
91 | <see><emphasis>intermittently connected hosts</emphasis></see> | |
92 | </indexterm> | |
93 | <indexterm role="concept"> | |
94 | <primary>exiscan</primary> | |
95 | <see><emphasis>content scanning</emphasis></see> | |
96 | </indexterm> | |
97 | <indexterm role="concept"> | |
98 | <primary>failover</primary> | |
99 | <see><emphasis>fallback</emphasis></see> | |
100 | </indexterm> | |
101 | <indexterm role="concept"> | |
102 | <primary>fallover</primary> | |
103 | <see><emphasis>fallback</emphasis></see> | |
104 | </indexterm> | |
105 | <indexterm role="concept"> | |
106 | <primary>filter</primary> | |
107 | <secondary>Sieve</secondary> | |
108 | <see><emphasis>Sieve filter</emphasis></see> | |
109 | </indexterm> | |
110 | <indexterm role="concept"> | |
111 | <primary>ident</primary> | |
112 | <see><emphasis>RFC 1413</emphasis></see> | |
113 | </indexterm> | |
114 | <indexterm role="concept"> | |
115 | <primary>LF character</primary> | |
116 | <see><emphasis>linefeed</emphasis></see> | |
117 | </indexterm> | |
118 | <indexterm role="concept"> | |
119 | <primary>maximum</primary> | |
120 | <see><emphasis>limit</emphasis></see> | |
121 | </indexterm> | |
122 | <indexterm role="concept"> | |
123 | <primary>no_<emphasis>xxx</emphasis></primary> | |
124 | <see>entry for xxx</see> | |
125 | </indexterm> | |
126 | <indexterm role="concept"> | |
127 | <primary>NUL</primary> | |
128 | <see><emphasis>binary zero</emphasis></see> | |
129 | </indexterm> | |
130 | <indexterm role="concept"> | |
131 | <primary>passwd file</primary> | |
132 | <see><emphasis>/etc/passwd</emphasis></see> | |
133 | </indexterm> | |
134 | <indexterm role="concept"> | |
135 | <primary>process id</primary> | |
136 | <see><emphasis>pid</emphasis></see> | |
137 | </indexterm> | |
138 | <indexterm role="concept"> | |
139 | <primary>RBL</primary> | |
140 | <see><emphasis>DNS list</emphasis></see> | |
141 | </indexterm> | |
142 | <indexterm role="concept"> | |
143 | <primary>redirection</primary> | |
144 | <see><emphasis>address redirection</emphasis></see> | |
145 | </indexterm> | |
146 | <indexterm role="concept"> | |
147 | <primary>return path</primary> | |
148 | <seealso><emphasis>envelope sender</emphasis></seealso> | |
149 | </indexterm> | |
150 | <indexterm role="concept"> | |
151 | <primary>scanning</primary> | |
152 | <see><emphasis>content scanning</emphasis></see> | |
153 | </indexterm> | |
154 | <indexterm role="concept"> | |
155 | <primary>SSL</primary> | |
156 | <see><emphasis>TLS</emphasis></see> | |
157 | </indexterm> | |
158 | <indexterm role="concept"> | |
159 | <primary>string</primary> | |
160 | <secondary>expansion</secondary> | |
161 | <see><emphasis>expansion</emphasis></see> | |
162 | </indexterm> | |
163 | <indexterm role="concept"> | |
164 | <primary>top bit</primary> | |
165 | <see><emphasis>8-bit characters</emphasis></see> | |
166 | </indexterm> | |
167 | <indexterm role="concept"> | |
168 | <primary>variables</primary> | |
169 | <see><emphasis>expansion, variables</emphasis></see> | |
170 | </indexterm> | |
171 | <indexterm role="concept"> | |
172 | <primary>zero, binary</primary> | |
173 | <see><emphasis>binary zero</emphasis></see> | |
174 | </indexterm> | |
175 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |
176 | ||
177 | ||
178 | //////////////////////////////////////////////////////////////////////////// | |
179 | OK, now we start with the real data for this first chapter. | |
180 | //////////////////////////////////////////////////////////////////////////// | |
181 | ||
182 | Exim is a mail transfer agent (MTA) for hosts that are running Unix or | |
183 | Unix-like operating systems. It was designed on the assumption that it would be | |
184 | run on hosts that are permanently connected to the Internet. However, it can be | |
185 | used on intermittently connected hosts with suitable configuration adjustments. | |
186 | ||
187 | Configuration files currently exist for the following operating systems: AIX, | |
188 | BSD/OS (aka BSDI), Darwin (Mac OS X), DGUX, FreeBSD, GNU/Hurd, GNU/Linux, | |
189 | HI-OSF (Hitachi), HP-UX, IRIX, MIPS RISCOS, NetBSD, OpenBSD, QNX, SCO, SCO | |
190 | SVR4.2 (aka UNIX-SV), Solaris (aka SunOS5), SunOS4, Tru64-Unix (formerly | |
191 | Digital UNIX, formerly DEC-OSF1), Ultrix, and Unixware. Some of these operating | |
192 | systems are no longer current and cannot easily be tested, so the configuration | |
193 | files may no longer work in practice. | |
194 | ||
195 | There are also configuration files for compiling Exim in the Cygwin environment | |
196 | that can be installed on systems running Windows. However, this document does | |
197 | not contain any information about running Exim in the Cygwin environment. | |
198 | ||
199 | The terms and conditions for the use and distribution of Exim are contained in | |
200 | the file _NOTICE_. Exim is distributed under the terms of the GNU General | |
201 | Public Licence, a copy of which may be found in the file _LICENCE_. | |
202 | ||
203 | The use, supply or promotion of Exim for the purpose of sending bulk, | |
204 | unsolicited electronic mail is incompatible with the basic aims of the program, | |
205 | which revolve around the free provision of a service that enhances the quality | |
206 | of personal communications. The author of Exim regards indiscriminate | |
207 | mass-mailing as an antisocial, irresponsible abuse of the Internet. | |
208 | ||
209 | Exim owes a great deal to Smail 3 and its author, Ron Karr. Without the | |
210 | experience of running and working on the Smail 3 code, I could never have | |
211 | contemplated starting to write a new MTA. Many of the ideas and user interfaces | |
212 | were originally taken from Smail 3, though the actual code of Exim is entirely | |
213 | new, and has developed far beyond the initial concept. | |
214 | ||
215 | Many people, both in Cambridge and around the world, have contributed to the | |
216 | development and the testing of Exim, and to porting it to various operating | |
217 | systems. I am grateful to them all. The distribution now contains a file called | |
218 | _ACKNOWLEDGMENTS_, in which I have started recording the names of | |
219 | contributors. | |
220 | ||
221 | ||
222 | ||
223 | Exim documentation | |
224 | ~~~~~~~~~~~~~~~~~~ | |
225 | [revisionflag="changed"] | |
226 | cindex:[documentation] | |
227 | This edition of the Exim specification applies to version {version} of Exim. | |
228 | Substantive changes from the {previousversion} edition are marked in some | |
229 | renditions of the document; this paragraph is so marked if the rendition is | |
230 | capable of showing a change indicator. | |
231 | ||
232 | This document is very much a reference manual; it is not a tutorial. The reader | |
233 | is expected to have some familiarity with the SMTP mail transfer protocol and | |
234 | with general Unix system administration. Although there are some discussions | |
235 | and examples in places, the information is mostly organized in a way that makes | |
236 | it easy to look up, rather than in a natural order for sequential reading. | |
237 | Furthermore, the manual aims to cover every aspect of Exim in detail, including | |
238 | a number of rarely-used, special-purpose features that are unlikely to be of | |
239 | very wide interest. | |
240 | ||
241 | cindex:[books about Exim] | |
242 | An ``easier'' discussion of Exim which provides more in-depth explanatory, | |
243 | introductory, and tutorial material can be found in a book entitled | |
244 | 'The Exim SMTP Mail Server', published by UIT Cambridge | |
245 | (*http://www.uit.co.uk/exim-book/[]*). | |
246 | ||
247 | This book also contains a chapter that gives a general introduction to SMTP and | |
248 | Internet mail. Inevitably, however, the book is unlikely to be fully up-to-date | |
249 | with the latest release of Exim. (Note that the earlier book about Exim, | |
250 | published by O'Reilly, covers Exim 3, and many things have changed in Exim 4.) | |
251 | ||
252 | cindex:[_doc/NewStuff_] | |
253 | cindex:[_doc/ChangeLog_] | |
254 | cindex:[change log] | |
255 | As the program develops, there may be features in newer versions that have not | |
256 | yet made it into this document, which is updated only when the most significant | |
257 | digit of the fractional part of the version number changes. Specifications of | |
258 | new features that are not yet in this manual are placed in the file | |
259 | _doc/NewStuff_ in the Exim distribution. | |
260 | ||
261 | Some features may be classified as ``experimental''. These may change | |
262 | incompatibly while they are developing, or even be withdrawn. For this reason, | |
263 | they are not documented in this manual. Information about experimental features | |
264 | can be found in the file _doc/experimental.txt_. | |
265 | ||
266 | All changes to the program (whether new features, bug fixes, or other kinds of | |
267 | change) are noted briefly in the file called _doc/ChangeLog_. | |
268 | ||
269 | cindex:[_doc/spec.txt_] | |
270 | This specification itself is available as an ASCII file in _doc/spec.txt_ so | |
271 | that it can easily be searched with a text editor. Other files in the _doc_ | |
272 | directory are: | |
273 | ||
274 | [frame="none"] | |
275 | `--------------------`------------------------------------------ | |
276 | _OptionLists.txt_ list of all options in alphabetical order | |
277 | _dbm.discuss.txt_ discussion about DBM libraries | |
278 | _exim.8_ a man page of Exim's command line options | |
279 | _experimental.txt_ documentation of experimental features | |
280 | _filter.txt_ specification of the filter language | |
281 | _pcrepattern.txt_ specification of PCRE regular expressions | |
282 | _pcretest.txt_ specification of the PCRE testing program | |
283 | _Exim3.upgrade_ upgrade notes from release 2 to release 3 | |
284 | _Exim4.upgrade_ upgrade notes from release 3 to release 4 | |
285 | ---------------------------------------------------------------- | |
286 | ||
287 | The main specification and the specification of the filtering language are also | |
288 | available in other formats (HTML, PostScript, PDF, and Texinfo). Section | |
289 | <<SECTavail>> below tells you how to get hold of these. | |
290 | ||
291 | ||
292 | ||
293 | FTP and web sites | |
294 | ~~~~~~~~~~~~~~~~~ | |
295 | cindex:[web site] | |
296 | cindex:[FTP site] | |
297 | The primary distribution site for Exim is currently the University of | |
298 | Cambridge's FTP site, whose contents are described in 'Where to find the Exim | |
299 | distribution' below. In addition, there is a web site and an FTP site at | |
300 | %exim.org%. These are now also hosted at the University of Cambridge. The | |
301 | %exim.org% site was previously hosted for a number of years by Energis Squared, | |
302 | formerly Planet Online Ltd, whose support I gratefully acknowledge. | |
303 | ||
304 | As well as Exim distribution tar files, the Exim web site contains a number of | |
305 | differently formatted versions of the documentation, including the | |
306 | cindex:[FAQ] FAQ in both text and HTML formats. The HTML version comes with | |
307 | a keyword-in-context index. A recent addition to the online information is the | |
308 | cindex:[wiki] | |
309 | Exim wiki (*http://www.exim.org/eximwiki/[]*). | |
310 | We hope that this will make it easier for Exim users to contribute examples, | |
311 | tips, and know-how for the benefit of others. | |
312 | ||
313 | ||
314 | ||
315 | Mailing lists | |
316 | ~~~~~~~~~~~~~ | |
317 | cindex:[mailing lists,for Exim users] | |
318 | The following are the three main Exim mailing lists: | |
319 | ||
320 | [frame="none"] | |
321 | `-------------------------------`---------------------------------------- | |
322 | 'exim-users@exim.org' general discussion list | |
323 | 'exim-dev@exim.org' discussion of bugs, enhancements, etc. | |
324 | 'exim-announce@exim.org' moderated, low volume announcements list | |
325 | ------------------------------------------------------------------------- | |
326 | ||
327 | You can subscribe to these lists, change your existing subscriptions, and view | |
328 | or search the archives via the mailing lists link on the Exim home page. The | |
329 | 'exim-users' mailing list is also forwarded to | |
330 | *http://www.egroups.com/list/exim-users[]*, an archiving system with searching | |
331 | capabilities. | |
332 | ||
333 | ||
334 | Exim training | |
335 | ~~~~~~~~~~~~~ | |
336 | cindex:[training courses] | |
337 | From time to time (approximately annually at the time of writing), | |
338 | lecture-based training courses are run by the author of Exim in Cambridge, UK. | |
339 | Details can be found on the web site | |
340 | *http://www-tus.csx.cam.ac.uk/courses/exim/[]*. | |
341 | ||
342 | ||
343 | Bug reports | |
344 | ~~~~~~~~~~~ | |
345 | cindex:[bug reports] | |
346 | cindex:[reporting bugs] | |
347 | Reports of obvious bugs should be emailed to 'bugs@exim.org'. However, if | |
348 | you are unsure whether some behaviour is a bug or not, the best thing to do is | |
349 | to post a message to the 'exim-users' mailing list and have it discussed. | |
350 | ||
351 | ||
352 | ||
353 | [[SECTavail]] | |
354 | Where to find the Exim distribution | |
355 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
356 | cindex:[FTP site] | |
357 | cindex:[distribution,ftp site] | |
358 | The master ftp site for the Exim distribution is | |
359 | ||
360 | &&& | |
361 | *ftp://ftp.csx.cam.ac.uk/pub/software/email/exim[]* | |
362 | &&& | |
363 | ||
364 | This is mirrored by | |
365 | ||
366 | &&& | |
367 | *ftp://ftp.exim.org/pub/exim[]* | |
368 | &&& | |
369 | ||
370 | The file references that follow are relative to the _exim_ directories at these | |
371 | sites. There are now quite a number of independent mirror sites around the | |
372 | world. Those that I know about are listed in the file called _Mirrors_. | |
373 | ||
374 | Within the _exim_ directory there are subdirectories called _exim3_ (for | |
375 | previous Exim 3 distributions), _exim4_ (for the latest Exim 4 | |
376 | distributions), and _Testing_ for testing versions. In the _exim4_ | |
377 | subdirectory, the current release can always be found in files called | |
378 | ||
379 | &&& | |
380 | _exim-n.nn.tar.gz_ | |
381 | _exim-n.nn.tar.bz2_ | |
382 | &&& | |
383 | ||
384 | where 'n.nn' is the highest such version number in the directory. The two | |
385 | files contain identical data; the only difference is the type of compression. | |
386 | The _.bz2_ file is usually a lot smaller than the _.gz_ file. | |
387 | ||
388 | cindex:[distribution,signing details] | |
389 | cindex:[distribution,public key] | |
390 | cindex:[public key for signed distribution] | |
391 | The distributions are currently signed with Philip Hazel's GPG key. The | |
392 | corresponding public key is available from a number of keyservers, and there is | |
393 | also a copy in the file _Public-Key_. The signatures for the tar bundles are | |
394 | in: | |
395 | ||
396 | &&& | |
397 | _exim-n.nn.tar.gz.sig_ | |
398 | _exim-n.nn.tar.bz2.sig_ | |
399 | &&& | |
400 | ||
401 | For each released version, the log of changes is made separately available in a | |
402 | separate file in the directory _ChangeLogs_ so that it is possible to | |
403 | find out what has changed without having to download the entire distribution. | |
404 | ||
405 | cindex:[documentation,available formats] | |
406 | The main distribution contains ASCII versions of this specification and other | |
407 | documentation; other formats of the documents are available in separate files | |
408 | inside the _exim4_ directory of the FTP site: | |
409 | ||
410 | &&& | |
411 | _exim-html-n.nn.tar.gz_ | |
412 | _exim-pdf-n.nn.tar.gz_ | |
413 | _exim-postscript-n.nn.tar.gz_ | |
414 | _exim-texinfo-n.nn.tar.gz_ | |
415 | &&& | |
416 | ||
417 | These tar files contain only the _doc_ directory, not the complete | |
418 | distribution, and are also available in _.bz2_ as well as _.gz_ forms. | |
419 | cindex:[FAQ] | |
420 | The FAQ is available for downloading in two different formats in these files: | |
421 | ||
422 | &&& | |
423 | _exim4/FAQ.txt.gz_ | |
424 | _exim4/FAQ.html.tar.gz_ | |
425 | &&& | |
426 | ||
427 | The first of these is a single ASCII file that can be searched with a text | |
428 | editor. The second is a directory of HTML files, normally accessed by starting | |
429 | at _index.html_. The HTML version of the FAQ (which is also included in the | |
430 | HTML documentation tarbundle) includes a keyword-in-context index, which is | |
431 | often the most convenient way of finding your way around. | |
432 | ||
433 | ||
434 | Wish list | |
435 | ~~~~~~~~~ | |
436 | cindex:[wish list] | |
437 | A wish list is maintained, containing ideas for new features that have been | |
438 | submitted. From time to time the file is exported to the ftp site into the file | |
439 | _exim4/WishList_. Items are removed from the list if they get implemented. | |
440 | ||
441 | ||
442 | ||
443 | Contributed material | |
444 | ~~~~~~~~~~~~~~~~~~~~ | |
445 | cindex:[contributed material] | |
446 | At the ftp site, there is a directory called _Contrib_ that contains | |
447 | miscellaneous files contributed to the Exim community by Exim users. There is | |
448 | also a collection of contributed configuration examples in | |
449 | _exim4/config.samples.tar.gz_. These samples are referenced from the FAQ. | |
450 | ||
451 | ||
452 | ||
453 | Limitations | |
454 | ~~~~~~~~~~~ | |
455 | - cindex:[limitations of Exim] | |
456 | Exim is designed for use as an Internet MTA, and therefore handles addresses | |
457 | in RFC 2822 domain format only. | |
458 | cindex:[bang paths,not handled by Exim] | |
459 | It cannot handle UUCP ``bang paths'', though simple two-component bang paths can | |
460 | be converted by a straightforward rewriting configuration. This restriction | |
461 | does not prevent Exim from being interfaced to UUCP as a transport mechanism, | |
462 | provided that domain addresses are used. | |
463 | ||
464 | - cindex:[domainless addresses] | |
465 | cindex:[address,without domain] | |
466 | Exim insists that every address it handles has a domain attached. For incoming | |
467 | local messages, domainless addresses are automatically qualified with a | |
468 | configured domain value. Configuration options specify from which remote | |
469 | systems unqualified addresses are acceptable. These are then qualified on | |
470 | arrival. | |
471 | ||
472 | - cindex:[transport,external] | |
473 | cindex:[external transports] | |
474 | The only external transport currently implemented is an SMTP transport over a | |
475 | TCP/IP network (using sockets, including support for IPv6). However, a pipe | |
476 | transport is available, and there are facilities for writing messages to files | |
477 | and pipes, optionally in 'batched SMTP' format; these facilities can be used | |
478 | to send messages to some other transport mechanism such as UUCP, provided it | |
479 | can handle domain-style addresses. Batched SMTP input is also catered for. | |
480 | ||
481 | - Exim is not designed for storing mail for dial-in hosts. When the volumes of | |
482 | such mail are large, it is better to get the messages ``delivered'' into files | |
483 | (that is, off Exim's queue) and subsequently passed on to the dial-in hosts by | |
484 | other means. | |
485 | ||
486 | - Although Exim does have basic facilities for scanning incoming messages, these | |
487 | are not comprehensive enough to do full virus or spam scanning. Such operations | |
488 | are best carried out using additional specialized software packages. If you | |
489 | compile Exim with the content-scanning extension, straightforward interfaces to | |
490 | a number of common scanners are provided. | |
491 | ||
492 | ||
493 | ||
494 | ||
495 | ||
496 | Run time configuration | |
497 | ~~~~~~~~~~~~~~~~~~~~~~ | |
498 | Exim's run time configuration is held in a single text file that is divided | |
499 | into a number of sections. The entries in this file consist of keywords and | |
500 | values, in the style of Smail 3 configuration files. A default configuration | |
501 | file which is suitable for simple online installations is provided in the | |
502 | distribution, and is described in chapter <<CHAPdefconfil>> below. | |
503 | ||
504 | ||
505 | ||
506 | Calling interface | |
507 | ~~~~~~~~~~~~~~~~~ | |
508 | cindex:[Sendmail compatibility,command line interface] | |
509 | Like many MTAs, Exim has adopted the Sendmail command line interface so that it | |
510 | can be a straight replacement for _/usr/lib/sendmail_ or | |
511 | _/usr/sbin/sendmail_ when sending mail, but you do not need to know anything | |
512 | about Sendmail in order to run Exim. For actions other than sending messages, | |
513 | Sendmail-compatible options also exist, but those that produce output (for | |
514 | example, %-bp%, which lists the messages on the queue) do so in Exim's own | |
515 | format. There are also some additional options that are compatible with Smail | |
516 | 3, and some further options that are new to Exim. Chapter <<CHAPcommandline>> | |
517 | documents all Exim's command line options. This information is automatically | |
518 | made into the man page that forms part of the Exim distribution. | |
519 | ||
520 | Control of messages on the queue can be done via certain privileged command | |
521 | line options. There is also an optional monitor program called 'eximon', which | |
522 | displays current information in an X window, and which contains a menu | |
523 | interface to Exim's command line administration options. | |
524 | ||
525 | ||
526 | ||
527 | Terminology | |
528 | ~~~~~~~~~~~ | |
529 | cindex:[terminology definitions] | |
530 | cindex:[body of message,definition of] | |
531 | The 'body' of a message is the actual data that the sender wants to transmit. | |
532 | It is the last part of a message, and is separated from the 'header' (see | |
533 | below) by a blank line. | |
534 | ||
535 | cindex:[bounce message,definition of] | |
536 | When a message cannot be delivered, it is normally returned to the sender in a | |
537 | delivery failure message or a ``non-delivery report'' (NDR). The term 'bounce' | |
538 | is commonly used for this action, and the error reports are often called | |
539 | 'bounce messages'. This is a convenient shorthand for ``delivery failure error | |
540 | report''. Such messages have an empty sender address in the message's | |
541 | 'envelope' (see below) to ensure that they cannot themselves give rise to | |
542 | further bounce messages. | |
543 | ||
544 | The term 'default' appears frequently in this manual. It is used to qualify a | |
545 | value which is used in the absence of any setting in the configuration. It may | |
546 | also qualify an action which is taken unless a configuration setting specifies | |
547 | otherwise. | |
548 | ||
549 | The term 'defer' is used when the delivery of a message to a specific | |
550 | destination cannot immediately take place for some reason (a remote host may be | |
551 | down, or a user's local mailbox may be full). Such deliveries are 'deferred' | |
552 | until a later time. | |
553 | ||
554 | The word 'domain' is sometimes used to mean all but the first component of a | |
555 | host's name. It is 'not' used in that sense here, where it normally | |
556 | refers to the part of an email address following the @ sign. | |
557 | ||
558 | cindex:[envelope, definition of] | |
559 | cindex:[sender,definition of] | |
560 | A message in transit has an associated 'envelope', as well as a header and a | |
561 | body. The envelope contains a sender address (to which bounce messages should | |
562 | be delivered), and any number of recipient addresses. References to the | |
563 | sender or the recipients of a message usually mean the addresses in the | |
564 | envelope. An MTA uses these addresses for delivery, and for returning bounce | |
565 | messages, not the addresses that appear in the header lines. | |
566 | ||
567 | cindex:[message header, definition of] | |
568 | cindex:[header section,definition of] | |
569 | The 'header' of a message is the first part of a message's text, consisting | |
570 | of a number of lines, each of which has a name such as 'From:', 'To:', | |
571 | 'Subject:', etc. Long header lines can be split over several text lines by | |
572 | indenting the continuations. The header is separated from the body by a blank | |
573 | line. | |
574 | ||
575 | cindex:[local part,definition of] | |
576 | cindex:[domain,definition of] | |
577 | The term 'local part', which is taken from RFC 2822, is used to refer to that | |
578 | part of an email address that precedes the @ sign. The part that follows the | |
579 | @ sign is called the 'domain' or 'mail domain'. | |
580 | ||
581 | cindex:[local delivery,definition of] | |
582 | cindex:[remote delivery, definition of] | |
583 | The terms 'local delivery' and 'remote delivery' are used to distinguish | |
584 | delivery to a file or a pipe on the local host from delivery by SMTP over | |
585 | TCP/IP to a remote host. | |
586 | ||
587 | cindex:[return path,definition of] | |
588 | 'Return path' is another name that is used for the sender address in a | |
589 | message's envelope. | |
590 | ||
591 | cindex:[queue,definition of] | |
592 | The term 'queue' is used to refer to the set of messages awaiting delivery, | |
593 | because this term is in widespread use in the context of MTAs. However, in | |
594 | Exim's case the reality is more like a pool than a queue, because there is | |
595 | normally no ordering of waiting messages. | |
596 | ||
597 | cindex:[queue runner,definition of] | |
598 | The term 'queue runner' is used to describe a process that scans the queue | |
599 | and attempts to deliver those messages whose retry times have come. This term | |
600 | is used by other MTAs, and also relates to the command %runq%, but in Exim | |
601 | the waiting messages are normally processed in an unpredictable order. | |
602 | ||
603 | cindex:[spool directory,definition of] | |
604 | The term 'spool directory' is used for a directory in which Exim keeps the | |
605 | messages on its queue -- that is, those that it is in the process of | |
606 | delivering. This should not be confused with the directory in which local | |
607 | mailboxes are stored, which is called a ``spool directory'' by some people. In | |
608 | the Exim documentation, ``spool'' is always used in the first sense. | |
609 | ||
610 | ||
611 | ||
612 | ||
613 | ||
614 | ||
615 | //////////////////////////////////////////////////////////////////////////// | |
616 | //////////////////////////////////////////////////////////////////////////// | |
617 | ||
618 | Incorporated code | |
619 | ----------------- | |
620 | cindex:[incorporated code] | |
621 | cindex:[regular expressions,library] | |
622 | cindex:[PCRE] | |
623 | A number of pieces of external code are included in the Exim distribution. | |
624 | ||
625 | - Regular expressions are supported in the main Exim program and in the Exim | |
626 | monitor using the freely-distributable PCRE library, copyright (c) University | |
627 | of Cambridge. The source is distributed in the directory _src/pcre_. However, | |
628 | this is a cut-down version of PCRE. If you want to use the PCRE library in | |
629 | other programs, you should obtain and install the full version from | |
630 | *ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre[]*. | |
631 | ||
632 | - cindex:[cdb,acknowledgement] | |
633 | Support for the cdb (Constant DataBase) lookup method is provided by code | |
634 | contributed by Nigel Metheringham of (at the time he contributed it) Planet | |
635 | Online Ltd. which contains the following statements: | |
636 | + | |
637 | Copyright (c) 1998 Nigel Metheringham, Planet Online Ltd | |
638 | + | |
639 | This program is free software; you can redistribute it and/or modify it under | |
640 | the terms of the GNU General Public License as published by the Free Software | |
641 | Foundation; either version 2 of the License, or (at your option) any later | |
642 | version. | |
643 | + | |
644 | This code implements Dan Bernstein's Constant DataBase (cdb) spec. Information, | |
645 | the spec and sample code for cdb can be obtained from | |
646 | *http://www.pobox.com/{tl}djb/cdb.html[]*. This implementation borrows some code | |
647 | from Dan Bernstein's implementation (which has no license restrictions applied | |
648 | to it). | |
649 | + | |
650 | The implementation is completely contained within the code of Exim. | |
651 | It does not link against an external cdb library. | |
652 | ||
653 | - cindex:[SPA authentication] | |
654 | cindex:[Samba project] | |
655 | cindex:[Microsoft Secure Password Authentication] | |
656 | Client support for Microsoft's 'Secure Password Authentication' is provided | |
657 | by code contributed by Marc Prud'hommeaux. Server support was contributed by | |
658 | Tom Kistner. This includes code taken from the Samba project, which is released | |
659 | under the Gnu GPL. | |
660 | ||
661 | - cindex:[Cyrus] | |
662 | cindex:['pwcheck' daemon] | |
663 | cindex:['pwauthd' daemon] | |
664 | Support for calling the Cyrus 'pwcheck' and 'saslauthd' daemons is provided | |
665 | by code taken from the Cyrus-SASL library and adapted by Alexander S. | |
666 | Sabourenkov. The permission notice appears below, in accordance with the | |
667 | conditions expressed therein. | |
668 | + | |
669 | Copyright (c) 2001 Carnegie Mellon University. All rights reserved. | |
670 | + | |
671 | Redistribution and use in source and binary forms, with or without | |
672 | modification, are permitted provided that the following conditions | |
673 | are met: | |
674 | + | |
675 | . Redistributions of source code must retain the above copyright | |
676 | notice, this list of conditions and the following disclaimer. | |
677 | ||
678 | . Redistributions in binary form must reproduce the above copyright | |
679 | notice, this list of conditions and the following disclaimer in | |
680 | the documentation and/or other materials provided with the | |
681 | distribution. | |
682 | ||
683 | . The name ``Carnegie Mellon University'' must not be used to | |
684 | endorse or promote products derived from this software without | |
685 | prior written permission. For permission or any other legal | |
686 | details, please contact | |
687 | + | |
688 | &&& | |
689 | Office of Technology Transfer | |
690 | Carnegie Mellon University | |
691 | 5000 Forbes Avenue | |
692 | Pittsburgh, PA 15213-3890 | |
693 | (412) 268-4387, fax: (412) 268-7395 | |
694 | tech-transfer@andrew.cmu.edu | |
695 | &&& | |
696 | ||
697 | . Redistributions of any form whatsoever must retain the following | |
698 | acknowledgment: | |
699 | + | |
700 | 'This product includes software developed by Computing Services | |
701 | at Carnegie Mellon University (*http://www.cmu.edu/computing/[]*).' | |
702 | + | |
703 | CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO | |
704 | THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY | |
705 | AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE | |
706 | FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
707 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN | |
708 | AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING | |
709 | OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
710 | ||
711 | . cindex:[monitor] | |
712 | cindex:[X-windows] | |
713 | cindex:[Athena] | |
714 | The Exim Monitor program, which is an X-Window application, includes | |
715 | modified versions of the Athena StripChart and TextPop widgets. | |
716 | This code is copyright by DEC and MIT, and their permission notice appears | |
717 | below, in accordance with the conditions expressed therein. | |
718 | + | |
719 | Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts, | |
720 | and the Massachusetts Institute of Technology, Cambridge, Massachusetts. | |
721 | + | |
722 | All Rights Reserved | |
723 | + | |
724 | Permission to use, copy, modify, and distribute this software and its | |
725 | documentation for any purpose and without fee is hereby granted, | |
726 | provided that the above copyright notice appear in all copies and that | |
727 | both that copyright notice and this permission notice appear in | |
728 | supporting documentation, and that the names of Digital or MIT not be | |
729 | used in advertising or publicity pertaining to distribution of the | |
730 | software without specific, written prior permission. | |
731 | + | |
732 | DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING | |
733 | ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL | |
734 | DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR | |
735 | ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, | |
736 | WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, | |
737 | ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS | |
738 | SOFTWARE. | |
739 | ||
740 | . Many people have contributed code fragments, some large, some small, that were | |
741 | not covered by any specific licence requirements. It is assumed that the | |
742 | contributors are happy to see their code incoporated into Exim under the GPL. | |
743 | ||
744 | ||
745 | ||
746 | ||
747 | ||
748 | //////////////////////////////////////////////////////////////////////////// | |
749 | //////////////////////////////////////////////////////////////////////////// | |
750 | ||
751 | [titleabbrev="Receiving and delivering mail"] | |
752 | How Exim receives and delivers mail | |
753 | ----------------------------------- | |
754 | ||
755 | ||
756 | Overall philosophy | |
757 | ~~~~~~~~~~~~~~~~~~ | |
758 | cindex:[design philosophy] | |
759 | Exim is designed to work efficiently on systems that are permanently connected | |
760 | to the Internet and are handling a general mix of mail. In such circumstances, | |
761 | most messages can be delivered immediately. Consequently, Exim does not | |
762 | maintain independent queues of messages for specific domains or hosts, though | |
763 | it does try to send several messages in a single SMTP connection after a host | |
764 | has been down, and it also maintains per-host retry information. | |
765 | ||
766 | ||
767 | ||
768 | Policy control | |
769 | ~~~~~~~~~~~~~~ | |
770 | cindex:[policy control,overview] | |
771 | Policy controls are now an important feature of MTAs that are connected to the | |
772 | Internet. Perhaps their most important job is to stop MTAs being abused as | |
773 | ``open relays'' by misguided individuals who send out vast amounts of unsolicited | |
774 | junk, and want to disguise its source. Exim provides flexible facilities for | |
775 | specifying policy controls on incoming mail: | |
776 | ||
777 | - cindex:[{ACL},introduction] | |
778 | Exim 4 (unlike previous versions of Exim) implements policy controls on | |
779 | incoming mail by means of 'Access Control Lists' (ACLs). Each list is a | |
780 | series of statements that may either grant or deny access. ACLs can be used at | |
781 | several places in the SMTP dialogue while receiving a message from a remote | |
782 | host. However, the most common places are after each RCPT command, and at | |
783 | the very end of the message. The sysadmin can specify conditions for accepting | |
784 | or rejecting individual recipients or the entire message, respectively, at | |
785 | these two points (see chapter <<CHAPACL>>). Denial of access results in an SMTP | |
786 | error code. | |
787 | ||
788 | - An ACL is also available for locally generated, non-SMTP messages. In this | |
789 | case, the only available actions are to accept or deny the entire message. | |
790 | ||
791 | - When Exim is compiled with the content-scanning extension, facilities are | |
792 | provided in the ACL mechanism for passing the message to external virus and/or | |
793 | spam scanning software. The result of such a scan is passed back to the ACL, | |
794 | which can then use it to decide what to do with the message. | |
795 | ||
796 | - When a message has been received, either from a remote host or from the local | |
797 | host, but before the final acknowledgement has been sent, a locally supplied C | |
798 | function called 'local_scan()' can be run to inspect the message and decide | |
799 | whether to accept it or not (see chapter <<CHAPlocalscan>>). If the message is | |
800 | accepted, the list of recipients can be modified by the function. | |
801 | ||
802 | - Using the 'local_scan()' mechanism is another way of calling external | |
803 | scanner software. The %SA-Exim% add-on package works this way. It does not | |
804 | require Exim to be compiled with the content-scanning extension. | |
805 | ||
806 | - After a message has been accepted, a further checking mechanism is available in | |
807 | the form of the 'system filter' (see chapter <<CHAPsystemfilter>>). This runs | |
808 | at the start of every delivery process. | |
809 | ||
810 | ||
811 | ||
812 | User filters | |
813 | ~~~~~~~~~~~~ | |
814 | cindex:[filter,introduction] | |
815 | cindex:[Sieve filter] | |
816 | In a conventional Exim configuration, users are able to run private filters by | |
817 | setting up appropriate _.forward_ files in their home directories. See | |
818 | chapter <<CHAPredirect>> (about the ^redirect^ router) for the configuration | |
819 | needed to support this, and the separate document entitled 'Exim's interfaces | |
820 | to mail filtering' for user details. Two different kinds of filtering are | |
821 | available: | |
822 | ||
823 | - Sieve filters are written in the standard filtering language that is defined | |
824 | by RFC 3028. | |
825 | ||
826 | - Exim filters are written in a syntax that is unique to Exim, but which is more | |
827 | powerful than Sieve, which it pre-dates. | |
828 | ||
829 | User filters are run as part of the routing process, described below. | |
830 | ||
831 | ||
832 | ||
833 | [[SECTmessiden]] | |
834 | Message identification | |
835 | ~~~~~~~~~~~~~~~~~~~~~~ | |
836 | cindex:[message ids, details of format] | |
837 | cindex:[format,of message id] | |
838 | cindex:[id of message] | |
839 | cindex:[base62] | |
840 | cindex:[base36] | |
841 | cindex:[Darwin] | |
842 | cindex:[Cygwin] | |
843 | Every message handled by Exim is given a 'message id' which is sixteen | |
844 | characters long. It is divided into three parts, separated by hyphens, for | |
845 | example `16VDhn-0001bo-D3`. Each part is a sequence of letters and digits, | |
846 | normally encoding numbers in base 62. However, in the Darwin operating | |
847 | system (Mac OS X) and when Exim is compiled to run under Cygwin, base 36 | |
848 | (avoiding the use of lower case letters) is used instead, because the message | |
849 | id is used to construct file names, and the names of files in those systems are | |
850 | not case-sensitive. | |
851 | ||
852 | cindex:[pid (process id),re-use of] | |
853 | The detail of the contents of the message id have changed as Exim has evolved. | |
854 | Earlier versions relied on the operating system not re-using a process id (pid) | |
855 | within one second. On modern operating systems, this assumption can no longer | |
856 | be made, so the algorithm had to be changed. To retain backward compatibility, | |
857 | the format of the message id was retained, which is why the following rules are | |
858 | somewhat eccentric: | |
859 | ||
860 | - The first six characters of the message id are the time at which the message | |
861 | started to be received, to a granularity of one second. That is, this field | |
862 | contains the number of seconds since the start of the epoch (the normal Unix | |
863 | way of representing the date and time of day). | |
864 | ||
865 | - After the first hyphen, the next six characters are the id of the process that | |
866 | received the message. | |
867 | ||
868 | - There are two different possibilities for the final two characters: | |
869 | ||
870 | . cindex:[%localhost_number%] | |
871 | If %localhost_number% is not set, this value is the fractional part of the | |
872 | time of reception, normally in units of 1/2000 of a second, but for systems | |
873 | that must use base 36 instead of base 62 (because of case-insensitive file | |
874 | systems), the units are 1/1000 of a second. | |
875 | ||
876 | . If %localhost_number% is set, it is multiplied by 200 (100) and added to | |
877 | the fractional part of the time, which in this case is in units of 1/200 | |
878 | (1/100) of a second. | |
879 | ||
880 | After a message has been received, Exim waits for the clock to tick at the | |
881 | appropriate resolution before proceeding, so that if another message is | |
882 | received by the same process, or by another process with the same (re-used) | |
883 | pid, it is guaranteed that the time will be different. In most cases, the clock | |
884 | will already have ticked while the message was being received. | |
885 | ||
886 | ||
887 | Receiving mail | |
888 | ~~~~~~~~~~~~~~ | |
889 | cindex:[receiving mail] | |
890 | cindex:[message,reception] | |
891 | The only way Exim can receive mail from a remote host is using SMTP over | |
892 | TCP/IP, in which case the sender and recipient addresses are tranferred using | |
893 | SMTP commands. However, from a locally running process (such as a user's MUA), | |
894 | there are several possibilities: | |
895 | ||
896 | - If the process runs Exim with the %-bm% option, the message is read | |
897 | non-interactively (usually via a pipe), with the recipients taken from the | |
898 | command line, or from the body of the message if %-t% is also used. | |
899 | ||
900 | - If the process runs Exim with the %-bS% option, the message is also read | |
901 | non-interactively, but in this case the recipients are listed at the start of | |
902 | the message in a series of SMTP RCPT commands, terminated by a DATA | |
903 | command. This is so-called ``batch SMTP'' format, | |
904 | but it isn't really SMTP. The SMTP commands are just another way of passing | |
905 | envelope addresses in a non-interactive submission. | |
906 | ||
907 | - If the process runs Exim with the %-bs% option, the message is read | |
908 | interactively, using the SMTP protocol. A two-way pipe is normally used for | |
909 | passing data between the local process and the Exim process. | |
910 | This is ``real'' SMTP and is handled in the same way as SMTP over TCP/IP. For | |
911 | example, the ACLs for SMTP commands are used for this form of submission. | |
912 | ||
913 | - A local process may also make a TCP/IP call to the host's loopback address | |
914 | (127.0.0.1) or any other of its IP addresses. When receiving messages, Exim | |
915 | does not treat the loopback address specially. It treats all such connections | |
916 | in the same way as connections from other hosts. | |
917 | ||
918 | ||
919 | cindex:[message sender, constructed by Exim] | |
920 | cindex:[sender,constructed by Exim] | |
921 | In the three cases that do not involve TCP/IP, the sender address is | |
922 | constructed from the login name of the user that called Exim and a default | |
923 | qualification domain (which can be set by the %qualify_domain% configuration | |
924 | option). For local or batch SMTP, a sender address that is passed using the | |
925 | SMTP MAIL command is ignored. However, the system administrator may allow | |
926 | certain users (``trusted users'') to specify a different sender address | |
927 | unconditionally, or all users to specify certain forms of different sender | |
928 | address. The %-f% option or the SMTP MAIL command is used to specify these | |
929 | different addresses. See section <<SECTtrustedadmin>> for details of trusted | |
930 | users, and the %untrusted_set_sender% option for a way of allowing untrusted | |
931 | users to change sender addresses. | |
932 | ||
933 | Messages received by either of the non-interactive mechanisms are subject to | |
934 | checking by the non-SMTP ACL, if one is defined. Messages received using SMTP | |
935 | (either over TCP/IP, or interacting with a local process) can be checked by a | |
936 | number of ACLs that operate at different times during the SMTP session. Either | |
937 | individual recipients, or the entire message, can be rejected if local policy | |
938 | requirements are not met. The 'local_scan()' function (see chapter | |
939 | <<CHAPlocalscan>>) is run for all incoming messages. | |
940 | ||
941 | Exim can be configured not to start a delivery process when a message is | |
942 | received; this can be unconditional, or depend on the number of incoming SMTP | |
943 | connections or the system load. In these situations, new messages wait on the | |
944 | queue until a queue runner process picks them up. However, in standard | |
945 | configurations under normal conditions, delivery is started as soon as a | |
946 | message is received. | |
947 | ||
948 | ||
949 | ||
950 | ||
951 | ||
952 | Handling an incoming message | |
953 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
954 | cindex:[spool directory,files that hold a message] | |
955 | cindex:[file,how a message is held] | |
956 | When Exim accepts a message, it writes two files in its spool directory. The | |
957 | first contains the envelope information, the current status of the message, and | |
958 | the header lines, and the second contains the body of the message. The names of | |
959 | the two spool files consist of the message id, followed by `-H` for the | |
960 | file containing the envelope and header, and `-D` for the data file. | |
961 | ||
962 | cindex:[spool directory,_input_ sub-directory] | |
963 | By default all these message files are held in a single directory called | |
964 | _input_ inside the general Exim spool directory. Some operating systems do | |
965 | not perform very well if the number of files in a directory gets very large; to | |
966 | improve performance in such cases, the %split_spool_directory% option can be | |
967 | used. This causes Exim to split up the input files into 62 sub-directories | |
968 | whose names are single letters or digits. | |
969 | ||
970 | The envelope information consists of the address of the message's sender and | |
971 | the addresses of the recipients. This information is entirely separate from | |
972 | any addresses contained in the header lines. The status of the message includes | |
973 | a list of recipients who have already received the message. The format of the | |
974 | first spool file is described in chapter <<CHAPspool>>. | |
975 | ||
976 | cindex:[rewriting,addresses] | |
977 | Address rewriting that is specified in the rewrite section of the configuration | |
978 | (see chapter <<CHAPrewrite>>) is done once and for all on incoming addresses, | |
979 | both in the header lines and the envelope, at the time the message is accepted. | |
980 | If during the course of delivery additional addresses are generated (for | |
981 | example, via aliasing), these new addresses are rewritten as soon as they are | |
982 | generated. At the time a message is actually delivered (transported) further | |
983 | rewriting can take place; because this is a transport option, it can be | |
984 | different for different forms of delivery. It is also possible to specify the | |
985 | addition or removal of certain header lines at the time the message is | |
986 | delivered (see chapters <<CHAProutergeneric>> and <<CHAPtransportgeneric>>). | |
987 | ||
988 | ||
989 | ||
990 | Life of a message | |
991 | ~~~~~~~~~~~~~~~~~ | |
992 | cindex:[message,life of] | |
993 | cindex:[message,frozen] | |
994 | A message remains in the spool directory until it is completely delivered to | |
995 | its recipients or to an error address, or until it is deleted by an | |
996 | administrator or by the user who originally created it. In cases when delivery | |
997 | cannot proceed -- for example, when a message can neither be delivered to its | |
998 | recipients nor returned to its sender, the message is marked ``frozen'' on the | |
999 | spool, and no more deliveries are attempted. | |
1000 | ||
1001 | cindex:[frozen messages,thawing] | |
1002 | cindex:[message,thawing frozen] | |
1003 | An administrator can ``thaw'' such messages when the problem has been corrected, | |
1004 | and can also freeze individual messages by hand if necessary. In addition, an | |
1005 | administrator can force a delivery error, causing a bounce message to be sent. | |
1006 | ||
1007 | cindex:[%auto_thaw%] | |
1008 | There is an option called %auto_thaw%, which can be used to cause Exim to | |
1009 | retry frozen messages after a certain time. When this is set, no message will | |
1010 | remain on the queue for ever, because the delivery timeout will eventually be | |
1011 | reached. Delivery failure reports (bounce messages) that reach this timeout are | |
1012 | discarded. | |
1013 | ||
1014 | cindex:[%timeout_frozen_after%] | |
1015 | There is also an option called %timeout_frozen_after%, which discards frozen | |
1016 | messages after a certain time. | |
1017 | ||
1018 | cindex:[message,log file for] | |
1019 | cindex:[log,file for each message] | |
1020 | While Exim is working on a message, it writes information about each delivery | |
1021 | attempt to the main log file. This includes successful, unsuccessful, and | |
1022 | delayed deliveries for each recipient (see chapter <<CHAPlog>>). The log lines | |
1023 | are also written to a separate 'message log' file for each message. These | |
1024 | logs are solely for the benefit of the administrator, and are normally deleted | |
1025 | along with the spool files when processing of a message is complete. | |
1026 | The use of individual message logs can be disabled by setting | |
1027 | %no_message_logs%; this might give an improvement in performance on very | |
1028 | busy systems. | |
1029 | ||
1030 | cindex:[journal file] | |
1031 | cindex:[file,journal] | |
1032 | All the information Exim itself needs to set up a delivery is kept in the first | |
1033 | spool file, along with the header lines. When a successful delivery occurs, the | |
1034 | address is immediately written at the end of a journal file, whose name is the | |
1035 | message id followed by `-J`. At the end of a delivery run, if there are some | |
1036 | addresses left to be tried again later, the first spool file (the `-H` file) | |
1037 | is updated to indicate which these are, and the journal file is then deleted. | |
1038 | Updating the spool file is done by writing a new file and renaming it, to | |
1039 | minimize the possibility of data loss. | |
1040 | ||
1041 | Should the system or the program crash after a successful delivery but before | |
1042 | the spool file has been updated, the journal is left lying around. The next | |
1043 | time Exim attempts to deliver the message, it reads the journal file and | |
1044 | updates the spool file before proceeding. This minimizes the chances of double | |
1045 | deliveries caused by crashes. | |
1046 | ||
1047 | ||
1048 | ||
1049 | [[SECTprocaddress]] | |
1050 | Processing an address for delivery | |
1051 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
1052 | cindex:[drivers,definition of] | |
1053 | cindex:[router,definition of] | |
1054 | cindex:[transport,definition of] | |
1055 | The main delivery processing elements of Exim are called 'routers' and | |
1056 | 'transports', and collectively these are known as 'drivers'. Code for a | |
1057 | number of them is provided in the source distribution, and compile-time options | |
1058 | specify which ones are included in the binary. Run time options specify which | |
1059 | ones are actually used for delivering messages. | |
1060 | ||
1061 | cindex:[drivers,instance definition] | |
1062 | Each driver that is specified in the run time configuration is an 'instance' | |
1063 | of that particular driver type. Multiple instances are allowed; for example, | |
1064 | you can set up several different ^smtp^ transports, each with different | |
1065 | option values that might specify different ports or different timeouts. Each | |
1066 | instance has its own identifying name. In what follows we will normally use the | |
1067 | instance name when discussing one particular instance (that is, one specific | |
1068 | configuration of the driver), and the generic driver name when discussing | |
1069 | the driver's features in general. | |
1070 | ||
1071 | A 'router' is a driver that operates on an address, either determining how | |
1072 | its delivery should happen, by routing it to a specific transport, or | |
1073 | converting the address into one or more new addresses (for example, via an | |
1074 | alias file). A router may also explicitly choose to fail an address, causing it | |
1075 | to be bounced. | |
1076 | ||
1077 | A 'transport' is a driver that transmits a copy of the message from Exim's | |
1078 | spool to some destination. There are two kinds of transport: for a 'local' | |
1079 | transport, the destination is a file or a pipe on the local host, whereas for a | |
1080 | 'remote' transport the destination is some other host. A message is passed | |
1081 | to a specific transport as a result of successful routing. If a message has | |
1082 | several recipients, it may be passed to a number of different transports. | |
1083 | ||
1084 | cindex:[preconditions,definition of] | |
1085 | An address is processed by passing it to each configured router instance in | |
1086 | turn, subject to certain preconditions, until a router accepts the address or | |
1087 | specifies that it should be bounced. We will describe this process in more | |
1088 | detail shortly. As a simple example, the diagram below illustrates how each | |
1089 | recipient address in a message is processed in a small configuration of three | |
1090 | routers that are configured in various ways. | |
1091 | ||
1092 | To make this a more concrete example, we'll describe it in terms of some actual | |
1093 | routers, but remember, this is only an example. You can configure Exim's | |
1094 | routers in many different ways, and there may be any number of routers in a | |
1095 | configuration. | |
1096 | ||
1097 | The first router that is specified in a configuration is often one that handles | |
1098 | addresses in domains that are not recognized specially by the local host. These | |
1099 | are typically addresses for arbitrary domains on the Internet. A precondition | |
1100 | is set up which looks for the special domains known to the host (for example, | |
1101 | its own domain name), and the router is run for addresses that do 'not' | |
1102 | match. Typically, this is a router that looks up domains in the DNS in order to | |
1103 | find the hosts to which this address routes. If it succeeds, the address is | |
1104 | queued for a suitable SMTP transport; if it does not succeed, the router is | |
1105 | configured to fail the address. | |
1106 | ||
1107 | /// | |
1108 | The example pictured could be a configuration of this type. The second and | |
1109 | third routers can only be run for addresses for which the preconditions for | |
1110 | the first router are not met. If one of these preconditions checks the | |
1111 | domain, the second and third routers are run only for domains that are somehow | |
1112 | special to the local host. | |
1113 | /// | |
1114 | ||
1115 | The second router does redirection -- also known as aliasing and forwarding. | |
1116 | When it generates one or more new addresses from the original, each of them is | |
1117 | routed independently from the start. Otherwise, the router may cause an address | |
1118 | to fail, or it may simply decline to handle the address, in which case the | |
1119 | address is passed to the next router. | |
1120 | ||
1121 | The final router in many configurations is one that checks to see if the | |
1122 | address belongs to a local mailbox. The precondition may involve a check to | |
1123 | see if the local part is the name of a login account, or it may look up the | |
1124 | local part in a file or a database. If its preconditions are not met, or if | |
1125 | the router declines, we have reached the end of the routers. When this happens, | |
1126 | the address is bounced. | |
1127 | ||
1128 | ||
1129 | ||
1130 | Processing an address for verification | |
1131 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
1132 | cindex:[router,for verification] | |
1133 | cindex:[verifying address, overview] | |
1134 | As well as being used to decide how to deliver to an address, Exim's routers | |
1135 | are also used for 'address verification'. Verification can be requested as | |
1136 | one of the checks to be performed in an ACL for incoming messages, on both | |
1137 | sender and recipient addresses, and it can be tested using the %-bv% and | |
1138 | %-bvs% command line options. | |
1139 | ||
1140 | When an address is being verified, the routers are run in ``verify mode''. This | |
1141 | does not affect the way the routers work, but it is a state that can be | |
1142 | detected. By this means, a router can be skipped or made to behave differently | |
1143 | when verifying. A common example is a configuration in which the first router | |
1144 | sends all messages to a message-scanning program, unless they have been | |
1145 | previously scanned. Thus, the first router accepts all addresses without any | |
1146 | checking, making it useless for verifying. Normally, the %no_verify% option | |
1147 | would be set for such a router, causing it to be skipped in verify mode. | |
1148 | ||
1149 | ||
1150 | ||
1151 | ||
1152 | [[SECTrunindrou]] | |
1153 | Running an individual router | |
1154 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
1155 | cindex:[router,running details] | |
1156 | cindex:[preconditions,checking] | |
1157 | cindex:[router,result of running] | |
1158 | As explained in the example above, a number of preconditions are checked before | |
1159 | running a router. If any are not met, the router is skipped, and the address is | |
1160 | passed to the next router. When all the preconditions on a router 'are' met, | |
1161 | the router is run. What happens next depends on the outcome, which is one of | |
1162 | the following: | |
1163 | ||
1164 | - 'accept': The router accepts the address, and either queues it for a | |
1165 | transport, or generates one or more ``child'' addresses. Processing the original | |
1166 | address ceases, | |
1167 | cindex:[%unseen% option] | |
1168 | unless the %unseen% option is set on the router. This option | |
1169 | can be used to set up multiple deliveries with different routing (for example, | |
1170 | for keeping archive copies of messages). When %unseen% is set, the address is | |
1171 | passed to the next router. Normally, however, an 'accept' return marks the | |
1172 | end of routing. | |
1173 | + | |
1174 | cindex:[case of local parts] | |
1175 | cindex:[address duplicate, discarding] | |
1176 | If child addresses are generated, Exim checks to see whether they are | |
1177 | duplicates of any existing recipient addresses. During this check, local parts | |
1178 | are treated as case-sensitive. Duplicate addresses are discarded. Each of the | |
1179 | remaining child addresses is then processed independently, starting with the | |
1180 | first router by default. It is possible to change this by setting the | |
1181 | %redirect_router% option to specify which router to start at for child | |
1182 | addresses. Unlike %pass_router% (see below) the router specified by | |
1183 | %redirect_router% may be anywhere in the router configuration. | |
1184 | ||
1185 | - 'pass': The router recognizes the address, but cannot handle it itself. It | |
1186 | requests that the address be passed to another router. By default the address | |
1187 | is passed to the next router, but this can be changed by setting the | |
1188 | %pass_router% option. However, (unlike %redirect_router%) the named router | |
1189 | must be below the current router (to avoid loops). | |
1190 | ||
1191 | - 'decline': The router declines to accept the address because it does not | |
1192 | recognize it at all. By default, the address is passed to the next router, but | |
1193 | this can be prevented by setting the %no_more% option. When %no_more% is set, | |
1194 | all the remaining routers are skipped. | |
1195 | ||
1196 | - 'fail': The router determines that the address should fail, and queues it for | |
1197 | the generation of a bounce message. There is no further processing of the | |
1198 | original address unless %unseen% is set on the router. | |
1199 | ||
1200 | - 'defer': The router cannot handle the address at the present time. (A database | |
1201 | may be offline, or a DNS lookup may have timed out.) No further processing of | |
1202 | the address happens in this delivery attempt. It is tried again next time the | |
1203 | message is considered for delivery. | |
1204 | ||
1205 | - 'error': There is some error in the router (for example, a syntax error in | |
1206 | its configuration). The action is as for defer. | |
1207 | ||
1208 | If an address reaches the end of the routers without having been accepted by | |
1209 | any of them, it is bounced as unrouteable. | |
1210 | The default error message in this situation is ``unrouteable address'', but you | |
1211 | can set your own message by making use of the %cannot_route_message% option. | |
1212 | This can be set for any router; the value from the last router that ``saw'' | |
1213 | the address is used. | |
1214 | ||
1215 | Sometimes while routing you want to fail a delivery when some conditions are | |
1216 | met but others are not, instead of passing the address on for further routing. | |
1217 | You can do this by having a second router that explicitly fails the delivery | |
1218 | when the relevant conditions are met. The ^redirect^ router has a ``fail'' | |
1219 | facility for this purpose. | |
1220 | ||
1221 | ||
1222 | ||
1223 | ||
1224 | [[SECTrouprecon]] | |
1225 | Router preconditions | |
1226 | ~~~~~~~~~~~~~~~~~~~~ | |
1227 | cindex:[router preconditions, order of processing] | |
1228 | cindex:[preconditions,order of processing] | |
1229 | The preconditions that are tested for each router are listed below, in the | |
1230 | order in which they are tested. The individual configuration options are | |
1231 | described in more detail in chapter <<CHAProutergeneric>>. | |
1232 | ||
1233 | - The %local_part_prefix% and %local_part_suffix% options can specify that | |
1234 | the local parts handled by the router may or must have certain prefixes and/or | |
1235 | suffixes. If a mandatory affix (prefix or suffix) is not present, the router is | |
1236 | skipped. These conditions are tested first. When an affix is present, it is | |
1237 | removed from the local part before further processing, including the evaluation | |
1238 | of any other conditions. | |
1239 | ||
1240 | - Routers can be designated for use only when not verifying an address, that is, | |
1241 | only when routing it for delivery (or testing its delivery routing). If the | |
1242 | %verify% option is set false, the router is skipped when Exim is verifying an | |
1243 | address. | |
1244 | Setting the %verify% option actually sets two options, %verify_sender% and | |
1245 | %verify_recipient%, which independently control the use of the router for | |
1246 | sender and recipient verification. You can set these options directly if | |
1247 | you want a router to be used for only one type of verification. | |
1248 | ||
1249 | - If the %address_test% option is set false, the router is skipped when Exim is | |
1250 | run with the %-bt% option to test an address routing. This can be helpful when | |
1251 | the first router sends all new messages to a scanner of some sort; it makes it | |
1252 | possible to use %-bt% to test subsequent delivery routing without having to | |
1253 | simulate the effect of the scanner. | |
1254 | ||
1255 | - Routers can be designated for use only when verifying an address, as | |
1256 | opposed to routing it for delivery. The %verify_only% option controls this. | |
1257 | ||
1258 | - Certain routers can be explicitly skipped when running the routers to check an | |
1259 | address given in the SMTP EXPN command (see the %expn% option). | |
1260 | ||
1261 | - If the %domains% option is set, the domain of the address must be in the set of | |
1262 | domains that it defines. | |
1263 | ||
1264 | - If the %local_parts% option is set, the local part of the address must be in | |
1265 | the set of local parts that it defines. If %local_part_prefix% or | |
1266 | %local_part_suffix% is in use, the prefix or suffix is removed from the local | |
1267 | part before this check. If you want to do precondition tests on local parts | |
1268 | that include affixes, you can do so by using a %condition% option (see below) | |
1269 | that uses the variables $local_part$, $local_part_prefix$, and | |
1270 | $local_part_suffix$ as necessary. | |
1271 | ||
1272 | - If the %check_local_user% option is set, the local part must be the name of | |
1273 | an account on the local host. | |
1274 | If this check succeeds, the uid and gid of the local user are placed in | |
1275 | $local_user_uid$ and $local_user_gid$; these values can be used in the | |
1276 | remaining preconditions. | |
1277 | ||
1278 | - If the %router_home_directory% option is set, it is expanded at this point, | |
1279 | because it overrides the value of $home$. If this expansion were left till | |
1280 | later, the value of $home$ as set by %check_local_user% would be used in | |
1281 | subsequent tests. Having two different values of $home$ in the same router | |
1282 | could lead to confusion. | |
1283 | ||
1284 | - If the %senders% option is set, the envelope sender address must be in the set | |
1285 | of addresses that it defines. | |
1286 | ||
1287 | - If the %require_files% option is set, the existence or non-existence of | |
1288 | specified files is tested. | |
1289 | ||
1290 | - cindex:[customizing,precondition] | |
1291 | If the %condition% option is set, it is evaluated and tested. This option uses | |
1292 | an expanded string to allow you to set up your own custom preconditions. | |
1293 | Expanded strings are described in chapter <<CHAPexpand>>. | |
1294 | ||
1295 | ||
1296 | Note that %require_files% comes near the end of the list, so you cannot use it | |
1297 | to check for the existence of a file in which to lookup up a domain, local | |
1298 | part, or sender. However, as these options are all expanded, you can use the | |
1299 | %exists% expansion condition to make such tests within each condition. The | |
1300 | %require_files% option is intended for checking files that the router may be | |
1301 | going to use internally, or which are needed by a specific transport (for | |
1302 | example, _.procmailrc_). | |
1303 | ||
1304 | ||
1305 | ||
1306 | Delivery in detail | |
1307 | ~~~~~~~~~~~~~~~~~~ | |
1308 | cindex:[delivery,in detail] | |
1309 | When a message is to be delivered, the sequence of events is as follows: | |
1310 | ||
1311 | - If a system-wide filter file is specified, the message is passed to it. The | |
1312 | filter may add recipients to the message, replace the recipients, discard the | |
1313 | message, cause a new message to be generated, or cause the message delivery to | |
1314 | fail. The format of the system filter file is the same as for Exim user filter | |
1315 | files, described in the separate document entitled | |
1316 | 'Exim's interfaces to mail filtering'. | |
1317 | cindex:[Sieve filter,not available for system filter] | |
1318 | (*Note*: Sieve cannot be used for system filter files.) | |
1319 | + | |
1320 | Some additional features are available in system filters -- see chapter | |
1321 | <<CHAPsystemfilter>> for details. Note that a message is passed to the system | |
1322 | filter only once per delivery attempt, however many recipients it has. However, | |
1323 | if there are several delivery attempts because one or more addresses could not | |
1324 | be immediately delivered, the system filter is run each time. The filter | |
1325 | condition %first_delivery% can be used to detect the first run of the system | |
1326 | filter. | |
1327 | ||
1328 | - Each recipient address is offered to each configured router in turn, subject | |
1329 | to its preconditions, until one is able to handle it. If no router can handle | |
1330 | the address, that is, if they all decline, the address is failed. Because | |
1331 | routers can be targeted at particular domains, several locally handled domains | |
1332 | can be processed entirely independently of each other. | |
1333 | ||
1334 | - cindex:[routing,loops in] | |
1335 | cindex:[loop,while routing] | |
1336 | A router that accepts an address may set up a local or a remote transport for | |
1337 | it. However, the transport is not run at this time. Instead, the address is | |
1338 | placed on a list for the particular transport, to be run later. Alternatively, | |
1339 | the router may generate one or more new addresses (typically from alias, | |
1340 | forward, or filter files). New addresses are fed back into this process from | |
1341 | the top, but in order to avoid loops, a router ignores any address which has an | |
1342 | identically-named ancestor that was processed by itself. | |
1343 | ||
1344 | - When all the routing has been done, addresses that have been successfully | |
1345 | handled are passed to their assigned transports. When local transports are | |
1346 | doing real local deliveries, they handle only one address at a time, but if a | |
1347 | local transport is being used as a pseudo-remote transport (for example, to | |
1348 | collect batched SMTP messages for transmission by some other means) multiple | |
1349 | addresses can be handled. Remote transports can always handle more than one | |
1350 | address at a time, but can be configured not to do so, or to restrict multiple | |
1351 | addresses to the same domain. | |
1352 | ||
1353 | - Each local delivery to a file or a pipe runs in a separate process under a | |
1354 | non-privileged uid, and these deliveries are run one at a time. Remote | |
1355 | deliveries also run in separate processes, normally under a uid that is private | |
1356 | to Exim (``the Exim user''), but in this case, several remote deliveries can be | |
1357 | run in parallel. The maximum number of simultaneous remote deliveries for any | |
1358 | one message is set by the %remote_max_parallel% option. | |
1359 | The order in which deliveries are done is not defined, except that all local | |
1360 | deliveries happen before any remote deliveries. | |
1361 | ||
1362 | - cindex:[queue runner] | |
1363 | When it encounters a local delivery during a queue run, Exim checks its retry | |
1364 | database to see if there has been a previous temporary delivery failure for the | |
1365 | address before running the local transport. If there was a previous failure, | |
1366 | Exim does not attempt a new delivery until the retry time for the address is | |
1367 | reached. However, this happens only for delivery attempts that are part of a | |
1368 | queue run. Local deliveries are always attempted when delivery immediately | |
1369 | follows message reception, even if retry times are set for them. This makes for | |
1370 | better behaviour if one particular message is causing problems (for example, | |
1371 | causing quota overflow, or provoking an error in a filter file). | |
1372 | ||
1373 | - cindex:[delivery,retry in remote transports] | |
1374 | Remote transports do their own retry handling, since an address may be | |
1375 | deliverable to one of a number of hosts, each of which may have a different | |
1376 | retry time. If there have been previous temporary failures and no host has | |
1377 | reached its retry time, no delivery is attempted, whether in a queue run or | |
1378 | not. See chapter <<CHAPretry>> for details of retry strategies. | |
1379 | ||
1380 | - If there were any permanent errors, a bounce message is returned to an | |
1381 | appropriate address (the sender in the common case), with details of the error | |
1382 | for each failing address. Exim can be configured to send copies of bounce | |
1383 | messages to other addresses. | |
1384 | ||
1385 | - cindex:[delivery,deferral] | |
1386 | If one or more addresses suffered a temporary failure, the message is left on | |
1387 | the queue, to be tried again later. Delivery of these addresses is said to be | |
1388 | 'deferred'. | |
1389 | ||
1390 | - When all the recipient addresses have either been delivered or bounced, | |
1391 | handling of the message is complete. The spool files and message log are | |
1392 | deleted, though the message log can optionally be preserved if required. | |
1393 | ||
1394 | ||
1395 | ||
1396 | ||
1397 | Retry mechanism | |
1398 | ~~~~~~~~~~~~~~~ | |
1399 | cindex:[delivery,retry mechanism] | |
1400 | cindex:[retry,description of mechanism] | |
1401 | cindex:[queue runner] | |
1402 | Exim's mechanism for retrying messages that fail to get delivered at the first | |
1403 | attempt is the queue runner process. You must either run an Exim daemon that | |
1404 | uses the %-q% option with a time interval to start queue runners at regular | |
1405 | intervals, or use some other means (such as 'cron') to start them. If you do | |
1406 | not arrange for queue runners to be run, messages that fail temporarily at the | |
1407 | first attempt will remain on your queue for ever. A queue runner process works | |
1408 | it way through the queue, one message at a time, trying each delivery that has | |
1409 | passed its retry time. | |
1410 | You can run several queue runners at once. | |
1411 | ||
1412 | Exim uses a set of configured rules to determine when next to retry the failing | |
1413 | address (see chapter <<CHAPretry>>). These rules also specify when Exim should | |
1414 | give up trying to deliver to the address, at which point it generates a bounce | |
1415 | message. If no retry rules are set for a particular host, address, and error | |
1416 | combination, no retries are attempted, and temporary errors are treated as | |
1417 | permanent. | |
1418 | ||
1419 | ||
1420 | ||
1421 | Temporary delivery failure | |
1422 | ~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
1423 | cindex:[delivery,temporary failure] | |
1424 | There are many reasons why a message may not be immediately deliverable to a | |
1425 | particular address. Failure to connect to a remote machine (because it, or the | |
1426 | connection to it, is down) is one of the most common. Temporary failures may be | |
1427 | detected during routing as well as during the transport stage of delivery. | |
1428 | Local deliveries may be delayed if NFS files are unavailable, or if a mailbox | |
1429 | is on a file system where the user is over quota. Exim can be configured to | |
1430 | impose its own quotas on local mailboxes; where system quotas are set they will | |
1431 | also apply. | |
1432 | ||
1433 | If a host is unreachable for a period of time, a number of messages may be | |
1434 | waiting for it by the time it recovers, and sending them in a single SMTP | |
1435 | connection is clearly beneficial. Whenever a delivery to a remote host is | |
1436 | deferred, | |
1437 | ||
1438 | cindex:[hints database] | |
1439 | Exim makes a note in its hints database, and whenever a successful | |
1440 | SMTP delivery has happened, it looks to see if any other messages are waiting | |
1441 | for the same host. If any are found, they are sent over the same SMTP | |
1442 | connection, subject to a configuration limit as to the maximum number in any | |
1443 | one connection. | |
1444 | ||
1445 | ||
1446 | ||
1447 | ||
1448 | Permanent delivery failure | |
1449 | ~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
1450 | cindex:[delivery,permanent failure] | |
1451 | cindex:[bounce message,when generated] | |
1452 | When a message cannot be delivered to some or all of its intended recipients, a | |
1453 | bounce message is generated. Temporary delivery failures turn into permanent | |
1454 | errors when their timeout expires. All the addresses that fail in a given | |
1455 | delivery attempt are listed in a single message. If the original message has | |
1456 | many recipients, it is possible for some addresses to fail in one delivery | |
1457 | attempt and others to fail subsequently, giving rise to more than one bounce | |
1458 | message. The wording of bounce messages can be customized by the administrator. | |
1459 | See chapter <<CHAPemsgcust>> for details. | |
1460 | ||
1461 | cindex:['X-Failed-Recipients:' header line] | |
1462 | Bounce messages contain an 'X-Failed-Recipients:' header line that lists the | |
1463 | failed addresses, for the benefit of programs that try to analyse such messages | |
1464 | automatically. | |
1465 | ||
1466 | cindex:[bounce message,recipient of] | |
1467 | A bounce message is normally sent to the sender of the original message, as | |
1468 | obtained from the message's envelope. For incoming SMTP messages, this is the | |
1469 | address given in the MAIL command. However, when an address is | |
1470 | expanded via a forward or alias file, an alternative address can be specified | |
1471 | for delivery failures of the generated addresses. For a mailing list expansion | |
1472 | (see section <<SECTmailinglists>>) it is common to direct bounce messages to the | |
1473 | manager of the list. | |
1474 | ||
1475 | ||
1476 | ||
1477 | ||
1478 | Failures to deliver bounce messages | |
1479 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
1480 | cindex:[bounce message,failure to deliver] | |
1481 | If a bounce message (either locally generated or received from a remote host) | |
1482 | itself suffers a permanent delivery failure, the message is left on the queue, | |
1483 | but it is frozen, awaiting the attention of an administrator. There are options | |
1484 | which can be used to make Exim discard such failed messages, or to keep them | |
1485 | for only a short time (see %timeout_frozen_after% and | |
1486 | %ignore_bounce_errors_after%). | |
1487 | ||
1488 | ||
1489 | ||
1490 | ||
1491 | ||
1492 | //////////////////////////////////////////////////////////////////////////// | |
1493 | //////////////////////////////////////////////////////////////////////////// | |
1494 | ||
1495 | Building and installing Exim | |
1496 | ---------------------------- | |
1497 | ||
1498 | cindex:[building Exim] | |
1499 | ||
1500 | Unpacking | |
1501 | ~~~~~~~~~ | |
1502 | Exim is distributed as a gzipped or bzipped tar file which, when upacked, | |
1503 | creates a directory with the name of the current release (for example, | |
1504 | _exim-{version}_) into which the following files are placed: | |
1505 | ||
1506 | [frame="none"] | |
1507 | `--------------------`-------------------------------------------------------- | |
1508 | _ACKNOWLEDGMENTS_ contains some acknowledgments | |
1509 | _CHANGES_ contains a reference to where changes are documented | |
1510 | _LICENCE_ the GNU General Public Licence | |
1511 | _Makefile_ top-level make file | |
1512 | _NOTICE_ conditions for the use of Exim | |
1513 | _README_ list of files, directories and simple build instructions | |
1514 | ------------------------------------------------------------------------------ | |
1515 | ||
1516 | Other files whose names begin with _README_ may also be present. The | |
1517 | following subdirectories are created: | |
1518 | ||
1519 | [frame="none"] | |
1520 | `--------------------`------------------------------------------------ | |
1521 | _Local_ an empty directory for local configuration files | |
1522 | _OS_ OS-specific files | |
1523 | _doc_ documentation files | |
1524 | _exim_monitor_ source files for the Exim monitor | |
1525 | _scripts_ scripts used in the build process | |
1526 | _src_ remaining source files | |
1527 | _util_ independent utilities | |
1528 | ---------------------------------------------------------------------- | |
1529 | ||
1530 | The main utility programs are contained in the _src_ directory, and are built | |
1531 | with the Exim binary. The _util_ directory contains a few optional scripts | |
1532 | that may be useful to some sites. | |
1533 | ||
1534 | ||
1535 | Multiple machine architectures and operating systems | |
1536 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
1537 | cindex:[building Exim,multiple OS/architectures] | |
1538 | The building process for Exim is arranged to make it easy to build binaries for | |
1539 | a number of different architectures and operating systems from the same set of | |
1540 | source files. Compilation does not take place in the _src_ directory. Instead, | |
1541 | a 'build directory' is created for each architecture and operating system. | |
1542 | ||
1543 | cindex:[symbolic link,to build directory] | |
1544 | Symbolic links to the sources are installed in this directory, which is where | |
1545 | the actual building takes place. | |
1546 | ||
1547 | In most cases, Exim can discover the machine architecture and operating system | |
1548 | for itself, but the defaults can be overridden if necessary. | |
1549 | ||
1550 | ||
1551 | [[SECTdb]] | |
1552 | DBM libraries | |
1553 | ~~~~~~~~~~~~~ | |
1554 | cindex:[DBM libraries, discussion of] | |
1555 | cindex:[hints database,DBM files used for] | |
1556 | Even if you do not use any DBM files in your configuration, Exim still needs a | |
1557 | DBM library in order to operate, because it uses indexed files for its hints | |
1558 | databases. Unfortunately, there are a number of DBM libraries in existence, and | |
1559 | different operating systems often have different ones installed. | |
1560 | ||
1561 | cindex:[Solaris,DBM library for] | |
1562 | cindex:[IRIX, DBM library for] | |
1563 | cindex:[BSD, DBM library for] | |
1564 | cindex:[Linux, DBM library for] | |
1565 | If you are using Solaris, IRIX, one of the modern BSD systems, or a modern | |
1566 | Linux distribution, the DBM configuration should happen automatically, and you | |
1567 | may be able to ignore this section. Otherwise, you may have to learn more than | |
1568 | you would like about DBM libraries from what follows. | |
1569 | ||
1570 | cindex:['ndbm' DBM library] | |
1571 | Licensed versions of Unix normally contain a library of DBM functions operating | |
1572 | via the 'ndbm' interface, and this is what Exim expects by default. Free | |
1573 | versions of Unix seem to vary in what they contain as standard. In particular, | |
1574 | some early versions of Linux have no default DBM library, and different | |
1575 | distributors have chosen to bundle different libraries with their packaged | |
1576 | versions. However, the more recent releases seem to have standardised on the | |
1577 | Berkeley DB library. | |
1578 | ||
1579 | Different DBM libraries have different conventions for naming the files they | |
1580 | use. When a program opens a file called _dbmfile_, there are four | |
1581 | possibilities: | |
1582 | ||
1583 | . A traditional 'ndbm' implementation, such as that supplied as part of | |
1584 | Solaris, operates on two files called _dbmfile.dir_ and _dbmfile.pag_. | |
1585 | ||
1586 | . cindex:['gdbm' DBM library] | |
1587 | The GNU library, 'gdbm', operates on a single file. If used via its 'ndbm' | |
1588 | compatibility interface it makes two different hard links to it with names | |
1589 | _dbmfile.dir_ and _dbmfile.pag_, but if used via its native interface, the | |
1590 | file name is used unmodified. | |
1591 | ||
1592 | . cindex:[Berkeley DB library] | |
1593 | The Berkeley DB package, if called via its 'ndbm' compatibility interface, | |
1594 | operates on a single file called _dbmfile.db_, but otherwise looks to the | |
1595 | programmer exactly the same as the traditional 'ndbm' implementation. | |
1596 | ||
1597 | . If the Berkeley package is used in its native mode, it operates on a single | |
1598 | file called _dbmfile_; the programmer's interface is somewhat different to | |
1599 | the traditional 'ndbm' interface. | |
1600 | ||
1601 | . To complicate things further, there are several very different versions of the | |
1602 | Berkeley DB package. Version 1.85 was stable for a very long time, releases | |
1603 | 2.'x' and 3.'x' were current for a while, but the latest versions are now | |
1604 | numbered 4.'x'. Maintenance of some of the earlier releases has ceased. All | |
1605 | versions of Berkeley DB can be obtained from | |
1606 | + | |
1607 | &&& | |
1608 | *http://www.sleepycat.com/[]* | |
1609 | &&& | |
1610 | ||
1611 | . cindex:['tdb' DBM library] | |
1612 | Yet another DBM library, called 'tdb', has become available from | |
1613 | + | |
1614 | &&& | |
1615 | *http://download.sourceforge.net/tdb[]* | |
1616 | &&& | |
1617 | + | |
1618 | It has its own interface, and also operates on a single file. | |
1619 | ||
1620 | cindex:[USE_DB] | |
1621 | cindex:[DBM libraries, configuration for building] | |
1622 | Exim and its utilities can be compiled to use any of these interfaces. In order | |
1623 | to use any version of the Berkeley DB package in native mode, you must set | |
1624 | USE_DB in an appropriate configuration file (typically | |
1625 | _Local/Makefile_). For example: | |
1626 | ||
1627 | USE_DB=yes | |
1628 | ||
1629 | Similarly, for gdbm you set USE_GDBM, and for tdb you set USE_TDB. An | |
1630 | error is diagnosed if you set more than one of these. | |
1631 | ||
1632 | At the lowest level, the build-time configuration sets none of these options, | |
1633 | thereby assuming an interface of type (1). However, some operating system | |
1634 | configuration files (for example, those for the BSD operating systems and | |
1635 | Linux) assume type (4) by setting USE_DB as their default, and the | |
1636 | configuration files for Cygwin set USE_GDBM. Anything you set in | |
1637 | _Local/Makefile_, however, overrides these system defaults. | |
1638 | ||
1639 | As well as setting USE_DB, USE_GDBM, or USE_TDB, it may also be | |
1640 | necessary to set DBMLIB, to cause inclusion of the appropriate library, as | |
1641 | in one of these lines: | |
1642 | ||
1643 | DBMLIB = -ldb | |
1644 | DBMLIB = -ltdb | |
1645 | ||
1646 | Settings like that will work if the DBM library is installed in the standard | |
1647 | place. Sometimes it is not, and the library's header file may also not be in | |
1648 | the default path. You may need to set INCLUDE to specify where the header | |
1649 | file is, and to specify the path to the library more fully in DBMLIB, as in | |
1650 | this example: | |
1651 | ||
1652 | INCLUDE=-I/usr/local/include/db-4.1 | |
1653 | DBMLIB=/usr/local/lib/db-4.1/libdb.a | |
1654 | ||
1655 | ||
1656 | There is further detailed discussion about the various DBM libraries in the | |
1657 | file _doc/dbm.discuss.txt_ in the Exim distribution. | |
1658 | ||
1659 | ||
1660 | ||
1661 | Pre-building configuration | |
1662 | ~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
1663 | cindex:[building Exim,pre-building configuration] | |
1664 | cindex:[configuration for building Exim] | |
1665 | cindex:[_Local/Makefile_] | |
1666 | cindex:[_src/EDITME_] | |
1667 | Before building Exim, a local configuration file that specifies options | |
1668 | independent of any operating system has to be created with the name | |
1669 | _Local/Makefile_. A template for this file is supplied as the file | |
1670 | _src/EDITME_, and it contains full descriptions of all the option settings | |
1671 | therein. These descriptions are therefore not repeated here. If you are | |
1672 | building Exim for the first time, the simplest thing to do is to copy | |
1673 | _src/EDITME_ to _Local/Makefile_, then read it and edit it appropriately. | |
1674 | ||
1675 | There are three settings that you must supply, because Exim will not build | |
1676 | without them. They are the location of the run time configuration file | |
1677 | (CONFIGURE_FILE), the directory in which Exim binaries will be installed | |
1678 | (BIN_DIRECTORY), and the identity of the Exim user (EXIM_USER and | |
1679 | maybe EXIM_GROUP as well). The value of CONFIGURE_FILE can in fact be | |
1680 | a colon-separated list of file names; Exim uses the first of them that exists. | |
1681 | ||
1682 | There are a few other parameters that can be specified either at build time or | |
1683 | at run time, to enable the same binary to be used on a number of different | |
1684 | machines. However, if the locations of Exim's spool directory and log file | |
1685 | directory (if not within the spool directory) are fixed, it is recommended that | |
1686 | you specify them in _Local/Makefile_ instead of at run time, so that errors | |
1687 | detected early in Exim's execution (such as a malformed configuration file) can | |
1688 | be logged. | |
1689 | ||
1690 | cindex:[content scanning,specifying at build time] | |
1691 | Exim's interfaces for calling virus and spam scanning sofware directly from | |
1692 | access control lists are not compiled by default. If you want to include these | |
1693 | facilities, you need to set | |
1694 | ||
1695 | WITH_CONTENT_SCAN=yes | |
1696 | ||
1697 | in your _Local/Makefile_. For details of the facilities themselves, see | |
1698 | chapter <<CHAPexiscan>>. | |
1699 | ||
1700 | ||
1701 | cindex:[_Local/eximon.conf_] | |
1702 | cindex:[_exim_monitor/EDITME_] | |
1703 | If you are going to build the Exim monitor, a similar configuration process is | |
1704 | required. The file _exim_monitor/EDITME_ must be edited appropriately for | |
1705 | your installation and saved under the name _Local/eximon.conf_. If you are | |
1706 | happy with the default settings described in _exim_monitor/EDITME_, | |
1707 | _Local/eximon.conf_ can be empty, but it must exist. | |
1708 | ||
1709 | This is all the configuration that is needed in straightforward cases for known | |
1710 | operating systems. However, the building process is set up so that it is easy | |
1711 | to override options that are set by default or by operating-system-specific | |
1712 | configuration files, for example to change the name of the C compiler, which | |
1713 | defaults to %gcc%. See section <<SECToverride>> below for details of how to do | |
1714 | this. | |
1715 | ||
1716 | ||
1717 | ||
1718 | Support for iconv() | |
1719 | ~~~~~~~~~~~~~~~~~~~ | |
1720 | cindex:['iconv()' support] | |
1721 | The contents of header lines in messages may be encoded according to the rules | |
1722 | described RFC 2047. This makes it possible to transmit characters that are not | |
1723 | in the ASCII character set, and to label them as being in a particular | |
1724 | character set. When Exim is inspecting header lines by means of the %\$h_% | |
1725 | mechanism, it decodes them, and translates them into a specified character set | |
1726 | (default ISO-8859-1). The translation is possible only if the operating system | |
1727 | supports the 'iconv()' function. | |
1728 | ||
1729 | However, some of the operating systems that supply 'iconv()' do not support | |
1730 | very many conversions. The GNU %libiconv% library (available from | |
1731 | *http://www.gnu.org/software/libiconv/[]*) can be installed on such systems to | |
1732 | remedy this deficiency, as well as on systems that do not supply 'iconv()' at | |
1733 | all. After installing %libiconv%, you should add | |
1734 | ||
1735 | HAVE_ICONV=yes | |
1736 | ||
1737 | to your _Local/Makefile_ and rebuild Exim. | |
1738 | ||
1739 | ||
1740 | ||
1741 | [[SECTinctlsssl]] | |
1742 | Including TLS/SSL encryption support | |
1743 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
1744 | cindex:[TLS,including support for TLS] | |
1745 | cindex:[encryption,including support for] | |
1746 | cindex:[SUPPORT_TLS] | |
1747 | cindex:[OpenSSL,building Exim with] | |
1748 | cindex:[GnuTLS,building Exim with] | |
1749 | Exim can be built to support encrypted SMTP connections, using the STARTTLS | |
1750 | command as per RFC 2487. It can also support legacy clients that expect to | |
1751 | start a TLS session immediately on connection to a non-standard port (see the | |
1752 | %tls_on_connect_ports% runtime option and the %-tls-on-connect% command | |
1753 | line option). | |
1754 | ||
1755 | If you want to build Exim with TLS support, you must first install either the | |
1756 | OpenSSL or GnuTLS library. There is no cryptographic code in Exim itself for | |
1757 | implementing SSL. | |
1758 | ||
1759 | If OpenSSL is installed, you should set | |
1760 | ||
1761 | SUPPORT_TLS=yes | |
1762 | TLS_LIBS=-lssl -lcrypto | |
1763 | ||
1764 | in _Local/Makefile_. You may also need to specify the locations of the | |
1765 | OpenSSL library and include files. For example: | |
1766 | ||
1767 | SUPPORT_TLS=yes | |
1768 | TLS_LIBS=-L/usr/local/openssl/lib -lssl -lcrypto | |
1769 | TLS_INCLUDE=-I/usr/local/openssl/include/ | |
1770 | ||
1771 | cindex:[USE_GNUTLS] | |
1772 | If GnuTLS is installed, you should set | |
1773 | ||
1774 | SUPPORT_TLS=yes | |
1775 | USE_GNUTLS=yes | |
1776 | TLS_LIBS=-lgnutls -ltasn1 -lgcrypt | |
1777 | ||
1778 | in _Local/Makefile_, and again you may need to specify the locations of the | |
1779 | library and include files. For example: | |
1780 | ||
1781 | SUPPORT_TLS=yes | |
1782 | USE_GNUTLS=yes | |
1783 | TLS_LIBS=-L/usr/gnu/lib -lgnutls -ltasn1 -lgcrypt | |
1784 | TLS_INCLUDE=-I/usr/gnu/include | |
1785 | ||
1786 | You do not need to set TLS_INCLUDE if the relevant directory is already | |
1787 | specified in INCLUDE. Details of how to configure Exim to make use of TLS | |
1788 | are given in chapter <<CHAPTLS>>. | |
1789 | ||
1790 | ||
1791 | ||
1792 | ||
1793 | Use of tcpwrappers | |
1794 | ~~~~~~~~~~~~~~~~~~ | |
1795 | cindex:[tcpwrappers, building Exim to support] | |
1796 | cindex:[USE_TCP_WRAPPERS] | |
1797 | Exim can be linked with the 'tcpwrappers' library in order to check incoming | |
1798 | SMTP calls using the 'tcpwrappers' control files. This may be a convenient | |
1799 | alternative to Exim's own checking facilities for installations that are | |
1800 | already making use of 'tcpwrappers' for other purposes. To do this, you should | |
1801 | set USE_TCP_WRAPPERS in _Local/Makefile_, arrange for the file | |
1802 | _tcpd.h_ to be available at compile time, and also ensure that the library | |
1803 | _libwrap.a_ is available at link time, typically by including %-lwrap% in | |
1804 | EXTRALIBS_EXIM. For example, if 'tcpwrappers' is installed in | |
1805 | _/usr/local_, you might have | |
1806 | ||
1807 | USE_TCP_WRAPPERS=yes | |
1808 | CFLAGS=-O -I/usr/local/include | |
1809 | EXTRALIBS_EXIM=-L/usr/local/lib -lwrap | |
1810 | ||
1811 | in _Local/Makefile_. The name to use in the 'tcpwrappers' control files is | |
1812 | ``exim''. For example, the line | |
1813 | ||
1814 | exim : LOCAL 192.168.1. .friendly.domain.example | |
1815 | ||
1816 | in your _/etc/hosts.allow_ file allows connections from the local host, from | |
1817 | the subnet 192.168.1.0/24, and from all hosts in 'friendly.domain.example'. | |
1818 | All other connections are denied. Consult the 'tcpwrappers' documentation for | |
1819 | further details. | |
1820 | ||
1821 | ||
1822 | ||
1823 | Including support for IPv6 | |
1824 | ~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
1825 | cindex:[IPv6,including support for] | |
1826 | Exim contains code for use on systems that have IPv6 support. Setting | |
1827 | `HAVE_IPV6=YES` in _Local/Makefile_ causes the IPv6 code to be included; | |
1828 | it may also be necessary to set IPV6_INCLUDE and IPV6_LIBS on systems | |
1829 | where the IPv6 support is not fully integrated into the normal include and | |
1830 | library files. | |
1831 | ||
1832 | Two different types of DNS record for handling IPv6 addresses have been | |
1833 | defined. AAAA records (analagous to A records for IPv4) are in use, and are | |
1834 | currently seen as the mainstream. Another record type called A6 was proposed | |
1835 | as better than AAAA because it had more flexibility. However, it was felt to be | |
1836 | over-complex, and its status was reduced to ``experimental''. It is not known | |
1837 | if anyone is actually using A6 records. Exim has support for A6 records, but | |
1838 | this is included only if you set `SUPPORT_A6=YES` in _Local/Makefile_. The | |
1839 | support has not been tested for some time. | |
1840 | ||
1841 | ||
1842 | ||
1843 | The building process | |
1844 | ~~~~~~~~~~~~~~~~~~~~ | |
1845 | cindex:[build directory] | |
1846 | Once _Local/Makefile_ (and _Local/eximon.conf_, if required) have been | |
1847 | created, run 'make' at the top level. It determines the architecture and | |
1848 | operating system types, and creates a build directory if one does not exist. | |
1849 | For example, on a Sun system running Solaris 8, the directory | |
1850 | _build-SunOS5-5.8-sparc_ is created. | |
1851 | cindex:[symbolic link,to source files] | |
1852 | Symbolic links to relevant source files are installed in the build directory. | |
1853 | ||
1854 | *Warning*: The %-j% (parallel) flag must not be used with 'make'; the | |
1855 | building process fails if it is set. | |
1856 | ||
1857 | If this is the first time 'make' has been run, it calls a script that builds | |
1858 | a make file inside the build directory, using the configuration files from the | |
1859 | _Local_ directory. The new make file is then passed to another instance of | |
1860 | 'make'. This does the real work, building a number of utility scripts, and | |
1861 | then compiling and linking the binaries for the Exim monitor (if configured), a | |
1862 | number of utility programs, and finally Exim itself. The command 'make | |
1863 | makefile' can be used to force a rebuild of the make file in the build | |
1864 | directory, should this ever be necessary. | |
1865 | ||
1866 | If you have problems building Exim, check for any comments there may be in the | |
1867 | _README_ file concerning your operating system, and also take a look at the | |
1868 | FAQ, where some common problems are covered. | |
1869 | ||
1870 | ||
1871 | ||
1872 | ||
1873 | [[SECToverride]] | |
1874 | Overriding build-time options for Exim | |
1875 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
1876 | cindex:[build-time options, overriding] | |
1877 | The main make file that is created at the beginning of the building process | |
1878 | consists of the concatenation of a number of files which set configuration | |
1879 | values, followed by a fixed set of 'make' instructions. If a value is set | |
1880 | more than once, the last setting overrides any previous ones. This provides a | |
1881 | convenient way of overriding defaults. The files that are concatenated are, in | |
1882 | order: | |
1883 | ||
1884 | &&& | |
1885 | _OS/Makefile-Default_ | |
1886 | _OS/Makefile-_<'ostype'> | |
1887 | _Local/Makefile_ | |
1888 | _Local/Makefile-_<'ostype'> | |
1889 | _Local/Makefile-_<'archtype'> | |
1890 | _Local/Makefile-_<'ostype'>-<'archtype'> | |
1891 | _OS/Makefile-Base_ | |
1892 | &&& | |
1893 | ||
1894 | cindex:[_Local/Makefile_] | |
1895 | cindex:[building Exim,operating system type] | |
1896 | cindex:[building Exim,architecture type] | |
1897 | where <'ostype'> is the operating system type and <'archtype'> is the | |
1898 | architecture type. _Local/Makefile_ is required to exist, and the building | |
1899 | process fails if it is absent. The other three _Local_ files are optional, | |
1900 | and are often not needed. | |
1901 | ||
1902 | The values used for <'ostype'> and <'archtype'> are obtained from scripts | |
1903 | called _scripts/os-type_ and _scripts/arch-type_ respectively. If either of | |
1904 | the environment variables EXIM_OSTYPE or EXIM_ARCHTYPE is set, their | |
1905 | values are used, thereby providing a means of forcing particular settings. | |
1906 | Otherwise, the scripts try to get values from the %uname% command. If this | |
1907 | fails, the shell variables OSTYPE and ARCHTYPE are inspected. A number | |
1908 | of 'ad hoc' transformations are then applied, to produce the standard names | |
1909 | that Exim expects. You can run these scripts directly from the shell in order | |
1910 | to find out what values are being used on your system. | |
1911 | ||
1912 | ||
1913 | _OS/Makefile-Default_ contains comments about the variables that are set | |
1914 | therein. Some (but not all) are mentioned below. If there is something that | |
1915 | needs changing, review the contents of this file and the contents of the make | |
1916 | file for your operating system (_OS/Makefile-<ostype>_) to see what the | |
1917 | default values are. | |
1918 | ||
1919 | ||
1920 | cindex:[building Exim,overriding default settings] | |
1921 | If you need to change any of the values that are set in _OS/Makefile-Default_ | |
1922 | or in _OS/Makefile-<ostype>_, or to add any new definitions, you do not | |
1923 | need to change the original files. Instead, you should make the changes by | |
1924 | putting the new values in an appropriate _Local_ file. For example, | |
1925 | cindex:[Tru64-Unix build-time settings] | |
1926 | when building Exim in many releases of the Tru64-Unix (formerly Digital UNIX, | |
1927 | formerly DEC-OSF1) operating system, it is necessary to specify that the C | |
1928 | compiler is called 'cc' rather than 'gcc'. Also, the compiler must be | |
1929 | called with the option %-std1%, to make it recognize some of the features of | |
1930 | Standard C that Exim uses. (Most other compilers recognize Standard C by | |
1931 | default.) To do this, you should create a file called _Local/Makefile-OSF1_ | |
1932 | containing the lines | |
1933 | ||
1934 | CC=cc | |
1935 | CFLAGS=-std1 | |
1936 | ||
1937 | If you are compiling for just one operating system, it may be easier to put | |
1938 | these lines directly into _Local/Makefile_. | |
1939 | ||
1940 | Keeping all your local configuration settings separate from the distributed | |
1941 | files makes it easy to transfer them to new versions of Exim simply by copying | |
1942 | the contents of the _Local_ directory. | |
1943 | ||
1944 | ||
1945 | cindex:[NIS lookup type,including support for] | |
1946 | cindex:[NIS+ lookup type,including support for] | |
1947 | cindex:[LDAP,including support for] | |
1948 | cindex:[lookup,inclusion in binary] | |
1949 | Exim contains support for doing LDAP, NIS, NIS+, and other kinds of file | |
1950 | lookup, but not all systems have these components installed, so the default is | |
1951 | not to include the relevant code in the binary. All the different kinds of file | |
1952 | and database lookup that Exim supports are implemented as separate code modules | |
1953 | which are included only if the relevant compile-time options are set. In the | |
1954 | case of LDAP, NIS, and NIS+, the settings for _Local/Makefile_ are: | |
1955 | ||
1956 | LOOKUP_LDAP=yes | |
1957 | LOOKUP_NIS=yes | |
1958 | LOOKUP_NISPLUS=yes | |
1959 | ||
1960 | and similar settings apply to the other lookup types. They are all listed in | |
1961 | _src/EDITME_. In most cases the relevant include files and interface | |
1962 | libraries need to be installed before compiling Exim. | |
1963 | cindex:[cdb,including support for] | |
1964 | However, in the case of cdb, which is included in the binary only if | |
1965 | ||
1966 | LOOKUP_CDB=yes | |
1967 | ||
1968 | is set, the code is entirely contained within Exim, and no external include | |
1969 | files or libraries are required. When a lookup type is not included in the | |
1970 | binary, attempts to configure Exim to use it cause run time configuration | |
1971 | errors. | |
1972 | ||
1973 | cindex:[Perl,including support for] | |
1974 | Exim can be linked with an embedded Perl interpreter, allowing Perl | |
1975 | subroutines to be called during string expansion. To enable this facility, | |
1976 | ||
1977 | EXIM_PERL=perl.o | |
1978 | ||
1979 | must be defined in _Local/Makefile_. Details of this facility are given in | |
1980 | chapter <<CHAPperl>>. | |
1981 | ||
1982 | cindex:[X11 libraries, location of] | |
1983 | The location of the X11 libraries is something that varies a lot between | |
1984 | operating systems, and of course there are different versions of X11 to cope | |
1985 | with. Exim itself makes no use of X11, but if you are compiling the Exim | |
1986 | monitor, the X11 libraries must be available. | |
1987 | The following three variables are set in _OS/Makefile-Default_: | |
1988 | ||
1989 | X11=/usr/X11R6 | |
1990 | XINCLUDE=-I$(X11)/include | |
1991 | XLFLAGS=-L$(X11)/lib | |
1992 | ||
1993 | These are overridden in some of the operating-system configuration files. For | |
1994 | example, in _OS/Makefile-SunOS5_ there is | |
1995 | ||
1996 | X11=/usr/openwin | |
1997 | XINCLUDE=-I$(X11)/include | |
1998 | XLFLAGS=-L$(X11)/lib -R$(X11)/lib | |
1999 | ||
2000 | If you need to override the default setting for your operating system, place a | |
2001 | definition of all three of these variables into your | |
2002 | _Local/Makefile-<ostype>_ file. | |
2003 | ||
2004 | cindex:[EXTRALIBS] | |
2005 | If you need to add any extra libraries to the link steps, these can be put in a | |
2006 | variable called EXTRALIBS, which appears in all the link commands, but by | |
2007 | default is not defined. In contrast, EXTRALIBS_EXIM is used only on the | |
2008 | command for linking the main Exim binary, and not for any associated utilities. | |
2009 | ||
2010 | cindex:[DBM libraries, configuration for building] | |
2011 | There is also DBMLIB, which appears in the link commands for binaries that | |
2012 | use DBM functions (see also section <<SECTdb>>). Finally, there is | |
2013 | EXTRALIBS_EXIMON, which appears only in the link step for the Exim monitor | |
2014 | binary, and which can be used, for example, to include additional X11 | |
2015 | libraries. | |
2016 | ||
2017 | cindex:[configuration file,editing] | |
2018 | The make file copes with rebuilding Exim correctly if any of the configuration | |
2019 | files are edited. However, if an optional configuration file is deleted, it is | |
2020 | necessary to touch the associated non-optional file (that is, _Local/Makefile_ | |
2021 | or _Local/eximon.conf_) before rebuilding. | |
2022 | ||
2023 | ||
2024 | OS-specific header files | |
2025 | ~~~~~~~~~~~~~~~~~~~~~~~~ | |
2026 | cindex:[_os.h_] | |
2027 | cindex:[building Exim,OS-specific C header files] | |
2028 | The _OS_ directory contains a number of files with names of the form | |
2029 | _os.h-<ostype>_. These are system-specific C header files that should not | |
2030 | normally need to be changed. There is a list of macro settings that are | |
2031 | recognized in the file _OS/os.configuring_, which should be consulted if you | |
2032 | are porting Exim to a new operating system. | |
2033 | ||
2034 | ||
2035 | ||
2036 | Overriding build-time options for the monitor | |
2037 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
2038 | cindex:[building Eximon,overriding default options] | |
2039 | A similar process is used for overriding things when building the Exim monitor, | |
2040 | where the files that are involved are | |
2041 | ||
2042 | &&& | |
2043 | _OS/eximon.conf-Default_ | |
2044 | _OS/eximon.conf-_<'ostype'> | |
2045 | _Local/eximon.conf_ | |
2046 | _Local/eximon.conf-_<'ostype'> | |
2047 | _Local/eximon.conf-_<'archtype'> | |
2048 | _Local/eximon.conf-_<'ostype'>-<'archtype'> | |
2049 | &&& | |
2050 | ||
2051 | cindex:[_Local/eximon.conf_] | |
2052 | As with Exim itself, the final three files need not exist, and in this case the | |
2053 | _OS/eximon.conf-<ostype>_ file is also optional. The default values in | |
2054 | _OS/eximon.conf-Default_ can be overridden dynamically by setting environment | |
2055 | variables of the same name, preceded by EXIMON_. For example, setting | |
2056 | EXIMON_LOG_DEPTH in the environment overrides the value of | |
2057 | LOG_DEPTH at run time. | |
2058 | ||
2059 | ||
2060 | ||
2061 | ||
2062 | Installing Exim binaries and scripts | |
2063 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
2064 | cindex:[installing Exim] | |
2065 | cindex:[BIN_DIRECTORY] | |
2066 | The command 'make install' runs the 'exim_install' script with no | |
2067 | arguments. The script copies binaries and utility scripts into the directory | |
2068 | whose name is specified by the BIN_DIRECTORY setting in | |
2069 | _Local/Makefile_. | |
2070 | ||
2071 | cindex:[CONFIGURE_FILE] | |
2072 | Exim's run time configuration file is named by the CONFIGURE_FILE setting | |
2073 | in _Local/Makefile_. If this names a single file, and the file does not | |
2074 | exist, the default configuration file _src/configure.default_ is copied there | |
2075 | by the installation script. If a run time configuration file already exists, it | |
2076 | is left alone. If CONFIGURE_FILE is a colon-separated list, naming several | |
2077 | alternative files, no default is installed. | |
2078 | ||
2079 | cindex:[system aliases file] | |
2080 | cindex:[_/etc/aliases_] | |
2081 | One change is made to the default configuration file when it is installed: the | |
2082 | default configuration contains a router that references a system aliases file. | |
2083 | The path to this file is set to the value specified by | |
2084 | SYSTEM_ALIASES_FILE in _Local/Makefile_ (_/etc/aliases_ by default). | |
2085 | If the system aliases file does not exist, the installation script creates it, | |
2086 | and outputs a comment to the user. | |
2087 | ||
2088 | The created file contains no aliases, but it does contain comments about the | |
2089 | aliases a site should normally have. Mail aliases have traditionally been | |
2090 | kept in _/etc/aliases_. However, some operating systems are now using | |
2091 | _/etc/mail/aliases_. You should check if yours is one of these, and change | |
2092 | Exim's configuration if necessary. | |
2093 | ||
2094 | The default configuration uses the local host's name as the only local domain, | |
2095 | and is set up to do local deliveries into the shared directory _/var/mail_, | |
2096 | running as the local user. System aliases and _.forward_ files in users' home | |
2097 | directories are supported, but no NIS or NIS+ support is configured. Domains | |
2098 | other than the name of the local host are routed using the DNS, with delivery | |
2099 | over SMTP. | |
2100 | ||
2101 | cindex:[setuid,installing Exim with] | |
2102 | The install script copies files only if they are newer than the files they are | |
2103 | going to replace. The Exim binary is required to be owned by root and have the | |
2104 | 'setuid' bit set, for normal configurations. Therefore, you must run 'make | |
2105 | install' as root so that it can set up the Exim binary in this way. However, in | |
2106 | some special situations (for example, if a host is doing no local deliveries) | |
2107 | it may be possible to run Exim without making the binary setuid root (see | |
2108 | chapter <<CHAPsecurity>> for details). | |
2109 | ||
2110 | It is possible to install Exim for special purposes (such as building a binary | |
2111 | distribution) in a private part of the file system. You can do this by a | |
2112 | command such as | |
2113 | ||
2114 | make DESTDIR=/some/directory/ install | |
2115 | ||
2116 | This has the effect of pre-pending the specified directory to all the file | |
2117 | paths, except the name of the system aliases file that appears in the default | |
2118 | configuration. (If a default alias file is created, its name 'is' modified.) | |
2119 | For backwards compatibility, ROOT is used if DESTDIR is not set, | |
2120 | but this usage is deprecated. | |
2121 | ||
2122 | cindex:[installing Exim,what is not installed] | |
2123 | Running 'make install' does not copy the Exim 4 conversion script | |
2124 | 'convert4r4', or the 'pcretest' test program. You will probably run the | |
2125 | first of these only once (if you are upgrading from Exim 3), and the second | |
2126 | isn't really part of Exim. None of the documentation files in the _doc_ | |
2127 | directory are copied, except for the info files when you have set | |
2128 | INFO_DIRECTORY, as described in section <<SECTinsinfdoc>> below. | |
2129 | ||
2130 | For the utility programs, old versions are renamed by adding the suffix _.O_ | |
2131 | to their names. The Exim binary itself, however, is handled differently. It is | |
2132 | installed under a name that includes the version number and the compile number, | |
2133 | for example _exim-{version}-1_. The script then arranges for a symbolic link | |
2134 | called _exim_ to point to the binary. If you are updating a previous version | |
2135 | of Exim, the script takes care to ensure that the name _exim_ is never absent | |
2136 | from the directory (as seen by other processes). | |
2137 | ||
2138 | cindex:[installing Exim,testing the script] | |
2139 | If you want to see what the 'make install' will do before running it for | |
2140 | real, you can pass the %-n% option to the installation script by this command: | |
2141 | ||
2142 | make INSTALL_ARG=-n install | |
2143 | ||
2144 | The contents of the variable INSTALL_ARG are passed to the installation | |
2145 | script. You do not need to be root to run this test. Alternatively, you can run | |
2146 | the installation script directly, but this must be from within the build | |
2147 | directory. For example, from the top-level Exim directory you could use this | |
2148 | command: | |
2149 | ||
2150 | (cd build-SunOS5-5.5.1-sparc; ../scripts/exim_install -n) | |
2151 | ||
2152 | cindex:[installing Exim,install script options] | |
2153 | There are two other options that can be supplied to the installation script. | |
2154 | ||
2155 | - %-no_chown% bypasses the call to change the owner of the installed binary | |
2156 | to root, and the call to make it a setuid binary. | |
2157 | ||
2158 | - %-no_symlink% bypasses the setting up of the symbolic link _exim_ to the | |
2159 | installed binary. | |
2160 | ||
2161 | INSTALL_ARG can be used to pass these options to the script. For example: | |
2162 | ||
2163 | make INSTALL_ARG=-no_symlink install | |
2164 | ||
2165 | ||
2166 | The installation script can also be given arguments specifying which files are | |
2167 | to be copied. For example, to install just the Exim binary, and nothing else, | |
2168 | without creating the symbolic link, you could use: | |
2169 | ||
2170 | make INSTALL_ARG='-no_symlink exim' install | |
2171 | ||
2172 | ||
2173 | ||
2174 | ||
2175 | [[SECTinsinfdoc]] | |
2176 | Installing info documentation | |
2177 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
2178 | cindex:[installing Exim,'info' documentation] | |
2179 | Not all systems use the GNU 'info' system for documentation, and for this | |
2180 | reason, the Texinfo source of Exim's documentation is not included in the main | |
2181 | distribution. Instead it is available separately from the ftp site (see section | |
2182 | <<SECTavail>>). | |
2183 | ||
2184 | If you have defined INFO_DIRECTORY in _Local/Makefile_ and the Texinfo | |
2185 | source of the documentation is found in the source tree, running 'make | |
2186 | install' automatically builds the info files and installs them. | |
2187 | ||
2188 | ||
2189 | ||
2190 | Setting up the spool directory | |
2191 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
2192 | cindex:[spool directory,creating] | |
2193 | When it starts up, Exim tries to create its spool directory if it does not | |
2194 | exist. The Exim uid and gid are used for the owner and group of the spool | |
2195 | directory. Sub-directories are automatically created in the spool directory as | |
2196 | necessary. | |
2197 | ||
2198 | ||
2199 | ||
2200 | ||
2201 | Testing | |
2202 | ~~~~~~~ | |
2203 | cindex:[testing,installation] | |
2204 | Having installed Exim, you can check that the run time configuration file is | |
2205 | syntactically valid by running the following command, which assumes that the | |
2206 | Exim binary directory is within your PATH environment variable: | |
2207 | ||
2208 | exim -bV | |
2209 | ||
2210 | If there are any errors in the configuration file, Exim outputs error messages. | |
2211 | Otherwise it outputs the version number and build date, | |
2212 | the DBM library that is being used, and information about which drivers and | |
2213 | other optional code modules are included in the binary. | |
2214 | Some simple routing tests can be done by using the address testing option. For | |
2215 | example, | |
2216 | ||
2217 | exim -bt <local username> | |
2218 | ||
2219 | should verify that it recognizes a local mailbox, and | |
2220 | ||
2221 | exim -bt <remote address> | |
2222 | ||
2223 | a remote one. Then try getting it to deliver mail, both locally and remotely. | |
2224 | This can be done by passing messages directly to Exim, without going through a | |
2225 | user agent. For example: | |
2226 | ||
2227 | exim -v postmaster@your.domain.example | |
2228 | From: user@your.domain.example | |
2229 | To: postmaster@your.domain.example | |
2230 | Subject: Testing Exim | |
2231 | ||
2232 | This is a test message. | |
2233 | ^D | |
2234 | ||
2235 | The %-v% option causes Exim to output some verification of what it is doing. | |
2236 | In this case you should see copies of three log lines, one for the message's | |
2237 | arrival, one for its delivery, and one containing ``Completed''. | |
2238 | ||
2239 | cindex:[delivery,problems with] | |
2240 | If you encounter problems, look at Exim's log files ('mainlog' and | |
2241 | 'paniclog') to see if there is any relevant information there. Another source | |
2242 | of information is running Exim with debugging turned on, by specifying the | |
2243 | %-d% option. If a message is stuck on Exim's spool, you can force a delivery | |
2244 | with debugging turned on by a command of the form | |
2245 | ||
2246 | exim -d -M <message-id> | |
2247 | ||
2248 | You must be root or an ``admin user'' in order to do this. The %-d% option | |
2249 | produces rather a lot of output, but you can cut this down to specific areas. | |
2250 | For example, if you use %-d-all+route% only the debugging information relevant | |
2251 | to routing is included. (See the %-d% option in chapter <<CHAPcommandline>> for | |
2252 | more details.) | |
2253 | ||
2254 | cindex:[``sticky'' bit] | |
2255 | cindex:[lock files] | |
2256 | One specific problem that has shown up on some sites is the inability to do | |
2257 | local deliveries into a shared mailbox directory, because it does not have the | |
2258 | ``sticky bit'' set on it. By default, Exim tries to create a lock file before | |
2259 | writing to a mailbox file, and if it cannot create the lock file, the delivery | |
2260 | is deferred. You can get round this either by setting the ``sticky bit'' on the | |
2261 | directory, or by setting a specific group for local deliveries and allowing | |
2262 | that group to create files in the directory (see the comments above the | |
2263 | ^local_delivery^ transport in the default configuration file). Another | |
2264 | approach is to configure Exim not to use lock files, but just to rely on | |
2265 | 'fcntl()' locking instead. However, you should do this only if all user | |
2266 | agents also use 'fcntl()' locking. For further discussion of locking issues, | |
2267 | see chapter <<CHAPappendfile>>. | |
2268 | ||
2269 | One thing that cannot be tested on a system that is already running an MTA is | |
2270 | the receipt of incoming SMTP mail on the standard SMTP port. However, the | |
2271 | %-oX% option can be used to run an Exim daemon that listens on some other | |
2272 | port, or 'inetd' can be used to do this. The %-bh% option and the | |
2273 | 'exim_checkaccess' utility can be used to check out policy controls on | |
2274 | incoming SMTP mail. | |
2275 | ||
2276 | Testing a new version on a system that is already running Exim can most easily | |
2277 | be done by building a binary with a different CONFIGURE_FILE setting. From | |
2278 | within the run time configuration, all other file and directory names | |
2279 | that Exim uses can be altered, in order to keep it entirely clear of the | |
2280 | production version. | |
2281 | ||
2282 | ||
2283 | Replacing another MTA with Exim | |
2284 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
2285 | cindex:[replacing another MTA] | |
2286 | Building and installing Exim for the first time does not of itself put it in | |
2287 | general use. The name by which the system's MTA is called by mail user agents | |
2288 | is either _/usr/sbin/sendmail_, or _/usr/lib/sendmail_ (depending on the | |
2289 | operating system), and it is necessary to make this name point to the 'exim' | |
2290 | binary in order to get the user agents to pass messages to Exim. This is | |
2291 | normally done by renaming any existing file and making _/usr/sbin/sendmail_ | |
2292 | or _/usr/lib/sendmail_ | |
2293 | ||
2294 | cindex:[symbolic link,to 'exim' binary] | |
2295 | a symbolic link to the 'exim' binary. It is a good idea to remove any setuid | |
2296 | privilege and executable status from the old MTA. It is then necessary to stop | |
2297 | and restart the mailer daemon, if one is running. | |
2298 | ||
2299 | cindex:[FreeBSD, MTA indirection] | |
2300 | cindex:[_/etc/mail/mailer.conf_] | |
2301 | Some operating systems have introduced alternative ways of switching MTAs. For | |
2302 | example, if you are running FreeBSD, you need to edit the file | |
2303 | _/etc/mail/mailer.conf_ instead of setting up a symbolic link as just | |
2304 | described. A typical example of the contents of this file for running Exim is | |
2305 | as follows: | |
2306 | ||
2307 | sendmail /usr/exim/bin/exim | |
2308 | send-mail /usr/exim/bin/exim | |
2309 | mailq /usr/exim/bin/exim -bp | |
2310 | newaliases /usr/bin/true | |
2311 | ||
2312 | ||
2313 | Once you have set up the symbolic link, or edited _/etc/mail/mailer.conf_, | |
2314 | your Exim installation is ``live''. Check it by sending a message from your | |
2315 | favourite user agent. | |
2316 | ||
2317 | You should consider what to tell your users about the change of MTA. Exim may | |
2318 | have different capabilities to what was previously running, and there are | |
2319 | various operational differences such as the text of messages produced by | |
2320 | command line options and in bounce messages. If you allow your users to make | |
2321 | use of Exim's filtering capabilities, you should make the document entitled | |
2322 | 'Exim's interface to mail filtering' | |
2323 | available to them. | |
2324 | ||
2325 | ||
2326 | ||
2327 | Upgrading Exim | |
2328 | ~~~~~~~~~~~~~~ | |
2329 | cindex:[upgrading Exim] | |
2330 | If you are already running Exim on your host, building and installing a new | |
2331 | version automatically makes it available to MUAs, or any other programs that | |
2332 | call the MTA directly. However, if you are running an Exim daemon, you do need | |
2333 | to send it a HUP signal, to make it re-exec itself, and thereby pick up the new | |
2334 | binary. You do not need to stop processing mail in order to install a new | |
2335 | version of Exim. | |
2336 | ||
2337 | ||
2338 | ||
2339 | Stopping the Exim daemon on Solaris | |
2340 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
2341 | cindex:[Solaris,stopping Exim on] | |
2342 | The standard command for stopping the mailer daemon on Solaris is | |
2343 | ||
2344 | /etc/init.d/sendmail stop | |
2345 | ||
2346 | If _/usr/lib/sendmail_ has been turned into a symbolic link, this script | |
2347 | fails to stop Exim because it uses the command 'ps -e' and greps the output | |
2348 | for the text ``sendmail''; this is not present because the actual program name | |
2349 | (that is, ``exim'') is given by the 'ps' command with these options. A solution | |
2350 | is to replace the line that finds the process id with something like | |
2351 | ||
2352 | pid=`cat /var/spool/exim/exim-daemon.pid` | |
2353 | ||
2354 | to obtain the daemon's pid directly from the file that Exim saves it in. | |
2355 | ||
2356 | Note, however, that stopping the daemon does not ``stop Exim''. Messages can | |
2357 | still be received from local processes, and if automatic delivery is configured | |
2358 | (the normal case), deliveries will still occur. | |
2359 | ||
2360 | ||
2361 | ||
2362 | ||
2363 | //////////////////////////////////////////////////////////////////////////// | |
2364 | //////////////////////////////////////////////////////////////////////////// | |
2365 | ||
2366 | [[CHAPcommandline]] | |
2367 | The Exim command line | |
2368 | --------------------- | |
2369 | cindex:[command line,options] | |
2370 | cindex:[options,command line] | |
2371 | Exim's command line takes the standard Unix form of a sequence of options, | |
2372 | each starting with a hyphen character, followed by a number of arguments. The | |
2373 | options are compatible with the main options of Sendmail, and there are also | |
2374 | some additional options, some of which are compatible with Smail 3. Certain | |
2375 | combinations of options do not make sense, and provoke an error if used. | |
2376 | The form of the arguments depends on which options are set. | |
2377 | ||
2378 | ||
2379 | Setting options by program name | |
2380 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
2381 | cindex:['mailq'] | |
2382 | If Exim is called under the name 'mailq', it behaves as if the option %-bp% | |
2383 | were present before any other options. | |
2384 | The %-bp% option requests a listing of the contents of the mail queue on the | |
2385 | standard output. | |
2386 | This feature is for compatibility with some systems that contain a command of | |
2387 | that name in one of the standard libraries, symbolically linked to | |
2388 | _/usr/sbin/sendmail_ or _/usr/lib/sendmail_. | |
2389 | ||
2390 | cindex:['rsmtp'] | |
2391 | If Exim is called under the name 'rsmtp' it behaves as if the option %-bS% | |
2392 | were present before any other options, for compatibility with Smail. The %-bS% | |
2393 | option is used for reading in a number of messages in batched SMTP format. | |
2394 | ||
2395 | cindex:['rmail'] | |
2396 | If Exim is called under the name 'rmail' it behaves as if the %-i% and | |
2397 | %-oee% options were present before any other options, for compatibility with | |
2398 | Smail. The name 'rmail' is used as an interface by some UUCP systems. | |
2399 | ||
2400 | cindex:['runq'] | |
2401 | cindex:[queue runner] | |
2402 | If Exim is called under the name 'runq' it behaves as if the option %-q% were | |
2403 | present before any other options, for compatibility with Smail. The %-q% | |
2404 | option causes a single queue runner process to be started. | |
2405 | ||
2406 | cindex:['newaliases'] | |
2407 | cindex:[alias file,building] | |
2408 | cindex:[Sendmail compatibility,calling Exim as 'newaliases'] | |
2409 | If Exim is called under the name 'newaliases' it behaves as if the option | |
2410 | %-bi% were present before any other options, for compatibility with Sendmail. | |
2411 | This option is used for rebuilding Sendmail's alias file. Exim does not have | |
2412 | the concept of a single alias file, but can be configured to run a given | |
2413 | command if called with the %-bi% option. | |
2414 | ||
2415 | ||
2416 | [[SECTtrustedadmin]] | |
2417 | Trusted and admin users | |
2418 | ~~~~~~~~~~~~~~~~~~~~~~~ | |
2419 | Some Exim options are available only to 'trusted users' and others are | |
2420 | available only to 'admin users'. In the description below, the phrases ``Exim | |
2421 | user'' and ``Exim group'' mean the user and group defined by EXIM_USER and | |
2422 | EXIM_GROUP in _Local/Makefile_ or set by the %exim_user% and | |
2423 | %exim_group% options. These do not necessarily have to use the name ``exim''. | |
2424 | ||
2425 | - cindex:[trusted user,definition of] | |
2426 | cindex:[user, trusted definition of] | |
2427 | The trusted users are root, the Exim user, any user listed in the | |
2428 | %trusted_users% configuration option, and any user whose current group or any | |
2429 | supplementary group is one of those listed in the %trusted_groups% | |
2430 | configuration option. Note that the Exim group is not automatically trusted. | |
2431 | + | |
2432 | cindex:[``From'' line] | |
2433 | cindex:[envelope sender] | |
2434 | Trusted users are always permitted to use the %-f% option or a leading ``From '' | |
2435 | line to specify the envelope sender of a message that is passed to Exim through | |
2436 | the local interface (see the %-bm% and %-f% options below). See the | |
2437 | %untrusted_set_sender% option for a way of permitting non-trusted users to | |
2438 | set envelope senders. | |
2439 | + | |
2440 | cindex:['From:' header line] | |
2441 | cindex:['Sender:' header line] | |
2442 | For a trusted user, there is never any check on the contents of the 'From:' | |
2443 | header line, and a 'Sender:' line is never added. Furthermore, any existing | |
2444 | 'Sender:' line in incoming local (non-TCP/IP) messages is not removed. | |
2445 | + | |
2446 | Trusted users may also specify a host name, host address, interface address, | |
2447 | protocol name, ident value, and authentication data when submitting a message | |
2448 | locally. Thus, they are able to insert messages into Exim's queue locally that | |
2449 | have the characteristics of messages received from a remote host. Untrusted | |
2450 | users may in some circumstances use %-f%, but can never set the other values | |
2451 | that are available to trusted users. | |
2452 | ||
2453 | - cindex:[user, admin definition of] | |
2454 | cindex:[admin user,definition of] | |
2455 | The admin users are root, the Exim user, and any user that is a member of the | |
2456 | Exim group or of any group listed in the %admin_groups% configuration option. | |
2457 | The current group does not have to be one of these groups. | |
2458 | + | |
2459 | Admin users are permitted to list the queue, and to carry out certain | |
2460 | operations on messages, for example, to force delivery failures. It is also | |
2461 | necessary to be an admin user in order to see the full information provided by | |
2462 | the Exim monitor, and full debugging output. | |
2463 | + | |
2464 | By default, the use of the %-M%, %-q%, %-R%, and %-S% options to cause Exim | |
2465 | to attempt delivery of messages on its queue is restricted to admin users. | |
2466 | However, this restriction can be relaxed by setting the %prod_requires_admin% | |
2467 | option false (that is, specifying %no_prod_requires_admin%). | |
2468 | + | |
2469 | Similarly, the use of the %-bp% option to list all the messages in the queue | |
2470 | is restricted to admin users unless %queue_list_requires_admin% is set | |
2471 | false. | |
2472 | ||
2473 | ||
2474 | *Warning*: If you configure your system so that admin users are able to | |
2475 | edit Exim's configuration file, you are giving those users an easy way of | |
2476 | getting root. There is further discussion of this issue at the start of chapter | |
2477 | <<CHAPconf>>. | |
2478 | ||
2479 | ||
2480 | ||
2481 | ||
2482 | Command line options | |
2483 | ~~~~~~~~~~~~~~~~~~~~ | |
2484 | The command options are described in alphabetical order below. | |
2485 | ||
2486 | /// | |
2487 | We insert a stylized DocBook comment here, to identify the start of the command | |
2488 | line options. This is for the benefit of the Perl script that automatically | |
2489 | creates a man page for the options. | |
2490 | /// | |
2491 | ||
2492 | ++++ | |
2493 | <!-- === Start of command line options === --> | |
2494 | ++++ | |
2495 | ||
2496 | ||
2497 | *{hh}*:: | |
2498 | oindex:[{hh}] | |
2499 | cindex:[options, command line; terminating] | |
2500 | This is a pseudo-option whose only purpose is to terminate the options and | |
2501 | therefore to cause subsequent command line items to be treated as arguments | |
2502 | rather than options, even if they begin with hyphens. | |
2503 | ||
2504 | *--help*:: | |
2505 | oindex:[%{hh}help%] | |
2506 | This option causes Exim to output a few sentences stating what it is. | |
2507 | The same output is generated if the Exim binary is called with no options and | |
2508 | no arguments. | |
2509 | ||
2510 | *-B*<'type'>:: | |
2511 | oindex:[%-B%] | |
2512 | cindex:[8-bit characters] | |
2513 | cindex:[Sendmail compatibility,8-bit characters] | |
2514 | This is a Sendmail option for selecting 7 or 8 bit processing. Exim is 8-bit | |
2515 | clean; it ignores this option. | |
2516 | ||
2517 | *-bd*:: | |
2518 | oindex:[%-bd%] | |
2519 | cindex:[daemon] | |
2520 | cindex:[SMTP listener] | |
2521 | cindex:[queue runner] | |
2522 | This option runs Exim as a daemon, awaiting incoming SMTP connections. Usually | |
2523 | the %-bd% option is combined with the %-q%<'time'> option, to specify that | |
2524 | the daemon should also initiate periodic queue runs. | |
2525 | + | |
2526 | The %-bd% option can be used only by an admin user. If either of the %-d% | |
2527 | (debugging) or %-v% (verifying) options are set, the daemon does not | |
2528 | disconnect from the controlling terminal. When running this way, it can be | |
2529 | stopped by pressing ctrl-C. | |
2530 | + | |
2531 | By default, Exim listens for incoming connections to the standard SMTP port on | |
2532 | all the host's running interfaces. However, it is possible to listen on other | |
2533 | ports, on multiple ports, and only on specific interfaces. Chapter | |
2534 | <<CHAPinterfaces>> contains a description of the options that control this. | |
2535 | + | |
2536 | When a listening daemon | |
2537 | cindex:[daemon,process id (pid)] | |
2538 | cindex:[pid (process id),of daemon] | |
2539 | is started without the use of %-oX% (that is, without overriding the normal | |
2540 | configuration), it writes its process id to a file called _exim-daemon.pid_ in | |
2541 | Exim's spool directory. This location can be overridden by setting | |
2542 | PID_FILE_PATH in _Local/Makefile_. The file is written while Exim is still | |
2543 | running as root. | |
2544 | + | |
2545 | When %-oX% is used on the command line to start a listening daemon, the | |
2546 | process id is not written to the normal pid file path. However, %-oP% can be | |
2547 | used to specify a path on the command line if a pid file is required. | |
2548 | + | |
2549 | The SIGHUP signal | |
2550 | cindex:[SIGHUP] | |
2551 | can be used to cause the daemon to re-exec itself. This should be done whenever | |
2552 | Exim's configuration file, or any file that is incorporated into it by means of | |
2553 | the %.include% facility, is changed, and also whenever a new version of Exim is | |
2554 | installed. It is not necessary to do this when other files that are referenced | |
2555 | from the configuration (for example, alias files) are changed, because these | |
2556 | are reread each time they are used. | |
2557 | ||
2558 | *-bdf*:: | |
2559 | oindex:[%-bdf%] | |
2560 | This option has the same effect as %-bd% except that it never disconnects from | |
2561 | the controlling terminal, even when no debugging is specified. | |
2562 | ||
2563 | *-be*:: | |
2564 | oindex:[%-be%] | |
2565 | cindex:[testing,string expansion] | |
2566 | cindex:[expansion,testing] | |
2567 | Run Exim in expansion testing mode. Exim discards its root privilege, to | |
2568 | prevent ordinary users from using this mode to read otherwise inaccessible | |
2569 | files. If no arguments are given, Exim runs interactively, prompting for lines | |
2570 | of data. | |
2571 | + | |
2572 | If Exim was built with USE_READLINE=yes in _Local/Makefile_, it tries | |
2573 | to load the %libreadline% library dynamically whenever the %-be% option is | |
2574 | used without command line arguments. If successful, it uses the 'readline()' | |
2575 | function, which provides extensive line-editing facilities, for reading the | |
2576 | test data. A line history is supported. | |
2577 | + | |
2578 | Long expansion expressions can be split over several lines by using backslash | |
2579 | continuations. As in Exim's run time configuration, whitespace at the start of | |
2580 | continuation lines is ignored. Each argument or data line is passed through the | |
2581 | string expansion mechanism, and the result is output. Variable values from the | |
2582 | configuration file (for example, $qualify_domain$) are available, but no | |
2583 | message-specific values (such as $domain$) are set, because no message is | |
2584 | being processed. | |
2585 | ||
2586 | *-bF*~<'filename'>:: | |
2587 | oindex:[%-bF%] | |
2588 | cindex:[system filter,testing] | |
2589 | cindex:[testing,system filter] | |
2590 | This option is the same as %-bf% except that it assumes that the filter being | |
2591 | tested is a system filter. The additional commands that are available only in | |
2592 | system filters are recognized. | |
2593 | ||
2594 | *-bf*~<'filename'>:: | |
2595 | oindex:[%-bf%] | |
2596 | cindex:[filter,testing] | |
2597 | cindex:[testing,filter file] | |
2598 | cindex:[forward file,testing] | |
2599 | cindex:[testing,forward file] | |
2600 | cindex:[Sieve filter,testing] | |
2601 | This option runs Exim in user filter testing mode; the file is the filter file | |
2602 | to be tested, and a test message must be supplied on the standard input. If | |
2603 | there are no message-dependent tests in the filter, an empty file can be | |
2604 | supplied. | |
2605 | + | |
2606 | If you want to test a system filter file, use %-bF% instead of %-bf%. You can | |
2607 | use both %-bF% and %-bf% on the same command, in order to | |
2608 | test a system filter and a user filter in the same run. For example: | |
2609 | ||
2610 | exim -bF /system/filter -bf /user/filter </test/message | |
2611 | + | |
2612 | This is helpful when the system filter adds header lines or sets filter | |
2613 | variables that are used by the user filter. | |
2614 | + | |
2615 | If the test filter file does not begin with one of the special lines | |
2616 | ||
2617 | # Exim filter | |
2618 | # Sieve filter | |
2619 | + | |
2620 | it is taken to be a normal _.forward_ file, and is tested for validity under | |
2621 | that interpretation. See sections <<SECTitenonfilred>> to <<SECTspecitredli>> for a | |
2622 | description of the possible contents of non-filter redirection lists. | |
2623 | + | |
2624 | The result of an Exim command that uses %-bf%, provided no errors are | |
2625 | detected, is a list of the actions that Exim would try to take if presented | |
2626 | with the message for real. More details of filter testing are given in the | |
2627 | separate document entitled 'Exim's interfaces to mail filtering'. | |
2628 | + | |
2629 | When testing a filter file, | |
2630 | cindex:[``From'' line] | |
2631 | cindex:[envelope sender] | |
2632 | cindex:[%-f% option,for filter testing] | |
2633 | the envelope sender can be set by the %-f% option, | |
2634 | or by a ``From '' line at the start of the test message. Various parameters that | |
2635 | would normally be taken from the envelope recipient address of the message can | |
2636 | be set by means of additional command line options (see the next four options). | |
2637 | ||
2638 | *-bfd*~<'domain'>:: | |
2639 | oindex:[%-bfd%] | |
2640 | This sets the domain of the recipient address when a filter file is being | |
2641 | tested by means of the %-bf% option. The default is the value of | |
2642 | $qualify_domain$. | |
2643 | ||
2644 | *-bfl*~<'local~part'>:: | |
2645 | oindex:[%-bfl%] | |
2646 | This sets the local part of the recipient address when a filter file is being | |
2647 | tested by means of the %-bf% option. The default is the username of the | |
2648 | process that calls Exim. A local part should be specified with any prefix or | |
2649 | suffix stripped, because that is how it appears to the filter when a message is | |
2650 | actually being delivered. | |
2651 | ||
2652 | *-bfp*~<'prefix'>:: | |
2653 | oindex:[%-bfp%] | |
2654 | This sets the prefix of the local part of the recipient address when a filter | |
2655 | file is being tested by means of the %-bf% option. The default is an empty | |
2656 | prefix. | |
2657 | ||
2658 | *-bfs*~<'suffix'>:: | |
2659 | oindex:[%-bfs%] | |
2660 | This sets the suffix of the local part of the recipient address when a filter | |
2661 | file is being tested by means of the %-bf% option. The default is an empty | |
2662 | suffix. | |
2663 | ||
2664 | *-bh*~<'IP~address'>:: | |
2665 | oindex:[%-bh%] | |
2666 | cindex:[testing,incoming SMTP] | |
2667 | cindex:[SMTP,testing incoming] | |
2668 | cindex:[testing,relay control] | |
2669 | cindex:[relaying,testing configuration] | |
2670 | cindex:[policy control,testing] | |
2671 | cindex:[debugging,%-bh% option] | |
2672 | This option runs a fake SMTP session as if from the given IP address, using the | |
2673 | standard input and output. The IP address may include a port number at the end, | |
2674 | after a full stop. For example: | |
2675 | ||
2676 | exim -bh 10.9.8.7.1234 | |
2677 | exim -bh fe80::a00:20ff:fe86:a061.5678 | |
2678 | + | |
2679 | When an IPv6 address is given, it is converted into canonical form. In the case | |
2680 | of the second example above, the value of $sender_host_address$ after | |
2681 | conversion to the canonical form is `fe80:0000:0000:0a00:20ff:fe86:a061.5678`. | |
2682 | + | |
2683 | Comments as to what is going on are written to the standard error file. These | |
2684 | include lines beginning with ``LOG'' for anything that would have been logged. | |
2685 | This facility is provided for testing configuration options for incoming | |
2686 | messages, to make sure they implement the required policy. For example, you can | |
2687 | test your relay controls using %-bh%. | |
2688 | + | |
2689 | *Warning 1*: | |
2690 | cindex:[RFC 1413] | |
2691 | You cannot test features of the configuration that rely on | |
2692 | ident (RFC 1413) callouts. These cannot be done when testing using | |
2693 | %-bh% because there is no incoming SMTP connection. | |
2694 | + | |
2695 | *Warning 2*: Address verification callouts (see section <<SECTcallver>>) are | |
2696 | also skipped when testing using %-bh%. If you want these callouts to occur, | |
2697 | use %-bhc% instead. | |
2698 | + | |
2699 | Messages supplied during the testing session are discarded, and nothing is | |
2700 | written to any of the real log files. There may be pauses when DNS (and other) | |
2701 | lookups are taking place, and of course these may time out. The %-oMi% option | |
2702 | can be used to specify a specific IP interface and port if this is important. | |
2703 | + | |
2704 | The 'exim_checkaccess' utility is a ``packaged'' version of %-bh% whose | |
2705 | output just states whether a given recipient address from a given host is | |
2706 | acceptable or not. See section <<SECTcheckaccess>>. | |
2707 | ||
2708 | *-bhc*~<'IP~address'>:: | |
2709 | oindex:[%-bhc%] | |
2710 | This option operates in the same way as %-bh%, except that address | |
2711 | verification callouts are performed if required. This includes consulting and | |
2712 | updating the callout cache database. | |
2713 | ||
2714 | *-bi*:: | |
2715 | oindex:[%-bi%] | |
2716 | cindex:[alias file,building] | |
2717 | cindex:[building alias file] | |
2718 | cindex:[Sendmail compatibility,%-bi% option] | |
2719 | Sendmail interprets the %-bi% option as a request to rebuild its alias file. | |
2720 | Exim does not have the concept of a single alias file, and so it cannot mimic | |
2721 | this behaviour. However, calls to _/usr/lib/sendmail_ with the %-bi% option | |
2722 | tend to appear in various scripts such as NIS make files, so the option must be | |
2723 | recognized. | |
2724 | + | |
2725 | If %-bi% is encountered, the command specified by the %bi_command% | |
2726 | configuration option is run, under the uid and gid of the caller of Exim. If | |
2727 | the %-oA% option is used, its value is passed to the command as an argument. | |
2728 | The command set by %bi_command% may not contain arguments. The command can use | |
2729 | the 'exim_dbmbuild' utility, or some other means, to rebuild alias files if | |
2730 | this is required. If the %bi_command% option is not set, calling Exim with | |
2731 | %-bi% is a no-op. | |
2732 | ||
2733 | *-bm*:: | |
2734 | oindex:[%-bm%] | |
2735 | cindex:[local message reception] | |
2736 | This option runs an Exim receiving process that accepts an incoming, | |
2737 | locally-generated message on the current input. The recipients are given as the | |
2738 | command arguments (except when %-t% is also present -- see below). Each | |
2739 | argument can be a comma-separated list of RFC 2822 addresses. This is the | |
2740 | default option for selecting the overall action of an Exim call; it is assumed | |
2741 | if no other conflicting option is present. | |
2742 | + | |
2743 | If any addresses in the message are unqualified (have no domain), they are | |
2744 | qualified by the values of the %qualify_domain% or %qualify_recipient% | |
2745 | options, as appropriate. The %-bnq% option (see below) provides a way of | |
2746 | suppressing this for special cases. | |
2747 | + | |
2748 | Policy checks on the contents of local messages can be enforced by means of | |
2749 | the non-SMTP ACL. See chapter <<CHAPACL>> for details. | |
2750 | + | |
2751 | The return code | |
2752 | cindex:[return code,for %-bm%] | |
2753 | is zero if the message is successfully accepted. Otherwise, the | |
2754 | action is controlled by the %-oe'x'% option setting -- see below. | |
2755 | + | |
2756 | The format | |
2757 | cindex:[message,format] | |
2758 | cindex:[format,message] | |
2759 | cindex:[``From'' line] | |
2760 | cindex:[UUCP,``From'' line] | |
2761 | cindex:[Sendmail compatibility,``From'' line] | |
2762 | of the message must be as defined in RFC 2822, except that, for | |
2763 | compatibility with Sendmail and Smail, a line in one of the forms | |
2764 | ||
2765 | From sender Fri Jan 5 12:55 GMT 1997 | |
2766 | From sender Fri, 5 Jan 97 12:55:01 | |
2767 | + | |
2768 | (with the weekday optional, and possibly with additional text after the date) | |
2769 | is permitted to appear at the start of the message. There appears to be no | |
2770 | authoritative specification of the format of this line. Exim recognizes it by | |
2771 | matching against the regular expression defined by the %uucp_from_pattern% | |
2772 | option, which can be changed if necessary. | |
2773 | + | |
2774 | The | |
2775 | cindex:[%-f% option,overriding ``From'' line] | |
2776 | specified sender is treated as if it were given as the argument to the | |
2777 | %-f% option, but if a %-f% option is also present, its argument is used in | |
2778 | preference to the address taken from the message. The caller of Exim must be a | |
2779 | trusted user for the sender of a message to be set in this way. | |
2780 | ||
2781 | *-bnq*:: | |
2782 | oindex:[%-bnq%] | |
2783 | cindex:[address qualification, suppressing] | |
2784 | By default, Exim automatically qualifies unqualified addresses (those | |
2785 | without domains) that appear in messages that are submitted locally (that | |
2786 | is, not over TCP/IP). This qualification applies both to addresses in | |
2787 | envelopes, and addresses in header lines. Sender addresses are qualified using | |
2788 | %qualify_domain%, and recipient addresses using %qualify_recipient% (which | |
2789 | defaults to the value of %qualify_domain%). | |
2790 | + | |
2791 | Sometimes, qualification is not wanted. For example, if %-bS% (batch SMTP) is | |
2792 | being used to re-submit messages that originally came from remote hosts after | |
2793 | content scanning, you probably do not want to qualify unqualified addresses in | |
2794 | header lines. (Such lines will be present only if you have not enabled a header | |
2795 | syntax check in the appropriate ACL.) | |
2796 | + | |
2797 | The %-bnq% option suppresses all qualification of unqualified addresses in | |
2798 | messages that originate on the local host. When this is used, unqualified | |
2799 | addresses in the envelope provoke errors (causing message rejection) and | |
2800 | unqualified addresses in header lines are left alone. | |
2801 | ||
2802 | ||
2803 | *-bP*:: | |
2804 | oindex:[%-bP%] | |
2805 | cindex:[configuration options, extracting] | |
2806 | cindex:[options,configuration -- extracting] | |
2807 | If this option is given with no arguments, it causes the values of all Exim's | |
2808 | main configuration options to be written to the standard output. The values | |
2809 | of one or more specific options can be requested by giving their names as | |
2810 | arguments, for example: | |
2811 | ||
2812 | exim -bP qualify_domain hold_domains | |
2813 | + | |
2814 | However, any option setting that is preceded by the word ``hide'' in the | |
2815 | configuration file is not shown in full, except to an admin user. For other | |
2816 | users, the output is as in this example: | |
2817 | ||
2818 | mysql_servers = <value not displayable> | |
2819 | + | |
2820 | If %configure_file% is given as an argument, the name of the run time | |
2821 | configuration file is output. | |
2822 | If a list of configuration files was supplied, the value that is output here | |
2823 | is the name of the file that was actually used. | |
2824 | + | |
2825 | cindex:[daemon,process id (pid)] | |
2826 | cindex:[pid (process id),of daemon] | |
2827 | If %log_file_path% or %pid_file_path% are given, the names of the directories | |
2828 | where log files and daemon pid files are written are output, respectively. If | |
2829 | these values are unset, log files are written in a sub-directory of the spool | |
2830 | directory called %log%, and the pid file is written directly into the spool | |
2831 | directory. | |
2832 | + | |
2833 | If %-bP% is followed by a name preceded by `+`, for example, | |
2834 | ||
2835 | exim -bP +local_domains | |
2836 | + | |
2837 | it searches for a matching named list of any type (domain, host, address, or | |
2838 | local part) and outputs what it finds. | |
2839 | + | |
2840 | If | |
2841 | cindex:[options,router -- extracting] | |
2842 | cindex:[options,transport -- extracting] | |
2843 | one of the words %router%, %transport%, or %authenticator% is given, | |
2844 | followed by the name of an appropriate driver instance, the option settings for | |
2845 | that driver are output. For example: | |
2846 | ||
2847 | exim -bP transport local_delivery | |
2848 | + | |
2849 | The generic driver options are output first, followed by the driver's private | |
2850 | options. A list of the names of drivers of a particular type can be obtained by | |
2851 | using one of the words %router_list%, %transport_list%, or | |
2852 | %authenticator_list%, and a complete list of all drivers with their option | |
2853 | settings can be obtained by using %routers%, %transports%, or %authenticators%. | |
2854 | ||
2855 | ||
2856 | *-bp*:: | |
2857 | oindex:[%-bp%] | |
2858 | cindex:[queue,listing messages on] | |
2859 | cindex:[listing,messages on the queue] | |
2860 | This option requests a listing of the contents of the mail queue on the | |
2861 | standard output. If the %-bp% option is followed by a list of message ids, | |
2862 | just those messages are listed. By default, this option can be used only by an | |
2863 | admin user. However, the %queue_list_requires_admin% option can be set false | |
2864 | to allow any user to see the queue. | |
2865 | + | |
2866 | Each message on the queue is displayed as in the following example: | |
2867 | ||
2868 | 25m 2.9K 0t5C6f-0000c8-00 <alice@wonderland.fict.example> | |
2869 | red.king@looking-glass.fict.example | |
2870 | <other addresses> | |
2871 | + | |
2872 | The | |
2873 | cindex:[message,size in queue listing] | |
2874 | cindex:[size,of message] | |
2875 | first line contains the length of time the message has been on the queue | |
2876 | (in this case 25 minutes), the size of the message (2.9K), the unique local | |
2877 | identifier for the message, and the message sender, as contained in the | |
2878 | envelope. For bounce messages, the sender address is empty, and appears as | |
2879 | ``<>''. If the message was submitted locally by an untrusted user who overrode | |
2880 | the default sender address, the user's login name is shown in parentheses | |
2881 | before the sender address. | |
2882 | + | |
2883 | If | |
2884 | cindex:[frozen messages,in queue listing] | |
2885 | the message is frozen (attempts to deliver it are suspended) then the text | |
2886 | ``\*\*\* frozen \*\*\*'' is displayed at the end of this line. | |
2887 | + | |
2888 | The recipients of the message (taken from the envelope, not the headers) are | |
2889 | displayed on subsequent lines. Those addresses to which the message has already | |
2890 | been delivered are marked with the letter D. If an original address gets | |
2891 | expanded into several addresses via an alias or forward file, the original is | |
2892 | displayed with a D only when deliveries for all of its child addresses are | |
2893 | complete. | |
2894 | ||
2895 | ||
2896 | *-bpa*:: | |
2897 | oindex:[%-bpa%] | |
2898 | This option operates like %-bp%, but in addition it shows delivered addresses | |
2899 | that were generated from the original top level address(es) in each message by | |
2900 | alias or forwarding operations. These addresses are flagged with ``+D'' instead | |
2901 | of just ``D''. | |
2902 | ||
2903 | ||
2904 | *-bpc*:: | |
2905 | oindex:[%-bpc%] | |
2906 | cindex:[queue,count of messages on] | |
2907 | This option counts the number of messages on the queue, and writes the total | |
2908 | to the standard output. It is restricted to admin users, unless | |
2909 | %queue_list_requires_admin% is set false. | |
2910 | ||
2911 | ||
2912 | *-bpr*:: | |
2913 | oindex:[%-bpr%] | |
2914 | This option operates like %-bp%, but the output is not sorted into | |
2915 | chronological order of message arrival. This can speed it up when there are | |
2916 | lots of messages on the queue, and is particularly useful if the output is | |
2917 | going to be post-processed in a way that doesn't need the sorting. | |
2918 | ||
2919 | *-bpra*:: | |
2920 | oindex:[%-bpra%] | |
2921 | This option is a combination of %-bpr% and %-bpa%. | |
2922 | ||
2923 | *-bpru*:: | |
2924 | oindex:[%-bpru%] | |
2925 | This option is a combination of %-bpr% and %-bpu%. | |
2926 | ||
2927 | ||
2928 | *-bpu*:: | |
2929 | oindex:[%-bpu%] | |
2930 | This option operates like %-bp% but shows only undelivered top-level addresses | |
2931 | for each message displayed. Addresses generated by aliasing or forwarding are | |
2932 | not shown, unless the message was deferred after processing by a router with | |
2933 | the %one_time% option set. | |
2934 | ||
2935 | ||
2936 | *-brt*:: | |
2937 | oindex:[%-brt%] | |
2938 | cindex:[testing,retry configuration] | |
2939 | cindex:[retry,configuration testing] | |
2940 | This option is for testing retry rules, and it must be followed by up to three | |
2941 | arguments. It causes Exim to look for a retry rule that matches the values | |
2942 | and to write it to the standard output. For example: | |
2943 | ||
2944 | exim -brt bach.comp.mus.example | |
2945 | Retry rule: *.comp.mus.example F,2h,15m; F,4d,30m; | |
2946 | + | |
2947 | See chapter <<CHAPretry>> for a description of Exim's retry rules. The first | |
2948 | argument, which is required, can be a complete address in the form | |
2949 | 'local_part@domain', or it can be just a domain name. The second argument is | |
2950 | an optional second domain name; if no retry rule is found for the first | |
2951 | argument, the second is tried. This ties in with Exim's behaviour when looking | |
2952 | for retry rules for remote hosts -- if no rule is found that matches the host, | |
2953 | one that matches the mail domain is sought. The final argument is the name of a | |
2954 | specific delivery error, as used in setting up retry rules, for example | |
2955 | ``quota_3d''. | |
2956 | ||
2957 | *-brw*:: | |
2958 | oindex:[%-brw%] | |
2959 | cindex:[testing,rewriting] | |
2960 | cindex:[rewriting,testing] | |
2961 | This option is for testing address rewriting rules, and it must be followed by | |
2962 | a single argument, consisting of either a local part without a domain, or a | |
2963 | complete address with a fully qualified domain. Exim outputs how this address | |
2964 | would be rewritten for each possible place it might appear. See chapter | |
2965 | <<CHAPrewrite>> for further details. | |
2966 | ||
2967 | *-bS*:: | |
2968 | oindex:[%-bS%] | |
2969 | cindex:[SMTP,batched incoming] | |
2970 | cindex:[batched SMTP input] | |
2971 | This option is used for batched SMTP input, which is an alternative interface | |
2972 | for non-interactive local message submission. A number of messages can be | |
2973 | submitted in a single run. However, despite its name, this is not really SMTP | |
2974 | input. Exim reads each message's envelope from SMTP commands on the standard | |
2975 | input, but generates no responses. If the caller is trusted, or | |
2976 | %untrusted_set_sender% is set, the senders in the SMTP MAIL commands are | |
2977 | believed; otherwise the sender is always the caller of Exim. | |
2978 | + | |
2979 | The message itself is read from the standard input, in SMTP format (leading | |
2980 | dots doubled), terminated by a line containing just a single dot. An error is | |
2981 | provoked if the terminating dot is missing. A further message may then follow. | |
2982 | + | |
2983 | As for other local message submissions, the contents of incoming batch SMTP | |
2984 | messages can be checked using the non-SMTP ACL (see chapter <<CHAPACL>>). | |
2985 | Unqualified addresses are automatically qualified using %qualify_domain% and | |
2986 | %qualify_recipient%, as appropriate, unless the %-bnq% option is used. | |
2987 | + | |
2988 | Some other SMTP commands are recognized in the input. HELO and EHLO act | |
2989 | as RSET; VRFY, EXPN, ETRN, and HELP act as NOOP; | |
2990 | QUIT quits, ignoring the rest of the standard input. | |
2991 | + | |
2992 | cindex:[return code,for %-bS%] | |
2993 | If any error is encountered, reports are written to the standard output and | |
2994 | error streams, and Exim gives up immediately. The return code is 0 if no error | |
2995 | was detected; it is 1 if one or more messages were accepted before the error | |
2996 | was detected; otherwise it is 2. | |
2997 | + | |
2998 | More details of input using batched SMTP are given in section | |
2999 | <<SECTincomingbatchedSMTP>>. | |
3000 | ||
3001 | *-bs*:: | |
3002 | oindex:[%-bs%] | |
3003 | cindex:[SMTP,local input] | |
3004 | cindex:[local SMTP input] | |
3005 | This option causes Exim to accept one or more messages by reading SMTP commands | |
3006 | on the standard input, and producing SMTP replies on the standard output. SMTP | |
3007 | policy controls, as defined in ACLs (see chapter <<CHAPACL>>) are applied. | |
3008 | Some user agents use this interface as a way of passing locally-generated | |
3009 | messages to the MTA. | |
3010 | + | |
3011 | In | |
3012 | cindex:[sender,source of] | |
3013 | this usage, if the caller of Exim is trusted, or %untrusted_set_sender% is | |
3014 | set, the senders of messages are taken from the SMTP MAIL commands. | |
3015 | Otherwise the content of these commands is ignored and the sender is set up as | |
3016 | the calling user. Unqualified addresses are automatically qualified using | |
3017 | %qualify_domain% and %qualify_recipient%, as appropriate, unless the %-bnq% | |
3018 | option is used. | |
3019 | + | |
3020 | cindex:[inetd] | |
3021 | The | |
3022 | %-bs% option is also used to run Exim from 'inetd', as an alternative to using | |
3023 | a listening daemon. Exim can distinguish the two cases by checking whether the | |
3024 | standard input is a TCP/IP socket. When Exim is called from 'inetd', the source | |
3025 | of the mail is assumed to be remote, and the comments above concerning senders | |
3026 | and qualification do not apply. In this situation, Exim behaves in exactly the | |
3027 | same way as it does when receiving a message via the listening daemon. | |
3028 | ||
3029 | *-bt*:: | |
3030 | oindex:[%-bt%] | |
3031 | cindex:[testing,addresses] | |
3032 | cindex:[address,testing] | |
3033 | This option runs Exim in address testing mode, in which each argument is taken | |
3034 | as an address to be tested for deliverability. The results are written to the | |
3035 | standard output. If a test fails, and the caller is not an admin user, no | |
3036 | details of the failure are output, because these might contain sensitive | |
3037 | information such as usernames and passwords for database lookups. | |
3038 | + | |
3039 | If no arguments are given, Exim runs in an interactive manner, prompting with a | |
3040 | right angle bracket for addresses to be tested. | |
3041 | + | |
3042 | Unlike the %-be% test option, you cannot arrange for Exim to use the | |
3043 | 'readline()' function, because it is running as 'root' and there are | |
3044 | security issues. | |
3045 | + | |
3046 | Each address is handled as if it were the recipient address of a message | |
3047 | (compare the %-bv% option). It is passed to the routers and the result is | |
3048 | written to the standard output. However, any router that has | |
3049 | %no_address_test% set is bypassed. This can make %-bt% easier to use for | |
3050 | genuine routing tests if your first router passes everything to a scanner | |
3051 | program. | |
3052 | + | |
3053 | The | |
3054 | cindex:[return code,for %-bt%] | |
3055 | return code is 2 if any address failed outright; it is 1 if no address | |
3056 | failed outright but at least one could not be resolved for some reason. Return | |
3057 | code 0 is given only when all addresses succeed. | |
3058 | + | |
3059 | *Warning*: %-bt% can only do relatively simple testing. If any of the | |
3060 | routers in the configuration makes any tests on the sender address of a | |
3061 | message, | |
3062 | cindex:[%-f% option,for address testing] | |
3063 | you can use the %-f% option to set an appropriate sender when running | |
3064 | %-bt% tests. Without it, the sender is assumed to be the calling user at the | |
3065 | default qualifying domain. However, if you have set up (for example) routers | |
3066 | whose behaviour depends on the contents of an incoming message, you cannot test | |
3067 | those conditions using %-bt%. The %-N% option provides a possible way of | |
3068 | doing such tests. | |
3069 | ||
3070 | *-bV*:: | |
3071 | oindex:[%-bV%] | |
3072 | cindex:[version number of Exim, verifying] | |
3073 | This option causes Exim to write the current version number, compilation | |
3074 | number, and compilation date of the 'exim' binary to the standard output. | |
3075 | It also lists the DBM library this is being used, the optional modules (such as | |
3076 | specific lookup types), the drivers that are included in the binary, and the | |
3077 | name of the run time configuration file that is in use. | |
3078 | + | |
3079 | As part of its operation, %-bV% causes Exim to read and syntax check its | |
3080 | configuration file. However, this is a static check only. It cannot check | |
3081 | values that are to be expanded. For example, although a misspelt ACL verb is | |
3082 | detected, an error in the verb's arguments is not. You cannot rely on %-bV% | |
3083 | alone to discover (for example) all the typos in the configuration; some | |
3084 | realistic testing is needed. The %-bh% and %-N% options provide more dynamic | |
3085 | testing facilities. | |
3086 | ||
3087 | *-bv*:: | |
3088 | oindex:[%-bv%] | |
3089 | cindex:[verifying address, using %-bv%] | |
3090 | cindex:[address,verification] | |
3091 | This option runs Exim in address verification mode, in which each argument is | |
3092 | taken as an address to be verified. During normal operation, verification | |
3093 | happens mostly as a consequence processing a %verify% condition in an ACL (see | |
3094 | chapter <<CHAPACL>>). If you want to test an entire ACL, see the %-bh% option. | |
3095 | + | |
3096 | If verification fails, and the caller is not an admin user, no details of the | |
3097 | failure are output, because these might contain sensitive information such as | |
3098 | usernames and passwords for database lookups. | |
3099 | + | |
3100 | If no arguments are given, Exim runs in an interactive manner, prompting with a | |
3101 | right angle bracket for addresses to be verified. | |
3102 | + | |
3103 | Unlike the %-be% test option, you cannot arrange for Exim to use the | |
3104 | 'readline()' function, because it is running as 'exim' and there are | |
3105 | security issues. | |
3106 | + | |
3107 | Verification differs from address testing (the %-bt% option) in that routers | |
3108 | that have %no_verify% set are skipped, and if the address is accepted by a | |
3109 | router that has %fail_verify% set, verification fails. The address is verified | |
3110 | as a recipient if %-bv% is used; to test verification for a sender address, | |
3111 | %-bvs% should be used. | |
3112 | + | |
3113 | If the %-v% option is not set, the output consists of a single line for each | |
3114 | address, stating whether it was verified or not, and giving a reason in the | |
3115 | latter case. Otherwise, more details are given of how the address has been | |
3116 | handled, and in the case of address redirection, all the generated addresses | |
3117 | are also considered. Without %-v%, generating more than one address by | |
3118 | redirection causes verification to end sucessfully. | |
3119 | + | |
3120 | The | |
3121 | cindex:[return code,for %-bv%] | |
3122 | return code is 2 if any address failed outright; it is 1 if no address | |
3123 | failed outright but at least one could not be resolved for some reason. Return | |
3124 | code 0 is given only when all addresses succeed. | |
3125 | + | |
3126 | If any of the routers in the configuration makes any tests on the sender | |
3127 | address of a message, you should use the %-f% option to set an appropriate | |
3128 | sender when running %-bv% tests. Without it, the sender is assumed to be the | |
3129 | calling user at the default qualifying domain. | |
3130 | ||
3131 | *-bvs*:: | |
3132 | oindex:[%-bvs%] | |
3133 | This option acts like %-bv%, but verifies the address as a sender rather | |
3134 | than a recipient address. This affects any rewriting and qualification that | |
3135 | might happen. | |
3136 | ||
3137 | *-C*~<'filelist'>:: | |
3138 | oindex:[%-C%] | |
3139 | cindex:[configuration file,alternate] | |
3140 | cindex:[CONFIGURE_FILE] | |
3141 | cindex:[alternate configuration file] | |
3142 | This option causes Exim to find the run time configuration file from the given | |
3143 | list instead of from the list specified by the CONFIGURE_FILE | |
3144 | compile-time setting. Usually, the list will consist of just a single file | |
3145 | name, but it can be a colon-separated list of names. In this case, the first | |
3146 | file that exists is used. Failure to open an existing file stops Exim from | |
3147 | proceeding any further along the list, and an error is generated. | |
3148 | + | |
3149 | When this option is used by a caller other than root or the Exim user, and the | |
3150 | list is different from the compiled-in list, Exim gives up its root privilege | |
3151 | immediately, and runs with the real and effective uid and gid set to those of | |
3152 | the caller. However, if ALT_CONFIG_ROOT_ONLY is defined in | |
3153 | _Local/Makefile_, root privilege is retained for %-C% only if the caller of | |
3154 | Exim is root. | |
3155 | + | |
3156 | That is, the Exim user is no longer privileged in this regard. This build-time | |
3157 | option is not set by default in the Exim source distribution tarbundle. | |
3158 | However, if you are using a ``packaged'' version of Exim (source or binary), the | |
3159 | packagers might have enabled it. | |
3160 | + | |
3161 | Setting ALT_CONFIG_ROOT_ONLY locks out the possibility of testing a | |
3162 | configuration using %-C% right through message reception and delivery, even if | |
3163 | the caller is root. The reception works, but by that time, Exim is running as | |
3164 | the Exim user, so when it re-execs to regain privilege for the delivery, the | |
3165 | use of %-C% causes privilege to be lost. However, root can test reception and | |
3166 | delivery using two separate commands (one to put a message on the queue, using | |
3167 | %-odq%, and another to do the delivery, using %-M%). | |
3168 | + | |
3169 | If ALT_CONFIG_PREFIX is defined _in Local/Makefile_, it specifies a | |
3170 | prefix string with which any file named in a %-C% command line option | |
3171 | must start. In addition, the file name must not contain the sequence `/../`. | |
3172 | However, if the value of the %-C% option is identical to the value of | |
3173 | CONFIGURE_FILE in _Local/Makefile_, Exim ignores %-C% and proceeds as | |
3174 | usual. There is no default setting for ALT_CONFIG_PREFIX; when it is | |
3175 | unset, any file name can be used with %-C%. | |
3176 | + | |
3177 | ALT_CONFIG_PREFIX can be used to confine alternative configuration files | |
3178 | to a directory to which only root has access. This prevents someone who has | |
3179 | broken into the Exim account from running a privileged Exim with an arbitrary | |
3180 | configuration file. | |
3181 | + | |
3182 | The %-C% facility is useful for ensuring that configuration files are | |
3183 | syntactically correct, but cannot be used for test deliveries, unless the | |
3184 | caller is privileged, or unless it is an exotic configuration that does not | |
3185 | require privilege. No check is made on the owner or group of the files | |
3186 | specified by this option. | |
3187 | ||
3188 | *-D*<'macro'>=<'value'>:: | |
3189 | oindex:[%-D%] | |
3190 | cindex:[macro,setting on command line] | |
3191 | This option can be used to override macro definitions in the configuration file | |
3192 | (see section <<SECTmacrodefs>>). However, like %-C%, if it is used by an | |
3193 | unprivileged caller, it causes Exim to give up its root privilege. | |
3194 | If DISABLE_D_OPTION is defined in _Local/Makefile_, the use of %-D% is | |
3195 | completely disabled, and its use causes an immediate error exit. | |
3196 | + | |
3197 | The entire option (including equals sign if present) must all be within one | |
3198 | command line item. %-D% can be used to set the value of a macro to the empty | |
3199 | string, in which case the equals sign is optional. These two commands are | |
3200 | synonymous: | |
3201 | ||
3202 | exim -DABC ... | |
3203 | exim -DABC= ... | |
3204 | + | |
3205 | To include spaces in a macro definition item, quotes must be used. If you use | |
3206 | quotes, spaces are permitted around the macro name and the equals sign. For | |
3207 | example: | |
3208 | ||
3209 | exim '-D ABC = something' ... | |
3210 | + | |
3211 | %-D% may be repeated up to 10 times on a command line. | |
3212 | ||
3213 | *-d*<'debug~options'>:: | |
3214 | oindex:[%-d%] | |
3215 | cindex:[debugging,list of selectors] | |
3216 | cindex:[debugging,%-d% option] | |
3217 | This option causes debugging information to be written to the standard | |
3218 | error stream. It is restricted to admin users because debugging output may show | |
3219 | database queries that contain password information. Also, the details of users' | |
3220 | filter files should be protected. When %-d% is used, %-v% is assumed. If | |
3221 | %-d% is given on its own, a lot of standard debugging data is output. This can | |
3222 | be reduced, or increased to include some more rarely needed information, by | |
3223 | following %-d% with a string made up of names preceded by plus or minus | |
3224 | characters. These add or remove sets of debugging data, respectively. For | |
3225 | example, %-d+filter% adds filter debugging, whereas %-d-all+filter% selects | |
3226 | only filter debugging. The available debugging categories are: | |
3227 | + | |
3228 | &&& | |
3229 | `acl ` ACL interpretation | |
3230 | `auth ` authenticators | |
3231 | `deliver ` general delivery logic | |
3232 | `dns ` DNS lookups (see also resolver) | |
3233 | `dnsbl ` DNS black list (aka RBL) code | |
3234 | `exec ` arguments for ^^execv()^^ calls | |
3235 | `expand ` detailed debugging for string expansions | |
3236 | `filter ` filter handling | |
3237 | `hints_lookup ` hints data lookups | |
3238 | `host_lookup ` all types of name-to-IP address handling | |
3239 | `ident ` ident lookup | |
3240 | `interface ` lists of local interfaces | |
3241 | `lists ` matching things in lists | |
3242 | `load ` system load checks | |
3243 | `local_scan ` can be used by ^^local_scan()^^ (see chapter <<CHAPlocalscan>>) | |
3244 | `lookup ` general lookup code and all lookups | |
3245 | `memory ` memory handling | |
3246 | `pid ` add pid to debug output lines | |
3247 | `process_info ` setting info for the process log | |
3248 | `queue_run ` queue runs | |
3249 | `receive ` general message reception logic | |
3250 | `resolver ` turn on the DNS resolver's debugging output | |
3251 | `retry ` retry handling | |
3252 | `rewrite ` address rewriting | |
3253 | `route ` address routing | |
3254 | `timestamp ` add timestamp to debug output lines | |
3255 | `tls ` TLS logic | |
3256 | `transport ` transports | |
3257 | `uid ` changes of uid/gid and looking up uid/gid | |
3258 | `verify ` address verification logic | |
3259 | `all ` all of the above, and also %-v% | |
3260 | &&& | |
3261 | + | |
3262 | The | |
3263 | cindex:[resolver, debugging output] | |
3264 | cindex:[DNS resolver, debugging output] | |
3265 | `resolver` option produces output only if the DNS resolver was compiled | |
3266 | with DEBUG enabled. This is not the case in some operating systems. Also, | |
3267 | unfortunately, debugging output from the DNS resolver is written to stdout | |
3268 | rather than stderr. | |
3269 | + | |
3270 | The default (%-d% with no argument) omits `expand`, `filter`, | |
3271 | `interface`, `load`, `memory`, `pid`, `resolver`, and `timestamp`. | |
3272 | However, the `pid` selector is forced when debugging is turned on for a | |
3273 | daemon, which then passes it on to any re-executed Exims. Exim also | |
3274 | automatically adds the pid to debug lines when several remote deliveries are | |
3275 | run in parallel. | |
3276 | + | |
3277 | The `timestamp` selector causes the current time to be inserted at the start | |
3278 | of all debug output lines. This can be useful when trying to track down delays | |
3279 | in processing. | |
3280 | + | |
3281 | If the %debug_print% option is set in any driver, it produces output whenever | |
3282 | any debugging is selected, or if %-v% is used. | |
3283 | ||
3284 | *-dd*<'debug~options'>:: | |
3285 | oindex:[%-dd%] | |
3286 | This option behaves exactly like %-d% except when used on a command that | |
3287 | starts a daemon process. In that case, debugging is turned off for the | |
3288 | subprocesses that the daemon creates. Thus, it is useful for monitoring the | |
3289 | behaviour of the daemon without creating as much output as full debugging does. | |
3290 | ||
3291 | *-dropcr*:: | |
3292 | oindex:[%-dropcr%] | |
3293 | This is an obsolete option that is now a no-op. It used to affect the way Exim | |
3294 | handled CR and LF characters in incoming messages. What happens now is | |
3295 | described in section <<SECTlineendings>>. | |
3296 | ||
3297 | *-E*:: | |
3298 | oindex:[%-E%] | |
3299 | cindex:[bounce message,generating] | |
3300 | This option specifies that an incoming message is a locally-generated delivery | |
3301 | failure report. It is used internally by Exim when handling delivery failures | |
3302 | and is not intended for external use. Its only effect is to stop Exim | |
3303 | generating certain messages to the postmaster, as otherwise message cascades | |
3304 | could occur in some situations. As part of the same option, a message id may | |
3305 | follow the characters %-E%. If it does, the log entry for the receipt of the | |
3306 | new message contains the id, following ``R='', as a cross-reference. | |
3307 | ||
3308 | *-e*'x':: | |
3309 | oindex:[%-e'x'%] | |
3310 | There are a number of Sendmail options starting with %-oe% which seem to be | |
3311 | called by various programs without the leading %o% in the option. For example, | |
3312 | the %vacation% program uses %-eq%. Exim treats all options of the form | |
3313 | %-e'x'% as synonymous with the corresponding %-oe'x'% options. | |
3314 | ||
3315 | *-F*~<'string'>:: | |
3316 | oindex:[%-F%] | |
3317 | cindex:[sender,name] | |
3318 | cindex:[name,of sender] | |
3319 | This option sets the sender's full name for use when a locally-generated | |
3320 | message is being accepted. In the absence of this option, the user's 'gecos' | |
3321 | entry from the password data is used. As users are generally permitted to alter | |
3322 | their 'gecos' entries, no security considerations are involved. White space | |
3323 | between %-F% and the <'string'> is optional. | |
3324 | ||
3325 | *-f*~<'address'>:: | |
3326 | oindex:[%-f%] | |
3327 | cindex:[sender,address] | |
3328 | cindex:[address,sender] | |
3329 | cindex:[trusted user] | |
3330 | cindex:[envelope sender] | |
3331 | cindex:[user,trusted] | |
3332 | This option sets the address of the envelope sender of a locally-generated | |
3333 | message (also known as the return path). The option can normally be used only | |
3334 | by a trusted user, but %untrusted_set_sender% can be set to allow untrusted | |
3335 | users to use it. | |
3336 | + | |
3337 | Processes running as root or the Exim user are always trusted. Other | |
3338 | trusted users are defined by the %trusted_users% or %trusted_groups% options. | |
3339 | In the absence of %-f%, or if the caller is not trusted, the sender of a local | |
3340 | message is set to the caller's login name at the default qualify domain. | |
3341 | + | |
3342 | There is one exception to the restriction on the use of %-f%: an empty sender | |
3343 | can be specified by any user, trusted or not, to create a message that can | |
3344 | never provoke a bounce. An empty sender can be specified either as an empty | |
3345 | string, or as a pair of angle brackets with nothing between them, as in these | |
3346 | examples of shell commands: | |
3347 | ||
3348 | exim -f '<>' user@domain | |
3349 | exim -f "" user@domain | |
3350 | + | |
3351 | In addition, the use of %-f% is not restricted when testing a filter file with | |
3352 | %-bf% or when testing or verifying addresses using the %-bt% or %-bv% | |
3353 | options. | |
3354 | + | |
3355 | Allowing untrusted users to change the sender address does not of itself make | |
3356 | it possible to send anonymous mail. Exim still checks that the 'From:' header | |
3357 | refers to the local user, and if it does not, it adds a 'Sender:' header, | |
3358 | though this can be overridden by setting %no_local_from_check%. | |
3359 | + | |
3360 | White | |
3361 | cindex:[``From'' line] | |
3362 | space between %-f% and the <'address'> is optional (that is, they can be given | |
3363 | as two arguments or one combined argument). The sender of a locally-generated | |
3364 | message can also be set (when permitted) by an initial ``From '' line in the | |
3365 | message -- see the description of %-bm% above -- but if %-f% is also present, | |
3366 | it overrides ``From''. | |
3367 | ||
3368 | *-G*:: | |
3369 | oindex:[%-G%] | |
3370 | cindex:[Sendmail compatibility,%-G% option ignored] | |
3371 | This is a Sendmail option which is ignored by Exim. | |
3372 | ||
3373 | *-h*~<'number'>:: | |
3374 | oindex:[%-h%] | |
3375 | cindex:[Sendmail compatibility,%-h% option ignored] | |
3376 | This option is accepted for compatibility with Sendmail, but has no effect. (In | |
3377 | Sendmail it overrides the ``hop count'' obtained by counting 'Received:' | |
3378 | headers.) | |
3379 | ||
3380 | *-i*:: | |
3381 | oindex:[%-i%] | |
3382 | cindex:[Solaris,'mail' command] | |
3383 | cindex:[dot in incoming, non-SMTP message] | |
3384 | This option, which has the same effect as %-oi%, specifies that a dot on a line | |
3385 | by itself should not terminate an incoming, non-SMTP message. I can find no | |
3386 | documentation for this option in Solaris 2.4 Sendmail, but the 'mailx' command | |
3387 | in Solaris 2.4 uses it. See also %-ti%. | |
3388 | ||
3389 | *-M*~<'message~id'>~<'message~id'>~...:: | |
3390 | oindex:[%-M%] | |
3391 | cindex:[forcing delivery] | |
3392 | cindex:[delivery,forcing attempt] | |
3393 | cindex:[frozen messages,forcing delivery] | |
3394 | This option requests Exim to run a delivery attempt on each message in turn. If | |
3395 | any of the messages are frozen, they are automatically thawed before the | |
3396 | delivery attempt. The settings of %queue_domains%, %queue_smtp_domains%, and | |
3397 | %hold_domains% are ignored. | |
3398 | + | |
3399 | Retry | |
3400 | cindex:[hints database,overriding retry hints] | |
3401 | hints for any of the addresses are overridden -- Exim tries to deliver even if | |
3402 | the normal retry time has not yet been reached. This option requires the caller | |
3403 | to be an admin user. However, there is an option called %prod_requires_admin% | |
3404 | which can be set false to relax this restriction (and also the same requirement | |
3405 | for the %-q%, %-R%, and %-S% options). | |
3406 | ||
3407 | *-Mar*~<'message~id'>~<'address'>~<'address'>~...:: | |
3408 | oindex:[%-Mar%] | |
3409 | cindex:[message,adding recipients] | |
3410 | cindex:[recipient,adding] | |
3411 | This option requests Exim to add the addresses to the list of recipients of the | |
3412 | message (``ar'' for ``add recipients''). The first argument must be a message id, | |
3413 | and the remaining ones must be email addresses. However, if the message is | |
3414 | active (in the middle of a delivery attempt), it is not altered. This option | |
3415 | can be used only by an admin user. | |
3416 | ||
3417 | *-MC*~<'transport'>~<'hostname'>~<'sequence~number'>~<'message~id'>:: | |
3418 | oindex:[%-MC%] | |
3419 | cindex:[SMTP,passed connection] | |
3420 | cindex:[SMTP,multiple deliveries] | |
3421 | cindex:[multiple SMTP deliveries] | |
3422 | This option is not intended for use by external callers. It is used internally | |
3423 | by Exim to invoke another instance of itself to deliver a waiting message using | |
3424 | an existing SMTP connection, which is passed as the standard input. Details are | |
3425 | given in chapter <<CHAPSMTP>>. This must be the final option, and the caller must | |
3426 | be root or the Exim user in order to use it. | |
3427 | ||
3428 | *-MCA*:: | |
3429 | oindex:[%-MCA%] | |
3430 | This option is not intended for use by external callers. It is used internally | |
3431 | by Exim in conjunction with the %-MC% option. It signifies that the connection | |
3432 | to the remote host has been authenticated. | |
3433 | ||
3434 | *-MCP*:: | |
3435 | oindex:[%-MCP%] | |
3436 | This option is not intended for use by external callers. It is used internally | |
3437 | by Exim in conjunction with the %-MC% option. It signifies that the server to | |
3438 | which Exim is connected supports pipelining. | |
3439 | ||
3440 | *-MCQ*~<'process~id'>~<'pipe~fd'>:: | |
3441 | oindex:[%-MCQ%] | |
3442 | This option is not intended for use by external callers. It is used internally | |
3443 | by Exim in conjunction with the %-MC% option when the original delivery was | |
3444 | started by a queue runner. It passes on the process id of the queue runner, | |
3445 | together with the file descriptor number of an open pipe. Closure of the pipe | |
3446 | signals the final completion of the sequence of processes that are passing | |
3447 | messages through the same SMTP connection. | |
3448 | ||
3449 | *-MCS*:: | |
3450 | oindex:[%-MCS%] | |
3451 | This option is not intended for use by external callers. It is used internally | |
3452 | by Exim in conjunction with the %-MC% option, and passes on the fact that the | |
3453 | SMTP SIZE option should be used on messages delivered down the existing | |
3454 | connection. | |
3455 | ||
3456 | *-MCT*:: | |
3457 | oindex:[%-MCT%] | |
3458 | This option is not intended for use by external callers. It is used internally | |
3459 | by Exim in conjunction with the %-MC% option, and passes on the fact that the | |
3460 | host to which Exim is connected supports TLS encryption. | |
3461 | ||
3462 | *-Mc*~<'message~id'>~<'message~id'>~...:: | |
3463 | oindex:[%-Mc%] | |
3464 | cindex:[hints database,not overridden by %-Mc%] | |
3465 | cindex:[delivery,manually started -- not forced] | |
3466 | This option requests Exim to run a delivery attempt on each message in turn, | |
3467 | but unlike the %-M% option, it does check for retry hints, and respects any | |
3468 | that are found. This option is not very useful to external callers. It is | |
3469 | provided mainly for internal use by Exim when it needs to re-invoke itself in | |
3470 | order to regain root privilege for a delivery (see chapter <<CHAPsecurity>>). | |
3471 | However, %-Mc% can be useful when testing, in order to run a delivery that | |
3472 | respects retry times and other options such as %hold_domains% that are | |
3473 | overridden when %-M% is used. Such a delivery does not count as a queue run. | |
3474 | If you want to run a specific delivery as if in a queue run, you should use | |
3475 | %-q% with a message id argument. A distinction between queue run deliveries | |
3476 | and other deliveries is made in one or two places. | |
3477 | ||
3478 | *-Mes*~<'message~id'>~<'address'>:: | |
3479 | oindex:[%-Mes%] | |
3480 | cindex:[message,changing sender] | |
3481 | cindex:[sender,changing] | |
3482 | This option requests Exim to change the sender address in the message to the | |
3483 | given address, which must be a fully qualified address or ``<>'' (``es'' for ``edit | |
3484 | sender''). There must be exactly two arguments. The first argument must be a | |
3485 | message id, and the second one an email address. However, if the message is | |
3486 | active (in the middle of a delivery attempt), its status is not altered. This | |
3487 | option can be used only by an admin user. | |
3488 | ||
3489 | *-Mf*~<'message~id'>~<'message~id'>~...:: | |
3490 | oindex:[%-Mf%] | |
3491 | cindex:[freezing messages] | |
3492 | cindex:[message,manually freezing] | |
3493 | This option requests Exim to mark each listed message as ``frozen''. This | |
3494 | prevents any delivery attempts taking place until the message is ``thawed'', | |
3495 | either manually or as a result of the %auto_thaw% configuration option. | |
3496 | However, if any of the messages are active (in the middle of a delivery | |
3497 | attempt), their status is not altered. This option can be used only by an admin | |
3498 | user. | |
3499 | ||
3500 | *-Mg*~<'message~id'>~<'message~id'>~...:: | |
3501 | oindex:[%-Mg%] | |
3502 | cindex:[giving up on messages] | |
3503 | cindex:[message,abandoning delivery attempts] | |
3504 | cindex:[delivery,abandoning further attempts] | |
3505 | This option requests Exim to give up trying to deliver the listed messages, | |
3506 | including any that are frozen. However, if any of the messages are active, | |
3507 | their status is not altered. For non-bounce messages, a delivery error message | |
3508 | is sent to the sender, containing the text ``cancelled by administrator''. | |
3509 | Bounce messages are just discarded. This option can be used only by an admin | |
3510 | user. | |
3511 | ||
3512 | *-Mmad*~<'message~id'>~<'message~id'>~...:: | |
3513 | oindex:[%-Mmad%] | |
3514 | cindex:[delivery,cancelling all] | |
3515 | This option requests Exim to mark all the recipient addresses in the messages | |
3516 | as already delivered (``mad'' for ``mark all delivered''). However, if any | |
3517 | message is active (in the middle of a delivery attempt), its status is not | |
3518 | altered. This option can be used only by an admin user. | |
3519 | ||
3520 | *-Mmd*~<'message~id'>~<'address'>~<'address'>~...:: | |
3521 | oindex:[%-Mmd%] | |
3522 | cindex:[delivery,cancelling by address] | |
3523 | cindex:[recipient,removing] | |
3524 | cindex:[removing recipients] | |
3525 | This option requests Exim to mark the given addresses as already delivered | |
3526 | (``md'' for ``mark delivered''). The first argument must be a message id, and | |
3527 | the remaining ones must be email addresses. These are matched to recipient | |
3528 | addresses in the message in a case-sensitive manner. If the message is active | |
3529 | (in the middle of a delivery attempt), its status is not altered. This option | |
3530 | can be used only by an admin user. | |
3531 | ||
3532 | *-Mrm*~<'message~id'>~<'message~id'>~...:: | |
3533 | oindex:[%-Mrm%] | |
3534 | cindex:[removing messages] | |
3535 | cindex:[abandoning mail] | |
3536 | cindex:[message,manually discarding] | |
3537 | This option requests Exim to remove the given messages from the queue. No | |
3538 | bounce messages are sent; each message is simply forgotten. However, if any of | |
3539 | the messages are active, their status is not altered. This option can be used | |
3540 | only by an admin user or by the user who originally caused the message to be | |
3541 | placed on the queue. | |
3542 | ||
3543 | *-Mt*~<'message~id'>~<'message~id'>~...:: | |
3544 | oindex:[%-Mt%] | |
3545 | cindex:[thawing messages] | |
3546 | cindex:[unfreezing messages] | |
3547 | cindex:[frozen messages,thawing] | |
3548 | cindex:[message,thawing frozen] | |
3549 | This option requests Exim to ``thaw'' any of the listed messages that are | |
3550 | ``frozen'', so that delivery attempts can resume. However, if any of the messages | |
3551 | are active, their status is not altered. This option can be used only by an | |
3552 | admin user. | |
3553 | ||
3554 | *-Mvb*~<'message~id'>:: | |
3555 | oindex:[%-Mvb%] | |
3556 | cindex:[listing,message body] | |
3557 | cindex:[message,listing body of] | |
3558 | This option causes the contents of the message body (-D) spool file to be | |
3559 | written to the standard output. This option can be used only by an admin user. | |
3560 | ||
3561 | *-Mvh*~<'message~id'>:: | |
3562 | oindex:[%-Mvh%] | |
3563 | cindex:[listing,message headers] | |
3564 | cindex:[header lines,listing] | |
3565 | cindex:[message,listing header lines] | |
3566 | This option causes the contents of the message headers (-H) spool file to be | |
3567 | written to the standard output. This option can be used only by an admin user. | |
3568 | ||
3569 | *-Mvl*~<'message~id'>:: | |
3570 | oindex:[%-Mvl%] | |
3571 | cindex:[listing,message log] | |
3572 | cindex:[message,listing message log] | |
3573 | This option causes the contents of the message log spool file to be written to | |
3574 | the standard output. This option can be used only by an admin user. | |
3575 | ||
3576 | *-m*:: | |
3577 | oindex:[%-m%] | |
3578 | This is apparently a synonym for %-om% that is accepted by Sendmail, so Exim | |
3579 | treats it that way too. | |
3580 | ||
3581 | *-N*:: | |
3582 | oindex:[%-N%] | |
3583 | cindex:[debugging,%-N% option] | |
3584 | cindex:[debugging,suppressing delivery] | |
3585 | This is a debugging option that inhibits delivery of a message at the transport | |
3586 | level. It implies %-v%. Exim goes through many of the motions of delivery -- | |
3587 | it just doesn't actually transport the message, but instead behaves as if it | |
3588 | had successfully done so. However, it does not make any updates to the retry | |
3589 | database, and the log entries for deliveries are flagged with ``\*>'' rather | |
3590 | than ``=>''. | |
3591 | + | |
3592 | Because %-N% discards any message to which it applies, only root or the Exim | |
3593 | user are allowed to use it with %-bd%, %-q%, %-R% or %-M%. In other words, | |
3594 | an ordinary user can use it only when supplying an incoming message to which it | |
3595 | will apply. Although transportation never fails when %-N% is set, an address | |
3596 | may be deferred because of a configuration problem on a transport, or a routing | |
3597 | problem. Once %-N% has been used for a delivery attempt, it sticks to the | |
3598 | message, and applies to any subsequent delivery attempts that may happen for | |
3599 | that message. | |
3600 | ||
3601 | *-n*:: | |
3602 | oindex:[%-n%] | |
3603 | cindex:[Sendmail compatibility,%-n% option ignored] | |
3604 | This option is interpreted by Sendmail to mean ``no aliasing''. It is ignored by | |
3605 | Exim. | |
3606 | ||
3607 | *-O*~<'data'>:: | |
3608 | oindex:[%-O%] | |
3609 | This option is interpreted by Sendmail to mean `set option`. It is ignored by | |
3610 | Exim. | |
3611 | ||
3612 | *-oA*~<'file~name'>:: | |
3613 | oindex:[%-oA%] | |
3614 | cindex:[Sendmail compatibility,%-oA% option] | |
3615 | This option is used by Sendmail in conjunction with %-bi% to specify an | |
3616 | alternative alias file name. Exim handles %-bi% differently; see the | |
3617 | description above. | |
3618 | ||
3619 | *-oB*~<'n'>:: | |
3620 | oindex:[%-oB%] | |
3621 | cindex:[SMTP,passed connection] | |
3622 | cindex:[SMTP,multiple deliveries] | |
3623 | cindex:[multiple SMTP deliveries] | |
3624 | This is a debugging option which limits the maximum number of messages that can | |
3625 | be delivered down one SMTP connection, overriding the value set in any ^smtp^ | |
3626 | transport. If <'n'> is omitted, the limit is set to 1. | |
3627 | ||
3628 | *-odb*:: | |
3629 | oindex:[%-odb%] | |
3630 | cindex:[background delivery] | |
3631 | cindex:[delivery,in the background] | |
3632 | This option applies to all modes in which Exim accepts incoming messages, | |
3633 | including the listening daemon. It requests ``background'' delivery of such | |
3634 | messages, which means that the accepting process automatically starts a | |
3635 | delivery process for each message received, but does not wait for the delivery | |
3636 | processes to finish. | |
3637 | + | |
3638 | When all the messages have been received, the reception process exits, | |
3639 | leaving the delivery processes to finish in their own time. The standard output | |
3640 | and error streams are closed at the start of each delivery process. | |
3641 | This is the default action if none of the %-od% options are present. | |
3642 | + | |
3643 | If one of the queueing options in the configuration file | |
3644 | (%queue_only% or %queue_only_file%, for example) is in effect, %-odb% | |
3645 | overrides it if %queue_only_override% is set true, which is the default | |
3646 | setting. If %queue_only_override% is set false, %-odb% has no effect. | |
3647 | ||
3648 | *-odf*:: | |
3649 | oindex:[%-odf%] | |
3650 | cindex:[foreground delivery] | |
3651 | cindex:[delivery,in the foreground] | |
3652 | This option requests ``foreground'' (synchronous) delivery when Exim has accepted | |
3653 | a locally-generated message. (For the daemon it is exactly the same as | |
3654 | %-odb%.) A delivery process is automatically started to deliver the | |
3655 | message, and Exim waits for it to complete before proceeding. | |
3656 | + | |
3657 | The original Exim reception process does not finish until the delivery | |
3658 | process for the final message has ended. The standard error stream is left open | |
3659 | during deliveries. | |
3660 | + | |
3661 | However, like %-odb%, this option has no effect if %queue_only_override% is | |
3662 | false and one of the queueing options in the configuration file is in effect. | |
3663 | + | |
3664 | If there is a temporary delivery error during foreground delivery, the | |
3665 | message is left on the queue for later delivery, and the original reception | |
3666 | process exists. See chapter <<CHAPnonqueueing>> for a way of setting up a | |
3667 | restricted configuration that never queues messages. | |
3668 | ||
3669 | ||
3670 | *-odi*:: | |
3671 | oindex:[%-odi%] | |
3672 | This option is synonymous with %-odf%. It is provided for compatibility with | |
3673 | Sendmail. | |
3674 | ||
3675 | *-odq*:: | |
3676 | oindex:[%-odq%] | |
3677 | cindex:[non-immediate delivery] | |
3678 | cindex:[delivery,suppressing immediate] | |
3679 | cindex:[queueing incoming messages] | |
3680 | This option applies to all modes in which Exim accepts incoming messages, | |
3681 | including the listening daemon. It specifies that the accepting process should | |
3682 | not automatically start a delivery process for each message received. Messages | |
3683 | are placed on the queue, and remain there until a subsequent queue runner | |
3684 | process encounters them. There are several configuration options (such as | |
3685 | %queue_only%) that can be used to queue incoming messages under certain | |
3686 | conditions. This option overrides all of them and also %-odqs%. It always | |
3687 | forces queueing. | |
3688 | ||
3689 | *-odqs*:: | |
3690 | oindex:[%-odqs%] | |
3691 | cindex:[SMTP,delaying delivery] | |
3692 | This option is a hybrid between %-odb%/%-odi% and %-odq%. | |
3693 | However, like %-odb% and %-odi%, this option has no effect if | |
3694 | %queue_only_override% is false and one of the queueing options in the | |
3695 | configuration file is in effect. | |
3696 | + | |
3697 | When %-odqs% does operate, a delivery process is started for each incoming | |
3698 | message, in the background by default, but in the foreground if %-odi% is also | |
3699 | present. The recipient addresses are routed, and local deliveries are done in | |
3700 | the normal way. However, if any SMTP deliveries are required, they are not done | |
3701 | at this time, so the message remains on the queue until a subsequent queue | |
3702 | runner process encounters it. Because routing was done, Exim knows which | |
3703 | messages are waiting for which hosts, and so a number of messages for the same | |
3704 | host can be sent in a single SMTP connection. The %queue_smtp_domains% | |
3705 | configuration option has the same effect for specific domains. See also the | |
3706 | %-qq% option. | |
3707 | ||
3708 | *-oee*:: | |
3709 | oindex:[%-oee%] | |
3710 | cindex:[error,reporting] | |
3711 | If an error is detected while a non-SMTP message is being received (for | |
3712 | example, a malformed address), the error is reported to the sender in a mail | |
3713 | message. | |
3714 | + | |
3715 | Provided | |
3716 | cindex:[return code,for %-oee%] | |
3717 | this error message is successfully sent, the Exim receiving process | |
3718 | exits with a return code of zero. If not, the return code is 2 if the problem | |
3719 | is that the original message has no recipients, or 1 any other error. This is | |
3720 | the default %-oe'x'% option if Exim is called as 'rmail'. | |
3721 | ||
3722 | *-oem*:: | |
3723 | oindex:[%-oem%] | |
3724 | cindex:[error,reporting] | |
3725 | cindex:[return code,for %-oem%] | |
3726 | This is the same as %-oee%, except that Exim always exits with a non-zero | |
3727 | return code, whether or not the error message was successfully sent. | |
3728 | This is the default %-oe'x'% option, unless Exim is called as 'rmail'. | |
3729 | ||
3730 | *-oep*:: | |
3731 | oindex:[%-oep%] | |
3732 | cindex:[error,reporting] | |
3733 | If an error is detected while a non-SMTP message is being received, the | |
3734 | error is reported by writing a message to the standard error file (stderr). | |
3735 | cindex:[return code,for %-oep%] | |
3736 | The return code is 1 for all errors. | |
3737 | ||
3738 | *-oeq*:: | |
3739 | oindex:[%-oeq%] | |
3740 | cindex:[error,reporting] | |
3741 | This option is supported for compatibility with Sendmail, but has the same | |
3742 | effect as %-oep%. | |
3743 | ||
3744 | *-oew*:: | |
3745 | oindex:[%-oew%] | |
3746 | cindex:[error,reporting] | |
3747 | This option is supported for compatibility with Sendmail, but has the same | |
3748 | effect as %-oem%. | |
3749 | ||
3750 | *-oi*:: | |
3751 | oindex:[%-oi%] | |
3752 | cindex:[dot in incoming, non-SMTP message] | |
3753 | This option, which has the same effect as %-i%, specifies that a dot on a line | |
3754 | by itself should not terminate an incoming, non-SMTP message. | |
3755 | Otherwise, a single dot does terminate, though Exim does no special processing | |
3756 | for other lines that start with a dot. | |
3757 | This option is set by default if Exim is called as 'rmail'. See also %-ti%. | |
3758 | ||
3759 | *-oitrue*:: | |
3760 | oindex:[%-oitrue%] | |
3761 | This option is treated as synonymous with %-oi%. | |
3762 | ||
3763 | *-oMa*~<'host~address'>:: | |
3764 | oindex:[%-oMa%] | |
3765 | cindex:[sender host address, specifying for local message] | |
3766 | A number of options starting with %-oM% can be used to set values associated | |
3767 | with remote hosts on locally-submitted messages (that is, messages not received | |
3768 | over TCP/IP). These options can be used by any caller in conjunction with the | |
3769 | %-bh%, %-be%, %-bf%, %-bF%, %-bt%, or %-bv% testing options. In other | |
3770 | circumstances, they are ignored unless the caller is trusted. | |
3771 | + | |
3772 | The %-oMa% option sets the sender host address. This may include a port number | |
3773 | at the end, after a full stop (period). For example: | |
3774 | ||
3775 | exim -bs -oMa 10.9.8.7.1234 | |
3776 | + | |
3777 | An alternative syntax is to enclose the IP address in square brackets, | |
3778 | followed by a colon and the port number: | |
3779 | ||
3780 | exim -bs -oMa [10.9.8.7]:1234 | |
3781 | + | |
3782 | The IP address is placed in the $sender_host_address$ variable, and the | |
3783 | port, if present, in $sender_host_port$. | |
3784 | ||
3785 | *-oMaa*~<'name'>:: | |
3786 | oindex:[%-oMaa%] | |
3787 | cindex:[authentication name, specifying for local message] | |
3788 | See %-oMa% above for general remarks about the %-oM% options. The %-oMaa% | |
3789 | option sets the value of $sender_host_authenticated$ (the authenticator | |
3790 | name). See chapter <<CHAPSMTPAUTH>> for a discussion of SMTP authentication. | |
3791 | ||
3792 | *-oMai*~<'string'>:: | |
3793 | oindex:[%-oMai%] | |
3794 | cindex:[authentication id, specifying for local message] | |
3795 | See %-oMa% above for general remarks about the %-oM% options. The %-oMai% | |
3796 | option sets the value of $authenticated_id$ (the id that was authenticated). | |
3797 | This overrides the default value (the caller's login id) for messages from | |
3798 | local sources. See chapter <<CHAPSMTPAUTH>> for a discussion of authenticated | |
3799 | ids. | |
3800 | ||
3801 | *-oMas*~<'address'>:: | |
3802 | oindex:[%-oMas%] | |
3803 | cindex:[authentication sender, specifying for local message] | |
3804 | See %-oMa% above for general remarks about the %-oM% options. The %-oMas% | |
3805 | option sets the authenticated sender value in $authenticated_sender$. It | |
3806 | overrides the sender address that is created from the caller's login id for | |
3807 | messages from local sources. See chapter <<CHAPSMTPAUTH>> for a discussion of | |
3808 | authenticated senders. | |
3809 | ||
3810 | *-oMi*~<'interface~address'>:: | |
3811 | oindex:[%-oMi%] | |
3812 | cindex:[interface address, specifying for local message] | |
3813 | See %-oMa% above for general remarks about the %-oM% options. The %-oMi% option | |
3814 | sets the IP interface address value. A port number may be included, using the | |
3815 | same syntax as for %-oMa%. The interface address is placed in | |
3816 | $interface_address$ and the port number, if present, in $interface_port$. | |
3817 | ||
3818 | *-oMr*~<'protocol~name'>:: | |
3819 | oindex:[%-oMr%] | |
3820 | cindex:[protocol,incoming -- specifying for local message] | |
3821 | See %-oMa% above for general remarks about the %-oM% options. The %-oMr% option | |
3822 | sets the received protocol value that is stored in $received_protocol$. | |
3823 | However, this applies only when %-bs% is not used. For interactive SMTP input | |
3824 | (%-bs%), the protocol is always ``local-'' followed by one of the standard SMTP | |
3825 | protocol names (see the description of $received_protocol$ in section | |
3826 | <<SECTexpvar>>). For %-bS% (batch SMTP) however, the protocol can be set by | |
3827 | <<%-oMr%. | |
3828 | ||
3829 | *-oMs*~<'host~name'>:: | |
3830 | oindex:[%-oMs%] | |
3831 | cindex:[sender host name, specifying for local message] | |
3832 | See %-oMa% above for general remarks about the %-oM% options. The %-oMs% option | |
3833 | sets the sender host name in $sender_host_name$. When this option is present, | |
3834 | Exim does not attempt to look up a host name from an IP address; it uses the | |
3835 | name it is given. | |
3836 | ||
3837 | *-oMt*~<'ident~string'>:: | |
3838 | oindex:[%-oMt%] | |
3839 | cindex:[sender ident string, specifying for local message] | |
3840 | See %-oMa% above for general remarks about the %-oM% options. The %-oMt% option | |
3841 | sets the sender ident value in $sender_ident$. The default setting for local | |
3842 | callers is the login id of the calling process. | |
3843 | ||
3844 | *-om*:: | |
3845 | oindex:[%-om%] | |
3846 | cindex:[Sendmail compatibility,%-om% option ignored] | |
3847 | In Sendmail, this option means ``me too'', indicating that the sender of a | |
3848 | message should receive a copy of the message if the sender appears in an alias | |
3849 | expansion. Exim always does this, so the option does nothing. | |
3850 | ||
3851 | *-oo*:: | |
3852 | oindex:[%-oo%] | |
3853 | cindex:[Sendmail compatibility,%-oo% option ignored] | |
3854 | This option is ignored. In Sendmail it specifies ``old style headers'', whatever | |
3855 | that means. | |
3856 | ||
3857 | *-oP*~<'path'>:: | |
3858 | oindex:[%-oP%] | |
3859 | cindex:[pid (process id),of daemon] | |
3860 | cindex:[daemon,process id (pid)] | |
3861 | This option is useful only in conjunction with %-bd% or %-q% with a time | |
3862 | value. The option specifies the file to which the process id of the daemon is | |
3863 | written. When %-oX% is used with %-bd%, or when %-q% with a time is used | |
3864 | without %-bd%, this is the only way of causing Exim to write a pid file, | |
3865 | because in those cases, the normal pid file is not used. | |
3866 | ||
3867 | *-or*~<'time'>:: | |
3868 | oindex:[%-or%] | |
3869 | cindex:[timeout,for non-SMTP input] | |
3870 | This option sets a timeout value for incoming non-SMTP messages. If it is not | |
3871 | set, Exim will wait forever for the standard input. The value can also be set | |
3872 | by the %receive_timeout% option. The format used for specifying times is | |
3873 | described in section <<SECTtimeformat>>. | |
3874 | ||
3875 | *-os*~<'time'>:: | |
3876 | oindex:[%-os%] | |