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_TOyALERTMANAGER_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, ownerroot, grouproot.
Archivos versionados modificados¶
infra/observability/docker-compose.yml- Impacto:
obs-alertmanagerejecuta el entrypoint comorootpara poder leer el secreto montado con permisos600 root:root. infra/observability/alertmanager/entrypoint.sh- Impacto: se agrego
umask 077para que la config SMTP generada en/tmp/alertmanager.ymlquede 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, modo600, ownerroot, grouproot, receiverladirecta-emailpresente.
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 aliasopenclaw-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:
- Validar que el secreto este no vacio sin imprimir contenido.
- Ejecutar
docker compose up -d alertmanager. - Validar readiness interna.
- Validar que el status runtime incluya el receiver
ladirecta-emailsin volcar el password. - 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.