HTTPfy

DMARC record

DMARC ties SPF and DKIM to the address people actually see, the From header, and tells receivers what to do with mail that fails, plus where to send reports.

stored as TXT RFC 7489

Live DMARC records from real domains

Checked at via public DNS
_dmarc.google.comTXT
_dmarc.google.com. 300 IN TXT "v=DMARC1; p=reject; rua=mailto:[email protected]"
  ; DMARC policy p=reject, sends aggregate reports
_dmarc.github.comTXT
_dmarc.github.com. 163 IN TXT "v=DMARC1; p=quarantine; sp=reject; pct=100; rua=mailto:[email protected]; ruf=mailto:[email protected]; fo=1"
  ; DMARC policy p=quarantine, sp=reject, sends aggregate reports
_dmarc.paypal.comTXT
_dmarc.paypal.com. 179 IN TXT "v=DMARC1; p=reject; rua=mailto:[email protected],mailto:[email protected]; ruf=mailto:[email protected],mailto:[email protected]"
  ; DMARC policy p=reject, sends aggregate reports
_dmarc.gmail.comTXT
_dmarc.gmail.com. 350 IN TXT "v=DMARC1; p=none; sp=quarantine; rua=mailto:[email protected]"
  ; DMARC policy p=none, sp=quarantine, sends aggregate reports

What the DMARC record does

A message passes DMARC when SPF or DKIM passes and the domain that passed is aligned with the From domain: the same organizational domain in relaxed mode, or exactly the same in strict mode. Receivers find the policy at _dmarc.<From domain>, falling back to _dmarc.<organizational domain>.

The policy is one TXT record starting with v=DMARC1. Receivers send daily aggregate XML reports to the rua addresses. Those reports show every IP that sent mail as your domain and whether it passed, which is how you get from p=none to p=reject without losing legitimate mail. Report addresses on another organization's domain must be authorized by a record at <your-domain>._report._dmarc.<their-domain>.

Zone-file syntax

_dmarc.example.com.  3600  IN  TXT  "v=DMARC1; p=quarantine; rua=mailto:[email protected]; adkim=r; aspf=r"

Wire format: Stored as a TXT record at the _dmarc label. Tag-value pairs are separated by semicolons; whitespace around them is ignored.

Fields

FieldMeaning
vDMARC1, first.
pRequired. none (monitor), quarantine (treat as suspicious) or reject.
spPolicy for subdomains; defaults to p.
pctShare of failing mail the policy applies to, 0-100, default 100.
ruaComma-separated mailto: URIs for aggregate reports, optionally with a size limit (!10m).
rufURIs for per-message failure reports. Few large receivers send them.
adkim / aspfAlignment mode for DKIM and SPF: r relaxed (default) or s strict.
foFailure-report trigger: 0 all fail (default), 1 any fails, d DKIM, s SPF.
riRequested aggregate interval in seconds, default 86400.

Common mistakes

  • Publishing two DMARC records; receivers then apply none.
  • Staying on p=none for years: spoofed mail is still delivered.
  • Jumping straight to p=reject before a third-party sender (CRM, ticketing, invoicing) signs with an aligned DKIM key.
  • Sending reports to a third-party domain that has not published the _report._dmarc authorization record.

Specification

  • RFC 7489: Domain-based Message Authentication, Reporting, and Conformance (DMARC)

Related record types

  • SPF: which servers may send mail for a domain
  • DKIM: the public key behind email signatures
  • BIMI: show your brand logo in the inbox
  • TXT: free-form text for verification and policy

All DNS record types