Quick DMARC reference
DMARC (Domain-based Message Authentication, Reporting and Conformance) ties SPF and DKIM together with a published policy that tells receiving servers what to do when authentication fails. It is the only one of the three that lets you actively block impersonation of your domain.
| What it is | A DNS TXT record that publishes your authentication policy and reporting addresses. |
| Where it lives | _dmarc.yourdomain.com. Subdomain policies use _dmarc.sub.yourdomain.com or the sp= tag. |
| Depends on | SPF and DKIM. At least one must pass and align for DMARC to validate. |
| Required by | Gmail and Yahoo bulk senders since February 2024. Minimum policy: p=none. |
| Defined in | RFC 7489. |
| Tools | Free DMARC Generator, Free DMARC Checker. |
What is a DMARC record?
A DMARC record is a single DNS TXT entry at _dmarc.yourdomain.com that does three things. First, it tells receiving mail servers what to do when a message claiming to be from your domain fails authentication: nothing, mark as suspicious, or reject. Second, it requires alignment between the authenticated domain (from SPF or DKIM) and the visible From header. Third, it asks receivers to send you regular reports listing every source sending mail in your domain’s name.
DMARC is the layer that turns SPF and DKIM from passive signals into an enforceable policy. Without DMARC, an attacker can spoof your From header and the receiver has no instruction on what to do about it. With DMARC at p=reject, the receiver simply refuses unauthenticated mail before it reaches a single inbox.
If you send more than 5,000 messages per day to Gmail or Yahoo addresses, you must publish a DMARC record with a policy of at least p=none. Add a valid RUA address to receive aggregate reports. Without it, your mail is throttled or rejected. See Google and Yahoo bulk sender rules.
How DMARC works, step by step
When a message arrives at a receiving mail server, DMARC processing runs after SPF and DKIM:
- The receiver extracts the From header domain, for example
news@example.comgivesexample.com. - SPF and DKIM are checked. SPF authenticates the envelope sender; DKIM authenticates the signing domain in the message header.
- The receiver looks up the DMARC record at
_dmarc.example.com. - Alignment is evaluated. For DMARC to pass, at least one of SPF or DKIM must pass AND its authenticated domain must align with the From header domain.
- If neither aligns, the receiver applies your policy:
none(deliver normally and report),quarantine(route to spam), orreject(refuse delivery). - The receiver records the outcome and bundles it into a daily aggregate report sent to the address in your
rua=tag.
DMARC record syntax
A DMARC record is a single TXT string starting with v=DMARC1, followed by a policy and optional parameters:
v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com; ruf=mailto:dmarc-forensics@example.com; fo=1; aspf=r; adkim=r; pct=100; sp=quarantineDMARC tag reference
| Tag | Meaning | Example |
|---|---|---|
v= | Version. Always DMARC1. | v=DMARC1 |
p= | Policy for the main domain. none, quarantine, or reject. | p=quarantine |
sp= | Policy for subdomains. Inherits p= if omitted. | sp=reject |
pct= | Percentage of failing mail to which the policy applies. 1 to 100. | pct=50 |
rua= | Aggregate report destination (mailto URI). | rua=mailto:dmarc@example.com |
ruf= | Forensic report destination. Rarely used, privacy-sensitive. | ruf=mailto:forensics@example.com |
fo= | Forensic options. 0 (default), 1 (any auth fail), d (DKIM fail), s (SPF fail). | fo=1 |
adkim= | DKIM alignment mode. r (relaxed, default) or s (strict). | adkim=s |
aspf= | SPF alignment mode. r (relaxed, default) or s (strict). | aspf=s |
ri= | Aggregate report interval in seconds. Default 86400 (daily). | ri=86400 |
The three DMARC policies
Policy choice is the single most consequential decision in DMARC. Treat it as a roadmap, not a setting.
p=none (monitoring)
Receivers take no enforcement action; they just report. Use this as the starting policy. You learn which IPs and services send mail in your domain’s name (including ones you forgot about), and which would fail authentication, without risking deliverability.
p=quarantine (mark as suspicious)
Failing mail goes to spam. Use this once your reports show that all legitimate sources authenticate correctly and you want to start enforcing without hard-blocking.
p=reject (block)
Failing mail is refused at SMTP time. The strongest possible protection against domain impersonation. Use this as the final destination of your DMARC journey, typically 60 to 90 days after starting at p=none. For the detailed staging plan and what to watch in aggregate reports at each step, see our DMARC reject vs quarantine roadmap.
Real-world DMARC examples
Day-1 monitoring policy
v=DMARC1; p=none; rua=mailto:dmarc-reports@example.com; pct=100Reports flow in, no enforcement yet. The minimum policy that satisfies Gmail and Yahoo 2024 bulk sender requirements.
Intermediate quarantine policy
v=DMARC1; p=quarantine; pct=25; rua=mailto:dmarc-reports@example.com; aspf=r; adkim=rTwenty-five percent of failing mail is sent to spam. Gradually raise pct to 100 as you gain confidence.
Strict enforcement policy
v=DMARC1; p=reject; sp=reject; rua=mailto:dmarc-reports@example.com; aspf=s; adkim=s; pct=100; fo=1The destination policy. Failing mail is rejected outright on both apex and subdomains, with strict alignment for both SPF and DKIM. Maximum impersonation protection.
Outsourced reporting
v=DMARC1; p=none; rua=mailto:reports@yourdmarcprocessor.com!10mThe !10m suffix limits report file size to 10 megabytes. Required by third-party DMARC processors (Postmark, dmarcian, EasyDMARC, Valimail) and many ESPs.
DMARC alignment, in plain English
Alignment is what separates DMARC from plain SPF and DKIM. A message can pass SPF or DKIM but still fail DMARC if the authenticated domain does not match the From header.
Two modes exist:
- Relaxed (default). Parent domain and subdomains match. If the From header is
news@marketing.example.comand DKIM signs withd=example.com, alignment passes. - Strict. Domains must be identical. The same example would fail strict alignment.
Relaxed is the right choice for most senders. Strict is useful when you operate completely separate brands on subdomains.
Reading DMARC aggregate reports
Aggregate (RUA) reports are XML files sent daily by each major receiver (Google, Microsoft, Yahoo, Mail.ru). They list, for every source IP that sent mail in your name during the day:
- The IP address and how many messages it sent.
- Whether SPF passed and aligned.
- Whether DKIM passed and aligned.
- What the receiver did (none, quarantine, reject).
Reading raw XML is unpleasant. Most senders route their RUA address to a processor (Postmark DMARC, dmarcian, EasyDMARC, Valimail, OnDMARC) that parses, deduplicates, and visualises the data. Use one. Even free tiers are sufficient for most domains under 100,000 messages per day.
Forensic (RUF) reports contain redacted copies of individual failing messages. They are rare in practice because most large receivers (Gmail above all) do not send them for privacy reasons. Do not depend on RUF for diagnosis; the RUA aggregate view is what matters.
The 90-day DMARC roll-out roadmap
A sensible journey from zero to p=reject:
- Week 1: Confirm SPF and DKIM are deployed for every sending source. Publish
v=DMARC1; p=none; rua=mailto:reports@example.com. Sign up for a free DMARC processor. - Weeks 2 to 4: Read your reports. Identify every legitimate source that is failing authentication or not aligning. Fix them.
- Week 5: Move to
p=quarantine; pct=10. Ten percent of failing mail goes to spam. - Weeks 6 to 8: Raise
pctto 25, then 50, then 100 if reports stay clean. - Week 9: Switch to
p=reject; pct=100. Optionally tighten alignment toaspf=s; adkim=s. - Ongoing: Watch reports weekly. New ESP onboarded? Validate it under
p=quarantinefirst before letting it sign under your domain.
Common DMARC mistakes
- Jumping straight to
p=reject. Without first runningp=noneand reading the reports, you will block legitimate mail (forgotten internal mailers, vendor notifications, transactional services) and never know it. - No
rua=address set. Without reports, you are flying blind. Even atp=none, you cannot diagnose what is happening without aggregate reports. - Using an inbox you do not check for RUA. Raw XML reports arrive daily. If they pile up unread, they are worthless. Route them to a processor, not a human mailbox.
- Missing
sp=on a domain with subdomains. If you publishp=rejectonly on the apex but send marketing fromnews.example.com, the subdomain inherits the apex policy unlesssp=says otherwise. Setsp=explicitly. - Using
pct<100atp=reject. Thepcttag is for gradual rollout duringp=quarantine. Atp=rejectwithpct=50, half the failing mail is still delivered, undermining the policy. Once at reject, always usepct=100. - Two DMARC records on the same domain. Like SPF, multiple TXT records starting with
v=DMARC1at_dmarc.example.comcause a permerror. - Strict alignment without need. Setting
aspf=s; adkim=swhen your ESP signs with a subdomain breaks alignment and creates DMARC failures for legitimate mail. - Forgetting third-party senders. Salesforce, HubSpot, Mailchimp, your ATS, your billing platform: each one sends mail as your domain. All must authenticate and align before you tighten DMARC.
- Treating DMARC as set-and-forget. Reports keep arriving. New sources keep appearing. Audit your DMARC posture monthly at minimum.
- Ignoring BIMI prerequisites. If you want your brand logo in Gmail and Apple Mail (via BIMI), DMARC must be enforced at
p=quarantineorp=reject. Going to BIMI without enforced DMARC is impossible.
How to test your DMARC record
- Use the free SMTPedia DMARC Checker at smtpedia.com/free-dmarc-record-checker. It validates syntax, confirms the record location, and parses every tag.
- Send a test email to a Gmail or Outlook account. View full headers and look for
dmarc=passin theAuthentication-Resultsline. - Query DNS directly:
You should see one record starting withdig TXT _dmarc.example.com +shortv=DMARC1. - Wait 24 to 48 hours after publishing, then check that aggregate reports start arriving at your
rua=address.
DMARC FAQ
Do I need DMARC if I have SPF and DKIM?
Yes. SPF and DKIM authenticate individual signals, but neither tells receivers what to do when both fail. DMARC publishes that policy and ties them together with alignment requirements. Since February 2024, Gmail and Yahoo also require a DMARC record (minimum p=none) for any sender above 5,000 messages per day.
What does p=none actually do?
It tells receivers to take no enforcement action on failing mail, but to send you daily aggregate reports listing every source that authenticated and failed. It is the monitoring phase: you learn what your real sending landscape looks like, without risking deliverability.
How long should I stay at p=none before moving to enforcement?
At least 4 weeks, often 6 to 8. You need a full reporting cycle to identify every legitimate sending source and confirm that all of them authenticate and align. Then move incrementally through p=quarantine with rising pct values before landing at p=reject.
Will DMARC block my marketing emails?
Only if they fail authentication. Marketing mail from a properly configured ESP (with custom DKIM signing and SPF authorization for your domain) passes DMARC normally. The danger is forgotten or misconfigured services. Use p=none first to identify them all.
Where should I send DMARC reports?
To a DMARC processor, not a regular mailbox. Free tiers from Postmark DMARC, dmarcian, EasyDMARC, Valimail, and OnDMARC parse the daily XML and present it as readable dashboards. They handle volume far better than a human reading raw reports.
Does DMARC apply to subdomains automatically?
Yes. If you publish DMARC only on the apex (example.com), all subdomains inherit the same policy unless you explicitly set sp= to override it. To enforce a different policy on subdomains, use the sp= tag in your apex DMARC record.
Final words
DMARC is where email authentication graduates from a checkbox to a strategy. SPF says who can send. DKIM says the message is intact. DMARC says what happens when either fails, and gives you visibility into every source claiming your domain.
Three habits keep DMARC effective: read your reports, advance the policy on a calendar (not when you remember), and review your sending sources monthly. The reward is durable: a domain that cannot be impersonated, deliverability that holds up under Gmail and Yahoo’s tightest filters, and a clean path to BIMI brand logos in the inbox.
To dig deeper into how all three records work together, read our Email Delivery Infrastructure guide.
Clean your list before you send.
SMTPing catches what regex misses: disposable addresses, role-based emails, catch-all domains, syntax errors, dead mailboxes and known traps. 13 validation types, 25 free checks daily, no card required.
About the Author

Alaa · LinkedIn
Email infrastructure specialist with 8+ years of hands-on experience in SMTP, deliverability, and email verification. I’ve configured and troubleshot mail systems across Postfix, Exchange, and cloud relays, managed IP reputation and warmup campaigns, and built verification pipelines processing millions of addresses. My work spans DNS authentication (SPF, DKIM, DMARC, BIMI), bounce handling, blocklist monitoring, and compliance frameworks including CAN-SPAM and GDPR. I write every article on SMTPedia to give email professionals, developers, and marketers the accurate, RFC-grounded reference they need.
About SMTPedia
SMTPedia is an independent email industry reference covering SMTP, IMAP, POP3, email deliverability, marketing platforms, DNS authentication, and email verification. Every article is researched from official provider documentation, IETF RFCs, and industry best practices. Settings and configurations are verified quarterly.
We are cited as a source by ChatGPT, Microsoft Copilot, and thousands of email professionals worldwide. Learn more about our editorial process.

