Exim 4.40 Specification
1. Introduction
1.1. Exim documentation
1.2. FTP and web sites, and mailing list
1.3. Exim training
1.4. Bug reports
1.5. Where to find the Exim distribution
1.6. Wish list
1.7. Contributed material
1.8. Limitations
1.9. Run time configuration
1.10. Calling interface
1.11. Terminology
2. Incorporated code
3. How Exim receives and delivers mail
3.1. Overall philosophy
3.2. Policy control
3.3. User filters
3.4. Message identification
3.5. Receiving mail
3.6. Handling an incoming message
3.7. Life of a message
3.8. Processing an address for delivery
3.9. Processing an address for verification
3.10. Running an individual router
3.11. Router preconditions
3.12. Delivery in detail
3.13. Retry mechanism
3.14. Temporary delivery failure
3.15. Permanent delivery failure
3.16. Failures to deliver bounce messages
4. Building and installing Exim
4.1. Unpacking
4.2. Multiple machine architectures and operating systems
4.3. DBM libraries
4.4. Pre-building configuration
4.5. Support for iconv()
4.6. Including TLS/SSL encryption support
4.7. Use of tcpwrappers
4.8. Including support for IPv6
4.9. The building process
4.10. Overriding build-time options for Exim
4.11. OS-specific header files
4.12. Overriding build-time options for the monitor
4.13. Installing Exim binaries and scripts
4.14. Installing info documentation
4.15. Setting up the spool directory
4.16. Testing
4.17. Replacing another MTA with Exim
4.18. Upgrading Exim
4.19. Stopping the Exim daemon on Solaris
5. The Exim command line
5.1. Setting options by program name
5.2. Trusted and admin users
5.3. Command line options
6. The Exim run time configuration file
6.1. Using a different configuration file
6.2. Configuration file format
6.3. File inclusions in the configuration file
6.4. Macros in the configuration file
6.5. Conditional skips in the configuration file
6.6. Common option syntax
6.7. Boolean options
6.8. Integer values
6.9. Octal integer values
6.10. Fixed point number values
6.11. Time interval values
6.12. String values
6.13. Expanded strings
6.14. User and group names
6.15. List construction
6.16. Format of driver configurations
7. The default configuration file
7.1. Main configuration settings
7.2. ACL configuration
7.3. Router configuration
7.4. Transport configuration
7.5. Default retry rule
7.6. Rewriting configuration
7.7. Authenticators configuration
8. Regular expressions
8.1. Testing regular expressions
9. File and database lookups
9.1. Lookup types
9.2. Single-key lookup types
9.3. Query-style lookup types
9.4. Temporary errors in lookups
9.5. Default values in single-key lookups
9.6. Partial matching in single-key lookups
9.7. Lookup caching
9.8. Quoting lookup data
9.9. More about dnsdb
9.10. More about LDAP
9.11. Format of LDAP queries
9.12. LDAP quoting
9.13. LDAP connections
9.14. LDAP authentication and control information
9.15. Format of data returned by LDAP
9.16. More about NIS+
9.17. More about MySQL, PostgreSQL, Oracle, and Interbase
9.18. Special MySQL features
9.19. Special PostgreSQL features
10. Domain, host, address, and local part lists
10.1. Expansion of lists
10.2. Negated items in lists
10.3. File names in lists
10.4. An lsearch file is not an out-of-line list
10.5. Named lists
10.6. Named lists compared with macros
10.7. Named list caching
10.8. Domain lists
10.9. Host lists
10.10. Special host list patterns
10.11. Host list patterns that match by IP address
10.12. Host list patterns for single-key lookups by host address
10.13. Host list patterns that match by host name
10.14. Behaviour when an IP address or name cannot be found
10.15. Host list patterns for single-key lookups by host name
10.16. Host list patterns for query-style lookups
10.17. Mixing wildcarded host names and addresses in host lists
10.18. Address lists
10.19. Case of letters in address lists
10.20. Local part lists
11. String expansions
11.1. Literal text in expanded strings
11.2. Character escape sequences in expanded strings
11.3. Testing string expansions
11.4. Expansion items
11.5. Expansion operators
11.6. Expansion conditions
11.7. Combining expansion conditions
11.8. Expansion variables
12. Embedded Perl
13. Starting the daemon and the use of network interfaces
13.1. Starting a listening daemon
13.2. Special IP listening addresses
13.3. Overriding local_interfaces and daemon_smtp_ports
13.4. IPv6 address scopes
13.5. Examples of starting a listening daemon
13.6. Recognising the local host
13.7. Delivering to a remote host
14. Main configuration
14.1. Miscellaneous
14.2. Exim parameters
14.3. Privilege controls
14.4. Logging
14.5. Frozen messages
14.6. Data lookups
14.7. Message ids
14.8. Embedded Perl Startup
14.9. Daemon
14.10. Resource control
14.11. Policy controls
14.12. Callout cache
14.13. TLS
14.14. Local user handling
14.15. All incoming messages (SMTP and non-SMTP)
14.16. Non-SMTP incoming messages
14.17. Incoming SMTP messages
14.18. SMTP extensions
14.19. Processing messages
14.20. System filter
14.21. Routing and delivery
14.22. Bounce and warning messages
14.23. Alphabetical list of main options
15. Generic options for routers
16. The accept router
17. The dnslookup router
17.1. Effect of qualify_single and search_parents
18. The ipliteral router
19. The iplookup router
20. The manualroute router
20.1. Private options for manualroute
20.2. Routing rules in route_list
20.3. Routing rules in route_data
20.4. Format of the list of hosts
20.5. How the list of hosts is used
20.6. How the options are used
20.7. Manualroute examples
21. The queryprogram router
22. The redirect router
22.1. Redirection data
22.2. Forward files and address verification
22.3. Interpreting redirection data
22.4. Items in a non-filter redirection list
22.5. Redirecting to a local mailbox
22.6. Special items in redirection lists
22.7. Duplicate addresses
22.8. Repeated redirection expansion
22.9. Errors in redirection lists
22.10. Private options for the redirect router
23. Environment for running local transports
23.1. Uids and gids
23.2. Current and home directories
23.3. Expansion variables derived from the address
24. Generic options for transports
25. Address batching in local transports
26. The appendfile transport
26.1. The file and directory options
26.2. Private options for appendfile
26.3. Operational details for appending
26.4. Operational details for delivery to a new file
26.5. Maildir delivery
26.6. Using tags to record message sizes
26.7. Using a maildirsize file
26.8. Mailstore delivery
26.9. Non-special new file delivery
27. The autoreply transport
27.1. Private options for autoreply
28. The lmtp transport
29. The pipe transport
29.1. Returned status and data
29.2. How the command is run
29.3. Environment variables
29.4. Private options for pipe
29.5. Using an external local delivery agent
30. The smtp transport
30.1. Multiple messages on a single connection
30.2. Use of the $host variable
30.3. Private options for smtp
30.4. How the value of hosts_max_try is used
31. Address rewriting
31.1. Explicitly configured address rewriting
31.2. When does rewriting happen?
31.3. Testing the rewriting rules that apply on input
31.4. Rewriting rules
31.5. Rewriting patterns
31.6. Rewriting replacements
31.7. Rewriting flags
31.8. Flags specifying which headers and envelope addresses to rewrite
31.9. The SMTP-time rewriting flag
31.10. Flags controlling the rewriting process
31.11. Rewriting examples
32. Retry configuration
32.1. Retry rules
32.2. Choosing which retry rule to use
32.3. Retry rules for specific errors
32.4. Retry rule parameters
32.5. Retry rule examples
32.6. Timeout of retry data
32.7. Long-term failures
32.8. Ultimate address timeout
33. SMTP authentication
33.1. Generic options for authenticators
33.2. The AUTH parameter on MAIL commands
33.3. Authentication on an Exim server
33.4. Testing server authentication
33.5. Authentication by an Exim client
34. The plaintext authenticator
34.1. Using plaintext in a server
34.2. The PLAIN authentication mechanism
34.3. The LOGIN authentication mechanism
34.4. Support for different kinds of authentication
34.5. Using plaintext in a client
35. The cram_md5 authenticator
35.1. Using cram_md5 as a server
35.2. Using cram_md5 as a client
36. The spa authenticator
36.1. Using spa as a server
36.2. Using spa as a client
37. Encrypted SMTP connections using TLS/SSL
37.1. OpenSSL vs GnuTLS
37.2. Requiring specific ciphers in OpenSSL and GnuTLS
37.3. Configuring an Exim server to use TLS
37.4. Requesting and verifying client certificates
37.5. Revoked certificates
37.6. Configuring an Exim client to use TLS
37.7. Multiple messages on the same encrypted TCP/IP connection
37.8. Certificates and all that
37.9. Certificate chains
37.10. Self-signed certificates
38. Access control lists
38.1. Testing ACLs
38.2. Specifying when ACLs are used
38.3. ACL return codes
38.4. Unset ACL options
38.5. Data for message ACLs
38.6. Data for non-message ACLs
38.7. Use of the ACL selection options
38.8. Format of an ACL
38.9. ACL variables
38.10. Condition and modifier processing
38.11. ACL modifiers
38.12. ACL conditions
38.13. Using DNS lists
38.14. DNS lists keyed on domain names
38.15. Data returned by DNS lists
38.16. Variables set from DNS lists
38.17. Additional matching conditions for DNS lists
38.18. Negated DNS matching conditions
38.19. DNS lists and IPv6
38.20. Address verification
38.21. Callout verification
38.22. Additional parameters for callouts
38.23. Callout caching
38.24. Sender address verification reporting
38.25. Redirection while verifying
38.26. Using an ACL to control relaying
38.27. Checking a relay configuration
39. Adding a local scan function to Exim
39.1. Building Exim to use a local scan function
39.2. API for local_scan()
39.3. Configuration options for local_scan()
39.4. Available Exim variables
39.5. Structure of header lines
39.6. Structure of recipient items
39.7. Available Exim functions
39.8. More about Exim's memory handling
40. System-wide message filtering
40.1. Specifying a system filter
40.2. Testing a system filter
40.3. Contents of a system filter
40.4. Additional variable for system filters
40.5. Defer, freeze, and fail commands for system filters
40.6. Adding and removing headers in a system filter
40.7. Setting an errors address in a system filter
40.8. Per-address filtering
41. Customizing bounce and warning messages
41.1. Customizing bounce messages
41.2. Customizing warning messages
42. Some common configuration requirements
42.1. Sending mail to a smart host
42.2. Using Exim to handle mailing lists
42.3. Syntax errors in mailing lists
42.4. Re-expansion of mailing lists
42.5. Closed mailing lists
42.6. Virtual domains
42.7. Multiple user mailboxes
42.8. Simplified vacation processing
42.9. Taking copies of mail
42.10. Intermittently connected hosts
42.11. Exim on the upstream server host
42.12. Exim on the intermittently connected client host
43. SMTP processing
43.1. Outgoing SMTP and LMTP over TCP/IP
43.2. Errors in outgoing SMTP
43.3. Variable Envelope Return Paths (VERP)
43.4. Incoming SMTP messages over TCP/IP
43.5. Unrecognized SMTP commands
43.6. Syntax and protocol errors in SMTP commands
43.7. Use of non-mail SMTP commands
43.8. The
VRFY
and
EXPN
commands
43.9. The
ETRN
command
43.10. Incoming local SMTP
43.11. Outgoing batched SMTP
43.12. Incoming batched SMTP
44. Message processing
44.1. Line endings
44.2. Unqualified addresses
44.3. The UUCP From line
44.4. Resent- header lines
44.5. The Auto-Submitted: header line
44.6. The Bcc: header line
44.7. The Date: header line
44.8. The Delivery-date: header line
44.9. The Envelope-to: header line
44.10. The From: header line
44.11. The Message-ID: header line
44.12. The Received: header line
44.13. The Return-path: header line
44.14. The Sender: header line
44.15. Adding and removing header lines
44.16. Constructed addresses
44.17. Case of local parts
44.18. Dots in local parts
44.19. Rewriting addresses
45. Log files
45.1. Where the logs are written
45.2. Logging to local files that are periodically cycled
45.3. Datestamped log files
45.4. Logging to syslog
45.5. Log line flags
45.6. Logging message reception
45.7. Logging deliveries
45.8. Discarded deliveries
45.9. Deferred deliveries
45.10. Delivery failures
45.11. Fake deliveries
45.12. Completion
45.13. Summary of Fields in Log Lines
45.14. Other log entries
45.15. Reducing or increasing what is logged
45.16. Message log
46. Exim utilities
46.1. Finding out what Exim processes are doing (exiwhat)
46.2. Selective queue listing (exiqgrep)
46.3. Summarising the queue (exiqsumm)
46.4. Extracting specific information from the log (exigrep)
46.5. Selecting messages by various criteria (exipick)
46.6. Cycling log files (exicyclog)
46.7. Mail statistics (eximstats)
46.8. Checking access policy (exim_checkaccess)
46.9. Making DBM files (exim_dbmbuild)
46.10. Finding individual retry times (exinext)
46.11. Hints database maintenance (exim_dumpdb, exim_fixdb, exim_tidydb)
46.12. Mailbox maintenance (exim_lock)
47. The Exim monitor
47.1. Running the monitor
47.2. The stripcharts
47.3. Main action buttons
47.4. The log display
47.5. The queue display
47.6. The queue menu
48. Security considerations
48.1. Building a more hardened Exim
48.2. Root privilege
48.3. Running Exim without privilege
48.4. Delivering to local files
48.5. IPv4 source routing
48.6. The VRFY, EXPN, and ETRN commands in SMTP
48.7. Privileged users
48.8. Spool files
48.9. Use of argv[0]
48.10. Use of %f formatting
48.11. Embedded Exim path
48.12. Use of sprintf()
48.13. Use of debug_printf() and log_write()
48.14. Use of strcat() and strcpy()
49. Format of spool files
49.1. Format of the -H file
50. Adding new drivers or lookup types
Concept Index
Option Index