邮件退信代码解读:每种错误的原因和修法
硬退信与软退信的区别、5xx 和 4xx 常见代码含义、抄送人是否受影响、退信率如何损害发件声誉。

邮件退信代码解读:每种错误的原因和修法
退信是邮件系统告诉你邮件没有送达的方式。读懂退信代码,就能判断问题是永久性的还是暂时性的、是你的问题还是对方的问题,以及重新发送有没有用。
硬退信与软退信
硬退信(5xx):永久失败。服务器明确拒绝了这封邮件。再发一次结果一样,要立即把这个地址从发送列表里删掉。
软退信(4xx):临时失败。服务器想接收但暂时做不到,发送方会自动重试 24 到 72 小时。如果一直重试失败,最终会超时并报告永久失败。
Rovela 会把硬退信的地址自动加入抑制列表,之后的发送会直接跳过。反复向无效地址发信,是损害发件声誉最快的方式之一。
常见退信代码
550 — 邮箱不可用
最常见的硬退信,几种常见子类型:
- 550 5.1.1:收件地址不存在。检查拼写;如果是用户填写的地址,注册流程加上双重确认或地址验证
- 550 5.1.2:目标邮箱地址格式有问题,域名部分在语法上不合法
- 550 5.7.1:策略拒绝。收件服务器的 SPF、DKIM 或 DMARC 检查失败,或发件 IP 在黑名单上——这是你这边的问题,不是对方的
551 — 用户不在本服务器
服务器不托管这个地址,也不转发。当作 550 处理。
552 — 邮件太大
超过了收件服务器的大小限制。减小附件体积,或者改为在邮件里放一个下载链接。
553 — 邮箱地址格式有误
地址格式不合法,比如 user@ 没有域名,或者连续两个点。通常说明收集或存储地址的代码有 bug。
421 — 服务暂不可用,请稍后重试
收件服务器暂时无法接受连接,发件方会自动重试。不是你的问题,等一等。
450 — 邮箱暂时不可用
邮箱此刻被锁定(比如另一个进程正在访问)。重试几个小时内通常就能成功。
451 — 收件方本地处理错误
对方服务器端的内部错误,你无能为力,重试可能最终会成功。
452 — 存储空间不足
收件服务器或收件人邮箱容量已满。属于软退信,对方清理出空间后重试可能成功。
退信通知里有什么
退信通知(DSN,投递状态通知)发回给信封发件人,也就是 Return-Path 地址,不是 From 显示的地址。Rovela 的退信通知统一由 bounces.rovela.dev 接收并自动处理,你不会逐封看到,但每封邮件的事件日志里都会记录结果。
退信通知里的 Diagnostic-Code 字段是服务器的原始返回内容。如果退信原因看着不对,去那里看完整的服务器说明。
抄送人还能收到吗?
可以——抄送收件人是独立投递的。如果一封邮件同时发给了 alice@example.com(退信)和 bob@example.com(正常投递),Bob 照常收到,Alice 那封退信不影响 Bob。
邮件退信了,对方收到了吗?
没有。硬退信说明收件服务器从来没有接受这封邮件。软退信的话,如果重试在超时前成功,邮件最终能到;如果一直失败直到超时,邮件就丢失了。
退信率和发件声誉
退信率高,意味着你在向未经验证的地址发信,Gmail 和 Yahoo 对此很敏感:
- 退信率超过 2% 会触发投递降级
- 硬退信应控制在总发送量的 0.5% 以下
- 短暂的峰值也会留下痕迹,需要数周才能恢复
实际的解决办法:超过半年没清洗的列表,发信前先用 Rovela 的抑制列表接口查一遍,把已知无效的地址过滤掉。
"postmaster 说你的邮件被退回"是什么意思
退信通知来自某个域名的 postmaster@,就是那个域名邮件系统自动发出的通知。正文里包含原始退信代码,通常也带着失败的收件地址。读 Diagnostic-Code 字段,里面是具体的 5xx 或 4xx 代码,说明了失败原因。