← RFC Reference

RFC 5248: SMTP 增强状态代码注册表

Best Current Practice Delivery Status & Bounce Handling Obsoletes RFC 3463 Published March 2026
ELI5: RFC 3463 定义了原始增强状态代码集,如 `5.1.1`(用户不存在)。但电子邮件在不断发展——DMARC、TLS、新安全策略——每个都需要新的状态代码。RFC 5248 创建了官方 IANA 注册表,用于跟踪所有这些代码,并定义了添加新代码的规则,以便系统保持有序和一致。

为什么存在这个注册表

增强状态码(RFC 3463)使用三部分的 class.subject.detail 格式来精确描述邮件被接受、拒绝或延迟的原因。原始 RFC 定义了一组固定的代码,但新的电子邮件技术不断需要新代码:

没有正式的注册表,新代码可能会被临时分配,存在碰撞风险。RFC 5248 建立了 IANA"简单邮件传输协议(SMTP)增强状态码"注册表,具有明确的注册规则,并要求每个新代码都有明确的含义。

工作原理

该注册表按其三个组成部分组织代码。新代码通过 IETF 标准流程添加,每个条目记录:

注册表条目格式

字段 说明
代码 X.Y.Z 增强状态码
示例文本 条件的人类可读描述
关联的基本状态码 此增强代码可能出现的 SMTP 回复代码
说明 何时使用此代码的详细解释
参考 定义此代码的 RFC 或文档
提交者 请求注册的人
变更控制人 谁可以更新此条目(通常是 IESG)

带有注册表定义代码的 SMTP 响应

MAIL FROM:<sender@example.com>
250 2.1.0 Originator address accepted

RCPT TO:<user@example.org>
550 5.7.26 This message does not pass DMARC evaluation
     ^^^^^
     在 IANA 注册表中注册,由 RFC 7372 定义

RCPT TO:<nobody@null-mx.example>
556 5.1.10 Recipient address has null MX
     ^^^^^^
     在 IANA 注册表中注册,由 RFC 7505 定义

关键技术细节

枚举状态码(类别 + 主题)

RFC 5248 定义了"枚举状态码",其中组合了类别和主题值。类别保持为 2、4 或 5,主题值为:

主题 类别 示例代码
X.0.X 其他/未定义 X.0.0 — 其他未定义状态
X.1.X 寻址 5.1.1 邮箱错误、5.1.2 域错误、5.1.10 null MX
X.2.X 邮箱 4.2.2 邮箱满、5.2.1 邮箱已禁用
X.3.X 邮件系统 5.3.4 邮件过大
X.4.X 网络/路由 4.4.1 主机无应答、4.4.2 连接错误
X.5.X 邮件投递协议 5.5.1 无效命令、5.5.2 语法错误
X.6.X 邮件内容 5.6.1 不支持的媒体
X.7.X 安全/策略 5.7.1 投递被拒、5.7.26 DMARC 失败

自 RFC 3463 以来添加的代码

代码 含义 定义者
5.7.20 未找到通过 DKIM 签名 RFC 7372
5.7.21 未找到可接受的 DKIM 签名 RFC 7372
5.7.22 未找到有效的作者匹配 DKIM 签名 RFC 7372
5.7.23 SPF 验证失败 RFC 7372
5.7.24 SPF 验证错误 RFC 7372
5.7.25 反向 DNS 验证失败 RFC 7372
5.7.26 多个身份验证检查失败(DMARC) RFC 7372
5.7.27 发件人地址有 null MX RFC 7505
5.1.10 收件人地址有 null MX RFC 7505

注册策略

新代码根据 IANA 策略需要"规范要求"。这意味着必须有已发布的规范(通常是 RFC)来定义代码的语义。指定的专家审查员确保不与现有代码冲突,并且新代码适合在正确的主题类别内。

常见错误

可投递性影响

Related RFCs