X-Git-Url: https://git.hcoop.net/hcoop/debian/exim4.git/blobdiff_plain/ed7df6aed3350267779da0674e270711e5914e79..d1d56ac364669b9a323ad9494f96398ba502dac0:/doc/spec.txt diff --git a/doc/spec.txt b/doc/spec.txt index e400286..0592640 100644 --- a/doc/spec.txt +++ b/doc/spec.txt @@ -2,12 +2,10 @@ Specification of the Exim Mail Transfer Agent Exim Maintainers -Copyright (c) 2014 University of Cambridge +Copyright (c) 2017 University of Cambridge + +Revision 4.89 07 Mar 2017 EM -+-----------------------------------------------------------------------------+ -+-------------------------------------+--------------------------------+------+ -|Revision 4.84 |11 Aug 2014 |EM | -+-------------------------------------+--------------------------------+------+ ------------------------------------------------------------------------------- TABLE OF CONTENTS @@ -87,20 +85,21 @@ TABLE OF CONTENTS 6.6. Redefining macros 6.7. Overriding macro values 6.8. Example of macro usage - 6.9. Conditional skips in the configuration file - 6.10. Common option syntax - 6.11. Boolean options - 6.12. Integer values - 6.13. Octal integer values - 6.14. Fixed point numbers - 6.15. Time intervals - 6.16. String values - 6.17. Expanded strings - 6.18. User and group names - 6.19. List construction - 6.20. Changing list separators - 6.21. Empty items in lists - 6.22. Format of driver configurations + 6.9. Builtin macros + 6.10. Conditional skips in the configuration file + 6.11. Common option syntax + 6.12. Boolean options + 6.13. Integer values + 6.14. Octal integer values + 6.15. Fixed point numbers + 6.16. Time intervals + 6.17. String values + 6.18. Expanded strings + 6.19. User and group names + 6.20. List construction + 6.21. Changing list separators + 6.22. Empty items in lists + 6.23. Format of driver configurations 7. The default configuration file @@ -125,21 +124,23 @@ TABLE OF CONTENTS 9.8. Lookup caching 9.9. Quoting lookup data 9.10. More about dnsdb - 9.11. Pseudo dnsdb record types - 9.12. Multiple dnsdb lookups - 9.13. More about LDAP - 9.14. Format of LDAP queries - 9.15. LDAP quoting - 9.16. LDAP connections - 9.17. LDAP authentication and control information - 9.18. Format of data returned by LDAP - 9.19. More about NIS+ - 9.20. SQL lookups - 9.21. More about MySQL, PostgreSQL, Oracle, and InterBase - 9.22. Specifying the server in the query - 9.23. Special MySQL features - 9.24. Special PostgreSQL features - 9.25. More about SQLite + 9.11. Dnsdb lookup modifiers + 9.12. Pseudo dnsdb record types + 9.13. Multiple dnsdb lookups + 9.14. More about LDAP + 9.15. Format of LDAP queries + 9.16. LDAP quoting + 9.17. LDAP connections + 9.18. LDAP authentication and control information + 9.19. Format of data returned by LDAP + 9.20. More about NIS+ + 9.21. SQL lookups + 9.22. More about MySQL, PostgreSQL, Oracle, InterBase, and Redis + 9.23. Specifying the server in the query + 9.24. Special MySQL features + 9.25. Special PostgreSQL features + 9.26. More about SQLite + 9.27. More about Redis 10. Domain, host, address, and local part lists @@ -369,246 +370,258 @@ TABLE OF CONTENTS 40.1. Using spa as a server 40.2. Using spa as a client -41. Encrypted SMTP connections using TLS/SSL - - 41.1. Support for the legacy "ssmtp" (aka "smtps") protocol - 41.2. OpenSSL vs GnuTLS - 41.3. GnuTLS parameter computation - 41.4. Requiring specific ciphers in OpenSSL - 41.5. Requiring specific ciphers or other parameters in GnuTLS - 41.6. Configuring an Exim server to use TLS - 41.7. Requesting and verifying client certificates - 41.8. Revoked certificates - 41.9. Configuring an Exim client to use TLS - 41.10. Use of TLS Server Name Indication - 41.11. Multiple messages on the same encrypted TCP/IP connection - 41.12. Certificates and all that - 41.13. Certificate chains - 41.14. Self-signed certificates - -42. Access control lists - - 42.1. Testing ACLs - 42.2. Specifying when ACLs are used - 42.3. The non-SMTP ACLs - 42.4. The SMTP connect ACL - 42.5. The EHLO/HELO ACL - 42.6. The DATA ACLs - 42.7. The SMTP DKIM ACL - 42.8. The SMTP MIME ACL - 42.9. The SMTP PRDR ACL - 42.10. The QUIT ACL - 42.11. The not-QUIT ACL - 42.12. Finding an ACL to use - 42.13. ACL return codes - 42.14. Unset ACL options - 42.15. Data for message ACLs - 42.16. Data for non-message ACLs - 42.17. Format of an ACL - 42.18. ACL verbs - 42.19. ACL variables - 42.20. Condition and modifier processing - 42.21. ACL modifiers - 42.22. Use of the control modifier - 42.23. Summary of message fixup control - 42.24. Adding header lines in ACLs - 42.25. Removing header lines in ACLs - 42.26. ACL conditions - 42.27. Using DNS lists - 42.28. Specifying the IP address for a DNS list lookup - 42.29. DNS lists keyed on domain names - 42.30. Multiple explicit keys for a DNS list - 42.31. Data returned by DNS lists - 42.32. Variables set from DNS lists - 42.33. Additional matching conditions for DNS lists - 42.34. Negated DNS matching conditions - 42.35. Handling multiple DNS records from a DNS list - 42.36. Detailed information from merged DNS lists - 42.37. DNS lists and IPv6 - 42.38. Rate limiting incoming messages - 42.39. Ratelimit options for what is being measured - 42.40. Ratelimit update modes - 42.41. Ratelimit options for handling fast clients - 42.42. Limiting the rate of different events - 42.43. Using rate limiting - 42.44. Address verification - 42.45. Callout verification - 42.46. Additional parameters for callouts - 42.47. Callout caching - 42.48. Sender address verification reporting - 42.49. Redirection while verifying - 42.50. Client SMTP authorization (CSA) - 42.51. Bounce address tag validation - 42.52. Using an ACL to control relaying - 42.53. Checking a relay configuration - -43. Content scanning at ACL time - - 43.1. Scanning for viruses - 43.2. Scanning with SpamAssassin - 43.3. Calling SpamAssassin from an Exim ACL - 43.4. Scanning MIME parts - 43.5. Scanning with regular expressions - 43.6. The demime condition - -44. Adding a local scan function to Exim - - 44.1. Building Exim to use a local scan function - 44.2. API for local_scan() - 44.3. Configuration options for local_scan() - 44.4. Available Exim variables - 44.5. Structure of header lines - 44.6. Structure of recipient items - 44.7. Available Exim functions - 44.8. More about Exim's memory handling - -45. System-wide message filtering - - 45.1. Specifying a system filter - 45.2. Testing a system filter - 45.3. Contents of a system filter - 45.4. Additional variable for system filters - 45.5. Defer, freeze, and fail commands for system filters - 45.6. Adding and removing headers in a system filter - 45.7. Setting an errors address in a system filter - 45.8. Per-address filtering - -46. Message processing - - 46.1. Submission mode for non-local messages - 46.2. Line endings - 46.3. Unqualified addresses - 46.4. The UUCP From line - 46.5. Resent- header lines - 46.6. The Auto-Submitted: header line - 46.7. The Bcc: header line - 46.8. The Date: header line - 46.9. The Delivery-date: header line - 46.10. The Envelope-to: header line - 46.11. The From: header line - 46.12. The Message-ID: header line - 46.13. The Received: header line - 46.14. The References: header line - 46.15. The Return-path: header line - 46.16. The Sender: header line - 46.17. Adding and removing header lines in routers and transports - 46.18. Constructed addresses - 46.19. Case of local parts - 46.20. Dots in local parts - 46.21. Rewriting addresses - -47. SMTP processing - - 47.1. Outgoing SMTP and LMTP over TCP/IP - 47.2. Errors in outgoing SMTP - 47.3. Incoming SMTP messages over TCP/IP - 47.4. Unrecognized SMTP commands - 47.5. Syntax and protocol errors in SMTP commands - 47.6. Use of non-mail SMTP commands - 47.7. The VRFY and EXPN commands - 47.8. The ETRN command - 47.9. Incoming local SMTP - 47.10. Outgoing batched SMTP - 47.11. Incoming batched SMTP - -48. Customizing bounce and warning messages - - 48.1. Customizing bounce messages - 48.2. Customizing warning messages - -49. Some common configuration settings - - 49.1. Sending mail to a smart host - 49.2. Using Exim to handle mailing lists - 49.3. Syntax errors in mailing lists - 49.4. Re-expansion of mailing lists - 49.5. Closed mailing lists - 49.6. Variable Envelope Return Paths (VERP) - 49.7. Virtual domains - 49.8. Multiple user mailboxes - 49.9. Simplified vacation processing - 49.10. Taking copies of mail - 49.11. Intermittently connected hosts - 49.12. Exim on the upstream server host - 49.13. Exim on the intermittently connected client host - -50. Using Exim as a non-queueing client -51. Log files - - 51.1. Where the logs are written - 51.2. Logging to local files that are periodically "cycled" - 51.3. Datestamped log files - 51.4. Logging to syslog - 51.5. Log line flags - 51.6. Logging message reception - 51.7. Logging deliveries - 51.8. Discarded deliveries - 51.9. Deferred deliveries - 51.10. Delivery failures - 51.11. Fake deliveries - 51.12. Completion - 51.13. Summary of Fields in Log Lines - 51.14. Other log entries - 51.15. Reducing or increasing what is logged - 51.16. Message log - -52. Exim utilities - - 52.1. Finding out what Exim processes are doing (exiwhat) - 52.2. Selective queue listing (exiqgrep) - 52.3. Summarizing the queue (exiqsumm) - 52.4. Extracting specific information from the log (exigrep) - 52.5. Selecting messages by various criteria (exipick) - 52.6. Cycling log files (exicyclog) - 52.7. Mail statistics (eximstats) - 52.8. Checking access policy (exim_checkaccess) - 52.9. Making DBM files (exim_dbmbuild) - 52.10. Finding individual retry times (exinext) - 52.11. Hints database maintenance - 52.12. exim_dumpdb - 52.13. exim_tidydb - 52.14. exim_fixdb - 52.15. Mailbox maintenance (exim_lock) - -53. The Exim monitor - - 53.1. Running the monitor - 53.2. The stripcharts - 53.3. Main action buttons - 53.4. The log display - 53.5. The queue display - 53.6. The queue menu - -54. Security considerations - - 54.1. Building a more "hardened" Exim - 54.2. Root privilege - 54.3. Running Exim without privilege - 54.4. Delivering to local files - 54.5. Running local commands - 54.6. Trust in configuration data - 54.7. IPv4 source routing - 54.8. The VRFY, EXPN, and ETRN commands in SMTP - 54.9. Privileged users - 54.10. Spool files - 54.11. Use of argv[0] - 54.12. Use of %f formatting - 54.13. Embedded Exim path - 54.14. Dynamic module directory - 54.15. Use of sprintf() - 54.16. Use of debug_printf() and log_write() - 54.17. Use of strcat() and strcpy() - -55. Format of spool files - - 55.1. Format of the -H file - -56. Support for DKIM (DomainKeys Identified Mail) - - 56.1. Signing outgoing messages - 56.2. Verifying DKIM signatures in incoming mail - -57. Adding new drivers or lookup types +41. The tls authenticator +42. Encrypted SMTP connections using TLS/SSL + + 42.1. Support for the legacy "ssmtp" (aka "smtps") protocol + 42.2. OpenSSL vs GnuTLS + 42.3. GnuTLS parameter computation + 42.4. Requiring specific ciphers in OpenSSL + 42.5. Requiring specific ciphers or other parameters in GnuTLS + 42.6. Configuring an Exim server to use TLS + 42.7. Requesting and verifying client certificates + 42.8. Revoked certificates + 42.9. Configuring an Exim client to use TLS + 42.10. Use of TLS Server Name Indication + 42.11. Multiple messages on the same encrypted TCP/IP connection + 42.12. Certificates and all that + 42.13. Certificate chains + 42.14. Self-signed certificates + +43. Access control lists + + 43.1. Testing ACLs + 43.2. Specifying when ACLs are used + 43.3. The non-SMTP ACLs + 43.4. The SMTP connect ACL + 43.5. The EHLO/HELO ACL + 43.6. The DATA ACLs + 43.7. The SMTP DKIM ACL + 43.8. The SMTP MIME ACL + 43.9. The SMTP PRDR ACL + 43.10. The QUIT ACL + 43.11. The not-QUIT ACL + 43.12. Finding an ACL to use + 43.13. ACL return codes + 43.14. Unset ACL options + 43.15. Data for message ACLs + 43.16. Data for non-message ACLs + 43.17. Format of an ACL + 43.18. ACL verbs + 43.19. ACL variables + 43.20. Condition and modifier processing + 43.21. ACL modifiers + 43.22. Use of the control modifier + 43.23. Summary of message fixup control + 43.24. Adding header lines in ACLs + 43.25. Removing header lines in ACLs + 43.26. ACL conditions + 43.27. Using DNS lists + 43.28. Specifying the IP address for a DNS list lookup + 43.29. DNS lists keyed on domain names + 43.30. Multiple explicit keys for a DNS list + 43.31. Data returned by DNS lists + 43.32. Variables set from DNS lists + 43.33. Additional matching conditions for DNS lists + 43.34. Negated DNS matching conditions + 43.35. Handling multiple DNS records from a DNS list + 43.36. Detailed information from merged DNS lists + 43.37. DNS lists and IPv6 + 43.38. Rate limiting incoming messages + 43.39. Ratelimit options for what is being measured + 43.40. Ratelimit update modes + 43.41. Ratelimit options for handling fast clients + 43.42. Limiting the rate of different events + 43.43. Using rate limiting + 43.44. Address verification + 43.45. Callout verification + 43.46. Additional parameters for callouts + 43.47. Callout caching + 43.48. Sender address verification reporting + 43.49. Redirection while verifying + 43.50. Client SMTP authorization (CSA) + 43.51. Bounce address tag validation + 43.52. Using an ACL to control relaying + 43.53. Checking a relay configuration + +44. Content scanning at ACL time + + 44.1. Scanning for viruses + 44.2. Scanning with SpamAssassin and Rspamd + 44.3. Calling SpamAssassin from an Exim ACL + 44.4. Scanning MIME parts + 44.5. Scanning with regular expressions + +45. Adding a local scan function to Exim + + 45.1. Building Exim to use a local scan function + 45.2. API for local_scan() + 45.3. Configuration options for local_scan() + 45.4. Available Exim variables + 45.5. Structure of header lines + 45.6. Structure of recipient items + 45.7. Available Exim functions + 45.8. More about Exim's memory handling + +46. System-wide message filtering + + 46.1. Specifying a system filter + 46.2. Testing a system filter + 46.3. Contents of a system filter + 46.4. Additional variable for system filters + 46.5. Defer, freeze, and fail commands for system filters + 46.6. Adding and removing headers in a system filter + 46.7. Setting an errors address in a system filter + 46.8. Per-address filtering + +47. Message processing + + 47.1. Submission mode for non-local messages + 47.2. Line endings + 47.3. Unqualified addresses + 47.4. The UUCP From line + 47.5. Resent- header lines + 47.6. The Auto-Submitted: header line + 47.7. The Bcc: header line + 47.8. The Date: header line + 47.9. The Delivery-date: header line + 47.10. The Envelope-to: header line + 47.11. The From: header line + 47.12. The Message-ID: header line + 47.13. The Received: header line + 47.14. The References: header line + 47.15. The Return-path: header line + 47.16. The Sender: header line + 47.17. Adding and removing header lines in routers and transports + 47.18. Constructed addresses + 47.19. Case of local parts + 47.20. Dots in local parts + 47.21. Rewriting addresses + +48. SMTP processing + + 48.1. Outgoing SMTP and LMTP over TCP/IP + 48.2. Errors in outgoing SMTP + 48.3. Incoming SMTP messages over TCP/IP + 48.4. Unrecognized SMTP commands + 48.5. Syntax and protocol errors in SMTP commands + 48.6. Use of non-mail SMTP commands + 48.7. The VRFY and EXPN commands + 48.8. The ETRN command + 48.9. Incoming local SMTP + 48.10. Outgoing batched SMTP + 48.11. Incoming batched SMTP + +49. Customizing bounce and warning messages + + 49.1. Customizing bounce messages + 49.2. Customizing warning messages + +50. Some common configuration settings + + 50.1. Sending mail to a smart host + 50.2. Using Exim to handle mailing lists + 50.3. Syntax errors in mailing lists + 50.4. Re-expansion of mailing lists + 50.5. Closed mailing lists + 50.6. Variable Envelope Return Paths (VERP) + 50.7. Virtual domains + 50.8. Multiple user mailboxes + 50.9. Simplified vacation processing + 50.10. Taking copies of mail + 50.11. Intermittently connected hosts + 50.12. Exim on the upstream server host + 50.13. Exim on the intermittently connected client host + +51. Using Exim as a non-queueing client +52. Log files + + 52.1. Where the logs are written + 52.2. Logging to local files that are periodically "cycled" + 52.3. Datestamped log files + 52.4. Logging to syslog + 52.5. Log line flags + 52.6. Logging message reception + 52.7. Logging deliveries + 52.8. Discarded deliveries + 52.9. Deferred deliveries + 52.10. Delivery failures + 52.11. Fake deliveries + 52.12. Completion + 52.13. Summary of Fields in Log Lines + 52.14. Other log entries + 52.15. Reducing or increasing what is logged + 52.16. Message log + +53. Exim utilities + + 53.1. Finding out what Exim processes are doing (exiwhat) + 53.2. Selective queue listing (exiqgrep) + 53.3. Summarizing the queue (exiqsumm) + 53.4. Extracting specific information from the log (exigrep) + 53.5. Selecting messages by various criteria (exipick) + 53.6. Cycling log files (exicyclog) + 53.7. Mail statistics (eximstats) + 53.8. Checking access policy (exim_checkaccess) + 53.9. Making DBM files (exim_dbmbuild) + 53.10. Finding individual retry times (exinext) + 53.11. Hints database maintenance + 53.12. exim_dumpdb + 53.13. exim_tidydb + 53.14. exim_fixdb + 53.15. Mailbox maintenance (exim_lock) + +54. The Exim monitor + + 54.1. Running the monitor + 54.2. The stripcharts + 54.3. Main action buttons + 54.4. The log display + 54.5. The queue display + 54.6. The queue menu + +55. Security considerations + + 55.1. Building a more "hardened" Exim + 55.2. Root privilege + 55.3. Running Exim without privilege + 55.4. Delivering to local files + 55.5. Running local commands + 55.6. Trust in configuration data + 55.7. IPv4 source routing + 55.8. The VRFY, EXPN, and ETRN commands in SMTP + 55.9. Privileged users + 55.10. Spool files + 55.11. Use of argv[0] + 55.12. Use of %f formatting + 55.13. Embedded Exim path + 55.14. Dynamic module directory + 55.15. Use of sprintf() + 55.16. Use of debug_printf() and log_write() + 55.17. Use of strcat() and strcpy() + +56. Format of spool files + + 56.1. Format of the -H file + +57. Support for DKIM (DomainKeys Identified Mail) + + 57.1. Signing outgoing messages + 57.2. Verifying DKIM signatures in incoming mail + +58. Proxies + + 58.1. Inbound proxies + 58.2. Outbound proxies + 58.3. Logging + +59. Internationalisation + + 59.1. MTA operations + 59.2. MDA operations + +60. Events +61. Adding new drivers or lookup types @@ -657,8 +670,8 @@ ACKNOWLEDGMENTS, in which I have started recording the names of contributors. 1.1 Exim documentation ---------------------- -This edition of the Exim specification applies to version 4.84 of Exim. -Substantive changes from the 4.83 edition are marked in some renditions of the +This edition of the Exim specification applies to version 4.89 of Exim. +Substantive changes from the 4.88 edition are marked in some renditions of the document; this paragraph is so marked if the rendition is capable of showing a change indicator. @@ -711,6 +724,7 @@ experimental.txt documentation of experimental features filter.txt specification of the filter language Exim3.upgrade upgrade notes from release 2 to release 3 Exim4.upgrade upgrade notes from release 3 to release 4 +openssl.txt installing a current OpenSSL release The main specification and the specification of the filtering language are also available in other formats (HTML, PostScript, PDF, and Texinfo). Section 1.6 @@ -1133,7 +1147,7 @@ specifying policy controls on incoming mail: remote host. However, the most common places are after each RCPT command, and at the very end of the message. The sysadmin can specify conditions for accepting or rejecting individual recipients or the entire message, - respectively, at these two points (see chapter 42). Denial of access + respectively, at these two points (see chapter 43). Denial of access results in an SMTP error code. * An ACL is also available for locally generated, non-SMTP messages. In this @@ -1147,7 +1161,7 @@ specifying policy controls on incoming mail: * When a message has been received, either from a remote host or from the local host, but before the final acknowledgment has been sent, a locally supplied C function called local_scan() can be run to inspect the message - and decide whether to accept it or not (see chapter 44). If the message is + and decide whether to accept it or not (see chapter 45). If the message is accepted, the list of recipients can be modified by the function. * Using the local_scan() mechanism is another way of calling external scanner @@ -1155,7 +1169,7 @@ specifying policy controls on incoming mail: Exim to be compiled with the content-scanning extension. * After a message has been accepted, a further checking mechanism is - available in the form of the system filter (see chapter 45). This runs at + available in the form of the system filter (see chapter 46). This runs at the start of every delivery process. @@ -1269,7 +1283,7 @@ checking by the non-SMTP ACL, if one is defined. Messages received using SMTP (either over TCP/IP, or interacting with a local process) can be checked by a number of ACLs that operate at different times during the SMTP session. Either individual recipients, or the entire message, can be rejected if local policy -requirements are not met. The local_scan() function (see chapter 44) is run for +requirements are not met. The local_scan() function (see chapter 45) is run for all incoming messages. Exim can be configured not to start a delivery process when a message is @@ -1303,7 +1317,7 @@ The envelope information consists of the address of the message's sender and the addresses of the recipients. This information is entirely separate from any addresses contained in the header lines. The status of the message includes a list of recipients who have already received the message. The format of the -first spool file is described in chapter 55. +first spool file is described in chapter 56. Address rewriting that is specified in the rewrite section of the configuration (see chapter 31) is done once and for all on incoming addresses, both in the @@ -1337,7 +1351,7 @@ frozen bounces, the second to any frozen messages. While Exim is working on a message, it writes information about each delivery attempt to its main log file. This includes successful, unsuccessful, and -delayed deliveries for each recipient (see chapter 51). The log lines are also +delayed deliveries for each recipient (see chapter 52). The log lines are also written to a separate message log file for each message. These logs are solely for the benefit of the administrator, and are normally deleted along with the spool files when processing of a message is complete. The use of individual @@ -1607,7 +1621,7 @@ When a message is to be delivered, the sequence of events is as follows: interfaces to mail filtering. (Note: Sieve cannot be used for system filter files.) - Some additional features are available in system filters - see chapter 45 + Some additional features are available in system filters - see chapter 46 for details. Note that a message is passed to the system filter only once per delivery attempt, however many recipients it has. However, if there are several delivery attempts because one or more addresses could not be @@ -1732,7 +1746,7 @@ delivery attempt are listed in a single message. If the original message has many recipients, it is possible for some addresses to fail in one delivery attempt and others to fail subsequently, giving rise to more than one bounce message. The wording of bounce messages can be customized by the administrator. -See chapter 48 for details. +See chapter 49 for details. Bounce messages contain an X-Failed-Recipients: header line that lists the failed addresses, for the benefit of programs that try to analyse such messages @@ -1743,7 +1757,7 @@ obtained from the message's envelope. For incoming SMTP messages, this is the address given in the MAIL command. However, when an address is expanded via a forward or alias file, an alternative address can be specified for delivery failures of the generated addresses. For a mailing list expansion (see section -49.2) it is common to direct bounce messages to the manager of the list. +50.2) it is common to direct bounce messages to the manager of the list. 3.17 Failures to deliver bounce messages @@ -1766,7 +1780,7 @@ only a short time (see timeout_frozen_after and ignore_bounce_errors_after). Exim is distributed as a gzipped or bzipped tar file which, when unpacked, creates a directory with the name of the current release (for example, -exim-4.84) into which the following files are placed: +exim-4.89) into which the following files are placed: ACKNOWLEDGMENTS contains some acknowledgments CHANGES contains a reference to where changes are documented @@ -1940,7 +1954,7 @@ facilities, you need to set WITH_CONTENT_SCAN=yes in your Local/Makefile. For details of the facilities themselves, see chapter -43. +44. If you are going to build the Exim monitor, a similar configuration process is required. The file exim_monitor/EDITME must be edited appropriately for your @@ -1963,8 +1977,8 @@ described RFC 2047. This makes it possible to transmit characters that are not in the ASCII character set, and to label them as being in a particular character set. When Exim is inspecting header lines by means of the $h_ mechanism, it decodes them, and translates them into a specified character set -(default ISO-8859-1). The translation is possible only if the operating system -supports the iconv() function. +(default is set at build time). The translation is possible only if the +operating system supports the iconv() function. However, some of the operating systems that supply iconv() do not support very many conversions. The GNU libiconv library (available from http://www.gnu.org/ @@ -2029,7 +2043,7 @@ USE_GNUTLS_PC=gnutls You do not need to set TLS_INCLUDE if the relevant directory is already specified in INCLUDE. Details of how to configure Exim to make use of TLS are -given in chapter 41. +given in chapter 42. 4.8 Use of tcpwrappers @@ -2073,10 +2087,8 @@ Two different types of DNS record for handling IPv6 addresses have been defined. AAAA records (analogous to A records for IPv4) are in use, and are currently seen as the mainstream. Another record type called A6 was proposed as better than AAAA because it had more flexibility. However, it was felt to be -over-complex, and its status was reduced to "experimental". It is not known if -anyone is actually using A6 records. Exim has support for A6 records, but this -is included only if you set "SUPPORT_A6=YES" in Local/Makefile. The support has -not been tested for some time. +over-complex, and its status was reduced to "experimental". Exim used to have a +compile option for including A6 record support but this has now been withdrawn. 4.10 Dynamically loaded lookup module support @@ -2112,9 +2124,6 @@ types, and creates a build directory if one does not exist. For example, on a Sun system running Solaris 8, the directory build-SunOS5-5.8-sparc is created. Symbolic links to relevant source files are installed in the build directory. -Warning: The -j (parallel) flag must not be used with make; the building -process fails if it is set. - If this is the first time make has been run, it calls a script that builds a make file inside the build directory, using the configuration files from the Local directory. The new make file is then passed to another instance of make. @@ -2327,7 +2336,7 @@ The Exim binary is required to be owned by root and have the setuid bit set, for normal configurations. Therefore, you must run "make install" as root so that it can set up the Exim binary in this way. However, in some special situations (for example, if a host is doing no local deliveries) it may be -possible to run Exim without making the binary setuid root (see chapter 54 for +possible to run Exim without making the binary setuid root (see chapter 55 for details). Exim's run time configuration file is named by the CONFIGURE_FILE setting in @@ -2376,7 +2385,7 @@ when you have set INFO_DIRECTORY, as described in section 4.17 below. For the utility programs, old versions are renamed by adding the suffix .O to their names. The Exim binary itself, however, is handled differently. It is installed under a name that includes the version number and the compile number, -for example exim-4.84-1. The script then arranges for a symbolic link called +for example exim-4.89-1. The script then arranges for a symbolic link called exim to point to the binary. If you are updating a previous version of Exim, the script takes care to ensure that the name exim is never absent from the directory (as seen by other processes). @@ -2768,8 +2777,8 @@ brief message about itself and exits. at the start of continuation lines is ignored. Each argument or data line is passed through the string expansion mechanism, and the result is output. Variable values from the configuration file (for example, $qualify_domain) - are available, but no message-specific values (such as $sender_domain) are - set, because no message is being processed (but see -bem and -Mset). + are available, but no message-specific values (such as $message_exim_id) + are set, because no message is being processed (but see -bem and -Mset). Note: If you use this mechanism to test lookups, and you change the data files or databases you are using, you must exit and restart Exim before @@ -2885,7 +2894,7 @@ brief message about itself and exits. actually perform an ident callout when testing using -bh because there is no incoming SMTP connection. - Warning 2: Address verification callouts (see section 42.45) are also + Warning 2: Address verification callouts (see section 43.45) are also skipped when testing using -bh. If you want these callouts to occur, use -bhc instead. @@ -2898,7 +2907,7 @@ brief message about itself and exits. The exim_checkaccess utility is a "packaged" version of -bh whose output just states whether a given recipient address from a given host is - acceptable or not. See section 52.8. + acceptable or not. See section 53.8. Features such as authentication and encryption, where the client input is not plain text, cannot easily be tested with -bh. Instead, you should use a @@ -2963,7 +2972,7 @@ brief message about itself and exits. this for special cases. Policy checks on the contents of local messages can be enforced by means of - the non-SMTP ACL. See chapter 42 for details. + the non-SMTP ACL. See chapter 43 for details. The return code is zero if the message is successfully accepted. Otherwise, the action is controlled by the -oex option setting - see below. @@ -2987,8 +2996,9 @@ brief message about itself and exits. -bmalware - This debugging option causes Exim to scan the given file, using the malware - scanning framework. The option of av_scanner influences this option, so if + This debugging option causes Exim to scan the given file or directory + (depending on the used scanner interface), using the malware scanning + framework. The option of av_scanner influences this option, so if av_scanner's value is dependent upon an expansion then the expansion should have defaults which apply to this invocation. ACLs are not invoked, so if av_scanner references an ACL variable then that variable will never be @@ -3038,10 +3048,13 @@ brief message about itself and exits. mysql_servers = - If configure_file is given as an argument, the name of the run time - configuration file is output. If a list of configuration files was - supplied, the value that is output here is the name of the file that was - actually used. + If config is given as an argument, the config is output, as it was parsed, + any include file resolved, any comment removed. + + If config_file is given as an argument, the name of the run time + configuration file is output. (configure_file works too, for backward + compatibility.) If a list of configuration files was supplied, the value + that is output here is the name of the file that was actually used. If the -n flag is given, then for most modes of -bP operation the name will not be output. @@ -3071,6 +3084,10 @@ brief message about itself and exits. authenticator_list, and a complete list of all drivers with their option settings can be obtained by using routers, transports, or authenticators. + If environment is given as an argument, the set of environment variables is + output, line by line. Using the -n flag suppresses the value of the + variables. + If invoked by an admin user, then macro, macro_list and macros are available, similarly to the drivers. Because macros are sometimes used for storing passwords, this option is restricted. The output format is one item @@ -3189,7 +3206,7 @@ brief message about itself and exits. follow. As for other local message submissions, the contents of incoming batch SMTP - messages can be checked using the non-SMTP ACL (see chapter 42). + messages can be checked using the non-SMTP ACL (see chapter 43). Unqualified addresses are automatically qualified using qualify_domain and qualify_recipient, as appropriate, unless the -bnq option is used. @@ -3202,13 +3219,13 @@ brief message about itself and exits. error was detected; it is 1 if one or more messages were accepted before the error was detected; otherwise it is 2. - More details of input using batched SMTP are given in section 47.11. + More details of input using batched SMTP are given in section 48.11. -bs This option causes Exim to accept one or more messages by reading SMTP commands on the standard input, and producing SMTP replies on the standard - output. SMTP policy controls, as defined in ACLs (see chapter 42) are + output. SMTP policy controls, as defined in ACLs (see chapter 43) are applied. Some user agents use this interface as a way of passing locally-generated messages to the MTA. @@ -3289,7 +3306,7 @@ brief message about itself and exits. is taken as a recipient address to be verified by the routers. (This does not involve any verification callouts). During normal operation, verification happens mostly as a consequence processing a verify condition - in an ACL (see chapter 42). If you want to test an entire ACL, possibly + in an ACL (see chapter 43). If you want to test an entire ACL, possibly including callouts, see the -bh and -bhc options. If verification fails, and the caller is not an admin user, no details of @@ -3427,7 +3444,8 @@ brief message about itself and exits. exim '-D ABC = something' ... - -D may be repeated up to 10 times on a command line. + -D may be repeated up to 10 times on a command line. Only macro names up to + 22 letters long can be set. -d @@ -3461,7 +3479,7 @@ brief message about itself and exits. interface lists of local interfaces lists matching things in lists load system load checks - local_scan can be used by local_scan() (see chapter 44) + local_scan can be used by local_scan() (see chapter 45) lookup general lookup code and all lookups memory memory handling pid add pid to debug output lines @@ -3516,7 +3534,7 @@ brief message about itself and exits. This is an obsolete option that is now a no-op. It used to affect the way Exim handled CR and LF characters in incoming messages. What happens now is - described in section 46.2. + described in section 47.2. -E @@ -3648,7 +3666,7 @@ brief message about itself and exits. This option is not intended for use by external callers. It is used internally by Exim to invoke another instance of itself to deliver a waiting message using an existing SMTP connection, which is passed as the - standard input. Details are given in chapter 47. This must be the final + standard input. Details are given in chapter 48. This must be the final option, and the caller must be root or the Exim user in order to use it. -MCA @@ -3657,6 +3675,18 @@ brief message about itself and exits. internally by Exim in conjunction with the -MC option. It signifies that the connection to the remote host has been authenticated. +-MCD + + This option is not intended for use by external callers. It is used + internally by Exim in conjunction with the -MC option. It signifies that + the remote host supports the ESMTP DSN extension. + +-MCG + + This option is not intended for use by external callers. It is used + internally by Exim in conjunction with the -MC option. It signifies that an + alternate queue is used, named by the following option. + -MCP This option is not intended for use by external callers. It is used @@ -3691,7 +3721,7 @@ brief message about itself and exits. turn, but unlike the -M option, it does check for retry hints, and respects any that are found. This option is not very useful to external callers. It is provided mainly for internal use by Exim when it needs to re-invoke - itself in order to regain root privilege for a delivery (see chapter 54). + itself in order to regain root privilege for a delivery (see chapter 55). However, -Mc can be useful when testing, in order to run a delivery that respects retry times and other options such as hold_domains that are overridden when -M is used. Such a delivery does not count as a queue run. @@ -3816,8 +3846,9 @@ brief message about itself and exits. -n This option is interpreted by Sendmail to mean "no aliasing". For normal - modes of operation, it is ignored by Exim. When combined with -bP it - suppresses the name of an option from being output. + modes of operation, it is ignored by Exim. When combined with -bP it makes + the output more terse (suppresses option names, environment values and + config pretty printing). -O @@ -3871,7 +3902,7 @@ brief message about itself and exits. If there is a temporary delivery error during foreground delivery, the message is left on the queue for later delivery, and the original reception - process exits. See chapter 50 for a way of setting up a restricted + process exits. See chapter 51 for a way of setting up a restricted configuration that never queues messages. -odi @@ -4069,14 +4100,14 @@ brief message about itself and exits. This option sets a timeout value for incoming non-SMTP messages. If it is not set, Exim will wait forever for the standard input. The value can also be set by the receive_timeout option. The format used for specifying times - is described in section 6.15. + is described in section 6.16. -os