Where you saw it: A bounce message reading 554 transaction failed, often with additional text naming a filter, a policy or a blocklist.
Why it happens
- Content filtering rejected the message outright rather than filing it in junk.
- A blocklist listing that the receiver applies at the transaction level.
- A policy rule at the receiving organization about your domain, an attachment type or a link.
- Authentication failure under a strict DMARC policy.
- A relay refusal, where the server will not accept mail for that destination from you at all.
The fix, in order
Read everything after the code
554 alone tells you nothing. The extended text names the blocklist, the policy or the filter, and that text is the entire diagnosis.
Group your 554s by receiving domain
Concentrated on one domain means a policy at that organization. Spread across many means a blocklist or an authentication problem on your side.
Check authentication and blocklists
Confirm SPF, DKIM and DMARC pass on a test message, and check your sending IP against the major blocklists. Those two cover most widespread cases.
Test with a plain message
Send a short message with no links and no attachments to the same domain. Acceptance points at your content; another rejection points at your infrastructure.
Ask the recipient's IT team when it is one organization
For a business contact, a direct request to allowlist your domain is faster than reverse-engineering their filter policy.
How to know it worked
The short version
- A plain test message to the same domain is accepted.
- Authentication-Results shows all three mechanisms passing.
- 554 bounces stop appearing for that destination.
Questions people ask
Why is 554 so vague?
Because it is the catch-all permanent failure in the specification. Servers use it when nothing more specific fits, or when they prefer not to tell a potential spammer exactly which rule they hit.
Should a 554 address be removed from my list?
Not usually. Unless the extended text names a nonexistent recipient, the address is probably fine and the problem is yours.
How does a verifier score a 554?
As unknown, unless the text names a recipient problem. A generic transaction failure says nothing about whether the mailbox exists.