El spam en los blogs es un problema que acaba afectando de alguna forma a todos los que administramos servidores. En WordPress hay estupendos plugins para evitar el spam como Akismet y que funcionan muy bien, pero siempre funcionan después de que el spam ya ha entrado en el blog con el consiguiente consumo de ancho de banda, cpu, memoria y espacio en disco. Evidentemente para un sólo blog no es un problema pero cuando tienes muchos con mucho tráfico y está entrando continuamente spam en todos ellos puede acabar siendo un problema.

En Stop Forum Spam han creado una lista de spammers a nivel mundial que puedes consultar descargando un fichero con las ips, emails o nombres de usuario utilizados o a través de una api que puedes consultar libremente desde cualquier aplicación que desarrolles.

En mi caso para ahorrar tiempo y ancho de banda he creado una entrada en el cron que diariamente descarga las ips bloqueadas durante las ultimas 24 horas y las bloquea directamente.

Ejemplo con iptables

.
/usr/bin/wget -O /tmp/listed_ip_1.zip http://www.stopforumspam.com/downloads/listed_ip_1.zip; /usr/bin/unzip /tmp/listed_ip_1.zip -d /tmp/; for i in $(/bin/cat /tmp/listed_ip_1.txt); do /sbin/iptables -A INPUT -s $i -j DROP; done; /bin/rm /tmp/listed_ip_1.*

y si utilizas el firewall apf

.
/usr/bin/wget -O /tmp/listed_ip_1.zip http://www.stopforumspam.com/downloads/listed_ip_1.zip; /usr/bin/unzip /tmp/listed_ip_1.zip -d /tmp/; for i in $(/bin/cat /tmp/listed_ip_1.txt); do /usr/local/sbin/apf -d $i; done; /bin/rm /tmp/listed_ip_1.*

Espero que os sea útil.

[Actualización]
Acabo de encontrar un plugin para wordpress que utiliza esta lista junto con otras dos:
http://wordpress.org/extend/plugins/stop-spammer-registrations-plugin/


Hoy he leido el blog de Chipi que los ISP's españoles han firmado un pacto para utilizar SPF (sender policy framework) para controlar el spam.
Básicamente el SPF funciona insertando una entrada en el servidor dns que indique cuales son los servidores autorizados a enviar los correos de ese dominio para que luego los clientes de correo puedan filtrar los mensajes gracias a una línea en las cabeceras indicando la fiabilidad del emisor del correo en función de la ip desde la que se ha enviado.
Por ejemplo una de mis cuentas de correo está en GMX, un servidor de correo alemán con el que llevo mucho tiempo, y en sus DNS se puede ver la línea:
"v=spf1 ip4:213.165.64.0/23 -all" que viene a decir que sólo envía mensajes desde la red 213.165.61.0/23.

En  postfix hay varias soluciones e incluso un artículo en español muy bueno en: http://www.liberaliatempus.com/articulos/linux/inslacion-de-spf-bajo-postfix.html

Dentro de unos días voy a empezar a utilizarlo aunque dudo mucho que llegue a mejorar el sistema de listas grises que estoy utilizando ahora y que me está quitando practicamente todo el spam y sin carga de servidor como el spamassassin.