The pieces of the puzzle

Like all things on the internet, the actual process of mail delivery is broken up into small, simple components with well defined roles. Every time you send an e-mail, almost all these components are used, whether you realize it or not. Some mail systems combine many of these components, frequently to their detriment. In some cases though, particularly with that of the MAA and MDA, it makes sense to combine two components into one package (despite being separate programs) because they have a significant internal dependencies.

Mail User Agent

The Mail User Agent (MUA) is the one component of the system that we are all familiar with. The mail user agent is responsible for managing the user's interactions with the mail system. This typically is composed of display messages received and composing new messages to send. Modern MUA's typically also include some form of address book functionality, secure e-mail technology, as well as a variety of ancillary features which are not specific to the MUA domain. Examples include:

Mail Transport Agent

The Mail Transport Agent (MTA) is responsible for transporting e-mail to it's destination. This is done by a variety of Mail Transport Protocols. The overwhelmingly most common of these is SMTP (Simple Mail Transport Protocol) or ESMTP (Enhanced version of same). Alternative protocols were more common in the past, in particular UUCP (Unix-to-Unix CoPy) was very popular back before many mail servers were constantly on the Internet. The key part of an MTA (and the most complex part) is the ability to act as a mail router, determining which (if any) mail server to send a particular piece of mail. While their are a variety of MTA's out there, the overwhelmingly most popular one is Sendmail. Others include:

Mail Delivery Agent

The Mail Delivery Agent (MDA) is responsible for the actual delivery of messages into a user's mail box. While this may seem like a frivolous task, the important aspect of this component is that the delivery process is separate from the very complex MTA. The main concept that the MDA defines is the structure of the mail store. Modern MDA's usually include the ability to filter mail and in some cases to reformat it's contents. The latter is evil for various reasons. Here's a short list of MDA's, note that these programs are simple enough that they frequently don't merit their own website and are basically known by the standard path to get to them:

Mail Access Agent

The Mail Access Agent (MAA) is a new component added to the process about 15 years ago. MAA's are to a certain extent an extension of the MDA. MAA's provide remote access to a user's mail. MAA's speak one or more of a variety of Mail Access Protocols. The two most common protocols today are POP3 and IMAP4. As you can see, these protocols have evolved significantly over time. The key functions of an MAA are to authenticate a user and deliver e-mail, but some MAA's provide a much more sophisticated set of features for accessing one's e-mail. Examples of MAA's include:

A Diagram That Puts It all In Perspective

Understanding how this all fits together can be complicated, so I've made a diagram which describes a fairly typical scenario for delivering mail. Mail is being sent by someone using Eudora to someone else who reads their mail with Pine.

Diagram of the e-mail cycle

Steps:

  1. The message is composed in Eudora.
  2. The message is sent to the mail server (sendmail) of the ISP used by the Eudora user.
  3. The mail server locates the mail server (sendmail again) of the recipient's ISP and transfers the mail to it.
  4. The recipient's mail server delivers the mail to the recipient's mailbox using procmail.
  5. The recipient checks their mail with Pine. Pine gets the mail remotely from the ISP's mail server using POP3.
  6. Pine logs into the ISP's mail access agent (Qpopper) and requests the user's mail.
  7. Qpopper extracts the mail from the user's mailbox and delivers it to Pine.

Previous  Next