过去几周,我一直在努力了解电子邮件的工作原理。我理解客户端使用POP从服务器接收邮件的过程非常好。我也了解客户端计算机如何使用SMTP来请求SMTP服务器发送消息。但是,我仍然缺少一些东西......
我理解它的方式,外发邮件必须进行三次旅行:
据我了解,第一步使用SMTP进行客户端通信。客户端以某种方式(例如,使用USER和PASS)对自身进行身份验证,然后向gmail服务器发送消息。
但是,我不明白gmail服务器如何将邮件传输到hotmail服务器。
对于第三步,我很确定,hotmail服务器使用POP将邮件发送到hotmail客户端(再次使用身份验证)。
所以,最大的问题是:当我点击发送邮件将我的消息发送到我的gmail服务器时,我的gmail服务器如何将消息转发给Hotmail服务器,以便我的朋友可以收到它?
非常感谢你!
〜杰森
谢谢,到目前为止一直很有用。
根据我的理解,第一个客户端使用SMTP将消息发送到第一个服务器,通常发送到端口25(通常)上的smtp.mail.SOMESERVER.com等地址。
然后,SOMESERVER再次使用SMTP将消息发送到端口25上的RECEIVESERVER.com(不是smtp.mail.RECEIVESERVER.com或任何花哨的东西)。
然后,当收件人向RECEIVESERVER请求邮件时,使用POP,他/她收到邮件......对吗?
再次感谢(特别是对于dr-jan),
杰森
答案 0 :(得分:18)
Gmail上的SMTP服务器(接受来自Thunderbird的邮件)会将邮件路由到最终收件人。
通过使用DNS查找目标电子邮件地址的域名部分(本例中为hotmail.com)的MX(邮件交换器)记录来执行此操作。 DNS服务器将返回应将消息发送到的IP地址。希望目标IP地址的服务器运行SMTP(在标准端口25上),以便它可以接收传入的消息。
一旦hotmail服务器收到该消息,它就会被存储,直到相应的用户登录并使用POP(或IMAP)检索他们的消息。
杰森 - 回答你的跟进......然后,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)。
答案 1 :(得分:5)
您正在寻找邮件传输代理,维基百科有关于该主题的a nice article。
在Internet邮件处理服务(MHS)中,邮件传输代理或邮件传输代理(MTA)或邮件中继是使用客户端 - 服务器应用程序体系结构将电子邮件消息从一台计算机传输到另一台计算机的软件。 MTA实现简单邮件传输协议的客户端(发送)和服务器(接收)部分。
术语邮件服务器,邮件交换器和MX主机也可以指执行MTA功能的计算机。域名系统(DNS)将邮件服务器与域关联,邮件交换器(MX)资源记录包含提供MTA服务的主机的域名。
答案 2 :(得分:4)
您可能也有兴趣知道为什么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之间的链接可能是间歇性的。通过在本地服务器上排队邮件,您可以洗手,知道在建立链接时,本地服务器可以将您的邮件传输到远程服务器,远程服务器将保留邮件,直到收件人的代理收到邮件
答案 3 :(得分:2)
第一台服务器将查看DNS以获取Hotmail服务器的MX记录。 MX是一种特殊记录,用于定义特定域的邮件服务器。知道了Hotmail服务器的IP地址,GMail服务器将使用SMTP协议发送消息并等待答复。如果Hotmail服务器出现故障,GMail服务器将尝试重新发送消息(这取决于服务器软件配置)。如果进程终止正常,那么确定,如果没有,GMail服务器将通知您他无法传递消息。
答案 4 :(得分:2)
答案 5 :(得分:1)
步骤2到3(即Gmail到Hotmail)通常会通过SMTP(或ESMTP - 扩展SMTP)发生。
Hotmail不会通过POP3向客户端发送任何内容。了解这里的一些细微差别非常重要。客户端通过POP3联系Hotmail并请求其邮件。 (即客户启动讨论)。
答案 6 :(得分:1)
使用SMTP(或ESMTP)传输所有电子邮件。
需要了解的重要一点是,当您向someguy@hotmail.com发送消息时,此消息的目的地不是他的PC。目的地是hotmail.com服务器上的someguy的收件箱文件夹。
消息到达目的地后。用户可以检查他在hotmail服务器上的帐户是否有任何新消息,并使用POP3检索它们
也可以在不使用gmail服务器的情况下发送消息,直接从PC发送到使用SMTP的hotmail。