Reportar spam automaticamente con Spamhaus y Python
Sí, podés reportar spam automáticamente con Spamhaus usando un script de Python que vigila tu carpeta de correo no deseado, extrae la IP, los dominios y las URLs de cada mensaje, valida la infraestructura en RIPE Stat y envía todo al portal de Spamhaus vía API. El flujo completo arranca en IMAP y termina en una lista de bloqueo que protege a toda la comunidad, no solo a tu bandeja.
La idea sale de un artículo publicado el 4 de junio de 2026 en dev.to por Battle Hardened, que lo bautizó “The Counteroffensive”. El nombre no es marketinero: es literal. En vez de borrar el spam y seguir, le devolvés el golpe a la infraestructura que lo manda.
The Counteroffensive es una técnica de automatización que conecta tu servidor de correo por IMAP, parsea cada mensaje de la carpeta Junk para sacar la IP de origen, los dominios del sobre y las URLs maliciosas, consulta RIPE Stat para identificar al proveedor de hosting, y envía el reporte al portal de Spamhaus. Todo en Python, sin intervención manual.
En 30 segundos
- El spam moderno pasa SPF, DKIM y DMARC a propósito: los operadores configuran la autenticación bien para esquivar tus filtros.
- Spamhaus mantiene listas como SBL, DBL, XBL y PBL que usan miles de servidores en todo el mundo.
- El script hace IMAP → parsear mensaje → extraer IP/dominios/URLs → consulta en RIPE Stat → envío a la API de Spamhaus.
- Necesitás acceso IMAP, una API key de Spamhaus (la sacás en auth.spamhaus.org/account) y las librerías
imaplibyrequests. - Reportar infraestructura, no solo marcar como junk, es lo que construye las listas que frenan campañas enteras.
Hosting es el servicio que proporciona infraestructura de servidores para alojar sitios web y aplicaciones en Internet. Surgió en los años 1990 como componente esencial de la web y actualmente es ofrecido por múltiples proveedores.
¿Por qué el spam autenticado con SPF y DKIM sigue llegando a tu bandeja?
Ponele que configuraste SPF, DKIM y DMARC en tu dominio. Lo hiciste bien. Mata la enorme mayoría del spam antes de que toque tu dispositivo. Y aun así, todas las semanas aparece basura en la carpeta de no deseados que pasó todos los controles.
¿Cómo? Porque hay una categoría de spam que esas herramientas no pueden tocar: correo de operadores que configuraron la autenticación correctamente, a propósito, justamente para evadir tus filtros. Tema relacionado: infraestructura cloud hosting segura.
El artículo de dev.to lo describe sin vueltas: mail completamente autenticado, con puntajes de spam bajos, rotando dominios entre una docena de TLDs distintos, y con texto de relleno generado por IA para confundir a los clasificadores de contenido. Ese correo entra. Aterriza en tu carpeta Junk, atrapado por el análisis del lado del cliente. Y ahí se queda.
Acá viene el punto incómodo: marcarlo como junk y borrarlo es la respuesta equivocada. Ese spam viene de infraestructura que Spamhaus quizás todavía no conoce. Y Spamhaus es la forma en que se arman las listas de bloqueo que protegen a todos. DMARC por sí solo no previene esto, porque DMARC valida que el dominio sea quien dice ser, no que el dominio sea honesto. Un estafador puede tener su propio dominio perfectamente autenticado (sí, en serio).
¿Qué es Spamhaus y por qué los reportes importan?
Spamhaus es una organización sin fines de lucro que mantiene listas de bloqueo de spam usadas por servidores de correo en todo el mundo para decidir qué mensajes aceptar o rechazar. Si una IP o un dominio está en una lista de Spamhaus, miles de servidores lo bloquean de entrada.
Las principales:
- SBL (Spamhaus Block List): IPs identificadas como fuentes de spam.
- XBL (Exploits Block List): máquinas comprometidas, bots y proxies abiertos.
- PBL (Policy Block List): rangos de IP que no deberían estar enviando correo directo.
- DBL (Domain Block List): dominios usados en campañas de spam y phishing.
Spamhaus procesa un volumen enorme de indicadores. Cada reporte legítimo que mandás alimenta ese motor. No estás protegiendo tu casilla: estás aportando evidencia a un sistema que frena campañas completas antes de que escalen. La guía oficial de Spamhaus para reportar actividad sospechosa insiste en eso: el valor está en la evidencia agregada.
¿Cómo funciona reportar spam automáticamente con Spamhaus?
El flujo es lineal y se entiende de una. El script:
- Conecta por IMAP a tu servidor de correo y vigila la carpeta Junk.
- Parsea cada mensaje para extraer la IP de envío, los dominios del sobre y las URLs maliciosas del cuerpo.
- Consulta RIPE Stat con esa IP para identificar la infraestructura de hosting que hay detrás.
- Envía a Spamhaus la IP, los dominios, las URLs y una muestra del correo crudo, vía el portal de submission.
El problema que resuelve es de fricción pura. Spamhaus tiene un portal de envío, pero entrar a la web para cada mensaje individual no es un workflow sostenible. ¿Vos vas a copiar y pegar headers de 40 mails por semana a mano? No. Por eso el reporte manual no escala, y por eso automatizarlo cambia la ecuación. En proteger tu dominio de spam profundizamos sobre esto.
¿Qué necesitás para implementar reportes automáticos?
Los requisitos son livianos. Nada de infraestructura pesada:
- Acceso IMAP a tu casilla: servidor, puerto (993 con SSL es lo habitual) y credenciales. Si usás 2FA, vas a necesitar una contraseña de aplicación.
- Cuenta de Spamhaus con API key: la generás en auth.spamhaus.org/account. Sin la clave no podés hablar con el endpoint de submit.spamhaus.org/api.
- Python con dos librerías:
imaplib(viene en la librería estándar) yrequestspara las llamadas HTTP. - Un lugar donde correrlo: alcanza con un VPS chico o un servidor propio donde dejar el script corriendo en un cron. Si necesitás alojamiento para esto en Argentina, lo podés montar en donweb.com sin demasiada vuelta.
Cómo extraer y analizar datos del email spam con Python
El corazón del asunto está en parsear bien el mensaje. Conectás por IMAP, te posicionás en la carpeta de correo no deseado y leés cada mail sin marcarlo como leído:
import imaplib, email
m = imaplib.IMAP4_SSL("mail.tudominio.com", 993)
m.login("usuario", "app_password")
m.select("Junk")
typ, data = m.search(None, "UNSEEN")
for num in data.split():
typ, raw = m.fetch(num, "(BODY.PEEK[])")
msg = email.message_from_bytes(raw)De ahí sacás lo que importa. La IP de origen está en los headers Received (el más viejo de la cadena suele ser el real). Los dominios del sobre salen del Return-Path y del From. Las URLs las extraés del cuerpo con una expresión regular sobre el HTML.
Eso sí: el header Received es falsificable en los saltos superiores, así que conviene tomar el primer relay confiable, no el que el spammer inyectó. Acordate de esto cuando armes la extracción, porque reportar una IP equivocada es peor que no reportar nada.
¿Cómo verificar la infraestructura en RIPE Stat antes de reportar?
Antes de mandar nada, validás. Acá entra RIPE Stat, el servicio de datos abiertos del RIPE NCC que te dice quién es dueño de una IP y qué red la aloja. La consultás por su Data API, que es pública y no pide autenticación para las consultas básicas.
¿Para qué sirve este paso? Para confirmar que la IP pertenece a infraestructura real de hosting y no es, ponele, un cliente residencial infectado al que reportarías por error. RIPE Stat te devuelve el ASN, el rango de red y el holder. Con eso sabés si el reporte es legítimo y a qué proveedor le estás señalando el problema. Relacionado: prácticas DevOps defensivas recomendadas.
El tema es que un reporte mal armado le resta credibilidad a todos tus reportes futuros. Spamhaus pondera la reputación de quien envía. Validar en RIPE Stat es tu filtro de calidad antes de apretar el gatillo.
Casos reales: dominios rotatorios, phishing y texto generado por IA
El artículo de dev.to describe patrones concretos que cualquiera que administre correo reconoce al toque:
- Dominios rotatorios: el operador cambia de dominio cada semana, repartido entre una docena de TLDs, para que ningún bloqueo individual lo frene mucho tiempo.
- Texto de relleno con IA: párrafos generados por modelos de lenguaje cuya única función es confundir a los clasificadores de contenido. La “creatividad” acá es puro ruido para esquivar filtros.
- Phishing con DMARC pass: campañas que autentican su propio dominio y aun así llevan al usuario a un sitio que roba credenciales. Pasan el control técnico, pero la intención es maliciosa.
¿Qué tienen en común? Que el contenido cambia pero la infraestructura no tanto. La IP de hosting, el ASN, el patrón de envío: eso es más estable que el dominio de turno. Por eso reportar infraestructura le pega donde duele.
Tabla: dónde apunta cada dato del reporte
| Dato extraído | De dónde sale | A qué lista de Spamhaus alimenta |
|---|---|---|
| IP de envío | Header Received + RIPE Stat | SBL / XBL |
| Dominio del sobre | Return-Path / From | DBL |
| URLs del cuerpo | Regex sobre el HTML | DBL |
| Rango de red / ASN | RIPE Stat Data API | SBL / PBL |

Errores comunes al automatizar reportes
- Reportar sin validar la IP: tomar la primera línea
Receivedsin verificar en RIPE Stat te lleva a señalar IPs falsificadas o víctimas inocentes. Validá siempre antes de enviar. - Marcar los mensajes como leídos al parsearlos: usá
BODY.PEEK[]en vez deBODY[]. Si no, alterás el estado de la casilla y perdés el rastro de qué procesaste. - Hardcodear las credenciales en el script: la API key de Spamhaus y la contraseña IMAP van en variables de entorno o en un gestor de secretos, nunca en el código que después subís a un repo (le pasó a más de uno).
- Inundar la API con duplicados: si reportás el mismo dominio cuarenta veces porque mandó cuarenta mails, ensuciás tus reportes. Deduplicá por IP y dominio antes de enviar.
Preguntas Frecuentes
¿Cómo puedo reportar spam automáticamente a Spamhaus?
Con un script de Python que se conecta por IMAP a tu casilla, parsea los mensajes de la carpeta Junk, extrae IP, dominios y URLs, y los envía al endpoint de submit.spamhaus.org/api usando tu API key. Necesitás las librerías imaplib y requests.
¿Qué es The Counteroffensive y cómo funciona?
The Counteroffensive es la técnica descripta en dev.to el 4 de junio de 2026 para automatizar el reporte de infraestructura de spam a Spamhaus. Funciona encadenando IMAP, parseo de mensajes, consulta en RIPE Stat y envío a la API de Spamhaus, todo sin intervención manual. Lo explicamos a fondo en automatizar tu defensa contra spam.
¿Puedo automatizar el reporte de spam con Python?
Sí. imaplib viene en la librería estándar de Python y maneja la conexión al correo, mientras que requests resuelve las llamadas HTTP a Spamhaus y RIPE Stat.
¿Por qué los dominios autenticados con SPF y DKIM pueden ser spam?
Porque SPF y DKIM solo verifican que el dominio es quien dice ser, no que sea honesto. Un spammer puede registrar su propio dominio y configurar la autenticación perfecta para pasar tus filtros. La autenticación valida identidad, no intención.
¿Cómo identifico la infraestructura detrás de una campaña de spam?
Extraés la IP de envío del header Received y la consultás en la Data API de RIPE Stat (stat.ripe.net/docs/data_api). Te devuelve el ASN, el rango de red y el proveedor que aloja esa IP, que es el dato estable detrás de los dominios rotatorios.
Conclusión
El spam cambió. Ya no es el correo mal escrito de hace diez años: es infraestructura profesional, autenticada a propósito, con dominios que rotan y texto generado por IA. Contra eso, marcar como junk y borrar no mueve la aguja.
The Counteroffensive propone algo distinto: convertir cada spam que recibís en un reporte automático que alimenta las listas de Spamhaus. La inversión es baja (un script de Python, acceso IMAP, una API key), y el retorno es colectivo: cada IP validada en RIPE Stat y enviada a Spamhaus ayuda a frenar campañas antes de que escalen. Si administrás correo, armá el script, validá bien antes de reportar, y dejalo corriendo en un cron. El contraataque empieza en tu carpeta de no deseados.






