Cómo instalar SpamAssassin con Postfix en CentOS

LinuxSpamAssassin

Vamos a ver cómo instalar Spam Assassin en una distribución CentOS 6 o CentOS 7, ya sea en un servidor dedicado o en un VPS.

Spam Assassin es un programa bajo licencia Apache 2.0 utilizado para filtrar spam en nuestro correo entrante en base a una serie de reglas que definamos.

Si hemos instalado ZPanel, Plesk, CPanel o cualquier otro de los más conocidos, se nos instalará también un servidor de correo y alguna interfaz de webmail como Roundcube o Squirrel Mail, pero en caso de no haber instalador un panel, tendremos que instalar un servidor de correo antes de instalar Spam Assassin.

Actualizar CentOs

Antes de nada debemos asegurarnos de que nuestra distribución se encuentra plenamente actualizada ejecutando:

# yum -y update

Instalando SpamAssassin

Como siempre, utilizaremos el comando yum para instalar  SpamAssassin del repositorio:

# yum install spamassassin

Crear un nuevo grupo y usuario

Es un requisito del programa. Primero deberemos crear un grupo para el usuario que ejecutará el servicio smapassassin:

# groupadd spamfilter

Seguidamente creamos el usuario spamfilter con el directorio home /usr/local/spamassassin y luego lo añadimos al grupo spamfilter creado con el comando anterior.

# useradd -g spamfilter -s /bin/false -d /usr/local/spamassassin spamfilter
 # chown spamfilter: /usr/local/spamassassin

Configuración básica de SpamAssassin

Debemos editar el archivo de configuración localizado en /etc/mail/spamassassin/local.cf mediante el comando:

# vim /etc/mail/spamassassin/local.cf

Seguidamente editamos el archivo para que quede así:

## Required_hits: Determina el balance de filtrado, siendo los valores más bajos los que más agresivos para el filtrado de spam. 
# Un valor de 5.0 es generalmente el más efectivo para pequeñas y medianas empresas o usos personales.
#Dependiendo del tipo de empresa y el tipo de spam que recibáis, deberéis ajustar este valor hasta que sea adecuado.
#Puede llegar a ser incluso de 8.0 en caso de empresas médicas.
required_hits 5
## Report_safe: Esta línea determina si el elemento clasificado como spam se eliminará o si se le agregará una etiqueta de SPAM al sujeto del email.
#Un valor de 1 eliminará el email y un valor de 0 lo enviará a la bandeja de entrada con la etiqueta de SPAM [recomendado]
report_safe 0
rewrite_header Subject [**SPAM**]
## Required_score: Esta opción clasifica la puntuación de spam de todos los emails que llegan al servidor. con niveles de entre 0 y 5.
#El valor 0 será un email legítimo mientras que 5 será sin duda en correo de SPAM. 
#Si ponemos un valor de 3 detectaremos bastantes emails de spam pero también recibiremos algunos falsos positivos.
#Aquí pondremos un valor de 5, pero recordad cambiarlo de acuerdo con vuestras preferencias.
required_score 5.0

Tras guardar el archivo y antes de iniciar el servicio spamassassin, necesitamos asegurarnos de que utiliza nuestro usuario spamfilter editando el archivo /etc/sysconfig/spamassassin.

# vim /etc/sysconfig/spamassassin

Debería contener:

# Options to spamd
 SAHOME="/usr/local/spamassassin" SPID_DIR="/var/run/spamassassin" SUSER="spamfilter" SPAMDOPTIONS="-d -c -m5 --username ${SUSER} -H ${SAHOME} -s ${SAHOME}/spamfilter.log"

Finamente, guardamos el archivo y activamos el servicio spamassassin tanto ahora como en nuestro inicio del sistema ejecutando:

# service spamassassin start
# chkconfig spamassassin on

Configurando PostFix

La siguuente tarea será integrar SpamAssassin con postfix para que podamos escanear y clasificar los emails entrantes como SPAM. Editamos el archivo de configuración de postfix:

# vim /etc/postfix/master.cf

Agregamos o editamos las siguientes líneas tal que así:

smtp inet n - n - - smtpd -o content_filter=spamassassin
spamassassin unix - n n - - pipe user=spamfilter argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}

Por último, reiniciamos el servicio postfix para aplicar la configuración anterior:

# service postfix restart

Probando la configuración

Para probar que SpamAssassin está funcionando sencillamente enviamos un email con el asunto XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X a una de las las direcciones de email que hayamos creado. Una vez recibido, comprobamos las cabeceras y para que SpamAssassin esté realizando bien su trabajo, debería mostrarse:

X-Spam-Flag: YES
 X-Spam-Level: **************************************************
 X-Spam-Status: Yes, score=1000.0 required=5.0 tests=GTUBE,RCVD_IN_DNSWL_NONE,
 TVD_SPACE_RATIO autolearn=no version=3.3.1
 ....

Y esto es todo. Espero que esta pequeña guía os haya sido útil.


Avatar de Edu Lazaro

Edu Lázaro: Ingeniero técnico en informática, actualmente trabajo como desarrollador web y programador de videojuegos.

👋 Hola! Soy Edu, me encanta crear cosas y he redactado esta guía. Si te ha resultado útil, el mayor favor que me podrías hacer es el de compatirla en Twitter 😊

Si quieres conocer mis proyectos, sígueme en Twitter.

4 comentarios en “Cómo instalar SpamAssassin con Postfix en CentOS

  1. Hola neeonez, muchas gracias por tu tutorial. He seguido todos los pasos sin problema (he tenido que añadir manualmente las líneas en /etc/sysconfig/spamassassin y en /etc/postfix/master.cf y tras reiniciar los servicios y hacer la prueba de la configuración, no me marca X-Spam-Flag en el correo que he recibido (enviado desde cuenta GApps).

    ¿Qué puedo estar haciendo mal? ¿Cómo puedo hacer otra prueba?

    Gracias por tu ayuda una vez más.

  2. Hola BalBino, perdón por la tardanza.

    ¿Qué es lo que te aparece en la cabecera del email? ¿No aparece nada o aparece el X-Spam-Flag como negativo? ¿Estás utilizando algún panel de Hosting? En este último caso el archivo master.cf podría estar en otro lado, aunque el archivo de /etc/postfix/master.cf debería ser un symlink al verdadero y además, ete archivo podría variar dependiendo del panel. En ocasiones solamente has de añadir: smtp inet n – n – – smtpd

Responder a BalBino Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

“- Hey, Doc. No tenemos suficiente carretera para ir a 140/h km. - ¿Carretera? A donde vamos, no necesitaremos carreteras.”