From c1839579396a871ee660f3235e006e3cfda048fd Mon Sep 17 00:00:00 2001 From: justin Date: Wed, 17 Jun 2026 20:16:00 -0500 Subject: [PATCH] email: suppress defunct/legacy/satellite ISP domains in cold sends Added DEAD_ISP_DOMAINS (52 domains) to BLOCKED_EMAIL_DOMAINS, so every campaign builder that imports the shared exclusions (trucking, UCR, IFTA via create_and_schedule_campaign, and the healthcare importer) stops cold-mailing them. Domains were identified from our own Listmonk bounce table (top bounced recipient domains) cross-checked against ISP status: defunct dial-up brands (earthlink, netzero, juno, mindspring...), Qwest/Embarq legacy, satellite (hughes, wildblue, dishmail), Altice/Suddenlink rural, WOW!/Knology, small rural ISPs (windstream, tds, iowatelecom...) and Alaska regional. Deliberately keeps still-active large consumer ISPs (comcast/charter/cox/ centurylink) -- their bounces were the cold-IP/no-DKIM reputation problem (now fixed), not dead mailboxes, and they carry real prospects. Part of the email-deliverability incident hardening. --- scripts/_email_exclusions.py | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/scripts/_email_exclusions.py b/scripts/_email_exclusions.py index 7d0a9db..d3b5698 100644 --- a/scripts/_email_exclusions.py +++ b/scripts/_email_exclusions.py @@ -70,11 +70,43 @@ DO_NOT_CONTACT_EMAILS: frozenset[str] = frozenset({ "dave@dataspindle.com", }) +# Defunct / legacy / satellite ISP mailbox domains. Cold-mailing these is pure +# reputation drag: the mailboxes are overwhelmingly dead (the brand was shut down +# or absorbed years ago and the addresses now hard-bounce) or the operator +# (satellite / small rural ISP) aggressively defers cold B2B mail with poor +# eventual delivery. Identified from our own Listmonk bounce table (top bounced +# recipient domains) cross-checked against ISP status. NOTE: still-active large +# consumer ISPs (comcast.net, charter.net, cox.net, centurylink.net) are +# deliberately NOT here -- their bounces were the cold-IP/no-DKIM reputation +# problem (now fixed), not dead mailboxes, and they carry real prospects. +DEAD_ISP_DOMAINS: frozenset[str] = frozenset({ + # Defunct dial-up / early-ISP brands (mail shut down or vestigial) + "earthlink.net", "peoplepc.com", "mindspring.com", "netzero.net", + "netzero.com", "juno.com", "excite.com", "lycos.com", "wmconnect.com", + "adelphia.net", "voyager.net", "core.com", "localnet.com", "pldi.net", + "ptsi.net", "cablespeed.com", + # CenturyLink / Qwest / Embarq legacy brands (migrated/abandoned) + "qwest.net", "qwestoffice.net", "embarqmail.com", "centurytel.net", + "citlink.net", "citynet.net", + # Satellite (poor cold-mail deliverability, high defer/bounce) + "hughes.net", "wildblue.net", "dishmail.net", "wildblueinternet.net", + # Altice / Optimum / Suddenlink / Cablevision family (rural, aggressive defer) + "optonline.net", "suddenlink.net", "cebridge.net", "bresnan.net", + # WOW! / Knology, Mediacom, Insight, Atlantic Broadband/Breezeline, Cable One + "wowway.com", "knology.net", "mchsi.com", "insightbb.com", "atlanticbb.net", + "breezeline.net", "cableone.net", "cableone.com", + # Small / rural regional ISPs (aggressive defer, low cold deliverability) + "windstream.net", "tds.net", "iowatelecom.net", "netins.net", "mhtc.net", + "arvig.net", "consolidated.net", "fuse.net", "ncn.net", "new.rr.com", + # Alaska regional (satellite/long-haul, poor cold deliverability) + "gci.net", "alaska.net", "acsalaska.net", "gulftel.com", +}) + # The full set of consumer domains we refuse to cold-mail. Extend here as we # discover other reputation-sensitive providers. BLOCKED_EMAIL_DOMAINS: frozenset[str] = ( YAHOO_FAMILY_DOMAINS | GOOGLE_CONSUMER_DOMAINS | MICROSOFT_CONSUMER_DOMAINS - | DO_NOT_CONTACT_DOMAINS + | DEAD_ISP_DOMAINS | DO_NOT_CONTACT_DOMAINS )