The DMARC enforcement journey from p=none to p=reject is one of the highest-impact moves you can make for your domain’s security posture.
But most organizations stall at p=none indefinitely — collecting reports nobody reads while attackers continue spoofing their domain unchecked.
Here’s how to navigate the journey without breaking legitimate email flows:
Stage 1: Monitor (p=none)
You’re listening, not enforcing. DMARC aggregate reports reveal every source sending email as your domain — legitimate services, shadow IT, and attackers alike. This is your discovery phase. Expect surprises.
Stage 2: Quarantine (p=quarantine)
Unauthenticated messages get flagged and routed to spam. You’re telling the world: “If it doesn’t pass SPF or DKIM alignment, treat it with suspicion.” Use the pct= tag to roll this out gradually — start at 10%, monitor, increase.
Stage 3: Reject (p=reject)
Full enforcement. Unauthenticated messages are blocked outright. Your domain is no longer available as a weapon for phishing campaigns. This is the destination.
sp=none leaves subdomains unprotected even when your organizational domain is at reject.p=none with rua= reporting on day onep=quarantine; pct=10 and monitor for failuresp=reject; pct=10 and repeat the gradual rolloutp=reject; pct=100 — full enforcement achievedGoogle and Yahoo now require DMARC for bulk senders. Payment processors and enterprise partners increasingly mandate p=quarantine or p=reject for vendor onboarding. BIMI (Brand Indicators for Message Identification) — which displays your logo in recipient inboxes — requires p=quarantine at minimum.
The gap between “we have DMARC” and “we enforce DMARC” is the gap between visibility and protection.
Every week you stay at p=none is another week your domain remains available for abuse.
The journey takes patience and methodical execution. But the destination — a domain that cannot be weaponized against your customers, partners, and employees — is worth every step.
Where is your organization on the DMARC enforcement journey? Still at p=none, or have you made the move to reject?