Skip to main content
All systems

Deliverability Watchdog

Status: production, daily cron.

Problem

Deliverability fails silently. SPF breaks in a DNS migration nobody mentions, a domain lands on a blocklist over a weekend, and you find out three weeks later when a campaign's reply rate flatlines. By then you've burned the list and the domain.

How it runs

Every day, a script checks SPF, DKIM, and DMARC on every sending domain in the fleet, plus blocklist status against Spamhaus DBL. Failures alert to a Slack channel the same morning.

The detail that matters: the domain list isn't a config file. The script derives it from the live sending platform, so a mailbox added on Tuesday is monitored Wednesday, without anyone remembering to register it. Config files rot; deriving state from the system that owns it doesn't.

Around the watchdog sit a few standing doctrines the checks enforce or assume:

  • Warmup never turns off. Warmup runs concurrently with production sending on every mailbox, permanently. A sending mailbox with warmup off is a defect, not a choice.
  • Every warmed, healthy mailbox is attached to exactly one active campaign. Idle warmed capacity is waste; overloaded mailboxes are risk.
  • Volume caps live at the mailbox level (25 sends per mailbox per day), so campaign capacity is plain multiplication.
  • Gateway-fronted recipient domains (Proofpoint, Mimecast, Barracuda) get detected up front via MX records and routed to LinkedIn instead of email. No sender-side trick reliably clears a security gateway; a recipient reply is the only durable allow. Tag and reroute.

Stack

Node, DNS lookups via dig (free, no vendor), the sending platform's API for the fleet inventory, Slack for alerts, cron on an always-on VM.

Worth stealing

Derive your monitored-domain list from the sending fleet instead of maintaining it by hand. It's one API call, and it closes the exact gap (the mailbox someone added and forgot) where deliverability incidents are born.

Agent-readable version: /systems/deliverability-watchdog.md