一封邮件如何找到您的邮件服务器
发件人
you@gmail.com
MX 查询
谁来收邮件?
邮件服务器
优先级 10 优先
收件箱
已送达
优先级数值最小者优先;数值较大的作为备用
什么是 MX 记录?邮件路由详解
当有人向 you@example.com 发送邮件时,对方的邮件服务器首先要回答一个问题:哪台机器接收 example.com 的邮件?答案就是 MX 记录。
MX 是 Mail Exchange(邮件交换)的缩写。没有它,即使网站运行完全正常,发往您域名的邮件也会被退回。网站记录和邮件记录是完全相互独立的。
一封邮件如何找到您的邮件服务器
发件人
you@gmail.com
MX 查询
谁来收邮件?
邮件服务器
优先级 10 优先
收件箱
已送达
优先级数值最小者优先;数值较大的作为备用
MX 记录是什么样子
example.com. 3600 IN MX 1 aspmx.l.google.com.
example.com. 3600 IN MX 5 alt1.aspmx.l.google.com.
example.com. 3600 IN MX 5 alt2.aspmx.l.google.com.
example.com. 3600 IN MX 10 alt3.aspmx.l.google.com.主机名之前的数字就是优先级(有时也称为偏好值),其余部分都是标准的记录内容。
优先级究竟如何运作
发送服务器会按优先级对您的 MX 记录排序,并依次尝试。如果数值最小的主机拒绝连接或超时,它就会转向下一个。这是真正的冗余:即使有一台服务器宕机,邮件仍能继续流转。
优先级相同的记录,比如上面的两条 5,会进行负载均衡。发送方在它们之间随机选择,把流量分摊到两者上。
MX 目标必须遵守的规则
- 目标必须是主机名,而不是 IP 地址。
MX 10 93.184.216.34是无效的;请使用MX 10 mail.example.com.,并在该名称上配置A记录。 - 目标不能是 CNAME。规范要求 MX 目标必须直接解析到地址记录,否则某些邮件服务器会拒绝投递。参见 CNAME 与 A 记录。
- 目标需要有自己的
A或AAAA记录。MX 指向一个无法解析的名称,等同于根本没有 MX。
Null MX:声明域名不发送邮件
如果某个域名永远不会接收邮件,请用一条指向根区域的 MX 记录明确说明这一点:
example.com. 3600 IN MX 0 .目标仅为一个 .,意思是该域名不接收邮件。发送方会立即以永久性错误拒绝,而不是重试数日,同时也让该域名不那么容易成为欺骗的目标。对于您拥有的每一个不用于邮件的域名,都值得这样设置。
没有 MX 记录时会怎样
历史上的回退机制是,发送方会尝试域名的 A 记录,并在那里尝试投递。依赖这一机制并不明智:不同邮件服务器的行为各不相同,而且如果您的 A 记录指向的是没有运行邮件守护进程的 Web 服务器或 CDN,邮件就会被退回。
核心要点
想收邮件,就发布明确的 MX。不想收邮件,就发布 null MX。留空并寄希望于 A 记录回退机制生效,正是域名悄悄丢失邮件的原因。
MX 记录并不是全部
MX 决定邮件被投递到哪里。另外三种记录则决定它是否受信任,没有它们,您的合法邮件就会落入垃圾邮件文件夹:
- SPF:一条
TXT记录,列出哪些服务器可以以您的域名名义发信。 - DKIM:一条
TXT记录,发布用于为您外发邮件签名的密钥。 - DMARC:一条
TXT记录,告诉接收方当 SPF 或 DKIM 验证失败时该如何处理。
这三者都在 SPF、DKIM 与 DMARC 详解中有所介绍。第四个因素是反向 DNS,它对直接发信的服务器很重要。
会导致邮件丢失的故障,以及如何发现它们
MX 配置错误很少会自己暴露出来。邮件不会就此中断,而是变少、延迟到达,或者只有某一个发件人抱怨,而其他人都正常。这些模式值得认清。
记录指向了您已不再使用的服务商
这是邮件莫名丢失最常见的原因。迁移之后,旧服务商的 MX 记录与新记录并存,于是发送方按优先级在它们之间分配,一部分邮件就落入了无人查看的邮箱。症状:有些发件人的邮件能到,有些则消失了,而且没有任何退信。
MX 目标没有地址记录
当 mail.example.com 无法解析时,MX 指向它在功能上等同于根本没有 MX。发送方要么立即退信,要么排队重试数日后才放弃。请务必验证目标能够解析,而不只是确认 MX 记录存在。
防火墙屏蔽了 25 端口
DNS 完美无缺,服务器却无法访问。入站 SMTP 通过 25 端口到达,而云服务商通常会在新实例上默认屏蔽该端口。MX 查询成功,连接却始终无法完成,发送方只能悄悄地排队。
检查您的 MX 记录
dig +short example.com MX查询工具返回的 MX 记录已按优先级排好序,null MX 也会被明确显示出来,而不是显示成一个令人困惑的空值,这样您一眼就能确认,主服务器是否正是您所预期的那一个。
需要查看某个域名的公网 DNS 地址?使用 Domain IP Lookup 工具。
本主题的免费工具
常见问题
相关阅读
几乎每个 DNS 区域都会遇到的记录
TXT 记录详解:SPF、DKIM 与 DMARC
三条 TXT 记录,决定您的邮件会不会进垃圾箱。每一条的作用、语法怎么读,以及安全的部署顺序。
反向 DNS 是反过来查询
IP 地址
93.184.216.34
起点
PTR 查询
in-addr.arpa,是对方的区域,不是您的
主机名
答案
反向区域归 IP 地址段的所有者所有,而非域名所有者
什么是反向 DNS?PTR 记录详解
这是一种反向运行的查询:为什么由您的托管服务商来控制它,以及缺少它为何会悄悄把您的邮件送进垃圾箱。
几乎每个 DNS 区域都会遇到的记录
DNS 记录类型详解:完整参考
每一种值得了解的记录类型:它的作用、长什么样,以及人们常犯的错误,全部浓缩在一页参考中。