发送电子邮件涉及哪些协议和服务器,其步骤是什么?

15
在过去的几周里,我一直在尝试了解电子邮件是如何工作的。我很好地理解了客户端使用POP从服务器接收邮件的过程和客户端计算机如何使用SMTP请求SMTP服务器发送消息。但是,我还缺少一些东西...
据我了解,发件人必须经过三个步骤:
1.客户端(gmail用户使用Thunderbird)发送给服务器(Gmail) 2.第一台服务器(Gmail)发送到第二台服务器(Hotmail) 3.第二台服务器(Hotmail)发送到第二个客户端(Hotmail用户使用OS X Mail)
据我了解,第一步使用SMTP进行客户端通信。 客户端以某种方式进行身份验证(例如,使用USER和PASS),然后将消息发送到Gmail服务器。
然而,我不明白gmail服务器如何将消息传递给hotmail服务器。
对于第三步,我相当确定,hotmail服务器使用POP向hotmail客户端发送消息(再次使用身份验证)。
所以,最大的问题是:当我点击发送邮件将我的消息发送到我的gmail服务器时,我的gmail服务器如何将消息转发到比如一个hotmail服务器,以便我的朋友可以收到它?
非常感谢!
~Jason
感谢您迄今为止的帮助。
据我了解,第一个客户端使用SMTP将消息发送到第一个服务器,通常是到类似smtp.mail.SOMESERVER.com 的地址,端口号为25(通常)。
然后,SOMESERVER再次使用SMTP将消息发送到RECEIVESERVER.com的25号端口(不是smtp.mail.RECEIVESERVER.com或其他花哨的东西)。
然后,当收件人使用POP要求RECEIVESERVER的邮件时,他/她会收到该消息... 对吗?
再次感谢(特别感谢dr-jan)!
Jason
7个回答

18

通过使用DNS查找目标邮件地址(例如hotmail.com)域名部分的MX记录,Gmail上的SMTP服务器(接受来自Thunderbird的邮件)将消息路由到最终接收者。DNS服务器将返回一个IP地址,该消息应发送到该地址上正在运行SMTP(标准端口25)的服务器以接收传入消息。

一旦hotmail服务器接收到邮件,它会存储邮件直至适当的用户使用POP(或IMAP)登录并检索邮件。Jason - 回答你的后续问题......

然后,SOMESERVER再次使用SMTP通过端口25将消息发送到RECEIVESERVER.com(不是smtp.mail.RECEIVESERVER.com或其他花哨的东西)。

很好 - 发送到的域名是在收件人电子邮件地址中“@”后面的所有内容。通常,RECEIVESERVER.com是更具体的别名,例如incoming.RECEIVESERVER.com(或者确实是smtp.mail.RECEIVESERVER.com)。

您可以使用nslookup查询本地DNS服务器(这适用于Linux和Windows cmd窗口):

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
>                  

这告诉我们应将发送给stackoverflow.com上任何人的电子邮件发送到上面显示的其中一个gmail服务器。

提到的维基百科文章(http://en.wikipedia.org/wiki/Mx_record)讨论了上面显示的优先级数字(10、20、...、50)。


5

您正在寻找邮件传输代理,维基百科有一篇关于这个主题的好文章

在Internet消息处理服务(MHS)中,消息传输代理或邮件传输代理(MTA)或邮件中继是一种软件,它使用客户端 - 服务器应用程序架构将电子邮件消息从一台计算机传输到另一台计算机。 MTA实现了简单邮件传输协议的客户端(发送)和服务器(接收)部分。

术语邮件服务器,邮件交换器和MX主机也可能指执行MTA功能的计算机。域名系统(DNS)通过包含提供MTA服务的主机的域名的邮件交换器(MX)资源记录将邮件服务器与域关联起来。


5
您可能也想知道为什么GMail到HotMail链接使用SMTP,就像您的Thunderbird客户端一样。换句话说,既然您的客户端可以通过SMTP发送电子邮件,并且可以使用DNS获取hotmail.com的MX记录,为什么不直接将其发送到那里,跳过gmail.com呢?
有一些原因,有些是历史原因,有些是出于安全考虑。在最初的问题中,假设您的Thunderbird客户端使用用户名和密码登录。这通常并非如此。SMTP实际上不需要登录即可发送邮件。而SMTP没有办法告诉谁真正发送了邮件。因此,垃圾邮件应运而生!
不幸的是,仍然有许多SMTP服务器允许任何人连接并发送邮件,盲目地信任发件人是他们所声称的人。这些服务器称为“开放中继”,由于它们产生的垃圾邮件而经常被其他邮件服务器更聪明的管理员列入黑名单。
负责任的SMTP服务器管理员设置他们的服务器仅在以下特殊情况下接受投递邮件:1)邮件来自“自己”的网络,或2)邮件被发送到“自己”的网络,或3)用户提供证书以确认他是可信的发件人。情况#1可能是您在工作时发送电子邮件时发生的情况。您的计算机在受信任的网络上,因此可以向任何人发送电子邮件。许多公司邮件服务器仍不需要身份验证,因此您可以冒充您办公室的任何人。有趣!情况#2是当有人给您发送电子邮件时。情况#3可能是您的GMail示例所发生的情况。您并不来自可信任的网络,而是与垃圾邮件发送者一起在互联网上。但是通过使用密码,您可以向GMail证明您就是您所说的那个人。
历史方面是,在旧日里,gmail和hotmail之间的链接很可能是间歇性的。通过在本地服务器上排队邮件,您可以将其交给本地服务器,知道当建立链接时,本地服务器可以将您的消息传输到远程服务器,并将消息保留,直到接收者的代理程序接收它。

2

第一个服务器将查看Hotmail服务器的DNS MX记录。MX是一种特殊记录,用于定义某个域的邮件服务器。知道Hotmail服务器的IP地址后,GMail服务器将使用SMTP协议发送消息并等待答复。如果Hotmail服务器宕机,GMail服务器将尝试重新发送消息(这取决于服务器软件配置)。如果进程正常终止,则一切正常,否则GMail服务器将通知您无法传递该消息。


2
如果您真的想了解电子邮件是如何工作的,您可以阅读SMTP RFC或POP3 RFC。请参考以下链接:SMTP RFCPOP3 RFC

1

第2到3步(即从Gmail到Hotmail)通常通过SMTP(或ESMTP-扩展SMTP)完成。

Hotmail不会通过POP3发送任何内容给客户端。了解这里的一些细微差别非常重要。客户端通过POP3联系Hotmail并请求其邮件。(即客户端发起讨论)。


1

所有的电子邮件都是使用SMTP(或ESMTP)进行转移。

需要理解的重要一点是,当您发送消息给someguy@hotmail.com时,此消息的目的地不是他的个人电脑。目的地是someguy在hotmail.com服务器上的收件箱文件夹。

当消息到达其目的地后,用户可以检查他在hotmail服务器上的帐户是否有任何新消息,并使用POP3检索它们。

此外,也可以通过直接使用SMTP将消息从您的PC发送到hotmail而无需使用gmail服务器来发送该消息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接