11.2. How Is Mail Delivered?
Generally, you will compose mail using a
program such as mail or
mailx, or more sophisticated ones such as
mutt, tkrat, or
pine. These programs are called
mail user
agents (MUAs). If you send a mail message, the
interface program will in most cases hand it to another program for
delivery. This is called the mail transport agent (MTA). On most
systems the same MTA is used for both local and remote delivery and
is usually invoked as /usr/sbin/sendmail, or on
non-FSSTND compliant systems as
/usr/lib/sendmail.
Local delivery of mail is, of course, more
than just appending the incoming message to the
recipient's mailbox. Usually, the local MTA
understands aliasing (setting up local recipient addresses pointing
to other addresses) and forwarding (redirecting a
user's mail to some other destination). Also,
messages that cannot be delivered must usually be
bouncedthat is, returned to the sender
along with some error message. For remote delivery,
the transport software used depends on the nature of the link. Mail
delivered over a network using TCP/IP commonly uses
Simple Mail
Transfer Protocol (SMTP),
which is described in RFC 821. SMTP was designed to deliver mail
directly to a recipient's machine, negotiating the
message transfer with the remote side's SMTP daemon.
Today it is common practice for organizations to establish special
hosts that accept all mail for recipients in the organization and for
that host to manage appropriate delivery to the intended recipient.