smtp-relay/master.cf
sirxavor 2d7863bc01
Some checks failed
Build smtp-relay / build (push) Failing after 1m10s
Llevar a la imagen los cuatro arreglos del incidente del 2026-07-29
El correo saliente de manabo.org lo sostenian cuatro cambios aplicados con
postconf/adduser sobre el contenedor vivo. Llevaban 70 dias fuera de git: el
primer rollout restart, reschedule o actualizacion del Image Updater los borraba
y el relay volvia a quedar mudo -- sin aviso posible, porque la alerta ES el
correo.

La lista no se copio del README: se midio. Se arranco un contenedor de la imagen
que corre hoy (digest 38ebbe1d) y se diffeo su postconf -n/-M contra el pod vivo.
Son SEIS cambios, no cuatro:

  master.cf  falta el daemon tlsmgr -> smtpd ANUNCIA STARTTLS en el EHLO y luego
             no puede hacerlo: 454 4.7.0 TLS not available due to local problem
  master.cf  falta postlog/postlogd -> Postfix escribe a syslog, aqui no hay
             ninguno y kubectl logs sale VACIO (el incidente se diagnostico a
             ciegas)
  master.cf  chroot y->n en los 20 servicios
  main.cf    falta maillog_file = /var/log/postfix.log
  main.cf    smtpd_sasl_local_domain: $myhostname -> el dominio real
  Dockerfile postfix no estaba en el grupo sasl -> /etc/sasldb2 es root:sasl 0640
             y smtpd no puede abrirlo: 454 Temporary authentication failure

Dos matices sobre lo que estaba anotado:

El chroot no se "pobla desde el build", se DESACTIVA. En el pod vivo
/var/spool/postfix/etc sigue vacio con fecha Mar 6 2024: nadie lo poblo nunca.
Poblarlo habria metido un mecanismo jamas ejercitado y dejado fuera el que
sostiene el correo. En un contenedor el chroot no aporta nada: el contenedor ES
el jail.

El realm no se fija a pelo en main.cf sino desde RELAY_AUTH_DOMAIN en el
entrypoint, que es la misma variable con la que saslpasswd2 crea la entrada del
sasldb. Declarados aparte pudieron divergir en silencio, y eso es exactamente lo
que causo el fallo de autenticacion.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-29 22:43:50 +02:00

53 lines
2.9 KiB
CFEngine3

# Postfix master process configuration
# service type private unpriv chroot wakeup maxproc command + args
#
# chroot = n en TODOS los servicios (incidente 2026-07-29, fallo 4).
# El chroot de Postfix exige poblar /var/spool/postfix/{etc,dev} en el build; sin
# resolv.conf dentro del jail no hay resolución de MX y el correo se queda en cola
# con "Name service error for name=<destino> type=MX" — aunque `getent hosts` dentro
# del contenedor SÍ resuelva. En un contenedor el chroot no aporta nada: el
# contenedor ES el jail.
# Port 25 — SMTP (TLS optional, SASL required to relay)
smtp inet n - n - - smtpd
# Port 587 — Submission (TLS required, SASL required)
submission inet n - n - - smtpd
-o smtpd_tls_security_level=encrypt
-o smtpd_tls_auth_only=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject
-o smtpd_tls_loglevel=1
pickup unix n - n 60 1 pickup
cleanup unix n - n - 0 cleanup
qmgr unix n - n 300 1 qmgr
rewrite unix - - n - - trivial-rewrite
bounce unix - - n - 0 bounce
defer unix - - n - 0 bounce
trace unix - - n - 0 bounce
verify unix - - n - 1 verify
flush unix n - n 1000? 0 flush
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - n - - smtp
relay unix - - n - - smtp
showq unix n - n - - showq
error unix - - n - - error
retry unix - - n - - error
discard unix - - n - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - n - - lmtp
anvil unix - - n - 1 anvil
scache unix - - n - 1 scache
# tlsmgr — sin este daemon smtpd ANUNCIA STARTTLS en el EHLO pero no puede hacerlo,
# y devuelve "454 4.7.0 TLS not available due to local problem" (incidente, fallo 2).
tlsmgr unix - - n 1000? 1 tlsmgr
# postlogd — Postfix escribe a syslog y en este contenedor no corre ninguno, así que
# `kubectl logs` salía VACÍO y el incidente se diagnosticó a ciegas (fallo 5).
# Junto con maillog_file en main.cf, manda el log a un fichero legible.
postlog unix-dgram n - n - 1 postlogd