DMARC reference

What is a DMARC record?

Samuel Chenard

By Samuel Chenard · CEO & Co-Founder, Palisade · Reviewed August 21, 2026

A DMARC record is a single DNS TXT record published at _dmarc.yourdomain.com. It tells receiving mail servers what to do with messages that claim to come from your domain but fail SPF and DKIM alignment, and where to send reports about them. It is a list of tag=value pairs separated by semicolons, it always starts with v=DMARC1, and a domain may publish exactly one.

DMARC record at a glance
Record typeDNS TXT
Host_dmarc.yourdomain.com
Shortest valid recordv=DMARC1
Typical recordv=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com
Per domainExactly one. Two records read as none.
Depends onSPF and DKIM. DMARC evaluates their results, it performs no check of its own.
Current specRFC 9989, published May 2026, which retired three tags.

What a DMARC record looks like

Every DMARC record is the same shape: a version, a policy, and then optional tags that adjust reporting and alignment. These four are all valid, and each one is appropriate at a different point in a rollout.

A table of two example DMARC TXT records, both at the host _dmarc.yourdomain.com: one with the monitoring policy p=none and one with the enforcement policy p=reject, each carrying a rua reporting address.
The same host and record type either side of a rollout. Only the policy tag changes. Source: Palisade.

Monitoring, the record a first setup starts on

v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com

Nothing is blocked. Receivers deliver as before and report daily on every source sending as the domain, which is the evidence every later decision depends on.

Enforcement, the record a finished rollout ends on

v=DMARC1; p=reject; rua=mailto:dmarc@yourdomain.com

Mail that fails authentication is refused rather than delivered. Safe only once reports show every legitimate sender passing SPF or DKIM with alignment.

Parent enforcing, a sending subdomain still testing

v=DMARC1; p=reject; sp=none; rua=mailto:dmarc@yourdomain.com

The sp tag gives subdomains their own policy, so a subdomain whose senders are not sorted out yet can stay at monitoring while the parent domain enforces.

The shortest record that is still valid

v=DMARC1

The version tag alone parses, and receivers treat the missing policy as p=none. Practically useless either way: with no rua address nothing reports back, so the record produces no evidence and the rollout cannot progress.

The mistake that disables the policy

One record, amended

v=DMARC1; p=quarantine; rua=mailto:dmarc@yourdomain.com

One record carrying the new policy. Changing a policy means editing the value inside the record you already publish.

Two records at _dmarc

v=DMARC1; p=none; rua=mailto:old@yourdomain.com
v=DMARC1; p=quarantine; rua=mailto:dmarc@yourdomain.com

Publishing a second record instead of amending the first. Receivers that find two at _dmarc treat the domain as having no usable policy, so this disables both rather than replacing one.

Every tag, and what it does

Only v is required, and it is the only tag with a fixed position: it must come first or the whole record is ignored. Everything else is optional, including the policy tag, and a record with no p is read as though it said p=none.

DMARC record tags

TagStatusWhat it controls
vRequired, and must come firstProtocol version. The only valid value is DMARC1. A record that does not begin with it is ignored entirely.
pRecommendedThe policy receivers apply to mail that fails authentication: none to monitor, quarantine to send to spam, reject to refuse. A record that omits it is read as though it said p=none.
ruaStrongly recommendedWhere daily aggregate reports are sent, as a mailto: URI. Without it the record publishes but produces no evidence about who sends as your domain.
rufOptional, rarely usefulWhere per-message failure samples are sent. Most large receivers, Gmail included, do not send them, and the samples can carry message content.
spOptionalA separate policy for subdomains. Without it, subdomains inherit the p value, so sp is how a parent domain enforces while a sending subdomain stays at monitoring.
npOptionalA policy for subdomains that do not exist in DNS at all, which is what spoofers reach for once the real names are protected.
adkimOptional, defaults to relaxedHow closely the DKIM signing domain must match the From domain. r accepts a subdomain match; s requires an exact one.
aspfOptional, defaults to relaxedThe same alignment control for SPF. Relaxed suits nearly every domain, because legitimate services routinely send from subdomains.
foOptionalWhich failure conditions generate a ruf report. Only meaningful if you publish a ruf address and your receivers actually send them.
tOptional, defaults to nTest mode. t=y asks receivers not to apply the policy yet while still sending reports, which is the RFC's named replacement for part of what pct used to do.
psdOptionalMarks the domain as a public suffix domain. Relevant to registry operators rather than to an ordinary sending domain.
pctRemoved by RFC 9989Applied the policy to a percentage of failing mail. Receivers sampled inconsistently; omit it from new records.
rfRemoved by RFC 9989Named the failure report format. Only one format was ever in real use.
riRemoved by RFC 9989Requested an aggregate reporting interval. Receivers sent daily reports regardless.

The last three are the ones worth knowing about, because older guides still recommend them. pct, rf and ri were part of RFC 7489 and were removed by RFC 9989 in May 2026. A record that still carries them is not broken, but new records should leave them out.

Where the record lives

A DMARC record lives in public DNS, at the _dmarc host, published by whichever provider answers for the domain's nameservers. Two details cause most of the confusion here.

The first is that your mail platform is not where the record goes. Microsoft and Google both document DMARC thoroughly, which leads people to look for a setting in the admin console. There is not one: the record is a DNS entry, and the admin console is where DKIM signing gets turned on beforehand.

The second is that the registrar is not always the DNS host. Buying a domain at GoDaddy does not mean GoDaddy answers for it, and a record saved at the registrar while another provider hosts the zone will never resolve. Running dig NS yourdomain.com settles it in one lookup.

Read a domain's DMARC record

Queries _dmarc for any domain and parses every tag, including the retired ones, so you can see exactly what is published rather than what someone believes is published.

How does a DMARC record work?

When a message arrives, the receiver checks SPF and DKIM, then looks up the DMARC record for the domain in the From header. The check that matters is alignment: SPF or DKIM passing is not enough on its own, because either can pass for a domain the recipient never sees. DMARC asks whether the domain that passed is the domain being displayed.

If at least one of them passes and aligns, the message passes DMARC and the policy is irrelevant. If neither does, the receiver applies p, and either delivers the message anyway (none), files it as spam (quarantine), or refuses it (reject). Either way it counts the result and includes it in the daily report sent to your rua address.

That last part is why a record with no reporting address is a wasted publication. The policy tells receivers what to do; the reports tell you whether it is safe to ask. Setting DMARC up end to end walks the sequence, and what DMARC is covers the protocol behind it.

Three columns comparing the DMARC policies p=none, p=quarantine and p=reject: none delivers everything and spoofing still lands, quarantine files failing mail as spam, and reject refuses it so spoofing stops.
The p tag in your DMARC record sets which policy receivers apply to failing email. Source: Palisade.

DMARC software that does the work

A published record is the beginning of the work. Palisade's agent reads the aggregate reports the record generates, names every service sending as your domain, drafts the SPF and DKIM fixes each one needs, and proposes the next policy step when the evidence supports it. You review and approve every change before it ships.

Get startedBook a demo

1 domain free up to 1,000 emails/month

Questions readers ask

Frequently asked questions

Keep reading

Set DMARC up end to end, from SPF to p=reject