非官方中文译本声明:本页为 IETF RFC 3463《Enhanced Mail System Status Codes》 的非官方中文译本,由 ztpop.net 整理翻译,仅供学习参考。RFC 文档由 IETF 发布、不受版权限制;依据 BCP 78,本译本为署名翻译作品,译文力求忠实但不构成官方版本,权威性以英文原文为准。英文原文见 rfc-editor.org/rfc/rfc3463。
RFC 3463《增强型邮件系统状态码》中文译本
摘要
本文档定义了一组扩展状态代码,供邮件系统用于投递状态报告、跟踪和改进诊断。结合投递状态通知(DSN)投递报告中提供的其他信息,这些代码可促进与媒体和语言无关的消息投递状态呈现。
本备忘录状态
本文档规定了面向 Internet 团体的 Internet 标准跟踪协议,并请求讨论和改进建议。请参阅当前版《Internet 官方协议标准》(STD 1)了解该协议的标准化状态与状况。本备忘录的分发不受限制。
版权声明
Copyright (C) The Internet Society (2003). 保留所有权利。
1. 概述
需要一种标准机制来报告邮件系统错误,比 SMTP 所提供的有限集合以及邮件消息中发送的系统特定文本描述更丰富。迫切需要一个丰富的、机器可读的、与人类语言无关的状态码,用于投递状态通知 [DSN]。本文档为此目的提出了一组新的状态码。
SMTP [SMTP] 错误码历来用于报告邮件系统错误。由于 SMTP 代码设计的局限性,它们不适用于投递状态通知。SMTP 为投递报告提供了约 12 个有用代码。这些代码中的大多数是协议特定的响应码,例如对 SMTP data 命令的 354 响应。这 12 个有用代码中的每一个都被重载以表示多种错误情况。SMTP 在历史上留下了一些伤痕,最显著的是由于不受控制的使用而对回复码扩展机制造成的不幸损害。本提案通过要求客户端依据代码理论解释未知错误码,同时要求服务器注册新的响应码,促进了未来的可扩展性。
SMTP 回复码理论在数字空间中的划分方式使得剩余可用代码将无法提供足够的空间。最关键的例子是仅剩 5 个代码用于邮件系统错误。邮件系统分类同时包含主机和邮箱错误情况。剩余的第三位数字空间将被完全消耗,用于指示 MIME 与媒体转换错误以及安全系统错误。
对 SMTP 回复码理论进行修订以更好地在数字空间中分布错误情况,必然与 SMTP 不兼容。此外,将剩余的回复码数字空间用于投递通知报告将减少可用于新 ESMTP 扩展的代码。
以下状态码集合基于 SMTP 回复码理论。它采纳了第一个值的成功、永久错误和瞬时错误语义,并在第二个值中作进一步描述和分类。本提案重新分配了分类,以更好地分布错误情况,例如将邮箱错误与主机错误分离。
文档约定
本文中的关键词“必须(MUST)”“必须不(MUST NOT)”“需要(REQUIRED)”“应(SHALL)”“不应(SHALL NOT)”“应当(SHOULD)”“不应当(SHOULD NOT)”“推荐(RECOMMENDED)”“可以(MAY)”和“可选(OPTIONAL)”应按 BCP 14 [RFC2119] 中的描述进行解释。
2. 状态码结构
本文档定义了一组新的状态码以报告邮件系统状况。这些状态码用于与媒体和语言无关的状态报告。它们不用于系统特定的诊断。
新状态码的语法定义如下:
status-code = class "." subject "." detail class = "2"/"4"/"5" subject = 1*3digit detail = 1*3digit
状态码内部不允许使用空白字符和注释。状态码中的每个数字子码必须不带前导零数字表示。
状态码由三个用“.”分隔的数字字段组成。第一个子码指示投递尝试是否成功。第二个子码指示任何投递异常的可能来源,第三个子码指示确切的错误情况。
示例:2.1.23
所定义的代码空间仅意图通过标准跟踪(Standards Track)文档扩展。邮件系统特定的状态码应当尽可能映射到标准状态码。服务器应当只发送已定义、已注册的状态码。系统特定的错误和诊断应当通过状态码以外的方式承载。
新的 subject 和 detail 代码将随时间添加。由于数字空间很大,不意图让已发布的状态码被重新定义或消除。当特定 detail 无法识别时,客户端应当通过报告 subject 子码中描述的一般错误来保持代码空间的可扩展性。
class 子码对状态提供宽泛的分类。每一类的枚举值定义如下:
- 2.XXX.XXX 成功(Success):成功表示 DSN 正在报告一个正向的投递动作。detail 子码可提供投递所需转换的通知。
- 4.XXX.XXX 持续性瞬时失败(Persistent Transient Failure):持续性瞬时失败是指所发送的消息有效,但某些临时状态的持续导致发送尝试被放弃或延迟。若此代码伴随投递失败报告,未来发送可能成功。
- 5.XXX.XXX 永久失败(Permanent Failure):永久失败是指不太可能通过以当前形式重发消息来解决。必须更改消息或目标才能成功投递。
客户端必须(MUST)识别并报告 class 子码,即使在后续 subject 子码无法识别的情况下。
subject 子码对状态进行分类。此值适用于三种分类中的每一种。subject 子码若被识别,则必须(MUST)被报告,即使 detail 子码提供的附加细节未被识别。subject 子码的枚举值如下:
- X.0.XXX 其他或未定义状态(Other or Undefined Status):没有可用的附加 subject 信息。
- X.1.XXX 编址状态(Addressing Status):地址状态报告源或目标地址的情况。它可能包括地址语法或有效性。这些错误通常可由发件人纠正并重试。
- X.2.XXX 邮箱状态(Mailbox Status):邮箱状态表示与邮箱相关的某事导致了此 DSN。邮箱问题假定由收件人一般控制。
- X.3.XXX 邮件系统状态(Mail System Status):邮件系统状态表示与目标系统相关的某事导致了此 DSN。系统问题假定由目标系统管理员一般控制。
- X.4.XXX 网络与路由状态(Network and Routing Status):网络或路由代码报告有关投递系统本身的状态。这些系统组件包括目录和路由服务等任何必要的基础设施。网络问题假定由目标或中间系统管理员控制。
- X.5.XXX 邮件投递协议状态(Mail Delivery Protocol Status):邮件投递协议状态码报告涉及消息投递协议的失败。这些失败包括由实现错误或不可靠连接导致的各类问题。
- X.6.XXX 消息内容或媒体状态(Message Content or Media Status):消息内容或媒体状态码报告涉及消息内容的失败。这些代码报告因转换(translation)、转码(transcoding)或不被支持的消息媒体而导致的失败。消息内容或媒体问题由发送方和接收方共同控制,双方都必须支持一组共同的受支持内容类型(content-types)。
- X.7.XXX 安全或策略状态(Security or Policy Status):安全或策略状态码报告涉及策略的失败,例如基于收件人或基于主机的过滤以及密码学操作。安全和策略状态问题假定由发送方和/或接收方控制。发送方和接收方都必须允许消息交换,并安排密码学操作所需密钥与证书的交付。
3. 枚举状态码
以下章节定义并描述 detail 子码。detail 值提供关于状态的更多信息,并相对于状态的 subject 定义。
3.1 其他或未定义状态
| 状态码 | 名称 | 含义说明 |
|---|---|---|
| X.0.0 | Other undefined Status | 其他未定义状态是唯一的未定义错误码。它应当用于所有仅已知错误类别(class)的错误。 |
3.2 地址状态
| 状态码 | 名称 | 含义说明 |
|---|---|---|
| X.1.0 | Other address status | 消息中指定的地址的某些方面导致了此 DSN。 |
| X.1.1 | Bad destination mailbox address | 目标邮箱地址错误:地址中指定的邮箱不存在。对于 Internet 邮件名,这意味着“@”符号左侧的地址部分无效。此代码仅适用于永久失败。 |
| X.1.2 | Bad destination system address | 目标系统地址错误:地址中指定的目标系统不存在或无能力接收邮件。对于 Internet 邮件名,这意味着“@”右侧的地址部分对邮件无效。此代码仅适用于永久失败。 |
| X.1.3 | Bad destination mailbox address syntax | 目标邮箱地址语法错误:目标地址在语法上无效。这可适用于地址中的任何字段。此代码仅适用于永久失败。 |
| X.1.4 | Destination mailbox address ambiguous | 目标邮箱地址有歧义:指定的邮箱地址匹配目标系统上的一个或更多收件人。若使用启发式地址映射算法将指定地址映射到本地邮箱名,可能产生此情况。 |
| X.1.5 | Destination address valid | 目标地址有效:指定的该邮箱地址有效。此状态码应当用于正向投递报告。 |
| X.1.6 | Destination mailbox has moved, No forwarding address | 目标邮箱已迁移,无转发地址:所提供的邮箱地址曾一度有效,但已不再接收发往该地址的邮件。此代码仅适用于永久失败。 |
| X.1.7 | Bad sender's mailbox address syntax | 发件人邮箱地址语法错误:发件人地址在语法上无效。这可适用于地址中的任何字段。 |
| X.1.8 | Bad sender's system address | 发件人系统地址错误:地址中指定的发件人系统不存在或无能力接收退信。对于域名,这意味着“@”右侧的地址部分对邮件无效。 |
3.3 邮箱状态
| 状态码 | 名称 | 含义说明 |
|---|---|---|
| X.2.0 | Other or undefined mailbox status | 其他或未定义邮箱状态:邮箱存在,但目标邮箱的某些方面导致了此 DSN 的发送。 |
| X.2.1 | Mailbox disabled, not accepting messages | 邮箱已禁用,不接收消息:邮箱存在,但不接收消息。若邮箱永远不会被重新启用,则这可能是永久错误;若邮箱只是暂时禁用,则这是瞬时错误。 |
| X.2.2 | Mailbox full | 邮箱已满:由于用户超出每邮箱的管理配额或物理容量,邮箱已满。一般语义意味着收件人可通过删除消息腾出更多空间。此代码应当用作持续性瞬时失败。 |
| X.2.3 | Message length exceeds administrative limit | 消息长度超出管理限制:已超出每邮箱的管理消息长度限制。当每邮箱消息长度限制小于一般系统限制时,应当使用此状态码。此代码应当用作永久失败。 |
| X.2.4 | Mailing list expansion problem | 邮件列表展开问题:该邮箱是邮件列表地址,且邮件列表无法展开。此代码可能表示永久失败或持续性瞬时失败。 |
3.4 邮件系统状态
| 状态码 | 名称 | 含义说明 |
|---|---|---|
| X.3.0 | Other or undefined mail system status | 其他或未定义邮件系统状态:目标系统存在且通常接收邮件,但系统的某些方面导致了此 DSN 的生成。 |
| X.3.1 | Mail system full | 邮件系统已满:已超出邮件系统存储。一般语义意味着单个收件人可能无法通过删除资料来为更多消息腾出空间。此代码仅可用作持续性瞬时错误。 |
| X.3.2 | System not accepting network messages | 系统不接收网络消息:邮箱所在的主机不接收消息。此类情况的例子包括即将关闭、负载过高或系统维护。此代码对永久错误和持续性瞬时错误均适用。 |
| X.3.3 | System not capable of selected features | 系统不支持所选功能:为消息指定的所选功能不被目标系统支持。当一个域的功能无法映射到另一域所支持的功能时,可能发生在网关中。 |
| X.3.4 | Message too big for system | 消息对系统过大:消息超出了每消息大小限制。此限制可能出于物理或管理原因。此代码仅可用作永久错误。 |
| X.3.5 | System incorrectly configured | 系统配置错误:系统的配置方式不允许其接收此消息。 |
3.5 网络与路由状态
| 状态码 | 名称 | 含义说明 |
|---|---|---|
| X.4.0 | Other or undefined network or routing status | 其他或未定义的网络或路由状态:网络出了某种问题,但不清楚问题是什么,或问题无法用其他提供的详细代码恰当表达。 |
| X.4.1 | No answer from host | 主机无应答:出站连接尝试未得到应答,原因是远程系统正忙或无法接听呼叫。此代码仅可用作持续性瞬时错误。 |
| X.4.2 | Bad connection | 连接不良:已建立出站连接,但无法完成消息事务,原因是超时或连接质量不足。此代码仅可用作持续性瞬时错误。 |
| X.4.3 | Directory server failure | 目录服务器失败:由于目录服务器不可用,网络系统无法转发消息。此代码仅可用作持续性瞬时错误。无法连接到 Internet DNS 服务器即为目录服务器失败错误的一例。 |
| X.4.4 | Unable to route | 无法路由:由于目录服务器无法提供必要的路由信息,邮件系统无法确定消息的下一跳。此代码对永久错误和持续性瞬时错误均适用。DNS 查询仅返回某域名的 SOA(Start of Administration,管理起始)记录即为无法路由错误的一例。 |
| X.4.5 | Mail system congestion | 邮件系统拥塞:由于邮件系统拥塞,无法投递消息。此代码仅可用作持续性瞬时错误。 |
| X.4.6 | Routing loop detected | 检测到路由循环:路由循环导致消息被转发过多次数,原因是路由表错误或用户转发循环。此代码仅可用作持续性瞬时错误。 |
| X.4.7 | Delivery time expired | 投递时间已过期:拒绝系统认为消息过旧,原因可能是其在那台主机上停留过久,或超出了消息发件人指定的存活时间(time-to-live)值。若可能,应当返回投递尝试时发现的实际问题的代码,而非此代码。 |
3.6 邮件投递协议状态
| 状态码 | 名称 | 含义说明 |
|---|---|---|
| X.5.0 | Other or undefined protocol status | 其他或未定义协议状态:将消息投递到下一跳所需的协议出了问题,且问题无法用其他提供的详细代码恰当表达。 |
| X.5.1 | Invalid command | 无效命令:发出的邮件事务协议命令要么顺序错误,要么不受支持。此代码仅可用作永久错误。 |
| X.5.2 | Syntax error | 语法错误:发出的邮件事务协议命令无法被解释,原因是语法错误或不被识别。此代码仅可用作永久错误。 |
| X.5.3 | Too many recipients | 收件人过多:为消息指定的收件人超出了协议所能投递的数量。此错误通常应导致消息被分割成两部分,其余收件人在后续投递尝试中投递。将其列入本表是考虑到这种分割可能无法进行的情况。 |
| X.5.4 | Invalid command arguments | 命令参数无效:发出了有效的邮件事务协议命令,但带有无效参数,原因是参数超出范围或表示未被识别的功能。此代码仅可用作永久错误。 |
| X.5.5 | Wrong protocol version | 协议版本错误:存在协议版本不匹配,且通信各方无法自动解决。 |
3.7 消息内容或消息媒体状态
| 状态码 | 名称 | 含义说明 |
|---|---|---|
| X.6.0 | Other or undefined media error | 其他或未定义媒体错误:消息内容的某些方面导致其被视为不可投递,且问题无法用其他提供的详细代码恰当表达。 |
| X.6.1 | Media not supported | 不支持的媒体:消息的媒体既不被投递协议支持,也不被转发路径中的下一系统支持。此代码仅可用作永久错误。 |
| X.6.2 | Conversion required and prohibited | 需要但不允许转换:消息内容必须先转换才能投递,但此种转换不被允许。此类禁止可能是发件人在消息本身中的表达,或发送主机的策略。 |
| X.6.3 | Conversion required but not supported | 需要但尚不支持的转换:消息内容必须先转换才能转发,但转发路径中的某台主机无法进行或不切实际地进行此种转换。当 ESMTP 网关支持 8bit 传输,但无法按下一跳要求将消息降级为 7 bit 时,可能出现此情况。 |
| X.6.4 | Conversion with loss performed | 已执行有损转换:这是当消息投递成功、但投递所需的转换丢失了部分数据时发送给发件人的警告。若发件人已表明禁止有损转换,此代码也可能是永久错误。 |
| X.6.5 | Conversion Failed | 转换失败:需要转换但未成功。这可用作永久或持续性临时通知。 |
3.8 安全或策略状态
| 状态码 | 名称 | 含义说明 |
|---|---|---|
| X.7.0 | Other or undefined security status | 其他或未定义安全状态:与安全相关的某事导致消息被退回,且问题无法用其他提供的详细代码恰当表达。当因现行安全策略而无法进一步描述该情况时,也可使用此状态码。 |
| X.7.1 | Delivery not authorized, message refused | 投递未授权,消息被拒:发件人未被授权发送到目标。这可能是基于主机的或基于收件人的过滤的结果。本备忘录不讨论任何此类过滤的优劣,但提供了报告此类情况的机制。此代码仅可用作永久错误。 |
| X.7.2 | Mailing list expansion prohibited | 禁止邮件列表展开:发件人未被授权向目标邮件列表发送消息。此代码仅可用作永久错误。 |
| X.7.3 | Security conversion required but not possible | 需要但不可能的安全转换:投递需要从一个安全消息协议转换到另一个,但此种转换不可能。此代码仅可用作永久错误。 |
| X.7.4 | Security features not supported | 不支持的安全功能:消息包含无法在投递协议上支持的安全功能(如安全认证)。此代码仅可用作永久错误。 |
| X.7.5 | Cryptographic failure | 密码学失败:一个原本被授权验证或解密传输中消息的传输系统无法这样做,原因是密钥等必要信息不可用或该信息无效。 |
| X.7.6 | Cryptographic algorithm not supported | 不支持的密码学算法:一个原本被授权验证或解密消息的传输系统无法这样做,原因是所需算法不受支持。 |
| X.7.7 | Message integrity failure | 消息完整性失败:一个原本被授权验证消息的传输系统无法这样做,原因是消息已损坏或被篡改。这可用作永久、持续性瞬时或成功的投递代码。 |
4. 规范性引用文件
- [RFC2119] Bradner, S., “Key words for use in RFCs to Indicate Requirement Levels”, BCP 14, RFC 2119, 1997 年 3 月。
- [SMTP] Postel, J., “Simple Mail Transfer Protocol”, STD 10, RFC 821, 1982 年 8 月。
- [DSN] Moore, K. 与 G. Vaudreuil, “An Extensible Message Format for Delivery Status Notifications”, RFC 3464, 2003 年 1 月。
5. 安全考虑
本文档描述了一个精度更高的状态码系统。使用这些状态码可能披露超出当前可得范围的、关于内部邮件系统如何实现方式的附加信息。
附录 A - 状态码汇总
| 状态码 | 名称 | 含义说明 |
|---|---|---|
| X.1.0 | Other address status | 其他地址状态 |
| X.1.1 | Bad destination mailbox address | 目标邮箱地址错误 |
| X.1.2 | Bad destination system address | 目标系统地址错误 |
| X.1.3 | Bad destination mailbox address syntax | 目标邮箱地址语法错误 |
| X.1.4 | Destination mailbox address ambiguous | 目标邮箱地址有歧义 |
| X.1.5 | Destination mailbox address valid | 目标邮箱地址有效 |
| X.1.6 | Mailbox has moved | 邮箱已迁移 |
| X.1.7 | Bad sender's mailbox address syntax | 发件人邮箱地址语法错误 |
| X.1.8 | Bad sender's system address | 发件人系统地址错误 |
| X.2.0 | Other or undefined mailbox status | 其他或未定义邮箱状态 |
| X.2.1 | Mailbox disabled, not accepting messages | 邮箱已禁用,不接收消息 |
| X.2.2 | Mailbox full | 邮箱已满 |
| X.2.3 | Message length exceeds administrative limit. | 消息长度超出管理限制 |
| X.2.4 | Mailing list expansion problem | 邮件列表展开问题 |
| X.3.0 | Other or undefined mail system status | 其他或未定义邮件系统状态 |
| X.3.1 | Mail system full | 邮件系统已满 |
| X.3.2 | System not accepting network messages | 系统不接收网络消息 |
| X.3.3 | System not capable of selected features | 系统不支持所选功能 |
| X.3.4 | Message too big for system | 消息对系统过大 |
| X.4.0 | Other or undefined network or routing status | 其他或未定义的网络或路由状态 |
| X.4.1 | No answer from host | 主机无应答 |
| X.4.2 | Bad connection | 连接不良 |
| X.4.3 | Routing server failure | 路由服务器失败 |
| X.4.4 | Unable to route | 无法路由 |
| X.4.5 | Network congestion | 网络拥塞 |
| X.4.6 | Routing loop detected | 检测到路由循环 |
| X.4.7 | Delivery time expired | 投递时间已过期 |
| X.5.0 | Other or undefined protocol status | 其他或未定义协议状态 |
| X.5.1 | Invalid command | 无效命令 |
| X.5.2 | Syntax error | 语法错误 |
| X.5.3 | Too many recipients | 收件人过多 |
| X.5.4 | Invalid command arguments | 命令参数无效 |
| X.5.5 | Wrong protocol version | 协议版本错误 |
| X.6.0 | Other or undefined media error | 其他或未定义媒体错误 |
| X.6.1 | Media not supported | 不支持的媒体 |
| X.6.2 | Conversion required and prohibited | 需要但不允许转换 |
| X.6.3 | Conversion required but not supported | 需要但尚不支持的转换 |
| X.6.4 | Conversion with loss performed | 已执行有损转换 |
| X.6.5 | Conversion failed | 转换失败 |
| X.7.0 | Other or undefined security status | 其他或未定义安全状态 |
| X.7.1 | Delivery not authorized, message refused | 投递未授权,消息被拒 |
| X.7.2 | Mailing list expansion prohibited | 禁止邮件列表展开 |
| X.7.3 | Security conversion required but not possible | 需要但不可能的安全转换 |
| X.7.4 | Security features not supported | 不支持的安全功能 |
| X.7.5 | Cryptographic failure | 密码学失败 |
| X.7.6 | Cryptographic algorithm not supported | 不支持的密码学算法 |
| X.7.7 | Message integrity failure | 消息完整性失败 |
附录 B - 相对 RFC 1893 的变更
- 更改了作者联系信息。
- 更新了必需的标准模板文字(boilerplate)。
- 编辑文本以符合拼写检查器和语法检查器的要求。
- 修改了描述持续性瞬时失败的文本,以更贴近当前的实践和理解。
- 取消了对 X.4.7 代码的限制(原限制其仅为持续性瞬时错误)。
作者地址
Gregory M. Vaudreuil
Lucent Technologies
7291 Williamson Rd
Dallas, Tx. 75214
电话:+1 214 823 9325
电子邮件:GregV@ieee.org
完整版权声明
Copyright (C) The Internet Society (2003). 保留所有权利。
本文档及其译本可以被复制并提供给他人,且可以准备、复制、出版和分发全部或部分地评论或以其他方式解释它或协助其实现的衍生作品,不附带任何种类限制,前提是在所有此类副本和衍生作品上包含上述版权声明及本段文字。但是,本文档本身不得以任何方式被修改,例如通过移除版权声明或对 Internet Society 或其他 Internet 组织的引用,除非为制定 Internet 标准所需,在此情况下必须遵循 Internet 标准流程中定义的版权程序,或为将其翻译成英语以外的语言所需。
上述授予的有限许可是永久性的,且不会被 Internet Society 或其继承者或受让者撤销。
本文档及其中包含的信息按“原样(AS IS)”基础提供,THE INTERNET SOCIETY 与 THE INTERNET ENGINEERING TASK FORCE 否认所有明示或暗示的保证,包括但不限于任何关于使用本文信息不会侵犯任何权利的保证,或任何关于适销性或特定用途适用性的暗示保证。
致谢
RFC Editor 职能的资助目前由 Internet Society 提供。
