Reflexionando sobre el spam …

Spam_Mail.png… llego a la conclusión de que tiene  poco remedio o si lo tiene es un asco.

Porque veamos, o lo dejas en manos de un programa o tienes que hacerlo tú prácticamente con tus manitas. Lo primero conlleva un alto riesgo de perder correo legítimo. Lo segundo es directamente desesperante.

Voy a dar un paso atrás y a comenzar desde el principio. Dispongo de un servidor de correo funcionando bajo Exim4 en una distribución Debian. Hay un grupo reducido de usuarios en el sistema que deben identificarse correctamente para enviar a través suyo y la redistribución salvaje (mail relay) está contenida.

La recepción de correo es entonces el único punto en el que puedo hacer algo con respecto al spam. Anteriormente lo intenté con servicios tipo spamassassin y dspam y tuve problemas de estabilidad debido a la gran cantidad de recursos que consumían para realizar su trabajo. También probé el sistema de listas grises con greylistd y funcionó estupendamente hasta que me topé con el inconveniente de los retrasos en la recepción de correos de confirmación de  compras y subscripciones a servicios. O podía ajustarlo fácilmente o no podía emplearlo.

La situación se agravaba si no existía en el sistema un panel de control vía web en el que los usuarios tuviesen la capacidad de ajustar la configuración. Y hablo de algo simple y centralizado. Y no, no tenía ni tengo nada parecido.

Listas grises

Las listas grises son todo un invento basado en el principio de que los emisores de spam van a salto de mata y si no consiguen enviar el mensaje en el momento pasan a la siguiente víctima sin dudarlo. Si el servidor que recibe el correo no puede aceptarlo en ese momento, por exceso de carga u otro tipo de problemas técnicos, lo anuncia con un código concreto para que el emisor sepa que debe esperar un tiempo para volver a intentarlo.

Técnicamente no veo la dificultad de que un emisor de spam se comporte siguiendo estas reglas pero por lo visto no suele ser así, y es lo que sirve de rasgo distintivo entre un servidor legítimo y otro que no lo es, y representa toda la base de funcionamiento de un servidor de listas grises. Llegas a enviar tu correo y el servidor apunta de dónde vienes, qué traes y para quién (un triplete). Si no te tiene en los registros te dice que vuelas más tarde y te apunta. Si estás ya inscrito y lo has intentado cierto número de veces te deja pasar y te sitúa en la lista blanca. Y eso es todo.

La única problemática grave -mientras los spammers no cambien su funcionamiento y anulen todo el sistema- es que en el mundo real nos encontramos con situaciones que requieren la recepción inmediata del correo. Como ejemplo he citado antes los comprobantes de compras; compra algo en un sitio nuevo y ya puedes esperar sentado tres o cuatro horas hasta que recibas sus avisos con la compra. Eso en los días afortunados, porque ya me he encontrado con servidores de correo que te lo enviaban una vez, recibían la notificación de vuelva usted en un ratito y nunca más. Y ahí te busques la vida, pequeño ser tembloroso.

Así que lo de las listas grises es efectivo contra los ordenadores zombificados que se emplean como emisores de spam (la mayoría realmente) pero con el resto … A menos, claro está, que sepamos de antemano cuáles son sus  direcciones IP. ¿ Y podemos ? Pues sí, podemos una vez que hemos recibido el correo basura. Y eso nos lleva al siguiente punto.

Clasificación manual del Spam

Este proceso se lleva a cabo con bastante facilidad hoy en día y consiste en utilizar el buzón de entrada como base para desde allí mover mensajes basura a una carpeta concreta cuando los reconocemos como tales. Ahora ya tenemos un emisor, un contenido y un origen marcados como spam.

En el caso contrario, si un mensaje válido es marcado de alguna manera como basura y situado en dicha carpeta maldita, trasladarlo al buzón de entrada significa justo lo contrario. Nos hemos equivocado (o algo así) y el emisor, su origen o su contenido son buenos.

Los lectores de correo avanzados como Thunderbird incluyen mecanismos para realizar esta operación con una única pulsación de teclado. Y eso lo facilita mucho, tanto que encontrar excusas para no hacerlo es difícil.

Así que ya tenemos realizada la clasificación de correo como malo y bueno; dicha clasificación es manual y subjetiva, pero parte de ella puede ser aprovechada ya que las direcciones IP pueden apuntarse automáticamente a un sistema de listas grises con lo que habremos construido la primera línea de defensa. Es más, si nos equivocamos lo habremos hecho nosotros y no un programa, mucho más difícil de corregir, y menos tendente a la negociación.

Entre bambalinas

Si en el lado del servidor instalo un filtro de listas grises alimentado únicamente desde dentro ahorraré recursos en analizar contenido vía programática y eso ya representa quitarme de encima a un buen número de emisores zombi.

¿ Cómo hago para que obtenga información sin más intervención del usuario que la de mover mensajes entre carpetas ? Lo primero que se me ocurre es crear un programa que monitorice dichas carpetas. No es imposible porque el número de usuarios son finitos y existen mecanismos de sobra para realizarlo. Ya he escrito un par de servicios así para mi empresa en los que monitorizo la salida de impresoras virtuales y de programas para transformar y enviar archivos a otros sitios.

Una vez que un mensaje alcanza una de esas carpetas podemos analizarlo y extraer de él cierta información como su IP de origen (que iría directamente al filtro de listas grises) y el identificador del mensaje para el proceso contrario. Si incluimos también en la vigilancia el buzón de entrada podremos determinar si el mensaje ha vuelto a él y descartarlo como uno de los malos.

Puestos así, ¿ qué tal si situamos también la carpeta de enviados en el sistema para obtener información de listas blancas ? Y me refiero a emisores principalmente. Con ellos podríamos indicar al filtro que, aunque la IP sea sospechosa, si el emisor se encuentra en ella se debe pasar el mensaje siempre.

Y bueno, todo esto podría mejorarse mucho añadiendo a esta sencilla base de datos meta información sobre frecuencia de recepción y de envío. Con ella podríamos incluso condenar algunas direcciones IP al ostracismo más negro o, al contrario, ponerle una alfombra roja para que entre hasta la cocina.

Jo, y es que ¡ aún hay más ! ¿ Qué tal ir recopilando direcciones de correo para ir conformando una agenda para el usuario ? Malos, buenos y regulares … La leche de posibilidades.

Voy a seguir reflexionando sobre ello.