De un día para otro durante el fin de semana el servidor de correo de un cliente se convirtió en victima de un ataque de spam. Cuentas de correo empresariales que nunca habían recibido ni un solo correo spam amanecieron con las bandejas de entrada saturadas de puro spam.
Era momento de revisar la configuración antispam de spamassassin de la solución de correo postfix/amavisd y revisar cuales cambios podrían ser necesarios para poder bloquear y eliminar el spam desde el servidor de correo.
amavis ANTI-SPAM code NOT loaded
Después de un rato de estar viendo las bitácoras de postfix, me di cuenta que no había nada de SPAM detectado, por lo cual decidí reiniciar el amavisd y ver que estaba fallando.
root@mail:/etc/amavis/conf.d# tail -f /var/log/syslog |grep amavis BSMTP-out proto code NOT loaded Mar 4 12:43:49 mail amavis[28919]: Local-out proto code loaded Mar 4 12:43:49 mail amavis[28919]: OS_Fingerprint code NOT loaded Mar 4 12:43:49 mail amavis[28919]: ANTI-VIRUS code loaded Mar 4 12:43:49 mail amavis[28919]: ANTI-SPAM code NOT loaded Mar 4 12:43:49 mail amavis[28919]: ANTI-SPAM-EXT code NOT loaded Mar 4 12:43:49 mail amavis[28919]: ANTI-SPAM-C code NOT loaded Mar 4 12:43:49 mail amavis[28919]: ANTI-SPAM-SA code loaded Mar 4 12:43:49 mail amavis[28919]: Unpackers code loaded
Como podrán ver en el texto de la terminal de Linux anterior, el filtro ANTI-SPAM de amavisd no se esta cargando.
Como habilitar SpamAssassin con amavisd para Postfix
Para poder habilitar o cargar el modulo de SpamAssassin en amavisd es necesario editar el archivo:
vim /etc/amavis/conf.d/15-content_filter_mode
Donde al final podemos ver que las lineas para que amavisd pueda filtrar spam todavía están comentadas;
# # Default SPAM checking mode # Please note, that anti-spam checking is DISABLED by # default. # If You wish to enable it, please uncomment the following lines: #@bypass_spam_checks_maps = ( # \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re); 1; # ensure a defined return
Las descomentamos y ya con esto volvemos a reiniciar el servicio de amavisd.
amavisd: Problem in antispam SA code: Can’t locate Mail/SpamAssassin.pm
Al reiniciar el servicio del filtro de correo amavisd, me doy cuenta de lo siguiente;
root@mail:~# /etc/init.d/amavis restart Stopping amavisd: amavisd-new. Starting amavisd: Problem in antispam SA code: Can't locate Mail/SpamAssassin.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl) at (eval 115) line 64. BEGIN failed--compilation aborted at (eval 115) line 64. (failed).
Al parecer el modulo de SpamAssassin.pm no esta instalado. Este modulo es utilizado por perl para escanear los correos con expresiones regulares. Para estar seguros que no ha sido instalado lo buscamos con el comando find, resulta lo siguiente;
root@mail:~# find / -name SpamAssassin.pm root@mail:~#
Y como pueden ver, no existe en el sistema de archivos del servidor de correo ningún archivo llamado SpamAssassin.pm.
Como instalar SpamAssassin.pm en Linux Debian Mint o Ubuntu
Ahora que ya estamos seguros que el modulo de SpamAssassin para perl no esta instalado, pues procedemos a hacerla instalación:
root@mail:~# apt-get install spamassassin pyzor razor Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: libio-socket-inet6-perl libmail-spf-perl libnetaddr-ip-perl libsocket6-perl re2c spamc Suggested packages: libnet-ident-perl The following NEW packages will be installed: libio-socket-inet6-perl libmail-spf-perl libnetaddr-ip-perl libsocket6-perl pyzor razor re2c spamassassin spamc 0 upgraded, 9 newly installed, 0 to remove and 0 not upgraded. Need to get 1,941kB of archives. After this operation, 6,558kB of additional disk space will be used. Do you want to continue [Y/n]? y Get:1 http://archive.ubuntu.com/ubuntu/ lucid/main libsocket6-perl 0.23-1 [28.1kB] Get:2 http://archive.ubuntu.com/ubuntu/ lucid/main libio-socket-inet6-perl 2.54-1.1 [15.1kB] Get:3 http://archive.ubuntu.com/ubuntu/ lucid/main libnetaddr-ip-perl 4.024+dfsg-1build1 [97.6kB] Get:4 http://archive.ubuntu.com/ubuntu/ lucid/main libmail-spf-perl 2.007-1 [125kB] Get:5 http://archive.ubuntu.com/ubuntu/ lucid/universe pyzor 1:0.5.0-0ubuntu2 [33.2kB] Get:6 http://archive.ubuntu.com/ubuntu/ lucid/universe razor 1:2.85-3 [125kB] Get:7 http://archive.ubuntu.com/ubuntu/ lucid/main re2c 0.13.5-1build1 [217kB] Get:8 http://archive.ubuntu.com/ubuntu/ lucid/main spamassassin 3.3.1-1 [1,232kB] Get:9 http://archive.ubuntu.com/ubuntu/ lucid/main spamc 3.3.1-1 [68.8kB] Fetched 1,941kB in 23s (84.3kB/s) Selecting previously deselected package libsocket6-perl. (Reading database ... 73934 files and directories currently installed.) Unpacking libsocket6-perl (from .../libsocket6-perl_0.23-1_i386.deb) ... Selecting previously deselected package libio-socket-inet6-perl. Unpacking libio-socket-inet6-perl (from .../libio-socket-inet6-perl_2.54-1.1_all.deb) ... Selecting previously deselected package libnetaddr-ip-perl. Unpacking libnetaddr-ip-perl (from .../libnetaddr-ip-perl_4.024+dfsg-1build1_i386.deb) ... Selecting previously deselected package libmail-spf-perl. Unpacking libmail-spf-perl (from .../libmail-spf-perl_2.007-1_all.deb) ... Selecting previously deselected package pyzor. Unpacking pyzor (from .../pyzor_1%3a0.5.0-0ubuntu2_all.deb) ... Selecting previously deselected package razor. Unpacking razor (from .../razor_1%3a2.85-3_i386.deb) ... Selecting previously deselected package re2c. Unpacking re2c (from .../re2c_0.13.5-1build1_i386.deb) ... Selecting previously deselected package spamassassin. Unpacking spamassassin (from .../spamassassin_3.3.1-1_all.deb) ... Selecting previously deselected package spamc. Unpacking spamc (from .../spamc_3.3.1-1_i386.deb) ... Processing triggers for man-db ... Setting up libsocket6-perl (0.23-1) ... Setting up libio-socket-inet6-perl (2.54-1.1) ... Setting up libnetaddr-ip-perl (4.024+dfsg-1build1) ... Setting up libmail-spf-perl (2.007-1) ... Setting up pyzor (1:0.5.0-0ubuntu2) ... Setting up razor (1:2.85-3) ... Setting up re2c (0.13.5-1build1) ... Setting up spamassassin (3.3.1-1) ... SpamAssassin Mail Filter Daemon: disabled, see /etc/default/spamassassin Setting up spamc (3.3.1-1) ... Processing triggers for python-support ...
Buscamos nuevamente el modulo de SpamAssassin y ahora ya aparece correctamente en el sistema de archivos de nuestro sistema operativo;
root@mail:~# find / -name SpamAssassin.pm /usr/share/perl5/Mail/SpamAssassin.pm
Les recuerdo que este no es un howto convencional de principio a fin. Mas que todo estamos resolviendo la falta de un componente (spamassassin) en un MTA con postfix y amavisd ya en producción.