非官方中文译本声明:本页为 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 子码对状态提供宽泛的分类。每一类的枚举值定义如下:

客户端必须(MUST)识别并报告 class 子码,即使在后续 subject 子码无法识别的情况下。

subject 子码对状态进行分类。此值适用于三种分类中的每一种。subject 子码若被识别,则必须(MUST)被报告,即使 detail 子码提供的附加细节未被识别。subject 子码的枚举值如下:

3. 枚举状态码

以下章节定义并描述 detail 子码。detail 值提供关于状态的更多信息,并相对于状态的 subject 定义。

3.1 其他或未定义状态

状态码名称含义说明
X.0.0Other undefined Status其他未定义状态是唯一的未定义错误码。它应当用于所有仅已知错误类别(class)的错误。

3.2 地址状态

状态码名称含义说明
X.1.0Other address status消息中指定的地址的某些方面导致了此 DSN。
X.1.1Bad destination mailbox address目标邮箱地址错误:地址中指定的邮箱不存在。对于 Internet 邮件名,这意味着“@”符号左侧的地址部分无效。此代码仅适用于永久失败。
X.1.2Bad destination system address目标系统地址错误:地址中指定的目标系统不存在或无能力接收邮件。对于 Internet 邮件名,这意味着“@”右侧的地址部分对邮件无效。此代码仅适用于永久失败。
X.1.3Bad destination mailbox address syntax目标邮箱地址语法错误:目标地址在语法上无效。这可适用于地址中的任何字段。此代码仅适用于永久失败。
X.1.4Destination mailbox address ambiguous目标邮箱地址有歧义:指定的邮箱地址匹配目标系统上的一个或更多收件人。若使用启发式地址映射算法将指定地址映射到本地邮箱名,可能产生此情况。
X.1.5Destination address valid目标地址有效:指定的该邮箱地址有效。此状态码应当用于正向投递报告。
X.1.6Destination mailbox has moved, No forwarding address目标邮箱已迁移,无转发地址:所提供的邮箱地址曾一度有效,但已不再接收发往该地址的邮件。此代码仅适用于永久失败。
X.1.7Bad sender's mailbox address syntax发件人邮箱地址语法错误:发件人地址在语法上无效。这可适用于地址中的任何字段。
X.1.8Bad sender's system address发件人系统地址错误:地址中指定的发件人系统不存在或无能力接收退信。对于域名,这意味着“@”右侧的地址部分对邮件无效。

3.3 邮箱状态

状态码名称含义说明
X.2.0Other or undefined mailbox status其他或未定义邮箱状态:邮箱存在,但目标邮箱的某些方面导致了此 DSN 的发送。
X.2.1Mailbox disabled, not accepting messages邮箱已禁用,不接收消息:邮箱存在,但不接收消息。若邮箱永远不会被重新启用,则这可能是永久错误;若邮箱只是暂时禁用,则这是瞬时错误。
X.2.2Mailbox full邮箱已满:由于用户超出每邮箱的管理配额或物理容量,邮箱已满。一般语义意味着收件人可通过删除消息腾出更多空间。此代码应当用作持续性瞬时失败。
X.2.3Message length exceeds administrative limit消息长度超出管理限制:已超出每邮箱的管理消息长度限制。当每邮箱消息长度限制小于一般系统限制时,应当使用此状态码。此代码应当用作永久失败。
X.2.4Mailing list expansion problem邮件列表展开问题:该邮箱是邮件列表地址,且邮件列表无法展开。此代码可能表示永久失败或持续性瞬时失败。

3.4 邮件系统状态

状态码名称含义说明
X.3.0Other or undefined mail system status其他或未定义邮件系统状态:目标系统存在且通常接收邮件,但系统的某些方面导致了此 DSN 的生成。
X.3.1Mail system full邮件系统已满:已超出邮件系统存储。一般语义意味着单个收件人可能无法通过删除资料来为更多消息腾出空间。此代码仅可用作持续性瞬时错误。
X.3.2System not accepting network messages系统不接收网络消息:邮箱所在的主机不接收消息。此类情况的例子包括即将关闭、负载过高或系统维护。此代码对永久错误和持续性瞬时错误均适用。
X.3.3System not capable of selected features系统不支持所选功能:为消息指定的所选功能不被目标系统支持。当一个域的功能无法映射到另一域所支持的功能时,可能发生在网关中。
X.3.4Message too big for system消息对系统过大:消息超出了每消息大小限制。此限制可能出于物理或管理原因。此代码仅可用作永久错误。
X.3.5System incorrectly configured系统配置错误:系统的配置方式不允许其接收此消息。

3.5 网络与路由状态

状态码名称含义说明
X.4.0Other or undefined network or routing status其他或未定义的网络或路由状态:网络出了某种问题,但不清楚问题是什么,或问题无法用其他提供的详细代码恰当表达。
X.4.1No answer from host主机无应答:出站连接尝试未得到应答,原因是远程系统正忙或无法接听呼叫。此代码仅可用作持续性瞬时错误。
X.4.2Bad connection连接不良:已建立出站连接,但无法完成消息事务,原因是超时或连接质量不足。此代码仅可用作持续性瞬时错误。
X.4.3Directory server failure目录服务器失败:由于目录服务器不可用,网络系统无法转发消息。此代码仅可用作持续性瞬时错误。无法连接到 Internet DNS 服务器即为目录服务器失败错误的一例。
X.4.4Unable to route无法路由:由于目录服务器无法提供必要的路由信息,邮件系统无法确定消息的下一跳。此代码对永久错误和持续性瞬时错误均适用。DNS 查询仅返回某域名的 SOA(Start of Administration,管理起始)记录即为无法路由错误的一例。
X.4.5Mail system congestion邮件系统拥塞:由于邮件系统拥塞,无法投递消息。此代码仅可用作持续性瞬时错误。
X.4.6Routing loop detected检测到路由循环:路由循环导致消息被转发过多次数,原因是路由表错误或用户转发循环。此代码仅可用作持续性瞬时错误。
X.4.7Delivery time expired投递时间已过期:拒绝系统认为消息过旧,原因可能是其在那台主机上停留过久,或超出了消息发件人指定的存活时间(time-to-live)值。若可能,应当返回投递尝试时发现的实际问题的代码,而非此代码。

3.6 邮件投递协议状态

状态码名称含义说明
X.5.0Other or undefined protocol status其他或未定义协议状态:将消息投递到下一跳所需的协议出了问题,且问题无法用其他提供的详细代码恰当表达。
X.5.1Invalid command无效命令:发出的邮件事务协议命令要么顺序错误,要么不受支持。此代码仅可用作永久错误。
X.5.2Syntax error语法错误:发出的邮件事务协议命令无法被解释,原因是语法错误或不被识别。此代码仅可用作永久错误。
X.5.3Too many recipients收件人过多:为消息指定的收件人超出了协议所能投递的数量。此错误通常应导致消息被分割成两部分,其余收件人在后续投递尝试中投递。将其列入本表是考虑到这种分割可能无法进行的情况。
X.5.4Invalid command arguments命令参数无效:发出了有效的邮件事务协议命令,但带有无效参数,原因是参数超出范围或表示未被识别的功能。此代码仅可用作永久错误。
X.5.5Wrong protocol version协议版本错误:存在协议版本不匹配,且通信各方无法自动解决。

3.7 消息内容或消息媒体状态

状态码名称含义说明
X.6.0Other or undefined media error其他或未定义媒体错误:消息内容的某些方面导致其被视为不可投递,且问题无法用其他提供的详细代码恰当表达。
X.6.1Media not supported不支持的媒体:消息的媒体既不被投递协议支持,也不被转发路径中的下一系统支持。此代码仅可用作永久错误。
X.6.2Conversion required and prohibited需要但不允许转换:消息内容必须先转换才能投递,但此种转换不被允许。此类禁止可能是发件人在消息本身中的表达,或发送主机的策略。
X.6.3Conversion required but not supported需要但尚不支持的转换:消息内容必须先转换才能转发,但转发路径中的某台主机无法进行或不切实际地进行此种转换。当 ESMTP 网关支持 8bit 传输,但无法按下一跳要求将消息降级为 7 bit 时,可能出现此情况。
X.6.4Conversion with loss performed已执行有损转换:这是当消息投递成功、但投递所需的转换丢失了部分数据时发送给发件人的警告。若发件人已表明禁止有损转换,此代码也可能是永久错误。
X.6.5Conversion Failed转换失败:需要转换但未成功。这可用作永久或持续性临时通知。

3.8 安全或策略状态

状态码名称含义说明
X.7.0Other or undefined security status其他或未定义安全状态:与安全相关的某事导致消息被退回,且问题无法用其他提供的详细代码恰当表达。当因现行安全策略而无法进一步描述该情况时,也可使用此状态码。
X.7.1Delivery not authorized, message refused投递未授权,消息被拒:发件人未被授权发送到目标。这可能是基于主机的或基于收件人的过滤的结果。本备忘录不讨论任何此类过滤的优劣,但提供了报告此类情况的机制。此代码仅可用作永久错误。
X.7.2Mailing list expansion prohibited禁止邮件列表展开:发件人未被授权向目标邮件列表发送消息。此代码仅可用作永久错误。
X.7.3Security conversion required but not possible需要但不可能的安全转换:投递需要从一个安全消息协议转换到另一个,但此种转换不可能。此代码仅可用作永久错误。
X.7.4Security features not supported不支持的安全功能:消息包含无法在投递协议上支持的安全功能(如安全认证)。此代码仅可用作永久错误。
X.7.5Cryptographic failure密码学失败:一个原本被授权验证或解密传输中消息的传输系统无法这样做,原因是密钥等必要信息不可用或该信息无效。
X.7.6Cryptographic algorithm not supported不支持的密码学算法:一个原本被授权验证或解密消息的传输系统无法这样做,原因是所需算法不受支持。
X.7.7Message integrity failure消息完整性失败:一个原本被授权验证消息的传输系统无法这样做,原因是消息已损坏或被篡改。这可用作永久、持续性瞬时或成功的投递代码。

4. 规范性引用文件

5. 安全考虑

本文档描述了一个精度更高的状态码系统。使用这些状态码可能披露超出当前可得范围的、关于内部邮件系统如何实现方式的附加信息。

附录 A - 状态码汇总

状态码名称含义说明
X.1.0Other address status其他地址状态
X.1.1Bad destination mailbox address目标邮箱地址错误
X.1.2Bad destination system address目标系统地址错误
X.1.3Bad destination mailbox address syntax目标邮箱地址语法错误
X.1.4Destination mailbox address ambiguous目标邮箱地址有歧义
X.1.5Destination mailbox address valid目标邮箱地址有效
X.1.6Mailbox has moved邮箱已迁移
X.1.7Bad sender's mailbox address syntax发件人邮箱地址语法错误
X.1.8Bad sender's system address发件人系统地址错误
X.2.0Other or undefined mailbox status其他或未定义邮箱状态
X.2.1Mailbox disabled, not accepting messages邮箱已禁用,不接收消息
X.2.2Mailbox full邮箱已满
X.2.3Message length exceeds administrative limit.消息长度超出管理限制
X.2.4Mailing list expansion problem邮件列表展开问题
X.3.0Other or undefined mail system status其他或未定义邮件系统状态
X.3.1Mail system full邮件系统已满
X.3.2System not accepting network messages系统不接收网络消息
X.3.3System not capable of selected features系统不支持所选功能
X.3.4Message too big for system消息对系统过大
X.4.0Other or undefined network or routing status其他或未定义的网络或路由状态
X.4.1No answer from host主机无应答
X.4.2Bad connection连接不良
X.4.3Routing server failure路由服务器失败
X.4.4Unable to route无法路由
X.4.5Network congestion网络拥塞
X.4.6Routing loop detected检测到路由循环
X.4.7Delivery time expired投递时间已过期
X.5.0Other or undefined protocol status其他或未定义协议状态
X.5.1Invalid command无效命令
X.5.2Syntax error语法错误
X.5.3Too many recipients收件人过多
X.5.4Invalid command arguments命令参数无效
X.5.5Wrong protocol version协议版本错误
X.6.0Other or undefined media error其他或未定义媒体错误
X.6.1Media not supported不支持的媒体
X.6.2Conversion required and prohibited需要但不允许转换
X.6.3Conversion required but not supported需要但尚不支持的转换
X.6.4Conversion with loss performed已执行有损转换
X.6.5Conversion failed转换失败
X.7.0Other or undefined security status其他或未定义安全状态
X.7.1Delivery not authorized, message refused投递未授权,消息被拒
X.7.2Mailing list expansion prohibited禁止邮件列表展开
X.7.3Security conversion required but not possible需要但不可能的安全转换
X.7.4Security features not supported不支持的安全功能
X.7.5Cryptographic failure密码学失败
X.7.6Cryptographic algorithm not supported不支持的密码学算法
X.7.7Message integrity failure消息完整性失败

附录 B - 相对 RFC 1893 的变更

作者地址

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 提供。