zimbra y spamassessin: bajar los niveles de las puntuaciones

20 de abril de 2008

Zimbra trae una configuración por defecto en Spamassessin que puede o no ser la adecuada para cada empresa.
En mi caso, con el tiempo me di cuenta que no era así y tuve que comenzar a ir modificando parámetros cuando empezaron a detectarse correo validos como spam (fasos positivos). Imagínate si trabajas en un sexshop o en una farmacia; tendrías un montón de correos validos que los detectaría como spam y por tanto estarías obligado a modificar todos los parámetros de spamassessin para ajustarlos a tu política.

Para entendernos mejor empezaremos con un mail que ha sido analizado por Spamassessin. Cualquier mail que pase por Zimbra encontraremos en el cuerpo del mail algo como (el resto de headers no interesan ahora mismo):

   ...
   X-Spam-Flag: YES
   X-Spam-Score: 10.565
   X-Spam-Level: **********
   X-Spam-Status: Yes, score=10.565 tagged_above=-10 required=4
      tests=[BAYES_99=3.5, FH_HOST_ALMOST_IP=1.751, RCVD_IN_PBL=0.905,
      RCVD_IN_SORBS_DUL=0.877, RCVD_IN_XBL=2.033, URIBL_SBL=1.499]
   ...
Este mail a sido detectado como Spam porque a recibido una puntuación de 10.565. Dado que esta puntuación es mayor que required=4 se marca como spam. Los test que ha hecho spamassessin para detectar que esto es una spam son: BAYES_99, FH_HOST_ALMOST_IP, RCVD_IN_PBL, RCVD_IN_SORBS_DUL, RCVD_IN_XBL, URIBL_SBL. Cada uno de estos test está configurado para recibir una puntuación en caso de darse cierto el test.

En esta pagina podéis encontrar todos los tests, que hace cada uno de ello y la puntuación que recibe.

Volviendo a mi problema, si un correo es detectado como spam tenemos 4 posibilidades:

1. Ir al Webmail del usuario, entrar dentro de la carpeta Basura (Junk), seleccionar el correo detectado como basura y pulsar sobre el botón "No basura".
2. Modificar los parámetros generales para especificar la puntuación mínima para un spam.
3. Añadir al usuario a una lista blanca.
4. Modificar los scores para los diferentes test que hace el spamassessin.

La primera solución parece la más correcta porque le decimos a Zimbra que ese correo no lo detecte como spam, pero en mi caso no funciona porque el 99% de los usuarios acceden por Outlook y por tanto esta funcionalidad no la pueden usar.
Para la segunda opción si ejecutamos "./zmprov gacf" o entramos en la Web de administración de Zimbra, tendremos dos parámetros por los cuales se define cuando un correo es spam. Estos dos parámetros son:
   zimbraSpamKillPercent: 75
   zimbraSpamTagPercent: 20
El SpamTag define cuando un correo es considerado Spam y el otro cuando es considerado spam y por tanto debe eliminarse directamente (no aparece ni en la carpeta Basura del usuario).

En ejemplo anterior son necesarios 4 puntos para marcar el correo como spam. Este valor sale de:

   ZimbraSpamTagPercent * 20% = 20 * 0,2  = 4
Por el otro lado tenemos que 15 son los puntos necesarios para eliminar el correo:
   ZimbraSpamKillPercent * 20% = 75 * 0,2 = 15
Por tanto cambiando el valor de estos dos parámetros (con el comando zmprov o desde la Web de administración) podemos cambiar el comportamiento del spam.

Para el tercer método, añadiremos al remitente a una lista blanca. En mi caso tuve muchos problemas con todos los mails que vienen de amadeus.net. Esta empresa es la que gestiona todas las reservas de billetes de avión, hoteles, barcos, etc, y por tanto todos los mails de confirmaciones de billetes iban al spam. Era necesario evitar esto. Para ello hay que meter este dominio dentro del archivo /opt/zimbra/conf/spamassessin/60_whitelist.cf

Hay que añadir al final del archivo algo como esto y reiniciar Zimbra (o reiniciar el Amavis):

   whitelist_from_rcvd *@*.amadeus.net   amadeus.net
Recomiendo echar un vistazo a todos los archivos de esta carpeta.

Para finalizar, la cuarta opción es modificar los scores directamente dependiendo de nuestras necesidades. Para ello necesitamos saber que scores cambiar y que es lo que hace ese test para recibir ese score. Si editamos /opt/zimbra/conf/spamassession/50_scores.cf podremos ver las diferentes puntuaciones asignadas a las tests.

Por ejemplo, dado la naturaleza de mis correos, muchos correos se envían por el asunto en mayúsculas o sin asunto y el spamassession le asigna un puntuación un poco alta. Entonces lo que podemos hacer es (por ejemplo) bajar un punto a las pruebas MISSING_SUBJECT y SUBJ_ALL_CAPS.

Ahora solo tendremos que reiniciar el Zimbra y hacer una prueba para ver como cambian las puntuaciones en el mail sin nuestras modificaciones y con las nueva modificaciones.

1 comentarios:

Debian Drake dijo...

donde veo amperis los mensajes que no me llegan la carpeta spam del cliente

saludos