"No DMARC record found" means a DNS query for a TXT record at _dmarc.yourdomain.com returned nothing. This is different from an SPF or DKIM failure - DMARC doesn't exist at all yet for the domain.
Confirm the record is actually missing
$ dig _dmarc.yourdomain.com TXT +short
If that returns nothing, the record genuinely does not exist. If it returns something but a checker still reports the error, check for typos in the record name - it must be exactly _dmarc (with the leading underscore) prepended to your domain, not dmarc without the underscore, and not placed on a subdomain if your mail sends from the root domain.
Why this now matters more than it used to
Gmail and Yahoo both introduced bulk-sender requirements that include having a DMARC record in place (even at p=none) for domains sending meaningful volume to their users. A missing DMARC record on a domain sending bulk or marketing mail risks outright rejection or heavy filtering at those providers, not just a lower trust score.
Creating the record
Start conservative:
_dmarc.yourdomain.com. TXT "v=DMARC1; p=none; rua=mailto:dmarc-reports@yourdomain.com"
Breaking this down:
v=DMARC1- required, must be first.p=none- monitor only; mail is delivered as it otherwise would be, but you receive aggregate reports.rua=mailto:...- where daily aggregate reports get sent. Use an address that can receive and ideally parse these (they arrive as XML attachments) - a dedicated inbox or a DMARC reporting tool, not an inbox you check casually, since volume adds up.
Policy comparison: none vs quarantine vs reject
| Policy | Effect on failing mail | When to use |
|---|---|---|
p=none | Delivered normally, reports generated | Always your starting point |
p=quarantine | Sent to spam/junk | After reports confirm legitimate senders align |
p=reject | Rejected outright | Once quarantine has run clean for a sustained period |
Add sp= if you want a different policy for subdomains than the one you set for the root domain, which matters if you have subdomains that don't send mail at all:
_dmarc.yourdomain.com. TXT "v=DMARC1; p=quarantine; sp=reject; rua=mailto:dmarc-reports@yourdomain.com"
That example quarantines failures on the root domain but rejects them outright on any subdomain - useful once you've confirmed nothing legitimate sends from unused subdomains.
Step-by-step to go from nothing to monitored
- Confirm the record is missing with the
digcommand above. - Decide the reporting address - set up a mailbox or reporting tool first so the first reports aren't lost.
- Publish `p=none` with `rua=` as shown above.
- Wait for propagation (usually under an hour, can be longer) and re-run the
digcheck to confirm it resolves. - Read aggregate reports for two to three weeks before considering
p=quarantine.
What not to do
- Don't publish straight to
p=rejectto "fix" the error quickly - with no visibility into what's currently aligned, you can block your own legitimate mail with no warning. - Don't set the record on
dmarc.yourdomain.com(missing underscore) - DMARC requires the exact label_dmarc. - Don't ignore the reports once they start arriving. The record existing is not the goal; knowing what it's reporting is.
Confirming the fix worked
After publishing, re-run the lookup and also check a real delivered message's headers:
$ dig _dmarc.yourdomain.com TXT +short "v=DMARC1; p=none; rua=mailto:dmarc-reports@yourdomain.com"
Authentication-Results: mx.google.com;
dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=yourdomain.comA dmarc=pass result in a real message's headers is the actual confirmation - a DNS record existing is necessary but not sufficient proof the policy is being evaluated as you expect, since some checker tools cache results or check against a different record type by mistake.
FAQ
I published the record but a checker tool still says "no DMARC record found." This is almost always propagation delay or a caching checker - re-run dig _dmarc.yourdomain.com TXT +short directly rather than trusting a third-party tool's cached result, and wait at least an hour before concluding the record itself is wrong.
Can I have a DMARC record on a subdomain that's different from my root domain's? Yes - DMARC is evaluated per-domain unless the root domain's sp= tag specifies otherwise, so a subdomain used for a different purpose (e.g. a dedicated marketing subdomain) can carry its own _dmarc TXT record with a different policy.
What's a reasonable first rua= address? Any inbox that can receive attachments reliably works to start, though aggregate reports arrive daily as XML and get unreadable quickly without a parser - many teams move to a dedicated DMARC monitoring inbox or tool once reports are confirmed to be arriving.
MailPilot checks SPF, DKIM, and DMARC status for every mailbox's domain it warms, so a missing DMARC record is flagged as part of ongoing authentication checks rather than discovered the hard way when a provider starts rejecting mail.
Ready to reach the inbox every time?
Automated email warmup across real peer mailboxes. Live inbox placement monitoring. Free 7-day trial - no credit card required.
Start free trial