Stack de correo electrónico completo con NodeJS (Haraka + Wildduck) y Docker

En esta entrada se explica como montar tu propio stack de correo electrónico (e-mail) casero con Docker, para ello usamos el software de los proyectos: Haraka y Wildduck, que juntos configuran el stack completo de servicios de correo: SMTP, POP, SMTPS, IMAP y webmail.

Como vamos a montarlo con Docker nos hacemos con el proyecto oficial de nodemailer wildduck-dockerized que ya viene preparado para desplegarlo con los servicios en contenedores independientes. Necesitaremos docker-compose para levantarlo.

Clonamos el repositorio:

$ git clone https://github.com/nodemailer/wildduck-dockerized

Se ejecuta el script de instalación setup.sh y crea el archivo .env, hay que editar la configuración necesaria de los servicios, una vez completada la configuración ejecutamos:

$ docker-compose up -d
Creating redis ... done
Creating mongo ... done
Creating rspamd           ... done
Creating zonemta-wildduck ... done
Creating wildduck         ... done
Creating haraka           ... done
Creating wildduck-webmail ... done

Y así se levanta el stack completo de contenedores, también crea un contenedor con el servicio traefik que hace de servicio proxy en todos los puertos del stack, así tenemos métricas y mucha información de la utilización, aparte de crear los certificados letsencrypt para securizar las conexiones.

Otra forma de poder arrancar el stack, como le gusta a Louis es:

$ mkdir wildduck-dockerized
$ cd wildduck-dockerized
$ docker run --rm -v "${PWD}:/wildduck-dockerized" nodemailer/wildduck-dockerized-setup domainname [hostname]

Así no se necesita clonar nada ni tener git instalado, gracias a louis-lau por currarse el proyecto de dockerizado.