Most of people in this generation would spend their time daily to send and receive emails. E-mail plays a vital role in our daily activities. As technology evolved email became the one of major communication tool. It may not cost you to send or receive a mail but there is an intricate process involved behind. You just need to press send button to send your message, your message goes through the complex machanism to get received by recipient.
The invention of email was started in 1961. There were more than couple of people to list as the inventors of email.
The evolution of email started from messaging users on the same computer, then message transition between computer then message among multi user and multi computer, finally email. Email has became revolutionary tool for communication. Now a days it is part of our daily life. We will see how email really works.
There are different components involved in the email system. There are few abbreviated terms. Having idea about terminology and abbreviations will help you to better understand the system.
|MSA||Mail Submission Agent|
|MTA||Mail Transfer Agent|
|MDA||Mail Delivery Agent|
|DNS||Domain Name System|
MUA is the software that user will use either to send or retrieve the mail(message) from the server.
MSA is the piece of software which is installed on mail server. Where it is responsible to transfer the message to destination or mail server called MTA (Mail Transfer Agent)
MTA is the Mail Transfer Agent. It is the piece software on the server which is responsible to route the mail to destination mail server. So we called it as mail router, mail server etc. Here are few popular MTA(Mail Server) softwares : postfix, qmail, Courier Mail and sendmail.
postfix is the one which is widely used, and it comes with many linux distributions.
You can find the exhaustive mail server softwares list here
There are different protocol involved in email system. All of them are required to get email delivered to the recipient. They are building blocks of email system. Those protocols are,
|SMTP||Simple Mail Transport Protocol|
|IMAP||Internet Message Access Protocol|
|POP||Post Office Protocol|
|DNS||Domain Name System (Protocol)|
How does email work?
This sections will get you the idea about how these protocols work together to deliver the mail to recipient. Here is the abstract overview of email system.
The above figure will give you simple abstract overview of email system. As described in the figure. SMTP is the protocol which is used to push or send an email to server by sender. IMAP and POP are the protocols which are used to check or retrieve message from server by recipient. The recipient MUA is configured to use either IMAP or POP or BOTH (IMAP & POP). The protocol IMPA is bidirectional where POP is unidirectional. We will see more about POP and IMAP in later section.
As per the above figure(abstract overview) you can sense that, the sender email client(MUA) will send message using SMPT protocol to mail server (MTA). The mail server will check for the destination if it finds the one it will connect to destination mail server, that is other MTA/MDA and will pass the message(mail) using SMTP protocol. The recipient server will store the received mail locally. Later if recipient will check the mail by using his mail client by connecting to his mail server.
Now let’s see flow of email in detail with following figure
Here Alice is sending email to Bob(firstname.lastname@example.org) by using her email client. Where she will push her message to server using SMTP to send Bob. The mail server will determine the destination by getting the MX record for the destination server. The Alice mail server will check for the domain after @ in the to(recipient) mail address to get the MX record. Once Alice(sender) mail server received the result from DNS for the DNS query to get MX record, this server will connect to destination mail server and will delivery the mail (message) using SMTP protocol. The destination mail server will store the message locally. Bob will check the newly arrived mails by using his mail client.
I would like to illustrate this process even more by using following figure.
In the above figure there are new components introduced, those are MSA, MDA and extra MX servers.
MSA is the Mail Submission agent where it is piece of software it will receive the message from MUA. It uses the same protocol SMTP and port 25. Practically most MTAs perform the function of MSA so you may assume MTA as MSA.
The MDA means mail delivery agent or message delivery agent is a computer software component that is responsible for the delivery of e-mail messages to a local recipient’s mailbox. You may not need to get confused, most of MTAs perform the MDA functionality as well though there are softwares which are only designed to work as MDA.
Here, you can see that practically there will be more than 1 mail server(MX SERVER)s. All other MX servers are for backup purpose. When sender query DNS for MX record it may get more that one MX server with priorities. Here is the sample output of DNS query for gmail MX records. Gmail is having 5 MX servers with different priorities.
$ dig gmail.com MX ; <<>> DiG 9.8.3-P1 <<>> gmail.com MX ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7760 ;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;gmail.com. IN MX ;; ANSWER SECTION: gmail.com. 1206 IN MX 20 alt2.gmail-smtp-in.l.google.com. gmail.com. 1206 IN MX 5 gmail-smtp-in.l.google.com. gmail.com. 1206 IN MX 10 alt1.gmail-smtp-in.l.google.com. gmail.com. 1206 IN MX 40 alt4.gmail-smtp-in.l.google.com. gmail.com. 1206 IN MX 30 alt3.gmail-smtp-in.l.google.com. ;; Query time: 18 msec ;; SERVER: 192.168.4.1#53(192.168.4.1) ;; WHEN: Sun Feb 14 09:42:23 2016 ;; MSG SIZE rcvd: 150
The above result is the out put of command line utility dig. Where we use this utility to query the DNS. In the output you would see something like below in the right side of ANSWER SECTION.
20 alt2.gmail-smtp-in.l.google.com. 5 gmail-smtp-in.l.google.com. 40 alt4.gmail-smtp-in.l.google.com. 10 alt1.gmail-smtp-in.l.google.com. 30 alt3.gmail-smtp-in.l.google.com.
Here you would see some numbers in front of domains. Those numbers will decide the priority of MX record. The domain which is having very lowest number associated will have highest priority. Here gmail-smtp-in.l.google.com MX record having highest priority cause it having lowest number associated, that is 5. So the sender MTA will try to connect with most prioritized MX first. If it is down or so, it will try to connect with next MX (Mail Exchange server). As a result mail will be delivered with no down time.
Once the mail is received by the destination mail server, it will store the message in the mail store. There are two types of mail stores used by various mail servers(softwares). Those are,
- Mail DIR
- Mail Box
Locally stored mail will be accessed(fetched) by the recipient client using either POP or IMAP.
Protocols POP and IMAP
POP and IMAP are application layer protocols, as described above POP and IMAP are the protocols which are used to fetch or access the mails by recipient email client (MUA). Both protocols are different, they server for different purpose.
The protocol POP means Post Office Protocol and POP3 is it’s version 3. As the name describes, this protocol is used to download the message from the server by the client. Once message is downloaded form the server, it will be removed unless you set the flag leave a copy on server just how post card is delivered to destination. If you are only the one who will access mailbox from one location the POP3 suites well. This will also save some memory on server. So, if use POP3 you can’t access the mail using different clients.
Unlike POP3 the IMAP won’t download the message by deleting it on server. It will just access the message like browser does webpages. So it is handy if you use multiple clients from different locations.