DMARC
"DMARC policy not enabled" means no DMARC record or p=none. Add a _dmarc TXT record in Cloudflare and set p=quarantine or p=reject to stop spoofing.
Updated Jul 1, 2026
The short answer
"DMARC policy not enabled" means your domain either has no DMARC record at _dmarc.yourdomain.com or its policy is set to p=none (monitor-only), so receivers take no action on spoofed mail. Fix it in Cloudflare by adding a TXT record named _dmarc, then move the p= tag from none to quarantine or reject once your legitimate senders pass.
DMARC (Domain-based Message Authentication, Reporting, and Conformance, defined in RFC 7489) is published as a DNS TXT record at the special host _dmarc.yourdomain.com. The record's p= tag tells receiving mail servers what to do with messages that fail authentication (SPF/DKIM alignment).
A scanner reports "DMARC policy not enabled" in one of two situations:
_dmarc.yourdomain.com (or it's malformed and can't be parsed). Receivers fall back to treating your domain as having no policy at all.p=none. This is monitoring mode. Per RFC 7489 §6.3, p=none requests "no specific action be taken" — the receiver collects data and sends you reports but still delivers spoofed mail to the inbox. DMARC is published, but enforcement is not enabled.So the warning is not always "you have nothing." Often it specifically means you're stuck at p=none and have never advanced to an enforcing policy (quarantine or reject).
Add or update the _dmarc TXT record in your Cloudflare DNS. This only works if your domain's DNS is hosted on Cloudflare.
TXT._dmarc — enter it exactly, with no trailing dot and no domain suffix (Cloudflare appends the zone automatically).v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com
If you only need a starting record, the steps above clear the "not enabled" warning. But to actually protect the domain from spoofing, you must move past p=none.
p=none exists so you can deploy DMARC safely and read the aggregate (rua) reports without breaking legitimate mail. The recommended ramp:
p=none with a rua reporting address and let reports accumulate.p=quarantine, optionally ramping with pct (e.g. pct=25) so only a fraction of failing mail is quarantined while you watch for collateral damage.p=reject once all legitimate mail authenticates. This is the strongest enforcement state and the one security scanners expect to clear a "policy not enabled" warning.An enforcing record looks like:
v=DMARC1; p=reject; rua=mailto:dmarc@yourdomain.com; pct=100
v=DMARC1 — version; must be the first tag.p= — policy: none (monitor, no action), quarantine (treat as suspicious / send to spam), or reject (block at SMTP time).rua= — mailto: address for aggregate reports. Recommended.ruf= — address for failure/forensic reports (sparsely supported).sp= — policy for subdomains; defaults to the p= value if omitted.pct= — percentage of failing mail the policy applies to (0–100, default 100).adkim / aspf — alignment mode, r (relaxed, default) or s (strict).Cloudflare offers a built-in Email → DMARC Management feature that can create the _dmarc record and visualize aggregate reports by adding a Cloudflare rua address. Per Cloudflare's docs, DMARC Management is available to all Cloudflare customers with Cloudflare DNS, but the enable flow works only on apex domains (e.g. example.com, not blog.example.com). You can use it as an alternative to the manual TXT record above, but you still control the p= policy yourself.
A domain stuck at p=none is functionally unprotected against spoofing. Note what bulk-sender programs actually require: Gmail and Yahoo (and Microsoft's 2026 rules) mandate only that high-volume senders publish a DMARC record with a minimum policy of p=none — alongside aligned SPF/DKIM, a one-click unsubscribe header, and low spam rates. Moving to p=quarantine or p=reject is strongly recommended for spoofing protection but is not itself the bulk-sender threshold. If you send transactional or notification mail (for example through Courier), publish DMARC and advance toward enforcement on your sending domain after confirming SPF and DKIM are aligned, so legitimate messages keep delivering while spoofed mail is rejected.
References
FAQ
Partially. With p=none, DMARC is published and you receive reports, but enforcement is not enabled — receivers still deliver spoofed mail. Many scanners report this as "policy not enabled" because no protective action is taken. You must set p=quarantine or p=reject for enforcement.
One API, every provider
Courier connects to your email, SMS, and push providers, handles retries and failover, and surfaces delivery errors in plain language.
Reply-code definitions per RFC 7489 §6.3. Last reviewed Jul 1, 2026. Courier is not affiliated with third-party providers; error behavior may vary by implementation.
© 2026 Courier. All rights reserved.