2008-08-28 179 views
15

在过去的几周里,我一直在努力学习电子邮件的工作原理。我理解客户端使用POP很好地从服务器接收邮件的过程。我也了解客户端计算机如何使用SMTP来请求SMTP服务器发送消息。不过,我还是失去了一些东西......发送电子邮件涉及哪些协议和服务器,以及步骤是什么?

我的理解是,发送的邮件必须进行三次旅行:

  1. 客户端到服务器(使用Thunderbird的Gmail用户)(如Gmail)
  2. 第一伺服器(Gmail)到第二服务器(Hotmail等)
  3. 第二服务器(Hotmail等)到第二客户端(使用OS X邮件的Hotmail用户)

据我所知,步骤一个使用SMTP客户端以通信。客户端以某种方式进行身份验证(例如,使用USER和PASS),然后向Gmail服务器发送消息。

不过,我不明白的Gmail服务器如何将邮件传输到Hotmail服务器。

对于第三步,我敢肯定,Hotmail服务器使用POP(使用验证,再次)发送消息到Hotmail客户端。

所以,最大的问题是:当我点击发送邮件发送我的消息到我的gmail服务器,我的gmail服务器如何将消息转发到,例如,一个hotmail服务器,所以我的朋友可以接收它?

太谢谢你了!

〜杰森


感谢,这是很有帮助至今。

据我所知,第一客户端将消息发送到使用SMTP第一服务器,常常到一个地址如smtp.mail.SOMESERVER.com端口25(通常)。

然后,SOMESERVER再次使用SMTP将邮件发送到端口25上的RECEIVESERVER.com(而不是smtp.mail.RECEIVESERVER.com或其他任何东西)。

然后,当收件人询问RECEIVESERVER其邮件,使用POP,他/她临危消息,对吧?再次

感谢(尤其是博士-JAN),

杰森

回答

18

Gmail(接受来自Thunderbird的邮件)中的SMTP服务器将邮件路由到最终收件人。

它通过使用DNS查找目标电子邮件地址的域名部分(本例中为hotmail.com)的MX(邮件交换器)记录。 DNS服务器将返回消息应发送到的IP地址。目标IP地址上的服务器将有望运行SMTP(在标准端口25上),以便它可以接收传入的消息。

一旦hotmail服务器接收到该消息,就会存储该消息,直到相应的用户使用POP(或IMAP)登录并检索其消息。

杰森 - 回答你的跟进......

然后,SOMESERVER再次使用SMTP发送邮件到RECEIVESERVER.com在端口25(不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电子邮件给任何人都应该被发送到一个上面显示的G​​mail服务器。

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

5

您正在寻找的邮件传输代理程序,维基百科的话题a nice article

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

条款的邮件服务器,邮件交换器,以及MX主机也可参照执行MTA功能的计算机。域名系统(DNS)将邮件服务器与包含提供MTA服务的主机的域名的邮件交换器(MX)资源记录的域关联。

1

步骤2到3(即Gmail到Hotmail)通常通过SMTP(或ESMTP - 扩展SMTP)发生。

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

3

第一台服务器将在DNS中查看Hotmail服务器的MX记录。 MX是为特定域定义邮件服务器的特殊记录。知道Hotmail服务器的IP地址,GMail服务器将使用SMTP协议发送消息并等待答案。如果Hotmail服务器关闭,GMail服务器将尝试重新发送消息(这取决于服务器软件配置)。如果进程终止正常,那么确定,如果没有,GMail服务器将通知您他无法传递消息。

2

如果你真的想知道电子​​邮件的工作原理,你可以阅读SMTP RFCPOP3 RFC

1

所有电子邮件都使用SMTP(或ESMTP)传输。
重要的是要明白,当你发送消息到[email protected]这个消息的目的地不是他的电脑。目的地是hotmail.com服务器上的某些收件箱文件夹。
消息到达目的地后。用户可以检查他的帐户在Hotmail服务器上是否有任何新消息,并使用POP3检索他们的邮件。

也可以在不使用gmail服务器的情况下发送邮件,通过使用SMTP直接从PC发送到hotmail 。

4

您可能也有兴趣知道为什么GMail to 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之间的链接很可能是间歇性的。通过在本地服务器上排队处理邮件,您可以清洗手中的信息,知道建立链接时,本地服务器可以将邮件传输到远程服务器,远程服务器可以保存邮件,直到收件人的代理人捡起邮件。

相关问题