故障应急与诊断

故障应急与诊断相关问题共 9 问,点击问题展开答案。每条对应一个具体错误码或场景,看完即可操作。

34 退信提示"554 Spam detected by SpamAssassin (#5.3.4)",邮件被拦截了怎么处理?
原因

收件方使用 SpamAssassin 反垃圾系统,你的邮件触发了垃圾内容规则(如 BAYES_99、HTML_MESSAGE、URI_WPBL 等),综合评分超过拒绝阈值。

操作

1. 简化主题和正文,去掉过度营销化措辞。
2. 以纯文本格式发送一封测试邮件——如果通过说明原邮件 HTML 或链接触发了规则。
3. 减少邮件中的外链和图片数量。
4. 请收件人将你的发件地址加入白名单后重试。
5. 需要频繁与该收件方通信:请对方联系其邮件服务器管理员提供 SpamAssassin 命中规则详情。

参考:RFC 5321 §4.2.2 · Apache SpamAssassin Wiki

35 用第三方发信平台以自己域名发邮件,对方退信说 SPF 失败,怎么修?
原因

第三方平台的发信服务器 IP 未包含在你域名的 SPF 记录中。收件方检查 SPF 时发现发信 IP 不在授权列表里,导致 SPF Fail。

操作

1. 在 DNS 的 SPF 记录中加入该平台的 include: 机制:
   - SendGrid:include:sendgrid.net
   - Mailgun:include:mailgun.org
   - 阿里云邮件推送:include:dm.aliyun.com
   - AWS SES:include:amazonses.com
2. 合并示例:v=spf1 include:spf.protection.outlook.com include:sendgrid.net ~all
3. 为该平台配置 DKIM(平台提供 DKIM 公钥添加到 DNS)。
4. 等待 TTL 生效后用 MXToolbox SPF 检查器验证。

参考:RFC 7208 (SPF) §5.2 · SendGrid SPF Setup · Mailgun SPF Setup

49 发信退信"550 Domain frequency limited"、"Sender frequency limited"或"Connection frequency limited",有什么区别?怎么优化?
原因

QQ 邮箱有三层独立的发信频率限制:(1) Domain frequency limited = 整个发件域名的总发信量/频率触达阈值 → 封禁该域名所有发信若干分钟到若干小时;(2) Sender frequency limited = 单个发件人地址发信过快/过多 → 封禁该邮箱若干分钟;(3) Connection frequency limited = 发信 IP 并发连接数过多或短时间频繁建立/断开连接 → 封禁该 IP。QQ 邮箱不公开具体阈值数值。

操作

1. 统一先降低速率:单分钟 ≤60 封、每封间隔 1-2 秒、并发 SMTP 连接 ≤5。
2. 同一域名用多个子账号分摊发信量(noreply1@、noreply2@…)。
3. 不要把大量 QQ 号收件人集中一批发——分散到不同批次、穿插发给其他域名收件人。
4. 新 IP/新域名前 3 天日发 <500 封且均匀分布到全天(不要突发)。
5. 被限制后不要反复重试——大量重试延长封禁时间,通常等 1-6 小时自动解封。
6. 使用企业邮件系统作为发信通道,通常享有更高频率上限和内部信任。
7. 自建批量发信需高频 → 多 IP 部署 MTA 负载均衡。

参考:QQ 邮箱帮助中心 · winwebmail 退信说明 · RFC 5321 §4.5.3.2

54 自建邮件服务器发信被退"554 5.7.1 Recipient address rejected: Dynamic IP"或"Client host rejected: cannot find your hostname",动态IP/无PTR被拒怎么办?
原因

全球邮件服务商普遍使用 PBL(Policy Block List)和 dynamic/dial-up IP 范围名单拒绝从动态/住宅/ADSL/4G/5G IP 直接发来的邮件。同时多数服务商要求发信 IP 必须有 PTR 反向 DNS 记录(正向 A 指向该 IP → 反向 PTR 指回域名)。原因:动态 IP 是僵尸网络/垃圾邮件的最主要来源——全球 >90% 的垃圾邮件来自被感染的动态 IP 设备。

操作

1. 确认 IP 类型:在 Spamhaus PBL 查询你的 IP——如果被列出就是动态 IP 段,基本无法直投邮件。
2. 申请 PTR 记录:(a) 阿里云:控制台 → 弹性公网 IP → 反向解析 → 填写你的邮件主机名(如 mail.xxx.com)→ 确保域名 A 记录指向该 IP → 提交申请;(b) 其他云:联系客服工单。(c) 家庭宽带:ISP 通常不提供 PTR 设置。
3. 无法获取 PTR 时的替代方案:不要从该 IP 直接投递!改用 SMTP relay(中转)模式——把你的邮件通过认证后提交给专业发信平台:(a) 昆仑邮件系统 SMTP relay、(b) SendGrid、(c) Mailgun、(d) Amazon SES、(e) 各类邮件推送服务。这些平台的 IP 已有稳定信誉和 PTR。
4. Postfix 中转配置/etc/postfix/main.cf 中设置 relayhost = [smtp.sendgrid.net]:587 + SASL 认证即可。

参考:RFC 5321 §4.1.4(反向 DNS 建议)· RFC 1912 §2.1 · Spamhaus PBL

60 退信"553 5.7.3 CONTENT REJECT"或"550 5.7.1 Message rejected by content filtering",邮件内容被反垃圾过滤拒绝怎么办?
原因

与行为反垃圾(频率/速率/Q53)和认证验证(SPF/DKIM/Q46)不同——内容过滤是审核你邮件中写了什么。收件方的内容过滤引擎(如 SpamAssassin、Rspamd、微软 EOP、Google Content Filtering)扫描正文/主题/附件/H5代码后判定为垃圾特征而拒绝。常见触发:(1) 主题含大量感叹号、全大写、夸张营销语言("限时抢购!!!!""免费!!!100%有效!!!");(2) 正文链接过多、文字过少;(3) HTML 邮件含隐藏文字(如白色字体)、1x1 追踪像素、恶意 JavaScript;(4) 附件的文件头特征被识别为恶意;(5) 大量邮件正文雷同——群发邮件内容模板化程度过高。

操作

1. 简化主题:去掉所有感叹号和全大写、避免夸张词汇("免费""奇迹""100%")
2. 平衡正文:确保文字内容比例远大于链接数量(至少 3:1 的文字:链接比)
3. 去掉隐藏追踪:不插入 1px 追踪图、隐藏文字、恶意脚本
4. 先发纯文本版本测试:把同一封邮件改成纯文本(Plain Text)发送到目标地址——如果纯文本能过,说明 HTML 内容被拦截;修改 HTML 后重试
5. 差异化群发:避免所有邮件正文完全雷同——加上收件人姓名变量、调整部分措辞
6. 被误判时:请收件人把你的发件地址加入白名单/安全发件人列表

参考:SpamAssassin 规则文档 · 网易企业邮箱帮助 · RFC 5321

17 邮件显示"已发送成功",但对方说没收到(收件箱和垃圾箱都找不到),怎么回事?
原因

"已发送"仅表示发件服务器接受并投递了邮件,不等于对方一定收到了。常见原因:(1) 邮件被对方邮箱服务商无声丢弃;(2) 邮件被分到 Gmail 的"促销"/"社交"等非主收件箱标签页;(3) 收件人设了过滤规则将邮件移到其他文件夹。

操作

1. 请对方搜索你的发件地址,检查所有文件夹和标签页。
2. 请对方将你的发件地址加入通讯录/联系人。
3. 确认地址无误后重新发送并在正文注明"收到请回复"。
4. 持续出现此问题:用 mail-tester.com 测试邮件评分和可送达性。

参考:Google Gmail Category Tabs · NIST SP 800-177 Rev.1

18 今天突然所有发给客户/同事的邮件都退信,昨天还能正常发送,怎么应急排查?
原因

突然全面退信通常指向三类原因:发件 IP 刚被列入黑名单、DNS 记录失效或变更出错、邮箱账户被暂停或限流。

操作

按优先级排查:
1. 查黑名单:在 MXToolbox 输入发件 IP,看是否刚被列入 Spamhaus/Barracuda 等黑名单。
2. 查 DNS:确认 SPF/DKIM/DMARC 记录是否仍能查到。
3. 查账户状态:登录网页版邮箱看是否有异常提示(锁定、超额、暂停)。
4. 查变更:最近 24 小时内是否修改了 SMTP 配置或 DNS 记录?如有则回滚。
5. 联系服务商:以上都正常则联系邮箱服务商技术支持。

参考:MXToolbox Blacklist Check · RFC 7208 · RFC 6376 · RFC 7489

19 邮件发出去了没有退信,但对方说几小时甚至一两天后才收到,为什么?
原因

邮件延迟最常见原因是灰名单(greylisting, RFC 6647):收件方对首次见到的发信三元组返回临时拒收(4xx),发件服务器自动等待后重试。正常延迟在几分钟到一小时。更长的延迟可能由收件方服务器队列积压或网络路由问题导致。

操作

1. 延迟在 1 小时内:正常现象,无需处理。
2. 延迟超过 4 小时:联系邮件服务商技术支持,提供发件时间和收件地址,请其查询投递日志。
3. 频繁出现长延迟:企业邮箱用户请管理员检查发件服务器队列是否有积压。

参考:RFC 5321 §4.5.4.1 (Retry Strategies) · RFC 6647

20 收到退信但对退信代码一头雾水,怎么快速搞清楚邮件到底哪里出了问题?
原因

SMTP 退信包含标准化的状态码和诊断信息,无需逐字读懂整封退信也能抓出关键信息。

操作

1. 看第一位数字:4xx = 临时失败(系统会自动重试,无需操作);5xx = 永久失败(需人工修正后重发)。
2. 找到收件方返回的消息:退信中看 said:Remote Server returned 后面的内容——那是收件方邮件服务器给出的确切原因,最关键。
3. 按错误码搜索:把退信中的错误码(如"550 5.1.1")加关键词搜索,即可找到针对性解决方法。

参考:RFC 5321 §4.2 (SMTP Reply Codes) · RFC 3463 (Enhanced Mail System Status Codes)