Bali, Indonesia
Insights

What to Audit Before Switching DMARC Policy from None to Reject

October 20, 2026
0:00
Publishing a Domain-based Message Authentication, Reporting, and Conformance (DMARC) record with p=none gives domain owners a false sense of security. Messages continue landing in inboxes, ticketing systems confirm notifications reach customers, and server logs show regular outbound SMTP handshakes. But p=none is strictly an observational policy; receiving mail servers merely record authentication results without altering message delivery. The moment you flip that policy tag to p=reject, every unaligned or legacy mail stream tied to your domain is instructed to fail at the recipient boundary. In hosting and support environments, the emergency escalation usually arrives twenty-four hours after an administrator makes that DNS change. Transactional receipts from a legacy accounting server stop delivering, a third-party helpdesk app starts getting bounced with rejection notices, or contact form submissions from an auxiliary VPS vanish. The issue is rarely that the domain lacks authentication entirely. Rather, the administrator did not audit identifier alignment across all sending services before telling the world to drop failed mail. Understanding what needs auditing before flipping that switch requires looking at DMARC not as a simple switch, but as an audit log of your entire organization's outbound email footprint.
When a domain runs with v=DMARC1; p=none;, receiving servers evaluate Sender Policy Framework (SPF) and DomainKeys Identified Mail (DKIM), compare the results to the visible sender address, and then deliver the email according to their own standard spam scoring rules. Even if an email fails both SPF and DKIM alignment, the receiving server still accepts it because the domain owner explicitly asked for monitoring only. This behavior hides misconfigurations. A marketing platform might send email using your domain in the visible From: header while routing the technical envelope through its own shared domain. To the end user and your basic mail logs, the message looks authentic. If SPF passes for the platform's own domain, a basic check might show a green pass, even though it completely fails DMARC evaluation. Switching to p=reject transforms that background advisory into an explicit instruction: if the message does not pass DMARC, reject it during the SMTP transaction or discard it immediately. If you have not audited every service sending mail under your domain name, you are gambling on whether all legitimate senders are properly signed and aligned. Before taking that step, you can verify how receiving mail servers evaluate your current records by checking if your DMARC policy is working before enforcing reject.
The most common misconception among system administrators is believing that an SPF pass or a DKIM pass automatically satisfies DMARC. It does not. DMARC requires alignment, meaning the domain validated by SPF or DKIM must match the domain displayed in the visible RFC 5322 From: header that human recipients see in their mail clients. SPF checks the RFC 5321 envelope sender (often visible in headers as Return-Path or Mail From). When an external service sends an automated notification, it often uses its own domain for the Return-Path to collect bounce notifications. The receiving server checks the SPF record of that bounce domain, finds that the sending IP is authorized, and records an SPF pass. However, when DMARC evaluates the message, it compares the bounce domain with the domain in the From: header. Because the domains do not match, SPF fails DMARC alignment. DKIM functions similarly. A third-party service may cryptographically sign outbound messages using its own signing key and domain tag (d=serviceprovider.com). The cryptographic signature verifies perfectly, resulting in a DKIM pass. But because the d= tag does not match your domain in the From: header (d=example.com), DKIM alignment fails. If your outbound messages to major providers are dropping despite what looks like valid signatures, it helps to understand reading Authentication-Results headers to fix DMARC alignment. For a message to pass DMARC, it needs to pass at least one aligned mechanism: aligned SPF or aligned DKIM. In modern deliverability setups, DKIM alignment is significantly more resilient than SPF because mail forwarding, mailing lists, and intermediate relays routinely rewrite the envelope sender, instantly breaking SPF alignment while preserving intact cryptographic DKIM signatures.
You cannot reliably audit your domain's email streams by asking team members what services they use. Sales teams configure CRM tools, accounting hooks up automated invoicing portals, developers set up alerting scripts on cloud VPS instances, and marketing tests new newsletter platforms. Inevitably, several of these send mail using the primary business domain without alerting the infrastructure team. The only reliable source of truth is your aggregate DMARC reports (the XML files delivered to the address defined in your record's rua tag). An audit configuration should run for several weeks under p=none with reporting enabled:
TEXT
v=DMARC1; p=none; rua=mailto:[email protected]; sp=none; fo=1;
These XML reports are sent daily by major mailbox providers, including Google, Microsoft, and Yahoo. Each report contains a breakdown of every IP address that attempted to send mail using your domain, the volume of messages sent from that IP, and the exact authentication status. When auditing these reports, look for three distinct categories:
  1. Authorized internal infrastructure: Your primary mail transfer agents (MTAs), web application servers, and transactional relay hosts. Verify that both SPF includes and local DKIM milters sign with the matching apex domain.
  2. Legitimate third-party services: SaaS applications, help desks, external billing platforms, and marketing automation. Each of these must be configured with a custom DKIM selector pointing to a CNAME record on your DNS zone. Once configured, verify that the d= tag in their signature matches your domain.
  3. Unauthenticated or spoofed sources: Random IP addresses sending low volumes of phishing, backscatter, or spoofed messages. These should fail both SPF and DKIM. Once you move to p=reject, these are the only streams that will be blocked.
If you find third-party services that only support SPF and cannot sign with custom DKIM keys, consider isolating them. Either migrate the service to a dedicated subdomain (such as billing.example.com or news.example.com) or look for alternative providers that support custom DKIM alignment. Relying solely on SPF alignment across distributed infrastructure frequently leads to deliverability failures whenever messages encounter forwarding.
Jumping directly from p=none to p=reject introduces unnecessary operational risk. An intermediate stage exists: p=quarantine. When a mailbox provider evaluates a failing message under a quarantine policy, it generally routes the message to the recipient's spam or junk folder rather than rejecting it outright at the SMTP gateway. This quarantine phase acts as an active safety net. If a critical transactional email stream was missed during the RUA audit, the messages will still be discoverable in users' spam folders rather than bouncing permanently with a 550 5.7.1 error code. End users can retrieve the message, report the issue to support, and give the engineering team time to fix the missing DKIM record or SPF include without halting business operations. Administrators can also control the rollout pace using the percentage tag (pct). While some providers handle pct differently, specifying pct=25 on a quarantine policy directs receivers to apply the quarantine action to only twenty-five percent of unaligned messages, while leaving the remaining seventy-five percent subject to the fallback p=none behavior.
TEXT
v=DMARC1; p=quarantine; pct=25; rua=mailto:[email protected];
Monitor your aggregate reports closely after enabling quarantine. If legitimate mail volumes under the quarantine policy drop to zero across several consecutive reporting cycles, increase the percentage to 100 before finally committing to p=reject.
Before updating your DNS record to p=reject, review your setup against these operational criteria: First, check your DNS tree for subdomain behavior. By default, a root policy applies to all subdomains unless explicitly overridden by the sp= tag. If your developers send transactional alerts from api.example.com or dev.example.com, those subdomains will inherit the root p=reject policy. If those environments do not sign outbound mail with valid DKIM keys, their messages will fail immediately upon cutover. Decide whether you need an explicit sp=none; or sp=quarantine; tag to protect subdomains during the transition. Second, confirm that all third-party vendors sign outbound messages with DKIM selectors matching your domain. Do not rely on third-party SPF records alone. Shared IP pools often suffer reputation fluctuations, and forwarded messages will consistently fail SPF. Third, verify that your aggregate report recipient (rua) is actively processing incoming XML. Raw XML files sitting unread in an unmonitored mailbox will not alert you when an expired DKIM key breaks alignment. Use a dedicated DMARC analysis tool or script to parse these daily summaries and alert you if an authorized IP suddenly starts failing alignment. Once aggregate reports demonstrate clean, consistent alignment across every verified sending IP for at least two full business cycles, switching to v=DMARC1; p=reject; becomes a low-risk DNS update that protects your domain reputation without impacting legitimate email delivery.