SMTP 退信代码全解析

IETF RFC 5321 / RFC 3463 / RFC 6647 · 运维必读

摘要

SMTP 应答码是邮件投递过程中接收方 MTA 返回的状态信号。正确理解应答码的类别、分组与增强状态码体系(RFC 3463),是诊断邮件投递故障的基础能力。本文系统梳理 4xx 临时失败与 5xx 永久失败两个大类,涵盖最常见的 421、450、451、550、554 等代码的具体含义、典型场景与排查路径。

1. SMTP 应答码结构

1.1 三位数字编码

SMTP 协议使用三位数字作为应答码(RFC 5321 §4.2),每位数字编码特定含义:

1.2 增强状态码

RFC 3463 在三位数字码之上增加了 X.Y.Z 格式的增强状态码。例如 550 5.7.1 Delivery not authorized 中:

2. 临时失败(4xx)

2.1 421 服务暂时不可用

语义:接收方服务器当前无法继续提供服务,通常与连接频率限制或资源耗尽相关。

常见场景

处置:降低发信并发数(建议 ≤ 5 个并发连接),减小每批次发送量。MTA 应自动按指数退避策略重试。

2.2 450 邮箱暂时不可用

语义:请求的邮箱当前不可用,最常见原因是灰名单(Greylisting)。

灰名单机制(RFC 6647):接收方 MTA 对新出现的发信三元组(IP + MAIL FROM + RCPT TO)首次连接返回 450 临时拒绝,要求发信方延迟后重试。合法 MTA 会按要求重试,而多数垃圾邮件发送软件不会维护重试队列。

配置建议:MTA 初始重试间隔建议 1-5 分钟,逐步递增。不应立即重发,否则可能被视为行为异常。

国内常见的 450 场景还包括:腾讯企业邮箱返回 450 4.7.1 Client host rejected(无 PTR 记录);网易邮箱返回 450 DT:SPM(内容触发反垃圾规则)。

2.3 451 / 452 资源临时不足

451:请求操作因本地处理错误中止。可能为 MTA 内部错误,通常无需发信方干预,接收方会自动恢复。

452:系统存储空间不足。接收方磁盘已满或者达到存储配额上限。出现此代码说明接收方服务器存在运维问题,而非发信方问题。

3. 永久失败(5xx)

3.1 550 请求操作未执行

550 是使用范围最广的永久失败代码,其具体含义由接收方附加的文本描述决定。

增强状态码文本描述含义
550 5.1.1Mailbox unavailable收件邮箱不存在或已禁用
550 5.1.8Access denied, bad outbound sender发信账户被标记(Exchange Online 受限用户)
550 5.7.1Relay denied客户端未通过 SMTP 认证尝试中继转发
550 5.7.0Message rejected due to content邮件内容命中反垃圾策略
550 5.7.25No PTR record发信 IP 缺少 PTR 反向解析(Gmail)
550 5.7.26Not authenticated未通过 SPF 或 DKIM 认证(Gmail)
550 5.7.708Traffic not acceptedIP 信誉过低(Exchange Online)

3.2 554 交易失败

语义:交易被拒绝,通常与反垃圾邮件策略相关。

典型场景

3.3 552 超出大小限制

语义:邮件体积超过接收方允许的最大值。Google 限制为 25MB(编码后),Exchange Online 默认 35MB。

需注意 SMTP 传输中的 Base64 编码会导致体积膨胀约 33%。

4. 排查方法论

收到退信后,按以下优先级排查:

  1. 阅读退信邮件正文:接收方附加的文本描述(如 "KB930521 MSExchange" 等内部参考编号)比泛化的三位代码更有诊断价值。
  2. 区分临时失败 vs 永久失败:4xx 通常不需要人工干预,等待 MTA 自动重试;5xx 需要定位并修复根因。
  3. 检查 Authentication-Results 头:如果原本能发但突然退信,提取退信邮件头中的 Authentication-Results 行,确认 SPF/DKIM/DMARC 仍处于 pass 状态。
  4. 查询黑名单:用 mxtoolbox.com 或 spamhaus.org 查询发信 IP。554 + "blocked" 关键词几乎一定指向 DNSBL 拦截。
  5. 验证 DNS 记录完整性:MX、SPF、DKIM、PTR(via dig -x)四项全部确认无误。

参考文献

  1. RFC 5321 — Simple Mail Transfer Protocol. J. Klensin. October 2008, §4.2 (SMTP Replies)
  2. RFC 3463 — Enhanced Mail System Status Codes. G. Vaudreuil. January 2003
  3. RFC 6647 — Email Greylisting: An Applicability Statement. M. Kucherawy, D. Crocker. June 2012
  4. RFC 5782 — DNS Blacklists and Whitelists. J. Levine. February 2010
  5. M³AAWG — Sender Best Common Practices v3.0. 2024