Miscelánea

Webmail

Existen numerosos interfaces para consultar el correo via web, como por ejemplo Roundcube, Squirrelmail u Horde

Entrenar a spamassasin

Mediante una sencilla tarea de cron podemos entrenar a nuestro filtro antispam todas las noches, de forma que introduzca en su base de datos de spam o de ham, los correos de los buzones que le digamos.

La tarea se realiza con el comando sa-learn, y debe ejecutarse con el usuario amavis, de lo contrario la base de datos generada permanecerá en el directorio del usuario con que ejecutemos sa-learn. Por otra parte, el usuario amavis no puede ver el contenido de los buzones de los usuarios, así que pondremos en crontab una tarea similar a esta:


#!/bin/bash
cp -r /var/spool/cyrus/mail/domain/g/gadelek.com/p/user/pepito/Spam/ /tmp/Spam_pepito
cp -r /var/spool/cyrus/mail/domain/g/gadelek.com/f/user/fulanito/Spam/ /tmp/Spam_fulanito
chown amavis:amavis -R /tmp/Spam*
su amavis -c 'sa-learn --spam /tmp/Spam_pepito'
su amavis -c 'sa-learn --spam /tmp/Spam_fulanito'
rm -rf /tmp/Spam*

Podemos crear un script más complejo a base de un bucle que compruebe todos los buzones, pero eso queda a cargo del lector.

Sistemas de autenticación de correo saliente para evitar caer en filtros antispam de terceros. DKIM + SPF

Hace algún tiempo que se están implementando sistemas para certificar que el correo que sale de nuestro servidor es realmente nuestro, y que de este modo no vaya a parar a las bandejas de spam de otros proveedores. Los más difundidos, y por lo tanto los que trataré serán SPF y DKIM

Sender Policy Framework, SPF

SPF consiste en una entrada TXT en el registro @ de nuestro DNS, donde se indican las máquinas autorizadas a enviar correo. Cuando un correo llega a un destinatario habilitado para comprobar SPF, éste comprobará que la máquina que le envía el correo esté autorizada en el registro SPF del dominio remitente. De no estarlo, decartaría el correo (O lo enviaría a Spam)

Su configuración es muy sencilla. Solo tenemos que ir a la web de openspf y utilizar su asistente. En caso de no estar disponible podemos utilizar otros asistentes disponibles en internet, o seguir la documentación. Al finalizar tendremos el registro TXT que pondremos en nuestro DNS.

A modo de ejemplo, un registro TXT para permitir enviar correos sólo a la IP donde está alojado el dominio sería: "v=spf1 a -all"

Domainkeys Identified Mail, DKIM

DKIM es el resultado de la unión de Domainkeys, desarollado inicialmente por Yahoo y y las especificaciones de Cisco "Identified Internet Mail".

Resumiendo, se trata de generar una pareja de claves. La privada la usará nuestro servidor de correo para firmar los correos salientes, y la pública la usará el servidor de correo del destinatario para verificar que el correo realmente procede de nuestro dominio, y no de otro. Para ello la clave pública se hallará en una entrada de nuestro DNS en forma de registro TXT

Importante

Cabe destacar que la comprobación se realiza sobre el campo return-path en lugar de "From", de modo que es técnicamente posible enviar correos firmados con un "From" falso, siempre que la dirección del campo "return-path" se corresponda con la firma

Configuración del servidor para que firme los correos salientes:

Descargamos dkim-milter, en el momento de este howto la versión 2.4.4. Compilamos con make && make install (requerida la librería libmilter-dev), y generamos clave y registro TXT con el script dkim-genkey.sh.

Creamos el usuario para dkim con el comando:


adduser --quiet --system --group --home /var/run/dkim-filter dkim-filter

Ahora usaremos el fichero de configuración y de inicio de Ubuntu. Los tenemos aqui. En el fichero de configuración dkim-filter.conf ajustaremos los valores de nuestro dominio, lugar donde se encuentra la clave privada y "selector", que explicaré más adelante. En el fichero de init.d se especifica si queremos que funcione mediante un socket o un puerto inet. Como no fui capaz de que funcionara como socket, a pesar de existir y tener los permisos correctos, lo puse como inet.


SOCKET="inet:8891@localhost"

En Postfix, añadimos al final de main.cf


smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891

El registro DNS tendrá que ser del estilo $selector._domainkey.dominio.com

El selector es un valor que sirve para permitir múltiples claves en la misma organización. De este modo podemos tener firmas independientes entre departamentos, rangos de fecha, o para terceras partes actuando en nuestro nombre. En mi caso usé el selector "internal" (Dado que se trata de un servidor interno), de modo que agregué el contenido de internal.txt (resultante de generar las claves) al TXT del subdominio internal._domainkey.jesusvillaverde.com

Y esto es todo lo necesario. Ahora si enviamos un correo a gmail, podremos ver en las cabeceras que pasa correctamente los filtros SPF y DKIM

Consideraciones a tener en cuenta usando imap y diferentes clientes de correo.

Esto es aplicable especialmente cuando varias personas con distintos clientes de correo acceden al mismo buzón

Tuve algunos problemas de compatibilidad entre clientes de correo a la hora de borrar mensajes, ya que normalmente se usa Evolution en la empresa, pero me interesaba poder visualizar los mails desde otros clientes. De este modo, probé OperaMail, kmail, mozilla mail y Outlook Express. Los resultados fueron que entre Evolution y Outlook Express la compatibilidad fue excelente, ya que los mensajes borrados, aparecen tachados en ambos clientes, y en la papelera de ambos.

Problemas comunes