Back to Learning Hub
EMAIL AUTHENTICATION August 18, 2026 · 8 min read · 3.5K/mo

What Is DMARC? How It Stops Email Spoofing

DMARC is the enforcement layer of email authentication. SPF and DKIM do the checking — DMARC tells receiving servers what to do when they fail, and reports back to you who's sending email using your domain.

D
DomainScan Team
DomainScan
Share
EMAIL AUTHENTICATION

Most domain owners who’ve set up SPF and DKIM believe they’re protected from email spoofing. They’re not — not fully. SPF and DKIM check the envelope and the signature. DMARC is the policy that protects the From: address users actually see. Without it, phishing attacks using your domain’s name can sail through SPF and DKIM checks.

The Problem DMARC Solves

Email authentication has a gap. SPF checks the MAIL FROM address (invisible to users). DKIM signs the message with a key tied to the d= domain (also invisible). Neither is required to match the From: header your recipients see.

From: [email protected]    ← what user sees (unprotected by SPF/DKIM alone)
Return-Path: [email protected]    ← where SPF checks (can pass)
DKIM-Signature: d=spam.net    ← where DKIM checks (can pass)

This email passes SPF and DKIM while completely forging your executive’s address. DMARC closes this gap with identifier alignment.

DMARC Identifier Alignment

DMARC requires that either:

  • The SPF envelope sender domain aligns with the From: domain, OR
  • The DKIM d= domain aligns with the From: domain
From: [email protected]

SPF alignment:  MAIL FROM domain = example.com  → aligned ✓
DKIM alignment: DKIM d=example.com              → aligned ✓

Relaxed: mail.example.com aligns with example.com ✓
Strict:  only exact domain match: example.com = example.com ✓

If neither SPF nor DKIM passes with alignment, DMARC applies the policy from your DNS record.

The DMARC DNS Record

DMARC is published as a TXT record at _dmarc.yourdomain.com:

_dmarc.example.com.  TXT  "v=DMARC1; p=reject; rua=mailto:[email protected]; ruf=mailto:[email protected]; pct=100; adkim=r; aspf=r"

Tag Reference

TagValuesMeaning
v=DMARC1Version (required, must be first)
p=none, quarantine, rejectPolicy for failing messages
rua=mailto:addrAggregate report destination
ruf=mailto:addrForensic report destination
pct=1–100Percentage of messages policy applies to (default 100)
adkim=r (relaxed), s (strict)DKIM alignment mode
aspf=r (relaxed), s (strict)SPF alignment mode
sp=none, quarantine, rejectSubdomain policy (inherits p= if omitted)
fo=0, 1, d, sForensic report options

Policy Levels

p=none       → Monitor. Deliver all email. Send reports. (start here)
p=quarantine → Suspect. Route failing email to spam/junk.
p=reject     → Block. Reject failing email at server. (end goal)

Deployment Roadmap

Phase 1: Monitor (Week 1–4)

_dmarc.example.com.  TXT  "v=DMARC1; p=none; rua=mailto:[email protected]"

Collect reports. Parse them (see tools below). Identify every sending source. Verify each one passes SPF or DKIM alignment.

Phase 2: Quarantine with Low Percentage (Week 4–8)

_dmarc.example.com.  TXT  "v=DMARC1; p=quarantine; pct=10; rua=mailto:[email protected]"

Apply policy to 10% of failing messages. Monitor for legitimate email being quarantined. Increase pct gradually.

Phase 3: Full Quarantine (Week 8–12)

_dmarc.example.com.  TXT  "v=DMARC1; p=quarantine; pct=100; rua=mailto:[email protected]"

Phase 4: Reject (Week 12+)

_dmarc.example.com.  TXT  "v=DMARC1; p=reject; rua=mailto:[email protected]"

Never skip the monitoring phase. Jumping straight to p=reject blocks legitimate email from services you forgot to configure.

Reading DMARC Reports

Aggregate reports (rua) are XML files emailed daily. Raw XML is unreadable. Use:

ToolTypeCost
Google Postmaster ToolsWeb dashboardFree
DmarcianSaaS parserFree tier + paid
Valimail MonitorSaaSFree tier
Postmark DMARCSimple summary emailsFree
parsedmarcSelf-hostedOpen source

A typical report entry in readable form:

Source IP:    74.125.130.27 (Google)
Count:        1,523 messages
SPF result:   pass (aligned)
DKIM result:  pass (aligned)
Disposition:  none

Look for sources where disposition=quarantine or disposition=reject on messages that should be legitimate — those are services you need to fix before moving to a stricter policy.

DMARC for Subdomains

The sp= tag controls subdomain policy. If omitted, subdomains inherit p=:

; Protect both root domain and all subdomains
_dmarc.example.com.  TXT  "v=DMARC1; p=reject; sp=reject; rua=mailto:[email protected]"

; Stricter subdomains while root is still in quarantine
_dmarc.example.com.  TXT  "v=DMARC1; p=quarantine; sp=reject; rua=mailto:[email protected]"

Subdomains can also have their own _dmarc.subdomain.example.com records that override the parent policy.

Non-Sending Domains

Domains that never send email are prime spoofing targets. Protect them with a strict DMARC policy:

; For domains that send no email
_dmarc.parked-domain.com.  TXT  "v=DMARC1; p=reject"
parked-domain.com.         TXT  "v=spf1 -all"

Pair with SPF -all and no MX records for maximum protection.

DMARC and Google/Yahoo Sender Requirements

Since February 2024, Google and Yahoo require bulk senders (>5,000 emails/day to Gmail) to have:

  • Valid SPF record
  • Valid DKIM record
  • DMARC record with at least p=none

Meeting only p=none satisfies their requirement, but p=reject is the actual protection goal.

Common Mistakes

MistakeProblemFix
Jumping to p=rejectBlocks legitimate emailMonitor with p=none first
No rua= addressNo visibility into sourcesAlways set rua=
Strict alignment before all sources passLegitimate email failsUse relaxed alignment while onboarding
DMARC on root but not subdomainsSubdomains still spoofableAdd sp=reject or per-subdomain records
Forgetting forwarding listsForwarded email failsUse ARC, configure list servers to re-sign
Ignoring reportsGaps in coverage go undetectedReview aggregate reports weekly during rollout

Verification

# Check DMARC record
dig TXT _dmarc.example.com +short

# Send test email and check headers (Gmail → View original)
# Look for:
# Authentication-Results: dmarc=pass action=none header.from=example.com

SPF + DKIM + DMARC together form a complete email authentication system. Each layer is necessary; none is sufficient alone.

Common Questions

01

What is the difference between DMARC p=none, p=quarantine, and p=reject?

p=none means monitor only — emails that fail DMARC are delivered normally, but reports are sent to your rua address. p=quarantine means failing emails are sent to spam/junk. p=reject means failing emails are rejected outright — not delivered at all. Most organizations start at p=none, analyze reports for weeks, then graduate to p=quarantine and finally p=reject.

02

What is DMARC alignment?

DMARC alignment requires that the domain in the From: header matches either the SPF envelope sender domain or the DKIM signing domain. Strict alignment requires an exact match. Relaxed alignment (default) allows organizational domain matching — subdomain.example.com aligns with example.com. A message passes DMARC if it passes SPF alignment OR DKIM alignment (not necessarily both).

03

Will DMARC break my email if I set p=reject too quickly?

Yes, if you haven't fully inventoried all your sending sources. If a legitimate service sends email on your behalf and doesn't pass SPF or DKIM alignment, p=reject will block those emails. This is why the p=none monitoring phase is critical — use rua reports to identify all sending sources and ensure each passes authentication before moving to reject.

04

What is a DMARC aggregate report (rua)?

DMARC aggregate reports are XML files sent daily by receiving mail servers (Gmail, Outlook, Yahoo, etc.) to your rua email address. They contain: sending IP addresses, message counts, SPF/DKIM pass/fail for each source, disposition applied. You need a report parser (Google Postmaster Tools, Postmark DMARC, Dmarcian, Valimail) to make them readable.

05

Do I need DMARC if I already have SPF and DKIM?

Yes. SPF checks the envelope sender. DKIM signs the message. Neither by itself protects the From: header — the address users actually see. DMARC is what ties SPF/DKIM results to the From: header and specifies what happens when they don't match. Without DMARC, a spoofed From: address can pass SPF/DKIM checks on the envelope while the visible sender address is forged.

#email-authentication#email-auth#dns#domainscan
D
DomainScan Team
Writes about DNS infrastructure, email authentication, domain security, and the engineering behind automated domain intelligence.