Exim 4.20 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. Message identification
3.4. Receiving mail
3.5. Handling an incoming message
3.6. Life of a message
3.7. Processing an address for delivery
3.8. Running an individual router
3.9. Router preconditions
3.10. Delivery in detail
3.11. Retry mechanism
3.12. Temporary delivery failure
3.13. Permanent delivery failure
3.14. 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. Including TLS/SSL encryption support
4.6. Use of tcpwrappers
4.7. Including support for IPv6
4.8. The building process
4.9. Overriding build-time options for Exim
4.10. OS-specific header files
4.11. Overriding build-time options for the monitor
4.12. Installing Exim binaries and scripts
4.13. Installing info documentation
4.14. Setting up the spool directory
4.15. Testing
4.16. Replacing another MTA with Exim
4.17. Upgrading Exim
4.18. 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, and Oracle
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. Domain lists
10.8. Host lists
10.9. Special host list patterns
10.10. Host list patterns that match by IP address
10.11. Host list patterns that match by host name
10.12. Mixing wildcarded host names and addresses in host lists
10.13. Address lists
10.14. Case of letters in address lists
10.15. 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. Main configuration
13.1. Miscellaneous
13.2. Exim parameters
13.3. Privilege controls
13.4. Logging
13.5. Frozen messages
13.6. Data lookups
13.7. Message ids
13.8. Embedded Perl Startup
13.9. Daemon
13.10. Resource control
13.11. Policy controls
13.12. Callout cache
13.13. TLS
13.14. Local user handling
13.15. Incoming messages
13.16. Incoming SMTP
13.17. SMTP extensions
13.18. Processing messages
13.19. System filter
13.20. Routing and delivery
13.21. Bounce and warning messages
13.22. Alphabetical list of main options
14. Generic options for routers
15. The accept router
16. The dnslookup router
17. The ipliteral router
18. The iplookup router
19. The manualroute router
19.1. Private options for manualroute
19.2. Routing rules in route_list
19.3. Routing rules in route_data
19.4. Format of the list of hosts
19.5. How the list of hosts is used
19.6. How the options are used
19.7. Manualroute examples
20. The queryprogram router
21. The redirect router
21.1. Redirection data
21.2. Forward files and address verification
21.3. Interpreting redirection data
21.4. Items in a non-filter redirection list
21.5. Redirecting to a local mailbox
21.6. Special items in redirection lists
21.7. Duplicate addresses
21.8. Repeated redirection expansion
21.9. Errors in redirection lists
21.10. Private options for the redirect router
22. Environment for running local transports
22.1. Uids and gids
22.2. Current and home directories
22.3. Expansion variables derived from the address
23. Generic options for transports
24. Address batching in local transports
25. The appendfile transport
25.1. The file and directory options
25.2. Private options for appendfile
25.3. Operational details for appending
25.4. Operational details for delivery to a new file
25.5. Maildir delivery
25.6. Mailstore delivery
25.7. Non-special new file delivery
26. The autoreply transport
26.1. Private options for autoreply
27. The lmtp transport
28. The pipe transport
28.1. Returned status and data
28.2. How the command is run
28.3. Environment variables
28.4. Private options for pipe
28.5. Using an external local delivery agent
29. The smtp transport
29.1. Multiple messages on a single connection
29.2. Use of the $host variable
29.3. Private options for smtp
29.4. How the value of hosts_max_try is used
30. Address rewriting
30.1. Testing the rewriting rules that apply on input
30.2. Rewriting rules
30.3. Rewriting patterns
30.4. Rewriting replacements
30.5. Rewriting flags
30.6. Flags specifying which headers and envelope addresses to rewrite
30.7. The SMTP-time rewriting flag
30.8. Flags controlling the rewriting process
30.9. Rewriting examples
31. Retry configuration
31.1. Retry rules
31.2. Retry rules for specific errors
31.3. Retry rule parameters
31.4. Retry rule examples
31.5. Timeout of retry data
31.6. Long-term failures
31.7. Ultimate address timeout
32. SMTP authentication
32.1. Generic options for authenticators
32.2. Authentication on an Exim server
32.3. Testing server authentication
32.4. Authenticated senders
32.5. Authentication by an Exim client
33. The plaintext authenticator
33.1. Using plaintext in a server
33.2. The PLAIN authentication mechanism
33.3. The LOGIN authentication mechanism
33.4. Support for different kinds of authentication
33.5. Using plaintext in a client
34. The cram_md5 authenticator
34.1. Using cram_md5 as a server
34.2. Using cram_md5 as a client
35. The spa authenticator
35.1. Using spa as a server
35.2. Using spa as a client
36. Encrypted SMTP connections using TLS/SSL
36.1. OpenSSL vs GnuTLS
36.2. Configuring an Exim server to use TLS
36.3. Requesting and verifying client certificates
36.4. Configuring an Exim client to use TLS
36.5. Multiple messages on the same encrypted TCP/IP connection
36.6. Certificates and all that
36.7. Certificate chains
36.8. Self-signed certificates
37. Access control lists
37.1. Testing ACLs
37.2. Specifying when ACLs are used
37.3. ACL return codes
37.4. Unset ACL options
37.5. Data for message ACLs
37.6. Data for non-message ACLs
37.7. Use of the ACL selection options
37.8. Format of an ACL
37.9. ACL variables
37.10. Condition and modifier processing
37.11. ACL modifiers
37.12. ACL conditions
37.13. Address verification
37.14. Callout verification
37.15. Additional parameters for callouts
37.16. Callout caching
37.17. Sender address verification reporting
37.18. Redirection while verifying
37.19. Using an ACL to control relaying
37.20. Checking a relay configuration
38. Adding a local scan function to Exim
38.1. Building Exim to use a local scan function
38.2. API for local_scan()
38.3. Configuration options for local_scan()
38.4. Available Exim variables
38.5. Structure of header lines
38.6. Structure of recipient items
38.7. Available Exim functions
38.8. More about Exim's memory handling
39. System-wide message filtering
39.1. Specifying a system filter
39.2. Testing a system filter
39.3. Contents of a system filter
39.4. Additional variable for system filters
39.5. Defer, freeze, and fail commands for system filters
39.6. Adding and removing headers in a system filter
39.7. Setting an errors address in a system filter
39.8. Per-address filtering
40. Customizing bounce and warning messages
40.1. Customizing bounce messages
40.2. Customizing warning messages
41. Some common configuration requirements
41.1. Sending mail to a smart host
41.2. Using Exim to handle mailing lists
41.3. Syntax errors in mailing lists
41.4. Re-expansion of mailing lists
41.5. Closed mailing lists
41.6. Virtual domains
41.7. Multiple user mailboxes
41.8. Simplified vacation processing
41.9. Taking copies of mail
41.10. Intermittently connected hosts
41.11. Exim on the upstream server host
41.12. Exim on the intermittently connected client host
42. SMTP processing
42.1. Outgoing SMTP and LMTP over TCP/IP
42.2. Errors in outgoing SMTP
42.3. Variable Envelope Return Paths (VERP)
42.4. Incoming SMTP messages over TCP/IP
42.5. Unrecognized SMTP commands
42.6. Use of non-mail SMTP commands
42.7. SMTP||non-mail commands
42.8. The
VRFY
and
EXPN
commands
42.9. The
ETRN
command
42.10. Incoming local SMTP
42.11. Outgoing batched SMTP
42.12. Incoming batched SMTP
43. Message processing
43.1. Unqualified addresses
43.2. The UUCP From line
43.3. Resent- header lines
43.4. The Bcc: header line
43.5. The Date: header line
43.6. The Delivery-date: header line
43.7. The Envelope-to: header line
43.8. The From: header line
43.9. The Message-ID: header line
43.10. The Received: header line
43.11. The Return-path: header line
43.12. The Sender: header line
43.13. Adding and removing header lines
43.14. Constructed addresses
43.15. Case of local parts
43.16. Dots in local parts
43.17. Rewriting addresses
44. Log files
44.1. Where the logs are written
44.2. Logging to local files that are periodically ``cycled''
44.3. Datestamped log files
44.4. Logging to syslog
44.5. Log line flags
44.6. Logging message reception
44.7. Logging deliveries
44.8. Discarded deliveries
44.9. Deferred deliveries
44.10. Delivery failures
44.11. Fake deliveries
44.12. Completion
44.13. Summary of Fields in Log Lines
44.14. Other log entries
44.15. Reducing or increasing what is logged
44.16. Message log
45. Exim utilities
45.1. Finding out what Exim processes are doing (exiwhat)
45.2. Selective queue listing (exiqgrep)
45.3. Summarising the queue (exiqsumm)
45.4. Extracting specific information from the log (exigrep)
45.5. Cycling log files (exicyclog)
45.6. Mail statistics (eximstats)
45.7. Checking access policy (exim_checkaccess)
45.8. Making DBM files (exim_dbmbuild)
45.9. Finding individual retry times (exinext)
45.10. Hints database maintenance (exim_dumpdb, exim_fixdb, exim_tidydb)
45.11. Mailbox maintenance (exim_lock)
46. The Exim monitor
46.1. Running the monitor
46.2. The stripcharts
46.3. Main action buttons
46.4. The log display
46.5. The queue display
46.6. The queue menu
47. Security considerations
47.1. Root privilege
47.2. Running Exim without privilege
47.3. Delivering to local files
47.4. IPv4 source routing
47.5. The VRFY, EXPN, and ETRN commands in SMTP
47.6. Privileged users
47.7. Spool files
47.8. Use of argv[0]
47.9. Use of %f formatting
47.10. Embedded Exim path
47.11. Use of sprintf()
47.12. Use of debug_printf() and log_write()
47.13. Use of strcat() and strcpy()
48. Format of spool files
49. Adding new drivers or lookup types
Concept Index
Option Index