DEV Community

Cover image for SPF, DKIM and DMARC all passed. Gmail still sent my mail to spam.

SPF, DKIM and DMARC all passed. Gmail still sent my mail to spam.

Hisashi Space on September 22, 2026

Ask anyone why their email is going to spam and the first answer is always the same: check SPF, DKIM and DMARC. It's good advice. It's also where m...
Collapse
 
robertpaschal profile image
Odinaka Robert Nnamani •

This is a well-run experiment — same message, same recipients, only the sender changed, and you still got a 150x difference in spam placement. That's the cleanest demonstration I've seen that auth is table stakes, not the ranking signal. One variable I'd want to isolate next: per-recipient engagement history on the new domain. Gmail's new-sender penalty decays on positive engagement signals, so the fastest path out isn't warming with the full list — it's warming with your most engaged recipients first and expanding from there. Also curious: did the two senders have identical List-Unsubscribe header setups? One-click unsubscribe presence affects Gmail's spam scoring independently of auth, and it's the kind of thing that differs silently between two sending stacks.

Collapse
 
hisashispace profile image
Hisashi Space •

Thanks! Yes, they were the same. Both sends went out through the same mailing system, and it adds List-Unsubscribe and List-Unsubscribe-Post (one-click) to every message no matter which address it's sent from. That went in back in May, so both of the August sends had it.

Collapse
 
robertpaschal profile image
Odinaka Robert Nnamani •

That rules out the header variable cleanly — same system, same headers, same auth, different outcomes. Which means the differentiator was never in the message at all; it was the domain's reputation the whole time, exactly like your warm-up service discovery. This is the part most "check SPF/DKIM/DMARC" guides miss: authentication answers "are you who you claim to be," but Gmail's real question is "should anyone hear from you." I treat auth as table stakes now and reputation as the actual deliverability layer — separate ledgers, separate monitoring. Did the reply-driven re-engagement move the needle permanently, or did you have to keep the volume warm afterwards to hold the inbox?

Thread Thread
 
hisashispace profile image
Hisashi Space •

The warm-up never went back on after August 21st. The daily inbox test said inbox from September 1st through the 17th, then its Gmail token expired and it stopped reporting, so I don't have daily data after that.

What I do have: in early October I sent about 1,700 emails from that address to Gmail users through the Gmail API, and 20.2% opened. In August it was 0.2%.

Thread Thread
 
robertpaschal profile image
Odinaka Robert Nnamani •

0.2% to 20.2% is a hundred-fold recovery — and the most interesting part is what you didn't do: the warm-up never went back on. That more or less isolates the variable. Whatever fixed it, it wasn't ongoing warming — it was the reply-driven re-engagement, real humans pulling your mail out of spam and writing back. That's a stronger claim than most deliverability advice gets to make, because you have the before/after with the confounder removed. The open question is durability: it's been holding since September without the warm-up crutch, but have you seen any decay in the months since, or is the reputation now self-sustaining?

Thread Thread
 
robertpaschal profile image
Odinaka Robert Nnamani •

Hisashi, your experiment is the cleanest proof I've seen that authentication is table stakes, not the ranking signal. I'm opening the rootmail beta now — it's built for exactly this kind of deliverability plumbing: rootmail.io/beta. Would be good to have someone who's measured the problem this carefully testing the fix.

Collapse
 
to21as profile image
Tobias •

Sending the same message to the same 1,783 people from a different address in the same week is what makes this readable: 0.2% against 30.7%, only the sender changed, so the content and the list are both out before you start guessing. I would have gone straight to blaming the copy.

The warm-up service still sending 40 a day from the old server after the MX moved is nasty, because none of the three checks can show you that.

Did the morning test flip back the day after you switched it off, or did it take until people started replying?

Collapse
 
hisashispace profile image
Hisashi Space •

Not the next day. I switched the warm-up off on the 21st, and the morning test still came back spam every day through the 31st. It flipped on September 1st and has stayed there since.

The replies started on the 22nd, so by the time it flipped, people had been digging me out of spam for over a week. Which of the two did it, I can't separate. They were a day apart and I didn't set it up cleanly enough to prove it.