new-site/infra/cron
justin 9eeed47c4b mail: close MX-exclusion gaps — exclude consumer mx: operators + add mx-tag cron
Fix 1 (build_trucking_campaigns.py): the warmup big-MX exclusion only covered the
clean-label operators (google/microsoft/proofpoint/...). Consumer mailbox
operators that mx_tag_carriers.py labels with an "mx:" prefix slipped BOTH the
exclusion and the per-MX throttle -- notably mx:yahoodns.net (283k sendable
carriers = Yahoo Small Business/AOL custom domains) and mx:icloud.com (25k), plus
comcast/charter/centurylink/windstream/tds/earthlink. These are custom domains
whose MX points at a consumer provider, invisible to the literal-domain blocklist.
Added CONSUMER_MX_OPERATORS, folded into WARMUP_EXCLUDE_OPERATORS used by both the
fetch_carriers() exclusion SQL and mx_daily_caps() (same day-30 ramp). Behind the
existing MAIN_SKIP_BIG_MX switch.

Validated read-only: after the fix the warmup-eligible pool is 353,909 carriers
(315,892 untagged + ~38k genuinely small/self-hosted operators), so the long tail
still sustains the daily quota -- not starved -- while 0 consumer-MX carriers are
selected during warmup.

Fix 3 (infra/cron/pw-mx-tag): mx_tag_carriers.py was on no cron, so the untagged
(NULL) backlog (~316k) never drained and new FMCSA imports stayed untagged,
slowly re-opening the gap. Added a daily 05:45 UTC cron (--only-unsent
--limit-domains 20000), before the 08:00 builder. Idempotent/bounded (only tags
mx_provider IS NULL). Verified live: a 200-domain test run tagged 216 domains.

(Fix 2 -- bounding the NULL bucket cap -- deferred; the cron will drain it.)
2026-06-20 00:03:47 -05:00
..
pw-dmarc-parser mail: DMARC aggregate-report parser + dedicated dmarc@ mailbox ingestion 2026-06-19 08:50:20 -05:00
pw-fmcsa-refresh trucking: weekly FMCSA source refresh so new non-compliant carriers are caught 2026-06-17 20:44:54 -05:00
pw-hc-campaign hc: warmup must run DAILY for the full 21-day ramp (not weekdays-only) 2026-06-14 21:02:08 -05:00
pw-hc-nppes hc: warmup must run DAILY for the full 21-day ramp (not weekdays-only) 2026-06-14 21:02:08 -05:00
pw-hc-rampcap infra: codify the email-campaign pipeline in Ansible (new mail-pipeline role) 2026-06-17 20:26:01 -05:00
pw-hc-refresh infra: codify the email-campaign pipeline in Ansible (new mail-pipeline role) 2026-06-17 20:26:01 -05:00
pw-ifta-campaign infra: codify the email-campaign pipeline in Ansible (new mail-pipeline role) 2026-06-17 20:26:01 -05:00
pw-ip-rehab warmup: IP rehab for .91-.93 so they can be reallocated 2026-06-09 20:27:47 -05:00
pw-listmonk-rampcap infra: codify the email-campaign pipeline in Ansible (new mail-pipeline role) 2026-06-17 20:26:01 -05:00
pw-listmonk-scrub infra(cron): daily Listmonk consumer-domain reconciliation (pw-listmonk-scrub) 2026-06-19 00:00:46 -05:00
pw-mail-reputation infra(cron): nightly mail-reputation snapshot (pw-mail-reputation) 2026-06-19 08:38:35 -05:00
pw-mta-warmup infra: codify the email-campaign pipeline in Ansible (new mail-pipeline role) 2026-06-17 20:26:01 -05:00
pw-mx-tag mail: close MX-exclusion gaps — exclude consumer mx: operators + add mx-tag cron 2026-06-20 00:03:47 -05:00
pw-trucking-campaign-builder infra: codify the email-campaign pipeline in Ansible (new mail-pipeline role) 2026-06-17 20:26:01 -05:00
pw-ucr-campaign infra: codify the email-campaign pipeline in Ansible (new mail-pipeline role) 2026-06-17 20:26:01 -05:00
pw-warmup-tg-alert monitoring: daily warmup IP-reputation Telegram alert 2026-06-08 21:06:41 -05:00