Contenedor Postfix listo para producción que actúa como SMTP relay interno. Los servicios de tu infraestructura (Alertmanager, Grafana, aplicaciones) envían correos a este relay en el puerto 25 sin autenticación — él autentica contra Gmail, Office 365 u otro proveedor externo con TLS.
Alertmanager / Grafana / App
→ postfix-relay:25 (red interna, sin auth)
→ smtp.gmail.com:587 / smtp.office365.com:587
→ destinatario final
Base: debian:trixie-slim (Debian 13 oficial).
docker run -d \
--name postfix-relay \
--restart unless-stopped \
-e RELAYHOST="[smtp.gmail.com]:587" \
-e RELAYHOST_USERNAME="[email protected]" \
-e RELAYHOST_PASSWORD="xxxx xxxx xxxx xxxx" \
-e MYHOSTNAME="monitoring.empresa.com" \
darwindelgado/postfix-relay:latest
services:
postfix:
image: darwindelgado/postfix-relay:latest
container_name: postfix-relay
restart: unless-stopped
env_file: .env
networks:
- smtp-net
networks:
smtp-net:
driver: bridge
name: smtp-net
.env:
RELAYHOST=[smtp.gmail.com]:587
[email protected]
RELAYHOST_PASSWORD=xxxx xxxx xxxx xxxx
MYHOSTNAME=monitoring.empresa.com
MYNETWORKS=127.0.0.0/8 172.16.0.0/12 192.168.0.0/16 10.0.0.0/8
| Variable | Requerida | Default | Descripción |
|---|---|---|---|
RELAYHOST | No | [smtp.gmail.com]:587 | Host SMTP externo |
RELAYHOST_USERNAME | Sí | — | Usuario SMTP |
RELAYHOST_PASSWORD | Sí | — | Contraseña o App Password |
MYHOSTNAME | No | postfix-relay | Hostname en el From |
MYNETWORKS | No | 127/8 172.16/12 192.168/16 10/8 | Redes internas permitidas |
Requiere App Password (no tu contraseña normal). Necesitas 2FA activado.
RELAYHOST=[smtp.gmail.com]:587
[email protected]
RELAYHOST_PASSWORD=abcd efgh ijkl mnop
RELAYHOST=[smtp.office365.com]:587
[email protected]
RELAYHOST_PASSWORD=contraseña-usuario-servicio
Requiere SMTP AUTH habilitado para el usuario en el tenant de Azure AD.
| Proveedor | RELAYHOST |
|---|---|
| Brevo | [smtp-relay.brevo.com]:587 |
| Mailgun | [smtp.mailgun.org]:587 |
| SendGrid | [smtp.sendgrid.net]:587 |
| Amazon SES | [email-smtp.us-east-1.amazonaws.com]:587 |
Los servicios deben unirse a la misma red Docker (smtp-net) y apuntar a postfix-relay:25.
global:
smtp_smarthost: 'postfix-relay:25'
smtp_from: '[email protected]'
smtp_require_tls: false
grafana.ini)[smtp]
enabled = true
host = postfix-relay:25
from_address = [email protected]
from_name = Grafana
skip_verify = true
networks:
smtp-net:
external: true
# Enviar correo de prueba
docker exec postfix-relay bash -c \
"echo 'Test OK' | mail -s '[TEST] relay funcionando' [email protected]"
# Ver logs de entrega
docker logs postfix-relay -f
# Ver cola de correos
docker exec postfix-relay postqueue -p
En los logs deberías ver status=sent (250 2.0.0 OK ...).
MYNETWORKSsmtp_tls_security_level = encrypt)/etc/postfix/sasl/sasl_passwd con permisos 600git clone https://github.com/darwindelgado-co/smtp-relay.git
cd smtp-relay
docker build -t postfix-relay:local .
| Tag | Descripción |
|---|---|
latest | Última versión estable |
1.0.0 | Primera release |
Content type
Image
Digest
sha256:91133eb35…
Size
69.3 MB
Last updated
6 months ago
docker pull darwindelgado/postfix-relay