Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What protocols and servers are involved in sending an email, and what are the steps?

Tags:

email

smtp

pop3

For the past few weeks, I've been trying to learn about just how email works. I understand the process of a client receiving mail from a server using POP pretty well. I also understand how a client computer can use SMTP to ask an SMTP server to send a message. However, I'm still missing something...

The way I understand it, outgoing mail has to make three trips:

  1. Client (gmail user using Thunderbird) to a server (Gmail)
  2. First server (Gmail) to second server (Hotmail)
  3. Second server (Hotmail) to second client (hotmail user using OS X Mail)

As I understand it, step one uses SMTP for the client to communicate. The client authenticates itself somehow (say, with USER and PASS), and then sends a message to the gmail server.

However, I don't understand how gmail server transfers the message to the hotmail server.

For step three, I'm pretty sure, the hotmail server uses POP to send the message to the hotmail client (using authentication, again).

So, the big question is: when I click send Mail sends my message to my gmail server, how does my gmail server forward the message to, say, a hotmail server so my friend can recieve it?

Thank you so much!

~Jason


Thanks, that's been helpful so far.

As I understand it, the first client sends the message to the first server using SMTP, often to an address such as smtp.mail.SOMESERVER.com on port 25 (usually).

Then, SOMESERVER uses SMTP again to send the message to RECEIVESERVER.com on port 25 (not smtp.mail.RECEIVESERVER.com or anything fancy).

Then, when the recipient asks RECEIVESERVER for its mail, using POP, s/he recieves the message... right?

Thanks again (especially to dr-jan),

Jason

like image 648
stalepretzel Avatar asked Aug 28 '08 16:08

stalepretzel


People also ask

What are the protocols of mail servers and what is the difference between them?

POP3 and IMAP are handling the incoming emails and they operate in different ways to retrieve or access your email messages. Thus, they are considered mail access protocols. On the other hand, the Simple Mail Transfer Protocol is behind the message transfer from server to server, or mail client to server.


2 Answers

The SMTP server at Gmail (which accepted the message from Thunderbird) will route the message to the final recipient.

It does this by using DNS to find the MX (mail exchanger) record for the domain name part of the destination email address (hotmail.com in this example). The DNS server will return an IP address which the message should be sent to. The server at the destination IP address will hopefully be running SMTP (on the standard port 25) so it can receive the incoming messages.

Once the message has been received by the hotmail server, it is stored until the appropriate user logs in and retrieves their messages using POP (or IMAP).

Jason - to answer your follow up...

Then, SOMESERVER uses SMTP again to send the message to RECEIVESERVER.com on port 25 (not smtp.mail.RECEIVESERVER.com or anything fancy).

That's correct - the domain name to send to is taken as everything after the '@' in the email address of the recipient. Often, RECEIVESERVER.com is an alias for something more specific, say something like incoming.RECEIVESERVER.com, (or, indeed, smtp.mail.RECEIVESERVER.com).

You can use nslookup to query your local DNS servers (this works in Linux and in a Windows cmd window):

nslookup
> set type=mx
> stackoverflow.com
Server:         158.155.25.16
Address:        158.155.25.16#53

Non-authoritative answer:
stackoverflow.com       mail exchanger = 10 aspmx.l.google.com.
stackoverflow.com       mail exchanger = 20 alt1.aspmx.l.google.com.
stackoverflow.com       mail exchanger = 30 alt2.aspmx.l.google.com.
stackoverflow.com       mail exchanger = 40 aspmx2.googlemail.com.
stackoverflow.com       mail exchanger = 50 aspmx3.googlemail.com.

Authoritative answers can be found from:
aspmx.l.google.com      internet address = 64.233.183.114
aspmx.l.google.com      internet address = 64.233.183.27
>                  

This shows us that email to anyone at stackoverflow.com should be sent to one of the gmail servers shown above.

The Wikipedia article mentioned (http://en.wikipedia.org/wiki/Mx_record) discusses the priority numbers shown above (10, 20, ..., 50).

like image 114
dr-jan Avatar answered Oct 10 '22 06:10

dr-jan


You're looking for the Mail Transfer Agent, Wikipedia has a nice article on the topic.

Within Internet message handling services (MHS), a message transfer agent or mail transfer agent (MTA) or mail relay is software that transfers electronic mail messages from one computer to another using a client–server application architecture. An MTA implements both the client (sending) and server (receiving) portions of the Simple Mail Transfer Protocol.

The terms mail server, mail exchanger, and MX host may also refer to a computer performing the MTA function. The Domain Name System (DNS) associates a mail server to a domain with mail exchanger (MX) resource records containing the domain name of a host providing MTA services.

like image 28
Ross Avatar answered Oct 10 '22 05:10

Ross