← RFC Reference

RFC 3463: 增强邮件系统状态代码

Current Standard Delivery Status & Bounce Handling Obsoletes RFC 1893 Published March 2026
ELI5: 基本 SMTP 给出一个三位数回复代码,例如"550",表示"某事失败了"。但它为什么失败了?地址错误?邮箱满?服务器过载?增强状态代码添加了一个更具体的三部分代码,例如 `5.1.1`(不良目标邮箱),这样你的软件可以区分差异并采取正确的行动。

存在的原因

SMTP 回复代码(RFC 5321)使用三位数字:250 表示成功,550 表示永久失败,421 表示临时问题。但这些代码对于自动处理来说太粗糙了。"550" 可能意味着:

每一种情况都需要发件人做出不同的响应。增强状态代码通过添加结构化的 class.subject.detail 代码来解决这个问题,该代码精确地标识问题。这些代码出现在 SMTP 响应中(通过 ENHANCEDSTATUSCODES 扩展)和 DSN 报告中(RFC 3464)的 Status 字段中。

工作原理

增强状态代码遵循 X.Y.Z 格式,其中每个分量都有明确的含义:

代码结构

分量 名称 含义
X 类别 成功 (2)、临时失败 (4) 或永久失败 (5)
Y 主题 问题类别(地址、邮箱、邮件系统、网络、协议、内容、安全)
Z 详情 该类别内的具体情况

SMTP 响应示例

RCPT TO:<user@example.org>
550 5.1.1 The email account that you tried to reach does not exist
     ^^^^^
     |   |
     |   +-- 详情 1 = 不良目标邮箱地址
     +------ 主题 1 = 地址状态
     类别 5 = 永久失败

在 DSN 报告中

Final-Recipient: rfc822;user@example.org
Action: failed
Status: 5.1.1
Diagnostic-Code: smtp; 550 5.1.1 User unknown

关键技术细节

类别值

类别 含义 发件人操作
2.X.X 成功 邮件已被接受或投递。无需操作。
4.X.X 持久临时失败 稍后重试。情况可能会自行解决。
5.X.X 永久失败 停止重试。邮件将永远无法投递到此地址。

主题值

主题 类别 示例
X.0.X 其他 / 未定义 未分类
X.1.X 寻址 不良邮箱、不良域、不良发件人
X.2.X 邮箱 邮箱满、已禁用、不接受邮件
X.3.X 邮件系统 邮件系统满、不接受邮件、无法支持所选功能
X.4.X 网络和路由 主机无响应、连接不良、路由错误
X.5.X 邮件投递协议 无效命令、协议语法错误
X.6.X 邮件内容 不支持的媒体、转换失败
X.7.X 安全 / 策略 需要身份验证、发件人被阻止、需要加密

电子邮件发件人最常见的代码

代码 含义 操作
5.1.1 不良目标邮箱地址 从列表中移除(硬退信)
5.1.2 不良目标系统地址(域) 从列表中移除
5.2.1 邮箱已禁用,不接受邮件 从列表中移除
4.2.2 邮箱满 稍后重试;多次失败后抑制
5.7.1 投递未授权,邮件被拒绝 检查身份验证和发件人信誉
4.7.1 临时身份验证失败 重试;检查 SPF/DKIM/DMARC 记录
5.7.26 DMARC 策略违反 修复 DMARC 对齐(SPF 或 DKIM 必须通过对齐域)
5.7.27 发件人地址的 MX 为空 为发送域添加有效的 MX 或 A 记录
4.4.1 连接超时 重试;检查 DNS 和网络连接
5.3.4 邮件对系统来说太大 减小邮件大小或附件

常见错误

可投递性影响

Related RFCs