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: user@domain.com

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:dmarc@example.com"

DMARC Tags

TagRequiredDescriptionExample
vYesVersionv=DMARC1
pYesPolicyp=none/quarantine/reject
ruaNoAggregate report URIrua=mailto:reports@example.com
rufNoForensic report URIruf=mailto:forensic@example.com
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:dmarc@example.com
p=quarantine: Send failed messages to spam/junk
v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com
p=reject: Reject failed messages entirely
v=DMARC1; p=reject; rua=mailto:dmarc@example.com

DMARC Implementation Path

Phase 1: Monitor (p=none)

Start with monitoring to understand your email ecosystem:

v=DMARC1; p=none; rua=mailto:dmarc-reports@example.com

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:dmarc-reports@example.com

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

Phase 3: Reject (p=reject)

Full protection:

v=DMARC1; p=reject; rua=mailto:dmarc-reports@example.com

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.