SMTP
SMTP 446 flags a mail loop (hop count exceeded), not a real RFC code. The real bounce is 554 5.4.6. Fix it by breaking the forwarding or connector loop.
Updated Jul 1, 2026
The short answer
"SMTP Error 446" is a non-standard label most tools attach to "maximum hop count exceeded" — a message bounced because it passed through too many mail servers, almost always due to a mail loop. 446 is not an actual RFC 5321 reply code; the real bounce is 554 5.4.6 / 554 5.4.14 (enhanced status X.4.6, "routing loop detected"). Fix it by finding and breaking the forwarding or connector loop, not by raising a hop limit.
"SMTP Error 446" is the label many mail tools, control panels, and glossaries attach to a "maximum hop count exceeded" condition: a message was rejected because it passed through too many mail servers (hops) on its way to the recipient, which almost always means it was caught in a mail loop.
One thing to be clear about up front: 446 is not a real SMTP reply code. RFC 5321 — the SMTP standard — does not define a 446 reply, and it does not appear in the standard list of SMTP return codes. RFC 5321 §6.3 only describes detecting looping in the mail system by counting Received: header fields; it sets no numeric hop limit you can rely on across systems and assigns no reply code to that condition.
So when you see "446," treat it as a human-readable name for the hop-count/loop problem, and look at the real bounce codes your mail system actually emits.
The relevant enhanced status code is X.4.6 — "Routing loop detected" (RFC 3463). In practice you'll see it returned by real mail servers as a permanent 554 reply with a 5.4.x enhanced code. Per Microsoft's Exchange Online NDR guidance, the messages you'll actually see are:
554 5.4.6 Hop count exceeded - possible mail loop — always generated by on-premises Exchange Server (typically a hybrid setup).5.4.14 Hop count exceeded - possible mail loop ATTR34 — always generated by Exchange Online. Exchange Online typically wraps this in a 554 (or similar 5xx) envelope code, so in an actual NDR you'll usually see it delivered as something like 554 5.4.14 Hop count exceeded - possible mail loop ATTR34.A note on classification: RFC 3463 itself describes the bare X.4.6 detail code as a persistent transient error. But the way mail servers actually deliver this condition — Exchange in particular — is as a permanent failure (a 554 reply carrying a 5.4.x enhanced code). So in the real world this is a permanent bounce, and the common "446 is transient, just wait and retry" advice is wrong for it: retrying without fixing the loop will keep bouncing.
A Received: header is stamped each time a server handles the message; when that count crosses a server's configured ceiling, delivery is aborted to stop an infinite loop. The underlying cause is almost always a routing loop, per RFC 3463 X.4.6: "a routing loop caused the message to be forwarded too many times, either because of incorrect routing tables or a user-forwarding loop." Common triggers:
The fix is to find and break the loop — not to raise a hop limit (most platforms don't expose one, and increasing it just delays the same bounce):
554 5.4.6 vs 5.4.14) — it tells you whether the loop is on-premises or in Exchange Online.Received: headers of a looping message. Repeating server names show you exactly which two hosts are bouncing it back and forth.Verifying/owning your sending domains is good hygiene and can resolve accepted-domain routing problems, but on its own it does not "fix 446." And there is no universal "set the hop count between 10 and 256" knob — that figure isn't from RFC 5321 (which sets no enforceable limit) and most hosted platforms don't let you change it. Focus on eliminating the loop; the count takes care of itself.
With Courier
References
FAQ
No. RFC 5321 does not define a 446 reply code, and it isn't in the standard list of SMTP return codes. It's a label various tools use for a "maximum hop count exceeded" / mail-loop condition. The actual codes for that condition are 554 5.4.6 (on-premises Exchange) and 5.4.14 ... ATTR34 (Exchange Online, typically wrapped in a 554/5xx envelope), with enhanced status X.4.6, "routing loop detected," per RFC 3463.
One API, every provider
Courier connects to your email, SMS, and push providers, handles retries and failover, and surfaces delivery errors in plain language.
Reply-code definitions per RFC 5321 §6.3; RFC 3463 (X.4.6). Last reviewed Jul 1, 2026. Courier is not affiliated with third-party providers; error behavior may vary by implementation.
© 2026 Courier. All rights reserved.