In general, all email applications fall into at least one of three classifications. Each of these classifications plays a specific role in the process of moving and managing email messages. While most users are only aware of the specific email program they use to receive and send messages, each of these types is important for making sure email arrives at the correct destination.
A Mail User Agent (MUA) is a program that, at the very least, allows a user to read and compose email messages. An MUA is often referred to as an email client. Of course, many MUAs help users do more than that, including retrieving messages via the POP or IMAP protocols, setting up mailboxes to store messages, or helping present new messages to a Mail Transfer Agent program that will deliver them to their final destination.
MUA programs may be graphical, such as Mozilla Mail, or have a very simple, text-based interface, such as mutt or pine.
A Mail Transfer Agent (MTA) transfers email messages between machines using SMTP. A message may involve several MTAs as it moves to its intended destination. Most users are totally unaware of the presence of MTAs, even though every email message is sent through at least one MTA.
While the delivery of messages between machines may seem rather straightforward, the entire process of deciding if a particular MTA can or should accept a message for delivery to a remote host is quite complicated. In addition, due to problems from spam, use of a particular MTA is usually restricted by the MTA's own configuration or network access to the system running it.
Many of the larger and more complex MUAs can also be used to send email. However, this action should not be confused with the actions of a true MTA. In order for users not running their own MTA to move outbound messages off of their machine and onto a remote machine for delivery, they must use a capacity in the MUA that transfers the message to an MTA they are authorized to use. However, the MUA does not directly deliver the message to the intended recipient's email server — that role is reserved for the MTA.
Red Hat Linux uses Sendmail as its default MTA, though others may be used in its place. It is important that you disable the currently running MTA before starting up another one, as both will try to claim port 25 and one or both of the MTAs will then fail to start.
A Mail Delivery Agent (MDA) is utilized by the MTA to deliver email to a particular user's mailbox. In many cases, an MDA is actually a Local Delivery Agent (LDA), such as /bin/mail or procmail. However, Sendmail can also play the role of an MDA, such as when it accepts a message for a local user and appends it to their email spool file. Any program that actually handles a message for delivery to the point where it can be read by an MUA can be considered an MDA. Note that MDAs do not transport messages between systems or interface with the end user.
Many users do not directly utilize MDAs, because only MTAs and MUAs are necessary to send and receive email. However, some MDAs may be used to sort messages before they are read by a user, which is a big help if you receive a lot of email.