Learn · Email authentication

DNS drift: why email authentication decays

Email authentication is configured in DNS, and DNS is a shared surface: your IT team, your web agency, your marketing tools, your registrar — and, if you're unlucky, an attacker — can all change it. The records you carefully set on the way to p=reject don't stay set. That slow decay is DNS drift, and it fails in two opposite directions: spoofing quietly comes back, or your own legitimate mail starts bouncing.

How records actually drift

Almost never through malice — mostly through ordinary work done without the email picture in mind:

Why enforcement raises the stakes

Under p=none, drift is invisible and mostly harmless — nothing was being blocked anyway. Under p=quarantine or p=reject, the same drift has teeth:

The uncomfortable part: aggregate reports alone catch drift slowly. Reports show yesterday's outcomes, so you notice a deleted DKIM key only after a day of failures — and a weakened policy record generates no failure at all, just quieter enforcement. Catching drift means re-reading the records themselves, every day, and comparing against what was there before.

What a drift watch should cover

RecordDrift that mattersBlast radius
DMARC (_dmarc)Policy weakened, rua removed, record deleted or duplicatedSpoofing protection and reporting silently off
SPF (apex TXT)Mechanisms added/removed, over 10 lookups, record deleted or duplicatedEvery sender's SPF result; permerror breaks it all
DKIM (*._domainkey)Key deleted, CNAME to the ESP removed or repointedThat sender's signatures fail from that moment
MXHosts added, removed or repointedWhere your inbound mail physically goes

Two details separate a useful watch from a noisy one. First, failed lookups aren't deletions — DNS has bad moments, and a monitor that cries "SPF removed!" on a timeout trains you to ignore it. Second, DKIM needs to watch the right selectors — the ones your senders actually sign with, which show up in your aggregate reports, not a guessed list — and for ESP-managed keys it should watch the CNAME target rather than the key behind it, because ESPs rotate keys routinely and that rotation is not drift.

Catching it within a day

You can absolutely run this by hand: dig the four record sets, keep yesterday's copy, diff, repeat daily per domain. Nobody does, which is the point — drift wins against good intentions and loses to automation. Canny Pigeons runs this watch for every domain on every plan: we re-resolve DMARC, SPF, MX and your report-observed DKIM selectors daily, and when something actually changed you get an email with the before and after — one line of which is usually enough to tell "ah, that was Dave adding the new CRM" from "nobody here did that." Domains on hosted DMARC get an extra check for free: if your _dmarc CNAME stops resolving to the policy we serve for you, that's flagged too.

Then the alert email ends the same way every security notification should: if you made this change, ignore us. If you didn't — go look, today, not at the end of the quarter.

Set it, and hear about it when it un-sets

Daily re-checks of DMARC, SPF, MX and DKIM with before/after diffs by email — on every plan, nothing to configure.

Start free