בס״ד

DMARC Checker

A DMARC record is a TXT record at _dmarc.yourdomain.com that tells receiving mail servers what to do when a message fails both SPF and DKIM alignment, and where to send reports. Our DMARC checker reads that record and shows which policy is live: p=none only monitors, p=quarantine sends failures to spam, and p=reject blocks them.

$ curl https://api.dnsx.dev/email/dmarc/example.com

What do the tags in a DMARC record mean?

A DMARC record is a list of tag=value pairs separated by semicolons, and only two are required: v=DMARC1 first, then p with the policy. Everything else has a default. The full set defined in RFC 7489 is below, and our tool shows the same table filled in for the domain you check, marking which tags are set and which are running on their defaults.

TagDefaultWhat it does
vrequiredVersion. Always DMARC1, always first.
prequiredPolicy for the domain: none, quarantine or reject.
spsame as pPolicy for subdomains. Set it to reject if no subdomain sends mail.
pct100Percentage of failing mail the policy applies to. Used for staged rollouts.
ruanonemailto: addresses for aggregate reports.
rufnonemailto: addresses for per-message failure reports.
adkimrDKIM alignment: r relaxed, s strict.
aspfrSPF alignment: r relaxed, s strict.
fo0When to send failure reports: 0, 1, d or s.
rfafrfFailure report format. Only afrf exists in practice.
ri86400Requested seconds between aggregate reports.
_dmarc.example.com.  3600  IN  TXT  "v=DMARC1; p=reject; sp=reject; rua=mailto:[email protected]; adkim=s; aspf=s"

How do I roll out DMARC from p=none to p=reject?

Publish p=none with a rua address first. Nothing changes for your mail, and within a day or two the aggregate reports start arriving. They list every IP address that sent mail using your domain, whether it passed SPF and DKIM, and whether the result aligned with the From domain. Read them for two to four weeks, long enough to catch monthly invoices and other low-volume senders.

Fix every legitimate source that fails. Usually that means adding a vendor's include to SPF, turning on DKIM signing in the vendor's dashboard and publishing the key, or moving a system to send from a subdomain. When the reports show only spoofers failing, move to p=quarantine. Some people use pct=25 and raise it in steps, which is fine but slow. Once quarantine has run clean for a few weeks, publish p=reject. Google, Microsoft and most banks run p=reject.

Set sp at the same time. A domain at p=reject with sp=none, or with a forgotten subdomain that has no DMARC of its own, is still spoofable from that subdomain, and the reports for the parent domain will not show it.

What is DMARC alignment, and should I use relaxed or strict?

SPF and DKIM each check a domain, but neither checks the From address a person sees. SPF checks the envelope sender. DKIM checks the d= domain in the signature. DMARC adds the missing link by requiring one of those two domains to align with the From domain. A message passes DMARC when SPF passes and aligns, or DKIM passes and aligns. One is enough.

Relaxed alignment (the default, adkim=r and aspf=r) accepts any domain in the same organisational domain, so a signature with d=mail.example.com aligns with a From address at example.com. Strict alignment (adkim=s and aspf=s) requires an exact match. Relaxed is right for most domains and lets vendors sign from a subdomain you delegate to them. Strict is worth it for a domain that sends only from its own servers and wants to close the subdomain gap completely.

What is the difference between aggregate and forensic DMARC reports?

Aggregate reports, requested with rua, are XML files that a receiver sends about once a day. Each one covers every message the receiver saw using your domain in that period, grouped by sending IP address, with counts and the SPF, DKIM and alignment results for each group. They contain no message content. Gmail, Yahoo, Microsoft and most other large receivers send them, and they are the reports the whole rollout is based on. The raw XML is hard to read at volume, and most people feed it to a reporting service.

Forensic reports, requested with ruf, are sent per failing message and include the headers and sometimes the body. Because that means forwarding message content to a third party, most large receivers, Gmail included, never send them. Setting ruf is harmless, but do not plan around receiving anything.

If your rua address is on a different domain than the one being checked, that domain has to opt in by publishing a TXT record named yourdomain.com._report._dmarc.theirdomain.com containing v=DMARC1. Reporting services set this up for you, and our tool points it out when the report domain differs.

Why do Gmail and Yahoo require DMARC for bulk senders?

In October 2023 Google and Yahoo announced shared requirements for anyone sending 5,000 or more messages a day to their users, enforced from February 2024. The list: publish a DMARC record (p=none is accepted), pass SPF and DKIM, have the From domain align with one of them, offer one-click unsubscribe with the List-Unsubscribe header and honour it within two days, and keep the spam complaint rate below 0.3% in Google Postmaster Tools. Microsoft applied the same set to Outlook.com from May 2025.

The reason is that receivers cannot tell a spoofed newsletter from a real one without alignment. Senders below the threshold are not exempt from the authentication parts in practice, because a domain with no DMARC is scored lower by the same filters. Publishing p=none costs nothing and satisfies the rule.

How do I look up a DMARC record with dig?

The record lives at the _dmarc label under the domain. For a subdomain that has no record of its own, receivers fall back to the organisational domain, so check both when a subdomain sends mail. The DNSX API returns the parsed record as JSON.

$ dig TXT _dmarc.example.com +short
"v=DMARC1; p=reject; rua=mailto:[email protected]"

$ curl -s https://api.dnsx.dev/email/dmarc/example.com | jq '.parsed.policy'

Frequently Asked Questions

What is a DMARC record?
A DMARC record is a TXT record published at _dmarc.yourdomain.com, starting with v=DMARC1, that tells receiving mail servers what to do with a message that fails both SPF and DKIM alignment and where to send reports about it. The p tag carries the policy: none, quarantine or reject. DMARC is defined in RFC 7489.
What is the difference between p=none, p=quarantine and p=reject?
p=none asks receivers to deliver failing mail as normal and only send reports, so it protects nothing. p=quarantine asks receivers to treat failing mail as suspicious, which in practice means the spam folder. p=reject asks receivers to refuse failing mail during the SMTP session, so it is never delivered. Only quarantine and reject stop spoofing.
How do I check if a domain has DMARC?
Query the TXT record at _dmarc followed by the domain, for example dig TXT _dmarc.example.com +short. If the answer starts with v=DMARC1, the domain has DMARC and the p tag is its policy. DNSX does the lookup and explains every tag when you enter the domain above.
Do Gmail and Yahoo require DMARC?
Yes, for bulk senders. Since February 2024 Google and Yahoo require any domain sending 5,000 or more messages a day to their users to publish a DMARC record, with p=none accepted as the minimum, and to pass SPF and DKIM with the From domain aligned. Microsoft applied the same requirements to Outlook.com in May 2025.
What does DMARC alignment mean?
Alignment means the domain that passed SPF or DKIM matches the domain in the From header a person sees. For SPF that is the envelope sender domain. For DKIM it is the d= domain in the signature. In relaxed mode the two only need to share an organisational domain, so mail.example.com aligns with example.com. In strict mode they must be identical.
What is the rua tag in DMARC?
The rua tag lists the addresses that receive aggregate reports, as mailto: URIs separated by commas. Receivers send an XML report about once a day summarising every message that used your domain, which sending IPs passed and failed, and how the policy was applied. Without rua you get no visibility at all.

Related tools