DMARC (Domain-based Message Authentication)

Email & Security
An email authentication protocol that builds on SPF and DKIM, allowing domain owners to specify how unauthenticated email should be handled.
← Back to Glossary

What is DMARC?

DMARC (Domain-based Message Authentication, Reporting & Conformance) is an email authentication protocol that builds on SPF and DKIM. It allows domain owners to publish a policy specifying how receiving servers should handle messages that fail authentication, and provides reporting mechanisms to monitor email authentication.

Why DMARC is Essential

SPF and DKIM alone have a critical gap: they don't tell receivers what to do with failed messages. An attacker can send spoofed email without SPF/DKIM, and receivers have no guidance.

DMARC solves this by:

How DMARC Works

1. Sender publishes DMARC policy in DNS (TXT record at _dmarc.domain.com)

2. Email is sent with From: [email protected]

3. Receiver checks SPF and DKIM

4. Receiver checks alignment: Does authenticated domain match From header?

5. Policy applied: Based on DMARC record (none, quarantine, reject)

6. Reports sent: Aggregate reports to specified addresses

DMARC Alignment

DMARC requires "alignment"—the domain in the From header must match either:

Without alignment, SPF/DKIM pass but DMARC fails.

DMARC Record Format

DMARC records are TXT records at _dmarc.yourdomain.com:

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

DMARC Tags

TagRequiredDescriptionExample
vYesVersionv=DMARC1
pYesPolicyp=none/quarantine/reject
ruaNoAggregate report URIrua=mailto:[email protected]
rufNoForensic report URIruf=mailto:[email protected]
pctNoPolicy percentagepct=100
spNoSubdomain policysp=reject
adkimNoDKIM alignment modeadkim=s (strict) or adkim=r (relaxed)
aspfNoSPF alignment modeaspf=s or aspf=r

DMARC Policies

p=none: Monitor only—take no action on failed messages
v=DMARC1; p=none; rua=mailto:[email protected]
p=quarantine: Send failed messages to spam/junk
v=DMARC1; p=quarantine; rua=mailto:[email protected]
p=reject: Reject failed messages entirely
v=DMARC1; p=reject; rua=mailto:[email protected]

DMARC Implementation Path

Phase 1: Monitor (p=none)

Start with monitoring to understand your email ecosystem:

v=DMARC1; p=none; rua=mailto:[email protected]

Analyze reports for 2-4 weeks to identify:

Phase 2: Quarantine (p=quarantine)

Once legitimate sources are authenticated:

v=DMARC1; p=quarantine; pct=10; rua=mailto:[email protected]

Use pct=10 to quarantine only 10% initially, increasing gradually.

Phase 3: Reject (p=reject)

Full protection:

v=DMARC1; p=reject; rua=mailto:[email protected]

DMARC Reports

Aggregate Reports (rua)

Daily XML reports showing authentication results across all your email:

Forensic Reports (ruf)

Individual failure reports (not all receivers send these due to privacy):

Report Processing

Raw DMARC reports are XML and hard to read. Use services like:

Checking DMARC

dig _dmarc.example.com TXT
curl "https://domscan.net/v1/health?domain=example.com"

# Returns hasDMARC status

Common DMARC Issues

No reports received: Ensure rua address can receive large emails; some providers filter. Legitimate email failing: Check SPF/DKIM configuration for all sending services; verify alignment. Third-party services failing: Many services require custom DKIM setup for DMARC alignment.

DMARC is the capstone of email authentication—implement it after SPF and DKIM are working correctly.

Put This Knowledge to Work

Use DomScan's API to check domain availability, health, and more.