← Blog/Authentication

Fixing the "No DMARC record found" error

October 15, 2026·6 min read·By MailPilot

"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

PolicyEffect on failing mailWhen to use
p=noneDelivered normally, reports generatedAlways your starting point
p=quarantineSent to spam/junkAfter reports confirm legitimate senders align
p=rejectRejected outrightOnce 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

  1. Confirm the record is missing with the dig command above.
  2. Decide the reporting address - set up a mailbox or reporting tool first so the first reports aren't lost.
  3. Publish `p=none` with `rua=` as shown above.
  4. Wait for propagation (usually under an hour, can be longer) and re-run the dig check to confirm it resolves.
  5. Read aggregate reports for two to three weeks before considering p=quarantine.

What not to do

  • Don't publish straight to p=reject to "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.com

A 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.

MailPilot

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
Reach the Inbox, Every Time
Connect unlimited inboxes for warmup. Free 7-day trial, no credit card.
Try for Free
WORKS WITH
OZOHO
inbox placement99.2%
free trial7-day
companies trust us340+

Start for free - no credit card required.

Get started freeBook a demo