国内邮箱专项

国内邮箱专项相关问题共 7 问,点击问题展开答案。每条对应一个具体错误码或场景,看完即可操作。

59 DMARC 聚合报告(rua XML)收到了看不懂,XML里一堆数据怎么看?SPF/DKIM 对齐(alignment)是什么?
什么是 DMARC 报告

设置 rua=mailto:你@你的域名.com 后,支持 DMARC 的收件方(Gmail、Outlook、Yahoo 等)每天给你发一封或多封 ZIP 压缩邮件,里面是 XML 格式的聚合摘要报告——报告过去 24 小时内你的域名被哪些 IP 发信、发多少封、过没过 SPF/DKIM 验证、DMARC 最终结果。

如何读取 XML

一条报告记录的关键字段:
<source_ip>:发信的源 IP 地址
<count>:从这个 IP 发了多少封
<disposition>:收件方实际处理(none=正常入收件箱,quarantine=入垃圾箱,reject=拒收)
<spf>result/pass|fail:SPF 验证结果
<dkim>result/pass|fail:DKIM 验证结果
<header_from>:你在 DMARC 中指定的 Header From 域名
<policy_evaluated>dkim/spf:DMARC 对齐判定(not just pass, but aligned)

SPF/DKIM 对齐(Alignment)

DMARC 要求不仅要 SPF/DKIM pass,还要"域名对齐"——即验证的域名必须与 From 头显示域名一致:
Strict(严格对齐):SPF 域=From 域、DKIM d=From 域(完全匹配)
Relaxed(宽松对齐):组织级域名相同(如 mail.example.com 与 example.com 也算对齐)
常见坑:你的 SPF pass 了但域名不对齐——因为 MAIL FROM 用的不是你自己的域名(比如用 SendGrid 发信但 MAIL FROM 是 sendgrid.net → SPF 对齐失败 → DMARC fail)。解决办法:第三方发信服务要配置自定义 MAIL FROM 域名。

报告分析工具

原始 XML 量很大(一天几千条),手动看不现实。免费工具:
dmarcian.com(Web 界面,免费基础版)
parsedmarc(开源 Python CLI:pip install parsedmarcparsedmarc --file=report.xml 自动生成 CSV/JSON)
MXToolbox DMARC Analyzer(在线简单查看)
URIports(免费基础版)
建议选一个工具配置定期自动解包,人工看不过来。

参考:RFC 7489(DMARC)· DMARC.org · parsedmarc 项目主页

72 云服务器发不了邮件,telnet smtp.xx.com 25 一直超时,怎么回事?怎么解决?
根因

国内云厂商(云服务商)默认封禁云服务器 TCP 25 端口出方向流量,防止服务器被用作垃圾邮件发送源。

方案A:改用加密端口(推荐)

几乎所有 SMTP 服务商支持的替代端口:
465 端口(SSL 隐式加密)
587 端口(STARTTLS)
客户端/代码切换端口即可,无需申请。

方案B:申请解封25端口

云服务商:控制台 → 头像 → 安全管控 → 25端口解封 → 填写IP和域名 → 提交(约1个工作日审核)。
云服务商:部分云服务商支持即时解封(安全管控 → 25端口解封 → 选择实例,即时生效) → 安全管控 → 25端口解封 → 选择实例(即时生效,限5次)。
解封后需在安全组放行25端口出方向。禁止直连外部MTA发垃圾邮件,否则永久封禁。

参考:云服务商邮件推送 文档 · 云服务商 25端口解封文档 · RFC 8314

73 SMTP端口25、465、587、2525有什么区别?我该用哪个?
各端口一览

25:MTA间中继(服务器→服务器),RFC 821(1982)定义。国内云厂商默认封禁。
465:SMTPS(隐式SSL/TLS),连接即加密。曾弃用,RFC 8314重新推荐为安全端口。
587:Submission(邮件提交端口),STARTTLS升级为加密,现代客户端标准。
2525:非标准备选端口,部分服务商(如SendGrid/Mailgun)提供以替代被封的25。

推荐用法

程序发信(Python/Java/PHP):587(STARTTLS)或465(SSL)
邮件客户端(Outlook/Foxmail/Thunderbird):587或465
自建MTA(Postfix/Exchange)对外通信:25
国内云服务器:直接弃用25,用465/587。

参考:RFC 821 · RFC 8314 · Mailgun: Which SMTP Port to Use

74 SMTP发信报错 553 Mail from must equal authorized user / sender rejected after DATA,怎么修复?
根因

553 表示发件地址与SMTP认证用户不匹配,服务器拒绝。常见于代码调用SMTP时 From地址写了一个未授权的地址。

修复步骤

1. SMTP认证用户名即你的完整邮箱地址(如 user@domain.com),不是前缀
2. 代码中 From 地址必须等于登录用户名
3. 腾讯企业邮/阿里企业邮支持代发:管理后台-添加允许代发的外域地址
4. SendGrid/Mailgun:先验证发件域名所有权才能用该域发信
5. Exchange Server:接收连接器权限勾选"匿名用户"

参考:RFC 4954 SMTP AUTH · RFC 6409 Message Submission · 邮件系统帮助文档

75 DKIM签名配置了,但测试或收件方报告 DKIM "body hash did not verify" / 签名验证失败,怎么修?
body hash did not verify 是什么

DKIM签名包含对邮件正文的哈希值。收件方重新计算哈希,发现不匹配,说明正文在签名被添加后又被修改过。

常见原因(按概率排序)

1. 自动转发/邮件网关:中间服务器修改了正文(加footer/免责声明/编码转换)——最常见
2. 邮件列表/Mailman:在正文追加订阅信息和链接
3. MIME编码转换:如 Quoted-Printable → Base64
4. 反病毒/防泄露系统:在签名后追加安全标记或修改正文

修复

确保 DKIM 签名在邮件处理链的最后一步生成(所有内容修改完成之后)。
使用宽松规范化(relaxed/relaxed而非 simple/simple),容忍空白和编码差异。
在线测试:dkimvalidator.commail-tester.com

参考:RFC 6376 DKIM Signatures §3.4 Body Length Limits · RFC 6376 §5.3 Relaxed Canonicalization · OpenDKIM 文档

76 退信说 SpamAssassin 拦截了我的邮件,X-Spam-Status: YES score=8.5 是什么意思?怎么让它不拦截?
解读 score

退信头中的 X-Spam-Status: Yes, score=8.5 required=5.0 表示:
score=8.5:SpamAssassin为此邮件打的垃圾概率总分
required=5.0:阈值,超过即判定为垃圾(YES)
后面列出命中的规则名,如 RCVD_IN_PBL, HTML_MESSAGE, BAYES_80

常见规则修复

RCVD_IN_PBL / RCVD_IN_XBL:发信IP在Spamhaus PBL或XBL → 到Spamhaus申请移除或换固定IP
HTML_MESSAGE + HTML_IMAGE_ONLY:只有图片没有文字 → 增加正文文本比例
BAYES_50/80/99:贝叶斯分析认为像垃圾邮件 → 大幅修改邮件文案
T_SPF_PERMERROR:SPF记录语法错误 → 修复SPF记录

收件方管理员

调高阈值:required_score 8.0(/etc/mail/spamassassin/local.cf)
添加白名单:whitelist_from *@trusted-domain.com
训练贝叶斯:sa-learn --ham 学习正常邮件

参考:SpamAssassin 官方文档 spamassassin.apache.org · Spamhaus PBL FAQ · SA 规则文档

32 用邮箱 SMTP 发信被拒,提示"554 DT:SPM",怎么解决?
原因

常见免费邮箱反垃圾系统(网易自研引擎)拒绝了你的邮件。DT:SPM 是网易专用反垃圾代码。常见触发:(1) 主题或正文含促销敏感词(如"免费""优惠""发票""促销");(2) 邮件中超链接过多;(3) 纯图片邮件几乎没有文字;(4) 短时间内向大量收件人发送相同内容。

操作

1. 修改主题,去掉促销/营销类敏感词。
2. 减少邮件中的超链接数量。
3. 正文确保有足够文字(建议 ≥100 字),不要只发一张图片。
4. 发送时将自己(发件人)加入抄送(CC)——这经常是一个立竿见影的方法。
5. 降低单次发送量,分批发送。
6. 确认使用的是邮箱授权码(在邮箱设置中开启 SMTP 服务后获取)而非网页登录密码。

参考:163邮箱 SMTP 错误码说明 · 邮件系统帮助中心 · RFC 5321 §4.2.2