1.3 Email and sendmail
A
mail
user agent (MUA) is any of the many programs that users run to read,
reply to, compose, and dispose of email. Examples of an MUA include
the original Unix mail program (/bin/mail); the
Berkeley Mail program; its System V equivalent
(mailx); free software programs such as
mush, elm, and
mh; and commercial programs such as
Zmail. Examples of MUAs also exist for PCs.
Eudora and ClarisWorks are
two standalone MUAs. Netscape and
Explorer are web browsers that can also act as
MUAs. Many MUAs can exist on a single machine. MUAs sometimes perform
limited mail transport, but this is usually a very complex task for
which they are not suited. We won't be covering MUAs
in this book.
A mail transfer agent (MTA) is a highly specialized program that
delivers mail and transports it between machines, like the post
office does. Usually, there is only one MTA on a machine. The
sendmail program is an MTA.
Beginning with V8.10, sendmail also recognizes
the role of a mail submission agent (MSA), as defined in RFC2476.
MTAs are not supposed to alter an email's text,
except to add Received:,
Return-Path:, and other required headers. Email
submitted by an MUA might require more modification than is legal for
an MTA to perform, so the new role of an MSA was created. An MSA
accepts messages from an MUA, and has the legal right to heavily add
to, subtract from, and screen or alter all such email. An MSA, for
example, can ensure that all hostnames are fully qualified, and that
headers, such as Date:, are always included.
1.3.1 Other MTAs
The sendmail program is not the only MTA on the
block. Others have existed for some time, and new MTAs appear on the
scene every once in a while. Here we describe a few of the other
major MTAs:
- qmail
-
Stressing
modularity and security, qmail claims to be a
replacement for sendmail. The
qmail program is an open source offering,
available from http://www.qmail.org.
- Postfix
-
Written by Wietse
Venema, a security expert on the IBM Research staff,
Postfix is advertised to be a drop-in
replacement for sendmail that purports to
deliver email more quickly, conveniently, and safely. The
Postfix program is an open source offering,
available from http://www.postfix.com.
- Sun ONE Messaging Server
-
This MTA is a multithreaded commercial
product that purports to be faster and more scalable than
sendmail, and is part of a large commercial
offering. Information can be found at
http://www.sun.com.
- Sendmail Switch
-
This is the
same sendmail we describe here, but with
selected commercial enhancements, and a suite of support software
that forms a complete email solution. Additional information can be
found at http://www.sendmail.com.
Many other MTAs exist, some good and some not so good. We mention
only five here because, after all, this is a book about the open
source sendmail.
1.3.2 Why sendmail Is So Complex
In its simplest role, that of transporting mail from a user on one
machine to another user on the same machine,
sendmail is almost trivial. All vendors supply a
sendmail (and a configuration file) that will
accomplish this. But as your needs increase, the job of
sendmail becomes more complicated, and its
configuration file becomes more complex. On hosts that are connected
to the Internet, for example, sendmail should
use the DNS to translate hostnames into network addresses. Machines
with UUCP connections, on the other hand, need to have
sendmail run the uux
program.
The sendmail program needs to transport mail
between a wide variety of machines. Consequently, its configuration
file is designed to be very flexible. This concept allows a single
binary to be distributed to many machines, where the configuration
file can be customized to suit particular needs. This configurability
contributes to making sendmail complex.
When mail needs to be delivered to a particular user, for example,
the sendmail program decides on the appropriate
delivery method based on its configuration file. The decision process
might include the following steps:
If the recipient receives mail on the same machine as the sender,
deliver the mail using the /usr/sbin/mail.local
program.
If the recipient's machine is connected to the
sending machine using UUCP, use uux to send the
mail message.
If the recipient's machine is on the Internet, the
sending machine transports the mail using SMTP.
Otherwise, the mail message might need to be transported over another
network (such as BITNET) or possibly rejected.
|