2.9 KiB
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
- Ve a Stacks -> Add stack
- Nombre:
mail-relay - Configura el repositorio Git
- Compose path:
mail-relay/docker-compose.yml - Carga variables desde
mail-relay/stack.env - Ajusta al menos:
MAIL_RELAY_HOSTNAMEMAIL_RELAY_ALLOWED_SENDER_DOMAINSMAIL_RELAY_MASQUERADED_DOMAINSMAIL_RELAY_SMARTHOSTMAIL_RELAY_SMARTHOST_USERNAME
- 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: revisaMAIL_RELAY_ALLOWED_SENDER_DOMAINS- Auth fallida con proveedor: revisa usuario/password SMTP
- Rechazo por DNS: valida SPF/DKIM/DMARC