Tools / Guides / DMARC rollout

DMARC from p=none to p=reject, safely

How to move a domain's DMARC policy from monitoring to quarantine and reject without blocking your own email: inventory senders, fix SPF and DKIM alignment, read reports and ramp up.

Updated 2026-11-03 · 8 min read

A DMARC record with p=none only watches. Spoofed email that claims to be from your domain is still delivered. Most domains stop there because people are afraid of blocking their own invoices and newsletters. With the steps below, the move to p=reject is routine.

Why it matters now

Step 1: List everything that sends as your domain

Usually more than you think: Microsoft 365 or Google Workspace, the website's contact form, the CRM, invoicing and payroll systems, the helpdesk (HaloPSA, Zendesk), marketing (Mailchimp, HubSpot), scanners and printers, and monitoring tools. Ask each team, and let the DMARC reports in step 3 find the rest.

Step 2: Make SPF and DKIM pass and align

DMARC passes when either SPF or DKIM passes and the domain it checked matches the visible From domain (alignment).

Step 3: Publish p=none with reporting

_dmarc.example.com  TXT  "v=DMARC1; p=none; rua=mailto:[email protected]; fo=1"

Receivers will send daily aggregate reports (XML) to the rua address listing every IP that sent mail as your domain and whether it passed. Use a dedicated mailbox or a DMARC reporting service; raw XML is not meant to be read by hand.

Step 4: Read two to four weeks of reports

For each sending source in the reports, decide:

What you seeAction
Your service, DKIM pass alignedDone
Your service, DKIM fail or not alignedEnable custom-domain DKIM in that service
Your service, only SPF and not alignedEnable DKIM, or set a custom bounce (Return-Path) domain
Forwarders (mailing lists, auto-forwarding)Expected; DKIM usually still passes
Unknown IPs failing everythingThat is spoofing: exactly what enforcement will stop

Step 5: Quarantine, gradually

v=DMARC1; p=quarantine; pct=25; rua=mailto:[email protected]; fo=1

Failing mail now goes to spam for 25% of messages. Raise pct to 50 and then 100 over a few weeks while watching the reports and asking teams whether anything went missing.

Step 6: Reject

v=DMARC1; p=reject; rua=mailto:[email protected]; fo=1

Receivers now refuse spoofed mail outright. Then tighten the rest:

Common mistakes