跳到主要内容

邮箱解析配置:MX、SPF、DKIM、DMARC

邮箱解析分两层:

  • MX:决定别人发给你的邮件投递到哪台服务器,配错就收不到信。
  • SPF / DKIM / DMARC:决定你发出去的邮件是否被判定为伪造,配错就容易进垃圾箱。

DNSPod 只负责托管这些 DNS 记录,邮箱本身要另外开通(腾讯企业邮、飞书邮箱、Google Workspace、自建 Postfix 等)。

一、MX:先保证能收信​

腾讯企业邮 / 企业微信邮箱​

添加两条 MX,主机记录都是 @:

主机记录类型线路记录值优先级TTL
@MX默认mxbiz1.qq.com.5600
@MX默认mxbiz2.qq.com.10600

规则:

  • 优先级数字越小越优先,邮件先投递给 mxbiz1,失败再投递给 mxbiz2。
  • 只保留当前邮箱服务商的 MX。换邮箱服务商时,先把旧 MX 全部删掉,否则邮件可能投递到旧服务器。
  • MX 的记录值是域名,不是 IP;如果服务商给的是 mail.example.com,要确保 mail 有 A 记录。

自建邮局​

主机记录类型记录值优先级
@MXmail.example.com.10
mailA邮件服务器公网 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 记录里。

腾讯企业邮​

主机记录类型记录值
@TXTv=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._domainkeyTXTv=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 子域:

主机记录类型记录值
_dmarcTXTv=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-challengeACME 客户端生成的字符串
邮箱服务商验证指定前缀服务商给的字符串

这类记录原样粘贴即可,验证通过后不要急着删,有些服务会定期复查。

六、常见冲突与错误​

@ 的 CNAME 会导致收不到信​

根域名如果加了 CNAME,会与 MX 冲突。部分 Local DNS 只返回 CNAME,邮件服务器找不到 MX,邮件就投递失败。

处理:

  • 删除 @ 的 CNAME。
  • 根域名改用 A/AAAA。
  • 需要 CDN 时,用 CDN 厂商的固定 A 记录或 CNAME 展平方案。

旧 MX 没删​

换邮箱服务商后,旧 MX 还在,邮件可能继续投递到旧服务器。只保留当前服务商的 MX。

SPF 记录重复​

两条 v=spf1 会互相冲突,必须合并成一条。

DKIM 公钥被截断​

复制时容易漏掉末尾字符,或者编辑器自动换行。用 dig 查到的值应与服务商后台完全一致。

能收不能发​

按顺序排查:

  1. SPF 是否存在且包含当前发信服务商。
  2. DKIM 是否开启并正确发布。
  3. DMARC 是否过严(先改 p=none 测试)。
  4. 服务器 IP 是否有反向解析(PTR),自建邮局尤其重要。
  5. IP 是否在垃圾邮件黑名单中。

七、上线检查清单​

  • MX 记录指向当前邮箱服务商,旧 MX 已清理
  • @ 没有 CNAME 与 MX 冲突
  • SPF 只有一条,包含所有发信服务商
  • DKIM 已开启,公钥完整
  • DMARC 已配置,初始 p=none
  • dig MX / dig TXT 验证通过
  • 用外部邮箱(Gmail、QQ 邮箱)互发测试
  • 检查邮件原文中的 SPF: PASS、DKIM: PASS、DMARC: PASS

相关阅读: