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 / DebianSpamassassin 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-statisticsConclusió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