Sondeo

Escritorios alternativos Linux

¿Cuál prefieres?

  •  Xfce
  •  LXDE
  •  Razor-qt
  •  Enlightenment 0.17

Resultados
Other polls | 4,682 voters | 2 comentarios
· Próximas fechas Curso Global de Servidores con CentOS 6.
· Taller de programación de Python.
· Curso de programación de PHP.
· Prueba ALDOS 1.4.6. Nuestro sistema operativo para escritorio.

Instalación, configuración y optimización de Spamassassin.

Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: http://www.alcancelibre.org/
Jabber ID: darkshram@jabber.org

Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 1999-2014 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector, hace mal uso de éstos.

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ás de lo anterior, permite también realizar filtración automática del correo electrónico, pre-ordenamiento y otras tareas.

Procmail puede ser utilizado indistintamente con Sendmail o bien Postfix.

URL: http://www.procmail.org

Equipamiento lógico necesario.

Instalación a través de yum.

Si dispone de un servidor con CentOS 5 o 6 o bien Red Hat™ Enterprise Linux 5 o 6, ejecute lo siguiente:

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 archivo /etc/postfix/main.cf y añadir o descomentar mailbox_command = /usr/bin/procmail o bien simplemente ejecute lo siguiente:

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 archivo /etc/yum.repos.d/AL-Server.repo. Si dispone de un servidor con CentOS 5 o 6 o bien Red Hat™ Enterprise Linux 5 o 6, puede utilizar el el almacén YUM de Alcance Libre para servidores en producción, descargando el archivo http://www.alcancelibre.org/al/server/AL-Server.repo dentro del directorio /etc/yum.repos.d/:

cd /etc/yum.repos.d/
wget -N http://www.alcancelibre.org/al/server/AL-Server.repo
cd

Este archivo, que se guarda como /etc/yum.repos.d/AL-Server.repo, debe tener 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, pyzor, spamassassin-FuzzyOcr, popler-utils y re2c:

yum -y install perl-Mail-SPF perl-Razor-Agent poppler-utils \
    pyzor re2c spamassassin-FuzzyOcr spamassassin-iXhash2

SELinux y el servicio spamasssassin.

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, ejecute lo siguiente:

setsebool -P spamd_enable_home_dirs 1
Nota.

Lo siguiente sólo aplica para CentOS 5 y Red Hat™ Enterprise Linux 5.

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, ejecute lo siguiente:

setsebool -P spamd_disable_trans 1

Esta política es inexistente en CentOS 6 y Red Hat™ Enterprise Linux 6.

Otros ajustes de SELinux.

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

Si se utiliza CentOS 6 o Red Hat Enterprise Linux 6, Descargar el archivo http://www.alcancelibre.org/linux/secrets/el6/spamd.te:

wget http://www.alcancelibre.org/linux/secrets/el6/spamd.te

Editar el archivo recién descargado:

vim spamd.te

Asegurarse que tenga el siguiente contenido:

module spamd 1.0;

require {
	type spamc_t;
	type admin_home_t;
	type sendmail_t;
        type spamd_t;
        type root_t;
        class lnk_file read;
	class fifo_file write;
        class file { ioctl read open getattr append };
}

#============= spamd_t ==============
allow spamd_t root_t:file { ioctl append };
allow spamd_t admin_home_t:file { read ioctl open getattr append };


#============= spamc_t ==============
allow spamc_t sendmail_t:fifo_file write;
allow spamc_t admin_home_t:file { read open };

Lo anterior fue obtenido de la salida de 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 archivo /razor-agent.log.

Si se utiliza CentOS 5 o Red Hat Enterprise Linux 5, Descargar el archivo http://www.alcancelibre.org/linux/secrets/el5/spamd.te:

wget http://www.alcancelibre.org/linux/secrets/el5/spamd.te

Editar el archivo recién descargado:

vim spamd.te

Asegurarse que tenga el siguiente contenido:

module spamd 1.0;

require {
	type spamc_t;
	type sendmail_t;
        type spamd_t;
        type root_t;
        class lnk_file read;
	class fifo_file write;
        class file { ioctl append };
}

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

#============= spamc_t ==============
allow spamc_t sendmail_t:fifo_file write;

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

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

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

semodule_package -o spamd.pp -m spamd.mod

Finalmente se vincula el archivo 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 archivos spamd.te y spamd.mod, pues sólo será necesario que exista el archivo binario spamd.pp.

Procedimientos.

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

chkconfig spamassassin on
service spamassassin restart

Cabe señalar, que sólo 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 ejecutar spamassassin a través del archivo /etc/procmailrc o bien ~/.procmailrc.

Configuración de Procmail.

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

Utilizando spamassassin.

La forma más simple de utilizar spamassassin es haciendo uso directamente de éste. Funciona bien sólo 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 archivo /etc/procmailrc, sí se desea que aplique a todos los usuarios del sistema o bien el archivo ~/.procmailrc del directorio de inicio de un usuario en particular, si sólo se desea que sea utilizado por algunos usuarios:

:0fw
| /usr/bin/spamassassin

Sí se dispone de muchos usuarios, es más conveniente utilizar spamc, mismo que requiere esté funcionado el servicio spamassassin. La siguiente es la configuración recomendada para el archivo /etc/procmailrc, sí se desea que aplique a todos los usuarios del sistema o bien el archivo ~/.procmailrc del directorio de inicio de un usuario en particular, si sólo 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 archivo /etc/mail/spamassassin/local.cf.

Edite el archivo /etc/mail/spamassassin/local.cf.

vim /etc/mail/spamassassin/local.cf

Se pueden modificar y añadir parámetros con valores, entre los cuales se pueden configurar 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: rewrite_header Subject [Spam?]

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

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

De primera instancia, añada al archivo /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.0.1
whitelist_from 192.168.1.91
whitelist_from 201.161.1.226

Sí se utiliza spamassassin en el archivo /etc/procmailrc o ~/.procmailrc, los cambios surten efecto de inmediato. Sí se utiliza 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, sa-learn sirve para entrenar al componente clasificador Bayesiano de Spamassassin.

La forma que sugiero 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 sa-learn con las opciones --dbpath con /var/lib/spamassassin como argumento para indicar el directorio de la base de datos de SpamAssassin, --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 --dbpath /var/lib/spamassassin --spam --mbox ~/mail/Spam

Para que los mensajes que se clasificaron incidentalmente como spam y que fueron movidos a otra carpeta (como por ejemplo ~/mail/Mensajes) o bien el buzón de entrada (/var/spool/mail/usuario), se utiliza sa-learn con las opciones --dbpath con /var/lib/spamassassin como argumento para indicar el directorio de la base de datos de SpamAssassin, --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 --dbpath /var/lib/spamassassin --ham --mbox ~/mail/Mensajes
sa-learn --dbpath /var/lib/spamassassin --ham --mbox /var/spool/mail/usuario

De este modo y considerando que se utiliza el archivo ~/.promailrc, lo cual sólo 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 sólo tendrían efecto para éste en particular.

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

Incrementando las capacidades de filtrado.

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 5 y 6 o bien Red Hat Enterprise Linux 5 y 6, 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 archivo /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 ejecutar 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/. Sólo es necesario conservar el sub-directorio con la versión más reciente. Ejecutar lo siguiente realizará la consulta y actualización de reglas y filtros de Spamassassin y reiniciará el servicio solamente si se descargó una actualización:

sa-update -v && service spamassassin restart

La opción -v hace que se muestre una salida que incluye una descripción de los canales actualizados. Si desea una salida limpia, sin mensajes descriptivos, ejecute lo siguiente:

sa-update && service spamassassin restart

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

yum -y install perl-Mail-SPF perl-Razor-Agent pyzor
yum -y install spamassassin-FuzzyOcr poppler-utils

Si se utilizan paquetes provenientes de otros almacenes 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 los complementos que se activan con estos componentes, es necesario reiniciar el servicio spamassassin:

service spamassassin restart

Optimizando Spamassassin.

Si se tiene un servidor de correo electrónico con mucha carga de trabajo, conviene optimizar spamasassassin compilando las reglas de éste para convertirlas a formato binario. Para tal fin es necesario que esté instalados los paquetes re2c y gcc:

yum -y install re2c gcc

Y enseguida se ejecuta sa-compile:

sa-compile

Si la sintaxis del archivo /etc/mail/spamassassin/local.cf está correcta, el sistema debe realizar la compilación y almacenar los binarios dentro de /var/lib/spamassassin/compiled/. Lo anterior deberá ser repetido cada vez que se realicen modificaciones del archivo /etc/mail/spamassassin/local.cf o bien se actualice el conjunto de reglas con sa-update.

¿Por qué Perl-Mail-SPF, Perl-Razor-Agent, Pyzor, Spamassassin-FuzzyOcr y poppler-utils?

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, lo cual establece que preferentemente se descartan como emisores de correo electrónico todos aquellos servidores que carezcan de registro tipo MX o tipo A:

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

O bien, si se quiere algo más estricto, donde se descartan por completo como emisores de correo electrónico todos aquellos servidores que carezcan de registro tipo MX o tipo A:

dominio.com.	IN	TXT	"v=spf1 a mx -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.

Spamassassin-FuzzyOcr.

Suele haber casos en los cuales se envían mensajes de spam que sólo incluyen una imagen incrustada en el mensaje, con el fin de evadir los filtros de los servidores de correo electrónico. FuzzyOcr es un complemento (plugin) para Spamassassin el cual está enfocado sobre este tipo de spam. Utiliza GOCR (GNU Optical Character Recognition o Reconocimiento Óptico de Caracteres de GNU) y otros métodos para analizar el contenido de las imágenes y poder distinguir entre correo ordinario y correo spam.

Spamassassin-iXhash2

Es una versión mejorada del obsoleto complemento de filtrado para Spamassassin conocido como iXhash. A diferencia de éste último, tiene capacidades de consultas a DNS tipo asincrónicas con el fin de mejorar el desempeño del servidor de correo y elimina algunas funciones innecesarias. Es completamente compatible con la implementación de iXhash 1.5.5. Al igual que DCC, Pyzor y Razor, realiza el cálculo de sumas MD5 de fragmentos del cuerpo de los mensajes de correo electrónico y los compara con aquellos que se sabe bien son spam, utilizando consultas de DNS hacia un servidor de nombres de dominio estilo RBL.

Poppler-utils.

Este conjunto de herramientas es utilizado por Spamassassin para gestionar los contenidos de los documentos en formato PDF, particularmente las herramientas como pdftops, pstopnm y pdfinfo. Es altamente recomendado instalarlo.

Última Edición: 08/07/2014, 12:03|Hits: 24,804 Ver la versión para imprimir