554 5.4.6: routing loop detected
The message went round in a loop, through forwarding rules or misrouted servers, until a hop limit stopped it.
554 5.4.6 Message exceeded 50 hops, this may indicate an email loop.
Gmail's text, as listed in Google's SMTP errors reference.
What 554 5.4.6 means
RFC 3463 defines X.4.6 as "Routing loop detected": a loop caused the message to be forwarded too many times, either because of incorrect routing tables or a user forwarding loop. RFC 5321 notes that simply counting the Received header fields each hop adds is an effective way to detect loops, and requires servers to detect and stop trivial loops.
Gmail stops a message after 50 hops and returns 554 5.4.6. Microsoft documents the same condition: on-premises Exchange reports 5.4.6 and Exchange Online reports 5.4.14, and by default Exchange interrupts a loop after 20 iterations. Microsoft says loops are typically caused by a configuration error on the sending server, the receiving server or both, and suggests checking mailbox rules for automatic forwarding.
Typical loops: two mailboxes forwarding to each other; an address forwarding to an external account that forwards back; or a domain whose MX points at a server that sends the mail back to the MX (common in hybrid setups and after a migration).
Likely causes
- Two mailboxes or accounts forward to each other.
- An auto-reply or rule creates a message that triggers another rule.
- A server is set to relay a domain to a host that sends it back (common after migrations).
- Wrong connector or smart host settings in a hybrid setup.
How to fix it
If you sent the message
- Usually not your problem: tell the recipient, including the bounce with its Received headers.
If you're the recipient or their admin
- Check forwarding settings and inbox rules on the mailbox and any address it forwards to.
- Read the Received headers in the bounce to see which servers the message bounced between.
- Check connectors, smart hosts and MX records, especially after a migration.
Frequently asked questions
How do I find where the loop is?
Open the bounce and read the Received headers of the returned message. You'll see the same servers or addresses repeating; the place where the path turns back is where the misconfiguration is.
What's the difference between 5.4.6 and 5.4.14?
Both report a loop. Microsoft says on-premises Exchange reports 5.4.6 (which you see in hybrid setups) and Exchange Online reports 5.4.14.
Sources
- RFC 3463: Enhanced Mail System Status Codes
- RFC 5321, section 6.3: Loop detection
- Gmail SMTP errors and codes (Google Workspace Admin Help)
- Email nondelivery reports (NDRs) and SMTP errors in Exchange Online (Microsoft Learn)
Provider messages are quoted as the provider publishes them. Servers can change their wording, so the bounce you received may differ slightly.
Related codes
Related guides
How to read email headers
Read email headers step by step: the Received chain from the bottom up, Authentication-Results, ARC, Return-Path, Message-ID and Microsoft 365 anti-spam fields.
10 min read SPF, DKIM & DMARCWhy email forwarding breaks SPF and DMARC, and how ARC helps
Why forwarding and mailing lists break SPF and sometimes DKIM, how that fails DMARC, and how SRS, ARC and trusted ARC sealers in Microsoft 365 help fix it.
9 min read Switching & migrationHow to change MX records without losing email
A cutover checklist for MX changes: lower TTL, stage the new destination, keep the old server accepting mail, verify with headers and roll back cleanly.
11 min read