Deliverability

The Bulk Sender Rules Changed. You Get Rejected Now, Not Filtered.

The short answer

Send 5,000 or more messages a day to Gmail, Yahoo or Outlook users and all three now require SPF, DKIM and DMARC, a spam complaint rate below 0.3%, and one-click unsubscribe implemented as RFC 8058 headers. Enforcement has been fully active since May 2026, and the failure mode changed: Google and Microsoft issue permanent 550 rejections rather than routing to spam. A rejected message is not in a folder anywhere.

For twenty years the worst thing a mailbox provider did to a bad sender was put the message in a folder. That changed. Gmail, Yahoo and Microsoft now refuse non-compliant bulk mail at the SMTP level, and a refused message is not in a spam folder, it is nowhere.

For anyone running outbound this is the most consequential change in the mechanics of email in a decade, and it is straightforwardly good news for senders who do the work, because the failure finally shows up in your logs instead of silently costing you replies.

Who the rules apply to

The threshold is 5,000 messages a day to one provider's users, counted per sending domain. Cross it and the requirements are mandatory rather than advisory.

That number sounds high and is easier to reach than founders expect. It counts every message, so a sequence with four follow-ups multiplies your contact list by five, and it is per provider, so a list that is heavily Gmail hits the Google threshold long before your total volume looks large.

Below the threshold, the same signals still score you. You simply get filtered instead of rejected, which is the worse outcome because it is invisible.

The four requirements

1. SPF, DKIM and DMARC. All three.

SPF says which servers may send as your domain. DKIM signs each message so the receiver can verify it. DMARC tells the receiver what to do when either fails, and gives you reports.

The trap worth naming: SPF and DMARC without DKIM fails Google's requirement. Plenty of senders configured SPF years ago, added DMARC when they read about the change, and never signed anything. Google also checks alignment rather than mere presence, so a passing SPF record that authenticates a different domain than the one in the From header does not count.

Start DMARC at p=none, read the reports for a fortnight until you recognise everything that legitimately sends as you, then tighten. Going straight to p=reject reliably blocks something you forgot about.

2. A spam complaint rate below 0.3%

Below 0.1% is the number to actually aim at; 0.3% is where enforcement begins. The arithmetic is brutal at small scale: three complaints per thousand delivered puts you on the line.

This is why list quality is a deliverability problem rather than a marketing preference. Writing to people who have no plausible reason to care produces complaints, and complaints are the one signal you cannot argue with.

3. One-click unsubscribe, done properly

The requirement is RFC 8058: a List-Unsubscribe header and a List-Unsubscribe-Post header, which is what lets the mail client render its own unsubscribe control at the top of the message. It must work without making the recipient log in, and you must honour it within two days.

A link in the footer is not this. Keep the footer link too, but understand that the header version is the one being checked, and it is also the one that intercepts the person who would otherwise click Report Spam. Making leaving easy is the cheapest complaint-rate control there is.

4. Valid forward and reverse DNS, and TLS

Less discussed because most managed sending infrastructure handles it, but if you are sending from your own server, a PTR record that resolves and opportunistic TLS are both expected.

The thresholds, in one table

RequirementThresholdFailure mode if you miss it
SPF + DKIM + DMARCMandatory above 5,000/day, scored below it550 rejection at Google and Microsoft
DKIM specificallyRequired; SPF + DMARC alone is not enoughFails Google's bulk check outright
Spam complaint rateUnder 0.3%, aim under 0.1%Throttling, then filtering, then blocking
One-click unsubscribeRFC 8058 headers, honoured in 2 daysCounts against you and drives complaints
Reverse DNS + TLSExpected for self-hosted sendingConnection refused or heavily throttled

Why rejection is better than filtering

Counterintuitive, and true. A message filed in spam is delivered as far as your tooling is concerned: your dashboard shows a successful send, your bounce rate is clean, and your reply rate is mysteriously zero. You can spend a month rewriting subject lines to fix a DNS record.

A 550 is a bounce with a code and usually a link to the provider's documentation. It tells you exactly what is wrong on the first attempt. If your bounce rate jumped recently and the codes are 5xx, stop looking at your list and go and read your DNS.

What this means for a small sender

You are probably below the hard thresholds, and you should behave as though you are not, because the scoring is continuous and the cost of compliance is an afternoon.

Authenticate the sending domain properly, including DKIM. Put the RFC 8058 headers on every message. Watch the complaint rate rather than the open rate. Ramp new domains slowly enough that your sending pattern looks like a business rather than a burst.

None of it is difficult. All of it is the kind of work that does not happen when you also have a product to build, which is the honest argument for having something else do it. Operater's Sales agent buys and authenticates its own sending domains, warms them across about three weeks, puts one-click unsubscribe on every message, verifies addresses before sending, keeps daily volume inside provider limits, and stops sending from an address whose numbers turn bad rather than running it into the ground.

Which is worth saying plainly: none of that is secret, and a founder with a spare afternoon can do all of it by hand. The part that does not survive contact with a real week is doing it again every week, forever.

Key takeaways

  • The threshold is 5,000 messages a day to one provider's users, counted per domain, and it is easier to cross than people expect once follow-ups are included.
  • SPF plus DMARC without DKIM fails Google's check. All three are required and Google wants alignment, not just presence.
  • Complaint rate must stay under 0.3%, and under 0.1% is the number to actually aim at. That is three complaints in a thousand.
  • One-click unsubscribe means the List-Unsubscribe and List-Unsubscribe-Post headers, working without a login, honoured within two days. A link in the footer is not the same thing.
  • The consequence changed from filtering to rejection. A 550 is visible in your logs, which is the one good thing about it.

Frequently asked questions

I send far fewer than 5,000 a day. Do these rules apply to me?

The enforcement thresholds do not, but the standards do. Providers use the same signals to score every sender; the 5,000 line is where the rules become hard requirements rather than strong preferences. A small sender with broken authentication does not get a 550, they get quietly filtered, which is worse because there is nothing in the logs to tell you.

How would I know if I am being rejected rather than filtered?

A rejection appears as a bounce with a 5xx code and usually a URL to the provider's documentation. Filtering produces a successful delivery and silence. This is the practical reason the change is an improvement for anyone paying attention: the bad outcome became visible. If your bounce rate jumped and the codes are 550, that is not a list quality problem, it is an authentication problem.

Does DMARC have to be set to reject?

No. A policy of p=none satisfies the requirement that a DMARC record exists, and it is the right place to start because it reports without enforcing. Move to quarantine and then reject once the reports show you know everything that legitimately sends as your domain. Jumping straight to reject commonly blocks something the founder forgot they had, and it is usually invoicing or a helpdesk.

What counts as a spam complaint?

Someone clicking Report Spam in their mail client. It is measured against delivered volume and it is unforgiving arithmetic at low volume: three complaints out of a thousand puts you at the 0.3% ceiling. This is why list quality and relevance are deliverability concerns rather than marketing preferences.

Is a one-click unsubscribe the same as an unsubscribe link?

No, and the difference is the requirement. RFC 8058 is a pair of headers the mail client reads, which is what lets Gmail show its own unsubscribe control at the top of a message. A link in the footer is still worth having, but on its own it does not satisfy the rule, and the header version is the one that stops people reaching for Report Spam instead.