kansas-city-pm-list  

[book review] Exim: the mail transfer agent, by Philip Hazel

David L. Nicol
Fri, 17 Aug 2001 15:51:49 -0700




_Exim, the MTA_ would be an appropriate book for someone who does not know
anything about e-mail and suddenly needs to manage a server, and EXIM
would be a good e-mail server for this person to use.  EXIM is the default
MTA in Debian and other Unix distributions too.



Exim, the MTA, has been written entirely, except for contributed patches,
by Philip Hazel, who continues to maintain it.  His book

http://www.amazon.com/exec/obidos/ASIN/0596000987/tipjartransactioA

is a history-of and tutorial document meant to accompany the
comprehensive and accurate reference materials that come with the
source code releases of the software.

Exim is a comprehensive, modern MTA, with all the features that
made sense to Mr. Hazel to include in it, and the expandability of
a mature open-source project.

The second chapter, "how internet mail works," is a very nice introduction
to SMTP, RFCs, DNS, and other general technical background, without
introducing detail irrelevant to the task of operating a mail server.

The third chapter, Exim Overview, which introduces us to Routing,
Directing,
and the exim queue, is structured as a list of the general problems 
facing any MTA developer and how Exim handles each one.

Chapter 4, Exim Operations Overview, provides more details, suggests
we run the eximon GUI to see everything as it happens, decribes the
configuration
files, describes the configuration options, mentions the motivations for
choosing each, includes nit-picky footnotes such as an aside about MailDir
format locking the delivery directory being the responsbility of the file
system,
which is certainly up to the task,  and finishes with a suggested design
for
a very high volume EXIM installation suitable for the complete in- and
out-bound e-mail needs of a medium-sized island nation, for instance.

Chapter 5, Extending The Delivery Configuration, is concerned with having
multiple domains handled by your exim box, virtual domains, mailing lists,
piping to external programs, complex real-world delivery scenarios, virus
scanning, and, if you are a lawyer or "marketroid" who wants to add
disclaimers
or advertisements to every message that goes through your server, Hazel
reluctantly tells you how.

Chapters 6, 7, 8, 9 : various details

such as message size, retry policy, -- store-and-forward is not the ideal
way
to deliver mail to a machine with a dynamic IP address (store-and-fetch is)
but
Exim provides features that make it possible -- are discussed in these
chapters.
All the mailbox formats I
had ever heard of, and some new ones, such as writing to BSMTP files for
later
processing by something else, are mentioned.  Exim supports quota warnings
when
user mailboxes are getting nearly full.  An interval for autoreplies can be
set
to prevent sending vacation notices in response to every incoming e-mail,
by only
sending one to each unique recipient per interval.

Chapter 10: message filtering

Exim provides an extensive filtering language for use by the users
receiving
the mail, so they can learn it instead of installing something like
procmail
or multinet "Deliver" or using the message rules features of their MUA.  It
is described.

Chapter 11: Shared Data and Exim Processes
        an introduction to Exim internals.

Chapter 12: Delivery errors and retrying
         discusses the exim retry rules, and the settable fallback times, and
issues with infrequently accessed hosts and intermittently up hosts and
dynamic
hosts.

Chapter 13: Message Reception and Policy Controls
        Spam, like rain, is a fact of life, and Exim attempts to be your umbrella.
Configuration options are available to do EHLO verification, even though
this
practice is contrary to the relevant RFC, to use RBL services, to do sender
verifiy
callbacks, to do a wide range of sender verify features, to allow relaying
under
a wide variety of conditions, including, for example, only over secure
encrypted links.

Chapter 14: Rewriting addresses
        These are simpler and more powerful than sendmail's.  Taking the existence
of "rewriting" within the table of contents of this book to indicate
anything negative
would be an error.

Chapter 15: Authentication, Encryption and other SMTP processing
        Recent years have seen a variety of methods for securing mail servers
while
still providing access to the proper in-crowd.  Exim supports them all, and
any
others you can devise.

Chapter 16: File and database lookups
        Data may be stored in files or databases or remote databases.  Exim
supports
SQL, NIS, NIS+, LDAP, et cetera, and robustly handles the possible problems
with
each.  Data is cached to avoid overworking the servers. PAM services,
curiously, are dealt
with in chapter 17.

Chapter 17: String Expansion 
        Exim configuration files have their own expansion language, which is very
powerful, and can be extended so far as to embed a Perl interpreter into
it, in
the unlikely event that what you want to set up cannot be done with Exim's
configuration language, with its ability to query a variety of data
sources, directly.

Chapter 18: Domain, Host and Address Lists
        Lists can be considered a language for defining membership predicates. "Is
this item in the list?"
is the question we set up a list with the expectation of later answering. 
Hazel clearly
defines the syntax and semantics of Lists, for exim's purposes. Negative
entries, that is, explicit
declaration of items not in a list, is available.
Speed/size/maintainability tradeoffs
are discussed.  Identd lookups are discussed, as is the configuration
option for limiting
the client hosts against which rfc1413 queries are performed.  Certain
items in certain lists
may be made case-sensitive.

Chapter 19: Miscellany
        Starts with a discussion of security, which starts with background on the
Unix EUID/RUID
distinction, then moves to the various security modes Exim can operate in
and the arguments
for each. Then there is a section on RFC conformance, including discussions
on 8-bit messages,
address syntax stricture, domain literals, source routing,
canonicalization, broken MX records,
about which EXIM agrees with qmail in not allowing their use but differs in
that exim provides a clear
description of the problem in the report of delivery failure, time zones
for logging, disk space checks,
bounce (and warning) message copy and content configuration and
customization, initial connection banner,
and client inactivity timout.

Chap 20: command line interface to Exim
        Rich, full-featured, mostly sendmail-compatible.  Queued messages can be
worked with by
message handle, to do neat tricks like adding recipients to an
already-queued message.
The queue can be queried.

Chap 21: Administering EXIM
        The fact that if you're running a server, you're going to have to cycle
the logs, is not
left implicit.  I like that. Tools to cook the exim logs come with the
distribution and are
discussed in this chapter, as are tools to query Exim's state at any given
moment.

        The "eximon" GUI is discussed.  Exim comes with a GUI wrapper for the
command line utilities
that also shows impressive-looking continuous load histograms.

Chap 22: Building and Installing Exim
        Discussion of how to download, build and install the package.  And upgrade
to newer releases,
if you're not already using a packaging system such as BSD ports or RPM or
Debian.


In conclusion, if I wasn't already in the habit of setting up qmail on new
machines
that appear within my aegis, a habit that, once I got the hang of it, has
reduced
the care and feeding of my e-mail servers to an absolute minimum, I might
select
exim as an MTA to specialize in.  To restate, it's too late for me, but
save yourself!




-- 
                                           David Nicol 816.235.1187
"... raised indoors and tested by certified technicians"

  • [book review] Exim: the mail transfer agent, by Philip Hazel David L. Nicol