A DMARC fail means a message claiming to be from your domain did not pass SPF or DKIM in a way that lines up, or aligns, with the domain shown in the "From" address. For a cold email sending domain, that usually traces back to one of a handful of specific causes, not a mystery.
This page covers why DMARC fails, how to read the failing line in a message's headers, and a step-by-step fix checklist. It builds on our SPF, DKIM and DMARC setup guide, which covers adding all three records in order. If you already have a policy chosen and want to know when to tighten it, see our DMARC policy guide; if you want to read the daily aggregate reports that show fails over time, see how to read DMARC reports.
What does a DMARC fail mean for a cold email sending domain?
A DMARC fail means the receiving mail server could not confirm, through SPF or DKIM, that your message really came from the domain in its visible "From" address. The check that matters is called alignment, not just whether SPF or DKIM passed somewhere.
DMARC does not run its own authentication. It reads the result of SPF and DKIM, then asks one extra question: does the domain that passed match the domain the recipient sees in "From"? A message can fail DMARC even when SPF or DKIM each technically passed, if neither one passed for the aligned domain.
| Underlying check | Result needed for DMARC to pass |
|---|---|
| SPF | Passes, and the domain it checked (the envelope or Return-Path domain) matches the From domain |
| DKIM | Passes, and the domain in its signature (d=) matches the From domain |
| Either one | A pass on just one of the two, aligned, is enough |
A new cold email sending domain is especially exposed to this. SPF, DKIM and DMARC are all freshly set up at once, so a single missed detail breaks alignment even though every record looks fine on its own.
Why does DMARC fail on cold email when SPF and DKIM pass individually?
DMARC fails despite individual SPF and DKIM passes when the domain that each one checked is not the domain shown in the message's "From" address. This is the single most common source of confusion in a failing report, because every individual check looks healthy and the fail still shows up.
A report or header showing spf=pass and dkim=pass side by side with dmarc=fail is not a contradiction. It means the message cleared both underlying checks, just not for the domain DMARC actually cares about.
- SPF checks the envelope domain, the Return-Path, which your sending platform often sets. SPF can pass for that domain while still failing DMARC alignment against a different From domain.
- DKIM checks the
d=domain in its signature, set by whoever signed the message. If your mailbox provider signs with its own domain, DKIM passes, but not for yours. - Relaxed alignment, the default, only requires the same organizational domain, not an exact subdomain match. Strict alignment requires an exact match, which a subdomain setup can break.
What causes a DMARC fail on a cold email domain?
A DMARC fail on a cold email domain almost always traces back to one of six causes. Most are a mismatch, a missing authorization, or a setup step that was never finished.
- From domain and envelope or
d=domain mismatch. The sending platform uses a different domain for SPF's envelope check or DKIM's signature than the one in your visible From address, so neither check aligns even when both pass. - Forwarding. A message forwarded through another mailbox often keeps the original From address but gets re-sent from a server not in your SPF record, and the forwarding step can strip or alter the DKIM signature.
- Third-party senders missing from SPF. Any tool sending on your behalf, a CRM, a forwarding rule, a second sending platform, needs its servers listed in your SPF record or authorized to DKIM-sign. Miss one and its mail fails.
- DKIM key missing, or the wrong selector published. DKIM signs with a private key and points to a public key at a specific selector, like
google._domainkey. If the DNS record at that selector is missing, wrong, or was never published, DKIM fails outright regardless of the signature itself. - The SPF 10-lookup limit. SPF stops evaluating once it hits 10 DNS lookups across all nested
includestatements, a limit set in RFC 7208, and returns a permanent error past that point, which fails SPF even for legitimate senders listed further down the chain. - A basic setup gap. SPF or DKIM was never finished for the sending domain, which our SPF, DKIM and DMARC setup guide covers in the order these records need adding.
These six causes are not equally common on a cold email domain. A domain built and used only for cold outreach, sending from one platform, usually only needs to rule out the first, second and sixth: the mismatch, forwarding, and whether setup finished cleanly. The third-party sender and lookup-limit causes matter more once a domain also handles marketing mail, transactional mail, or a second sending tool alongside cold outreach.
How do you read a failing Authentication-Results header in cold email?
You read a failing Authentication-Results header by checking the spf=, dkim= and dmarc= results and the domain each one names, which together show exactly where alignment broke. Most mail clients hide this header by default, so look under "show original" or "view source" to find it.
The example below is invented, using a fictional domain and sender, to show the shape of the header without any real data:
Authentication-Results: mx.recipient-provider.com;
spf=pass smtp.mailfrom=bounce.examplecold.com;
dkim=fail header.d=examplecold.com;
dmarc=fail header.from=examplecold.com
In this invented example, SPF passed only for the envelope domain, DKIM failed outright, and DMARC had nothing aligned to pass on.
| Field in the header | What it shows in this example |
|---|---|
spf=pass smtp.mailfrom=bounce.examplecold.com | SPF passed, but for the envelope domain, not the From domain |
dkim=fail header.d=examplecold.com | DKIM failed outright, no usable signature at all |
dmarc=fail header.from=examplecold.com | Neither check passed aligned with this From domain, so DMARC fails |
How do you fix a DMARC fail on a cold email domain?
Fix a DMARC fail by confirming which check failed in the header, then correcting that specific record rather than guessing at the whole setup.
- Find the Authentication-Results header on an actual failing message, or the equivalent fields in a DMARC aggregate report, and note which of
spf=,dkim=actually failed, and what domain each one checked. - Compare that domain to your From address. If SPF or DKIM checked a different domain than the one in From, that is a
smtp.mailfromorheader.dmismatch, not a broken record; fix it at the sending platform's configuration, not in DNS. - Check SPF's lookup count. Count the nested
includestatements in your SPF record. If it is near or over 10, remove an unused include rather than adding another one. - Confirm the DKIM selector resolves. Look up the exact selector your sending platform expects, for example
google._domainkey.yourdomain.com, and confirm a TXT record with a public key exists at that host. - Add any missing sender to SPF, or confirm it is authorized to DKIM-sign, if the failing source turns out to be a legitimate platform you use.
- Re-check after 24 to 48 hours. DNS changes need time to propagate before a retest means anything; our guide to reading DMARC reports covers watching the aggregate reports for a clean result.
Fixing the record never changes what happens to a message that already failed. Catching an unresolved DMARC fail late is also one of the fastest ways cold emails end up in spam, so treat a new fail as worth checking the same day it shows up.
A single fail from a source you do not recognize is not automatically urgent on a p=none domain, since the mail still gets delivered either way. A fail from your own sending platform, or a pattern repeating across several reports, is the one worth acting on immediately.
What does the "DMARC policy not enabled" warning mean for a cold email domain?
The "DMARC policy not enabled" or "quarantine/reject policy not enabled" warning from a scanner tool simply means the domain's policy is set to p=none, and for a new cold email sending domain that is not a problem to fix.
A p=none policy asks receivers to deliver mail as normal and send you a report, rather than quarantining or rejecting failing mail. Scanner tools flag this as "not enabled" because they are built for general brand-protection use.
A brand-new sending domain used only for cold outreach has a different priority. Confirm your own mail passes cleanly before tightening anything, since moving to p=quarantine too early can catch your own warm-up mail if a sender was never added to SPF. The warning itself does not tell you whether that is the case; your actual DMARC reports do.
Google's email sender guidelines and Yahoo's bulk sender rules both accept a p=none policy as satisfying their DMARC requirement, as long as SPF and DKIM are also in place. Neither provider requires p=quarantine or p=reject to send at volume. Our DMARC policy guide covers the rollout path for moving past p=none once reports look clean, which is a separate decision from fixing an actual fail.
Pipefire publishes SPF, DKIM and a DMARC record on every sending domain it sets up, with the policy set to p=none and a reports address configured, as part of getting a domain ready to send. Our setup page covers what else gets checked before a mailbox goes live.
DMARC fail in cold email FAQ
What does DMARC fail mean for cold email?
It means SPF and DKIM either both failed, or one passed but for a domain that does not align with the message's visible From address. The receiving server then applies whatever policy the domain published to that message.
Why does cold email fail DMARC when SPF and DKIM both pass?
This happens when SPF passed for the envelope or Return-Path domain and DKIM passed for its own signing domain, but neither matches the domain shown in the From address. DMARC requires an aligned pass, not just any pass from either check.
Does a DMARC fail mean my cold email domain is broken?
Not necessarily. A single fail from an unfamiliar source while your own mail keeps passing is common and often just an unauthenticated third-party sender. Check the Authentication-Results header on the actual failing message before assuming the whole setup needs rebuilding.
Should a cold email domain fix the "DMARC policy not enabled" warning right away?
No, not on its own. That warning only means your policy is p=none, which both Google and Yahoo accept for bulk senders. Treat it as a status note, not an action item, unless your reports also show unresolved fails.
Where do I check whether a cold email failed DMARC?
Open the message's full headers, often under "show original" in your mail client, and look for the Authentication-Results line, which lists the spf=, dkim= and dmarc= results together with the domains each one checked.