Filtrado de correo electrónico

Esquema del filtrado de correo en Zentyal

Para defendernos de estas amenazas, Zentyal dispone de un filtrado de correo bastante potente y flexible.

Esquema del filtrado de correo en Zentyal

Esquema del filtrado de correo en Zentyal

En la figura se observan los diferentes pasos que sigue un correo antes de determinarse si es válido o no. En primer lugar, el servidor envía el correo al gestor de políticas de listas grises, donde, si es considerado como potencial spam se rechaza y se solicita su reenvío al servidor origen. Si el correo supera este filtro, pasará al filtro de correo donde se examinarán una serie de características del correo, para ver si contiene virus o si se trata de correo basura, utilizando para ello un filtro estadístico. Si supera todos los filtros, entonces se determina que el correo es válido y se emite a su receptor o se almacena en un buzón del servidor.

En esta sección vamos a explicar paso a paso en qué consiste cada uno de estos filtros y cómo se configuran en Zentyal.

Lista gris

Las listas grises [1] se aprovechan del funcionamiento esperado de un servidor de correo dedicado a spam para que por su propio comportamiento nos ayude a descartar o no los correos recibidos o, al menos, dificultar su envío.

Estos servidores están optimizados para poder enviar la mayor cantidad posible de correos en un tiempo mínimo. Para ello autogeneran mensajes que envían directamente sin preocuparse de si son recibidos. Cuando disponemos de un sistema de greylists (listas grises), los correos considerados como posible spam son rechazados, solicitando un reenvío, si el servidor es realmente un servidor spammer, probablemente no disponga de los mecanismos necesarios para manejar esta petición y por tanto el correo nunca llegará al destinatario, por el contrario, si el correo era legítimo, el servidor emisor no tendrá problema para reenviarlo.

[1]Zentyal usa postgrey (http://postgrey.schweikert.ch/) como gestor de esta política en postfix.

En el caso de Zentyal, la estrategia utilizada es fingir estar fuera de servicio. Cuando un servidor nuevo quiere enviarle un correo, Zentyal le dice “Estoy fuera de servicio en este momento, inténtalo en 300 segundos.[2], si el servidor remitente cumple la especificación reenviará el correo pasado ese tiempo y Zentyal lo apuntará como un servidor correcto.

En Zentyal, la lista gris exime al correo enviado desde redes internas, al enviado desde objetos con política de permitir retransmisión y al que tiene como remitente una dirección que se encuentra en la lista blanca del antispam.

[2]Realmente el servidor de correo envía como respuesta Greylisted, es decir, puesto en la lista gris en espera de permitir el envío de correo o no pasado el tiempo configurado.
Esquema del funcionamiento de una lista gris

Esquema del funcionamiento de una lista gris

El Greylist se configura desde Correo ‣ Lista gris con las siguientes opciones:

_images/05-greylist.png

Configuración de las listas grises

Habilitado:
Marcar para activar el greylisting.
Duración de la lista gris (segundos):
Segundos que debe esperar el servidor remitente antes de reenviar el correo.
Ventana de reintento (horas):
Tiempo en horas en el que el servidor remitente puede enviar correos. Si el servidor ha enviado algún correo durante ese tiempo, dicho servidor pasará a la lista gris. En una lista gris, el servidor de correo puede enviar todos los correos que quiera sin restricciones temporales.
Tiempo de vida de las entradas (días):
Días que se almacenarán los datos de los servidores evaluados en la lista gris. Si pasan más de los días configurados, cuando el servidor quiera volver a enviar correos tendrá que pasar de nuevo por el proceso de greylisting descrito anteriormente.

Verificadores de contenidos

El filtrado de contenido del correo corre a cargo de los antivirus y de los detectores de spam. Para realizar esta tarea Zentyal usa un interfaz entre el MTA [3] y dichos programas. Para ello, se usa el programa amavisd-new [4] para comprobar que el correo no es spam ni contiene virus.

Además, esta interfaz realiza las siguientes comprobaciones:

  • Listas blancas y negras de ficheros y extensiones.
  • Filtrado de correos con cabeceras mal-formadas.
[3]MTA: Mail Transfer Agent o Agente de Transferencia de Correo, software encargado de transferir los correos, postfix en el caso de Zentyal.
[4]Amavisd-new: http://www.ijs.si/software/amavisd/

Antivirus

El antivirus que usa Zentyal es ClamAV [5], el cual es un conjunto de herramientas antivirus especialmente diseñadas para escanear adjuntos en los correos electrónicos en un MTA. ClamAV posee un actualizador de base de datos que permite las actualizaciones programadas y firmas digitales a través del programa freshclam. Dicha base de datos se actualiza diariamente con los nuevos virus que se van encontrando. Además, el antivirus es capaz de escanear de forma nativa diversos formatos de fichero como por ejemplo comprimidos Zip, BinHex, PDF, etc.

[5]Clam Antivirus: http://www.clamav.net/

En Antivirus se puede comprobar si está instalado y actualizado el antivirus en el sistema.

Mensaje del antivirus

Mensaje del antivirus

Se puede actualizar desde Gestión de Software, como veremos en Actualización de software.

La instalación del módulo de antivirus es opcional, pero si se instala se podrá ver como se integra con varios módulos de Zentyal, aumentando las opciones de configuración de la seguridad en diversos servicios, como el filtro SMTP, el proxy POP, el proxy HTTP o la compartición de ficheros.

Antispam

El filtro antispam asigna a cada correo una puntuación de spam, si el correo alcanza la puntuación umbral de spam es considerado correo basura, si no, es considerado correo legítimo. A este último tipo de correo se le suele denominar ham.

El detector de spam usa las siguientes técnicas para asignar la puntuación:

  • Listas negras publicadas vía DNS (DNSBL).
  • Listas negras de URI que siguen los sitios Web de antispam.
  • Filtros basados en el checksum de los mensajes, comprobando mensajes que son idénticos pero con pequeñas variaciones.
  • Filtro bayesiano, un algoritmo estadístico que aprende de sus pasados errores a la hora de clasificar un correo como spam o ham.
  • Reglas estáticas.
  • Otros. [6]

Zentyal usa Spamassassin [7] como detector de spam.

[6]Existe una lista muy larga de técnicas antispam que se puede consultar en http://en.wikipedia.org/wiki/Anti-spam_techniques_(e-mail) (en inglés)
[7]The Powerful #1 Open-Source Spam Filter http://spamassassin.apache.org .

La configuración general del filtro se realiza desde Filtro de correo ‣ Antispam:

_images/12-antispam.png

Configuración de antispam

Umbral de spam:
Puntuación a partir de la cual un correo se considera como spam.
Etiqueta de asunto spam:
Etiqueta para añadir al asunto del correo en caso de que sea spam.
Usar clasificador bayesiano:
Si está marcado se empleará el filtro bayesiano, si no será ignorado.
Auto-lista blanca:
Tiene en cuenta el historial del remitente a la hora de puntuar el mensaje; si el remitente ha enviado mucho correo como ham es altamente probable que el próximo correo que envíe sea ham y no spam.
Auto-aprendizaje:
Si está marcado, el filtro aprenderá de los mensajes recibidos, cuya puntuación traspase los umbrales de auto-aprendizaje.
Umbral de auto-aprendizaje de spam:
Puntuación a partir de la cual el filtro aprenderá automáticamente un correo como spam. No es conveniente poner un valor bajo, ya que puede provocar posteriormente falsos positivos. Su valor debe ser mayor que Umbral de spam.
Umbral de auto-aprendizaje de ham:
Puntuación a partir de la cual el filtro aprenderá automáticamente un correo como ham. No es conveniente poner un valor alto, ya que puede provocar falsos negativos. Su valor debería ser menor que 0.

Desde Política de emisor podemos marcar los remitentes para que siempre se acepten sus correos (whitelist), para que siempre se marquen como spam (blacklist) o que siempre los procese el filtro antispam (procesar).

Desde Entrenar filtro de spam bayesiano podemos entrenar al filtro bayesiano enviándole un buzón de correo en formato Mbox [8] que únicamente contenga spam o ham. Existen en Internet muchos ficheros de ejemplo para entrenar al filtro bayesiano, pero suele ser más exacto entrenarlo con correo recibido en los lugares a proteger. Conforme más entrenado esté el filtro, mejor será el resultado de la decisión de tomar un correo como basura o no.

[8]Mbox y maildir son formatos de almacenamiento de correos electrónicos independientes del cliente de correo electrónico. En el primero todos los correos se almacenan en un único fichero y con el segundo formato, se almacenan en ficheros separados diferentes dentro de un directorio.

Listas de control basadas en ficheros

Es posible filtrar los ficheros adjuntos que se envían en los correos a través de Filtro de correo ‣ ACL por fichero (File Access Control Lists).

Allí podemos permitir o bloquear correos según las extensiones de los ficheros adjuntos o de sus tipos MIME.

_images/06-filter-files.png

Filtro de ficheros adjuntos

Filtrado de Correo SMTP

Desde Filtro de correo ‣ Filtro de correo SMTP se puede configurar el comportamiento de los filtros anteriores cuando Zentyal reciba correo por SMTP. Desde General podemos configurar el comportamiento general para todo el correo entrante:

Parámetros generales para el filtro SMTP

Parámetros generales para el filtro SMTP

Habilitado:
Marcar para activar el filtro SMTP.
Antivirus habilitado:
Marcar para que el filtro busque virus.
Antispam habilitado:
Marcar para que el filtro busque spam.
Puerto de servicio:
Puerto que ocupará el filtro SMTP.
Notificar los mensajes problemáticos que no son spam:
Podemos enviar notificaciones a una cuenta de correo cuando se reciben correos problemáticos que no son spam, por ejemplo con virus.

Desde Políticas de filtrado se puede configurar qué debe hacer el filtro con cada tipo de correo.

Políticas del filtrado SMTP

Políticas del filtrado SMTP

Por cada tipo de correo problemático, se pueden realizar las siguientes acciones:

Pass (Aprobar):
No hacer nada, dejar pasar el correo a su destinatario.
Reject (Rechazar):
Descartar el mensaje antes de que llegue al destinatario, avisando al remitente de que el mensaje ha sido descartado.
Bounce (Devolver):
Igual que Rechazar, pero adjuntando una copia del mensaje en la notificación.
Discard (Descartar):
Descarta el mensaje antes de que llegue al destinatario sin avisar al remitente.

Desde Dominios virtuales se puede configurar el comportamiento del filtro para los dominios virtuales de correo. Estas configuraciones sobreescriben las configuraciones generales definidas previamente.

Para personalizar la configuración de un dominio virtual de correo, pulsamos sobre Añadir nuevo.

Parámetros de filtrado por dominio virtual de correo

Parámetros de filtrado por dominio virtual de correo

Los parámetros que se pueden sobreescribir son los siguientes:

Dominio:
Dominio virtual que queremos personalizar. Tendremos disponibles aquellos que se hayan configurado en Correo ‣ Dominio Virtual.
Usar filtrado de virus / spam:
Si están activados se filtrarán los correos recibidos en ese dominio en busca de virus o spam respectivamente.
Umbral de spam:
Se puede usar la puntuación por defecto de corte para los correos spam, o un valor personalizado.
Aprender de las carpetas IMAP de spam de las cuentas:
Si esta activado, cuando mensajes de correo se coloquen en la carpeta de spam serán aprendidos por el filtro como spam. De manera similar si movemos un mensaje desde la carpeta de spam a una carpeta normal, sera aprendido como ham.
Cuenta de aprendizaje de *ham* / *spam*:
Si están activados se crearán las cuentas ham@dominio y spam@dominio respectivamente. Los usuarios pueden enviar correos a estas cuentas para entrenar al filtro. Todo el correo enviado a ham@dominio será aprendido como correo no spam, mientras que el correo enviado a spam@dominio será aprendido como spam.

Una vez añadido el dominio, se pueden añadir direcciones a su lista blanca, lista negra o que sea obligatorio procesar desde Política antispam para el emisor.

Listas de control de conexiones externas

Desde Filtro de correo ‣ Filtro de correo SMTP ‣ Conexiones externas se pueden configurar las conexiones desde MTAs externos mediante su dirección IP o nombre de dominio hacia el filtro de correo que se ha configurado usando Zentyal. De la misma manera, se puede permitir a esos MTAs externos filtrar el correo de aquellos dominios virtuales externos a Zentyal que se permitan a través de esta sección. De esta manera, Zentyal puede distribuir su carga en dos máquinas, una actuando como servidor de correo y otra como servidor para filtrar correo.

_images/13-external.png

Servidores de correo externos

Proxy transparente para buzones de correo POP3

Si Zentyal está configurado como un proxy transparente, puede filtrar el correo POP. La máquina Zentyal se colocará entre el verdadero servidor POP y el usuario filtrando el contenido descargado desde los servidores de correo (MTA). Para ello, Zentyal usa p3scan [9].

[9]Transparent POP proxy http://p3scan.sourceforge.net/

Desde Filtro de correo ‣ Proxy transparente POP se puede configurar el comportamiento del filtrado:

_images/10-filter-pop.png

Configurar el proxy transparente POP

Habilitado:
Si está marcada, se filtrará el correo POP.
Filtrar virus:
Si está marcada, se filtrará el correo POP en busca de virus.
Filtrar spam:
Si está marcada, se filtrará el correo POP en busca de spam.
Asunto spam del ISP:
Si el servidor de correo marca el spam con una cabecera, poniéndola aquí avisaremos al filtro para que tome los correos con esa cabecera como spam.