Sitio para la difusión de conocimiento informático. 

Twitter RSS

Anti-Spam Spamassassin

Anti-Spam Spamassassin

Está solución anti-spam  ya es ampliamente conocida y utilizada en varias soluciones de correo, por lo que la intención de esta publicación no es repetir lo ya conocido por todos. Sin embargo hagamos un breve repaso para aquellos que no la conocen:  SpamAssassin es un programa informático publicado bajo la licencia Apache 2.0, utilizado para el filtrado de SPAM en el servicio de correo electrónico basado en reglas. Ahora es parte de la Fundación Apache. SpamAssassin utiliza una variedad de técnicas de detección de spam, que incluye la detección de spam basado en DNS y el filtrado Bayesiano, programas externos, listas negras y bases de datos en línea.  El programa puede ser integrado con el servidor de correo para filtrar automáticamente todo el correo para un sitio, o por usuarios individuales en su propio buzón y se integra con varios programas de correo. SpamAssassin es altamente configurable, si se utiliza como un filtro de todo el sistema todavía puede ser configurado para soportar por las preferencias del usuario. Sin embargo les dejaremos algunas en este post para su instalación, configuración y administración.

Índice:
1.1 Instalación
2.1 Configurando Spamassassin
3.1 Probando Spamassassin
4.1 Integrando Spamassassin a Postfix

SpamAssassin fue galardonado con el Linux New Media Award 2006 como «Mejor basado en Linux, solución anti-spam».

El sitio web de Spamassassin cuenta con toda la documentación correspondiente para su instalación, configuración y administración: http://spamassassin.apache.org/doc.html.

 

1.1 Instalación

– Utilizando CPAN via CPAN.pm:
perl -MCPAN -e shell [as root]
o conf prerequisites_policy ask
install Mail::SpamAssassin
quit

– Mediante el gestor de paquetes de Linux:
Debian unstable: apt-get install spamassassin
Gentoo: emerge mail-filter/spamassassin
Fedora: yum install spamassassin

– Instalando reglas desde la red:
Ejecutar el comando, normalmente con el usutaio root: sa-update

– Dependencias a resolver, usando CPAN:
$ perl -MCPAN -e shell
cpan> o conf prerequisites_policy ask
cpan> install Module::Name

módulos a instalar:
Digest::SHA1 o Digest::SHA
HTML::Parser >= 3.43
Net::DNS
NetAddr::IP
Time::HiRes
LWP, LWP::UserAgent, HTTP::Date
HTTP::Date
IO::Zlib
Archive::Tar
MIME::Base64
DB_File
Net::SMTP
Mail::SPF
IP::Country::Fast
Net::Ident
O::Socket::INET6
IO::Socket::SSL
Compress::Zlib
Mail::DKIM
DBI y DBD
Encode::Detect
Apache::Test
Apache 2 y mod_perl
Razor2
Mail::SpamAssassin::Bayes

 

2.1 Configurando Spamassassin

– El archivo principal de configuración de spamassassin se encuentra en «/etc/mail/spamassassin/local.cf». En este archivo es donde podemos indicar el puntaje a partir del cual catalogaremos el mensaje como probable SPAM,; e indicaremos como reportaremos esto, ya sea etiquetando el correo modificando el asunto, o enviando una notificación que tenga adjunto el correo original:

required_hits (o required_score 5.0) – Se utiliza para establecer la cantidad de puntos acumulados, y asignados por SpamAssassin, en un mensaje para considerar el éste como Spam. El valor predeterminado es 5

report_safe – Determina si el mensaje, si es calificado como spam, se incluye en un adjunto, con el valor 1 o se deja el mensaje tal y como está, con el valor 0. El valor predeterminado es 0.

rewrite_header – Define con que cadena de caracteres se añadirá al mensaje para identificarlo como Spam. El valor predeterminado es [SPAM], y puede cambiarse por lo que considere apropiado el administrador. Ejemplo: rewrite_header Subject [Probabe SPAM?]  Puntaje:_SCORE_/_REQD_:

whitelist_from – Se utiliza para definir que jamás se considere como Spam los mensajes de correo electrónico cuyo remitente sea un dominio o cuenta de correo electrónico en particular: ej. whitelist_from *@ejemplo.com

blacklist_from – Se puede definir que todo el correo electrónico proveniente de un dominio o cuenta de correo electrónico en particular siempre sea considerado como Spam.

Agregando las siguientes líneas habilitamos la base Bayesiana para el aprendizaje de SPAMs  y HAMs:
# Use Bayesian classifier (default: 1)
#
use_bayes 1
# Bayesian classifier auto-learning (default: 1)
#
bayes_auto_learn 1
bayes_auto_learn_threshold_nonspam 0.01
bayes_auto_learn_threshold_spam 6.8
# Bayesian auto expiry (default: 1)
#
bayes_auto_expire 1
bayes_expiry_max_db_size 570000
bayes_journal_max_size 102400

Nota: a continuación publicaremos como instalar la base bayesiana usando MySQL.

– Si vamos a instalar los plug-ins DCC y Razor2, debemos definir lo siguiente en este archivo de configuración:
#El directorio puede variar según la instalación:
razor_config /home/spamd/.razor/razor-agent.conf

# Use DCC
use_dcc 1
#El directorio puede variar según la instalación:
dcc_path /usr/local/dcc/bin/dccproc

Nota: en otra publicación explicaremos como instalar estos plug-ins.

– También puedes probar este generador del archivo de configuración de Spamassassin:
http://www.yrex.com/spam/spamconfig.php

– Habilitamos los plug-in que deseamos utilizar:
Para esto editamos los siguientes archivos y des-comentamos las líneas  que corresponden al plug-in que deseo habilitar (/etc/mail/spamassassin): v310, v312, v320, y v330. A continuación se detallan algunos plug-in que podemos habilitar habiendo resuelto las dependencias de cada uno previamente:
loadplugin Mail::SpamAssassin::Plugin::DCC
loadplugin Mail::SpamAssassin::Plugin::Razor2
loadplugin Mail::SpamAssassin::Plugin::SpamCop
loadplugin Mail::SpamAssassin::Plugin::AutoLearnThreshold
loadplugin Mail::SpamAssassin::Plugin::TextCat
loadplugin Mail::SpamAssassin::Plugin::WhiteListSubject
loadplugin Mail::SpamAssassin::Plugin::MIMEHeader
loadplugin Mail::SpamAssassin::Plugin::ReplaceTags
loadplugin Mail::SpamAssassin::Plugin::DKIM
loadplugin Mail::SpamAssassin::Plugin::Check
loadplugin Mail::SpamAssassin::Plugin::HTTPSMismatch
loadplugin Mail::SpamAssassin::Plugin::URIDetail
loadplugin Mail::SpamAssassin::Plugin::Bayes
loadplugin Mail::SpamAssassin::Plugin::BodyEval
loadplugin Mail::SpamAssassin::Plugin::DNSEval
loadplugin Mail::SpamAssassin::Plugin::HTMLEval
loadplugin Mail::SpamAssassin::Plugin::HeaderEval
loadplugin Mail::SpamAssassin::Plugin::MIMEEval
loadplugin Mail::SpamAssassin::Plugin::RelayEval
loadplugin Mail::SpamAssassin::Plugin::URIEval
loadplugin Mail::SpamAssassin::Plugin::WLBLEval
loadplugin Mail::SpamAssassin::Plugin::VBounce
loadplugin Mail::SpamAssassin::Plugin::ImageInfo
loadplugin Mail::SpamAssassin::Plugin::FreeMail

 

– Habiendo configurado Spamassassin, procedemos a iniciar el servicio pero debemos tener presente que el argumento de spamassassin «-L», indica que solo utilizará los plug-ins para realizar chequeos locales, no de red. Por lo que si deseamos utilizar estos plug-ins debemos quitar esta opción del inicio. Según el sistema operativo estos argumentos de inicio pueden encontrarse en:
Suse: /etc/sysconfig/spamd
Debian: /etc/default/spamd
o simplemete editamos el archivo de inicio y verificamos que no tenga esta opción al inicio: /etc/init.d/spamd

 

3.1 Probando Spamassassin

– Para probar nuestra instalación de spamassassin antes de comenzar a utilizar el mismo, podemos ejectuar el comando:
spamassassin -–lint –D
el cual nos mostrará que plugins son cargados al inicio de Spamassasin.
– Para probar spamassassin en acción primero nos pasamos al usuario que ejecutará Spamassassin en acción (si no creamos uno lo podemos agregar ahora ejecutando useradd spamd -m): sudo su spamd. Luego, copiamos un correo que deseemos probar y ejecutamos lo siguiente:
cat correo.eml | spamassassin –D | less
Esto nos mostrará a los plug-in en acción, y nos indicará que puntaje recibe este correo con la configuración actual.

 

4.1 Integrando Spamassassin a Postfix

Editamos el archivo de configuración de Postfix «/etc/postfix/master.cf», y modificamos la línea
smtp inet n – n – – smtpd

por la siguiente:

smtp inet n – n – – smtpd
-o content_filter=spamassassin

y agregamos al final de archivo:

spamassassin unix – n n – – pipe
flags=R user=spamd argv=/usr/bin/spamc -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}

Como verán se indica el usuario que ejecutará Spamassassin. Es importante realizar las pruebas de los plug-ins que instalemos usando este usuario y no root. Finalizado esto, reiniciamos Postfix y verificamos los logs de Postfix donde podremos ver el procesamiento de los correos por parte de Spamassassin, el puntaje, y las reglas que matcheó el correo analizado.

 

En próximas publicaciones hablaremos de la base Bayesiana y como instalarla utilizando MySQL y armando un Cluster MySQL con otro servidor de correo, para el auto entrenamiento de la base. También veremos como instalar DCC, Razor2, y recomendaremos plug-ins adicionales para Spamassassin los cuales puedes encontrar en el siguiente link:
http://wiki.apache.org/spamassassin/CustomPlugins

 
Home Linux OS Spamassassin Anti-Spam Spamassassin