答案1
SMTP 最初设计时就具有中继消息的功能。两台服务器只是最理想、最常见的情况。
(这可以追溯到单一统一的互联网尚未出现的时候,有时邮件必须穿越多个世界例如,当 MILNET 首次从 ARPANET 分离出来时,最初的计划是将它们连接起来仅有的通过 SMTP 邮件桥。
因此,存在以下几种可能性,从发送者到接收者的顺序如下:
非 SMTP 传输
并非所有“已接收:”标头都表示使用了 SMTP。某些 Web 邮件应用程序(例如 Roundcube)会添加自己的“已接收”标头,描述邮件是如何通过 HTTP 从用户浏览器提交的。
(甚至可能有人通过 UUCP 向您发送来自过去的消息!)
本地 MTA(智能主机)
有时(主要是在运行 Linux 或 BSD 的服务器上),邮件首先被提交到计算机内部运行的 MTA(邮件服务器)localhost
,然后配置为将所有内容转发到网络的中央邮件服务器。这种配置通常称为“智能主机”模式。
这种方法的优点是您不需要在每个程序中配置 SMTP 服务器参数 - 它们只需要求“操作系统”传递消息即可。
分支机构服务器
类似地,发出的邮件可能会先经过物理上位于同一网络中的“本地” SMTP 服务器,然后从那里到达物理上位于另一个州甚至另一个国家的“中央”公司服务器(可能处理 DKIM 等),最后才到达互联网。
(我不确定这发生如今,商业客户可以轻松获得全天候互联网访问,但从技术上来说,这仍然非常可行。)
邮件代理和防火墙
收件人,甚至是发件人,可能都有一个两层邮件系统:一组服务器可以接收来自互联网的连接,但不能访问实际的邮件存储;另一组服务器可以访问邮件存储,但不能访问互联网。
这是一种常见的安全措施——即使有人设法闯入外部服务器,他们也无法泄露任何人存储的邮件。
其他基于 SMTP 的过滤器
一些邮件过滤器(反垃圾邮件、反恶意软件等)的工作方式类似于 SMTP 中继。也就是说,邮件服务器收到您的邮件后,会通过 SMTP 将邮件转发到 Amavisd 等localhost:10031
,然后 Amavisd 会对其进行扫描并转发后退发送到另一个 SMTP 端口上的同一邮件服务器。对于单个机器,这有 3 个“已接收”标头。
递送至邮件存储
通常,邮件存储由不同于 SMTP 的服务处理;它甚至可能在完全不同的机器上。当收件人的 SMTP 服务收到邮件时,它可能会使用 LMTP 协议将其传递给 IMAP 服务。这可能会添加另一个 Received: 标头。(LMTP 是 SMTP 的变体,略作调整以使其更适合本地传递。)
答案2
电子邮件与互联网的核心 TCP/IP 协议紧密相关。电子邮件从一台服务器发送到另一台服务器的过程就是电子邮件路由。让我们看看它是如何工作的。
首先,假设您的电子邮件地址是[电子邮件保护]你朋友的[电子邮件保护]。你给他发了一封电子邮件。首先,你的电子邮件通过 SMTP 发送到你的电子邮件提供商的 MTA。SMTP 不理解域名。因此,SMTP 需要咨询 DNS 服务器以获取 IP 地址。现在,一旦它获得了 IP 地址,SMTP 将检查域中是否有任何米愛X改变 (墨西哥) 服务器。MX 服务器提供有关路由的附加信息。域上有 MX 记录,其中包含有关邮件服务器的必要信息。现在 SMTP 将通过 MTA 服务器路由电子邮件。现在,一旦到达收件人 MTA,MTA 将决定需要将电子邮件放在哪里,并检查客户端是否使用 POP、POP3 或 IMAP。然后您的朋友就会收到电子邮件。
MX 记录由服务器管理员配置,有助于 SMTP 以正确的方式路由电子邮件。
希望有所帮助