Servidor de correo | ||
---|---|---|
Anterior |
Existen numerosos interfaces para consultar el correo via web, como por ejemplo Roundcube, Squirrelmail u Horde
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.
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
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"
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
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
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.
En Evolution:
Si usamos pop3, los mensajes borrados quedan marcados (dentro de cada mensaje) como X-Evolution:xxxxxxxx-xx12, y los mensajes no borrados como X-Evolution:xxxxxxxx-xx10
Con IMAP, los marca cambiando el nombre del fichero en el servidor, añadiéndoles una T al final del nombre. En el programa aparecen en la papelera. Además, al abrir la cuenta desde otro cliente de correo (salvo Outlook), automáticamente se borran (de forma definitiva) los mensajes que evolution marca como borrados pero conserva en la papelera.
En Opera:
Todos los mails borrados quedan en inbox (en la carpeta inbox del servidor IMAP), pero opera los marca en otro fichero (en formato binario) para que no aparezcan en la bandeja de entrada, hasta que se eliminan de la papelera, es entonces cuando los elimina de la carpeta inbox del servidor. De este modo desde otros clientes no vemos esos mensajes como borrados.
Además, si se eliminan mensajes mediante otro programa, luego se recuperan, y se intentan ver desde opera, no aparecen.
En Mozilla:
Al borrarlos, los mueve a Trash, con lo cual se pueden ver desde otros clientes sin problemas, y courier-imapd se encarga de eliminarlos cada 7 días. (U otro tiempo a especificar en el fichero de configuración)
En Kmail:
Al borrarlos, desaparecen directamente.
Problema:No conseguimos autenticarnos con cyradm. Hemos comprobado todo lo relacionado con saslauthd, y los usuarios/claves en sasldb están bien.
Solución: Comprueba los permisos de /etc/sasldb. Probablemente pertenezca a root:root, cuando debería pertenecer a root:sasl
Problema:No llegan los mensajes a los buzones de cyrus, pero según postfix el mensaje fue entregado correctamente.
Solución: Comprueba que tengas un transporte (/etc/postfix/transports) para el dominio al que va dirigido el correo. Si postfix no encuentra un transporte adecuado, se comportará como si todo estuviese correcto, pero el mensaje se perderá.
Problema:Sieve no funciona, hay problemas para iniciar la sesión tanto desde websieve como desde sieveshell.
Solución: Comprobaremos que tenemos instalados los módulos de sasl, libsasl-modules, y que correspondan con la versión de imapd
Problema:Los mensajes que sieve manda a carpetas distintas de Inbox no se reciben al pulsar el botón de "enviar y recibir" en el cliente de correo.
En thunderbird, solucionamos esto desde las propiedades de las carpetas distintas de inbox donde vayan a llegar mensajes nuevos. Hay una casilla para comprobar automáticamente el correo en dichas carpetas.