15

在过去的几周里,我一直在尝试了解电子邮件的工作原理。我非常了解客户端使用 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 询问其邮件时,他/她收到了邮件……对吗?

再次感谢(尤其是对 jan 博士),

杰森

4

7 回答 7

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 服务器之一。

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

于 2008-08-28T16:47:51.113 回答
5

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

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

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

于 2008-08-28T16:40:26.140 回答
5

您可能还想知道为什么 GMail 到 HotMail 的链接使用 SMTP,就像您的 Thunderbird 客户端一样。换句话说,既然您的客户端可以通过 SMTP 发送电子邮件,并且可以使用 DNS 获取 hotmail.com 的 MX 记录,为什么不直接将其发送到那里,完全跳过 gmail.com?

有几个原因,一些是历史原因,一些是出于安全考虑。在最初的问题中,假设您的 Thunderbird 客户端使用用户名和密码登录。通常情况并非如此。SMTP 实际上不需要登录即可发送邮件。并且 SMTP 无法判断谁真正在发送邮件。于是,垃圾邮件诞生了!

不幸的是,仍然有许多 SMTP 服务器允许任何人和每个人连接和发送邮件,盲目地相信发件人就是他们声称的那个人。这些服务器被称为“开放中继”,并且经常被其他邮件服务器的更聪明的管理员列入黑名单,因为它们产生的垃圾邮件。

负责任的 SMTP 服务器管理员将其服务器设置为仅在特殊情况下接受邮件以进行投递:1) 邮件来自“它自己的”网络,或 2) 邮件被发送到“它自己的”网络,或 3) 用户提供将他标识为受信任发件人的凭据。案例 #1 可能是您下班发送邮件时发生的情况;您的机器位于受信任的网络上,因此您可以向任何人发送邮件。许多公司邮件服务器仍然不需要身份验证,因此您可以冒充办公室中的任何人。乐趣!第 2 种情况是有人向您发送邮件。案例 #3 可能是您的 GMail 示例所发生的情况。您不是来自受信任的网络,您只是与垃圾邮件发送者一起在 Internet 上。但是通过使用密码,您可以向 GMail 证明您就是您所说的那个人。

历史方面是,在过去,gmail 和 hotmail 之间的联系可能是断断续续的。通过在本地服务器上排队你的邮件,你可以洗掉它,知道当一个链接建立时,本地服务器可以将你的邮件传输到远程服务器,远程服务器会保存邮件直到收件人的代理收到它.

于 2008-08-28T17:28:46.913 回答
2

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

于 2008-08-28T16:47:29.853 回答
2

如果您真的想知道电子​​邮件是如何工作的,您可以阅读SMTP RFCPOP3 RFC

于 2008-08-28T16:55:20.613 回答
1

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

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

于 2008-08-28T16:42:23.670 回答
1

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

也可以在不使用 gmail 服务器的情况下发送消息,方法是使用 SMTP 将消息直接从您的 PC 发送到 hotmail。

于 2008-08-28T17:03:57.987 回答