DNS "propagation" is not a single global event - it is every resolver on the internet independently deciding when its cached copy of your record has expired and it is time to ask again. Until that happens, different parts of the internet see different answers to the same DNS query, and for mail this means some receivers validate SPF or find your MX correctly while others are still working from the old record.
What actually controls propagation time
The single biggest lever is TTL (time to live) on the record you are changing. A record published with a 24-hour TTL will still be served from caches up to 24 hours after you change it, no matter how fast your DNS provider updates its own authoritative answer. Three other factors compound this:
- Registrar/DNS host propagation. Your own DNS provider needs to push the change to all of its own authoritative servers, usually seconds to a few minutes, but can be longer during nameserver migrations.
- Resolver caching. ISP and corporate recursive resolvers cache answers independently and will not re-query until their local TTL expires, even if the authoritative answer already changed.
- Negative caching. If a record did not exist before (e.g. a new DKIM selector), some resolvers cache the "no such record" (NXDOMAIN) answer for a period defined by the SOA record's minimum TTL, which can make a brand-new record appear "missing" even after you have published it.
Checking what the world actually sees right now
$ dig TXT example.com +short @8.8.8.8 "v=spf1 include:_spf.google.com ~all" $ dig TXT example.com +short @1.1.1.1 "v=spf1 include:_spf.google.com -all"
A difference between resolvers like this means your change has not propagated everywhere - here Google's resolver still has the old ~all (softfail) answer cached while Cloudflare already sees the new -all (hardfail). Query several public resolvers (8.8.8.8, 1.1.1.1, 9.9.9.9) and, if you can, resolvers close to your actual mail flow, rather than relying on a single propagation-checker tool that only samples a handful of locations.
Why this matters specifically for mail records
| Record | What breaks during propagation lag |
|---|---|
| SPF (TXT) | Receivers see old policy; may accept mail you intended to restrict, or vice versa |
| DKIM selector (TXT) | New signing key not yet visible; signatures fail verification until it propagates |
| DMARC (TXT) | Policy enforcement change lags; reports may reflect the old policy window |
| MX | Some senders route to the old mail server past the cutover point |
A DKIM key rotation is the sharpest edge case: if you rotate the selector and start signing with the new key before the new public key record has propagated everywhere, every receiver still holding the old cached answer will fail DKIM verification on legitimate mail until their cache catches up.
A safe change sequence
- Lower the TTL first, separately. Drop the TTL on the record you plan to change (to something like 300 seconds) and wait for the *old* TTL's duration before touching the value - this gets the shorter TTL cached everywhere first.
- Make the actual change once the short TTL has had time to propagate.
- Verify from multiple resolvers before assuming the change is live everywhere.
- Raise the TTL back to a normal value (1-24 hours) once you have confirmed propagation and stability.
For DKIM rotation specifically, publish the new selector's public key well before you switch signing to it, confirm it resolves from multiple resolvers, and only then flip the signing key over - never do both in the same change.
This same sequencing applies to any change where the old and new states are both "valid" DNS answers that just disagree with each other - an SPF include swap, a DMARC policy tightening, or an MX cutover all share the same underlying risk: the period where the internet is not looking at one consistent answer. Planning around the slowest TTL in the chain, not the fastest, is what keeps that window from turning into an outage.
What not to do
Do not make a mail-critical DNS change and assume it is live because it resolves correctly from your own machine - your resolver's cache state is not representative of Gmail's, Outlook's, or anyone else's. Do not rotate a DKIM key and flip signing to it in the same step. And do not leave TTLs at very long defaults (86400 seconds or more) if you expect to need an emergency change later - a long TTL you set for "stability" becomes the exact delay that extends an outage when you need a fast rollback.
Where MailPilot fits
MailPilot checks SPF, DKIM and DMARC on the sending domain as part of ongoing monitoring, which catches a record that has drifted out of alignment - including the transitional state where a change has propagated to some resolvers but not others - rather than leaving it to show up as an unexplained bounce spike days later.
Ready to reach the inbox every time?
Automated email warmup across real peer mailboxes. Live inbox placement monitoring. Free 7-day trial - no credit card required.
Start free trial