A complete e-mail system can consist of all the following components1:
- Mail Storage Agent (MSA)
- eg: qpopper
- Mail Retrieval Agent (MRA)
- eg: fetchmail, getmail
- Mail Delivery Agent (MDA)
- eg: procmail, maildrop
- eg: kbiff, gbiff, ixbiff, xbiff, wmbiff
- Mail User Agent (MUA)
- eg: mutt, pine, balsa, kmail,
evolution, tkrat, elm, mush, mh
- eg: less, more
- eg: vim, emacs
- OpenPGP Client2
- eg: PGP, GnuPG
- Signature Generator
- eg: signature, siggen
- Mail Transfer Agent (MTA)
- eg: exim, sendmail, qmail,
- List Server
- eg: listserv, majordomo
How these can fit together:
- My ISP's MSA holds e-mail sent to me.
- My MRA gets it from my ISP (using POP or IMAP).
- My vacation program could send an automated reply to all incoming e-mail (or just some).
- My MDA organises and filters my incoming e-mail.
- My biff lets me know that new e-mail has arrived.
- My MUA shows me a list of e-mail and allows me to deal with each appropriately by either reading:
- My OpenPGP client can decrypt e-mail or verify signatures.
- My pager allows me to read through an e-mail.
- My text editor (or word processor) allows me to write the e-mail.
- My signature generator adds a tagline.
- My OpenPGP client encrypts or signs the e-mail.
- My MUA passes the e-mail to my MTA which passes it to my ISP's MTA (using SMTP).
- If my e-mail was addressed to a mailing list, a list server will expand the address.
- My e-mail is received by someone else's ISP; GOTO 1.
This is an extreme example of a system that uses all possible components. The only required components are:
Quite often (moreso in Windows than Unix) some of these components are combined into a single program. For example, MUAs can often retrive and transfer e-mail themselves and include an internal pager, editor, OpenPGP client, and signature generator. There are also some servers that act as a MSA, MTA, and list server.
1: All examples are taken from Unix (where these components are more seperable) and I tried to include some of the most popular options. Please give additional examples under the specific node unless you are providing an example of a complete system.
2: In theory you could use a standard other than OpenPGP (even other than PKI!) to encrypt and sign your e-mail, but I've never heard of someone doing such a thing.