Luchando contra el SPAM. Toma dos: Greylisting.
4 Mayo 2008
Emulando a Fray Luis de León, como decíamos ayer, continuemos hablando de SPAM. O mejor dicho, de la lucha contra él.
Existen múltiples sistemas de comprobar el grado de validez de un correo en el momento de su entrada en el servidor destino, que es cuando queremos pararlo. Recordemos, cuanto antes lo paremos mejor: menos tráfico consumido, menos recursos consumidos y antes le decimos al spammer que no nos la ha colado.
Entre las comprobaciones básicas, podemos encontrar las listas negras (listas dinámicas de direcciones IP conocidas de spammers. Si el emisor está en una de estas listas, terminamos la conexión), fallo en la validez del protocolo SMTP (obligamos a seguir estrictamente todos los protocolos, incluyendo el de identificarse correctamente el servidor emisor), comprobación de que el emisor existe (el servidor receptor hace una nueva conexión hacia el servidor de correo del emisor, para comprobar que el remitente es una dirección válida).
Tras esta primera batería de comprobaciones, vendría la aceptación del correo en si. Otra medida que se puede utilizar es ir analizando el correo a medida que va entrando, y desde que se tenga la certeza de que es spam, un virus, o incumpla alguna de las normas, terminar la conexión en ese momento, rechazando el correo y dejándolo a medias.
Dependiendo de la agresividad de los filtros, los correos no se dejarán entrar o se aceptarán todos y se marcarán como SPAM para que el usuario final los revise. No aceptarlos tiene el peligro de perder correos válidos, y aceptarlos todos tiene el peligro de que cara a los spammers nuestra dirección de correo es buena y acepta el SPAM, por lo que no saldremos nunca de esas listas.
Estos métodos necesitan cada vez de un mayor consumo de recursos, al ir adaptándose los spammers para saltárselos, lo que obliga a mejorar las medidas de detección, haciéndolas más complejas y por tanto necesitando más tiempo de cómputo.
Es aquí donde surgen una serie de medidas interesantes y de alto impacto. Son tres de las que voy a hablar: Greylisting, SPF y DomainKeys.
GreyListing.
Hoy por hoy, es mi medida preferida. Tiene una eficacia increíble para la sencillez de la idea. Es cierto que tiene alguna contrapartida, pero los resultados son tan impresionantes que creo que merecen la pena.
Su funcionamiento se basa en quedarse a medio camino entre las listas blancas (white lists), listas de emisores y/o receptores válidos y confiables, y las listas negras (black lists), listas de emisores y/o receptores denegados.
Las listas blancas se utilizan para saltarse las comprobaciones de correo de ciertos remitentes que sabemos que son seguros, o para algunos receptores que no quieren que su correo pase por ningún filtro. Las listas negras, imagino que a estas alturas ya se sabe para que son.
A medio camino, las listas grises. El funcionamiento consiste en denegar inicialmente cualquier intento de entrega de correo, informando al emisor de que en ese instante no podemos aceptar su correo y que vuelva a intentarlo más tarde (código de error 451 de SMTP).
Antes de rechazar el correo, el receptor ha tomado nota y apunta la siguiente tripleta: <Dirección IP del emisor, dirección de correo del emisor, dirección de correo del receptor>. Esta tripleta se “embarga” durante un tiempo definido por el receptor.
Si el emisor del correo es un servidor de correo que cumple con los estándares, volverá a intentar la conexión pasado un tiempo. Si aun no se ha cumplido el tiempo de embargo, el servidor receptor volverá a informar del mismo error, indicando que aun no puede recibir el correo.
El emisor volverá a intentarlo más tarde, y eventualmente llegará el momento en que en su intento ya haya pasado el tiempo de embargo, por lo que el receptor aceptará el correo sin más problema.
Por el lado del receptor, una vez aceptado el correo, se almacena la tripleta y se mantendrá válida durante un tiempo definido por el servidor, por ejemplo un mes. Cualquier correo posterior que coincida con la misma tripleta, se aceptará directamente, sin demora, y además, pondrá a cero el contador de esa tripleta, dándole de nuevo otro mes de validez.
La gran pega de este método es que el primer correo desde un emisor, tardará en entrar. Al menos tanto como tengamos definido como tiempo de embargo, que puede variar desde 5 minutos hasta varias horas.
Y aquí surge la pregunta ¿Y en qué ayuda esto en la lucha contra el SPAM?. La mayoría del SPAM se genera desde equipos zombies, o mediante programas encargados de lanzar miles de correos a listas de destinatarios, pero que no son servidores de correo completos, o que no respetan todos los requisitos del protocolo SMTP. También se puede deber al hecho de que el coste, para estos emisores de spam, de reintentar enviar un correo con las direcciones que fallan es demasiado alto (errores de destinatario no válido, buzón lleno, servidor no puede tramitar la solicitud en este momento, correo rechazado por ser spam…).
El hecho es que estos emisores masivos no vuelven a intentar enviar una vez recibido el error inicial, con lo que los hemos descartado sin siquiera tener que recibir un solo bit del correo ni haber gastado un ciclo de CPU en analizarlo.
Para mi se ha convertido en uno de los mejores sistemas por que me ha demostrado ser capaz de evitar el 95% del SPAM. Y eso supone muchos cientos de miles de correos semanales (si, no me he equivocado en el número). Después de todo, la mayoría de nuestro correspondencia la hacemos con los mismos interlocutores, por lo que estos siempre estarán marcados como válidos. Los nuevos interlocutores, los que no conocemos aun de nada, son de los que desconocemos sus intenciones, y por eso nos tomamos un tiempo en aceptar su correo.
Además, es de los sistemas de detección y protección que marcan las direcciones de correo de los destinatarios como no válidas para los spammers, por lo que (y esto es otro dato que he comprobado con el tiempo) acaban saliendo de algunas de estas listas, reduciendo el volumen de spam que se les intenta enviar. Doble beneficio a cambio de la demora de un correo.
Uno solo.
Merece la pena.
Soy un fan declarado del greylisting y de la belleza de su sencillez y eficacia.
Y aunque a Juanjo no le guste, el post se me ha alargado demasiado, por lo que seguiré hablando de los otros métodos de los que quería hablar (SPF y DomainKeys) en otra entrada.
Permanezcan atentos a la pantalla.












4 Mayo 2008 a las8:21 pm
Lo dicho, como los del tomate
Juanjo.
15 Mayo 2008 a las11:47 am
Interesante y bien explicado, me ha gustado la idea de fondo del método, al final las ideas sencillas son las que funcionan.
(sos grande)
24 Mayo 2008 a las7:42 pm
Muy interesante tu explicación y si me interesaría mucho el tema de PF y DomainKeys, he leído pero todavía no he logrado captar al 100%.
Graxia
Elianni
24 Mayo 2008 a las7:53 pm
Espero pronto que tengas notas de SPF y DomainKeys
Elianni