SMTP server (MTA): e.g., Postfix, sendmail. This component transmits, relays and receives email messages.
It mostly handles the network protocol. Many MTAs have hooks to interact with optional and/or modular
components.
MDA: e.g., procmail. Most MTAs are “pure”, which means they only handle the network traffic. When a
message is received by an MTA, it needs to be stored somewhere in the file system. This is done by an MDA.
Many MDAs can handle both the mbox and the Maildir conventions.
Mail retrieval agent: courier-imap, courier-pop, ipopd, etc. This is a component that permits the retrieval of
messages using a network protocol (such as POP3 and IMAP). As a result, an MRA is also known as a POP3
server or an IMAP server. In the case of IMAP servers, a lot of operations can be done remotely, such as the
creation of email folder, message manipulation and etc. Note that this component must agree with the MDA
to use the same convention of message storage.
Amavis (optional): this is an optional component that can interact with an MTA. An MTA passes a received
message to amavis to analyze it for virii and spam content. Amavis does not contain any spam or virus detection
logic, it is just the middleman between the MTA and the scanners.
Antispam: SpamAssassin (optional). This is a component that analyzes email messages for spam content.
Antivirus: ClamAV (optional). This is a component that scans a message for viral content.
Webmail interface: Openwebmail, Squirrelmail (optional). This is a component that provides email access via
a web-based interface.