Tabla de Contenidos

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.

Características

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 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 <CONTENEDOR_MAILSERVER> 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 <CONTENEDOR_MAILSERVER> setup config dkim

Se habrá generado un fichero en ….

El contenido del fichero deberemos incluirlo en un registro DNS de tipo TXT