Free · no sign-up
DMARC record checker
Enter a domain. We read its DMARC record live, explain every tag in it, and say whether the record protects the domain or only watches it.
What a DMARC record is
DMARC tells receivers what to do when a message claiming to be from your domain fails authentication, and where to send reports about it. A message passes when SPF or DKIM passes and the domain that passed matches the visible From domain: that match is called alignment.
RFC 9989, the current DMARC standard, puts the record in a TXT record at _dmarc followed by your domain name. Sending tools that sign with their own domain can pass DKIM and still fail DMARC, which is what the reports are for.
| Tag | What it does |
|---|---|
p=none | quarantine | reject | The policy. none only monitors; quarantine asks receivers to treat failures as suspicious; reject asks them to refuse failures. |
sp= | A separate policy for subdomains. Without it, the p policy covers them too. |
rua=mailto:… | Where aggregate reports go: daily summaries of who sent mail as your domain and whether it passed. Without it you are blind. |
adkim=, aspf= | Alignment strictness, r (relaxed) or s (strict). Relaxed lets a subdomain match its parent. |
pct= | An older tag for the share of mail the policy applies to. It is gone from the current standard, so treat it as a leftover. |
In RFC 9989, adkim and aspf default to relaxed, a record without p is treated as p=none, and the pct tag is removed.
Common errors and how to fix them
- No DMARC record
Without one, receivers have no instruction and you receive no reports. Mailbox providers also ask for it from bulk senders (see the question below).
Fix: Publish a TXT record at_dmarc.yourdomainsuch asv=DMARC1; p=none; rua=mailto:dmarc@yourdomain. - Record at the wrong name
The record must sit at_dmarc.yourdomain. One at the root of the domain, or atdmarc.yourdomain, is ignored.
Fix: Move it to the_dmarchost. - Stuck on
p=none
It is the right place to start, but it protects nothing: spoofed mail is still delivered.
Fix: Read the reports for a few weeks, fix every legitimate sender that fails, then move top=quarantineand laterp=reject. - Jumping straight to
p=reject
A legitimate tool that is not aligned (it signs with its own domain, or sends from an IP not in SPF) will have its mail refused.
Fix: Go throughnoneandquarantinefirst, with reports on. - No
ruaaddress
You cannot see who is sending as you, so you cannot tell when it is safe to tighten the policy.
Fix: Addrua=mailto:…to a mailbox or a DMARC report service you read. - Two DMARC records, or a typo in a tag
Receivers may ignore a domain with two records, and a misspelled tag (quarentine) is not a valid policy.
Fix: Keep one record and compare each value with the tags above.
Examples
Illustrative records. Replace the report address with one you read.
Step 1: watch
v=DMARC1; p=none; rua=mailto:[email protected]Step 2: quarantine failures, a softer policy for subdomains
v=DMARC1; p=quarantine; sp=none; rua=mailto:[email protected]Step 3: reject
v=DMARC1; p=reject; rua=mailto:[email protected]; adkim=s; aspf=sQuestions
Do I need DMARC to send cold email?
What policy should I have?
p=none with reports on, so you learn who sends as you. Move to quarantine and then reject when the reports show only senders you recognise.What is alignment?
Is the pct tag still used?
Does DMARC apply to subdomains?
sp says otherwise, the policy in p covers every subdomain, so check the ones you send from.Outlevo checks this before every campaign
Outlevo checks SPF, DKIM and DMARC on a sender before it sends.