DMARC Record Checker
Analyze your domain's DMARC policy per RFC 7489, inspect reporting configuration, check SPF and DKIM alignment modes, and generate a ready-to-publish DMARC record.
DMARC Record Generator
Generate a ready-to-publish TXT record for _dmarc.yourdomain.com
“DMARC is the policy layer that tells the world what to do when SPF and DKIM fail.”
Written by Ishan Karunaratne · Last reviewed:
What Is DMARC?
DMARC (Domain-based Message Authentication, Reporting, and Conformance) is an email authentication protocol specified in RFC 7489 (published March 2015). It builds on two existing authentication mechanisms — SPF (RFC 7208) and DKIM (RFC 6376) — to give domain owners control over what happens to messages that fail authentication and visibility into who is sending email using their domain.
A DMARC record is published as a TXT record at _dmarc.yourdomain.com. It instructs receivers on three things: the policy to apply to failing messages, the alignment rules for SPF and DKIM identifiers, and where to send authentication reports. To see how receivers evaluate your DMARC policy in practice, analyze the authentication headers of a received message.
How Does DMARC Authentication Work?
When a receiving mail server gets a message, it performs the DMARC evaluation flow defined in RFC 7489 Section 4.2:
The receiver extracts the domain from the RFC5322.From header — this is the domain whose DMARC policy will be checked.
DNS lookup for TXT at _dmarc.domain. If no record is found, the receiver checks the organizational domain as a fallback.
SPF/DKIM must not only pass, but their authenticated identifiers must align with the From domain (relaxed or strict per aspf/adkim).
If both SPF and DKIM alignment fail, the receiver applies the policy (none/quarantine/reject) subject to the pct= sampling rate.
A message passes DMARC if either SPF passes with alignment or DKIM passes with alignment — both are not required. This is an important distinction from how SPF and DKIM work independently.
What Are the DMARC Policy Levels?
The p= tag is the most important part of a DMARC record, defined in RFC 7489 Section 6.3:
No action taken on failing messages. Reports are sent so you can observe traffic. This is the starting point for all DMARC deployments.
Failing messages are moved to the recipient's spam or junk folder. Used as an intermediate step to verify no legitimate mail is affected.
Failing messages are rejected during the SMTP transaction and never delivered. Maximum protection against spoofing and phishing.
What Are Common DMARC Misconfigurations?
Without aggregate report URIs, you fly blind — no visibility into authentication results, spoofing attempts, or misconfigured senders. Always include rua=.
RFC 7489 Section 6.2Enforcing reject without first collecting and reviewing aggregate reports will block legitimate email from third-party senders (ESPs, CRMs, support tools) that aren't covered by SPF/DKIM.
RFC 7489 Section 6.6.1Publishing more than one DMARC TXT record at _dmarc.domain causes all records to be discarded. Receivers treat this as no DMARC record at all.
RFC 7489 Section 6.6.3If rua= points to an address outside your domain, the receiving domain must publish an authorization TXT record. Without it, receivers will not send reports.
RFC 7489 Section 7.1How Does DMARC Reporting Work?
DMARC reporting, defined in RFC 7489 Section 7, turns every participating mail receiver into a sensor for your domain. There are two report types:
Daily XML summaries (schema in RFC 7489 Appendix C) covering every IP that sent mail using your From domain. Includes SPF/DKIM pass/fail counts and applied policy per source IP.
Per-message failure details using AFRF format (RFC 6591). Can include headers or full message content. Many providers no longer send these due to privacy.
DMARC Record Tags Explained
A DMARC record is a DNS TXT entry at _dmarc.yourdomain.com containing semicolon-separated tags. The table below covers every tag defined in RFC 7489 Section 6.3.
| Tag | Required | Description |
|---|---|---|
v= | Yes | Protocol version. Must be DMARC1 — this is always the first tag in the record. |
p= | Yes | Policy for the domain. Tells receivers what to do with messages that fail DMARC: none (deliver normally), quarantine (send to spam), or reject (block entirely). |
rua= | No | Aggregate report URI. An email address (as a mailto: URI) where receivers send daily XML summaries of DMARC evaluation results. These reports show every IP that sent mail as your domain, with SPF/DKIM pass/fail counts. Essential for visibility into authentication failures and unauthorized senders. |
ruf= | No | Forensic report URI. An email address where receivers send per-message failure details using the AFRF format (RFC 6591). Can include message headers or full content. Note: Gmail, Yahoo, and many large providers no longer send forensic reports due to privacy concerns. |
fo= | No | Failure reporting options. Controls when forensic reports (ruf=) are generated. 0 = report only when all mechanisms fail (default). 1 = report when any mechanism fails. d = report DKIM failures only. s = report SPF failures only. Multiple values can be combined with colons (e.g., fo=1:d:s). |
sp= | No | Subdomain policy. Sets a separate policy for subdomains. Without this tag, subdomains inherit the parent domain's p= policy. Useful during staged rollouts — for example, p=reject with sp=none protects the root domain while keeping subdomain mail flowing. |
pct= | No | Percentage of messages subject to the policy (1-100, default 100). Allows gradual enforcement — start at pct=10 to apply the policy to only 10% of failing messages, then increase as confidence grows. |
adkim= | No | DKIM alignment mode. r = relaxed (default), allowing organizational domain matches (mail.example.com aligns with example.com). s = strict, requiring an exact domain match. |
aspf= | No | SPF alignment mode. r = relaxed (default), allowing organizational domain matches. s = strict, requiring an exact domain match. DKIM alignment is generally more reliable because DKIM signatures survive email forwarding, while SPF breaks. |
ri= | No | Reporting interval in seconds (default 86400 = 24 hours). Requests receivers to send aggregate reports at this interval. Most providers ignore values below 86400 and send reports daily regardless. |
Only v= and p= are required. A minimal valid DMARC record can be as simple as v=DMARC1; p=reject; — useful for domains that do not send email and need protection against spoofing without any reporting overhead. For domains that send email, adding rua= is strongly recommended to maintain visibility into authentication results.
How Do You Implement DMARC Progressively?
Moving too fast to p=reject without proper preparation is the most common mistake in DMARC deployment. The recommended path per RFC 7489 Section 6.6.1:
- 1Publish p=none with rua= — Start collecting aggregate reports. Wait 2-4 weeks to get a complete picture of all mail streams.
- 2Fix SPF and DKIM for all senders — Ensure all legitimate senders (ESP, CRM, support tools, marketing platforms) are covered by SPF includes or have DKIM signing configured.
- 3Move to p=quarantine pct=10 — Apply quarantine to 10% of failing messages. Monitor reports for any legitimate failures.
- 4Increase to p=quarantine pct=100 — Gradually increase sampling. Once reports show consistent 98%+ pass rates, apply to all messages.
- 5Switch to p=reject — Full enforcement. Spoofed email using your domain is rejected at the receiver.
At each stage, test email deliverability to confirm legitimate messages still reach the inbox before tightening the policy further.
Which RFCs Define DMARC?
The core DMARC specification. Defines the policy record format, alignment rules, authentication flow, aggregate and forensic reporting, and deployment guidelines.
Defines the AFRF format used for DMARC forensic reports (ruf=). Extends the Abuse Reporting Format (ARF) from RFC 5965 with authentication failure details.
The SPF specification that DMARC builds upon. Defines which mail servers are authorized to send for a domain via DNS TXT records.
The DKIM specification that DMARC builds upon. Defines cryptographic message signing and verification using DNS-published public keys.
What Other Tools Help With Email Authentication?
DMARC depends on SPF and DKIM being correctly configured. Use these tools to verify your complete email authentication setup:
- •SPF Checker — Validate which servers are authorized to send email for your domain, check for SPF include errors, DNS lookup limit violations per RFC 7208
- •DKIM Checker — Look up a DKIM public key by selector and domain, verify record syntax per RFC 6376, check key strength per RFC 8301
- •MX Lookup — Find mail servers for any domain, detect email providers, verify reverse DNS records per RFC 5321
- •SMTP Diagnostics — Test mail server connectivity, TLS certificate validity, and open relay status
- •Blacklist Checker — Check whether your mail server IP is listed on any DNSBL or RBL that could affect deliverability
Need this in code?
Every check this tool runs is also available via the DMARC check API with examples in cURL, JavaScript, Python, PHP, Ruby, and Java.
Related tools you might need
Built and maintained alongside this tool. Free, no signup required.