Skip to main content
DNS Checker(beta)

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.

1 credit

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:

1
Extract From Domain

The receiver extracts the domain from the RFC5322.From header — this is the domain whose DMARC policy will be checked.

2
Query DMARC Record

DNS lookup for TXT at _dmarc.domain. If no record is found, the receiver checks the organizational domain as a fallback.

3
Check SPF & DKIM Alignment

SPF/DKIM must not only pass, but their authenticated identifiers must align with the From domain (relaxed or strict per aspf/adkim).

4
Apply Policy

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:

p=none
Monitor

No action taken on failing messages. Reports are sent so you can observe traffic. This is the starting point for all DMARC deployments.

p=quarantine
Quarantine

Failing messages are moved to the recipient's spam or junk folder. Used as an intermediate step to verify no legitimate mail is affected.

p=reject
Enforce

Failing messages are rejected during the SMTP transaction and never delivered. Maximum protection against spoofing and phishing.

What Are Common DMARC Misconfigurations?

Missing rua= tag

Without aggregate report URIs, you fly blind — no visibility into authentication results, spoofing attempts, or misconfigured senders. Always include rua=.

RFC 7489 Section 6.2
Jumping to p=reject too fast

Enforcing 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.1
Multiple DMARC records

Publishing 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.3
Missing external report authorization

If 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.1

How 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:

Aggregate Reports (rua=)

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.

Forensic Reports (ruf=)

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.

TagRequiredDescription
v=YesProtocol version. Must be DMARC1 — this is always the first tag in the record.
p=YesPolicy 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=NoAggregate 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=NoForensic 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=NoFailure 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=NoSubdomain 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=NoPercentage 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=NoDKIM alignment mode. r = relaxed (default), allowing organizational domain matches (mail.example.com aligns with example.com). s = strict, requiring an exact domain match.
aspf=NoSPF 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=NoReporting 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:

  1. 1
    Publish p=none with rua=Start collecting aggregate reports. Wait 2-4 weeks to get a complete picture of all mail streams.
  2. 2
    Fix SPF and DKIM for all sendersEnsure all legitimate senders (ESP, CRM, support tools, marketing platforms) are covered by SPF includes or have DKIM signing configured.
  3. 3
    Move to p=quarantine pct=10Apply quarantine to 10% of failing messages. Monitor reports for any legitimate failures.
  4. 4
    Increase to p=quarantine pct=100Gradually increase sampling. Once reports show consistent 98%+ pass rates, apply to all messages.
  5. 5
    Switch to p=rejectFull 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?

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.

API docs

Built and maintained alongside this tool. Free, no signup required.

Frequently Asked Questions