[ DNS和域名 ]

DNS MX记录:邮件路由、优先级和依赖性

通过MX优先级和地址依赖性跟踪接收邮件路由,而不将其视为发件人授权。

由EmailAuth研究团队提供

[ 要点 ]

  • 较低的MX偏好受到青睐;相同的值并不能保证分裂。
  • 缺少MX 、损坏的显式路由和 null MX具有不同的含义。
  • DNS路由和SMTP接受不是最终的邮箱传送。
在此页面上

MX记录 告诉SMTP客户端域在哪里接收邮件。他们本身并不授权服务作为该域发送。可靠的接收设置需要可用的交换主机名、可访问的SMTP端点和临时故障计划,而不仅仅是绿色MX查找。

正确解释偏好

参考: RFC 5321 §5.1, RFC 2181 §10.3.

每个MX记录都包含一个数字首选项和一个交换主机名。先尝试较低的优先数字,然后再尝试较高的数字。当没有明确的理由支持一个同等偏好的目的地时, RFC 5321要求随机化它们的顺序以分散负载。它们在DNS应答中的顺序不是稳定的主服务器指定。所有公布的路线都应该是预期的且可操作的。

交换主机名必须具有可用的 A 或 AAAA 记录,并且不能是 CNAME。不要将 IP 文字放入MX交换字段中。分别解决每个交换,然后测试公布的SMTP服务。仅地址答案无法显示端点是否接受收件人域的邮件。

区分不存在、不可用和空MX

参考: RFC 5321 §5.1, RFC 7505 §3.

当成功查找未返回MX记录时, SMTP具有隐式 MX 规则:它将域本身视为目标并查找其地址记录。这并不是忽略损坏的显式MX记录并改用域的网站地址的权限。临时DNS错误也不同于明确的缺失,通常会导致排队和重试。

空MX是域不接受邮件的明确声明:优先级为零且根标签为交换的单个MX ,通常显示为 0 .。 RFC 7505规定不要与它一起发布其他MX记录。因此,无MX和空MX是不同的配置。

通过布线装置进行工作

合成夹具A有 example.com. MX 10 mx1.example.com. 和 example.com. MX 20 mx2.example.com.。第一个主机有 A 192.0.2.10;第二个有 A 192.0.2.20。预期的优先顺序是 mx1 在 mx2 之前。与 mx1 的连接失败可能会导致另一次允许的传送尝试;它并不能证明 mx2 接受了该消息。

夹具 B 删除两条MX记录,但保留 example.com. A 192.0.2.30。在隐式 MX 规则下,该地址将成为潜在的SMTP目标。夹具 C 仅发布 example.com. MX 0 .;预期的解释是该域不接受邮件。夹具 D 保留 A 的MX记录,但删除两个交换机的地址。预期结果是不可用的显式路线,而不是回退到顶点 一个记录.

通过查询每个隔离装置的MX和每个返回交换的 A/AAAA,在实验室中重现DNS部分。记录选择的顺序和分类。如果需要,请使用受控SMTP服务器来测试重试和接受。文档地址和描述的结果是说明性的,而不是生产测量。

验证业务路线

参考: RFC 7208 §5.4, RFC 5321 §4.2.5.

将入站路由与 SPF 政策。 SPF MX 机制可以显式地使 MX 关联地址与SPF评估相关,但单独发布MX并不会创建该授权。因此,更改入站提供商也可能会影响使用的现有SPF策略 MX 并值得单独审查。

在迁移期间,请在删除旧路由之前验证所有活动交换机上的收件人配置、 SMTP响应和传输安全性。如果配置不同,备份交换可以接受垃圾邮件或拒绝合法收件人。记录每个端点的所有者以及结束变更的证据;不要将SMTP接受与收件箱放置或人员阅读邮件等同起来。

捕获的隔离路由运行

保留的历史捕获(针对本次审查进行了检查但未重新运行)记录了 2026 年 11 月 7 日20:34:42 UTC 执行的环回装置返回了MX集 10 mx1.example.com. 和 20 mx2.example.com. 来自127.0.0.1端口 42125。使用 dnspython 2.9.2 的 Python 3.12.14 客户端对这些首选项进行了排序。显式实验室端点映射将 mx1 发送到127.0.0.1端口 45271,将 mx2 发送到端口 37481;此端口映射仅替换固定装置内的公共端口 25 路由。

当两个监听器都运行时,mx1 返回 220, 已接受 EHLO 和 250, 已接受 邮件来自 和 RCPT TO 与 250,输入数据 354 并返回 已接受 250 条合成消息;本地丢弃。仅关闭主侦听器后,记录下一次运行 连接拒绝错误 对于 mx1 和 mx2 具有相同的接受序列。不涉及外部邮件、真实收件人或邮箱传递。

要重现,请启动两个环回SMTP装置,查询实验室MX响应程序,将其交换名称映射到侦听器,并使用 Python smtplib 发送无害的合成消息。关闭主控制器后重复此操作。保留线路响应、端点映射、客户端/服务器记录、时间戳和工具版本。捕获的装置使用故意较小的SMTP服务器,并仅演示首选项驱动的重试;这不是产品的一致性测试 MTA 或生产故障转移的证据。

保持证据范围明确

存档的记录仅确认上述环回装置行为,包括其自定义端口映射和本地丢弃。源捕获和利用保持不变;本次审查没有重复SMTP流量,也没有从历史测试中推断生产故障转移。

[ 外卖 ]

较低的MX偏好受到青睐;相同的值并不能保证分裂。缺少MX 、损坏的显式路由和 null MX具有不同的含义。 DNS路由和SMTP接受不是最终的邮箱传送。

[ 按角色 ]

这对您意味着什么

选择您的角色以执行后续实际步骤。

IT/邮件管理员

跟踪MX直至SMTP

首选项值和地址解析只是入站测试的第一阶段。

后续步骤

  1. 将每次交换解析为 A 和 AAAA。
  2. 分别测试显式、不存在和空MX 。
  3. 在更改之前检查SPF mx 依赖关系。

CISO / SecOps

将替代交换保留在范围内

每个通告的路由都可以在故障期间成为活动处理路径。

后续步骤

  1. 查看所有公布的SMTP端点。
  2. 需要一致的收件人和滥用控制。
  3. 验收与交货索赔分开。

创始人/非技术人员

保护每一条接收路径

备份交换机是客户通信路径的一部分,而不是可以忽略的备用配置。

后续步骤

  1. 识别每条入站路由的所有者。
  2. 需要邮箱迁移测试。
  3. 将备份路由行为保持在范围内。

[ 常见问题解答 ]

常见问题

MX优先级越大是否意味着优先级越高?

不会。数字越小越好。

RFC 5321 §5.1

相同的数量能否保证准确的流量分配?

不。他们没有指定保证的分配百分比。

RFC 5321 §5.1

交换字段可以包含 IP 地址吗?

使用带有地址记录的主机名,而不是 IP 文字。

RFC 2181 §10.3 RFC 5321 §5.1

交换主机名可以是别名吗?

不需要。引用的规则需要地址记录而不是CNAME目标。

RFC 2181 §10.3

没有MX就代表没有邮件吗?

未必。 SMTP可以使用指向域本身的隐式MX 。

RFC 5321 §5.1

0 . 是什么意思?意思是?

当发布为域的单个MX记录时,它为空MX ,声明不接受邮件。

RFC 7505 §3

损坏的显式MX是否会回退到网站 A 记录?

不会。当MX记录不存在(并非不可用)时,隐式 MX 回退将适用。

RFC 5321 §5.1

MX是否授权出站邮件?

不是靠它自己。显式SPF机制可以引用它,但接收路由和发送者授权是不同的。

RFC 7208 §5.4

[ 来源 ]

来源

  1. RFC 7208

    部分 §5.4

  2. RFC 5321

    部分 §4.2.5 · §5.1

  3. RFC 7505

    部分 §3

  4. RFC 2181

    部分 §10.3

[ 词汇表 ]

词汇表

MX偏好
用于对候选交换进行排序的数字,优先考虑较小的值。

RFC 5321 §5.1

空MX
具有preference0 和exchange 点的唯一MX记录,声明不接受邮件。

RFC 7505 §3

企业出处

为什么顶级金融机构和政府 退役了他们的电子邮件安全仪表板。

传统的电子邮件身份验证平台会向您出售仪表板并要求您的工程师来完成这项工作。在高风险环境中,手动监督意味着延迟执行、配置漂移和不受监控的影子域。

EmailAuth是代理电子邮件来源平台。 我们的代理人强制执行 p=reject,保持第三方发件人一致并将您的域名移至完整状态 RFC 9989 合规性、新的DMARC标准,以及人机交互审核能力。

政府 大型企业 一级金融机构

SaaS · 专用租赁 · 气隙本地部署 · BYOK 加密

知识库