Files
Portainer/mail-relay/README.md
Eduardo David Paredes Vara 24270af2f0 Mail
2026-03-20 22:35:42 +00:00

2.9 KiB

Mail Relay - SMTP de salida para stacks

Stack de relay SMTP interno para centralizar el envio de correos de tus apps sin montar un servidor de correo completo.

📋 Descripcion

Este stack despliega un relay SMTP con Postfix usando boky/postfix para:

  • Recibir correo SMTP desde contenedores internos
  • Reenviar todo a un proveedor SMTP externo (smarthost)
  • Firmar con DKIM (autogenerado)
  • Unificar configuracion de correo para todos los stacks

No incluye recepcion de correo (MX, IMAP, POP3, webmail).

🚀 Despliegue

1. Preparar rutas y secreto en el host

sudo mkdir -p /opt/mail-relay/{queue,opendkim,secrets}
sudo chmod 700 /opt/mail-relay/secrets
printf '%s' 'CAMBIA_ESTA_PASSWORD_SMTP' | sudo tee /opt/mail-relay/secrets/relayhost_password > /dev/null
sudo chmod 600 /opt/mail-relay/secrets/relayhost_password

2. Desplegar desde Portainer

  1. Ve a Stacks -> Add stack
  2. Nombre: mail-relay
  3. Configura el repositorio Git
  4. Compose path: mail-relay/docker-compose.yml
  5. Carga variables desde mail-relay/stack.env
  6. Ajusta al menos:
    • MAIL_RELAY_HOSTNAME
    • MAIL_RELAY_ALLOWED_SENDER_DOMAINS
    • MAIL_RELAY_MASQUERADED_DOMAINS
    • MAIL_RELAY_SMARTHOST
    • MAIL_RELAY_SMARTHOST_USERNAME
  7. Deploy del stack

⚙️ Variables importantes

MAIL_RELAY_SMARTHOST=[smtp.proveedor.tld]:587
MAIL_RELAY_SMARTHOST_USERNAME=usuario-smtp
MAIL_RELAY_SMTP_TLS_SECURITY_LEVEL=encrypt
MAIL_RELAY_ALLOWED_SENDER_DOMAINS=tudominio.com
MAIL_RELAY_MASQUERADED_DOMAINS=tudominio.com

La password SMTP no se pone en stack.env; se lee desde el archivo host:

/opt/mail-relay/secrets/relayhost_password

🔌 Conectar otras apps

En cada stack que deba enviar correo, añade la red externa:

networks:
  mail_internal:
    external: true

Y en el servicio de la app:

services:
  tu-app:
    networks:
      - default
      - mail_internal

Config SMTP en la app:

SMTP_HOST=mail-relay
SMTP_PORT=587
SMTP_FROM=noreply@tudominio.com

DNS minimo recomendado

Para buena entregabilidad en Gmail/Outlook:

  • SPF
  • DKIM
  • DMARC

SPF (ejemplo)

v=spf1 include:spf.tu-proveedor.tld ~all

DKIM

Tras el primer arranque, extrae el TXT generado:

find /opt/mail-relay/opendkim -type f -name '*.txt' -exec echo '### {}' \; -exec cat {} \;

Copia esos valores a tu DNS.

DMARC (inicio en monitorizacion)

v=DMARC1; p=none; adkim=s; aspf=s

🧪 Prueba rapida

docker exec -i mail-relay sendmail -t <<'EOF'
From: noreply@tudominio.com
To: destino@example.com
Subject: prueba mail relay

Correo de prueba del stack mail-relay.
EOF

🛠️ Troubleshooting

Ver logs:

docker logs -f mail-relay

Errores tipicos:

  • Relay access denied: revisa MAIL_RELAY_ALLOWED_SENDER_DOMAINS
  • Auth fallida con proveedor: revisa usuario/password SMTP
  • Rechazo por DNS: valida SPF/DKIM/DMARC