SMTP回复码由3位数字和对应文本组成
回复中带文本,所以文本可能会跨越多行。
多行回复的格式要求除最后一行之外的每一行都以回复码开始,紧接着是连字符“-”(也称为减号),然后是文本。
最后一行将以回复代码开头,紧接着是 SP、可选的一些文本和 CRLF。
第一位表示响应状态程度,好、坏、不完整
不成熟的 SMTP 客户端或接收到意外代码的客户端将能够通过检查第一个数字来确定其下一步操作(按计划进行、重做、缩减等)。
1:1yz Positive Preliminary reply
命令已被接受,但请求的操作被搁置,等待确认此回复中的信息。 SMTP 客户端应该发送另一个命令来指定是继续还是中止该操作。
注意:未扩展的 SMTP 没有任何允许此类回复的命令,因此没有继续或中止命令。
2: 2yz Positive Completion reply
请求的操作已成功完成。 可能会发起新的请求。
3:3yz Positive Intermediate reply
命令已被接受,但要求的行动被搁置,等待收到进一步的信息。 SMTP 客户端应发送另一个指定此信息的命令。 此回复用于命令序列组。
4:4yz Transient Negative Completion reply
命令未被接受,请求的操作未发生。 但是,错误情况是暂时的,可能会再次请求该操作。 发送方应该返回到命令序列的开头(如果有的话)。 当两个不同的站点(接收方和发送方 SMTP 代理)必须就解释达成一致时,很难为“瞬时”赋予含义。 此类别中的每个回复可能具有不同的时间值,但鼓励 SMTP 客户端重试。
确定回复是否属于 4yz 或 5yz 类别的经验法则是,如果在命令形式或发送者或接收者的属性没有任何变化的情况下重复成功,则回复为 4yz(也就是说,命令以相同的方式重复,接收方没有提出新的实现。)
5:5yz Permanent Negative Completion reply
命令未被接受,请求的操作未发生。 不鼓励 SMTP 客户端重复确切的请求(以相同的顺序)。 甚至一些“永久性”错误条件也可以纠正,因此人类用户可能希望在将来的某个时间点(例如,拼写更改后,或者用户 更改了帐户状态)。
第二位表示某类错误,如邮件系统错误、命令语法错误等
SMTP客户端可以通过第二位数字进一步知道错误的类型
1:x0z Syntax
语法错误、语法正确但不适合任何功能类别的命令,以及未实现或多余的命令。
2: x1z Information
对信息请求的回复,例如状态或帮助。
3:x2z Connections
关于传输通道的回复。
4:x3z
未指定
5:x4z
未指定
6:x5z Mail system
指示接收方邮件系统相对于请求的传输或其他邮件系统操作的状态。
第三位常用于信息精准划分
第三个数字在第二个数字指定的每个类别中给出了更精细的含义分级。
按照功能分组
回复码 | 定义 | 语义 |
---|---|---|
500 | Syntax error, command unrecognized | 语法错误,命令无法识别,如命令行太长等) |
501 | Syntax error in parameters or arguments | 参数中的语法错误 |
502 | Command not implemented | 命令未执行 |
503 | Bad Sequence of commands | 命令序列错误 |
504 | Command parameter not implemented | 命令参数未实现 |
211 | System status, or system help reply | 系统状态或帮助 |
214 | Help message | 帮助信息 |
220 | domain Service ready | 服务就绪 |
221 | domain Service closing transmission channel | 服务关闭传输通道 |
421 | domain Service not available, closing transmission channel | 服务不可用,正在关闭传输通道 |
250 | Requested mail action okay, completed | 邮件操作正常,已完成 |
251 | User not local; will forward to <forward-path | 非本地用户; 将转发到 forward-path |
252 | Cannot VRFY user, but will accept message and attempt delivery | 不能核实用户,但将接受消息并尝试传递 |
450 | Requested mail action not taken: mailbox unavailable | 未执行邮件操作:邮箱不可用,如邮箱忙 |
550 | Requested action not taken: mailbox navailable | 未执行邮箱操作:邮箱不可用,如邮箱未找到、不可访问、由于策略原因命令被拒绝 |
451 | Requested action aborted: error in processing | 操作中止:处理错误 |
551 | User not local; please try | 非本地用户,请尝试 forward-path |
452 | Requested action not taken: insufficient system storage | 未执行操作:系统存储空间不足 |
552 | Requested mail action aborted: exceeded storage allocation | 邮件操作中止:超出存储分配 |
553 | Requested action not taken: mailbox name not allowed | 未执行操作:不允许使用邮箱名称,如邮箱语法不正确 |
354 | Start mail input; end with CRLF CRLF | 开始邮件输入,以 CRLF CRLF 结束 |
554 | Transaction failed | 业务失败 |