554 5.6.0 is a 5yz permanent failure paired with 5.6.0, which RFC 3463 defines under the
"message content or media" category — "other or undefined media error". The receiving server has
evaluated the message itself (not just the envelope or sender reputation) and rejected it based on
something about its content, structure, or attachments.
A real transcript
DATA 354 Start mail input ... . 554 5.6.0 Message content rejected
Unlike reputation-based or authentication-based rejections, this one happens after the full
message body has been transmitted — the server accepted the DATA command and only rejected at
the final . once it had evaluated the content.
How the big three word content rejections
| Provider | Typical wording | What it usually flags |
|---|---|---|
| Gmail / Google Workspace | 552 5.6.0 Message content rejected, message too large for this policy or a generic content block | Size or structural policy, combined with other signals |
| Microsoft 365 | 550 5.6.0 ASN.1 encoding error or 554 5.6.0 Message content rejected due to malware scan | Malformed MIME, or a malware/attachment-scanner hit |
| Yahoo / AOL | 554 5.6.0 Message not accepted for policy reasons | Rarely gives attachment-level detail in the reply |
Common causes
- Presence of spam-like content — phrasing, formatting, or link patterns that match known spam
signatures, even in a legitimate message.
- Unsupported attachments — an attachment type the receiving server blocks outright
(executables and certain archive formats are common blanket blocks).
- Improper email formatting — malformed MIME boundaries, broken HTML structure, or character
encoding the parser cannot handle.
- Email authentication issues — some providers fold a DMARC or DKIM failure into a
content-stage rejection rather than an earlier envelope-stage one.
- Blacklisted sending domain or IP — content filtering is often more aggressive for senders
that are already borderline on reputation, so a message that would pass from a clean sender gets
content-rejected from a flagged one.
These five causes rarely act alone in practice. A message with a borderline link density sent from
a domain with a slightly degraded reputation will often clear content filtering at one provider and
fail it at another, which is why the same template can work for weeks and then start failing
without any change on your end — the filter's threshold, not your content, moved.
Diagnose it yourself
- Validate your MIME structure by sending the exact message to a mailbox you control and
reading its raw source — a mismatched or duplicated boundary= string is one of the more common
silent causes of a content-stage rejection.
- Check the attachment's actual file type, not just its extension: `file --mime-type
attachment.ext` — some filters inspect the real content type and will flag a renamed executable
even if the extension looks benign.
- Run the message through a spam-score checker (several mail transfer agents expose a local
SpamAssassin instance) to see which rules it trips before it ever reaches the recipient.
- Check your own domain's authentication:
dig TXT yourdomain.com +shortfor SPF and `dig TXT
_dmarc.yourdomain.com +short` for DMARC, since a borderline authentication state makes some
providers apply stricter content filtering.
The fix, in order
- Review and optimise email content — check for spam-trigger phrasing, excessive links or
image-to-text ratio, and all-caps subject lines or body text.
- Check and remove unsupported attachments — strip executable file types and uncommon archive
formats; link to hosted files instead where the attachment is not essential.
- Ensure proper email formatting — validate MIME structure and HTML, and confirm character
encoding is declared and consistent.
- Authenticate your email domain — confirm SPF, DKIM, and DMARC are passing and aligned, since
a borderline authentication state makes content filtering stricter.
- Monitor your domain reputation — a reputation check alongside the content review tells you
whether this is primarily a content problem or a reputation problem wearing a content-rejection
message.
What not to do
- Do not resend the identical message — this is a permanent
5xxrejection of that specific
content; it will fail the same way again, to the same recipient, every time.
- Do not assume the rejection text names the actual trigger precisely — content filters rarely
give a specific reason, and the fix usually requires reviewing the whole message, not just the
phrase quoted in the error.
- Do not strip all links or formatting reflexively without reviewing what is actually in the
message — that can hurt legitimate functionality without addressing the real trigger, and a
heavily stripped-down message can itself read as suspicious to the same filters.
MailPilot's seed-inbox network measures real inbox placement per provider, which is the most
direct way to find out whether a specific message or template is triggering content-based filters
before you send it to your full list, rather than discovering it through a 554 5.6.0 after the
fact.
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