Instalar y configurar Spamassassin en servidores Centos y Red Hat

Introducción.

Acerca de SpamAssassin.

SpamAssassin es una implementación que utiliza un sistema de puntuación, basado sobre algoritmos de tipo genético, para identificar mensajes que pudieran ser sospechosos de ser correo masivo no solicitado, añadiendo cabeceras a los mensajes de modo que pueda ser filtrados por el cliente de correo electrónico o MUA (Mail User Agent).

URL: http://spamassassin.apache.org/

Acerca de Procmail.

Procmail es un programa que funciona como MDA (Mail Delivery Agent, o Agente de Entrega de Correo) que se utiliza para gestionar la entrega de correo local en el sistema. Ademñas de lo anterior, permite también realizar filtración automática del correo electrónico, pre-ordenamiento y otras tareas.

Procmail puede ser utilizad indistinta con Sendmail y Postfix.

URL: http://www.procmail.org

Equipamiento lógico necesario.

Instalación a través de yum.

Si dispone de un servidor con CentOS 4 o 5 o bien Red Hat™ Enterprise Linux 4 o 5, puede utilizar el siguiente mandato:

yum -y install spamassassin procmail

Si se utiliza Sendmail como servidor de correo electrónico, procmail ya debe estar instalado, pues es dependencia del paquete sendmail. Si se utiliza Postfix como servidor de correo electrónico, es necesario editar el fichero /etc/postfix/main.cf y añadir o descomentar mailbox_command = /usr/bin/procmail, o bien simplemente ejecutar los siguientes dos mandatos.

postconf -e 'mailbox_command = /usr/bin/procmail'
service postfix restart

Si se quiere instalar paquetes adicionales para incrementar las capacidades de filtrado de Spamassassin, se pude crear el fichero /etc/yum.repos.d/AL-Server.repo con el siguiente contenido:

[AL-Server]
name=AL Server para Enterprise Linux $releasever
mirrorlist=http://www.alcancelibre.org/al/el$releasever/al-server
gpgcheck=1
gpgkey=http://www.alcancelibre.org/al/AL-RPM-KEY

Hecho lo anterior, será posible instalar los paquetes perl-Mail-SPF, perl-Razor-Agent y pyzor:

yum -y install perl-Mail-SPF perl-Razor-Agent pyzor

Procedimientos.

SELinux y el servicio spamasssassin.

Crear nueva política para permitir adjuntar contenido a bitácora de Razor.

A fin de que SELinux permita a spamassassin añadir registros a la bitácora del servicio de Razor, es necesario generar una nueva política.

Genere un nuevo directorio denominado /usr/share/selinux/packages/spamd:

mkdir /usr/share/selinux/packages/spamd

Cambiarse al directorio /usr/share/selinux/packages/spamd:

cd /usr/share/selinux/packages/spamd

Crear el fichero spamd.te:

vim spamd.te

Añadir el siguiente contenido:

module spamd 1.0;

require {
        type spamd_t;
        type root_t;
        class lnk_file read;
        class file { ioctl append };
}

#============= spamd_t ==============
allow spamd_t root_t:file { ioctl append };

Lo anterior fue obtenido de la salida del mandato dmesg|grep audit|audit2allow -m spamd>spamd.te en un sistema donde SELinux impedía a spamassassin realizar escritura sobre la bitácora de Razor. En si, define que se permita añadir contenido al fichero /razor-agent.log.

A continuación, se genera un el fichero de módulo para SELinux (spamd.mod) utilizando el mandato checkmodule de la siguiente forma:

checkmodule -M -m -o spamd.mod spamd.te

Luego, se procede a empaquetar el fichero spamd.mod como el fichero spamd.pp:

semodule_package -o spamd.pp -m spamd.mod

Finalmente se vincula el fichero spamd.pp obtenido con las políticas actuales de SELinux y se cargan éstas en el núcleo en ejecución:

semodule -i /usr/share/selinux/packages/spamd/spamd.pp

Una vez cargadas las nuevas políticas, se pueden eliminar los ficheros spamd.te y spamd.mod, pues solo será necesario que exista el fichero binario spamd.pp.

Políticas de SElinux.

A fin de que SELinux permita al servicio spamassassin conectarse a servicios externos, como Razor o Pyzor, utilice el siguiente mandado:

setsebool -P spamassassin_can_network 1

A fin de que SELinux permita a los usuarios del sistema utilizar spamassassin desde sus directorios de inicio, utilice el siguiente mandato:

setsebol -P spamd_enable_home_dirs 1

Si se desea desactivar toda gestión de SELinux sobre el servicio spamassassin, haciendo que todo lo anterior pierda sentido y eliminando la protección que brinda esta implementación, utilice el siguiente mandato:

setsebol -P spamd_disable_trans 1

Iniciar el servicio y añadirlo a los servicios de arranque del sistema.

chkconfig spamassassin on
service spamassassin restart

Cabe señalar, que solo es necesario utilizar el servicio spamassassin si el servidor de correo electrónico dispone de una gran cantidad de usuarios, o bien tiene una elevada cantidad de tráfico. Si se dispone de pocos usuarios, es posible utilizar el mandato spamassassin a través del fichero /etc/procmailrc o bien ~/.procmailrc.

Configuración de Procmail.

Hay tres formas de utilizar Procmail para hacer uso de Spamassassin.

Utilizando el mandato spamassassin.

La forma más simple de utilizar Spamassassin es haciendo uso del mandato spamassassin. Funciona bien solo si se tienen pocos usuarios, pues genera una instancia de éste cada vez que se utiliza o llega un mensaje de correo electrónico al sistema. La siguiente es la configuración recomendada para el fichero /etc/procmail, sí se desea que aplique a todos los usuarios del sistema, o bien el fichero ~/.procmailrc del directorio de inicio de un usuario en particular, sí solo se desea que sea utilizado por algunos usuarios:

:0fw
| /usr/bin/spamassassin

Sí se dispone de muchos usuarios, es más conveniente utilizar el mandato spamc, mismo que requiere esté funcionado el servicio spamassassin. La siguiente es la configuración recomendada para el fichero /etc/procmail, sí se desea que aplique a todos los usuarios del sistema, o bien el fichero ~/.procmailrc del directorio de inicio de un usuario en particular, sí solo se desea que sea utilizado por algunos usuarios:

:0fw
| /usr/bin/spamc

Todo lo anterior hace que el correo electrónico sea examinado y marcado como Spam si alcanza una cantidad suficiente de puntos. Si se desea realizar un filtrado enviando el correo calificado como Spam hacia una capeta de correo (~/mail/Spam), se puede utilizar lo siguiente:

:0fw
| /usr/bin/spamc

# Los mensajes marcados como spam se almacenan en carpeta de spam
:0:
* ^X-Spam-Status: Yes
$HOME/mail/Spam

Configuración del fichero /etc/mail/spamassassin/local.cf.

Se pueden configurar y añadir parámetros con valores en el fichero /etc/mail/spamassassin/local.cf, donde, entre muchos otros, se pueden establecer los siguientes:

required_hits 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, acepta decimales y se puede ajustar con un valor inferior o mayor de acuerdo al criterio del administrador. Ejemplo: 4.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:
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. Se pueden definir varias líneas. Ejemplo:

whitelist_from *@midominio.algo
whitelist_from *@alcancelibre.org
whitelist_from 201.161.1.226

whitelist_to Si utiliza una lista de correo electrónico (majordomo o mailman), y se desea evitar que accidentalmente se considere Spam un mensaje de correo electrónico emitido por una de estas listas, se puede definir que nunca se considere Spam el correo emitido por dicha lista. Ejemplo: whitelist_to mailman-users@algo.algo
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. Ejemplo: blacklist_from alguien@spammer.com
ok_languages Permite definir los códigos de los países cuyos lenguajes no serán considerados Spam. En el ejemplo a continuación, se establece que los idiomas español y portugués no se considerará como Spam:

ok_languages pt es

Hay una herramienta de configuración de SpamAssassin, que permite generar el fichero /etc/mail/spamassassin/local.cf, en http://www.yrex.com/spam/spamconfig.php.

De primera instancia, añada al fichero /etc/mail/spamassassin/local.cf sus direcciones IP locales con el parámetro whitelist_from. Ejemplo:

# These values can be overridden by editing ~/.spamassassin/user_prefs.cf
# (see spamassassin(1) for details)

# These should be safe assumptions and allow for simple visual sifting
# without risking lost emails.

required_hits 5
report_safe 0
rewrite_header Subject [SPAM]
whitelist_from 127.0.01
whitelist_from 192.168.1.91
whitelist_from 201.161.1.226

Sí se utiliza el mandato /usr/bin/spamassassin en el fichero /etc/procmail o ~/.procmailrc, los cambios surten efecto de inmediato. Sí se utiliza el mandato /usr/bin/spamc, para que surtan efecto los cambios se requiere reiniciar el servicio spamassassin:

service spamassassin restart

Consejos para sacarle mejor provecho a Spamassassin utilizando sa-learn.

Muchos administradores de servidores utilizan Spamassassin para filtrar los mensajes de correo electrónico que llegan a sus servidores. Si embargo, son muy pocos los que conocen y utilizan la herramienta sa-learn, incluida con Spamassassin, misma que sirve para entrenar y enseñar a identificar spam (o correo chatarra) al propio Spamassassin.

Esencialmente, el mandato sa-learn sirve para entrenar al componente clasificador Bayesiano de Spamassassin.

La forma que sugiero utilizarlo consiste en utilizar el cliente de correo electrónico y mover todos los mensajes que se consideren como spam a una carpeta destinada para tal finalidad, como por ejemplo ~/mail/Spam, y mover de la carpeta de spam todos aquellos mensajes que se consideran como legítimos a cualquier otra carpeta de correo o bien el buzón de entrada.

Acto seguido, se utiliza el mandato sa-learn, con las opciones –spam, para indicar que se trata de mensajes de spam, y la opción –mbox, para indica que se trata de un buzón de correo en formato mbox, lo cual permitirá examinar todos los mensajes contenidos en éste:

sa-learn --spam --mbox ~/mail/Spam

Para que los mensajes que se clasificaron incidentalmente como spam, y que fueron movidos a otra carpeta 8como por ejemplo ~/mail/Mensajes), o bien el buzón de entrada (/var/spool/mail/usuario), se utiliza el mandato sa-learn con las opciones –ham, para indicar que es correo legítimo y que se debe dejar de considerar éste como spam, y la opción –mbox, para indica que se trata de un buzón de correo en formato mbox, lo cual permitirá examinar todos los mensajes contenidos en éste:

sa-learn --ham --mbox ~/mail/Mensajes
sa-learn --ham --mbox /var/spool/mail/usuario

De este modo, y considerando que el fichero ~/.promailrc, lo cual solo aplicaría para el usuario utilizado, o bien /etc/procmailrc, sí se desea que aplique para todos los usuarios del servidor, contiene algo similar a lo siguiente:

MAILDIR=$HOME/mail
LOGFILE=$HOME/mail/log

# send mail through spamassassin
:0fw
| /usr/bin/spamassassin

#Mensjes marcados como spam, ponerlos en carpeta de spam
:0:
* ^X-Spam-Status: Yes
Spam

Se conseguirá que la mayoría los mensajes de spam similares a los que se movieron a la carpeta ~/mail/Spam, en adelante serán más fáciles de identificar y filtrar, y los mensajes que incidentalmente se clasificaron como spam, dejarán de ser clasificados como tales, o bien será más difícil que sean clasificados como spam.

Todo lo anterior puede ser utilizado como el usuario root, lo cual haría que los nuevos filtros creados al entrenar a Spamassassin apliquen para todos los usuarios, o bien como cualquier usuario, lo cual solo tendrían efecto para éste en particular.

Si alguien tiene interés en aprender más acerca del mandato sa-learn, puede hacerlo consultando desde una terminal de texto ejecutando man sa-learn.

Incrementando las capacidades de filtrado de Spamassasin.

A fin de enriquecer la capacidad de detección de spam de Spamassassin, pueden instalarse paquetes opcionales como perl-Mail-SPF, perl-Razor-Agent. Los tres brindan capacidades adicionales de filtración de spam, descritas más adelante, y pueden contribuir de manera significativa a reducir la cantidad de spam que de otro modo podría pasar por alto Spamassassin.

Para los todos los procedimientos descritos a continuación, se considera que en el servidor de correo electrónico se utiliza como sistema operativo CentOS 4 y 5 o Red Hat Enterprise Linux 4 y 5, se tienen instalados los paquetes procmail (requisito del paquete sendmail y opcional para el paquete postfix) y spamassassin y que se tiene configurado al menos lo siguiente en el fichero /etc/procmailrc:

# send mail through spamassassin
:0fw
| /usr/bin/spamc

# Los mensajes marcados como Spam se almacenan en carpeta ~/mail/Spam
:0:
* ^X-Spam-Status: Yes
$HOME/mail/Spam

Primeramente, y con la finalidad de actualizar el juego de reglas y filtros de Spamassassin, es conveniente utilizar el mandato sa-update de vez en cuando, a lo sumo una o dos veces al mes. Los juegos de reglas y filtros de Spamassassin realmente sufren pocos cambios a lo largo del año y se almacenan en un sub-directorio dentro de /var/lib/spamassassin/. Solo es necesario conservar el sub-directorio con la versión más reciente. El siguiente mandato realizará la consulta y actualización de reglas y filtros de Spamassassin y reiniciará el servicio solamente si se descargó una actualización:

/usr/bin/sa-update && /sbin/service spamassassin restart

Para instalar el conjunto de paquetes que enriquecerán las capacidades de filtrado de Spamassassin, considerando que tiene configurados los depósitos YUM para AL Server de Alcance Libre, ejecute lo siguiente:

yum -y install perl-Mail-SPF perl-Razor-Agent pyzor

Si se utilizan paquetes provenientes de otros depósitos YUM distintos a los de Alcance Libre, el complemento para Pyzor incluido dentro de Spamassassin requerirá además el paquete perl-Digest-SHA:

yum -y install perl-Digest-SHA

A fin de que Spamassassin pueda utilizar los complementos que hacen uso de estas implementaciones, es necesario reiniciar el servicio spamassassin:

/sbin/service spamassassin restart

Perl-Mail-SPF.

Perl-Mail-SPF Implementa una protección contra la falsificación de direcciones en el envío de correo electrónico conocida como SPF (Sender Policy Framework o Convenio de Remitentes). Funciona realizando consultas a los servidores DNS en busca del registro TXT para SPF que específica los servidores de correo electrónico autorizados para enviar correo electrónico para un dominio en particular.

Para que un dominio en particular, o bien el propio dominio, sea excluido de este tipo de filtración, requiere contar con un registro similar al siguiente:

dominio.com.	IN	TXT	"v=spf1 mx ptr ~all"

O bien:

dominio.com.	IN	TXT	"v=spf1 mx ptr -all"

Perl-Razor-Agent.

Perl-Razor-Agent es la implementación Perl de Razor, que es una red distribuida y colaborativa dedicada a la detección y filtración de spam. Consiste en un catalogo de propagación de spam que es actualizado constantemente. Se complementa de manera mutua con Pyzor.

Pyzor.

Pyzor es similar a Razor, y funciona de la misma forma como una red distribuida y colaborativa dedicada a la detección y filtración de spam. A diferencia de Perl-Razor-Agent, está escrito en Python. Se complementa de manera mutua con Razor.

Fuente

Dejar un comentario?

2 Comentarios.

  1. Gracias por este aporte, esta super. Termine con los SPAM y con el dolor de cabeza Cristo (CM)

  2. como mola el videogame me lo he pillado tirado en esta
    web

Deje un comentario


NOTA - Puede usar estosHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Translate »