国内邮箱专项
国内邮箱专项相关问题共 7 问,点击问题展开答案。每条对应一个具体错误码或场景,看完即可操作。
设置 rua=mailto:你@你的域名.com 后,支持 DMARC 的收件方(Gmail、Outlook、Yahoo 等)每天给你发一封或多封 ZIP 压缩邮件,里面是 XML 格式的聚合摘要报告——报告过去 24 小时内你的域名被哪些 IP 发信、发多少封、过没过 SPF/DKIM 验证、DMARC 最终结果。
一条报告记录的关键字段:
• <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)
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 parsedmarc → parsedmarc --file=report.xml 自动生成 CSV/JSON)
• MXToolbox DMARC Analyzer(在线简单查看)
• URIports(免费基础版)
建议选一个工具配置定期自动解包,人工看不过来。
参考:RFC 7489(DMARC)· DMARC.org · parsedmarc 项目主页
国内云厂商(云服务商)默认封禁云服务器 TCP 25 端口出方向流量,防止服务器被用作垃圾邮件发送源。
几乎所有 SMTP 服务商支持的替代端口:
465 端口(SSL 隐式加密)
587 端口(STARTTLS)
客户端/代码切换端口即可,无需申请。
云服务商:控制台 → 头像 → 安全管控 → 25端口解封 → 填写IP和域名 → 提交(约1个工作日审核)。
云服务商:部分云服务商支持即时解封(安全管控 → 25端口解封 → 选择实例,即时生效) → 安全管控 → 25端口解封 → 选择实例(即时生效,限5次)。
解封后需在安全组放行25端口出方向。禁止直连外部MTA发垃圾邮件,否则永久封禁。
参考:云服务商邮件推送 文档 · 云服务商 25端口解封文档 · RFC 8314
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
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 · 邮件系统帮助文档
DKIM签名包含对邮件正文的哈希值。收件方重新计算哈希,发现不匹配,说明正文在签名被添加后又被修改过。
1. 自动转发/邮件网关:中间服务器修改了正文(加footer/免责声明/编码转换)——最常见
2. 邮件列表/Mailman:在正文追加订阅信息和链接
3. MIME编码转换:如 Quoted-Printable → Base64
4. 反病毒/防泄露系统:在签名后追加安全标记或修改正文
确保 DKIM 签名在邮件处理链的最后一步生成(所有内容修改完成之后)。
使用宽松规范化(relaxed/relaxed而非 simple/simple),容忍空白和编码差异。
在线测试:dkimvalidator.com 或 mail-tester.com
参考:RFC 6376 DKIM Signatures §3.4 Body Length Limits · RFC 6376 §5.3 Relaxed Canonicalization · OpenDKIM 文档
退信头中的 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 规则文档
常见免费邮箱反垃圾系统(网易自研引擎)拒绝了你的邮件。DT:SPM 是网易专用反垃圾代码。常见触发:(1) 主题或正文含促销敏感词(如"免费""优惠""发票""促销");(2) 邮件中超链接过多;(3) 纯图片邮件几乎没有文字;(4) 短时间内向大量收件人发送相同内容。
1. 修改主题,去掉促销/营销类敏感词。
2. 减少邮件中的超链接数量。
3. 正文确保有足够文字(建议 ≥100 字),不要只发一张图片。
4. 发送时将自己(发件人)加入抄送(CC)——这经常是一个立竿见影的方法。
5. 降低单次发送量,分批发送。
6. 确认使用的是邮箱授权码(在邮箱设置中开启 SMTP 服务后获取)而非网页登录密码。
参考:163邮箱 SMTP 错误码说明 · 邮件系统帮助中心 · RFC 5321 §4.2.2
