Wednesday, October 26, 2005

Akismet : Plugin AntiSpam para Wordpress

Recordaba como hasta el año pasado dedicábamos parte del día a combatir el spam que recibíamos vía correo electrónico, mi mala memoria me ha hecho olvidar cifras exactas ... probablemente más de 50,000 correos al día . Recordaba filtros bayesianos , listas blancas, listas negras, access files, header_checks, DNS blacklists, reglas de firewall, detección de firmas, antispam appliances ... el spam - aunque reducido considerablemente - seguía entrando.

Y si lo recordé era porque hoy leía acerca de Akismet : un plugin para Wordpress destinado a reducir el volumen de spam en los comentarios de los blogs.





¿Cómo trabaja?



Sin complicarnos en los detalles: cada comentario enviado a nuestro blog es redireccionado a los servidores de Akismet donde luego de una serie de pruebas determina si el comentario es calificado o no como spam. En el caso que el comentario sea calificado como spam, se mantiene durante 15 días en una lista de espera donde el administrador del blog determinará el destino final del mismo.

Haciendo la analogía con el spam en el correo electrónico : Akismet trabaja bajo el mismo concepto que por ejemplo: Vipul's Razor al ser un sistema colaborativo destinado a detectar y filtrar el spam (en este caso en los comentarios de los blogs) . Si la experiencia en el correo electrónico es válida entonces considero que Akismet trabajará de manera similar : No va a eliminar el spam , solo lo va a reducir.

Qué tan distribuido sea es algo que no me queda claro en este momento ... revisando el código del plugin parece ser que este hace una conexión via HTTP al puerto estandar 80 del servidor apikey.rest.akismet.com (apikey es la llave que obtenemos luego del engorroso proceso de suscripción en wordpress.com) identificándose como (USER_AGENT) : Akismet/1.03. Un detalle de esta conexión es que tanto rest.akismnet.com y apikey.rest.akismet.com resuelven a la misma dirección IP 72.36.160.130 - al menos en este lado del mundo - y si consideramos que www.akismnet.com también resuelve a la misma IP no me queda claro donde queda la escalabilidad de esta solución en este instante. Obviamente el hecho que el plugin trate de conectarse a apikey.rest.akismet.com hace muy sencilla la tarea de derivar esta carga a otros servidores. (En general : cualquiercosa.rest.akismet.com resuelve a la misma IP)

Hasta el momento no he tenido problemas de spam en "out of geek" porque desde un primer momento sólo los usuarios registrados pueden publicar comentarios previa aprobación del primero de dichos comentarios por parte del administrador del blog. Los mecanismos challenge/response via la inclusión de un gráfico con un texto seriamente distorsionado para evitar el reconocimiento automático del mismo es una medida que quería probar pero dado que el concepto de Akismet es una novedad en la blogósfera preferí hacer esto primero. Es novedoso en el sentido que trabaja sobre una base de datos compartida ( a menos que consideremos que el plugin que lo integra con SpamAssassin es un intermediario que hace lo mismo con la diferencia que no necesito un servidor/servicio adicional para que funcione ) y mientras más usuarios trabajen con este plugin es de esperar que el desempeño del mismo se incremente.

No se necesita reinventar la rueda por lo que imagino que Akismet debe estar basado en una customización de SpamAssassin dado que este software debería tener listas todas las conexiones necesarias para validar el contenido de un comentario. Pero esto es algo que no me consta y que el futuro se encargará de revelar.

Instalación



Instalar el plugin de Akismet es sencillo - como cualquier otro plugin de Wordpress - , el inconveniente es que su funcionamiento requiere de una API key. Para conseguir esta llave se requiere ser usuario de wordpress.com y para ser usuario de wordpress.com ... la única forma que he encontrado es seguir la instrucciones indicadas en esta página y descargar el browser Flock que ni siquiera es una versión estable - y probablemente tampoco necesitamos -, es un developer preview v.0.4.9 . Una vez descargado , instalado y ejecutado nos llevará a la página de inicio donde podremos encontrar el link que nos permitirá crear un nuevo blog - que tampoco necesitamos -. Todo este proceso innecesario los llevará a la siguiente página :

http://wordpress.com/flock/

Si hace esto en otro browser los llevará a la página que les pide descargar Flock , a menos que puedan cambiar el USER_AGENT a:

Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8b5) Gecko/20051021 Flock/0.4 Firefox/1.0+

Luego de conseguir el browser que no necesitamos y crear el blog que no necesito revisamos nuestro profile en wordpress .com y allí encontraremos el API key que necesitamos. Ahora ya podemos desinstalar Flock y olvidarnos del blog en wordpress.com. Esta API key era lo que faltaba para terminar de configurar el Akismet.

Si no desean seguir todo este proceso pueden bajar el plugin y revisar el código del mismo: en particular la función function akismet_verify_key para determinar el algoritmo de verificación del API key y generar uno propio pero no sé si existirá una validación adicional del lado de Akismet.com

¿Funciona?



No lo sé , justo antes de empezar a escribir este artículo lo activé y ahora solo queda esperar unos días - quizás horas - para comprobar su efectividad. Lo bueno es tener alternativas, si no funciona esta probaré con los mecanismos de challenge/response y si no volveré a los comentarios moderados donde en los poco más de dos meses de vida de este blog no ha recibido ningún spam. Lo cual por cierto puede ser sinónimo no de la efectividad de este método sino más bien de la baja popularidad de este blog.

Si el spam en los blogs llega a mover la misma cantidad de dinero que en el correo electrónico es de esperar que en el mediano plazo tengamos un DDos contra los servidores de Akismet junto con el desarrollo de técnicas más sofisticadas para evadir la detección. En el caso que los servidores de Akismet.com queden fuera de servicio es de esperar que todos los comentario requieran la aprobación manual del administrador del blog para poder ser publicados.

Este plugin es gratuito siempre y cuando el blog sea de uso personal y no represente para su dueño un ingreso mayor a los US$500.00 mensuales. En caso contrario deberá pagar por una licencia comercial de la misma de alrededor de US$5.00 mensuales para el blogger profesional o US$200.00 mesuales en el caso que se trate de una empresa.

Referencias



Akismet
WordPress : Antispam plugins

7 comments:

  1. De momento yo sólo confío en Giancarlo-Anti-Spam. Como uso Blogger, sé que el blog-spam llegará en los primeros 15 minutos después de postear así que, armado de un matamoscas y una lata de Baygón, espero 20 minutos al lado de mi blog, matando a todos los insectos que se aparezcan.

    Luego de los 20 minutos de marras, me quedo tranquilo y me dedico a otra cosa mariposa.

    No me gustan las letras distorsionadas al comentar... Dejan a personas con menores habilidades informáticas (llámense papá y mamá) fuera del circuito de comentadores... Ojalá pudiese contar con una herramienta como la que describes para Blogger. Ya nos contarás qué tan bien funciona...

    ReplyDelete
  2. [...] Tanto como ustedes yo también detesto el spam y me atribuyo autoridad para tratar el tema porque no solo lo he vivido como usuario receptor de spam sino que también lo he combatido como administrador de servicios de correo tal y como comenté brevemente en un artículo sobre Akismet y también me tocó educar a los clientes y usuarios - incluso usuarios internos - sobre las consecuencias negativas del spam. Muchas veces dediqué horas fuera del trabajo (léase conectado desde casa) para depurar colas de correo llenas de spam y más de una vez trabajando in-situ durante la madrugada para arreglar los problemas ocasionados por el spam. [...]

    ReplyDelete
  3. [...] Navegando en Internet, me encuentro con un programita llamado Akismet que detecta esos fastidiosos correos y -supuestamente- los retiene para su próxima eliminación. Su instalación es sencilla: Descargar el programa desde la página, descomprimirlo, subirlo al panel de control: /content/plugins y posteriormente activarlo desde admin. (worpress). Lo complicado es conseguir el API key: inútilmente tienes que crear una página en wordpress (pero como soy muy buena onda les voy a hacer el trabajo más sencillo, así que vayan directamente a esta liga [ Gracias Quique ]), llenen los campos y esperen validación desde su correo electrónico, finalmente (dentro del admin. De la página creada en wordpress) cliqueen en “My account” y les aparecerá el API key que les pide el programa para su instalación final. [...]

    ReplyDelete
  4. What I want to do on my blog, is every few hours take the oldest post and move it to the
    front of the queue, all automatically. Anyone know if there is a plugin that can do this or
    a simple way to set up another plugin to do this (use my own feed perhaps)?
    Thanks.

    ReplyDelete
  5. Hola, estoy luchando contra el Spam y me gustaría saber el nombre del plugin que obliga a escribir la palabra anti-spam...

    gracias

    ReplyDelete
  6. Hola Mauro, hay varios plugins disponibles en : http://codex.wordpress.org/Plugins/Spam_Tools#CAPTCHA , el método para evitar spam en el que se obliga a introducir una palabra se denomina "captcha".

    Saludos
    Quique

    ReplyDelete
  7. Por fin he encontrado este plugin que de seguro me va a ser útil de aquí en adelante. Por cierto un manual muy claro.
    Gracias.
    Un saludo!

    ReplyDelete