Canny Pigeons

Learn · Fixing a record

No DMARC record found

A checker looked up _dmarc.yourdomain.com, found no usable TXT record, and told you so. Most of the time that is the whole story and the fix takes five minutes. But two other situations produce exactly the same message while a record sits in your DNS looking perfectly correct, and people who hit those spend an afternoon re-reading text that was never the problem.

Confirm which one you are in before editing anything: the free DMARC record checker queries the name receivers query and shows you what came back.

Cause 1: there genuinely isn't one

The common case. No record exists, so anyone can send mail carrying your domain in the From address and no provider has been told to treat that as suspicious.

Publish a TXT record:

FieldValue
TypeTXT
Host / Name_dmarc
Valuev=DMARC1; p=none; rua=mailto:you@yourdomain.com
TTLDefault, or 3600

p=none changes nothing about how your mail is delivered. It asks receivers to report rather than act, which is how you find out who sends as your domain before any of that mail is at risk. Scanners will now grade you as "DMARC policy not enabled" — that is the expected next state, not a new problem, and it is the one you want to be in while you read reports.

The full tag reference, including ruf=, adkim= and the rest, is on the DMARC record page.

Cause 2: it's published at the wrong host

This is the one worth reading even if you are sure it does not apply to you, because the record looks right in your DNS panel and is invisible to the entire internet.

Nearly every DNS provider appends the zone name to whatever you type in the host field. Type _dmarc and you get _dmarc.yourdomain.com, which is correct. Type the full name because it seems safer and you get this:

_dmarc.yourdomain.com.yourdomain.com     ← created
_dmarc.yourdomain.com                    ← what receivers query

The record is real, the syntax is flawless, and nothing will ever find it. Most registrar panels behave this way, while a handful expect the fully qualified name instead and produce the mirror-image mistake when you type the short one. The interface rarely tells you which kind it is, so read the saved record back in the list afterwards rather than trusting what you typed — the host field is covered in more detail on the DMARC record page.

Two neighbouring versions of the same error:

Cause 3: it exists but won't parse

A record is there, at the right name, and parsers reject it — so tools report it as missing rather than as broken. The causes are all small:

If the checker reports a record it cannot read, the text of the record is where to look. If it reports nothing at all, you are in cause 1 or cause 2.

A subdomain reporting no record is usually fine

Checking mail.yourdomain.com or news.yourdomain.com and seeing "no DMARC record found" is expected behaviour, not a gap. When a receiver finds no record at the exact name, it looks up the organisational domain and applies the policy it finds there. Your subdomains are already covered by the record at _dmarc.yourdomain.com.

Publish a record at a subdomain only when you want it treated differently — a bulk sending subdomain you are still fixing, for instance, while the parent is already enforcing. Otherwise control them from the parent with sp= for subdomains that exist and np= for ones that do not, both covered in the policy guide.

Checking that it worked

Re-run the DMARC checker. A new record usually resolves within minutes, but if you checked the domain before publishing, resolvers may have cached the absence — negative caching is commonly an hour — so a stale "not found" shortly after adding a record is normal rather than alarming.

The slower confirmation is reports arriving. Providers batch aggregate reports daily, so the first XML files land roughly a day after publishing, addressed to whatever you put in rua=. When they do, they are not meant to be read by hand: what is in a DMARC report covers what the XML contains, and the free report analyzer will turn a single file into something legible.

One thing to watch after this is fixed: records do not stay fixed. A migration rewrites a zone, a vendor's CNAME target changes, someone tidies DNS and removes an underscore name they did not recognise — and the error comes back on a domain nobody meant to touch. That is DNS drift.

Free checks: DMARC checker SPF checker DKIM checker Report analyzer

Publish one CNAME instead of maintaining a record

Hosted DMARC is included on every Canny Pigeons plan — even Free. We keep the record correct and turn the reports into readable sources.

Start free