# Como configurar un servidor de correos con Docker y Traefik

in #spanish5 years ago (edited)

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, Este articulo es de mi autoría dejo referencias de mi blog personal donde lo escribí originalmente.

SaiyansBlog

Dependencias usadas:

-Docker
-Docker-compose
-Traefik
-Una cuenta en mailjet.com

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.

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.

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

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

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

Este enlace lo llevara directamente a la página para su registro. Use su correo [email protected] 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.

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

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.

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).

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.

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í:

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 podremos fijarnos.

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 Dnsgoodies podremos fijarnos. El resultado debe ser como el de la imagen.

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

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

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

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

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 varios meses en test y sigue funcionando perfecto.

Sort:  

Congratulations @tomasmetal23! You received a personal award!

Happy Birthday! - You are on the Steem blockchain for 2 years!

You can view your badges on your Steem Board and compare to others on the Steem Ranking

Vote for @Steemitboard as a witness to get one more award and increased upvotes!