为什么发送电子邮件需要多个邮件服务器跃点?

时间:2012-06-25 02:54:37

标签: email networking xmpp network-protocols

当我向某人发送电子邮件时,(我认为)我的电子邮件会发送到我的家庭服务器,然后将电子邮件发送到目标服务器,然后最终发送给我想发送给的人。

有时,这需要多次跳跃,这让我感到困惑。为什么这需要多跳?为什么不能直接将电子邮件发送到目标服务器?例如,XMPP不需要多跳。

3 个答案:

答案 0 :(得分:1)

典型的电子邮件交易使用出站邮件服务器,该服务器查找收件人的传入服务器,将其传送到那里,然后该服务器将其交给收件人的邮箱服务器。这是3跳:

SMTP→IMAP mailflow

发送邮件时,您从电子邮件客户端(更正确地说:邮件用户代理,MUA)连接到出站SMTP服务器。这是第一跳,您的SMTP服务器会创建一个Received标头,表示稍后进行审核。这将包括它看到您连接的IP,该特定服务器内部的消息ID,有时还包括其他一些信息。

您的出站SMTP服务器然后在DNS中查找每个收件人域的MX(邮件交换)记录,并连接到它可以找到的最高优先级中继(数字上最低的MX优先级)。这是第二跳。与任何跃点一样,添加了Received标题。

MX中继通常会执行反垃圾邮件过滤,可能会在SMTP连接期间拒绝邮件。这就是生成退回邮件的原因,您的出站SMTP服务器会直接向您发送邮件(如果它是通过互联网发送的,则可能是backscatter,这是一种垃圾邮件,因为反弹不能被证明是合法)。通常,反垃圾邮件过滤将在以后完成,邮件将以静默方式删除,或者以标记方式传递。

MX中继然后将消息内部发送到您的邮箱(IMAP / Exchange)服务器(跳#3)。有时,本地邮箱服务器过滤器用于处理模式(或来自MX服务器的标记),并促进各种操作,例如将可疑垃圾邮件归档到您的垃圾邮件文件夹。

如果您使用邮件转发服务,则MX中继会将您的邮件传递给转发目标(另一个MX中继)。这理论上可以持续很长一段时间甚至无限循环,但最终应该以邮箱服务器结束。

另请参阅正式的SMTP规范RFC 5321

如果您使用网络邮件,则网络邮件服务器就是您的电子邮件客户端。一些Web邮件服务器添加类似Received标头的标头来跟踪连接,因此垃圾邮件过滤器可以将其信誉检查扩展到用户而不是网络邮件系统,这可能被称为另一个跳跃。

在企业级环境中,多层服务器通常用于各种目的。这些额外的跃点发生在MX中继和邮箱服务器之间,可能与额外的反垃圾邮件或防病毒处理,高级邮件别名,电子邮件归档,校园之间的内部邮件路由或任何其他内容有关。例如,这些可以简化从一个邮件系统到另一个邮件系统的转换(例如在Exchange版本之间迁移,这可能需要大量测试和缓慢迁移,因此问题不会影响整个公司。)

答案 1 :(得分:-1)

从根本上说,这与互联网的最初目的有关,或者更确切地说是它的前身ARPANET,其目的是为了在网络部分丢失的情况下生存(流行到流行的误解,这个设计目标不是按顺序存在在核攻击中幸存下来,但因为网络组件在当时是相当不可靠的。)

分组交换网络旨在查找数据包启动的一条或多条路径(您的电子邮件客户端)到需要的路由(您要发送给的人的电子邮件客户端)。

为了实现这种灵活性,系统的设计不仅要直接从A点路由到B点,还要找到当前正在运行的可用路线(来自可能非常大的一组可能路线)。 p>

如果您的电子邮件客户端必须知道如何直接发送到世界上的其他所有设备,而无需干预管理流量的子网,则您的计算机需要直接连接到世界上的其他所有计算机。那将是非常昂贵的。相反,中间的路由器接受来自您和您所在区域的其他人的数据包,并找出如何将每个数据包路由到更靠近目的地的位置。这类似于航空公司用来建立区域航班的集线器的方法。

答案 2 :(得分:-2)

当数据包通过互联网路由时,它会使多个跃点从源到目的地。