14 de Diciembre, 2004

Centralizando el correo

La verdad es que esta anotación ha tomado un rumbo inesperado. Lo que explico aquí es más un mail hub o concentrador de correo, y no tiene que ver en realidad con un MFG (Mail Filter Gateway). Es decir, para mi caso particular sí es buena idea, aunque no es obligatorio. Ya explicaré en otro texto, con más profundidad, de que va todo esto.

Hace tiempo que quería montar un MFG en blackshell, pero ya se sabe eso de la pereza y tal.

Tengo intención de probar algunas soluciones de filtrado de correo para controlar correo basura (virus y spam). Esto podría hacerlo ya, pero como en blackshell apenas se recibe correo de estas características, pues no tiene mucho sentido.

Tampoco es plan de pedir correo no solicitado (cosa contradictoria ;)), así que como da la casualidad de que tengo cuentas de correo en otros servidores que sí reciben basura, pues voy a centralizar todos los servicios de correo aquí en casa.

Para ello el primer paso es que el correo de mi proveedor se entregue a mi cuenta local en blackshell. Para eso empleo fetchmail, que por lo general va bastante bien. A algún cliente se lo he puesto y estoy satisfecho con los resultados.

Como uso OpenBSD, pues tiro de port:

FTP_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/3.6/packages/i386
# pkg_add $FTP_PATH/fetchmail-6.2.5.tgz
Adding .../pub/OpenBSD/3.6/packages/i386/fetchmail-6.2.5.tgz
Dependencies for fetchmail-6.2.5 resolve to:\
 gettext-0.10.40p1,libiconv-1.9.1,gettext-0.10.40p1

Este programa se puede configurar de muchas formas: por usuario, para el sistema, desde cron, como demonio, etc.

Voy a configurarlo de la forma más abierta para posibilitar que otros usuarios usen mi MFG. He elegido que corra como un demonio independiente y que coja la configuración para todo el sistema.

Creamos un grupo y un usuario para correr el servicio:

# groupadd fetchmail
# useradd -g fetchmail -c 'fetchmail daemon' -d /var/run/fetchmail -s\
 /sbin/nologin fetchmail

Ahora creamos los directorios necesarios ajustando sus permisos, añadiendo la correpondiente linea en nuestro /etc/rc.local para que el servicio se ejecute en cada arranque:

# fetchmail
if [ X"${fetchmail}" != X"NO" -a -x /usr/local/bin/fetchmail ]; then
	# prepara en entorno
	mkdir /var/run/fetchmail
	chown fetchmail:fetchmail /var/run/fetchmail
	chmod 700 /var/run/fetchmail

        echo -n " fetchmail"; cd /var/run/fetchmail && /usr/bin/env -i\
 HOME=/var/run/fetchmail su -m fetchmail -c\
 "/usr/local/bin/fetchmail --daemon 300 --syslog -f /etc/fetchmailrc"
fi

Que conste que se puede hacer de otras formas. fetchmail puede correr como root, o incluso podemos darle shell al usuario fetchmail.

Lo activamos en nuestro /etc/rc.conf.local añadiendo:

# NO para desactivar
fetchmail=""

Ahora solo nos falta crear /etc/fetchmailrc con la configuración pertinente.

fetchmail es uno de los programas más fácil de configurar que conozco, y no porque no se puedan indicar cosas, sino por el formato que emplea:

poll mail.usebox.net with proto pop3
        user 'usuario' there with password 'pswd' to reidrac here

Le decimos que en el servidor POP3 en mail.usebox.net el usuario usuario con contraseña pswd es el usuario reidrac aquí.

IMPORTANTE: no queremos que la contraseña que hay en el fichero de configuración sea lejible por quien no deba:

# chown fetchmail:fetchmail /etc/fetchmailrc
# chmod 600 /etc/fetchmailrc

Y con esto ya tenemos todo montado.

Se puede comprobar que todo funciona ojeando los logs en /var/log/maillog.

He intentado formatear el log para que se lea bien, pero no hay manera :(. Se entiende bastante bien en consola, porque se ve como fetchmail recoge el correo y lo entrega local, pero no es un texto adecuado para ponerlo aquí.

Una vez que tenemos todo el correo en el mismo sitio, pasaremos a realizar tareas de filtrado. Con esto se completa la primera fase de montaje de mi MFG :).

Nota: Estos pasos son para OpenBSD, otros distribuidores de Software Libre pueden requerir otros pasos. Los empaquetadores de ports no suelen tomar decisiones por el administrador, como en este caso, y no se suelen crear usuarios en la instalación del paquete si no es estrictamente necesario.

NOTA: Las tres lineas que preparan el entorno de fetchmail ahora están en /etc/rc.local. No recordaba que rc limpia todo el contenido de /var/run al arrancar el sistema. El error correspondiente me lo ha recordado cuando he reiniciado esta mañana :P.

Anotación por Juan J. Martínez.

Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.