Knowledge Base · Email

DMARC explained

DMARC is the umbrella over SPF and DKIM: it sets the policy, enforces alignment, and reports abuse. Here's how it works and how to roll it out without blocking your own mail.

What DMARC is

DMARC (Domain-based Message Authentication, Reporting & Conformance) sits on top of SPF and DKIM and adds the two things they lack on their own: a policy (what should happen to mail that fails) and reporting (who is sending as your domain). It is the piece that turns authentication from “nice signal” into “enforced rule,” and the piece that finally stops others from spoofing your From address.

How it works

When a receiver gets your mail, it checks SPF and DKIM, then asks DMARC’s question: did at least one of them pass in alignment with the visible From domain? If yes, DMARC passes. If no, the receiver applies your published policy and logs the result in an aggregate report it sends back to you. You publish all of this as a single DNS TXT record at _dmarc.yourdomain.

The policy progression: none → quarantine → reject

This is where most rollouts go wrong. Move through the policies in order, never skip to reject:

PolicyWhat happens to failing mailProtectionRiskUse when
p=noneNothing, delivered as normalNone (monitor only)NoneStart here, gather reports
p=quarantineSent to the spam folderPartialSome legit mail may be quarantinedAll known senders pass aligned
p=rejectBlocked outrightFull (spoofing stopped)Mistakes bounce real mailYou're confident every source aligns

Sit at none until the reports show every legitimate source passing, often a few weeks. Then quarantine at pct=100, watch again, then reject. The deliverability guide covers where DMARC fits among the other reasons mail lands in spam.

Alignment: why DMARC needs more than a pass

A spammer can publish perfect SPF and DKIM for their own domain. Alignment is what stops them from using that to forge yours: DMARC requires the domain that passed SPF or DKIM to match the domain in the From header. Relaxed alignment (the default) allows subdomains; strict requires an exact match. This is the mechanism that makes DMARC meaningful.

The record

_dmarc.example.com.  IN  TXT  "v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com; adkim=s; aspf=r; pct=100"

The common tags:

v=DMARC1     ; version (required, first)
p=quarantine ; policy: none | quarantine | reject
rua=mailto:  ; where to send aggregate reports
adkim=s      ; DKIM alignment: s(trict) | r(elaxed)
aspf=r       ; SPF alignment:  s(trict) | r(elaxed)
pct=100      ; percentage of mail the policy applies to

FAQ

What does DMARC actually do?

DMARC ties SPF and DKIM to the visible From address and tells receivers what to do when neither passes in alignment: nothing (p=none), send to spam (p=quarantine), or block (p=reject). It also asks receivers to email you reports of who is sending as your domain. It is the policy-and-reporting layer on top of SPF and DKIM.

What is DMARC alignment?

DMARC only passes if SPF or DKIM passes AND the domain it authenticated matches the domain in the visible From header. That match is 'alignment.' Relaxed alignment allows subdomains (mail.example.com aligns with example.com); strict requires an exact match. Without alignment, a spammer could pass SPF for their own domain while forging your From, which is exactly what DMARC closes.

Should I start with p=reject?

No. Start at p=none, which changes nothing about delivery but turns on reporting. Watch the aggregate reports until every legitimate sender (your app, your CRM, your help desk) passes aligned SPF or DKIM, then move to quarantine, then reject. Jumping straight to reject before monitoring is how teams blackhole their own transactional mail.

What's the difference between rua and ruf?

rua receives aggregate reports: daily XML summaries of pass/fail counts per source, this is what you actually use to roll out DMARC safely. ruf receives forensic (failure) reports: per-message samples, which many providers no longer send for privacy reasons. Set rua; ruf is optional and increasingly rare.

Does DMARC require both SPF and DKIM?

It requires at least one of them to pass in alignment. In practice you want both: DKIM survives forwarding while SPF does not, so relying on SPF alone causes legitimate forwarded mail to fail DMARC. Configure both and DMARC has two chances to pass.

Is DMARC mandatory now?

Effectively yes for bulk senders. Since 2024, Google and Yahoo require a DMARC record (at least p=none) for anyone sending large volumes to their users. Beyond compliance, DMARC at quarantine or reject is the only thing that actually stops others from spoofing your domain.

☕ KB Cafe Classic

Email authentication is native KB Cafe territory, this domain ran Rmail and documented SMTP when the spoofing problem DMARC solves was just emerging. This is the modern reference: the policy, the alignment trick, and the safe rollout that gets you to p=reject without blocking your own mail.