Saltar a contenido

SAFE-POINT-039B - Precarga segura SMTP runtime

Fecha: 2026-06-16

Objetivo

Continuar la activacion segura de SMTP para Alertmanager en el VPS OpenClaw, usando exclusivamente el alias SSH openclaw-vps, sin imprimir secretos y sin guardar passwords en Git.

SAFE POINT inicial

  • Workspace: C:\APV\openclawai
  • Estado inicial: ## main...origin/main
  • HEAD inicial: 0a196bb3da6817e55c4b576b7af528cd90fab3f5
  • Acceso validado: ssh -o BatchMode=yes openclaw-vps "hostname && whoami && id && uptime"
  • Host remoto: srv977009
  • Usuario remoto: root

Archivos runtime modificados

  • /opt/stacks/observability/.env
  • Impacto: se creo el archivo runtime con variables SMTP no secretas para Alertmanager.
  • Variables declaradas: ALERTMANAGER_SMTP_SMARTHOST, ALERTMANAGER_SMTP_FROM, ALERTMANAGER_SMTP_AUTH_USERNAME, ALERTMANAGER_SMTP_REQUIRE_TLS, ALERTMANAGER_LADIRECTA_EMAIL_TO y ALERTMANAGER_SMTP_PASSWORD_FILE.
  • /opt/stacks/observability/secrets/alertmanager_smtp_password
  • Impacto: se aseguro existencia/permisos del archivo secreto runtime.
  • Estado final observado luego de la carga manual: archivo regular, no vacio, modo 600, owner root, group root.

Archivos versionados modificados

  • infra/observability/docker-compose.yml
  • Impacto: obs-alertmanager ejecuta el entrypoint como root para poder leer el secreto montado con permisos 600 root:root.
  • infra/observability/alertmanager/entrypoint.sh
  • Impacto: se agrego umask 077 para que la config SMTP generada en /tmp/alertmanager.yml quede privada dentro del contenedor.

No se modificaron archivos versionados con secretos.

Estado runtime

  • Directorio runtime: /opt/stacks/observability
  • docker-compose.yml: presente.
  • .env: presente con variables SMTP no secretas.
  • Secreto SMTP: presente, no vacio, 600 root:root.
  • Alertmanager: desplegado y listo internamente.
  • Config SMTP generada: /tmp/alertmanager.yml, no vacia, modo 600, owner root, group root, receiver ladirecta-email presente.

Validaciones ejecutadas

Validacion Resultado
Acceso SSH por alias openclaw-vps PASS
Runtime /opt/stacks/observability presente PASS
.env runtime SMTP no secreto PASS creado
Permisos secreto SMTP PASS 600 root:root
Secreto SMTP no vacio PASS
docker compose config PASS
Deploy observability PASS docker compose up -d recreo obs-alertmanager
Alertmanager readiness interna PASS OK
Prometheus readiness interna PASS
Blackbox health interno PASS
Grafana health interno PASS database: ok
Generacion segura config SMTP PASS /tmp/alertmanager.yml modo 600
Test SMTP real controlado BLOCKED 535 5.7.8 authentication failed
Resolucion alerta sintetica PASS

Restricciones respetadas

  • No se uso root@46.202.151.32; solo alias openclaw-vps.
  • No se imprimio password/token SMTP.
  • No se guardo password SMTP en Git.
  • No se mostro el contenido del archivo secreto.
  • No se imprimio la config generada porque contiene smtp_auth_password.
  • El drill uso una alerta sintetica temporal: SafePoint039BSMTPDrill.

Proximo paso requerido

Corregir la credencial SMTP o la combinacion usuario/password del proveedor en runtime, fuera de Git:

/opt/stacks/observability/secrets/alertmanager_smtp_password

Luego repetir:

  1. Validar que el secreto este no vacio sin imprimir contenido.
  2. Ejecutar docker compose up -d alertmanager.
  3. Validar readiness interna.
  4. Validar que el status runtime incluya el receiver ladirecta-email sin volcar el password.
  5. Ejecutar drill SMTP controlado de disparo y resolucion.

Continuacion posterior a recarga manual del secreto

Fecha: 2026-06-16

El secreto SMTP fue cargado manualmente por fuera de Git en:

/opt/stacks/observability/secrets/alertmanager_smtp_password

No se imprimio el secreto, no se mostro el contenido del archivo y no se volco la configuracion generada de Alertmanager porque contiene smtp_auth_password.

Validaciones posteriores

Validacion Resultado
Acceso SSH por alias openclaw-vps PASS host srv977009, usuario root
Secreto SMTP existe PASS archivo regular
Secreto SMTP no vacio PASS
Permisos secreto SMTP PASS 600 root:root
docker compose config --quiet PASS
Deploy observability PASS docker compose up -d
Generacion segura config SMTP PASS /tmp/alertmanager.yml no vacia, modo 600, root:root
Receiver runtime ladirecta-email PASS presente en config generada
Alertmanager readiness interna PASS OK
Prometheus readiness interna PASS
Blackbox health interno PASS
Grafana health interno PASS database: ok
Prometheus series up PASS 19 series observadas
Prometheus no publico por Docker PASS sin HostConfig.PortBindings, solo red obs-observability-internal
Alertmanager no publico por Docker PASS sin HostConfig.PortBindings, solo red obs-observability-internal
Prometheus no publico por TCP externo :9090 PASS conexion rechazada/time out
Alertmanager no publico por TCP externo :9093 PASS conexion rechazada/time out
Drill alerta sintetica SafePoint039BSMTPDrill PASS disparo y resolucion via API interna
Entrega SMTP hacia gabrielcanuti@gmail.com BLOCKED proveedor responde 535 5.7.8 authentication failed
Limpieza alerta sintetica PASS active_drill_alerts=0

Resultado

El stack de observabilidad quedo desplegado, saludable e interno. La generacion runtime de Alertmanager funciona y toma el receiver ladirecta-email, pero la entrega SMTP sigue bloqueada por autenticacion del proveedor. Se requiere corregir la credencial o la combinacion usuario/password SMTP en runtime, fuera de Git, y repetir el drill.