fdm, Scripts Y Correo

El objetivo final de esto es ir revisando el correo y realizar acciones por medio de scripts en función de lo que se reciba.

En esta primera parte voy a preparar la recepción del correo. Para esto usaré fdm. Para hacerlo un poco más portable lo voy a instalar dentro de un contenedor, así lo podremos usar independientemente del sistema, siempre y cuando tenga Docker. Me interesa usarlo tanto en Red Hat como en Debian.

Este es el Dockerfile que voy a usar:

FROM debian:latest
MAINTAINER Xuacu <[email protected]>

RUN apt-get update && apt-get upgrade -y && apt-get install fdm -y && apt-get clean && apt-get autoclean && rm -fr /var/lib/apt/lists/*

COPY fdm.conf /etc/fdm.conf

RUN chmod 600 /etc/fdm.conf

CMD ["/usr/bin/fdm", "-kv", "poll"]

Partiendo de la última imagen de Debian, se actualiza por si acaso, se instala el fdm y se limpian los temporales que hayan podido quedar de la actualización.

Después le ponemos el archivo de configuración que va a usar, que es donde van las configuraciones de las cuentas y alguna otra cosa.

Lo dejamos con los permisos necesarios para funcionar, de lo contrario no arranca.

Y por último se ejecuta la acción que hace falta. En este ejemplo: -k conserva el mail en el buzón, -v verbose y poll que hace una consulta

Después el archivo fdm.conf

$path = "/tmp/%h/Mail"

action "inbox" mbox "%h/mail/INBOX"

set verify-certificates

account "gmail" imaps server "imap.gmail.com" port "993"
	user "[email protected]" pass "Pa$$w0rd"
	new-only
	no-verify

match all action "inbox"

Y finalmente podemos lanzar la construcción de la imagen:

docker build -t fdm_poll .

Y la primera consulta:

docker run fdm_poll

Haciéndolo así lo que pasa es que se crea un contenedor cada vez, y como realmente, son de usar y tirar, porque lo que queremos es la ejecución del comando, no es necesario guardar el contenedor, con la imagen es suficiente.

Entonces para ejecutar sin que el contenedor se quede almacenado le añadimos un –rm que borrará el contenedor tras la ejecución:

docker run --rm fdm_poll

Hasta aquí ya estaría funcionando. Después habrá que hacer que descargue los mails, parsearlos y ver que acciones podemos querer que disparen.