Exim: The Mail Transfer Agent

Front Cover
"O'Reilly Media, Inc.", 2001 - Computers - 611 pages
2 Reviews

Exim delivers electronic mail, both local and remote. It has all the virtues of a good postman: it's easy to talk to, reliable, efficient, and eager to accommodate even the most complex special requests. It's the default mail transport agent installed on some Linux systems, runs on many versions of Unix, and is suitable for any TCP/IP network with any combination of hosts and end-user mail software.

Exim is growing in popularity because it is open source, scalable, and rich in features such as the following:

  • Compatibility with the calling interfaces and options of Sendmail (for which Exim is usually a drop-in replacement)
  • Lookups in LDAP servers, MySQL and PostgreSQL databases, and NIS or NIS+ services
  • Support for many kinds of address parsing, including regular expressions that are compatible with Perl 5
  • Sophisticated error handling
  • Innumerable tuning parameters for improving performance and handling enormous volumes of mail

Best of all, Exim is easy to configure. You never have to deal with ruleset 3 or worry that a misplaced asterisk will cause an inadvertent mail bomb.

While a basic configuration is easy to read and can be created quickly, Exim's syntax and behavior do get more subtle as you enter complicated areas like virtual hosting, filtering, and automatic replies. This book is a comprehensive survey that provides quick information for people in a hurry as well as thorough coverage of more advanced material.

  

What people are saying - Write a review

We haven't found any reviews in the usual places.

Selected pages

Contents

Introduction
1
How Internet Mail Works
5
Different Types of MTA
10
Internet Message Standards
11
The Message On the Wire
13
Summary of the SMTP Protocol
15
Forgery
18
Checking Incoming Mail
19
Routing and Directing Errors
289
Computing Retry Times
292
Using Retry Times
293
Retry Rule Examples
294
Timeout of Retry Data
295
Ultimate Address Timeout
297
Message Reception and Policy Controls
302
Message Sources
303

Overview of the DNS
21
DNS Records Used for Mail Routing
24
Related DNS Records
25
Common DNS Errors
27
Role of the Postmaster
29
Exim Overview
30
Exims Queue
31
Exim Processes
32
How Exim Is Configured
33
How Exim Delivers Messages
35
Local and Remote Addresses
37
Processing an Address
38
A Simple Example
40
Complications While Directing and Routing
46
Complications During Delivery
48
Complications After Delivery
49
Exim Operations Overview
52
Watching Exim at Work
53
The Runtime Configuration File
54
The Default Qualification Domain
61
Handling Frozen Bounce Messages
62
Limiting Message Sizes
65
Controlling the Number of Delivery Processes
66
Large Installations
67
Extending the Delivery Configuration
71
Virtual Domains
74
Mailing Lists
78
Using an External Local Delivery Agent
85
Multiple User Addresses
87
Mixed LocalRemote Domains
88
Delivering to UUCP
90
Ignoring the Local Part in Local Deliveries
91
Handling Local Parts in a CaseSensitive Manner
93
Scanning Messages for Viruses
94
Modifying Message Bodies
99
Options Common to Directors and Routers
101
Conditional Running of Routers and Directors
102
Changing a Drivers Successful Outcome
107
Adding Data for Use by Transports
108
Debugging Directors and Routers
113
Summary of DirectorRouter Generic Options
114
The Directors
118
Conditional Running of Directors
119
Optimizing SingleLevel Aliasing
120
Adding Data for Use by Transports
121
The aliasfile Director
133
The forwardfile Director
138
The localuser Director
146
The smartuser Director
147
The Routers
150
Domains That Route to the Local Host
151
The lookuphost Router
154
The domainlist Router
158
The ipliteral Router
169
The Transports
173
Options Common to All Transports
174
The smtp Transport
184
Environment for Local Transports
194
Options Common to the appendfile and pipe Transports
196
The appendfile Transport
203
The pipe Transport
222
The Imtp Transport
231
The autoreply Transport
232
Message Filtering
238
Examples of Filter Commands
239
Filtering Compared with an External Delivery Agent
241
Setting Up a User Filter
242
Testing Filter Files
244
Format of Filter Files
246
Significant Actions
248
Filter Commands
249
Delivery Commands
250
Mail Commands
253
Logging Commands
256
The finish Command
257
Additional Features for System Filters
262
Shared Data and Exim Processes
265
Message Files
266
Locking Message Files
268
Hints Files
269
Log Files
271
Process Relationships
272
The Daemon Process
273
Reception Processes
277
Queue Runner Processes
279
Delivery Processes
281
Summary of Message Handling Process Types
283
Delivery Errors and Retrying
284
Remote Delivery Errors
285
Local Delivery Errors
288
Messages from Local Processes
304
Unqualified Addresses from Remote Hosts
307
Checking a Remote Host
308
Checking Remote Sender Addresses
314
Checking Recipient Addresses
322
Checking Header Line Syntax
326
Customizing Prohibition Messages
332
Incoming Message Processing
333
Rewriting Addresses
339
Configured Rewriting
340
Rewriting Rules
343
Rewriting Patterns
345
Rewriting Flags
347
A Further Rewriting Example
351
Testing Rewriting Rules
354
Authentication Encryption and Other SMTP Processing
355
Encrypted SMTP Connections
367
SMTP over TCPIP
372
Local SMTP
376
Batched SMTP
377
File and Database Lookups
378
SingleKey Lookup Types
379
QueryStyle Lookup Types
382
NIS+
383
LDAP
384
MySQL and PostgreSQL
386
DNS Lookups
388
Temporary Errors in Lookups
389
Partial Matching in SingleKey Lookups
390
Lookup Caching
391
String Expansion
392
Variable Substitution
394
Operations on Substrings
395
Character Translation
398
Text Substitution
399
Lookups in Expansion Strings
406
Extracting Fields from Substrings
410
IP Address Masking
412
Quoting
413
Reexpansion
416
Running Embedded Perl
417
Testing String Expansions
418
Domain Host and Address Lists
420
Negative Items in Lists
421
List Items in Files
422
Lookup Items in Lists
423
Host Lists
426
Address Lists
432
Miscellany
435
Privileged Users
442
RFC Conformance
444
Timestamps
449
Checking Spool Space
450
Control of DNS Lookups
451
Miscellaneous Controls
456
CommandLine Interface to Exim
458
Input Mode Control
459
Additional Message Data
462
Immediate Delivery Control
464
Error Routing
465
Queue Runner Processes
466
Configuration Overrides
469
Watching Exims Queue
470
Message Control
471
Testing Options
473
Options for Debugging
478
Terminating the Options
479
Calling Exim by Different Names
480
Administering Exim
482
Log Files
483
Format of Main Log Entries
488
Cycling Log Files
493
Extracting Information from Log Files
494
Watching What Exim is Doing
500
The Exim Monitor
503
Maintaining Alias and Other Dataflles
511
Hints Database Maintenance
512
Mailbox Maintenance
514
Building and Installing Exim
516
Prerequisites
517
Configuration for Building
518
The Building Process
526
Testing Before Turning On
527
Turning Exim On
529
Installing Documentation in Info Format
530
Summary of String Expansion
533
Regular Expressions
548
Index
571
Copyright

Common terms and phrases

About the author (2001)

Philip Hazel has a Ph.D. in applied mathematics, but has spent the last 30 years writing general-purpose software for the Computing Service at the University of Cambridge in England. Since moving from an IBM mainframe to Unix about ten years ago, he has gotten more and more involved with email. Philip started developing Exim in 1995 and is its sole author.

Bibliographic information