DMARC Explained - Policy, Alignment, and Reports
Learn how DMARC uses SPF and DKIM alignment to stop domain spoofing, how p=none/quarantine/reject works, and how to roll out DMARC safely.
TL;DR
DMARC tells receivers what to do when mail claiming to be from your domain fails SPF/DKIM alignment. Publish it as a TXT record at _dmarc.example.com. Start with p=none and aggregate reports, identify every legitimate sender, move to p=quarantine, then p=reject. DMARC is the policy layer that turns SPF and DKIM from signals into enforceable protection against visible From-domain spoofing.
What you'll learn
- Understand DMARC alignment and policy enforcement
- Publish a correct DMARC TXT record
- Use aggregate reports to discover legitimate and abusive senders
- Roll out from monitoring to reject without breaking mail
DMARC (Domain-based Message Authentication, Reporting, and Conformance) is the policy layer for email authentication. It uses SPF and DKIM, checks whether either aligns with the visible From domain, and tells receivers what to do when alignment fails.
Without DMARC, SPF and DKIM are useful signals. With DMARC, they become an enforceable anti-spoofing policy.
What DMARC Solves
Attackers often spoof the visible From: header because that is what users see. SPF alone may pass for a different envelope sender. DKIM may pass for a third-party domain. DMARC asks the important question:
Does this message authenticate as the domain shown to the user?
DMARC passes if:
- SPF passes and the SPF-authenticated domain aligns with the From domain, or
- DKIM passes and the DKIM
d=domain aligns with the From domain
Only one aligned pass is required.
DMARC DNS Record
Publish DMARC as a TXT record at _dmarc.example.com:
_dmarc.example.com. 3600 IN TXT "v=DMARC1; p=none; rua=mailto:dmarc-reports@example.com"Common tags:
| Tag | Meaning |
|---|---|
v=DMARC1 | Version marker. Must come first. |
p=none | Monitor only. No enforcement. |
p=quarantine | Send failing mail to spam/junk. |
p=reject | Reject failing mail during SMTP. |
rua= | Aggregate report destination. |
ruf= | Forensic report destination. Less common. |
pct= | Percentage of mail subject to policy. |
sp= | Subdomain policy. |
adkim= | DKIM alignment mode: r relaxed or s strict. |
aspf= | SPF alignment mode: r relaxed or s strict. |
Rollout Plan
Phase 1: Monitor
v=DMARC1; p=none; rua=mailto:dmarc-reports@example.comRun this for at least two to four weeks. Identify all legitimate senders: workspace mail, transactional email, marketing tools, support systems, billing systems, and internal apps.
Phase 2: Fix Authentication
For every legitimate sender:
- SPF includes the sender or its bounce domain.
- DKIM signing is enabled.
- DKIM
d=aligns with your From domain where possible. - Third-party platforms use verified sending domains.
Phase 3: Quarantine
v=DMARC1; p=quarantine; pct=25; rua=mailto:dmarc-reports@example.comIncrease pct gradually:
pct=25 -> pct=50 -> pct=100Phase 4: Reject
v=DMARC1; p=reject; rua=mailto:dmarc-reports@example.com; sp=rejectThis is the target state for domains that send mail. Domains that never send mail should usually publish a reject policy too.
Strict vs Relaxed Alignment
Relaxed alignment allows organizational-domain matches:
- From:
example.com - DKIM d:
mail.example.com - Result: aligned in relaxed mode
Strict alignment requires exact domain match:
- From:
example.com - DKIM d:
mail.example.com - Result: not aligned in strict mode
Most domains start with relaxed alignment. Strict alignment is useful for high-control environments after all senders are understood.
DNScale Setup
curl -X POST "https://api.dnscale.eu/v1/zones/{zone_id}/records" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "_dmarc",
"type": "TXT",
"content": "v=DMARC1; p=none; rua=mailto:dmarc-reports@example.com",
"ttl": 3600
}'Validation
dig TXT _dmarc.example.com +shortCheck received headers:
Authentication-Results: mx.example;
spf=pass smtp.mailfrom=bounce.example.com;
dkim=pass header.d=example.com;
dmarc=pass header.from=example.comThe key result is dmarc=pass.
Common Mistakes
- Starting with
p=rejectbefore discovering all senders - Sending reports to a mailbox nobody parses
- Publishing multiple DMARC records
- Forgetting subdomains with
sp= - Assuming SPF pass automatically means DMARC pass
- Not enabling DKIM on third-party senders
Related Guides
Frequently asked questions
- Where is a DMARC record published?
- Publish DMARC as a TXT record at _dmarc.yourdomain. The value starts with v=DMARC1 and includes a policy such as p=none, p=quarantine, or p=reject.
- What does DMARC alignment mean?
- Alignment means the authenticated SPF or DKIM domain matches, or organizationally matches, the visible From domain. DMARC passes if either SPF or DKIM passes and aligns.
- Should I start with p=reject?
- No. Start with p=none and aggregate reports. Use reports to find legitimate senders, fix SPF/DKIM, then move to quarantine and finally reject.
- What are rua and ruf?
- rua is the address for aggregate reports, usually daily XML summaries. ruf is for forensic failure reports, which are less widely sent and can contain sensitive data. Most deployments start with rua only.
- Why does DMARC fail when SPF passes?
- SPF can pass for the envelope sender while failing alignment with the visible From domain. DMARC requires authentication plus alignment. DKIM alignment often saves forwarded mail where SPF breaks.
Related guides
MTA-STS and TLS-RPT Guide - Enforce Encrypted Email Delivery
Learn how MTA-STS and TLS-RPT protect inbound SMTP delivery, which DNS records they require, how the HTTPS policy file works, and how to deploy without breaking mail.
SPF Record Explained - Syntax, Examples, and Common Mistakes
Learn how SPF records authorize mail senders, how SPF syntax works, how to avoid the 10-DNS-lookup limit, and how to validate SPF with dig.
DKIM Explained - DNS Keys, Selectors, and Email Signatures
Learn how DKIM signs outbound email, where DKIM public keys live in DNS, how selectors work, and how to rotate DKIM keys safely.
Email Security with SPF, DKIM, and DMARC
Learn how to protect your domain from email spoofing using SPF, DKIM, and DMARC records. Step-by-step guide for dashboard and API setup on DNScale.
Ready to manage your DNS with confidence?
DNScale provides anycast DNS hosting with a global network, real-time analytics, and an easy-to-use API.
Start free