GNU/Linux >> Tutoriales Linux >  >> Debian

Cómo instalar Spamassassin con Postfix y Dovecot en Ubuntu/Debian Server

Correo electrónico sin spam con SpamAssassin

Si está ejecutando su propio buzón de correo en un servidor que utiliza Postfix y Dovecot, entonces es imperativo instalar un software antispam para proteger su buzón de correo de ser bombardeado con correos no deseados entrantes.

Y para esto, SpamAssassin es una de las mejores soluciones disponibles. Es bastante efectivo y uno de los más populares.

En esta publicación, veremos cómo configurar spamassassin con postfix y dovecot para la protección contra correo no deseado.

Suponemos que ya ha configurado Postfix y Dovecot en su servidor para manejar los correos entrantes.

Y que está utilizando Dovecot LMTP para entregar correos electrónicos para cuentas de usuario. El proceso se había descrito en una publicación anterior aquí -

Configure un servidor de correo con Postfix y Dovecot en Ubuntu / Debian

Spamassassin analiza los correos electrónicos entrantes para identificar el spam y, si se descubre que un correo es potencialmente spam, Spamassassin agrega encabezados a ese correo electrónico para marcarlo como spam.

La verificación de spam ocurre en el nivel de Postfix. Postfix está configurado para comunicarse con Spamassassin como un filtro de contenido.

En el siguiente paso, Dovecot analiza estos encabezados para identificar los mensajes de spam y los coloca en una carpeta de Spam separada, al igual que Gmail.

1. Instalar Spamassassin

Lo primero sería instalar los paquetes de spamassassin.

$ apt-get install spamassassin spamc

2. Configure una cuenta de usuario y un grupo para el servicio spamd

# groupadd spamd
# useradd -g spamd -s /bin/false -d /var/log/spamassassin spamd
# mkdir /var/log/spamassassin
# chown spamd:spamd /var/log/spamassassin

3. Configurar Spamassassin

Edite /etc/default/spamassassin para configurar estas opciones:

# Change to one to enable spamd
ENABLED=1

SAHOME="/var/log/spamassassin/"

# Options
# See man spamd for possible options. The -d option is automatically added.

# SpamAssassin uses a preforking model, so be careful! You need to
# make sure --max-children is not set to anything higher than 5,
# unless you know what you're doing.

OPTIONS="--create-prefs --max-children 5 --helper-home-dir --username spamd \
-H ${SAHOME} -s ${SAHOME}spamd.log"

También busque la opción llamada CRON en la parte inferior y cámbiela a 1. Esto habilitará la actualización automática de las reglas de spamassassin a medida que se publiquen.

# Cronjob
# Set to anything but 0 to enable the cron job to automatically update
# spamassassin's rules on a nightly basis
CRON=1

4. Inicie el demonio Spamassassin (spamd)

# service spamassassin start
Starting SpamAssassin Mail Filter Daemon: spamd.
[email protected]:/etc/default#
[email protected]:/etc/default# service spamassassin status
 * spamd is running
[email protected]:/etc/default#

Spamassassin inicia un servicio en segundo plano, así que use el comando netstat para asegurarse de que spamassassin esté funcionando bien o no.

# netstat -nlp4 | grep spam
tcp        0      0 127.0.0.1:783           0.0.0.0:*               LISTEN      1123/spamd.pid

4. Configurar Postfix para usar Spamassassin como filtro

Postfix debe configurarse para usar el servicio spamassassin para filtrar todos los correos entrantes
El archivo de configuración de postfix master.cf debe editarse para agregar el filtro spamassassin. Abre el archivo.

# cat /etc/postfix/master.cf

Agregue lo siguiente al final del archivo

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

Después de agregar las líneas anteriores a master.cf, la siguiente tarea es reiniciar Postfix y asegurarse de que funciona bien.

$ service postfix restart

5. Configurar Spamassassin para marcar mensajes de spam

Después de configurar Postfix para usar Spamassassin, es hora de configurar Spamassassin para modificar los correos electrónicos de acuerdo con las comprobaciones de spam. El archivo de configuración es - /etc/spamassassin/local.cf

$ nano /etc/spamassassin/local.cf

Quite el comentario de la línea rewrite_header para modificar las líneas de asunto de los correos electrónicos identificados como spam.

#   Add *****SPAM***** to the Subject header of spam e-mails
#
# rewrite_header Subject *****SPAM*****
rewrite_header Subject [***** SPAM _SCORE_ *****]

La línea anterior agregaría la puntuación de Spam con las marcas de asterisco para indicar que el mensaje parece spam. Las puntuaciones más altas indicarían una mayor probabilidad de que el mensaje sea spam.

Puntuación de spam

La puntuación mínima necesaria para marcar el mensaje como spam. El valor predeterminado es 5.0, pero ahora es posible que necesite un nivel de puntuación más estricto. Así que 4.0 funciona bien.

#   Set the threshold at which a message is considered spam (default: 5.0)
#
required_score 4.0

Consulte las otras opciones en el archivo y edítelas según sea necesario.

Reiniciar Spamassassin - Después de configurar todos los parámetros en el archivo, guarde el archivo y reinicie spamassassin.

# service spamassassin restart
Restarting SpamAssassin Mail Filter Daemon: spamd.

6. Comprobar el registro de Spamassassin

Si en algún momento necesita depurar algo o ver lo que sucede en el fondo de spamassassin, siéntase libre de revisar su archivo de búsqueda.

# tail -f /var/log/spamassassin/spamd.log
Fri Feb  5 20:11:43 2016 [1123] info: prefork: child states: II
Fri Feb  5 20:23:02 2016 [1123] info: spamd: server killed by SIGTERM, shutting down
Fri Feb  5 20:23:02 2016 [1404] info: logger: removing stderr method
Fri Feb  5 20:23:03 2016 [1406] info: zoom: able to use 360/360 'body_0' compiled rules (100%)
Fri Feb  5 20:23:03 2016 [1406] info: spamd: server started on IO::Socket::INET6 [127.0.0.1]:783, IO::Socket::INET6 [::1]:783 (running version 3.4.0)
Fri Feb  5 20:23:03 2016 [1406] info: spamd: server pid: 1406
Fri Feb  5 20:23:03 2016 [1406] info: spamd: server successfully spawned child process, pid 1407
Fri Feb  5 20:23:03 2016 [1406] info: spamd: server successfully spawned child process, pid 1408
Fri Feb  5 20:23:03 2016 [1406] info: prefork: child states: IS
Fri Feb  5 20:23:03 2016 [1406] info: prefork: child states: II

7. Probar un correo no deseado

Envíe un correo electrónico a su sistema de correo desde fuera del sitio. Incluya el siguiente fragmento de texto en el cuerpo del correo electrónico

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Se llama GTUBE - Prueba genérica para correo electrónico masivo no solicitado. Es una forma sencilla de probar si su servidor de correo está usando spamassassin para filtrar correos o no.

Obtenga más información aquí -
http://spamassassin.apache.org/gtube/

SpamAssassin agrega encabezados a todos los correos electrónicos con puntajes de spam> 0

Correo con puntuación de spam 12,9 Esto se considera spam según nuestra configuración de puntuación mínima de 3

X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on localhost
X-Spam-Flag: YES
X-Spam-Level: ************
X-Spam-Status: Yes, score=12.9 required=3.0 tests=FROM_LOCAL_NOVOWEL,
	HTML_FONT_LOW_CONTRAST,HTML_FONT_SIZE_LARGE,HTML_MESSAGE,HTML_OBFUSCATE_05_10,
	MIME_HTML_ONLY,MISSING_MID,RCVD_IN_BL_SPAMCOP_NET,RCVD_IN_BRBL_LASTEXT,
	RCVD_IN_PBL,RCVD_IN_PSBL,RCVD_IN_XBL,RDNS_NONE autolearn=no
	autolearn_force=no version=3.4.0

Spam Score 1.7, No se considera spam

X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on localhost
X-Spam-Level: *
X-Spam-Status: No, score=1.7 required=3.0 tests=DEAR_SOMETHING,FREEMAIL_FROM,
	HTML_MESSAGE,RCVD_IN_MSPIKE_H2,URIBL_BLOCKED autolearn=no autolearn_force=no
	version=3.4.0

Estos encabezados se utilizarán para enviar correos electrónicos a una carpeta de correo no deseado separada a través del transporte Dovecot LMTP.

Configurar Dovecot con una carpeta de Spam separada

Dovecot es el sistema de lectura y gestión de correo, servidor POP3 e IMAP. Es Dovecot que organiza los correos en carpetas separadas según los criterios.

Dovecot se puede configurar para leer encabezados de correo y mover correos no deseados a una carpeta separada llamada Spam. Muy parecido a lo que ves con los servicios de correo gratuitos como Gmail y Outlook.

Instalar y configurar el complemento Sieve

Dovecot necesita el complemento de intérprete de Sieve para usar Sieve para leer correos. Instale los paquetes Sieve

# apt-get install dovecot-sieve dovecot-managesieved

Editar
/etc/dovecot/conf.d/20-lmtp.conf

Configure dovecot para habilitar el complemento de tamiz

protocol lmtp {
  # Space separated list of plugins to load (default is global mail_plugins).
  mail_plugins = $mail_plugins sieve
}

Finalmente es hora de reiniciar dovecot

# service dovecot restart

Ahora verifique si el servidor tamiz se está ejecutando en el puerto 4190. Use el comando netstat. El servicio se denominará palomar.

# netstat -nltp | grep 4190
tcp        0      0 0.0.0.0:4190            0.0.0.0:*               LISTEN      9843/dovecot
tcp6       0      0 :::4190                 :::*                    LISTEN      9843/dovecot

Configurar filtrado de tamiz

Para obtener más información sobre los filtros de tamiz, consulte la siguiente página:http://wiki2.dovecot.org/Pigeonhole/Sieve/Examples

# mkdir /var/lib/dovecot/sieve/

Cree un archivo llamado default.sieve y llénelo con los siguientes conjuntos de reglas

require ["fileinto", "mailbox"];

if header :contains "X-Spam-Flag" "YES" {
        fileinto :create "Spam";
}

Ahora compila el archivo de script .sieve usando el comando sievec.

# sievec default.sieve

Si tiene varios archivos .sieve en el directorio, puede compilarlos todos de una vez así:

# sievec sieve/

Ahora cambie la propiedad de los archivos de tamiz al usuario específico de Dovecot para que Dovecot pueda leerlos. En este caso el nombre de usuario es vmail.

/var/lib/dovecot# chown -R vmail:vmail sieve/*

Reinicie Dovecot de nuevo.

# service dovecot restart

Comprobar registros de palomar

Los archivos de registro de Dovecot lo ayudarán a diagnosticar cualquier problema que pueda surgir en el camino.

Encuentre la ubicación de los archivos de registro de dovecot con el siguiente comando

# doveadm  log find
Debug: /var/log/dovecot.log
Info: /var/log/dovecot.log
Warning: /var/log/dovecot.log
Error: /var/log/dovecot.log
Fatal: /var/log/dovecot.log

Luego abra el archivo usando el comando tail

# tail -f /var/log/dovecot.log
Feb 06 11:17:16 imap-login: Info: Login: user=<[email protected]>, method=PLAIN, rip=122.163.23.27, lip=173.255.230.5, mpid=10370, TLS, session=<RfgSgBMr1QB6oxcb>
Feb 06 11:17:37 lmtp(10379): Info: Connect from local
Feb 06 11:17:37 lmtp(10379, [email protected]): Error: uMMvHPmItVaLKAAA0J78UA: sieve: main script: failed to stat sieve script: stat(/var/lib/dovecot/sieve/default.sieve) failed: Permission denied (euid=5000(vmail) egid=5000(vmail) missing +x perm: /var/lib/dovecot, dir owned by 0:0 mode=0750)
Feb 06 11:17:37 lmtp(10379, [email protected]): Error: uMMvHPmItVaLKAAA0J78UA: sieve: failed to access default user script /var/lib/dovecot/sieve/default.sieve
Feb 06 11:17:37 lmtp(10379, [email protected]): Info: uMMvHPmItVaLKAAA0J78UA: msgid=<[email protected]>: saved mail to INBOX
Feb 06 11:17:37 lmtp(10379): Info: Disconnect from local: Successful quit
Feb 06 11:18:31 lmtp(10379): Info: Connect from local
Feb 06 11:18:31 lmtp(10379, [email protected]): Error: vMMvHPmItVaLKAAA0J78UA: sieve: msgid=<[email protected]>: failed to store into mailbox 'Spam': Mailbox doesn't exist: Spam
Feb 06 11:18:31 lmtp(10379, [email protected]): Info: vMMvHPmItVaLKAAA0J78UA: sieve: msgid=<[email protected]>: stored mail into mailbox 'INBOX'
Feb 06 11:18:31 lmtp(10379, [email protected]): Error: vMMvHPmItVaLKAAA0J78UA: sieve: execution of script /var/lib/dovecot/sieve/default.sieve;name=main script failed, but implicit keep was successful
Feb 06 11:18:31 lmtp(10379): Info: Disconnect from local: Successful quit
Feb 06 11:26:27 lmtp(10479): Info: Connect from local
Feb 06 11:26:27 lmtp(10479, [email protected]): Info: 3h4eBwuLtVbvKAAA0J78UA: sieve: msgid=<[email protected]>: stored mail into mailbox 'Spam'
Feb 06 11:26:27 lmtp(10479): Info: Disconnect from local: Successful quit
Feb 06 11:26:57 imap-login: Info: Login: user=<[email protected]>, method=PLAIN, rip=122.163.23.27, lip=173.255.230.5, mpid=10483, TLS, session=<OreuohMrXgB6oxcb>
Feb 06 11:26:58 imap-login: Info: Login: user=<[email protected]>, method=PLAIN, rip=122.163.23.27, lip=173.255.230.5, mpid=10484, TLS, session=<xr6+ohMrXwB6oxcb>
Feb 06 11:28:30 imap-login: Info: Login: user=<[email protected]>, method=PLAIN, rip=122.163.23.27, lip=173.255.230.5, mpid=10499, TLS, session=<n7Q2qBMrCwB6oxcb>

Cambiar los permisos del directorio dovecot

/var/lib/dovecot# chmod a+x .

Mejora el filtrado de spam de Spamassassin con Pyzor

Pyzor actuará como otras reglas.
https://wiki.apache.org/spamassassin/Rules/PYZOR_CHECK

Agregará una puntuación adicional de spam de aproximadamente 1,985 según la tabla de pruebas que se encuentra en:http://spamassassin.apache.org/tests_3_3_x.html

# sudo apt-get install pyzor

Descubre los servidores Pyzor

# pyzor --homedir /etc/mail/spamassassin/pyzor discover

Hacer que el archivo de los servidores sea legible para todos

/etc/spamassassin/pyzor# chmod a+r servers

Ejecutar una comprobación -

# echo "test" | spamassassin -D pyzor 2>&1 | less

Deberías ver un resultado como este

Feb  9 16:24:58.824 [23979] dbg: pyzor: network tests on, attempting Pyzor
Feb  9 16:24:59.787 [23979] dbg: pyzor: pyzor is available: /usr/bin/pyzor
Feb  9 16:24:59.788 [23979] dbg: pyzor: opening pipe: /usr/bin/pyzor check < /tmp/.spamassassin23979z26KDDtmp
Feb  9 16:24:59.841 [23979] dbg: pyzor: [23981] finished: exit 1
Feb  9 16:24:59.842 [23979] dbg: pyzor: check failed: no response

Agregue las siguientes líneas al final de /etc/spamassassin/local.cf

pyzor_options --homedir /etc/mail/spamassassin/pyzor

Y reinicie el demonio spamassassin

# service spamassassin restart

Instalar Razor

sudo apt-get install razor
/etc/spamassassin# mkdir razor

Ahora ejecute los siguientes comandos para registrarse en la red distribuida de razor.

# razor-admin -home=/etc/spamassassin/razor -register
Register successful.  Identity stored in /etc/mail/spamassassin/razor/identity-rudkVFCIxs
# razor-admin -home=/etc/spamassassin/razor -create
# razor-admin -home=/etc/spamassassin/razor -discover

Agregue la siguiente línea al final del archivo /etc/spamassassin/local.cf

razor_config /etc/spamassassin/razor/razor-agent.conf

Finalmente reinicie spamassassin

verifique que la maquinilla de afeitar funcione con este comando

# echo "test" | spamassassin -D razor2 2>&1 | less

algo como esto debería aparecer

Feb  9 17:11:34.701 [26028] dbg: razor2: razor2 is available, version 2.84
 Razor-Log: read_file: 15 items read from /etc/mail/spamassassin/razor/razor-agent.conf

Puntuaciones personalizadas para puntuaciones más altas

Esta es una forma un poco avanzada de aumentar la precisión de spamassassin para capturar mejor el spam. Implica aumentar los niveles de puntuación para ciertas pruebas de spam dentro de spamassassin. Estas son las pruebas de spam que se sabe que tienen un nivel muy alto de precisión en la detección de spam.

Entonces, si algunas de estas pruebas de alta precisión indican que un correo es spam, deberíamos centrarnos más en él.

http://toao.net/566-mejorando-spamassassin-accuracy-with-statistics

Conclusión

Ese fue el proceso para configurar SpamAssassin en su servidor de correo para detectar correos no deseados y mantener limpio su buzón.
El proceso es un poco largo pero funciona muy bien si necesita su propio servidor de correo con un sistema antispam.

Si tiene algún comentario o pregunta, háganoslo saber en los comentarios a continuación.

Referencias y recursos

Configuración sencilla de Spamassassin con Postfix y Dovecot en Ubuntu Breezy
http://www.townx.org/index.php?q=blog/elliot/simple_spamassassin_setup_with_postfix_and_dovecot_on_ubuntu_breezy

Cómo instalar y configurar Spamassassin en Ubuntu 12.04
https://www.digitalocean.com/community/tutorials/how-to-install-and-setup-spamassassin-on-ubuntu-12-04

Instrucciones para instalar Pyzor y Razor con Spamassassin
https://kura.io/2011/09/22/spamassassin-razor-pyzor/

Configuración del filtrado Sieve con Dovecot
https://easyengine.io/tutorials/mail/server/sieve-filtering/

Consejos de Spamassassin:Guía de configuración definitiva
http://www.spamtips.org/p/ultimate-setup-guide.html

Cómo mejorar la precisión de SpamAssassin
https://wiki.apache.org/spamassassin/ImproveAccuracy

Sobre los efectos de reducir su umbral de SpamAssassin
http://taint.org/2008/02/29/155648a.html

Mejorando la precisión de SpamAssassin en los servidores de correo de cPanel (o cualquier otro) - con estadísticas
http://toao.net/566-improving-spamassassin-accuracy-with-statistics

Esta publicación describe trucos simples que puede usar para cambiar los niveles de puntaje para algunas de las pruebas de spamassassin, mejorando así el filtrado de correo no deseado.

Consejos avanzados para usar SpamAssassin
https://www.andrewferrier.com/oldpages/spamassassin_tips.html


Debian
  1. Cómo instalar el servidor FTP vsftpd y asegurarlo con TLS en Debian 11

  2. Cómo instalar Puppet 6.x en Ubuntu 18.04 / Ubuntu 16.04 y Debian 9

  3. Cómo instalar y configurar Gerbera Media Server en Ubuntu / Debian

  4. Instale el servidor de correo Postfix y Dovecot en Ubuntu o Debian

  5. Cómo instalar el servidor SSH en Ubuntu/Debian con OpenSSH

Cómo instalar y configurar el servidor web Apache con host virtual en Debian 10

Cómo instalar el servidor Tomcat 7 en Ubuntu, Debian y LinuxMint

Cómo instalar SpamAssassin en Ubuntu/Debian

Cómo instalar Nginx con PHP-FPM en Debian 11

Cómo instalar Drupal con Apache en Debian y Ubuntu

Cómo instalar y habilitar el servidor SSH en Debian 10