SMTP 响应码
邮件退信和拒收时附带的三位 SMTP 响应码及增强状态码(X.Y.Z)参考。可按代码或文本搜索,也可以直接粘贴服务器返回的整行内容。

共 117 个代码,显示 117 个

基本响应码

2xx肯定完成应答9
211System status

系统状态或系统帮助应答。实际中很少使用。

RFC 5321
214Help message

对 HELP 命令返回的帮助信息,说明服务器或某个命令的用法。

RFC 5321
220Service ready

建立连接时服务器的初始问候,表示服务已就绪。也用于响应 STARTTLS,表示可以开始 TLS 协商。

RFC 5321
221Service closing transmission channel

服务器关闭连接,通常是对 QUIT 命令的响应。

RFC 5321
235Authentication successful

AUTH 身份验证成功。通常附带增强码 2.7.0。

RFC 4954
250Requested mail action okay, completed

请求的操作已完成。这是对 EHLO、MAIL FROM、RCPT TO 的常规响应,也会在 DATA 结束、服务器接受邮件时返回。

RFC 5321
251User not local; will forward

收件人不是本地用户,但服务器接受该邮件,并会转发到指定地址。

RFC 5321
252Cannot VRFY user, but will accept message

服务器不确认用户是否存在(为防止账户枚举而禁用了 VRFY),但会接受邮件并尝试投递。

RFC 5321
253OK, pending messages for node started

对 ETRN 的响应:服务器已开始投递队列中发往所请求域名或节点的邮件。

RFC 1985 (ETRN)
3xx肯定中间应答2
334Server challenge

AUTH 过程中服务器发出的 Base64 编码质询。客户端必须用认证机制的下一项数据作答(例如 AUTH LOGIN 中的用户名或密码)。

RFC 4954
354Start mail input

对 DATA 的响应:服务器等待接收邮件内容,内容以一个只包含句点的行结束。

RFC 5321
4xx暂时性错误9
421Service not available, closing transmission channel

服务不可用,服务器关闭连接:可能是正在关机、负载过高、连接数过多或触发了临时发送限制。发件方应稍后重试。

RFC 5321
432A password transition is needed

用户必须先修改密码或改用其他认证机制,才能完成身份验证。附带增强码 4.7.12。

RFC 4954
450Requested mail action not taken: mailbox unavailable

邮箱暂时不可用:忙、被锁定,或因策略被暂时拒绝。灰名单(greylisting)通常返回此代码或 451。

RFC 5321
451Requested action aborted: local error in processing

由于服务器本地错误(如 DNS 查询失败或过滤器无响应)操作已中止。发件方应稍后重试。

RFC 5321
452Requested action not taken: insufficient system storage

服务器暂时没有足够空间接收该邮件。也可能表示超出了单封邮件的收件人数量上限,此时客户端应在另一个事务中发送其余收件人。

RFC 5321
454Temporary authentication failure

暂时性的认证失败(例如凭据服务器无响应),或请求 STARTTLS 时 TLS 暂时不可用。

RFC 4954 / RFC 3207
455Server unable to accommodate parameters

服务器暂时无法处理 MAIL FROM 或 RCPT TO 中发送的参数,但稍后可能会接受。

RFC 5321
458Unable to queue messages for node

对 ETRN 的响应:服务器暂时无法处理所请求节点的邮件队列。

RFC 1985 (ETRN)
459Node not allowed

对 ETRN 的响应:所请求的节点或域名无权请求投递其队列。

RFC 1985 (ETRN)
5xx永久性错误17
500Syntax error, command unrecognized

服务器无法识别该命令,或该行过长。AUTH 交互中某一行超过允许的最大长度时也会返回此代码。

RFC 5321
501Syntax error in parameters or arguments

命令有效,但参数无效:例如 MAIL FROM 中的地址格式错误,或 EHLO 中的名称无效。

RFC 5321
502Command not implemented

服务器能识别该命令,但未实现或已禁用,许多服务器上的 VRFY 和 EXPN 就是如此。

RFC 5321
503Bad sequence of commands

命令顺序错误,例如在 MAIL FROM 之前发送 RCPT TO,或在没有有效收件人时发送 DATA。有些服务器在未认证就尝试发信时也会返回此代码。

RFC 5321
504Command parameter not implemented

服务器不支持所指定的参数,例如请求了不支持的 AUTH 机制。

RFC 5321
521Server does not accept mail

该主机不接收任何邮件。它代替 220 作为问候语发送,客户端不应重试。

RFC 7504
530Authentication required

服务器要求先进行身份验证,或先用 STARTTLS 启动 TLS,才能接受该命令。未提供凭据就使用 587 提交端口时很常见。

RFC 4954 / RFC 3207
534Authentication mechanism is too weak

按照服务器的策略,所选认证机制强度太弱。要求使用应用专用密码或 OAuth 的邮件服务商有时会返回此代码。

RFC 4954
535Authentication credentials invalid

用户名或密码错误,或凭据被拒绝。附带增强码 5.7.8。

RFC 4954
538Encryption required for requested authentication mechanism

所选认证机制只允许在加密连接上使用:必须先执行 STARTTLS。

RFC 4954
550Requested action not taken: mailbox unavailable

邮箱不存在或不可用,或邮件因策略被拒绝(垃圾邮件、黑名单、SPF、DKIM 或 DMARC)。具体原因要看随附的增强码。

RFC 5321
551User not local; please try forward-path

收件人不是本地用户,服务器不会转发该邮件;可能会提示应发送到哪个地址。

RFC 5321
552Requested mail action aborted: exceeded storage allocation

超出分配的存储空间:收件人邮箱已满,或邮件超过了 SIZE 扩展声明的最大大小。

RFC 5321
553Requested action not taken: mailbox name not allowed

邮件地址无效或不被允许,例如语法错误,或发件人无权使用该地址。

RFC 5321
554Transaction failed

事务失败。若作为初始问候出现,表示不为该客户端提供 SMTP 服务;若出现在 DATA 之后,表示邮件被拒收,通常是因为内容或发件人信誉。

RFC 5321
555MAIL FROM/RCPT TO parameters not recognized or not implemented

服务器无法识别或未实现 MAIL FROM 或 RCPT TO 中发送的扩展参数。

RFC 5321
556Domain does not accept mail

收件人域名发布了 null MX(指向“.”的 MX 记录),声明不接收邮件,因此重试没有意义。

RFC 7504

增强状态码(RFC 3463)

2.X.X成功4.X.X持续性暂时失败5.X.X永久失败
X.0其他或未定义1
X.0.0Other undefined status

无更多细节的状态:仅知道结果类别(成功、暂时失败或永久失败)时使用。

RFC 3463
X.1地址11
X.1.0Other address status

邮件中的某个地址有问题,且不属于更具体的代码。

RFC 3463
X.1.1Bad destination mailbox address

目标服务器上不存在该收件人邮箱。这是地址拼写错误或账户已注销导致的典型退信。

RFC 3463常搭配的代码
X.1.2Bad destination system address

目标域名或系统不存在或无法接收邮件,例如域名无法解析。

RFC 3463
X.1.3Bad destination mailbox address syntax

收件人地址语法无效。

RFC 3463常搭配的代码
X.1.4Destination mailbox address ambiguous

收件人地址在目标系统上匹配到多个邮箱。

RFC 3463
X.1.5Destination address valid

收件人地址有效。以 2.1.5 的形式出现在 RCPT TO 的肯定响应中。

RFC 3463常搭配的代码
X.1.6Destination mailbox has moved, No forwarding address

该邮箱曾经存在,但已迁移,且没有已知的转发地址。

RFC 3463
X.1.7Bad sender's mailbox address syntax

发件人地址语法无效。

RFC 3463
X.1.8Bad sender's system address

发件人域名不存在或不接收回复,例如既没有 MX 记录也没有 A 记录。

RFC 3463常搭配的代码
X.1.9Message relayed to non-compliant mailer

邮件已交给不支持状态通知的系统,因此无法确认最终是否投递成功。

RFC 3886
X.1.10Recipient address has null MX

收件人域名发布了 null MX,声明不接收邮件。

RFC 7505常搭配的代码
X.2邮箱5
X.2.0Other or undefined mailbox status

邮箱存在,但与其相关的某个问题导致无法投递,且没有更具体的代码。

RFC 3463
X.2.1Mailbox disabled, not accepting messages

邮箱存在但已被禁用,不接收邮件,例如账户已被停用。

RFC 3463
X.2.2Mailbox full

收件人邮箱已超出存储配额。

RFC 3463常搭配的代码
X.2.3Message length exceeds administrative limit

邮件超过了收件人允许接收的最大大小。

RFC 3463常搭配的代码
X.2.4Mailing list expansion problem

收件人是邮件列表,但无法展开为其成员。

RFC 3463常搭配的代码
X.3邮件系统7
X.3.0Other or undefined mail system status

目标系统出现问题,且不属于更具体的代码。

RFC 3463常搭配的代码
X.3.1Mail system full

目标邮件系统的存储空间已满。

RFC 3463常搭配的代码
X.3.2System not accepting network messages

目标主机因即将关机、负载过高或维护而暂不接收邮件。

RFC 3463 / RFC 7504常搭配的代码
X.3.3System not capable of selected features

目标系统不支持邮件所需的某项功能。

RFC 3463
X.3.4Message too big for system

邮件超过了服务器对任何收件人都接受的最大大小。

RFC 3463常搭配的代码
X.3.5System incorrectly configured

目标系统配置错误,无法接收该邮件。

RFC 3463
X.3.6Requested priority was changed

邮件已被接受,但使用的优先级与请求的不同(MT-PRIORITY 扩展)。

RFC 6710常搭配的代码
X.4网络与路由8
X.4.0Other or undefined network or routing status

出现网络或路由问题,且不属于更具体的代码。

RFC 3463
X.4.1No answer from host

尝试连接时目标服务器没有响应。

RFC 3463常搭配的代码
X.4.2Bad connection

连接已建立,但在投递完成前中断或变得不稳定。

RFC 3463常搭配的代码
X.4.3Directory server failure

投递所需的目录服务失败,通常是 DNS 解析失败。

RFC 3463常搭配的代码
X.4.4Unable to route

找不到通往目标的路由,例如域名没有可用的 MX 或 A 记录。

RFC 3463
X.4.5Mail system congestion

邮件系统拥塞,暂时无法处理该邮件。

RFC 3463常搭配的代码
X.4.6Routing loop detected

检测到路由环路:邮件在相同的服务器之间经过了太多次。

RFC 3463
X.4.7Delivery time expired

已超过最长重试时间,邮件未能投递并被丢弃。

RFC 3463
X.5投递协议7
X.5.0Other or undefined protocol status

投递协议出现问题,且不属于更具体的代码。

RFC 3463常搭配的代码
X.5.1Invalid command

命令无效、当前不允许使用,或无法识别。

RFC 3463常搭配的代码
X.5.2Syntax error

命令存在语法错误,服务器无法解析。

RFC 3463常搭配的代码
X.5.3Too many recipients

邮件的收件人数量超过了服务器在单个事务中允许的上限。

RFC 3463常搭配的代码
X.5.4Invalid command arguments

命令有效,但其参数无效或不受支持。

RFC 3463常搭配的代码
X.5.5Wrong protocol version

客户端与服务器的协议版本不兼容。

RFC 3463
X.5.6Authentication Exchange line is too long

AUTH 交互中的某一行超过了服务器允许的最大长度。

RFC 4954常搭配的代码
X.6邮件内容10
X.6.0Other or undefined media error

邮件内容有问题,且不属于更具体的代码。

RFC 3463
X.6.1Media not supported

目标不支持邮件或其某个附件的内容类型。

RFC 3463
X.6.2Conversion required and prohibited

投递邮件需要转换其内容,但发件人禁止转换。

RFC 3463
X.6.3Conversion required but not supported

投递邮件需要转换其内容,但服务器无法进行这种转换。

RFC 3463常搭配的代码
X.6.4Conversion with loss performed

邮件已投递,但内容转换过程中丢失了部分信息。

RFC 3463常搭配的代码
X.6.5Conversion Failed

邮件内容转换失败。

RFC 3463
X.6.6Message content not available

无法获取通过 URL 引用的邮件内容(BURL 扩展)。

RFC 4468常搭配的代码
X.6.7Non-ASCII addresses not permitted for that sender/recipient

发件人或收件人不支持包含非 ASCII 字符的地址(国际化电子邮件,SMTPUTF8)。

RFC 6531常搭配的代码
X.6.8UTF-8 string reply is required, but not permitted by the SMTP client

服务器需要用 UTF-8 文本响应,但客户端没有声明支持 SMTPUTF8。

RFC 6531常搭配的代码
X.6.9UTF-8 header message cannot be transferred to one or more recipients

邮件含有 UTF-8 邮件头,无法传送给一个或多个不支持它的收件人,因此被拒收。

RFC 6531常搭配的代码
X.7安全与策略31
X.7.0Other or undefined security status

无更多细节的安全状态。出现在认证成功(2.7.0)、AUTH 暂时失败(4.7.0)以及因策略被拒收的情况中。

RFC 3463常搭配的代码
X.7.1Delivery not authorized, message refused

发件人无权向该收件人发送邮件:因黑名单、信誉、反垃圾邮件或未经允许的中继尝试而被拦截。以 4.7.1 形式出现时通常表示灰名单。

RFC 3463常搭配的代码
X.7.2Mailing list expansion prohibited

发件人无权向该邮件列表发送邮件。

RFC 3463常搭配的代码
X.7.3Security conversion required but not possible

需要将邮件从一种安全协议转换为另一种,但无法完成。

RFC 3463
X.7.4Security features not supported

邮件需要的安全功能目标不支持。

RFC 3463常搭配的代码
X.7.5Cryptographic failure

传输过程中的加密操作失败,例如签名验证或解密失败。

RFC 3463
X.7.6Cryptographic algorithm not supported

目标不支持邮件所使用的加密算法。

RFC 3463
X.7.7Message integrity failure

完整性校验失败:邮件在传输中被修改,或校验和不匹配。

RFC 3463
X.7.8Authentication credentials invalid

身份验证凭据无效:用户名或密码错误。

RFC 4954常搭配的代码
X.7.9Authentication mechanism is too weak

所选认证机制的强度低于服务器策略的要求。

RFC 4954常搭配的代码
X.7.10Encryption Needed

使用所请求的认证机制需要外部加密层(如 TLS)。主要针对以明文发送密码的机制。

RFC 5248常搭配的代码
X.7.11Encryption required for requested authentication mechanism

所请求的认证机制只允许在加密连接上使用。

RFC 4954常搭配的代码
X.7.12A password transition is needed

用户必须修改密码或改用其他认证机制。

RFC 4954常搭配的代码
X.7.13User Account Disabled

尝试进行身份验证的用户账户已被禁用。

RFC 5248常搭配的代码
X.7.14Trust relationship required

服务器只接收来自已建立信任关系的系统的邮件。

RFC 5248常搭配的代码
X.7.15Priority Level is too low

邮件优先级太低,目前无法接收(MT-PRIORITY 扩展)。

RFC 6710常搭配的代码
X.7.16Message is too big for the specified priority

对于所指定的优先级,邮件太大(MT-PRIORITY 扩展)。

RFC 6710常搭配的代码
X.7.17Mailbox owner has changed

自发件人指定的日期以来,该邮箱已更换所有者,因此邮件不予投递(RRVS 扩展)。

RFC 7293
X.7.18Domain owner has changed

自发件人指定的日期以来,收件人域名已更换所有者(RRVS 扩展)。

RFC 7293
X.7.19RRVS test cannot be completed

服务器无法按发件人的要求验证邮箱是否已更换所有者(RRVS 扩展)。

RFC 7293
X.7.20No passing DKIM signature found

邮件没有任何有效的 DKIM 签名,而收件方策略要求必须有。

RFC 7372常搭配的代码
X.7.21No acceptable DKIM signature found

邮件有有效的 DKIM 签名,但没有一个符合收件方策略(例如签名域名或算法不符)。

RFC 7372常搭配的代码
X.7.22No valid author-matched DKIM signature found

邮件没有来自 From 邮件头中所示同一域名的有效 DKIM 签名。

RFC 7372常搭配的代码
X.7.23SPF validation failed

发送 IP 未在发件人域名的 SPF 记录中获得授权。

RFC 7372常搭配的代码
X.7.24SPF validation error

SPF 评估出错,例如记录格式错误或 DNS 查询次数过多。

RFC 7372常搭配的代码
X.7.25Reverse DNS validation failed

发送 IP 没有反向 DNS(PTR),或返回的主机名无法正向解析回该 IP。

RFC 7372常搭配的代码
X.7.26Multiple authentication checks failed

邮件的多项认证检查同时失败,例如 SPF 和 DKIM。

RFC 7372常搭配的代码
X.7.27Sender address has null MX

发件人域名发布了 null MX,无法接收回复和退信,因此邮件被拒收。

RFC 7505常搭配的代码
X.7.28Mail flood detected

该邮件疑似属于大量类似滥发邮件的一部分。

draft-levine-mailbomb-header
X.7.29ARC validation failure

ARC 链验证失败。ARC 用于在邮件经过转发服务或邮件列表时保留身份验证结果。

RFC 8617常搭配的代码
X.7.30REQUIRETLS support required

邮件要求 REQUIRETLS,但路径上的下一台服务器不支持该扩展,因此无法在保证加密的前提下投递。

RFC 8689常搭配的代码

粘贴服务器的完整响应,例如 550 5.7.1 Message rejected,即可同时查看基本码和增强码。搜索基本码时,还会列出通常与之同时出现的增强码。

工作原理

在 SMTP 会话中,客户端的每条命令(EHLO、MAIL FROM、RCPT TO、DATA 等)都会收到服务器以三位数字代码开头的响应。第一位表示结果:2 表示成功,3 表示服务器在等待更多数据,4 表示暂时性错误,5 表示永久性错误。第二位表示类别:x0z 为语法,x1z 为信息,x2z 为连接,x5z 为邮件系统。代码后面的文本格式不限,各服务器自行编写;程序只看数字。

三位数字很难说明具体原因,因此 RFC 3463 定义了增强状态码,格式为“类别.主题.详情”:5.1.1 表示与地址(1)相关的永久失败(5),原因是邮箱不存在(1)。类别重复第一位数字的含义(2、4 或 5),主题对原因归类,详情则进一步明确。使用增强码的服务器会在 EHLO 响应中通过 ENHANCEDSTATUSCODES 扩展声明,同样的代码也会出现在退信的 Status 字段中。

此表汇总了 RFC 5321 的基本码、常用扩展(AUTH、STARTTLS、ETRN 和 null MX)新增的代码,以及 IANA 注册表中的全部增强码,并标出每个增强码通常搭配的基本码。大型邮件服务商会加上自己的说明文字和帮助链接,但使用的始终是这些编号。

示例

550 5.1.1 <nadie@example.com>: Recipient address rejected: User unknown in local recipient table5xx Permanent · X.1.1 Bad destination mailbox address账户不存在时 Postfix 返回的典型退信。重试没有用,必须更正地址。如果以前能正常发给这个收件人,最可能是该账户已被注销。
450 4.2.0 <ana@example.com>: Recipient address rejected: Greylisted4xx Transient · X.2.0 Other or undefined mailbox status灰名单:服务器暂时拒绝陌生发件人,等待其重试。正规的邮件服务器会在几分钟后自动重试,邮件随即被接收;而许多垃圾邮件程序从不重试。
AUTH LOGIN334 VXNlcm5hbWU6334 携带 Base64 编码的质询:VXNlcm5hbWU6 是“Username:”,下一个 UGFzc3dvcmQ6 是“Password:”。如果凭据错误,服务器返回 535 5.7.8;如果要求先加密,则返回 538 或 530。

使用场景

  • 根据服务器返回的错误信息,弄清邮件被退回的原因。
  • 区分错误是暂时性的(队列会自动重试),还是永久性的(需要人工处理)。
  • 在应用程序、打印机或服务器上配置邮件发送时,排查身份验证失败。
  • 解读邮件服务器日志中因 SPF、DKIM、DMARC、反向 DNS 或黑名单导致的拒收。
  • 在群发邮件平台中对退信分类,清除不存在的地址。
  • 阅读用 telnet、openssl s_client 或 swaks 抓取的 SMTP 会话。

常见问题

4xx 错误和 5xx 错误有什么区别?

4xx 是暂时性错误:发送方服务器会把邮件留在队列中定期重试,一般持续四到五天,仍失败才放弃并生成退信。5xx 是永久性错误:会立即退信,不做任何改动就重发同一封邮件仍会失败。

为什么响应中有两个代码,比如 550 5.1.1?

第一个是 RFC 5321 规定必须有的三位基本码;第二个是 RFC 3463 的增强状态码,用来说明具体原因:同样是 550,可能是邮箱不存在(5.1.1)、被策略拦截(5.7.1)或 SPF 验证失败(5.7.23)。排查问题时,应主要看增强码。

550-5.7.1 中的连字符是什么意思?

表示这是多行响应。每一行都带有相同的代码,但中间的行用连字符把代码和文本隔开,最后一行用空格,客户端据此判断响应何时结束。EHLO 返回的扩展列表也是同样的格式。

地址明明存在,为什么会被 550 5.7.1 拒收?

因为 5.7.1 针对的不是收件人,而是发件人:服务器不允许你向其投递这封邮件。常见原因包括:发送 IP 在黑名单中,域名的 SPF、DKIM 或 DMARC 验证失败,IP 没有反向 DNS,或者未经身份验证就试图把服务器当作中继。代码后面的文本通常会给出线索。

为什么从应用程序发送邮件时会出现 530 或 535?

530 表示服务器要求先进行身份验证或启动 TLS,才能接受邮件;535 表示用户名或密码错误。请确认应用程序使用 587 端口配合 STARTTLS,或 465 端口配合隐式 TLS,并已启用身份验证;对于 Gmail 或 Microsoft 365 等服务商,还要使用应用专用密码或 OAuth,而不是平常的登录密码。