====== Docker Mailserver ======
**Docker Mailserver** es una solución completa y configurable para implementar un servidor de correo electrónico usando Docker. Combina componentes populares como Postfix (para SMTP), Dovecot (para IMAP/POP3), SpamAssassin/ClamAV (filtrado de spam/virus), OpenDKIM/OpenDMARC (autenticación de correo) y otras herramientas en un contenedor fácil de gestionar. Está diseñado para simplificar la configuración y el mantenimiento de un servidor de correo autoalojado.
* [[https://docker-mailserver.github.io/docker-mailserver/latest/|Sitio web]]
* [[https://github.com/docker-mailserver/docker-mailserver|Respositorio de código]]
===== Características =====
* **Todo en uno**: Incluye todos los servicios necesarios para un servidor de correo funcional.
* **Configuración mediante variables de entorno**: Permite personalizar el comportamiento sin modificar archivos internos.
* **Seguridad integrada**: Soporta SSL/TLS, SPF, DKIM, DMARC y filtrado antispam/antivirus.
* **Persistencia**: Los datos (correos, configuraciones, etc.) se almacenan en volúmenes Docker para no perderlos al reiniciar.
* **Herramientas de gestión**: Incluye scripts para crear usuarios, gestionar alias, configurar DKIM, etc.
===== Requisitos previos =====
Si tenemos contratado un dominio, debemos configurar los siguientes registros en el servidor DNS:
; Registro A:
mail IN A 10.11.12.13
; Registro MX:
@ IN MX 10 mail.example.com.
; Registro SPF:
@ IN TXT "v=spf1 mx -all"
El registro ''MX'' le dice a todo el mundo qué nombre es responsable de los correos en tu dominio.
El registro ''A'' le dice a todo el mundo qué dirección IP resuelve el nombre DNS ''mail.example.com''
Podemos verificar que la configuración es correcta utilizando el comando ''[[informatica:software:cli:dig|dig]]'':
dig @1.1.1.1 +short MX example.org
Nos debería devolver ''mail.example.org''.
Para verificar el registro ''A'':
dig @1.1.1.1 +short A mail.example.com
Nos tendría que devolver la IP ''11.22.33.44''.
===== Instalación =====
services:
mailserver:
image: ghcr.io/docker-mailserver/docker-mailserver:latest
container_name: mailserver
# Provide the FQDN of your mail server here (Your DNS MX record should point to this value)
hostname: mail.midominio.com
ports:
- "25:25" # SMTP (explicit TLS => STARTTLS, Authentication is DISABLED => use port 465/587 instead)
- "465:465" # ESMTP (implicit TLS)
- "587:587" # ESMTP (explicit TLS => STARTTLS)
- "993:993" # IMAP4 (implicit TLS)
volumes:
- ./docker-data/dms/mail-data/:/var/mail/
- ./docker-data/dms/mail-state/:/var/mail-state/
- ./docker-data/dms/mail-logs/:/var/log/mail/
- ./docker-data/dms/config/:/tmp/docker-mailserver/
- /etc/localtime:/etc/localtime:ro
environment:
- ENABLE_RSPAMD=1
- ENABLE_CLAMAV=1
- ENABLE_FAIL2BAN=1
cap_add:
- NET_ADMIN # For Fail2Ban to work
healthcheck:
test: "ss --listening --tcp | grep -P 'LISTEN.+:smtp' || exit 1"
timeout: 3s
retries: 0
restart: unless-stopped
===== Crear usuarios / cuentas de correo =====
docker exec -it setup email add usuario@midominio.com
Nos pedirá una contraseña para la nueva cuenta.
===== Generar claves DKIM =====
//DomainKeys Identified Mail// (DKIM) es un método de autenticación de correo diseñado para evitar el phising y spam.
Al utilizar DKIM, el correo entrante verificará e incluirá las firmas DKIM y el correo saliente irá firmado.
Para generar las claves es necesario tener una cuenta de correo ya creada.
Generación de claves con valores por defecto:
docker exec -it setup config dkim
Se habrá generado un fichero en ....
El contenido del fichero deberemos incluirlo en un registro DNS de tipo ''TXT''
* [[https://docker-mailserver.github.io/docker-mailserver/latest/config/best-practices/dkim_dmarc_spf/#dkim|Configuración DKIM en Docker Mailserver]]