SPF, DKIM and DMARC Explained: How to Stop Business Emails Going to Spam

SPF lists the servers allowed to send for your domain, DKIM signs each message so tampering is detectable, and DMARC tells receiving servers what to do when either check fails. All three are DNS TXT records, and all three are free.

Authentication is not a nice-to-have. Since February 2024 it has been a delivery requirement at Gmail and Yahoo.

The short version

  • SPF authorises sending servers. DKIM signs the message. DMARC decides the outcome when one of them fails.
  • SPF allows a maximum of ten DNS lookups. Exceed it and the record fails outright.
  • DMARC needs alignment, not just a pass. The visible From: domain has to match what SPF or DKIM authenticated.
  • p=none satisfies the Gmail requirement but changes nothing about delivery. It only turns reporting on.
Three-column comparison card showing SPF proving which servers may send with a ten DNS lookup limit, DKIM proving the message was not altered using a cryptographic signature, and DMARC deciding what happens when SPF or DKIM fails to align with the From domain
Three records, three jobs. SPF authorises the server, DKIM signs the message, DMARC decides the outcome.

What each record actually does

The three are often described as a set, which hides the fact that they answer separate questions. SPF answers “was this server allowed to send?” DKIM answers “was this message altered in transit?” DMARC answers “the From: address claims to be you — does the authentication back that up, and what should I do if it does not?”

RecordQuestion it answersRecord typePublished atTypical failure
SPFIs this sending IP authorised for the domain?TXTThe root domainToo many DNS lookups, or a missing include
DKIMWas the message altered after signing?TXTselector._domainkey.yourdomain.comA forwarder rewrites the body or headers
DMARCDoes the From: domain align, and what now?TXT_dmarc.yourdomain.comAlignment fails even though SPF or DKIM passed

Only DMARC looks at the address your recipient can see. SPF checks the envelope sender, which is invisible in most mail clients, and DKIM checks the signing domain. That gap is the whole reason DMARC exists: without it, a message can pass both checks while displaying someone else’s domain in the From: field.

The SPF ten-lookup limit, and why it breaks quietly

SPF is evaluated by following your record and every record it references. The specification caps that at ten DNS lookups. Each include:, a, mx, ptr and redirect mechanism counts, and nested includes count too.

Three or four services is usually enough to hit it. A help desk, a CRM, a marketing platform and Google Workspace can consume the budget between them without anything looking wrong in the record itself. Past ten lookups the evaluation returns permerror, and most receivers treat that as a failure rather than ignoring it.

The symptom is confusing: mail that delivered last month starts failing after someone adds one more service to the record. Nothing in your sending changed. Flattening the record, or removing services that no longer send, is the fix. Checking the lookup count after every change is the habit worth building.

Choosing a DMARC policy

DMARC has three policies, and the gap between the first and the other two is larger than the names suggest.

Chart comparing the three DMARC policies, showing p=none delivering 100 per cent of failing mail to the inbox, p=quarantine sending it to spam instead, and p=reject blocking it at the server
p=none changes nothing about delivery. It only turns on reporting.
PolicyWhat happens to failing mailWhat it protectsSensible when
p=noneNothing. It is delivered as beforeNothing, but reports start arrivingYou are starting out and need to see who sends as you
p=quarantineDelivered to the spam folderMost spoofing, with a recovery pathReports have been clean for several weeks
p=rejectRefused at the receiving serverSpoofing outrightEvery legitimate sender is confirmed aligned

Moving straight to p=reject is the mistake that costs the most. If a billing system or a support tool is sending as your domain without alignment, that mail stops arriving and no one finds out until a customer asks. Starting at p=none, reading the aggregate reports for a few weeks and then tightening is slower and considerably safer.

It is worth being clear about what the bulk sender rules require, because the two things get conflated. The Google and Yahoo requirements ask that a DMARC record exists and that alignment passes. They do not ask for enforcement. p=none with alignment satisfies them.

The mistakes that leave authentication half-finished

Publishing two SPF records is the most common. A domain may have only one. Two records is a permerror, and it usually happens when a second service is added by a different person. Merge the mechanisms into one record instead.

Signing with the platform’s domain rather than your own is the second. Most sending tools let you publish a DKIM selector on your domain, and until you do, DKIM authenticates them. That passes DKIM and fails DMARC alignment at the same time, which is the most confusing failure mode of the three.

The third is treating authentication as the whole of deliverability. It gets you admitted; it does not make you welcome. List quality decides what happens next, and the tier structure in our Reoon Email Verifier review is worth reading alongside this. For cold outreach, where domains are newer and reputation is thinner, our SalesBlink review covers the sending side.

Frequently asked questions

Do I need all three of SPF, DKIM and DMARC?

Yes, if you send more than 5,000 messages a day to Gmail. Below that, SPF or DKIM plus valid reverse DNS is the minimum. DMARC is still worth adding at any volume, because without it nothing reports failures to you.

What is the SPF ten-lookup limit?

Ten. SPF allows a maximum of ten DNS lookups when evaluating your record, counting every include, a, mx and redirect. Exceed it and the record returns permerror, which most receivers treat as an SPF failure rather than ignoring it.

Is p=none enough for the Gmail bulk sender rules?

Yes. Google requires that a DMARC record exists, and p=none satisfies that. It changes nothing about delivery, though. Stricter policies protect your domain from spoofing, but they are not what the bulk sender requirements ask for.

Why does my email pass SPF but still fail DMARC?

Alignment. DMARC requires the domain in the visible From: header to match the domain SPF or DKIM authenticated. A platform sending on your behalf often passes SPF against its own domain, which authenticates the platform rather than you.

How long do DNS changes take to work?

Up to 48 hours, though most resolvers pick up a TXT record within an hour. The delay is the TTL on the old record, not the new one. Lower the TTL before making changes if you expect to iterate.

Bottom line

Publish all three, check the SPF lookup count after every change, and confirm alignment rather than assuming a pass is enough. Start DMARC at p=none and tighten once the reports are clean, not before.

Related reading

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top