# 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 ```bash 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 ```env 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: ```text /opt/mail-relay/secrets/relayhost_password ``` ## πŸ”Œ Conectar otras apps En cada stack que deba enviar correo, aΓ±ade la red externa: ```yaml networks: mail_internal: external: true ``` Y en el servicio de la app: ```yaml services: tu-app: networks: - default - mail_internal ``` Config SMTP en la app: ```env 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) ```text v=spf1 include:spf.tu-proveedor.tld ~all ``` ### DKIM Tras el primer arranque, extrae el TXT generado: ```bash find /opt/mail-relay/opendkim -type f -name '*.txt' -exec echo '### {}' \; -exec cat {} \; ``` Copia esos valores a tu DNS. ### DMARC (inicio en monitorizacion) ```text v=DMARC1; p=none; adkim=s; aspf=s ``` ## πŸ§ͺ Prueba rapida ```bash 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: ```bash 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