Como configurar un servidor de correos con Docker y Traefik

imagen de titulo

Esta guía es una recopilación y adaptación personal de como crear un servidor de correos con docker y traefik usando también el contenedor free que nos ofrece poste.io.

Dependencias usadas:

  • Docker
  • Docker-compose
  • Traefik
  • Una cuenta en mailjet.com (supongo que también se podría usar con el smtp de yandex).

Empezamos…

1. Clonamos el docker-compose y accedemos al directorio donde se encuentre.

git clone https://github.com/tomasmetal23/posteiomailserver.git

2. Abrimos los puertos que usaremos en el firewall, se recomienda que use los recomendados, los SSL 443 SMTPs, 993 IMAPs, 995 POP3s y TLS 587 SMTPs legacy, el puerto 25 debe estar filtrado de modo que pueda recibir emails pero no enviar.

servidor de correos con docker

Si configuramos un buen firewall como el de un proveedor vps, no tendremos problemas con los puertos 25 y 587 permitiéndonos usar TLS. (en mi caso uso Vultr link de referencia)

Este contenedor viene en modo bridge por lo cual necesitaremos abrir otros puertos alternativos para el puerto HTTP y el HTTPS, los cuales serán usados por Let’s Encrypt y están ocupados en el host por el Traefik. En mi caso, escogí el 81 en host como HTTP y el 8443 como HTTPS, estos están conectados directamente al puerto 80 y 443 del contenedor.

servidor de correos con docker

Ojo, atentos a su configuracion del firewall hubo un momento donde lo tuve mal configurado y fui atacado por spamers colocandome en una lista negra y mi proveedor VPS me bloqueo el puerto 25 impidiéndome así enviar correos electrónicos.

3. Ya habiendo modificado el docker-compose ejecutamos:

 docker-compose up -d

servidor de correos con docker
Como pueden ver en la imagen todo va bien y se descarga, crea y ejecuta nuestro contenedor, cabe mencionar que en mi caso uso firewalld y es necesario hacerle un restart luego de levantar

Si abren el monitor del traefik podrán verificar los fronts y backends nos vamos a nuestro navegador y ejecutamos posteio.ejemplo.com

Creación de nuestro correo administrador

Crean su cuenta administrador como en la imagen y seguimos ahora con el registro en mailjet.

Servidor de correos (mail server) SMTP con Mailjet

Regístrese en mailjet.com.

Este enlace lo llevara directamente a la página para su registro. Use su correo ejemplo@ejemplo.com para registrarse ya debe poder recibir correos si tiene todo bien en su registro DNS, diríjase a la dirección webmail.ejemplo.com para validar su cuenta de mailjet.

roudcube como nuestro cliente mail via web
Acceda al correo y valide su cuenta mailjet

El proceso de registro en mailjet es muy fácil, cualquier problema o inconveniente, nos vamos a https://app.mailjet.com/account

configuración de la cuenta mailjet, agregar dominios, registro SPF/DKIM y la api smtp que necesitaremos.

Seguimos los pasos por numero:

  1. Agregamos nuestro dominio, en mi caso lo hice con un registro TXT en mi tabla DNS.
  2. Agregamos los registros SPF y DKIM que nos proporcionará mailjet en el segundo paso a nuestra tabla DNS.
  3. En la tercera opción obtendremos nuestro usuario, contraseña y dirección SMTP.
parámetros smtp necesarios, básicamente es la cuenta, contraseña y dirección del servidor smtp.

Volvemos de nuevo a nuestro posteio.ejemplo.com y seguimos los pasos para culminar la configuración SMTP de nuestro servidor de correos (mail server).

servidor de correos con docker
Acá colocaremos la API que tomamos en mail-jet, el puerto que queremos usar para comunicarnos y la dirección del servidor smtp.

Seguimos el número de los pasos, rellenamos con nuestros datos los campos y finalmente, salvamos en el botón Save Changes.

servidor de correos con docker
Panel de direcciones mail de remitentes. Reiniciamos el contendor, nuestro firewall y agregamos las direcciones de remitentes en https://app.mailjet.com/account/sender

Esto es muy bueno e interesante ya que si un spamer se logra colar no podrá enviar mails si no esta validado aquí:

servidor de correos con docker
Agregar la información sobre las direcciones email de remitente que validaremos.

Test DNS y open relay de nuestro servidor de correos con Docker

Debemos chequear que nuestra configuración dns esta bien, en mxtoolbox.com podremos fijarnos.

servidor de correos con docker
Mxtoolbox website donde verificamos los problemas de nuestra configuración dns. Como ven no hay ningún error.

También debemos chequear que nuestro firewall esta bien configurado. Para probar que nuestro servidor de correos no funcione como open relay y permita enviar emails sin confirmación.

En http://www.dnsgoodies.com/ podremos fijarnos el resultado debe ser como el de la imagen

servidor de correos con docker

Por último, las prueba de los emails, envíos a Gmail (ejemplo).

servidor de correos con docker
Estadísticas de nuestra Dashboard. Esta es el dashboard para gestionar las configuraciones del servidor de correo, creación de cuentas email, seguridad, relay, blacklist y otros.

Recibido en Gmail

servidor de correos con docker
Prueba de recepción de emails en gmail con el smtp mail-jet.

Por ultimo, el monitor y gestor del filtro antispam rspamd:

servidor de correos de docker
Donde conseguir la UI web del filtro anti-spam.
Ui Web del filtro mail antispam rspamd.

Espero que les funcione muy bien, cualquier duda o posible mejora me lo comentan para que mejoremos este pequeño experimento para configurar un servidor de correos con Docker y Traefik. Lo cual puede ser de mucha ayuda.

Hasta los momentos a mi me ha funcionado de maravilla.

¡Saludos! puede donar un café al @saiyansteam.

Buy me a coffeeBuy me a coffee
Administrador de sistemas, un curioso amante de las tecnologías.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *