551 is a permanent failure meaning the server you connected to has determined it is not the correct destination for this recipient and that you need a different route. RFC 5321 defines this explicitly as "User not local; please try forward path" - the server either knows where the mailbox actually lives and is pointing you elsewhere, or is refusing to forward on your behalf and expects you to resolve the correct destination yourself.
Who is at fault
This is most often a sender-side routing problem - you connected to the wrong mail exchanger for the domain, commonly because of a stale cached MX record, a domain migration that has not fully propagated, or a manual override pointing at an old mail host. Less commonly, it reflects a genuine misconfiguration on the receiving domain's own DNS.
The exchange
220 old-mx.example.com ESMTP EHLO mail.yourdomain.com 250-old-mx.example.com 250 SIZE 26214400 MAIL FROM:<sender@yourdomain.com> 250 2.1.0 OK RCPT TO:<recipient@example.com> 551 5.7.1 User not local; please try forward path <recipient@newmx.example.com>
The server explicitly names the corrected path in its reply - a strong hint that the domain has migrated mail infrastructure and the old host is only aware of, not responsible for, current mailboxes.
How Gmail, Microsoft 365 and Yahoo word the same condition
| Provider | Wording |
|---|---|
| Gmail | Rare in modern Gmail infrastructure; closest equivalent: 550 5.1.1 does not exist after a full migration |
| Microsoft 365 | 550 5.4.1 Recipient address rejected: Access denied (post-migration stale routing) |
| Yahoo | 551 User not local; please try forward path (same RFC wording, retained) |
Because this error is tightly coupled to domain-migration scenarios, the big three rarely expose it directly to external senders - they tend to resolve routing internally - while smaller, self-hosted domains mid-migration are the most common real-world source.
Diagnostic commands
$ dig +short MX example.com old-mx.example.com. $ dig +trace MX example.com | tail -5 $ swaks --to recipient@example.com --from sender@yourdomain.com --server newmx.example.com <~ 250 2.1.5 Recipient OK
If dig returns a different, current MX record than the one your queue is actually using, your local DNS cache or static configuration is stale and pointing at a decommissioned host.
The ordered fix
- Re-query the domain's current MX records directly, bypassing any local cache, with
dig +traceor a public DNS resolver. - Confirm whether the server's 551 reply named a corrected forward path, and if so, test delivery to that address directly.
- Flush your own DNS cache if the live MX records differ from what you queried.
- Update any hardcoded or statically configured mail-routing entries pointing at the old host.
- Re-test delivery once routing is corrected, rather than retrying against the same old host.
What not to do
- Do not keep retrying against the same server that issued the 551. It has already told you it is not the correct destination; retrying the identical path will not change that.
- Do not treat this as proof the recipient address is invalid. The server is making a routing statement, not a judgement about the mailbox itself.
- Do not hardcode a forward path from one 551 reply permanently without periodically re-checking - domain migrations can have multiple stages, and a forward path that was correct last week may itself become stale.
- Do not assume this is a reputation or content issue. It is purely about which server is responsible for the recipient's mail.
Confirming you are not the one with the stale record
A useful sanity check whenever you suspect a 551-style routing issue: query the domain's MX
records from a network you do not normally send from (a phone on mobile data, a cloud shell) and
compare the result against what your own sending infrastructure resolves. If the two differ, your
own DNS cache or resolver configuration, not the receiving domain, is the stale half of the
picture - and the fix is on your side, not theirs, despite the error appearing to originate from
their server's reply.
How long a stale MX record typically persists
DNS caching behaviour varies by resolver, but a typical MX record carries a TTL of one to several
hours, and some hosting providers set it even longer during a migration specifically to give old
infrastructure time to drain gracefully. If you query a domain's MX records and get a different
answer than what your sending system is using, the discrepancy is most likely your own cached
copy, not a live inconsistency on the domain's side - flush your resolver's cache and re-query
before concluding the domain itself has a split-brain DNS problem.
MailPilot resolves each destination's current MX records at send time rather than relying on cached or static routing, which avoids delivering - or failing to deliver - against a mail host that a domain has already migrated away from.
Ready to reach the inbox every time?
Automated email warmup across real peer mailboxes. Live inbox placement monitoring. Free 7-day trial - no credit card required.
Start free trial