你刚配好自己的ref="/tag/186/" style="color:#C468A7;font-weight:bold;">邮件服务器,发出去的邮件却老被当成垃圾邮件?收件人那边显示“发件人无法验证”?十有八九,是 TXT 记录没配对。
TXT 记录不是摆设,是邮件的“身份证”
域名 DNS 里的 TXT 记录,看着不起眼,却是邮件可信度的关键。它不负责转发邮件,也不参与连接过程,但它告诉全世界:“这个域名发出来的邮件,谁有权发、怎么验、发错了怎么办”。常见的三类 TXT 记录——SPF、DKIM、DMARC,就是这三张身份证。
SPF:谁被允许代表我发信?
比如你用 mail.yourdomain.com 发信,但实际可能通过腾讯企业邮箱、阿里云邮件推送、或者自建 Postfix 服务器发送。SPF 就是列一张“白名单”,告诉收件方:“只有这些 IP 或服务能代我发信”。
常见写法:
v=spf1 include:spf.qiye.aliyun.com include:spf.mail.qq.com ip4:203.123.45.67 ~all注意:~all 表示“软失败”,-all 才是硬拒绝(更严格,推荐新手先用 ~all 观察几天)。
DKIM:这封邮件没被中途篡改过
SPF 防冒充来源,DKIM 防内容被改。它用一对密钥签名:邮件服务器用私钥签名,收件方用你在 DNS 里公开的公钥 TXT 记录来验签。名字通常是类似 default._domainkey.yourdomain.com 的格式。
v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+...(一长串 Base64 字符)这个值由你的邮件服务商或 MTA 自动生成,复制粘贴进 DNS 即可,别手敲、别换行、别加空格。
DMARC:我要求你怎么处理验不过的邮件
SPF 和 DKIM 验证失败后,对方到底该放行、隔离,还是直接拒收?DMARC 告诉你。它本身不验证,只管“善后”。典型记录:
v=DMARC1; p=none; rua=mailto:dmarc-reports@yourdomain.com; ruf=mailto:forensics@yourdomain.com; fo=1其中 p=none 是观察模式(日志照收,但不干预投递),适合刚上线时用;等确认 SPF/DKIM 稳定运行一周后,可逐步改为 p=quarantine 或 p=reject。
别漏掉一个细节:所有 TXT 记录都必须以 v= 开头,且整个值要放在一行里。有些 DNS 后台会自动帮你加引号或拆行,务必检查最终解析结果是否和你填的一致(可用 dig yourdomain.com TXT 或在线工具如 mxtoolbox.com 验证)。
最后提醒一句:改完 TXT 不是立刻生效。DNS 缓存时间(TTL)通常为 300 秒到 1 小时,但某些运营商缓存可能长达 24 小时。别急着反复重试,等够时间再测更靠谱。