"DMARC policy not enabled": what it means and how to fix it safely
"DMARC policy not enabled" means your domain either has no DMARC record or has one set to p=none, so receivers have no instruction to junk or reject forged mail. Fix it by publishing v=DMARC1; p=none with a report address, making every sender pass aligned SPF or DKIM, then moving to p=quarantine and p=reject.
On this page 8 sections
A security scan, a deliverability tool or your mail provider has flagged your domain with "DMARC policy not enabled", "No DMARC record found" or similar. The fix is a single DNS record, but publishing the strictest version straight away can block your own mail. This guide explains what the warning means and how to clear it in a safe order.
What does "DMARC policy not enabled" mean?
Scanners word it differently, but the warning covers two situations:
| What the scanner found | What it means | Typical wording |
|---|---|---|
No TXT record at _dmarc.yourdomain (or an invalid one) |
Receivers find no DMARC policy at all | "No DMARC record found", "DMARC record missing" |
A valid record with p=none |
DMARC is in monitoring mode: reports, no enforcement | "DMARC policy not enabled", "DMARC quarantine/reject policy not enabled" |
Both mean the same thing in practice. Receivers have no instruction from you to junk or reject mail that forges your domain.
RFC 9989, the DMARC standard, calls p=none with reports Monitoring Mode: the domain owner "expresses no handling preference for messages that fail DMARC validation." Anything stricter is Enforcement. So "policy not enabled" usually means "you haven't reached enforcement yet."
How receivers show it in headers
If there's no record, the Authentication-Results header on a received message shows dmarc=none, which RFC 9989 defines as "No DMARC Policy Record exists for the Author Domain." Microsoft 365 may show dmarc=bestguesspass; Microsoft's own troubleshooting table says that means no DMARC record was published, Microsoft inferred a pass, and you should "publish an explicit DMARC record" (Microsoft Learn). With p=none and failing mail, Microsoft shows dmarc=fail action=none.
Why does it matter?
Three reasons:
- Spoofing. Without enforcement, nothing you publish tells receivers to stop a forged message that uses your exact domain in From. See what is email spoofing.
- Bulk sender rules. Google requires DMARC from senders of close to 5,000 or more messages a day to personal Gmail accounts (Google sender guidelines). Yahoo requires bulk senders to publish a valid policy of "at least p=none" (Yahoo Sender Hub). Microsoft asks the same of domains sending more than 5,000 messages a day to Outlook.com, and rejects mail that falls short with 550 5.7.515. For these rules
p=noneis enough; having no record is not. - Visibility. Without an
ruaaddress you get no reports, so you can't see who sends as your domain.
Google Postmaster Tools shows this too. Its Compliance status dashboard lists "DMARC authentication" as a bulk sender requirement and marks each item "Compliant" or "Needs work" (Gmail Help). Its authentication troubleshooting advice is to "Set up DMARC authentication with a policy of quarantine or reject."
You're not alone. In our scan of the Tranco top 1,000 domains in October 2026, 265 had no DMARC record and 117 used p=none. With one invalid record, that's 38.3% not enforcing.
Why not just publish p=reject?
Because DMARC judges every message that uses your domain, including your own. Any service that sends as you without aligned SPF or DKIM starts failing the moment you enforce: the billing system, the website contact form, the CRM, the scanner in the office.
RFC 9989 section 5.1.5 explains why everyone starts at p=none: "to ensure that nothing's been missed in the initial SPF and DKIM deployments." Google recommends the same: "When you start using DMARC, we recommend setting the policy option (p) to none" (Google Workspace Admin Help).
The one exception is a domain that never sends email. There, p=reject is safe on day one; see protecting parked domains.
How do I fix "DMARC policy not enabled" safely?
Follow these steps in order. Each one is quick; the waiting is in step 6.
-
Check what's published now. Run the DMARC Checker on your domain. It shows whether a record exists, its policy, and any syntax errors such as two records at the same name or
v=DMARC1not first. -
List every service that sends as your domain. Your mailbox platform, marketing tool, CRM, helpdesk, accounting software, web forms and devices. Ask each team what they use.
-
Make each service pass SPF or DKIM with your domain. DKIM signing with
d=set to your domain is the most reliable route, because it survives forwarding. Google's DMARC guide says to contact each third-party provider "to make sure SPF and DKIM are correctly set up." Check with the SPF Checker and DKIM Checker, and see the per-provider steps for Microsoft 365, Google Workspace, Mailchimp and others. -
Set up a reports mailbox. Microsoft recommends a dedicated mailbox or Microsoft 365 Group, not a user's own inbox.
-
Publish a monitoring record. Add a TXT record with the host
_dmarc:v=DMARC1; p=none; rua=mailto:dmarc-reports@example.comGoogle suggests allowing 48 hours after setting up SPF and DKIM before adding DMARC. The DMARC Record Generator builds the record for you.
-
Read the reports and fix what fails. Aggregate reports arrive as compressed XML. Drop them into the DMARC Report Analyzer and follow how to read DMARC reports. Fix every legitimate source that fails. RFC 9989 says these must be addressed before you enforce. If a source keeps failing and you can't see why, why DMARC fails walks through the causes.
-
Move to quarantine, then reject. Once reports show your real senders passing, change
p=nonetop=quarantine, watch again, then move top=reject.
That last step is what actually clears a "policy not enabled" warning. Step 5 alone clears "no DMARC record found".
How long should each stage last?
There's no single number. RFC 9989 says reaching enforcement "may take many months" depending on how often you send. For domains whose users post to mailing lists, section 7.4 suggests p=none "for at least a month," followed by p=quarantine "for an equally long period of time," before considering p=reject. Our p=none to p=reject rollout gives a practical timeline: at least a month at each stage.
You can also use the t=y test flag from RFC 9989 to try a stricter policy one level down first. DMARC record examples shows the exact records.
How do I confirm the fix worked?
DNS changes aren't instant, and scanners cache results. Check in this order:
- Query the record directly. Run the DMARC Checker, or from a terminal:
dig TXT _dmarc.example.com +short. You should see exactly one string starting withv=DMARC1. - Check a real message. Send an email from your domain to an outside mailbox and open the headers.
Authentication-Resultsshould now showdmarc=passinstead ofdmarc=none(or Microsoft'sbestguesspass). Our Email Header Analyzer pulls the result out for you. - Wait for the first reports. RFC 9989 asks receivers to send aggregate reports at least once every 24 hours, so the first files usually arrive within a day or two of publishing. Not every receiver sends them.
- Re-run the scanner that raised the warning. If it still complains, it may be reading a cached result or flagging
p=noneon purpose. A "policy not enabled" warning on ap=nonerecord is expected until you reach enforcement. - Check Postmaster Tools last. Google says its dashboard data is typically updated within 24 hours, so a fix won't show there straight away.
What will the first reports show?
Expect three kinds of source. Your own platforms (Microsoft 365, Google Workspace) should pass. Services you forgot about will show up failing, often with SPF passing for their own domain but not aligned with yours. Forwarders and unknown IP addresses will fail too. Fix the second group, ignore normal forwarding, and treat the rest as possible spoofing. That sorting is what lets you enforce with confidence.
Common mistakes when fixing the warning
| Mistake | Result | Fix |
|---|---|---|
Host entered as _dmarc.example.com on a host that appends the domain |
Record lands at _dmarc.example.com.example.com |
Enter only _dmarc |
Record doesn't start with v=DMARC1 |
Receivers ignore it | Put v=DMARC1; first |
Two TXT records at _dmarc |
No valid policy | Merge into one |
rua=dmarc@example.com without mailto: |
No reports arrive | Use rua=mailto:... |
| Reports sent to another company's domain without authorization | That domain gets no reports | The report domain must publish a _report._dmarc record |
Jumping to p=reject on day one |
Legitimate mail rejected; 5.7.509 or 5.7.26 bounces | Go back to monitoring, fix senders, enforce later |
What about subdomains?
A DMARC record on your main domain covers subdomains that don't have their own record. Microsoft notes it covers "all subdomains (including nonexistent subdomains) that don't have their own DMARC TXT record." Use sp and np if you want different policies; DMARC subdomain policy explains how. A scanner checking news.example.com may still report the parent's policy, which is correct.
Next steps
- Run the DMARC Checker to see which of the two warnings applies to you.
- If you have no record, publish
p=nonewith anruaaddress today. - Collect at least a month of reports, fix failing senders, then move to
quarantineandreject. - New to DMARC? Start with what is DMARC for the full picture.
DMARC stops forgeries of your domain at other people's inboxes. Phishing that reaches your own users from other domains is a separate problem, which inbound filtering such as iBlockSpam addresses; see how it works.
Related: moving from p=none to p=reject and DMARC quarantine vs reject. Before you enforce, iBlockSpam's DMARC monitoring shows which of your senders still fail, so the warning can be fixed without blocking your own mail.
Browse our other SPF, DKIM and DMARC guides.
Frequently asked questions
Is a "DMARC policy not enabled" warning serious?
It's not an outage, but it's a real gap. Without an enforcing policy, receivers have no instruction from you about mail that forges your domain, so spoofed messages are judged only by their own filters. If you send in bulk to Gmail or Yahoo, having no DMARC record at all also breaks their sender requirements.
Why does a scanner still say no DMARC record after I added one?
Usually the record is at the wrong name, for example _dmarc.example.com.example.com because the DNS host appended the domain, or it doesn't start with v=DMARC1. Two records at the same name also count as none. Check again after the old TTL expires, and use our DMARC Checker to see what resolvers return.
Can I publish p=reject right away to clear the warning?
Only for a domain that never sends email. For a domain in use, p=reject before you've confirmed every sender passes can get your own invoices, newsletters or helpdesk replies rejected. Start with p=none and reports, fix failures, then enforce.
Does Google Postmaster Tools check my DMARC policy?
Its Compliance status dashboard lists DMARC authentication as a requirement for bulk senders, those sending about 5,000 or more messages a day to personal Gmail accounts. The data covers only personal Gmail recipients and is typically updated within 24 hours, so a fix doesn't show immediately.
Does a missing DMARC record mean someone is spoofing my domain?
No. It means you can't tell, and receivers have no policy from you. Publish p=none with an rua address and the aggregate reports will show every source sending as your domain, including any you don't recognize.
Sources
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
What is DMARC, and how does it work?
What DMARC is, how it uses SPF and DKIM alignment, what p=none, quarantine and reject do, what the reports show, and how to set it up in five safe steps.
9 min read SPF, DKIM & DMARCDMARC p=quarantine vs p=reject: which should you use?
What p=quarantine and p=reject do to failing mail at Gmail, Microsoft 365 and Yahoo, what RFC 9989 says, the risks of each, and when to move to reject.
9 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