new-site/infra/cron
justin ae68edbc58 fix(monitoring): repair both dead mail-alert crons + de-noise DMARC digest
Three bugs the owner hit:
1. Per-operator reputation alert (06:10 cron, mail_reputation_monitor --alert)
   silently never ran: it redirected to /var/log/pw-mail-reputation.log but
   /var/log is root-only and that file was never pre-created, so the deploy
   user's >> redirect failed and cron aborted before the command. Repointed
   both mail-alert crons to deploy-writable /opt/performancewest/logs/.
2. IP reputation alert (20:00 cron) still referenced the removed rehab pool
   (.91-.93) and used 8.8.8.8 for Spamhaus (which returns the open-resolver
   error, not a real answer). Dropped the rehab section, relabeled to the two
   live IPs (.94/.107), and switched the DNSBL check to Control D (76.76.2.0)
   which returns real Spamhaus ZEN data. (It was correctly SILENT lately
   because delivery is healthy -- silent-on-healthy is by design.)
3. DMARC daily digest was pure noise: it alerted on ANY external IP with >=20
   failing msgs, but those are legit recipient-side forwarders/security
   gateways (inkyphishfence, cloud-sec-av, Proofpoint, Mimecast, ...) that
   re-send our mail and naturally break SPF/DKIM alignment -- benign under
   p=reject. Added PTR-based forwarder detection (FORWARDER_PTR_HINTS) so the
   digest tags them [fwd] and only alerts on (a) OUR IP <95% pass or (b) an
   UNKNOWN non-forwarder external IP with >=100 failing msgs = real spoofing.

Verified: all 4 currently-flagged external IPs now classify as forwarder=True.
2026-06-24 06:28:50 -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 fix(monitoring): repair both dead mail-alert crons + de-noise DMARC digest 2026-06-24 06:28:50 -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 fix(monitoring): repair both dead mail-alert crons + de-noise DMARC digest 2026-06-24 06:28:50 -05:00