RFC 7489

DMARC: Domain-based Message Authentication, Reporting & Conformance

DMARC tells receiving mail servers what to do when an inbound message claims to be from your domain but fails SPF and DKIM authentication checks.

TL;DR

What it does

DMARC is a policy layer on top of SPF and DKIM. It does two things at once: tells receiving servers how to handle messages that fail authentication (deliver, quarantine, or reject) and asks them to send aggregate reports of every IP that sent mail claiming to be your domain.

Without DMARC, an attacker can register a server, forge your From address, and send phishing messages that look genuine to recipients. SPF and DKIM alone don't tell receivers what to do when they fail; DMARC fills that gap.

DMARC also requires alignment: the domain in the visible From header must align with the domain SPF or DKIM authenticated. This stops attackers from passing SPF with their own domain while spoofing yours in From.

How it works

  1. Publish a TXT record at _dmarc.<your-domain> declaring your policy (start at p=none for monitoring).
  2. Mail receivers (Gmail, Microsoft, Yahoo, etc.) check inbound messages against your published SPF and DKIM, then evaluate alignment.
  3. If neither SPF nor DKIM aligns, the receiver applies your policy: none = no action, quarantine = spam folder, reject = bounce.
  4. Receivers send daily aggregate reports (rua) showing every source IP that sent as your domain, with per-IP pass/fail counts.
  5. You parse those reports to identify legitimate senders missing from SPF/DKIM, then tighten the policy to p=quarantine and finally p=reject.

Example record

_dmarc.yourdomain.com TXT

v=DMARC1; p=none; pct=100; rua=mailto:dmarc@yourdomain.com; ruf=mailto:dmarc@yourdomain.com; fo=1

Common pitfalls

Related tools

Want PhishFence to monitor DMARC for your domains?

Sign up free, add a domain, and PhishFence will continuously check DMARC (and the rest of the email-auth stack) for you.

Start free