En este post veremos cómo realizar la instalación del sistema de seguridad para servidores de correo electrónico MailScanner. MailScanner nos va a ayudar a protegernos contra spam, virus, phising y malware dado que va a analizar cada correo electrónico que pasa por él.
Teniendo en cuenta el principio KISS, muy habitual en el mundo del Software Libre, MailScanner no reinventa la rueda y hace uso de otras herramientas específicas para cada uno de los análisis que realiza sobre los mails. Por ejemplo, Spamassassin para la detección del spam, ClamAV para los virus…
Este post pretende ser la continuación de otros dos anteriores en los que instalamos Zimbra como servidor de correo (Creando un sistema de correo profesional con Zimbra 1 y Creando un sistema de correo profesional con Zimbra 2), ya que vamos a centrar la instalación en un servidor con Zimbra 8.6 Open Source Edition. Tened en cuenta que MailScanner se puede utilizar con cualquier otro MTA, como Postfix o Exim.
¿Qué hace MailScanner?
Tal como se suele decir, una imagen vale más que mil palabras, así que vamos con ella:
He querido dejar en grande esta imagen dada su importancia, ya que es la mejor manera de ver cómo funciona y qué hace MailScanner. Es tan explicativa que creo que es mejor no decir más 😛
Instalación de MailScanner
Tal como hemos puesto en la introducción, MailScanner hace uso de otras herramientas muy conocidas, por lo que será necesario que estén instaladas, pero el instalador nos facilitará esta tarea.
Descargar MailScanner
Desde la página de descargas de Mailscanner podemos elegir el paquete para la distribución de nuestro servidor. Como recordaréis, el servidor donde instalamos Zimbra es una Ubuntu 14.04 LTS, por lo que elegimos el enlace «Debian / Ubuntu«:
root@mail:~# wget https://s3.amazonaws.com/mailscanner/release/v4/deb/MailScanner-4.85.2-3.deb.tar.gz --2016-01-19 11:33:14-- https://s3.amazonaws.com/mailscanner/release/v4/deb/MailScanner-4.85.2-3.deb.tar.gz Resolving s3.amazonaws.com (s3.amazonaws.com)... 54.231.2.200 Connecting to s3.amazonaws.com (s3.amazonaws.com)|54.231.2.200|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 826212 (807K) [application/x-gzip] Saving to: ‘MailScanner-4.85.2-3.deb.tar.gz’ 100%[======================================================================>] 826.212 702KB/s in 1,1s 2016-01-19 11:33:15 (702 KB/s) - ‘MailScanner-4.85.2-3.deb.tar.gz’ saved [826212/826212] root@mail:~# tar -xzf MailScanner-4.85.2-3.deb.tar.gz root@mail:~# cd MailScanner-4.85.2-3 root@mail:~/MailScanner-4.85.2-3# ls ChangeLog COPYING install.sh mailscanner-4.85.2-3-noarch.deb README UPGRADE
Como podeis ver, una vez descomprimido el fichero descargado, tenemos el típico fichero README (al que no está de más echarle un ojo 😉 ), un paquete .deb y el instalador install.sh
Instalación de MailScanner
Tal como hemos visto, hay un instalador, así que vamos a ejecutarlo:
root@mail:~/MailScanner-4.85.2-3# ./install.sh MailScanner Installation for Debian Based Systems This will INSTALL or UPGRADE the required software for MailScanner on Debian based systems via the Apt package manager. Supported distributions are Debian 6,7 and associated variants such as Ubuntu. Internet connectivity is required for this installation script to execute. You may press CTRL + C at any time to abort the installation. Note that you may see some errors during the perl module installation. You may safely ignore errors regarding failed tests for optional packages. When you are ready to continue, press return ...
Tal como podemos leer, nos dice que va a realizar la instalación de las dependencias que necesita MailScanner y que, si queremos, podemos cancelar la instalación en cualquier momento. Para la instalación de las dependencias nos hará una serie de preguntas. Así que pulsamos intro para continuar.
Do you want to install a Mail Transfer Agent (MTA)? I can install an MTA via the apt package manager to save you the trouble of having to do this later. If you plan on using an MTA that is not listed below, you will have install it manually yourself if you have not already done so. 1 - sendmail 2 - postfix 3 - exim N - Do not install Recommended: 1 (sendmail) Install an MTA? [1] : N
Como en nuestro servidor ya tenemos instalado Zimbra, que es nuestro servidor de correo (MTA), le decimos que NO queremos instalar ninguno.
Do you want to install or update Spamassassin? This package is recommended unless you have your own spam detection solution. Recommended: Y (yes) Install or update Spamassassin? [n/Y] : Y
Confirmamos que queremos instalar Spamassassin, que va a ser el encargado de realizar la detección de spam, dándole a los mails una puntuación según las reglas heurísticas de las que dispone.
Do you want to install or update Clam AV during this installation process? This package is recommended unless you plan on using a different virus scanner. Note that you may use more than one virus scanner at once with MailScanner. Even if you already have Clam AV installed you should select this option so I will know to check the clamav-wrapper and make corrections if required. Recommended: Y (yes) Install or update Clam AV? [n/Y] : Y
De nuevo, confirmamos la instalación de Clam AV, que es el antivirus utilizado por Mailscanner.
Do you want to install missing perl modules via CPAN? I will attempt to install Perl modules via apt, but some may not be unavailable during the installation process. Missing modules will likely cause MailScanner to malfunction. Recommended: Y (yes) Install missing Perl modules via CPAN? [n/Y] : Y
Dado que MailScanner está escrito en el lenguaje Perl, se necesitan varias dependencias. Por defecto, se intentará realizar la instalación a través del sistema de paquetes apt, pero en caso de no tenerlas, las instalará a través del sistema CPAN.
Do you want to ignore MailScanner dependencies? This will force install the MailScanner .deb package regardless of missing dependencies. It is highly recommended that you DO NOT do this unless you are debugging. Recommended: N (no) Ignore MailScanner dependencies (nodeps)? [y/N] : N
Confirmamos que NO queremos ignorar las dependencias. Tras este paso, comenzará la instalación como tal:
Installation results are being logged to mailscanner-install.log [...] Installing the MailScanner .deb package ... Seleccionando el paquete mailscanner previamente no seleccionado. (Leyendo la base de datos ... 110549 ficheros o directorios instalados actualmente.) Preparing to unpack .../mailscanner-4.85.2-3-noarch.deb ... Unpacking mailscanner (4.85.2-3) ... Configurando mailscanner (4.85.2-3) ... Adding system startup for /etc/init.d/mailscanner ... /etc/rc0.d/K20mailscanner -> ../init.d/mailscanner /etc/rc1.d/K20mailscanner -> ../init.d/mailscanner /etc/rc6.d/K20mailscanner -> ../init.d/mailscanner /etc/rc2.d/S20mailscanner -> ../init.d/mailscanner /etc/rc3.d/S20mailscanner -> ../init.d/mailscanner /etc/rc4.d/S20mailscanner -> ../init.d/mailscanner /etc/rc5.d/S20mailscanner -> ../init.d/mailscanner Processing triggers for man-db (2.6.7.1-1ubuntu1) ... Processing triggers for ureadahead (0.100.0-16) ... ---------------------------------------------------------- Installation Complete See http://www.mailscanner.info for more information and support via the MailScanner mailing list.
Cuando la instalación comienza nos empieza a sacar por pantalla todo lo que va haciendo. Afortunadamente, si nos fijamos, nos indica que todo lo que va a hacer se va a loguear en el fichero mailscanner-install.log, dentro del directorio donde estamos ejecutando el instalador. Si abrís el fichero tras la instalación podréis ver más tranquilamente qué es lo que ha ido pasando. El resumen es:
- Realiza un «apt-get update» para actualizar los repositorios
- Instala las primeras dependencias para MailScanner
- Instala Spamassassin y ClamAV
- Instala las librerías y dependencias Perl por CPAN
- Añade los scripts de arranque/parada al runlevel
Integración de Zimbra y MailScanner
En este punto ya tenemos MailScanner instalado, pero falta toda la tarea de configurar Zimbra para «pasarle» los mails a MailScanner y que los analice. Para ser más específico, Zimbra no pasa los mails, si no que vamos a hacer que los deje en la cola HOLD (hay que recordar que Zimbra está basado en Postfix), MailScanner coge los mails de esa cola, y tras los análisis realizados, en caso de no ser rechazados, los «inyecta» en la cola de salida para que Zimbra los entregue. Podéis volver a mirar la imagen del principio del post para recordar cómo funciona Mailscanner.
Configurar Zimbra
Tal como hemos dicho, Zimbra es el que deja los mails en su cola HOLD para que posteriormente sean recogidos por MailScanner, por lo que tenemos que realizar la siguiente configuración.
- Vamos a «Configurar → Configuración General → Archivos adjuntos» y desmarcamos la opción «Enviar notificación de extensión bloqueada al destinatario».
- Tenemos que editar el fichero /opt/zimbra/conf/postfix_header_checks.in añadiendo cierta información, pero hay que darle permisos al fichero. Desde consola sería, siendo root:
zimbra@mail:~$ zmprov mcf zimbraMtaBlockedExtensionWarnRecipient FALSE root@mail:~# chmod 666 /opt/zimbra/conf/postfix_header_checks.in root@mail:~# echo "/^Received:/ HOLD" >> /opt/zimbra/conf/postfix_header_checks.in root@mail:~# chmod 444 /opt/zimbra/conf/postfix_header_checks.in root@mail:~# /opt/zimbra/postfix/sbin/postconf -e header_checks=pcre:/opt/zimbra/conf/postfix_header_checks
- También tenemos que modificar el fichero /opt/zimbra/postfix/conf/master.cf.in y la línea donde se especifica qmgr quede tal que:
qmgr fifo n - n 300 1 qmgr
Tras esto, hay que realizar una parada del zimbra y volver a levantarlo, esta vez como usuario zimbra:
root@mail:~# su - zimbra zimbra@mail:~$ zmcontrol restart Host mail.irontec.com Stopping vmware-ha...skipped. /opt/zimbra/bin/zmhactl missing or not executable. Stopping zmconfigd...Done. Stopping zimlet webapp...Done. Stopping zimbraAdmin webapp...Done. Stopping zimbra webapp...Done. Stopping service webapp...Done. Stopping stats...Done. Stopping mta...Done. Stopping spell...Done. Stopping snmp...Done. Stopping cbpolicyd...Done. Stopping archiving...Done. Stopping opendkim...Done. Stopping amavis...Done. Stopping antivirus...Done. Stopping antispam...Done. Stopping proxy...Done. Stopping memcached...Done. Stopping mailbox...Done. Stopping logger...Done. Stopping dnscache...Done. Stopping ldap...Done. Host mail.irontec.com Starting ldap...Done. Starting zmconfigd...Done. Starting dnscache...Done. Starting logger...Done. Starting mailbox...Done. Starting memcached...Done. Starting proxy...Done. Starting amavis...Done. Starting antispam...Done. Starting antivirus...Done. Starting opendkim...Done. Starting snmp...Done. Starting spell...Done. Starting mta...Done. Starting stats...Done. Starting service webapp...Done. Starting zimbra webapp...Done. Starting zimbraAdmin webapp...Done. Starting zimlet webapp...Done.
Si ahora intentamos mandar un mail desde el interfaz web (por ejemplo, desde la cuenta [email protected] a [email protected]) deberíamos ver lo siguiente en el log /var/log/mail.log Fijaros en la línea destacada cómo indica «hold: header Received«.
Jan 19 15:34:47 mail postfix/smtpd[24125]: connect from mail.irontec.com[123.1.2.3] Jan 19 15:34:47 mail postfix/smtpd[24125]: NOQUEUE: filter: RCPT from mail.irontec.com[123.1.2.3]: <[email protected]>: Sender address triggers FILTER smtp-amavis:[127.0.0.1]:10026; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<mail.irontec.com> Jan 19 15:34:47 mail postfix/smtpd[24125]: 44BC1261C9B: client=mail.irontec.com[123.1.2.3] Jan 19 15:34:47 mail postfix/cleanup[24129]: 44BC1261C9B: hold: header Received: from mail.irontec.com (mail.irontec.com [123.1.2.3])??by mail.irontec.com (Postfix) with ESMTP id 44BC1261C9B??for <[email protected]>; Tue, 19 Jan 2016 15:34:47 +0100 (CET) from mail.irontec.com[123.1.2.3]; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<mail.irontec.com> Jan 19 15:34:47 mail postfix/cleanup[24129]: 44BC1261C9B: message-id=<[email protected]> Jan 19 15:34:47 mail postfix/smtpd[24125]: disconnect from mail.irontec.com[123.1.2.3]
Ya hemos conseguido lo que queríamos, todos los mails que llegan al Zimbra se queden en la cola HOLD, siendo el directorio: /opt/zimbra/data/postfix/spool/hold
Configurar MailScanner
Ahora tenemos que hacer que MailScanner vaya a por los mails, cogiéndolos de/opt/zimbra/data/postfix/spool/hold, los analice y los deje en la cola correspondiente del Zimbra para que luego vaya a su destino final. Teniendo en cuenta la extensión del fichero de configuración de MailScanner, aún a pesar de venir bien documentado, es buena idea tener abierta en otra pestaña la documentación de MailScanner.
Toda la configuración de MailScanner se realiza en el directorio /etc/MailScanner/ y la gran mayoría de la configuración en el fichero /etc/MailScanner/MailScanner.conf . Si lo abrís, veréis que es muy extenso, pero en su mayoría son comentarios explicativos acerca de cada una de las configuraciones.
Dado que la configuración por defecto de MailScanner.conf está bastante bien, pero también es muy extensa, os dejamos las modificaciones que realizamos en el fichero para tener un sistema base que funcione con Zimbra:
%org-name% = Irontec %org-long-name% = Irontec S.L. %web-site% = www.irontec.com %report-dir% = /etc/MailScanner/reports/es Max Children = 1 Run As User = postfix Run As Group = postfix Incoming Queue Dir = /opt/zimbra/data/postfix/spool/hold Outgoing Queue Dir = /opt/zimbra/data/postfix/spool/incoming MTA = postfix Incoming Work Group = clamav Incoming Work Permissions = 0666 Quarantine Permissions = 0666 Maximum Archive Depth = 3 Virus Scanners = clamd Allow Password-Protected Archives = yes ClamAVmodule Maximum Recursion Level = 2 Clamd Lock File = /var/run/clamav/clamd.pid Quarantine Whole Message = yes Always Include SpamAssassin Report = yes Sign Clean Messages = no Mark Unscanned Messages = no Deliver Cleaned Messages = no Notify Senders = no Notices To = [email protected] Local Postmaster = [email protected] Spam List = spamhaus-ZEN spamcop.net Required SpamAssassin Score = 4 High SpamAssassin Score = 8 SpamAssassin User State Dir = /var/spool/MailScanner/spamassassin SpamAssassin Install Prefix = /var/spool/MailScanner/spamassassin
Nota: De estas modificaciones, más adelante cambiaremos «Max Children» poniéndolo a 10, pero durante la fase de pruebas es mejor tener sólo un hijo para ver mejor los logs.
Debido a la funcionalidad apparmor de Ubuntu, hay que hacer una modificación para evitar el siguiente error que nos puede aparecer más adelante:
Jan 20 11:30:50 mail MailScanner[18516]: Clamd::ERROR:: UNKNOWN CLAMD RETURN ./lstat() failed: Permission denied. ERROR :: /var/spool/MailScanner/incoming/18516
Para ello, tenemos que modificar el fichero /etc/apparmor.d/local/usr.sbin.clamd y añadir lo siguiente:
/var/spool/MailScanner/** rw, /var/spool/MailScanner/incoming/** rw,
Y tendremos que hacer un restart de la configuración de dicho servicio:
root@mail:~# service apparmor restart * Reloading AppArmor profiles Skipping profile in /etc/apparmor.d/disable: usr.sbin.rsyslogd ...done.
Para hacer que MailScanner arranque, hay que modificar el fichero /etc/default/mailscanner y asegurar que aparece la siguiente línea descomentada:
run_mailscanner=1
Arrancamos el servicio
root@mail:/etc/MailScanner# /etc/init.d/clamav-daemon start * Starting ClamAV daemon clamd ...done. root@mail:~# /etc/init.d/mailscanner start
Y en el log /var/log/mail.log deberíais ver algo parecido a lo siguiente:
Jan 20 12:59:24 mail MailScanner[13669]: MailScanner E-Mail Virus Scanner version 4.85.2 starting... Jan 20 12:59:24 mail MailScanner[13669]: Reading configuration file /etc/MailScanner/MailScanner.conf Jan 20 12:59:24 mail MailScanner[13669]: Reading configuration file /etc/MailScanner/conf.d/README Jan 20 12:59:24 mail MailScanner[13669]: Read 868 hostnames from the phishing whitelist Jan 20 12:59:24 mail MailScanner[13669]: Read 5807 hostnames from the phishing blacklists Jan 20 12:59:25 mail MailScanner[13669]: Using SpamAssassin results cache Jan 20 12:59:25 mail MailScanner[13669]: Connected to SpamAssassin cache database Jan 20 12:59:25 mail MailScanner[13669]: Expired 14 records from the SpamAssassin cache Jan 20 12:59:26 mail MailScanner[13669]: Connected to Processing Attempts Database Jan 20 12:59:26 mail MailScanner[13669]: Found 0 messages in the Processing Attempts Database Jan 20 12:59:26 mail MailScanner[13669]: Using locktype = flock
Y si mandamos de nuevo un mail veremos el siguiente log:
Jan 20 13:00:12 mail postfix/smtpd[14603]: connect from mail.irontec.com[123.1.2.3] Jan 20 13:00:12 mail postfix/smtpd[14603]: NOQUEUE: filter: RCPT from mail.irontec.com[123.1.2.3]: <[email protected]>: Sender address triggers FILTER smtp-amavis:[127.0.0.1]:10026; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<mail.irontec.com> Jan 20 13:00:12 mail postfix/smtpd[14603]: 210F0261C9D: client=mail.irontec.com[123.1.2.3] Jan 20 13:00:12 mail postfix/cleanup[14606]: 210F0261C9D: hold: header Received: from mail.irontec.com (mail.irontec.com [123.1.2.3])??by mail.irontec.com (Postfix) with ESMTP id 210F0261C9D??for <[email protected]>; Wed, 20 Jan 2016 13:00:12 +0100 (CET) from mail.irontec.com[123.1.2.3]; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<mail.irontec.com> Jan 20 13:00:12 mail postfix/cleanup[14606]: 210F0261C9D: message-id=<[email protected]> Jan 20 13:00:12 mail postfix/smtpd[14603]: disconnect from mail.irontec.com[123.1.2.3] Jan 20 13:00:14 mail MailScanner[13669]: New Batch: Scanning 1 messages, 1863 bytes Jan 20 13:00:14 mail MailScanner[13669]: Virus and Content Scanning: Starting Jan 20 13:00:15 mail MailScanner[13669]: Requeue: 210F0261C9D.AFE5C to CDCFE261CA1 Jan 20 13:00:15 mail MailScanner[13669]: Uninfected: Delivered 1 messages Jan 20 13:00:15 mail MailScanner[13669]: Deleted 1 messages from processing-database Jan 20 13:00:15 mail postfix/qmgr[29083]: CDCFE261CA1: from=<[email protected]>, size=1124, nrcpt=1 (queue active) Jan 20 13:00:15 mail postfix/dkimmilter/smtpd[14616]: connect from localhost[127.0.0.1] Jan 20 13:00:15 mail postfix/dkimmilter/smtpd[14616]: 537AA261C9D: client=localhost[127.0.0.1] Jan 20 13:00:15 mail postfix/smtp[14613]: CDCFE261CA1: to=<[email protected]>, relay=127.0.0.1[127.0.0.1]:10026, delay=3.3, delays=3.1/0.01/0/0.14, dsn=2.0.0, status=sent (250 2.0.0 from MTA(smtp:[127.0.0.1]:10030): 250 2.0.0 Ok: queued as 537AA261C9D) Jan 20 13:00:15 mail postfix/cleanup[14606]: 537AA261C9D: hold: header Received: from localhost (localhost [127.0.0.1])??by mail.irontec.com (Postfix) with ESMTP id 537AA261C9D??for <[email protected]>; Wed, 20 Jan 2016 13:00:15 +0100 (CET) from localhost[127.0.0.1]; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<localhost> Jan 20 13:00:15 mail postfix/cleanup[14606]: 537AA261C9D: message-id=<[email protected]> Jan 20 13:00:15 mail postfix/dkimmilter/smtpd[14616]: disconnect from localhost[127.0.0.1] Jan 20 13:00:15 mail postfix/qmgr[29083]: CDCFE261CA1: removed Jan 20 13:00:21 mail MailScanner[13669]: New Batch: Scanning 1 messages, 3036 bytes Jan 20 13:00:21 mail MailScanner[13669]: Virus and Content Scanning: Starting Jan 20 13:00:21 mail MailScanner[13669]: Requeue: 537AA261C9D.A7668 to 1F000261CA4 Jan 20 13:00:21 mail MailScanner[13669]: Uninfected: Delivered 1 messages Jan 20 13:00:21 mail MailScanner[13669]: Deleted 1 messages from processing-database Jan 20 13:00:21 mail postfix/qmgr[29083]: 1F000261CA4: from=<[email protected]>, size=2359, nrcpt=1 (queue active) Jan 20 13:00:22 mail postfix/amavisd/smtpd[14625]: connect from localhost[127.0.0.1] Jan 20 13:00:22 mail postfix/amavisd/smtpd[14625]: 3D621261C9D: client=localhost[127.0.0.1] Jan 20 13:00:22 mail postfix/cleanup[14606]: 3D621261C9D: message-id=<[email protected]> Jan 20 13:00:22 mail postfix/qmgr[29083]: 3D621261C9D: from=<[email protected]>, size=3099, nrcpt=1 (queue active) Jan 20 13:00:22 mail postfix/amavisd/smtpd[14625]: disconnect from localhost[127.0.0.1] Jan 20 13:00:22 mail postfix/smtp[14613]: 1F000261CA4: to=<[email protected]>, relay=127.0.0.1[127.0.0.1]:10032, delay=6.9, delays=6.4/0/0.01/0.52, dsn=2.0.0, status=sent (250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as 3D621261C9D) Jan 20 13:00:22 mail postfix/qmgr[29083]: 1F000261CA4: removed Jan 20 13:00:22 mail postfix/lmtp[14626]: 3D621261C9D: to=<[email protected]>, relay=mail.irontec.com[123.1.2.3]:7025, delay=0.2, delays=0/0.01/0.13/0.06, dsn=2.1.5, status=sent (250 2.1.5 Delivery OK) Jan 20 13:00:22 mail postfix/qmgr[29083]: 3D621261C9D: removed
Analizando el log, he hecho unos saltos de línea para verlo mejor, se puede resumir en:
- Recepción del mail por parte del Postfix (proceso smtpd) de Zimbra y deajdo en la cola HOLD
- MailScanner comprueba que existe un mensaje (de salida), lo analiza y lo deja en la cola correspondiente de Zimbra
- Postfix (proceso qmgr) recoge el mail de la cola, y se lo entrega al proceso encargado de firmar y comprobar la firma DKIM
- Postfix recibe de nuevo el correo y lo deja en el buzón del usuario correspondiente
He querido mostraros cómo funciona en el caso de un mail local, cómo es recibido, analizado y entregado posteriormente. En caso de que fuese un mail a un servidor externo, el mail sería analizado, y entregado al servidor remoto correspondiente. El servidor receptor del correo, si tiene MailScanner (o un sistema similar) analizaría el mail de nuevo y lo entregaría a su buzón correspondiente.
Configuración avanzada, extras
Hasta ahora hemos dejado configurado Mailscanner de manera sencilla para asegurar que funciona, pero hay configuración extra que deberíamos añadir para mejorar nuestro sistema. Si en vuestras configuraciones tenéis opciones que no hemos añadido, no dudéis en dejarnos vuestras mejoras en los comentarios 😀
Configuración spamassassin
La configuración de Spamassassin podemos realizarla en sus ficheros de configuración (local.cf por ejemplo), pero MailScanner nos facilita el fichero /etc/MailScanner/spam.assassin.prefs.conf para ello. Realizamos un enlace simbólico del fichero en el directorio donde está la configuración de Spamassassin para que nos aseguremos que luego será cargada:
root@mail:/etc/MailScanner# ln -s /etc/MailScanner/spam.assassin.prefs.conf /etc/spamassassin/mailscanner.cf
Editamos el fichero /etc/MailScanner/spam.assassin.prefs.conf para modificar las líneas donde aparece X-YOURDOMAIN-COM para que sea como la variable %org-name% del fichero Mailscanner.conf, y una serie de configuración extra y ejemplos de reglas propias:
bayes_path /etc/MailScanner/bayes/bayes bayes_file_mode 0777 bayes_ignore_header X-Irontec-MailScanner bayes_ignore_header X-Irontec-MailScanner-SpamCheck bayes_ignore_header X-Irontec-MailScanner-SpamScore bayes_ignore_header X-Irontec-MailScanner-Information ifplugin Mail::SpamAssassin::Plugin::Pyzor pyzor_path /usr/bin/pyzor endif use_razor2 1 use_pyzor 1 # reglas propias score SPF_FAIL 4 score SPF_SOFTFAIL 3 score SPF_NEUTRAL 2 envelope_sender_header X-Irontec-MailScanner-From # para locales e idiomas ok_locales en loadplugin Mail::SpamAssassin::Plugin::TextCat ok_languages es eu # ejemplo de regla propia header Irontec_CASINO Subject =~ /casinos/i describe Irontec_CASINO Casinos score Irontec_CASINO 1.5 # para los paises loadplugin Mail::SpamAssassin::Plugin::RelayCountry add_header all Relay-Country _RELAYCOUNTRY_ include Relay_Countries.cf
Tenemos que crear el directorio donde se guardará la base de datos Bayes, y podemos aprovechar la base de datos de Zimbra para utilizar lo aprendido hasta ahora por él:
root@mail:/etc/MailScanner# mkdir /etc/MailScanner/bayes root@mail:/etc/MailScanner# cp /opt/zimbra/.spamassassin/bayes_* /etc/MailScanner/bayes/ root@mail:/etc/MailScanner# chmod 777 -R /etc/MailScanner/bayes
Para el plugin RelayCountry necesitamos instalar una dependencia de perl:
root@mail:/etc/MailScanner# apt-get install libgeo-ip-perl [...] Processing triggers for man-db (2.6.7.1-1ubuntu1) ... Configurando libgeo-ip-perl (1.43-1) ...
Y por último, si os fijáis, hemos hecho un include del fichero Relay_Countries.cf Esto es un fichero, que os podéis descargar de aquí y moverlo a /etc/spamassassin/Relay_Countries.cf .
root@mail:~# cd /etc/spamassassin/ root@mail:/etc/spamassassin# wget https://blog.irontec.com/wp-content/uploads/2016/01/Relay_Countries.txt root@mail:/etc/spamassassin# mv Relay_Countries.txt Relay_Countries.cf
Este fichero lo que hace es puntuar a los mails que vienen desde ciertos países con más puntuación o menos, dependiendo de nuestro gusto:
header RELAYCOUNTRY_CN X-Relay-Countries =~/\bCN\b/ describe RELAYCOUNTRY_CN Relayed through China score RELAYCOUNTRY_CN 4.0
Para la configuración de Pyzor, tenemos que crear un directorio en la home del usuario Postfix (que es el que lo arranca), y posteriormente lanzar Pyzor para actualizarlo:
root@mail:/etc/spamassassin# mkdir /opt/zimbra/postfix/.pyzor root@mail:/etc/spamassassin# chown postfix:postfix /opt/zimbra/postfix/.pyzor/ root@mail:/etc/spamassassin# su - postfix $ pwd /opt/zimbra/postfix $ pyzor --homedir /opt/zimbra/postfix/.pyzor discover downloading servers from http://pyzor.sourceforge.net/cgi-bin/inform-servers-0-3-x
Whitelist y blacklist
A través de MailScanner, y su configuración, podemos forzar a que unos mails sean siempre considerados como lícitos o como spam. Estas son las configuraciones a modificar en /etc/MailScanner/MailScanner.conf:
# fichero de configuración para las whitelist Is Definitely Not Spam = %rules-dir%/spam.whitelist.rules # fichero de configuración para las blacklist Is Definitely Spam = %rules-dir%/spam.blacklist.rules
Con esta configuración lo que estamos indicando es que para que un mail sea considerado directamente como whitelisted (es decir, que siempre va a ser considerado lícito) mire las reglas del fichero dentro del path %rules-dir%, que al principio del fichero vemos que es /etc/MailScanner/rules , es decir, /etc/MailScanner/rules/spam.whitelist.rules . Y para considerar que un mail sea directamente Spam que mire el fichero /etc/MailScanner/rules/spam.blacklist.rules
Ejemplo de configuración de unas reglas para considerar los mails lícitos:
# al poner yes, especificamos que SI son lícitos From: 123.4.5.6 yes From: *@bizkaia.org yes From: [email protected] yes # el resto de mails se analizarán y puntuarán FromOrTo: default no
Y aquí os dejo un ejemplo para reglas que siempre sean considerado Spam:
# al poner yes, especificamos que SON SPAM From: *@address.com yes From: *@*.jp yes From: 222.78.150.40 yes FromOrTo: default no
Para ver todos los tipos de reglas que podemos crear y para más opciones condicionales de este estilo lo mejor es echar un ojo al fichero que MailScanner nos proporciona: /etc/MailScanner/rules/EXAMPLES
Resumen
En este post hemos instalado y configurado un servicio extra de seguridad para nuestro entorno Zimbra que nos ayudará en la jungla que es hoy día internet en lo que respecta a los sistemas de correo electrónico como el spam, el phising…
¡Comentad y ayudadnos a mejorar este post añadiendo vuestras reglas contra el spam!
1 Comentario
¿Por qué no comentas tú también?
Hola Rubén, me surge una duda al instalar MailScanner. Si Zimbra ya viene con protección antivirus y antispam, ¿no estamos duplicando las protecciones?. ¿Realmente que aporta MailScanner sobre las que trae Zimbra por defecto?
Gracias.
Ricardo Hace 8 años
Zimbra, usa lo mismo, SpamAssassin y ClamAV….
La única ventaja que veo a priori, es que se podría instalar MailWatch y poder tener un registro de todos los correos en una base de datos MySQL.
Fredy Ruiz Hace 8 años
Hola a los dos. Tal como dice Fredy, lo primordial es el poder obtener un registro de los correos entrantes/salientes de nuestro servidor. Es una pena que Zimbra no cuente con un sistema parecido a Mailwatch tan visual (si que tiene algo parecido, pero debe hacerse desde el CLI), ya que facilitaría la administración del mismo.
Aparte, en nuestro caso el mailscanner estaba en la misma máquina, pero podría estar en otro aparte haciendo un sistema multi-server.
Tal como dice Ricardo, el zimbra ya cuenta con antispam y antivirus, pero debido a cómo funciona Zimbra internamente las modificaciones que se pueden realizar en su configuración interna no son tan sencillas como cuando tienes los servicios separados, y que tras una actualización, nuestra configuración puede ser modificada.
Rubén Gómez Olivencia Hace 8 años
Llevo más de una década instalando MailScanner en servidores Linux, como gateway de cualquier MTA, o incluso integrado al zimbra sin necesidad de equipo adicional. Además de la posibilidad de guardar el registro detallado del tráfico de correos (incluyendo el backup de cada mensaje) yo considero que la mayor fortaleza del MailScanner es la característica MCP – Message Content Protection. Échenle un vistazo a ello y su experiencia con el spam cambiará radicalmente.
Tony Celli Hace 8 años
Buenas Ruben, antes que nada gracias por el aporte.
Tengo un problema al modificar /etc/apparmor.d/usr.sbin.clamd donde mi archivo quedo asi
root@mail2:~# cat /etc/apparmor.d/local/usr.sbin.clamd
/var/spool/MailScanner/incoming/** krw,
/var/spool/MailScanner/incoming/** ix,
/var/spool/MailScanner/** rw,
/var/spool/MailScanner/incoming/** rw,
root@mail2:~#
y al reiniciar el apparmor aparece esto:
root@mail2:~# service apparmor restart
* Reloading AppArmor profiles Error del analizador AppArmor para /etc/apparmor.d/usr.sbin.clamd in /etc/apparmor.d/usr.sbin.clamd en la l?nea 54: syntax error, unexpected TOK_ID, expecting TOK_MODE
Skipping profile in /etc/apparmor.d/disable: usr.sbin.rsyslogd
[ OK ]
root@mail2:~#
Tenes alguna idea de que puede ser el problema?
Jorge Gallas Hace 8 años
Finalmente termine la instalacion y estos son las dudas que tengo:
Para la version MailScanner-5.0.2-1 con Zimbra 8.6 y Ubuntu 14.04.1
No consulta para instalar Spamassassin.
Se agrega RAMDISK.
En la configuracion de MailScanner.conf(/etc/MailScanner/MailScanner.conf) tengo las variables de Sendmail que quedan ahi sin tocar luego de la configuracion de postfix:
# Set whether to use postfix, sendmail, exim or zmailer.
# If you are using postfix, then see the «SpamAssassin User State Dir»
# setting near the end of this file
#MTA = sendmail
MTA = postfix
# Set how to invoke MTA when sending messages MailScanner has created
# (e.g. to sender/recipient saying «found a virus in your message»)
# This can also be the filename of a ruleset.
Sendmail = /usr/lib/sendmail
# Sendmail2 is provided for Exim users.
# It is the command used to attempt delivery of outgoing cleaned/disinfected
# messages.
# This is not usually required for sendmail.
# This can also be the filename of a ruleset.
#For Exim users: Sendmail2 = /usr/sbin/exim -C /etc/exim/exim_send.conf
#For sendmail users: Sendmail2 = /usr/lib/sendmail
#Sendmail2 = /usr/sbin/sendmail -C /etc/exim/exim_send.conf
Sendmail2 = /usr/lib/sendmail
Tengo un problema al modificar /etc/apparmor.d/usr.sbin.clamd donde mi archivo quedo asi
root@mail2:~# cat /etc/apparmor.d/local/usr.sbin.clamd
/var/spool/MailScanner/incoming/** krw,
/var/spool/MailScanner/incoming/** ix,
/var/spool/MailScanner/** rw,
/var/spool/MailScanner/incoming/** rw,
root@mail2:~#
y al reiniciar el apparmor aparece esto:
root@mail2:~# service apparmor restart
* Reloading AppArmor profiles Error del analizador AppArmor para /etc/apparmor.d/usr.sbin.clamd in /etc/apparmor.d/usr.sbin.clamd en la l?nea 54: syntax error, unexpected TOK_ID, expecting TOK_MODE
Skipping profile in /etc/apparmor.d/disable: usr.sbin.rsyslogd
[ OK ]
root@mail2:~#
No existe el path /etc/spamassassin:
/etc/spamassassin/mailscanner.cf
No existe el archivo spam.assassin.prefs.conf existe /etc/MailScanner/spamassassin.conf
root@mail:/etc/MailScanner# ln -s /etc/MailScanner/spam.assassin.prefs.conf /etc/spamassassin/mailscanner.cf
Jorge Gallas Hace 8 años
como usuario de varios años con MailScanner en muchos server … a considerar ya con el tiempo
es la depuracion de falso + y creacion de whitelist aunque no veo aun una herramienta muy fina
yo lo depuro en manual con una cuenta imap ( global+ secundarios para admin x dominio ) + unas rutinas bash para crear whitelist y reencolar los falso +
klamardo Hace 8 años
Hola Ruben,
Muchas gracias por tu guia.
Me surge la duda de cuales serian las modificaciones que habria que realizar si se quiere instalar estas herramientas en un servidor separado de Zimbra.
Muchisimas gracias
Saludos
Adrian Hace 8 años
Hola Ruben muy buena tu guia yo logre instalarlo instalarlo y configurarlo en centos 7.2 con zimbra 8.6 incluido spamassasin ( En el instalador de ubuntu no realiza la pregunta respectiva del spam assassin) sin embargo ahora existe zimbra 8.7 que tiene postscreen incluido y en una maquina de prueba decidi actualizar la version y ahora mailscanner no funciona a pesar de estar corriendo el servicio, sera que puedes actualizar el post a ver como se haria para tener zimbra 8.7 incluido postscreen y con mailscanner funcionando.
Saludos y gracias de antemano
EDGARD FEBRERO
Edgard Febrero Hace 8 años
Tienes que realizar estos pasados de nuevo:
Configurar Zimbra
Tal como hemos dicho, Zimbra es el que deja los mails en su cola HOLD para que posteriormente sean recogidos por MailScanner, por lo que tenemos que realizar la siguiente configuración.
Vamos a “Configurar → Configuración General → Archivos adjuntos” y desmarcamos la opción “Enviar notificación de extensión bloqueada al destinatario”.
Tenemos que editar el fichero /opt/zimbra/conf/postfix_header_checks.in añadiendo cierta información, pero hay que darle permisos al fichero. Desde consola sería, siendo root:
Para Zimbra 8.7
Modificamos el fichero /opt/zimbra/common/conf/postfix_header_checks.in
root@mail:~# chmod 666 /opt/zimbra/common/conf/postfix_header_checks.in
root@mail:~# echo «/^Received:/ HOLD» >> /opt/zimbra/common/conf/postfix_header_checks.in
root@mail:~# chmod 444 /opt/zimbra/common/conf/postfix_header_checks.in
root@mail:~# /opt/zimbra/postfix/sbin/postconf -e header_checks=pcre:/opt/zimbra/conf/postfix_header_checks
root@mail:~#su – zimbra
zimbra@mail:~$ zmlocalconf -e header_checks=pcre:/opt/zimbra/common/conf/postfix_header_checks
zimbra@mail:~$ exit
También tenemos que modificar el fichero /opt/zimbra/postfix/common/conf/master.cf.in y la línea donde se especifica qmgr quede tal que:
Modificamos la línea qmgr para que quede
qmgr fifo n – n 300 1 qmgr
Arian Hace 8 años
[…] Origen: Mejorando nuestro servidor de correo Zimbra (1/2): Mailscanner | Blog Irontec […]
Mejorando nuestro servidor de correo Zimbra (1/2): Mailscanner | Blog Irontec – PROYECTO TIC – TAC Hace 8 años
Hola Ruben, gracias por el aporte lo estoy instalando sobre un ubuntu 14.04 pero al iniciar mail scaner con /etc/init.d/mailscanner start me aparece el siguiente error:
/etc/init.d/mailscanner start
MailScanner starting …
Could not create SpamAssassin temporary directory , No such file or directory at /usr/share/MailScanner/perl/MailScanner/SA.pm line 72.
head: cannot open â/var/run/MailScanner.pidâ for reading: No such file or directory
MailScanner started with process id
que podrá ser?
Gracias
Rene Chirivi Hace 8 años
[…] capítulo en nuestra travesía por Zimbra. Tras instalar, configurar, securizar contra el spam y facilitar la administración de nuestro Zimbra, hoy vamos a ver cómo mejorar la experiencia de […]
Sincronizar Exchange ActiveSync con Z-Push y Zimbra | Blog Irontec Hace 8 años
Buen post, una pregunta, hay forma de instalarlo apra que sea transparente?? si yo tenog varios clientes de correo y la verdad es incomodo tener que configurar uno por uno, no se puede crear como un proxy???
Javier Hace 8 años
Ruben , Excelente articulo, necesito asesoría para poder instalar un LoadBalancer en Zimbra , ya que tengo una plataforma multi-servidor y tengo tres MTA que reciben la información interna y externa de los correos de internet , estoy tratando de colocar un HaProxy pero tengo ciertos problemas con la autenticacion de los susarios internos cuando apunto directamente el HA.
Espero tu respuesta gracias de antemano a la comunidad… si me pueden ayudar
Darry Castro Hace 8 años
Hola! Gran artículo, felicitaciones. Me pregunto si tiene algún conocimiento acerca de la identificación y bloqueo de Directory Harvest Attack en el servidor Zimbra / MailScanner que puede compartir. Estamos teniendo bastantes problemas con él. Gracias.
Alexandre Junior da Costa Hace 8 años
Queremos tu opinión :)