邮箱解析配置:MX、SPF、DKIM、DMARC
邮箱解析分两层:
- MX:决定别人发给你的邮件投递到哪台服务器,配错就收不到信。
- SPF / DKIM / DMARC:决定你发出去的邮件是否被判定为伪造,配错就容易进垃圾箱。
DNSPod 只负责托管这些 DNS 记录,邮箱本身要另外开通(腾讯企业邮、飞书邮箱、Google Workspace、自建 Postfix 等)。
一、MX:先保证能收信
腾讯企业邮 / 企业微信邮箱
添加两条 MX,主机记录都是 @:
| 主机记录 | 类型 | 线路 | 记录值 | 优先级 | TTL |
|---|---|---|---|---|---|
@ | MX | 默认 | mxbiz1.qq.com. | 5 | 600 |
@ | MX | 默认 | mxbiz2.qq.com. | 10 | 600 |
规则:
- 优先级数字越小越优先,邮件先投递给
mxbiz1,失败再投递给mxbiz2。 - 只保留当前邮箱服务商的 MX。换邮箱服务商时,先把旧 MX 全部删掉,否则邮件可能投递到旧服务器。
- MX 的记录值是域名,不是 IP;如果服务商给的是
mail.example.com,要确保mail有 A 记录。
自建邮局
| 主机记录 | 类型 | 记录值 | 优先级 |
|---|---|---|---|
@ | MX | mail.example.com. | 10 |
mail | A | 邮件服务器公网 IP | - |
同时给 mail 加 A 记录,否则 MX 指向的主机无法解析。
验证 MX
dig +short MX example.com
应返回类似:
5 mxbiz1.qq.com.
10 mxbiz2.qq.com.
也可以指定公共 DNS,排除本地缓存:
dig +short MX example.com @8.8.8.8
二、SPF:声明谁能用你的域名发信
SPF 写在根域名的 TXT 记录里。
腾讯企业邮
| 主机记录 | 类型 | 记录值 |
|---|---|---|
@ | TXT | v=spf1 include:spf.mail.qq.com ~all |
通用写法
v=spf1 include:_spf.example.com ~all
include:引入服务商的发信 IP 段。~all表示未授权的发信方标记为软失败(建议新手用这个)。-all表示严格拒绝,配置不完整时可能把合法邮件也拒掉。- 一个域名只能有一条 SPF 记录。如果同时用腾讯企业邮、SendGrid、阿里云邮件推送,要把多个
include合并到同一条 TXT 里,不要加两条v=spf1。
示例:
v=spf1 include:spf.mail.qq.com include:sendgrid.net ~all
验证 SPF
dig +short TXT example.com
如果返回多条 TXT,找到以 v=spf1 开头的那条。出现两条 SPF 记录会导致校验失败,需要合并。
三、DKIM:给邮件加签名
DKIM 由邮箱服务商生成一对密钥:
- 私钥留在邮件服务器,用来签名。
- 公钥发布到 DNS,用来验签。
配置位置由服务商给出,常见形式:
| 主机记录 | 类型 | 记录值 |
|---|---|---|
selector._domainkey | TXT | v=DKIM1; k=rsa; p=MIIBIjANBg... |
说明:
selector是服务商指定的选择器,可能是default、dkim、mail、s1等,不要自己猜。- 公钥很长,必须完整粘贴;不要换行、不要截断、不要加多余空格。
- 有些服务商要求用 CNAME 而不是 TXT,按其文档操作。
- 腾讯企业邮在管理后台开启 DKIM 后会给出具体的主机记录和记录值。
验证 DKIM
dig +short TXT selector._domainkey.example.com
把 selector 换成服务商给的值。能查到完整公钥即配置成功。
四、DMARC:告诉收件方怎么处理可疑邮件
DMARC 记录放在 _dmarc 子域:
| 主机记录 | 类型 | 记录值 |
|---|---|---|
_dmarc | TXT | v=DMARC1; p=none; rua=mailto:dmarc@example.com |
策略说明
| p 值 | 处理方式 | 建议 |
|---|---|---|
none | 只观察,不处理 | 刚上线先用这个 |
quarantine | 可疑邮件进垃圾箱 | SPF/DKIM 稳定后使用 |
reject | 直接拒收 | 确认所有发信源都配置完整后再用 |
rua 是聚合报告接收地址,可以是你的邮箱。先跑 1–2 周报告,确认所有合法发信源都通过 SPF/DKIM,再逐步收紧策略。
验证 DMARC
dig +short TXT _dmarc.example.com
五、域名验证类 TXT
很多服务会要求加一条 TXT 证明域名归你所有,例如:
| 场景 | 主机记录 | 记录值 |
|---|---|---|
| 腾讯云/阿里云域名验证 | @ 或指定前缀 | 服务商给的一串字符串 |
| Google Search Console | @ | google-site-verification=... |
| SSL 证书 DNS 验证 | _acme-challenge | ACME 客户端生成的字符串 |
| 邮箱服务商验证 | 指定前缀 | 服务商给的字符串 |
这类记录原样粘贴即可,验证通过后不要急着删,有些服务会定期复查。
六、常见冲突与错误
@ 的 CNAME 会导致收不到信
根域名如果加了 CNAME,会与 MX 冲突。部分 Local DNS 只返回 CNAME,邮件服务器找不到 MX,邮件就投递失败。
处理:
- 删除
@的 CNAME。 - 根域名改用 A/AAAA。
- 需要 CDN 时,用 CDN 厂商的固定 A 记录或 CNAME 展平方案。
旧 MX 没删
换邮箱服务商后,旧 MX 还在,邮件可能继续投递到旧服务器。只保留当前服务商的 MX。
SPF 记录重复
两条 v=spf1 会互相冲突,必须合并成一条。
DKIM 公钥被截断
复制时容易漏掉末尾字符,或者编辑器自动换行。用 dig 查到的值应与服务商后台完全一致。
能收不能发
按顺序排查:
- SPF 是否存在且包含当前发信服务商。
- DKIM 是否开启并正确发布。
- DMARC 是否过严(先改
p=none测试)。 - 服务器 IP 是否有反向解析(PTR),自建邮局尤其重要。
- IP 是否在垃圾邮件黑名单中。
七、上线检查清单
- MX 记录指向当前邮箱服务商,旧 MX 已清理
-
@没有 CNAME 与 MX 冲突 - SPF 只有一条,包含所有发信服务商
- DKIM 已开启,公钥完整
- DMARC 已配置,初始
p=none -
dig MX/dig TXT验证通过 - 用外部邮箱(Gmail、QQ 邮箱)互发测试
- 检查邮件原文中的
SPF: PASS、DKIM: PASS、DMARC: PASS
相关阅读: