什么是MX记录?
MX(邮件交换)记录是一种DNS记录类型,指定哪些邮件服务器负责代表域接收电子邮件。当某人向user@example.com发送电子邮件时,发送邮件服务器会查询example.com的MX记录以找到传递消息的位置。
MX记录的工作原理
电子邮件传递过程:
1. 发件人撰写电子邮件至user@example.com
2. 发件人的服务器查询example.com的MX记录的DNS
3. DNS返回一个或多个带有优先级的MX记录
4. 发件人连接到最高优先级邮件服务器
5. 如果不可用,发件人尝试下一个优先级服务器
6. 电子邮件传递或排队以供稍后重试
MX记录格式
example.com. IN MX 10 mail.example.com.
example.com. IN MX 20 mail-backup.example.com.
组件:
- example.com. - 接收电子邮件的域
- IN MX - 记录类型
- 10 - 优先级(较低=更高优先级)
- mail.example.com. - 邮件服务器主机名
优先级数字
优先级决定尝试服务器的顺序:
- 10 - 主邮件服务器(首先尝试)
- 20 - 次要(如果主服务器失败则回退)
- 30 - 第三(最后的手段)
许多设置使用10的增量以便稍后插入服务器。
常见MX配置
自托管电子邮件
@ IN MX 10 mail.example.com.
mail IN A 203.0.113.50
Google Workspace
@ IN MX 1 aspmx.l.google.com.
@ IN MX 5 alt1.aspmx.l.google.com.
@ IN MX 5 alt2.aspmx.l.google.com.
@ IN MX 10 alt3.aspmx.l.google.com.
@ IN MX 10 alt4.aspmx.l.google.com.
Microsoft 365
@ IN MX 0 example-com.mail.protection.outlook.com.
Zoho邮件
@ IN MX 10 mx.zoho.com.
@ IN MX 20 mx2.zoho.com.
@ IN MX 50 mx3.zoho.com.
MX记录要求
目标必须是主机名
MX记录必须指向主机名,而不是IP地址:
# 正确
@ IN MX 10 mail.example.com.
# 不正确 - 不会工作
@ IN MX 10 203.0.113.50
目标需要A/AAAA记录
邮件服务器主机名必须解析为IP:
@ IN MX 10 mail.example.com.
mail IN A 203.0.113.50
无CNAME目标
MX记录不应指向CNAME记录(RFC 2181):
# 避免这样做
mail IN CNAME host.provider.com.
@ IN MX 10 mail.example.com.
检查MX记录
使用dig:dig example.com MX
; 答案部分:
example.com. 300 IN MX 10 mail.example.com.
example.com. 300 IN MX 20 mail-backup.example.com.
使用DomScan:
curl "https://domscan.net/v1/health?domain=example.com"
# 返回DNS详情中的hasMX: true/false
MX记录和电子邮件安全
MX记录与其他电子邮件身份验证记录一起工作:
| 记录 | 用途 |
|---|---|
| MX | 路由传入电子邮件 |
| SPF | 授权发送服务器 |
| DKIM | 签署传出消息 |
| DMARC | 政策执行 |
所有四个都应配置以获得适当的电子邮件操作和可递送性。
故障排除MX问题
无MX记录
如果不存在MX记录,某些服务器将回退到A记录查询,但这不可靠。始终配置明确的MX记录。
错误优先级
如果备份服务器的优先级比预期的低(数字更高),除非主服务器失败,否则它不会接收电子邮件。
主机名解析失败
如果MX目标主机名不解析,电子邮件传递会失败。验证邮件服务器主机名存在A记录。
TTL考虑
迁移电子邮件提供商时,在迁移前降低MX TTL,然后在迁移后恢复正常TTL。
最佳实践
1. 始终有MX记录:不要依赖A记录回退
2. 配置备份服务器:使用多个具有不同优先级的MX记录
3. 验证目标解析:确保邮件服务器主机名有A记录
4. 实施电子邮件身份验证:添加SPF、DKIM和DMARC以及MX
5. 监控电子邮件传递:使用工具测试MX配置