Guides · Email · Updated

What is DMARC? p=none, quarantine and reject explained

DMARC is a TXT record at _dmarc.yourdomain that tells receiving mail servers what to do with messages that claim to come from your domain but fail authentication, and where to send reports about them.

A typical record

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

See a domain's DMARC record and what it does:

How pass and fail are decided

A message passes DMARC if at least one of these is true:

  • SPF passes, and the domain SPF checked matches the From domain.
  • DKIM passes, and the domain in the signature (d=) matches the From domain.

That "matches" is called alignment. In relaxed mode (the default), subdomains count: mail signed by mail.example.com aligns with example.com. In strict mode the domains must be identical.

The usual reason a legitimate message fails isn't a broken signature but a third-party service that signs with its own domain. The fix is to turn on custom-domain DKIM in that service so it signs as you.

Every tag

TagMeaningValues
vVersion. Required, firstDMARC1
pPolicy for the domain. Requirednone, quarantine, reject
spPolicy for subdomainsSame as p; defaults to p
ruaWhere to send daily aggregate reportsmailto: address(es)
rufWhere to send per-message failure reportsmailto: address(es); few receivers send them
adkimDKIM alignmentr relaxed (default), s strict
aspfSPF alignmentr relaxed (default), s strict
pctShare of failing mail the policy applies to0 to 100; default 100
foWhen to send failure reports0 default, 1 any failure, d, s
riRequested report intervalSeconds; default 86400

The three policies

p=none

Monitor only. Receivers deliver mail as they normally would and send you reports. This is where everyone should start: the reports show every service sending as your domain, including ones you forgot.

p=quarantine

Failing mail goes to spam or junk. Real mail that you missed still arrives somewhere a user can find it, so this is the safe middle step.

p=reject

Failing mail is refused during delivery and never arrives. This is the goal: it stops people sending convincing phishing as your exact domain.

"DMARC policy not enabled" in a security scan means the domain has no DMARC record or is still at p=none. Mail isn't blocked by that alone, but the domain is easier to impersonate.

Moving safely from none to reject

  1. Publish p=none with an rua address you can read, or a free report service.
  2. Read two to four weeks of reports. Each source sending as your domain shows up with its pass and fail counts.
  3. Fix every legitimate source that fails: add it to SPF, or turn on custom DKIM in that service.
  4. Switch to p=quarantine. If you are nervous, use pct=25 first and raise it.
  5. When reports stay clean, switch to p=reject.
  6. Keep reading reports. New tools that send email appear all the time.

Examples

Start monitoring

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

Enforce, with stricter subdomains

v=DMARC1; p=quarantine; sp=reject; rua=mailto:dmarc@example.com

Full enforcement

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

A domain that never sends mail

v=DMARC1; p=reject

Pair the last one with v=spf1 -all so nobody can use a parked domain for phishing.

Reports sent to another domain

If the rua address is on a different domain, that domain must publish a record saying it accepts your reports, for example a TXT record at example.com._report._dmarc.reports.example.net containing v=DMARC1. Report services set this up for you.

Keep going

For how DMARC fits with SPF and DKIM, read SPF, DKIM and DMARC explained. Check each record with the SPF, DKIM and DMARC checkers.

Frequently asked questions

What does "DMARC policy not enabled" mean?

Your domain has no DMARC record, or it has p=none. Mail is not blocked, but receivers are not told to act on failures. Publish a record and move to quarantine once your reports are clean.

Is p=none useless?

No. It turns on reporting without affecting delivery, which is how you find every service that sends mail as your domain before you enforce anything.

What is the difference between quarantine and reject?

Quarantine asks receivers to put failing mail in spam. Reject asks them to refuse it during delivery, so it never arrives.

Where do I put the DMARC record?

In a TXT record at _dmarc.yourdomain, for example _dmarc.example.com, in the DNS zone for your domain.