Cómo utilizar spamassassin junto con sylpheed-claws para filtrar todo el spam y correo basura que recibamos
Introducción
Seguro que a todos nos pasa que recibimos montones de correos basura, publicidad, spam, archivos infectados y un largo etcétera que nos roban cantidad de tiempo aunque solo sea borrándolos de nuestro gestor de correo... En GNU/Linux existen gran cantidad de herramientas que nos permiten gestionar todo nuestro correo electrónico, como evolution, sylpheed-claws, mozilla, etc... Además de numerosos filtros antiespam tales como pueden ser bogofilter y spamassassin. En mi caso en particular, utilizo spamassassin junto con sylpheed-claws para filtrar y gestionar todo mi correo electrónico y el resultado es bastante bueno. Spamassassin no sólo permite filtrar el correo "basura" distinguiéndolo del que no lo es con gran precisión, sino que además es fácil de configurar, es capaz de aprender de sus propios errores y tiene muchas opciones configurables que le hacen un filtro bastante potente. Aquí se describe su configuración y uso con el gestor de correo Sylpheed-claws.
Qué necesitamos
Lo primero que tendremos que hacer es instalar en nuestra máquina tanto Sylpheed-claws como Spamassassin. En Debian:
~#apt-get -finstall spamassassin sylpheed-claws
Tampoco estaría de mas instalarnos los plugins y demás módulos para sylpheed-claws si tenemos pensado utilizarlo de forma regular como nuestro gestor de correo. Para buscar qué módulos y/o plugins hay disponibles:
~#apt-cache search sylpheed-claws
Configuración de SpamAssassin
La configuración realizada aquí se ha hecho en sylpheed-claws. Si utilizas otro tipo de gestor como evolution o mozilla, deberás averiguar antes como crear y configurar reglas de filtrado, ya que es a través de éstas reglas como se configura spamassassin.
En nuestro caso, una vez abierto sylpheed-claws nos iremos a Configuración -> Filtrado... Aquí se nos mostrará la ventana para edición de reglas de filtrado. Nosotros deberemos crear tres reglas de filtrado:
Una para analizar todo el correo.
Otra que nos permita marcar como válido un correo considerado spam por spamassassin.
Una última que nos permita marcar un correo como spam en caso de que spamassassin lo pasase por alto.
Creamos la primera regla, que hará que spamassassin revise todo el correo y decida según su criterio cual es spam y cual no. En la línea correspondiente a la condición escribiremos algo como:
test "spamassassin < %F | grep -c \"X-Spam-Flag: YES\""
Spamassassin recibe como entrada nuestro correo y su salida será el mismo correo pero con algunas líneas nuevas en la cabecera. En concreto nos interesa la existencia de la línea "X-Spam-Flag: YES". Ésta línea indicará que el correo ha sido considerado como spam y por tanto deberá ser tratado.
Como la salida de spamassassin tiene formato de texto, tan solo hará falta comprobar con el comando grep si existe dicha línea.
Para la acción:
move "#mh/Buzon/Spam"
La carpeta Spam dentro de Buzon es donde yo he elegido que guarde todo el correo spam que encuentre.
Para el caso de la segunda regla, en la que un correo válido ha sido marcado como spam, la condición será:
colorlabel 6
Si encontramos como spam algún correo que no lo es (nadie nace enseñado, y spamassassin tampoco) deberemos indicar que ese correo es válido. Para ello lo etiquetaremos de color verde y lo filtraremos.
Para la acción:
Así haremos que el correo vuelva de nuevo a la carpeta de entrada y spamassassin lo marque como válido para de ése modo "aprender" de su error.
Por último, la última regla de filtrado, cuya misión es contraria a la anterior. Su condición es:
colorlabel 2
Los correos spam que se le hayan "colado" a spamassassin los marcaremos con color rojo y volveremos a filtrar. La acción entonces será:
Con ésto, el correo se marcará como spam y será enviado a la carpeta correspondiente.
Notas importantes sobre la configuración
Éstas reglas de filtrado, deberán ser colocadas al principio para que sean las primeras en ser ejecutadas, ya que de lo contrario, el correo no se filtrará de forma adecuada.
Cuando se filtra el correo con spamassassin, el proceso puede durar bastante tiempo, especialmente cuando spamassassin lleva bastante tiempo aprendiendo, ya que tendrá que comprobar mas reglas. Por ello no hay que perder la paciencia y pensar que algo va mal si el filtrado se toma varios minutos (a veces incluso media hora) cuando se tiene que filtrar una cantidad bastante elevada de correos electrónicos.
Otras opciones
Spamassassin tiene varias características configurables que lo hacen bastante potente, pero tal vez dos de las características que mas útiles pueden llegar a ser en un momento dado sean la de whitelist y blacklist. Se trata de dos listas, una con direcciones de correo que se consideran como válidas (whitelist) y otra con direcciones de correo desde las cuales todo el correo recibido se tratará como spam (blacklist).
Los parámetros para poder añadir y eliminar direcciones de éstas listas son los siguientes:
--add-to-whitelist Añade la dirección del remitente del correo a la lista de direcciones válidas. Ningún correo que llegue desde ésta dirección será considerado como spam.
--add-to-blacklist Añade la dirección del remitente del correo a la lista de direcciones no válidas.
Todos los correos recibidos desde esa dirección serán tratados como spam.
--remove-from-whitelist Elimina la dirección del remitente del correo de la lista de direcciones válidas.
--add-addr-to-whitelist = addr Igual que la opción --add-to-whitelist, pero ahora la dirección se introduce de forma manual.
--add-addr-to-blacklist = addr Igual que la opción --add-to-blacklist, pero ahora la dirección se introduce de forma manual.
--remove-addr-from-whitelist = addr Igual que la opción --remove-from-whitelist, pero como antes, la dirección deberemos introducirla de forma manual.
Netcat es una de las herramientas más potentes y flexibles que existen en el campo de la programación, depuración, análisis y manipulación de redes y servicios TCP/IP. Es un recurso imprescindible tanto para expertos en seguridad de redes como para hackers. Esta receta incluye varios ejemplos de uso de GNU netcat.
Introducción
Aunque netcat puede hacer muchas cosas, su función principal es muy simple:
Crea un socket con el destino indicado si es cliente, o en el puerto indicado, si es servidor
Una vez conectado, envía por el socket todo lo que llegue en su entrada estándar y envía a su salida estándar todo lo que llegue por el socket
Algo tan simple resulta ser extraordinariamente potente y flexible como vas a ver e continuación. Por simplicidad se utilizan conexiones locales aunque, por supuesto, se pueden utilizar entre máquinas diferentes.
Podemos usar netcat para enviar correo electrónico por medio de un servidor SMTP, utilizando el protocolo directamente:
~$nc mail.servidor.com
220 mail.servidor.com ESMTP Postfix
HELO yo
250 mail.servidor.com
MAIL FROM:guillermito@microchof.com
250 Ok
RCPT TO:manolo@cocaloca.es
250 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Aviso: su licencia ha caducado. Me deben un pastón.
.
250 Ok: queued as D44314A607
QUIT
221 Bye
HTTP
Es sencillo conseguir un cliente y un servidor HTTP rudimentarios.
Servidor
$nc -l-p http -c"cat index.html"
Al cual podemos conectar con cualquier navegador HTTP, como por ejemplo firefox.
Cliente
$echo"GET /" | nc www.google.com 80 > index.html
Streaming de audio
Un sencillo ejemplo para hacer streaming de un fichero .mp3:
Servidor
$nc -l-p 2000 < fichero.mp3
y para servir todos los .mp3 de un directorio:
$cat*.mp3 | nc -l-p 2000
Cliente
$nc server.example.org 2000 | madplay -
Streaming de video
Servidor
$nc -l-p 2000 < pelicula.avi
Cliente
$nc server.example.org 2000 | mplayer -
Proxy
Sirva para redirigir una conexión a otro puerto u otra máquina:
$nc -l-p 2000 -c"nc example.org 22"
El tráfico recibido en el puerto 2000 de esta máquina se redirige a la máquina example.org:22. Permite incluso que la conexión entrante sea UDP pero la redirección sea TCP o viceversa!
Clonar un disco a través de la red
Esto se debe usar con muchísima precaución. ¡Si no estás 100% seguro, no lo hagas! No digas que no te avisé.
Es este ejemplo voy a copiar un pen drive USB que está conectado al servidor a un fichero en el cliente y después lo voy a montar para acceder al contenido.
Tienes tarifa plana en casa pero tu IP es dinámica. A pesar de eso te gustaría tener un servidor web y tus "cosillas" accesibles desde cualquier sitio. La solución a tus problemas es un servicio de DNS dinámico.
Ingredientes
Una conexión a internet
Debian GNU/Linux o derivados
ddclient
Servidor de DNS dinámico
Lo primero es crearte una cuenta en uno de los muchos sitios que tienen un servicio de DNS dinámico, muchos son gratuitos. Por ejemplo, DynDNS.org.
Hay otros:
Al crear tu cuenta tendrás que indicar cómo se va a llamar tu máquina, por ejemplo, miservidor.dyndns.org.
Instalar ddclient
Simplemente:
#apt-get install ddclient
Configuración
El propio sistema de instalación de paquetes de Debian te preguntará los parámetros de configuración. A continuación se ponen unos valores de ejemplo figurados.
Si metes la pata y te cargas la cuenta de root o simplemente has olvidado la clave, esta receta explica cómo recuperar la cuenta de root sin conocer la clave, siempre que uses GRUB como gestor de arranque.
Cuando aparezca el menu de grub, tras encender la máquina, situate con los cursores en la línea del kernel que quieres usar. Pulsa 'e' para editar la entrada y edita la línea kernel (pulsando 'e' de nuevo). Añade al final de la línea lo siguiente:
init=/bin/bash
Esto hace que el sistema arranque una shell root sin pedir password. Es posible que el teclado esté en inglés y no puedas escribir el '=' y la '/', prueba '¡' y '-'. Pulsa 'b' para comenzar el arranque del kernel.
La partición raíz suele montarse como sólo lectura, asi que si olvidaste la clave de root y quieres cambiarla primero deberás remontarla como lectura/escritura. Para ello:
#mount -o remount,rw /dev/hda3
suponiendo que /dev/hda3 es tu partición raíz. Puedes averiguarlo ejecutando simplemente mount.
Por último, cambia la clave de root ejecutando:
Este documento define las normas de estilo que se deben aplicar a las recetas de la web de CRySoL. Se describe la estructura, el formato y típografía a utilizar. Esta receta sigue las normas que en ella se definen y sirve además como introducción a los formatos de entrada necesarios para poder escribir recetas.
Porque también hay amantes del software libre a los que les gusta comer bien, igual que puedes escribir recetas informáticas, puedes escribir recetas de cocina (¿o era al revés?). Este documento trata de establecer unas pautas que permitan dos cosas: que no se nos olvide poner nada y que todos tengan un estilo similar.
Apartados
El título va fuera del área de texto. Debe ser claro y conciso: "Macarrones boloñesa de Luis"
Los apartados que debe tener son los siguientes:
Ficha
Tiempo requerido: Aproximado, claro. "45 minutos".
Dificultad: Novato, Experto, etc
Coste: La pela es la pela. Aproximado. "Unos 5 euros".
Comensales: Para cuántas personas está pensada la receta.
Ingredientes: Lista con los ingredientes necesarios.
Preparación: Pasos a realizar indicando tiempos de cocción y cosas por el estilo. Cuanto más precisa mejor. Evitar las generalidades como "un poco", "una pizca". Se trata de hacer recetas para los que no tenemos ni idea. Ejemplo: "un poco de sal, pégale un pellizco al salero y lo que se te quede entre los dedos".
Comentarios: Aquí podéis contar lo que queráis: "con esta receta ligué con mi novia", "ideal para cuando llegas de resaca", "muy útil para quedar bien". También se admiten anécdotas.
Estilo
Como se trata de que sea todo muy sencillito, símplemente poned los apartados como títulos ("h1"), los ingredientes como una lista no ordenada("ul") y los puntos de la preparación como párrafos. Los comentarios quedan completamente a vuestra disposición.