邮件退信代码概述
邮件退信代码(SMTP 错误代码)定义在 RFC 5321 中,该文档是对最初的邮件传输协议的扩展和修订。RFC 5321 是当前广泛使用的 SMTP 标准,描述了邮件服务器在传输邮件过程中可能返回的状态码,包括退信时用到的错误代码。
退信代码通常是 3 位数的数字,分为以下几类:
- 2xx:成功代码。表示操作成功,例如
250 OK
表示邮件成功传送。 - 4xx:临时错误。表示问题是暂时的,客户端可以稍后重试,例如
450 Requested mail action not taken: mailbox unavailable
。 - 5xx:永久错误。表示问题是永久的,邮件不能送达,例如
550 Requested action not taken: mailbox unavailable
,通常表示邮箱不存在或被拒绝。
常见 4xx 和 5xx 系列退信代码
4xx 系列(临时错误,客户端可以稍后重试)
421 – Service not available, closing transmission channel
服务不可用,通常是服务器负载过高或暂时故障,关闭连接后可以稍后重试。
450 – Requested mail action not taken: mailbox unavailable
邮箱不可用,通常是邮箱空间不足或临时故障,稍后可以重试。
451 – Requested action aborted: local error in processing
本地处理错误,通常是服务器的临时问题,例如配置问题、文件系统问题等。
452 – Requested action not taken: insufficient system storage
系统存储空间不足,邮件不能发送,通常是服务器存储或邮箱空间用尽。
5xx 系列(永久错误,不能重试)
500 – Syntax error, command unrecognized
语法错误,命令无法识别,通常是由于客户端发送了不合法的 SMTP 命令。
501 – Syntax error in parameters or arguments
参数或命令语法错误,服务器无法处理。
502 – Command not implemented
未实现的命令,服务器不支持该命令。
503 – Bad sequence of commands
错误的命令顺序,例如在认证之前发送了需要认证的命令。
504 – Command parameter not implemented
参数未实现,通常是服务器不支持该命令的特定参数。
550 – Requested action not taken: mailbox unavailable
请求的操作未执行,目标邮箱不可用,通常是邮箱不存在或被拒收。
551 – User not local; please try <forward-path>
用户不在本地,建议尝试转发路径。通常是邮件地址被重定向。
552 – Requested mail action aborted: exceeded storage allocation
请求的操作被中止,目标邮箱超出存储配额。
553 – Requested action not taken: mailbox name not allowed
邮箱名称不合法,通常是因为格式不正确或该域名拒绝。
554 – Transaction failed
事务失败,通常是由于邮件内容或发件人被拒绝,例如垃圾邮件或病毒检测失败。
RFC 3463 扩展状态代码
除了基本的 3 位 SMTP 错误代码,RFC 3463 定义了更详细的扩展状态码。这些扩展状态码使用三组数字,每组数字由一个句点分隔,例如:5.1.1
。
扩展状态码示例:
5.1.1 – Bad destination mailbox address
邮箱地址不存在。
5.1.2 – Bad destination system address
系统地址无效,通常是域名解析失败。
5.2.2 – Mailbox full
邮箱已满。
5.3.4 – Message too large for system
消息太大,服务器无法接受。
5.4.1 – No answer from host
服务器无法联系目标主机,通常是网络问题。
5.7.1 – Delivery not authorized, message refused
拒绝投递,通常是由于发件人没有权限或内容被认为是垃圾邮件。
其他常见退信原因(非标准代码)
在实际使用中,不同的邮件服务器可能会有自定义的退信消息,或者在退信中包含额外的详细信息,例如:
- Greylisting:邮件服务器临时拒绝邮件,要求发件方稍后重试,通常是防止垃圾邮件的措施。
- SPF/DKIM/DMARC 失败:由于发件人的域名没有通过 SPF、DKIM 或 DMARC 认证,邮件被拒绝。