◇ Delivery failures

550 — Message rejected as spam with a score

PermanentYour side

Retrying will not help. The message will not be delivered.

The reply

550 Message rejected as spam (score: 12.2)

A receiving server ran the message through a content filter, added up the points and refused it. Unlike the big providers' opaque policy rejections, this one is about the message itself — which means reading it is the fix.

What it means

Rule-based filters like SpamAssassin score a message against hundreds of individual tests and reject above a threshold, commonly 5.0. A score well above it means several rules fired together. This is the most tractable spam rejection there is: the causes are specific, they are in the message, and many receiving servers will show you which rules fired if you ask the recipient for the full headers.

Why it happens

  • Failing SPF, DKIM or DMARC — worth several points on its own before content is even considered.
  • A missing or malformed Date, Message-ID or MIME header.
  • An HTML part with no plain-text alternative, or a body that is a single image.
  • Promotional wording, excessive capitals or exclamation marks.
  • Links to a domain with a poor reputation, or through a shortener.
  • A mismatch between the envelope sender, the From: header and the reply address.

What to do

  1. Ask the recipient for the full headers of a rejected or junked message — most filters list every rule that fired with its individual score.
  2. Fix authentication first. SPF, DKIM and DMARC failures are worth more points than anything in the copy.
  3. Send multipart with a real plain-text alternative, not an empty one.
  4. Make the envelope sender, the From: header and the reply address tell a consistent story.
  5. Remove shorteners and point links at your own domain.
  6. Test with a scoring service before sending a campaign rather than after.

Questions

What score is too high?

SpamAssassin's conventional default threshold is 5.0, but every server sets its own. What matters more than the number is which rules fired — the headers name them, and a few of them are usually responsible for most of the total.

Which rules fired?

The receiving server usually records them in the message headers. If you can get a copy of a message that was junked rather than rejected, the X-Spam-Status or X-Spam-Report header lists each rule and its points.

More from Delivery failures

Other providers