Blog · Dmarc
Why Your SPF DKIM and DMARC Records Pass DNS Checks But Receivers Still Disagree
You run a DNS check. Everything passes. SPF is correct. DKIM signs cleanly. DMARC policy is published and aligned. Then one receiver accepts your email and another rejects it. You check the records again. Still correct. What is going on?
This is one of the most confusing situations in email authentication. The answer is that DNS checks and receiver checks are not the same thing. DNS checks measure whether your records are published correctly at a point in time. Email receivers run authentication checks during an SMTP conversation that may have started minutes or hours earlier. The two checks can return different results because they query at different times, through different paths, and with different rules.
Why DNS Checks and Receiver Checks Are Not the Same
The biggest culprit is caching. Your DNS records may have changed. Some receivers cached your old SPF record before you updated it. Until their cache expires, they query your old IP list. Your current DNS check shows the new record. Their delivery attempt uses the old one. The result is a soft fail or hard fail that your DNS checker never predicted. Standard DNS TTLs tell receivers how long to cache your records, but receivers do not always honor TTLs strictly. Some cache aggressively to reduce query load.
Another factor is the difference between a DNS lookup and an SMTP conversation. A DNS checker queries your nameservers once, right now, and reports what it finds. An email receiver runs an authentication check during a live message delivery. The SMTP layer has timing, sequence, and policy decisions that DNS checks never simulate.
DKIM adds another variable. DKIM signatures are validated against public keys published in DNS, but the signature itself lives in the email header. If the signature was added by a mailing system that differs from your primary sending infrastructure, the DKIM result may not align with your expected domain. A DNS checker validates that your DKIM record exists. A receiver validates that the signature on the message matches. A new DKIM selector can take 48 to 72 hours to propagate to all receivers, even if your TTL is set lower.
Common Reasons Receivers Disagree
Stale DNS cache at the receiver
Some receivers cached your old SPF record before you updated it. Until their cache expires, they query your old IP list. Your current DNS check shows the new record. Their delivery attempt uses the old one. The result is a soft fail or hard fail that your DNS checker never predicted.
DKIM selector propagation delay
DKIM keys are published under selectors. If you added a new selector recently, some receivers may not yet have discovered it. Others may have. The ones that have found the new selector validate DKIM successfully. The ones using stale cached selector data fail silently. This is a common cause of partial DKIM failures where only some receivers see a valid signature.
Relaxed vs strict alignment
DMARC has two alignment modes. Relaxed alignment allows subdomains to align with the organizational domain. Strict alignment requires an exact match. Some receivers treat relaxed alignment broadly. Others apply it narrowly. If your From domain and RFC 8461 bounce domain differ, alignment may pass with one receiver and fail with another depending on how strictly each applies the RFC.
Forwarding chains
If your message passes through a forwarder before reaching its final destination, the forwarder may have broken your DKIM signature or altered your headers. Some receivers see the forwarded message and apply stricter checks. Others do not. The same message can pass DMARC at the first hop and fail at the final destination. This is why forwarded email is a common source of seemingly inconsistent authentication results.
Receiver-specific policy
Large receivers like Google, Microsoft, and Yahoo apply their own supplementary checks beyond basic DMARC compliance. They may reject mail that passes strict DMARC if it exhibits other suspicious patterns. A message that passes DMARC perfectly may still fail due to reputation signals, suspiciously similar From domains, or unusual volume patterns that their systems flag independently.
How to Diagnose Which Receiver Is Correct
When receivers disagree, you need to determine whether the failure is your fault or the receiver is working with stale data. Here is a practical checklist.
First, read your DMARC aggregate reports. If you do not have DMARC reporting enabled, stop here and enable it. Your aggregate reports tell you which specific receivers are failing your messages and why. Look for the reason codes: none, permerror, and tempfail each tell a different story. If a receiver is failing with permerror, they are likely doing something wrong or applying an outdated policy. If they are failing with none, your messages may not be authenticated at all for that receiver.
Second, test against multiple receivers simultaneously. Send test messages to Gmail, Outlook, and other major receivers and report back the authentication results. Do not rely on a single DNS checker. Run the full SMTP conversation with each major receiver to see their actual authentication result rather than what your DNS lookups predict.
Third, check your DKIM selectors independently. Run separate DNS queries for each selector you have published. Do not assume all selectors are equally visible. Some may propagate faster than others. If a selector is new, give it 48 to 72 hours before drawing conclusions.
Fourth, compare your bounce domain setup. If you use a different domain for bounces than for your From address, check whether that domain has its own SPF and DKIM records. Some receivers check both.
What to Do When Receivers Disagree
If your DMARC reports show a receiver failing with permerror or tempfail, that receiver may have a misconfiguration on their end. The fix may not be yours to make. Document the specific failure and monitor whether it resolves over time.
If the failure appears to be on your side, audit recent DNS changes. Did you add a new sending system and forget to update your SPF record? Did you switch DKIM selectors without keeping the old one active during the transition? DNS changes take time to propagate fully. Always maintain overlap periods when making authentication changes.
If you cannot resolve the disagreement quickly, a monitoring tool that aggregates authentication results across multiple receivers removes the guesswork. DMARCFlow collects DMARC reports from all participating receivers and presents a unified view of which receivers are passing and which are failing, with specific reason codes for each failure. This makes it easier to spot patterns and identify whether a given failure is a one-off cache issue or a systemic configuration problem.
Without aggregate reporting, you see only the failures that bounce back to you. With DMARC reporting, you see every receiver's result including the ones that accept your mail quietly. That full picture is what lets you distinguish a receiver cache problem from a real configuration error.
FAQ
Can a DNS check say pass while a receiver says fail?
Yes. DNS checks measure record correctness at a point in time. Receivers measure actual message authentication during delivery. Caching, timing, and SMTP-layer behavior cause gaps between what DNS checks report and what receivers see.
Why does Gmail accept my email but Outlook rejects it?
Gmail and Outlook apply different supplementary checks and may have different cached data. One may have refreshed your DNS records more recently. Another may apply stricter alignment rules for your specific domain configuration. Check your aggregate reports to see which specific check is failing at each receiver.
How long should I wait for DNS propagation before worrying about receiver failures?
Give new DNS records 48 to 72 hours before treating a receiver failure as a real problem. Some receivers cache aggressively. If failures persist beyond that window, check your aggregate reports to determine whether the issue is on your side or the receiver's.
Does passing DMARC mean a receiver will always accept your email?
No. DMARC checks whether your email is properly authenticated. Receivers can still reject mail that passes DMARC for other reasons, including poor sender reputation, suspicious content patterns, or recipient-level filters. DMARC is one layer of defense, not a delivery guarantee.
How does DMARCFlow help when receivers disagree?
DMARCFlow aggregates reports from all receivers and shows you the specific reason code for each failure. Rather than guessing which receiver has stale cache data, you see the exact authentication result from each provider. If a receiver reports permerror, you know the problem is on their end. If they report none, you know your message was not authenticated at all for that receiver.
Bottom Line
DNS checks and email receiver checks measure different things at different times. When receivers disagree, your first step is to read your DMARC aggregate reports. They tell you which specific receiver is failing, under what condition, and with what reason code. From there, you can determine whether the issue is stale cache, a configuration gap, or a receiver-side problem that will resolve on its own.
Monitoring across multiple receivers simultaneously gives you the clearest picture. A tool that aggregates DMARC reports from all your receivers removes the guesswork from this process and surfaces patterns that a single DNS checker cannot see.