DMARC glossary

What does v=DMARC1 mean in a DMARC record?

Samuel Chenard

By Samuel Chenard · CEO & Co-Founder, Palisade · Reviewed July 15, 2026

v=DMARC1 is the version tag that identifies a DNS TXT record as a DMARC record. It must be the first tag in the record, and DMARC1 is the only valid value. If it's missing, misspelled, or not first, receiving servers ignore the entire record — as far as the world is concerned, you have no DMARC policy.

v=DMARC1 at a glance
Tagv (version)
Valid valuesDMARC1 — the only valid value, exactly as written
DefaultRequired — no default. An invalid or missing v tag makes receivers discard the whole record.
Where it goesAlways the first tag, in a TXT record published at _dmarc.<yourdomain>, e.g. v=DMARC1; p=none;

How v=DMARC1 works

DMARC records live in DNS as plain TXT records at a special hostname: _dmarc.yourdomain.com. Since a TXT record can hold anything, receivers need a way to recognise one as DMARC. That's the v tag's only job — it says “this is a DMARC record, version 1.”

The rules are strict on purpose. RFC 7489 requires the value to be exactly DMARC1 and requires it to be the first tag in the record. v=dmarc1, v=DMARC 1, or a record that opens with p=reject before the version tag are all treated the same way: the receiver ignores the record entirely. No error, no warning — your policy just silently doesn't exist.

That silent failure mode is what makes this tag worth checking. A domain can look configured in your DNS console while every mail server on earth treats it as having no DMARC at all. When in doubt, run the record through a checker rather than eyeballing it.

Correct record vs common mistake

Correct

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

Version tag first, exact value DMARC1 — receivers parse the rest of the record and apply your policy.

Common mistake

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

The version tag isn't first, so receivers ignore the entire record. The p=reject you think you have does nothing.

Generate your DMARC record

Build the exact TXT record to publish — pick a policy, add a reporting address, copy. Free, no signup.

Used to show the exact host name to publish — the record itself doesn't contain it.

Start at none to observe, then tighten once reports look clean.

Where daily XML summaries are sent. Comma-separate multiple addresses.

Advanced options (sp, alignment, pct, ruf)

Subdomains inherit p unless you set this. Attackers love unused subdomains — reject is a strong choice once you're at enforcement.

Relaxed allows subdomain matches (mail.yourdomain.com signs for yourdomain.com). Strict requires an exact match — most domains should stay relaxed.

Same idea for the SPF (Return-Path) domain.

Applies quarantine/reject to a percentage of failing mail during rollout. Retired in DMARCbis — use briefly if at all.

Per-message failure samples. Rarely sent by large providers; contains message data.

Your DMARC record

Publish this as a TXT record in your DNS.

Host / Name

_dmarc.yourdomain.com

Value (TXT)

v=DMARC1; p=none;

Record type: TXT · TTL: your provider's default (e.g. 3600) is fine.

No rua address set — you'll get no aggregate reports, which means no visibility into who is sending as your domain. Add one before publishing.
p=none is monitoring mode: receivers report but deliver everything, including spoofed mail. It's the right starting point — plan to move to quarantine, then reject, once your reports show all legitimate senders passing.

After you publish

  1. Add the TXT record at your DNS host and allow up to an hour for propagation.
  2. Verify it with the free DMARC checker.
  3. Watch your aggregate reports, fix SPF and DKIM for every legitimate sender, then step up to quarantine and reject.

Troubleshooting v=DMARC1

IssueLikely causeFix
Checker says 'no DMARC record found' but you published oneRecord is at the domain root instead of _dmarc.<domain>, or hasn't propagated yetPublish the TXT record at the _dmarc subdomain and re-check after DNS propagation
Record exists but receivers ignore itv tag misspelled, lowercase, or not the first tag in the recordMake v=DMARC1 the exact, first tag — then verify with a DMARC lookup tool
Two DMARC records at _dmarcAn old record was left behind when a new one was added (common after switching providers)Delete the duplicate — receivers that find multiple DMARC records ignore all of them

See this on your own domain

Enter your domain — the check runs instantly on the next page. Free, no signup.

Why it matters for MSPs

A typo in one tag kills the whole record — and nothing alerts you. Across 50–200 client domains, hand-edited DNS means a percentage of your “protected” tenants may have records receivers silently discard. The client believes they're covered; an audit or an incident says otherwise.

Trusted by MSPs

Their responsive support, agent task lists, white-label reporting, and centralized dashboard make managing our customer domains, effortless.
Bobby GhoshalBobby Ghoshal CEO, dupe.com
Partner LogoPartner LogoPartner LogoPartner LogoPartner LogoPartner LogoPartner LogoPartner LogoPartner LogoPartner LogoPartner LogoPartner LogoPartner LogoPartner LogoPartner LogoPartner LogoPartner LogoPartner LogoPartner LogoPartner LogoPartner LogoPartner LogoPartner LogoPartner LogoPartner LogoPartner LogoPartner LogoPartner LogoPartner LogoPartner LogoPartner LogoPartner LogoPartner LogoPartner Logo

Enforce it — don't just monitor it

Palisade validates every client domain's DMARC record as published DNS, not as intended DNS — so a broken v tag, a stray character, or a mangled record gets caught before it quietly disables protection.

Free 15-day trial · No credit card · Your own domain free forever (NFR)

Frequently asked questions

In a TXT record at the hostname _dmarc.yourdomain.com — not at the domain root. The full record starts with v=DMARC1 followed by at least a p= policy tag.

The value must be exactly DMARC1 — RFC 7489 requires a precise match. Don't risk lowercase or extra spaces; anything that doesn't match gets the whole record ignored.

The usual suspects: the record isn't at _dmarc.<domain>, the v=DMARC1 tag is missing or misspelled, it isn't the first tag, or there are two DMARC records at the same name (receivers ignore both). A DMARC checker will show you what resolvers actually see.

No. DMARC1 is the only version. The upcoming DMARCbis revision keeps the same v=DMARC1 tag for compatibility, so nothing changes on this front.

Related terms

What is DMARC? Email authentication explained