What is DMARC, and how does it work?
DMARC is a DNS TXT record at _dmarc.yourdomain that tells receivers what to do with mail that uses your domain in the From address but can't prove it. A message passes when SPF or DKIM passes for a domain that aligns with the From domain. Your policy says none, quarantine or reject, and receivers send you reports.
On this page 10 sections
DMARC is the record that finally ties email authentication to the address people actually read. SPF and DKIM can both pass on a forged message, because neither one checks the visible From line. DMARC does, and it lets you tell receivers what to do when that check fails. This is the hub for our DMARC guides: start here, then follow the links for each step.
What is DMARC?
DMARC stands for Domain-based Message Authentication, Reporting, and Conformance. Since May 2026 it is defined in RFC 9989, a Standards Track document that replaced RFC 7489. Reporting moved into two companion documents: RFC 9990 for aggregate reports and RFC 9991 for failure reports.
The record itself is a single TXT record at _dmarc. in front of your domain:
_dmarc.example.com. TXT "v=DMARC1; p=none; rua=mailto:dmarc-reports@example.com"
It does three things:
- Validates that mail using your domain in the From header really comes from you.
- States a policy for mail that fails:
none,quarantineorreject. - Requests reports so you can see every source sending as your domain.
DMARC doesn't scan content and doesn't look at the display name. RFC 9989 lists display name attacks and content analysis as out of scope. It also validates only the domain, not the part of the address before the @.
How does DMARC work with SPF and DKIM?
DMARC doesn't authenticate anything by itself. It reuses the results of two older checks:
- SPF (RFC 7208) checks whether the sending server is allowed to use the envelope sender domain (the MAIL FROM, often shown as Return-Path).
- DKIM (RFC 6376) checks a cryptographic signature added by the sender. The signing domain is the
d=value in theDKIM-Signatureheader.
The receiver then asks one question: did SPF or DKIM pass for a domain that aligns with the From domain? RFC 9989 section 5.3.5 puts it simply: if one or more authenticated identifiers align with the Author Domain, the message passes. If none do, it fails.
Here's the order of events at the receiving server:
- Read the domain in the
From:header (RFC 9989 calls it the Author Domain). - Look up the DMARC record for it, walking up the DNS tree to the organizational domain if the exact name has none.
- Take the SPF result for the MAIL FROM domain and the DKIM result for each valid signature.
- Check whether any passing domain aligns with the From domain.
- Pass or fail, then apply local policy, informed by your
p=value, and log the result for reports.
If you want the background on what each of the three checks proves on its own, read SPF vs DKIM vs DMARC.
What is DMARC alignment?
Alignment is the heart of DMARC. Without it, an attacker could publish SPF and DKIM for their own domain, pass both, and still put your domain in From. RFC 9989 section 4.4.1 says it directly: "a message can bear a valid signature from any domain, even one used by a bad actor."
There are two alignment modes:
- Relaxed (the default): the two domains share the same organizational domain.
mail.example.comaligns withexample.com. - Strict: the two domains are identical.
This table follows the examples in RFC 9989 section 4.4:
| Authenticated domain (SPF or DKIM) | From domain | Alignment |
|---|---|---|
foo.example.com |
news.example.com |
Relaxed: same organizational domain |
news.example.com |
news.example.com |
Strict: identical |
foo.example.net |
news.example.com |
None: different organizational domains |
RFC 9989 notes that "nearly all Domain Owners have found relaxed alignment sufficient." Leave adkim and aspf at their relaxed defaults unless you have a specific reason.
What do p=none, p=quarantine and p=reject mean?
The p tag is your request to receivers about mail that fails DMARC. Receivers make the final decision. RFC 9989 section 7.4 even says receivers must not reject solely on the basis of p=reject, without other knowledge and analysis.
| Policy | What you're asking for | What usually happens | When to use it |
|---|---|---|---|
p=none |
No handling preference; just report | Normal delivery, normal filtering | At least a month, while you find all senders |
p=quarantine |
Treat failures as suspicious | Junk folder or quarantine | After reports show your senders pass |
p=reject |
Refuse failing mail | Rejected during SMTP | Final state, and for domains that never send mail |
Microsoft documents how it handles each one for inbound mail when Honor DMARC record policy is on: p=quarantine goes to Junk Email, and p=reject is rejected during SMTP with a dmarc=fail action=oreject result (Microsoft Learn).
Two more tags shape the policy. sp sets it for existing subdomains and np for subdomains that don't exist. If left out, np falls back to sp, and sp falls back to p. Our DMARC subdomain policy guide explains the inheritance. The t=y tag, new in RFC 9989, asks receivers to apply your policy one level down while you test. Every tag is explained in DMARC record examples.
What are DMARC reports?
When your record includes rua=mailto:..., receivers that support reporting send you aggregate reports: compressed XML files listing each sending IP, how many messages it sent as your domain, and whether SPF and DKIM passed and aligned. RFC 9989 section 5.3.8 says receivers should send them at least once every 24 hours.
Aggregate reports are how you find the invoicing tool, CRM or website form that sends as your domain without authentication. They're hard to read raw. Our free DMARC Report Analyzer turns a report into a table in your browser, and how to read DMARC reports explains each field.
The ruf tag requests failure reports about individual messages. RFC 9989 notes that privacy-minded receivers either redact them heavily or don't send them at all, and Microsoft 365 doesn't send them. Start with rua only.
How do I set up DMARC?
In outline, following RFC 9989 section 5.1 and Google's DMARC guide:
- List every service that sends as your domain, and give each one aligned SPF or DKIM. Our DKIM setup guide and SPF records by provider pages cover the common ones.
- Publish
p=nonewith anruaaddress. The DMARC Record Generator builds the record. - Read the reports, fix failing senders, then move to
p=quarantineandp=reject.
The full procedure, with the record for each stage and how long to stay there, is in moving DMARC from p=none to p=reject. If a scanner says your DMARC policy is not enabled, start with fixing "DMARC policy not enabled". A domain that never sends email can skip the rollout and publish p=reject straight away, as shown in protecting parked domains from spoofing.
Do I need DMARC?
If your domain sends email, yes. For bulk senders it's now a hard requirement:
- Google requires SPF, DKIM and DMARC from senders of close to 5,000 or more messages a day to personal Gmail accounts, with the From domain aligned to SPF or DKIM. The policy can be
none(Google sender guidelines). Google Postmaster Tools shows whether Gmail sees you as compliant. - Yahoo requires bulk senders to "publish a valid DMARC policy with at least p=none" and says DMARC must pass (Yahoo Sender Hub). It strongly urges all other senders to publish one too.
The details are in our Gmail, Yahoo and Microsoft bulk sender requirements guide.
Plenty of large domains still aren't protected. In our scan of the Tranco top 1,000 domains in October 2026, 26.5% had no DMARC record and 38.3% didn't enforce DMARC.
What DMARC doesn't do
DMARC is strong against one specific attack: mail that puts your exact domain in From. It doesn't stop:
- Lookalike domains such as
examp1e.com, which have their own DNS. See lookalike domain phishing. - Display name tricks, where the name says "CEO" but the address is a free mailbox.
- Spam and phishing sent to you from domains that authenticate correctly.
It protects your domain in other people's inboxes. Mail arriving at your own domain still needs inbound filtering.
Our DMARC guides
| If you need to... | Read |
|---|---|
| Write or fix a record, tag by tag | DMARC record examples |
| Clear a "DMARC policy not enabled" warning | DMARC policy not enabled: how to fix it |
| Move safely to enforcement | From p=none to p=reject |
| Understand the XML reports | How to read DMARC reports |
Fix dmarc=fail on real mail |
Why DMARC fails |
| Cover subdomains | DMARC subdomain policy |
| Handle forwarding and mailing lists | Why forwarding breaks SPF and DMARC |
| Find or fix DKIM | Find your DKIM selector and DKIM body hash did not verify |
Next steps
- Check your domain with the DMARC Checker. It shows whether you have a record, what the policy is, and whether reporting is set up.
- If you have no record, list your senders and confirm SPF and DKIM with the SPF Checker and DKIM Checker.
- Publish
p=nonewith a reporting address, using the DMARC Record Generator. - Review at least a month of reports, fix failing senders, then move to
quarantineandreject.
DMARC protects your domain's name elsewhere. For the mail coming in, an inbound filter such as iBlockSpam screens for spam, phishing and spoofing before it reaches your users; see how it works.
Once your record has a reporting address, iBlockSpam's DMARC monitoring can read the daily reports for you and say when your senders are ready for a stricter policy. If you only want to know when your DMARC, SPF or MX records change, the Free Domain Watch checks them weekly at no cost.
Browse our other SPF, DKIM and DMARC guides.
Frequently asked questions
What does DMARC stand for?
Domain-based Message Authentication, Reporting, and Conformance. The name lists its three jobs: it authenticates the domain in the visible From address, it gives you reports on who sends mail as that domain, and it lets you state how receivers should treat mail that doesn't conform.
Can DMARC block my own legitimate email?
Yes, if you enforce too early. At p=quarantine or p=reject, any service that sends as your domain without aligned SPF or DKIM gets junked or refused. That's why RFC 9989 says to start at p=none and read aggregate reports until every legitimate sender passes before you enforce.
Does a message need both SPF and DKIM to pass DMARC?
No. One aligned pass is enough. RFC 9989 says a message passes if one or more authenticated identifiers align with the From domain. Aim for both anyway: SPF usually breaks when mail is forwarded, while DKIM signatures generally survive forwarding.
Is DMARC mandatory for sending to Gmail and Yahoo?
For bulk senders, yes. Google requires DMARC for senders of close to 5,000 or more messages a day to personal Gmail accounts, and Yahoo requires bulk senders to publish a valid policy of at least p=none. Both strongly recommend DMARC for everyone else too.
What is the difference between DMARC and DKIM?
DKIM signs a message with a key published under some domain, which proves that domain handled it. DMARC adds the missing link: it checks that the DKIM (or SPF) domain matches the domain people see in From, and it publishes your policy and reporting address. DKIM alone doesn't stop From spoofing.
Sources
- RFC 9989: Domain-Based Message Authentication, Reporting, and Conformance (DMARC)
- RFC 9990: DMARC Aggregate Reporting
- RFC 9991: DMARC Failure Reporting
- Microsoft Learn: Set up DMARC to validate email in Microsoft 365
- Google Workspace Admin Help: Set up DMARC
- Gmail Help: Email sender guidelines
- Yahoo Sender Hub: Sender best practices
See how your domain measures up
Run a free Email Health Check: MX, SPF, DKIM, DMARC and transport security in one scan, with the raw records shown. No sign-up.
Keep reading
"DMARC policy not enabled": what it means and how to fix it safely
Seeing "DMARC policy not enabled" or "no DMARC record found"? What the warning means, why it matters, and how to fix it without blocking your own email.
8 min read SPF, DKIM & DMARCMoving DMARC from p=none to p=reject: a staged rollout for small businesses
A staged plan to move DMARC from monitoring to reject without blocking your own mail, including what changes when a filtering gateway sits in front.
9 min read SPF, DKIM & DMARCDMARC record examples, explained tag by tag
Copy-paste DMARC record examples for monitoring, quarantine and reject, with each tag explained and what RFC 9989 changed: pct removed, t, np and psd added.
9 min read