当我向某人发送电子邮件时,(我认为)我的电子邮件被发送到我的家庭服务器,然后电子邮件被发送到目标服务器,然后最终发送给我想发送给的人。
有时,这需要多跳,这让我感到困惑。为什么这需要多个跃点?为什么邮件不能直接发送到目标服务器?例如,XMPP 不需要多跳。
当我向某人发送电子邮件时,(我认为)我的电子邮件被发送到我的家庭服务器,然后电子邮件被发送到目标服务器,然后最终发送给我想发送给的人。
有时,这需要多跳,这让我感到困惑。为什么这需要多个跃点?为什么邮件不能直接发送到目标服务器?例如,XMPP 不需要多跳。
典型的电子邮件交易使用出站邮件服务器,该服务器查找收件人的传入服务器,将其发送到那里,然后该服务器将其交给收件人的邮箱服务器。那是3跳:
当您发送消息时,您从您的电子邮件客户端(更准确地说:邮件用户代理,MUA)连接到您的出站SMTP服务器。这是第一个跃点,您的 SMTP 服务器会创建一个Received
标头来表示它,以便稍后进行审核。这将包括它看到您连接的 IP、该特定服务器内部的消息 ID,有时还包括一些其他信息。
然后,您的出站 SMTP 服务器在 DNS 中查找每个收件人的域的 MX(邮件交换)记录,并连接到它可以为他们找到的最高优先级中继(数字上最低的 MX 优先级)。这是第二跳。与任何跃点一样,Received
会添加一个标头。
MX 中继通常进行反垃圾邮件过滤,可能会在 SMTP 连接期间拒绝邮件。这就是生成退回邮件的原因,您的出站 SMTP 服务器会直接向您发送该邮件(如果它是通过 Internet 发送的,则可能会被反向散射,一种垃圾邮件形式,因为无法证明退回邮件是合法的)。通常,反垃圾邮件过滤会在稍后完成,邮件会被静默丢弃或使用标记传递。
然后,MX 中继在内部将消息传递到您的邮箱 (IMAP/Exchange) 服务器(跃点 #3)。有时,本地邮箱服务器过滤器用于处理模式(或来自 MX 服务器的标记)并促进各种操作,例如将可疑垃圾邮件归档到您的垃圾文件夹中。
如果您使用邮件转发服务,则 MX 中继会将您的邮件传递给转发目标(另一个 MX 中继)。这理论上可以持续很长时间甚至无限循环,但它最终应该在邮箱服务器中结束。
另请参阅正式的 SMTP 规范RFC 5321。
如果您使用 webmail,则 web 邮件服务器就是您的电子邮件客户端。一些 web 邮件服务器添加类似于Received
header 的 header 来跟踪连接,因此垃圾邮件过滤器可以将其信誉检查扩展到用户而不是 webmail 系统,这可能被描述为另一个跃点。
在企业级环境中,多层服务器通常用于各种目的。这些额外的跃点发生在 MX 中继和邮箱服务器之间,可能与额外的反垃圾邮件或反病毒处理、高级邮件别名、电子邮件归档、校园之间的内部邮件路由或任何其他事情有关。例如,这些可以简化从一个邮件系统到另一个邮件系统的转换(例如在 Exchange 版本之间迁移,这可能需要大量测试和缓慢迁移,因此问题不会影响整个公司)。
从根本上说,这与 Internet 的最初目的有关,或者更确切地说,它的前身ARPANET旨在在网络部分丢失的情况下幸存下来(流行的普遍误解,这个设计目标的存在不是为了在核攻击中幸存下来,而是因为当时的网络组件相当不可靠)。
数据包交换网络旨在找到一条或多条从数据包开始(您的电子邮件客户端)到它需要到达的位置(您要发送到的人的电子邮件客户端)的路由。
为了实现这种灵活性,系统不仅设计为直接从 A 点路由到 B 点,还设计了一条当前正在运行的可用路线(从可能非常大的一组可能路线中)。
如果您的电子邮件客户端必须知道如何直接发送到世界上的所有其他设备,而无需干预子网管理流量,那么您的计算机将需要直接连接到世界上的所有其他计算机。那将是非常昂贵的。相反,中间的路由器接受来自您和您所在地区其他人的数据包,并找出如何将每个数据包路由到更接近其目的地的位置。这类似于航空公司使用区域航班为枢纽提供服务的方法。
当一个数据包通过互联网路由时,它会进行多次跳跃从源到目的地。