Canny Pigeons

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 on Pro, Business and Partner plans: 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." Eligible domains on hosted DMARC also get a hosted-policy check: if your _dmarc CNAME stops resolving to the policy we serve for you, that's flagged too.

For a point-in-time look, the DMARC checker reads all four record sets live and grades them — drift monitoring is that same read, repeated daily, with yesterday’s copy to diff against.

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 — included on Pro, Business and Partner plans.

Explore plans