Cómo configurar un servidor de correo Docker paso a paso
Un servidor de correo dedicado te permite tener el control absoluto de tus comunicaciones digitales. En esta guía aprenderás cómo configurar tu propio servidor de correo electrónico con Docker, gracias a una presentación detallada de todos los pasos, desde los requisitos iniciales y las recomendaciones de seguridad hasta un tutorial detallado paso a paso. Con las pilas de contenedores de Docker listas para usar, como Docker mail server, desplegar una solución de correo segura y escalable es ahora más fácil que nunca.
¿Qué es un servidor de correo con Docker?
Un servidor de correo con Docker es una solución de correo electrónico autoalojada que funciona en contenedores con Docker. Permite enviar, recibir y almacenar correos, con total control sobre la privacidad de los datos, las políticas de seguridad y la configuración del sistema. A diferencia de servicios externos como Gmail o Outlook, un servidor de correo con Docker te da el control completo de tu infraestructura, lo que lo convierte en una opción ideal para desarrolladores, usuarios que valoran la privacidad y pequeñas empresas.
¿Por qué usar Docker para un servidor de correo?
Utilizar Docker para alojar tu servidor de correo tiene varias ventajas clave:
- Aislamiento y seguridad: los contenedores de Docker aíslan el servidor de correo del resto del sistema, lo que reduce el riesgo de comprometer todo el entorno y mejora la seguridad.
- Portabilidad: los contenedores se pueden mover fácilmente entre distintos entornos, garantizando una configuración coherente tanto en servidores locales como en la nube.
- Despliegue simplificado: Docker ofrece pilas (o stacks) preconfiguradas que simplifican el proceso de instalación y evitan configuraciones manuales complejas.
- Escalabilidad: es posible escalar fácilmente los contenedores para adaptarse al crecimiento del tráfico de correo y a las necesidades cambiantes de recursos.
- Control de versiones: puedes especificar versiones concretas de las imágenes Docker para evitar problemas de compatibilidad y facilitar posibles retrocesos.
- Consistencia entre entornos: Docker asegura una configuración uniforme en los entornos de desarrollo, pruebas y producción.
- Con los estándares más altos de seguridad
- Cifrado automático con SSL/TLS
- Data centers georredundantes con certificado ISO 27001
- IMAP & SMTP
¿Cuáles son los requisitos para ejecutar un servidor de correo con Docker?
Esta guía está dirigida a usuarios con conocimientos técnicos, familiarizados con Linux y Docker, que buscan una infraestructura de correo electrónico privada y flexible. Es especialmente útil para desarrolladores, administradores de sistemas y pequeñas empresas.
Para alojar tu propio servidor de correo con Docker, necesitarás recursos de hardware suficientes, en función del volumen de correos esperado. Es imprescindible disponer de una dirección IPv4 estática para garantizar una comunicación fluida del servidor de correo. Además, es fundamental configurar correctamente los registros DNS, incluidos MX, SPF, DKIM y DMARC. El soporte para IPv6 es cada vez más importante, ya que mejora la compatibilidad y la reputación del servidor de correo.
Tecnologías recomendadas actualmente:
- Imagen Docker:
docker-mailserver/docker-mailserver:v13.2+
- Protocolos de correo: SMTP (puertos 25, 587, 465), IMAPS (993), POP3S (995)
- Estándares de seguridad: TLS 1.3, DKIM, SPF, DMARC, DNSSEC (si es compatible)
- Sistema operativo del host: Ubuntu 22.04 LTS, Debian 12 u otras distribuciones Linux estables equivalentes
Puedes simplificar todo el proceso utilizando Docker mail server, una pila de código abierto muy popular, mantenida por la comunidad. Incluye Postfix, Dovecot, rspamd, ClamAV e integración opcional con LDAP, todo en un único contenedor.
¿Qué debes tener en cuenta al configurar un servidor de correo con Docker?
Recomendaciones de seguridad
Para proteger tu servidor de correo, es fundamental aplicar una configuración de seguridad sólida y coherente, que incluya lo siguiente:
- Utiliza certificados TLS actualizados (como mínimo TLS 1.2, preferiblemente TLS 1.3).
- Configura y aplica políticas SPF, DKIM y DMARC.
- Implementa límites de envío y autenticación mediante SASL.
- Habilita conexiones cifradas para IMAP/POP3 y SMTP.
- Configura un sistema de registros con herramientas como rsyslog y una rotación estructurada de logs.
Aunque utilices una configuración en contenedores con Docker, es imprescindible aplicar medidas de seguridad adicionales. Docker facilita la instalación, pero no sustituye el refuerzo del sistema mediante firewalls, gestión estricta de permisos, registro de eventos (por ejemplo, con rsyslog) y actualizaciones regulares del sistema.
Recomendaciones generales para la configuración
Montar un servidor de correo con Docker requiere conocimientos técnicos y una configuración de seguridad cuidadosa. A continuación, algunos aspectos clave a tener en cuenta:
- Elegir una imagen de Docker adecuada y una pila de servidor de correo fiable (por ejemplo,
docker-mailserver/docker-mailserver
). - Configurar correctamente los registros DNS (MX, SPF, DKIM, DMARC).
- Proteger el host de Docker (con firewall, Fail2Ban, cifrado, etc.).
- Seleccionar herramientas adecuadas de administración y monitorización.
- Aplicar actualizaciones y copias de seguridad con regularidad (incluidas las imágenes Docker).
- Configurar registros reverse DNS y soporte para IPv6.
- Cumplir con los requisitos legales vigentes (como el RGPD o el archivado legal de correos electrónicos).
¿Qué hardware se necesita?
Para ejecutar tu propio servidor de correo con Docker, es imprescindible contar con el hardware adecuado. El rendimiento necesario depende de varios factores, como el número de correos enviados al día o cuántas personas utilizarán el servidor. Aunque los contenedores Docker son ligeros, es importante tener en cuenta el uso de RAM, CPU y almacenamiento. Si además se utilizan servicios adicionales como copias de seguridad o filtros de contenido (por ejemplo, para proteger frente a spam o phishing), se necesitarán más recursos. También es fundamental disponer de una dirección IPv4 estática, ya que las direcciones dinámicas pueden generar problemas en la entrega de correos al interactuar con otros servidores.
¿Quieres darle a tu servidor de correo con Docker un toque profesional y personalizado? Entonces necesitas un dominio propio. Registra tu dominio personal con IONOS y obtén también un certificado SSL/TLS para tu servidor de correo.
A la hora de elegir el entorno adecuado para tu servidor de correo con Docker, es importante evaluar bien los recursos necesarios. Una configuración sencilla puede gestionar unos pocos correos al día, mientras que un servidor de empresa con alto volumen requerirá bastante más RAM, CPU y capacidad de almacenamiento.
Ya uses Windows o Linux, no olvides tener en cuenta los recursos que necesita el sistema operativo base.
Escenario del servidor de correo | Hardware recomendado | Plan sugerido de IONOS |
---|---|---|
Servidor doméstico con poco tráfico | 2 vCores, 8 GB de RAM, 240 GB SSD | Servidor Virtual Cloud L de IONOS |
Servidor para una pequeña empresa (hasta 1000 correos/día) | 8 vCores, 16 GB de RAM, 480 GB SSD | Servidor Virtual Cloud XL de IONOS |
Servidor empresarial (más de 50 000 correos/día) | 6 vCores, 32 GB de RAM, 2 × 480 GB SSD en RAID | Servidor Dedicado AMD de IONOS |
Con un servidor dedicado, dispones de hardware profesional reservado exclusivamente para ti. En cambio, los servidores virtuales y los servidores cloud utilizan recursos virtualizados compartidos con otros clientes, sin que ello suponga una pérdida de rendimiento.
Cómo configurar un servidor de correo con Docker paso a paso
En este tutorial hemos elegido el popular contenedor Docker docker-mailserver.
Este contenedor ligero y de código abierto (licencia MIT) ofrece una pila modular y lista para usar para poner en marcha tu propio servidor de correo. Integra todos los componentes esenciales, como un servidor SMTP, un servidor IMAP o POP3, protección antispam y antivirus opcional, y, si lo necesitas, un servicio de directorio LDAP.
Paso 1: obtener la imagen de Docker
Puedes descargar la última imagen de docker-mailserver desde el directorio oficial de Docker Hub o desde el repositorio oficial de GitHub.
Se recomienda usar una versión estable, como v13.2
, en lugar de las etiquetas :latest
o :edge
.
Ejecuta el siguiente comando para descargar la imagen:
docker pull mailserver/docker-mailserver:v13.2
# or:
docker pull ghcr.io/docker-mailserver/docker-mailserver:v13.2
bash Paso 2: configurar docker-compose.yml
A continuación, debes configurar el archivo docker-compose.yml
para definir los servicios y volúmenes necesarios para el contenedor Docker. Aquí tienes un ejemplo de configuración para tu servidor de correo:
version: '3.8'
services:
mailserver:
image: docker.io/mailserver/docker-mailserver:v13.2
container_name: mailserver
hostname: mail-server
domainname: example.com
ports:
- "25:25"
- "587:587"
- "465:465"
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/
- ./docker-data/nginx-proxy/certs/:/etc/letsencrypt/
- /etc/localtime:/etc/localtime:ro
environment:
- ENABLE_FAIL2BAN=1
- SSL_TYPE=letsencrypt
- PERMIT_DOCKER=network
- ONE_DIR=1
- ENABLE_POSTGREY=0
- ENABLE_CLAMAV=0
- ENABLE_SPAMASSASSIN=0
- SPOOF_PROTECTION=0
cap_add:
- NET_ADMIN
- SYS_PTRACE
yaml Esta configuración asegura que el contenedor Docker utilice los puertos correctos para SMTP (25), IMAPS (993) y envío SMTP (587), y que los volúmenes estén correctamente definidos para mantener los datos de forma persistente. Además, se activan funciones de seguridad como Fail2Ban y el cifrado SSL de Let’s Encrypt.
Puedes consultar la lista completa de opciones configurables en la documentación oficial de Docker Mailserver.
Paso 3: abrir los puertos
En el archivo docker-compose.yml
, verás que ya están definidos los puertos del servidor SMTP (25, 465 y 587). Estos mismos puertos deben abrirse también en el firewall del servidor para permitir el tráfico de correo sin interrupciones.
Si utilizas un servicio como IONOS para alojar tu servidor, puedes abrir fácilmente estos puertos desde el Cloud Panel:
- Inicia sesión con tus datos personales como cliente en la página de inicio de sesión del Cloud Panel.
- Ve al apartado “Server & Cloud”.
- Selecciona el servidor donde está alojado tu servidor de correo Docker.
- En el menú a la izquierda, haz clic en “Red” y luego en “Políticas de Cortafuegos”.
- Añade reglas de cortafuegos para los puertos TCP 25, 465 y 587.

Paso 4: configurar los registros DNS
A continuación, asegúrate de que los registros DNS de tu dominio estén correctamente configurados:
- Registro MX: debe apuntar al servidor de correo (por ejemplo,
mail.ejemplo.com
) que ya has definido en los camposhostname
ydomainname
de tu archivodocker-compose.yml
. - Registro SPF: es un registro TXT para el dominio (no para el hostname), por ejemplo,
v=spf1 mx ~all
.
El parámetro ~all
indica un “Softfail” (fallo suave). Si prefieres una política más estricta, puedes utilizar -all
.
Cómo configurar los registros DNS en el IONOS Cloud Panel
- Inicia tu sesión en la página de inicio de sesión del Cloud Panel.
- Haz clic en “Dominios y SSL”.
- Busca tu dominio y haz clic en el icono de configuración.
- Selecciona “DNS”.
- Añade los siguientes registros:
- Registro MX: destino =
mail.example.com
, prioridad = 10 - Registro TXT: tipo = TXT, valor =
v=spf1 mx ~all

Por último, haz clic en “Restablecer dominio” en el menú superior para recargar la configuración DNS y aplicar los cambios. Confirma la operación haciendo clic en “Restablecer ahora”. Esto solo afectará a los registros DNS actualizados, no al dominio en sí.
¿Quieres almacenar tus correos electrónicos de forma legal y segura, conforme a la normativa vigente? Utiliza el backup de correo de IONOS para archivar los correos seleccionados a prueba de manipulaciones y conforme a la ley.
Paso 5: generar claves DKIM
Para aumentar la seguridad de tu servidor de correo, es necesario generar un registro DKIM (DomainKeys Identified Mail) para tu dominio. Esta técnica permite firmar digitalmente los correos electrónicos, de modo que los servidores receptores puedan verificar su autenticidad.
Utiliza el script setup.sh
que se incluye en el directorio de docker-mailserver
:
./setup.sh config dkim
bashLa clave pública generada se guardará en el siguiente archivo (suponiendo que el volumen esté correctamente montado):
docker-data/dms/config/opendkim/keys/example.com/mail.txt
swiftAbre el archivo y copia su contenido para crear un registro TXT en la configuración DNS de tu dominio. El registro debería tener un aspecto similar al siguiente:
mail._domainkey.example.com. IN TXT (
"v=DKIM1; h=sha256; k=rsa; "
"p=MIIBIjANBgkqhkiG9w0BAQEFAAOC...continuedPublicKey...IDAQAB"
)
java - mail es el selector y puedes nombrarlo como prefieras (por ejemplo:
default
,key2025
, etc.). - Si tu proveedor DNS limita la longitud a 255 caracteres por cadena, tendrás que dividir la clave en varias líneas (como se muestra en el ejemplo).
- Asegúrate de que el tipo de registro sea TXT y que se aplique al dominio completo
mail._domainkey.example.com.
Además del DKIM, también deberías configurar un registro SPF y un registro DMARC para proteger completamente tu dominio frente a la suplantación de identidad (spoofing).
Paso 6: iniciar el servidor y crear tu primera dirección
Inicia el servidor de correo ya configurado desde el directorio del proyecto con el siguiente comando:
docker-compose up -d
bashEstas instrucciones te ayudarán a configurar de forma segura y eficaz tanto entornos de servidor de correo tradicionales como soluciones modernas basadas en contenedores.
- Con los estándares más altos de seguridad
- Cifrado automático con SSL/TLS
- Data centers georredundantes con certificado ISO 27001
- IMAP & SMTP