在过去的几周里,我一直在努力了解电子邮件的工作原理。我非常了解客户端使用 POP 从服务器接收邮件的过程。我还了解客户端计算机如何使用 SMTP 请求 SMTP 服务器发送消息。然而,我仍然缺少一些东西......

据我了解,发出的邮件必须经过三趟:

  1. 客户端(使用 Thunderbird 的 Gmail 用户)到服务器 (Gmail)
  2. 第一台服务器 (Gmail) 到第二台服务器 (Hotmail)
  3. 第二个服务器 (Hotmail) 到第二个客户端(使用 OS X Mail 的 hotmail 用户)

据我了解,第一步使用 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 或任何奇特的东西)。

然后,当收件人使用 POP 向 RECEIVESERVER 请求其邮件时,他/她会收到邮件...正确的?

再次感谢(特别是简博士),

贾森

有帮助吗?

解决方案

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 是更具体的内容的别名,例如传入.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)。

其他提示

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

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

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

您可能还想知道为什么 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 之间的链接可能是间歇性的。通过将邮件在本地服务器上排队,您可以放心地处理它,因为您知道建立链接后,本地服务器可以将您的邮件传输到远程服务器,远程服务器将保留该邮件,直到收件人的代理接收该邮件。

第一个服务器将在 DNS 中查找 Hotmail 服务器的 MX 记录。MX是一种特殊记录,定义了某个域的邮件服务器。知道Hotmail服务器的IP地址后,GMail服务器将使用SMTP协议发送邮件并等待答复。如果 Hotmail 服务器出现故障,GMail 服务器将尝试重新发送邮件(这将取决于服务器软件配置)。如果进程正常终止,那么好吧,如果没有,GMail 服务器会通知您他无法传递邮件。

如果你真的想知道电子​​邮件是如何工作的,你可以阅读 SMTP RFC 或者 POP3 RFC.

所有电子邮件均使用 SMTP(或 ESMTP)传输。
需要了解的重要一点是,当您向 someguy@hotmail.com 发送消息时,该消息的目的地不是他的 PC。目标是 hotmail.com 服务器上某个人的收件箱文件夹。
消息到达目的地后。用户可以在hotmail服务器上检查他的帐户上是否有新邮件,并使用POP3检索它们

此外,还可以在不使用 gmail 服务器的情况下发送邮件,而是使用 SMTP 将其直接从您的 PC 发送到 hotmail。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top