Blog · Dmarc
How to Move Your DMARC Policy from p=none to p=reject Without Breaking Legitimate Email
How to Move Your DMARC Policy from p=none to p=reject Without Breaking Legitimate Email
If your DMARC record has a policy of p=none, switching to p=reject is the move that actually protects your domain from spoofing. p=none tells receivers to do nothing with failing messages. p=reject tells them to discard mail that fails authentication. The problem is that many organizations skip the migration steps and end up bouncing legitimate email. This guide covers exactly how to move to p=reject without that happening.
The process takes time because your domain is sending mail through more sources than you probably realize. Marketing platforms, internal relays, third-party productivity tools, and legacy systems all send mail that appears to come from your domain. Before any of them will pass DMARC at p=reject, each one needs proper SPF or DKIM configuration. Skipping this discovery phase is the most common reason the migration fails.
Prerequisites Before You Change Anything
Two things must be true before you touch your DMARC policy.
First, SPF must pass for every legitimate message you send. Second, DKIM must also pass for every legitimate message. Not just the messages you send from your primary mail server. All of them. If any sending source uses a third-party service that authenticates with its own domain instead of yours, that source will fail DMARC alignment once the policy becomes p=reject.
Run a DMARC report analysis before changing anything. Your aggregate reports show you exactly which IP addresses and sending domains are used for your domain. If you do not have a DMARC record yet, set one up with p=none and an rua reporting address first. Wait several days. Review who is sending mail for your domain and whether each source is aligned.
If you find a sending source that is not aligned, do not proceed until it is fixed or removed.
Step 1 - Set Up DMARC Reporting First
Do not change your policy until you have visibility into what is passing and failing. Configure an rua email address to receive aggregate reports. If you manage one domain, a simple forwarder to a monitored inbox works for the initial check. If you manage multiple domains or a complex sending infrastructure, use a DMARC monitoring tool that aggregates reports across all your domains and surfaces alignment failures in plain terms.
The aggregate report tells you which servers are sending mail for your domain, whether their SPF and DKIM checks are passing, and whether alignment is matching the From domain. Look for any source that shows SPF or DKIM as passing but alignment as failing. Those sources will break when you switch to p=reject. They need to be remediated first.
A useful rule: if you cannot identify a sending source in your DMARC reports, do not switch your policy until you have traced it.
During the migration itself, DMARCFlow makes this easier by showing you all your domains and sending sources in one view. When a new third-party tool starts sending misaligned mail after you have switched to p=reject, you see it in the report that same day instead of discovering it when users report missing mail. Setting up monitoring before you change your policy is the single highest-value step in this entire process.
Step 2 - Handle Subdomains With a Separate Policy
If you have subdomains that send mail independently, set an explicit subdomain policy before switching your root domain. Without a subdomain record, receivers apply no policy to subdomain mail, which is the default behavior. This is intentional, but it means a misconfigured subdomain can send unauthenticated mail that never gets caught.
Add a subdomain record before switching your root policy:
_dmarc.yourdomain.com TXT "v=DMARC1; p=none"
This creates a safety boundary. Once you have confirmed each subdomain's sending infrastructure is aligned, update the subdomain record to match your root domain policy. Subdomain records are often forgotten because they do not show up in everyday monitoring. They are a common source of unexpected failures after a policy switch.
Step 3 - Move to p=quarantine First
p=quarantine is a safer intermediate step. It tells receivers to treat failing mail as suspicious and route it to spam instead of rejecting it outright. If a legitimate source is still misaligned after your initial cleanup, p=quarantine gives you a buffer. You will see failures in your reports, but your users will still receive the mail.
Set your DMARC record to p=quarantine and leave it there for a monitoring period. A minimum of two weeks is reasonable. Longer if you have many sending sources or seasonal mail patterns. During this period, check your aggregate reports daily. Any new alignment failures that appear after the switch to p=quarantine indicate sources you did not account for.
When you see a new failure source, investigate immediately. Determine whether it is a legitimate sender you missed or an unauthorized source. Remediate or block as appropriate.
Step 4 - Switch to p=reject and Monitor Actively
Once aggregate reports show no new alignment failures from legitimate sources for at least one to two weeks, update your DMARC record:
_dmarc.yourdomain.com TXT "v=DMARC1; p=reject; rua=mailto:dmarc-reports@yourdomain.com"
After switching, monitor your reports every day for the first two weeks. Set up ruf forensic reports to receive samples of failing messages. A failure report after your switch to p=reject means something new is sending legitimate mail without proper alignment. That source was either missed in your earlier analysis or started sending for your domain after you completed your audit.
Watch for: new marketing platform integrations, new third-party tools that IT provisioned without updating SPF or DKIM, new internal systems, and forwarded mail that re-injects messages through external servers.
What Actually Breaks When You Switch to p=reject
Misaligned SPF is the most common cause. If your envelope sender domain differs from your From header domain, SPF passes but alignment fails. Third-party bulk senders commonly use their own envelope domain. This is why custom DKIM signing for your domain matters. With custom DKIM, the signing domain matches your From domain and alignment passes.
Mailing list software re-injects mail through its own servers, changing the envelope sender and often modifying headers in ways that break DKIM signatures. If you run your own mailing list, ARC (Authenticated Received Chain) must be enabled to preserve authentication results through the re-injection. If you use a third-party mailing list service, they must either DKIM sign with your domain or support ARC. Neither is optional at p=reject.
Third-party productivity tools that send on your behalf are a frequent source of unexpected failures. A new tool that starts sending mail for your domain without using your DKIM key or including your sending IPs in your SPF record will fail at p=reject.
Auto-forwarding rules re-inject mail through the forwarder's server, causing SPF misalignment. This is difficult to prevent without ARC at the receiving side. It is most common with legacy email clients and rules that auto-forward to external addresses.
How DMARCFlow Fits Into the Migration
The core reason DMARCFlow matters during this process: aggregate reports are only useful if someone reviews them. During a policy migration, report volume spikes as you configure new sending sources and change settings. Manually reviewing raw DMARC reports across multiple domains does not scale.
DMARCFlow aggregates reports from all your domains into a single view, showing which sources are failing and why, without requiring you to parse XML files. During the p=quarantine phase, this makes it straightforward to catch a new failure source before you switch to p=reject. After switching to p=reject, any new misaligned source appears in your monitoring immediately, rather than showing up as a support ticket from a user whose mail disappeared.
Set up DMARCFlow before you change any policy. Use it throughout the p=quarantine monitoring period. If it shows a new failure after your switch to p=reject, do not ignore it. That is a legitimate sender that needs remediation before it causes real disruption.
FAQ
How long should I stay at p=quarantine before switching to p=reject?
At minimum two weeks, but longer if you have many sending sources or seasonal mail patterns. The key metric is zero new alignment failures from legitimate sources in consecutive reports. If a new failure appears, reset your waiting period after remediating it.
What does misaligned SPF look like in practice?
SPF checks the envelope sender domain against the sending server IP. If your envelope sender is bounces@marketingplatform.com but your From address is newsletter@yourdomain.com, SPF passes because the IP is authorized for marketingplatform.com. But DMARC alignment fails because the SPF domain does not match your yourdomain.com From address.
Do I need DKIM signing from every third-party sender?
Yes, for p=reject to pass cleanly. DKIM signing with the third-party domain does not help your alignment. The third-party must DKIM sign with your domain or relay through your infrastructure so SPF aligns. Many major providers support custom DKIM signing. Some do not, and those require a different approach.
How do subdomain policies interact with the root domain policy?
Subdomain policies are separate. A p=reject policy on your root domain does not automatically apply to subdomains. You must add explicit DMARC records for subdomains. Without a subdomain record, receivers apply no policy to subdomain mail. Always set an explicit subdomain policy rather than relying on inheritance.
What does a DMARC failure look like for end users?
If a message fails DMARC at p=reject, it is discarded before delivery. The recipient never sees it. There is no bounce notification to the sender in most cases. At p=quarantine, the message is delivered to spam instead of being discarded.
Can auto-forwarding break DMARC at p=reject?
Yes. When mail is automatically forwarded, the forwarder's server re-injects it. The forwarder's IP becomes the SPF source. DKIM signatures may break if headers are modified. There is no reliable fix for end-user auto-forwarding without ARC at the receiving side.
Summary
Moving from p=none to p=reject requires three things: full SPF and DKIM coverage across all legitimate sending sources, DMARC reporting that tells you what is failing before you change the policy, and a gradual progression through p=quarantine before reaching p=reject. Set subdomain policies explicitly. New sending sources will appear after your initial audit; catch them through ongoing report monitoring.
Do not rush the p=none to p=quarantine phase. That is where legitimate mail breaks if you skipped preparation. DMARCFlow or any monitoring tool that gives you daily visibility into alignment failures turns a manual audit into an automated watch process. The goal is a clean switch to p=reject where nothing unexpected fails.