4.0 KiB
4.0 KiB
snolla-smtp-send-monitor-vds
Goal
Периодический мониторинг того, что SMTP-отправка писем форм с snolla-сайтов реально работает. Живёт на VDS (vds-kzntsv) — проверяет снаружи от воркстейшна, не зависит от рабочей машины.
Мотивация — инцидент 12–14.08.2026 (pilorama-forms-email-down): Яндекс отключил протокольный доступ к noreply@snolla.com → 2 дня тишины: формы отвечали «успешно», заказы копились в БД, писем не было (mailer глотает ошибку catch { console.log }). Монитор должен ловить такой сбой в ближайший тик, а не через N дней.
Что проверять (тик = ежедневно)
- SMTP auth/send-тест на
smtp.yandex.ru:465(SSL) с боевыми кредами snolla-почты (e-16513832@yandex.ru/ пароль приложения, канон-стораpass snolla-smtp/full-env):- минимум:
verify()-эквивалент (auth + RCPT, без тела) — дёшево, ловит 525/535/connection; - опционально 1×/нед: реальная тестовая отправка на
info@pilorama98.ru+vitya.kuznetsov@gmail.com(доставка до ящика, не только до SMTP-сервера).
- минимум:
- Parity-чек конфига (дёшево, ловит дрейф до поломки): SMTP_USER/SMTP_PASSWORD в env Portainer-стеков snolla-сайтов (pilonuxt/конфиг-запечка, tandemmebel 20, emspb 18, labtools 17, labtools-pro 19, kupimknigi 21, on-snolla 22, maljarka 23) == актуальным кредам канон-сторы. Расхождение → алерт (будущий сайт снова сломается молча).
Где живёт
- Вариант A (рекомендую): bash/node-скрипт на VDS-хосте + cron (например
08:00 MSK), креды в root-only файле/root/.snolla-smtp-monitor.env(chmod 600, зеркалоpass snolla-smtp/full-env; в git НЕ класть), лог/var/log/snolla-smtp-monitor.log. - Вариант B: отдельный маленький контейнер/стек через Portainer (гомогенно с тиражом, но тяжелее — нужен образ).
- Алерт: ntfy push (ntfy уже живёт на VDS), topic напр.
snolla-smtp; тишина при OK (или лёгкий daily OK-пинг). При алерте — exit 1 + дубль в лог.
Acceptance criteria
- Скрипт на VDS выполняет SMTP auth-тест с боевыми кредами; 525/535/connection-fail → ntfy-алерт + exit 1.
- Cron ежедневный (время после 08:00 MSK), логи пишутся.
- Проверено негативом: временно сломать пароль в env-файле → алерт приходит (за < 1 мин при ручном прогоне).
- Parity-проверка Portainer env vs канон реализована (или явно descoped).
- Ранбук/README в
.admin(host-stacks/vds-kzntsv/илиscripts/), креды — только через pass/root-only файл.
Key files / refs
- Креды:
pass snolla-smtp/full-env(после ротации 2026-08-14:e-16513832@yandex.ru/ app-password). - Инцидент:
.tasks/pilorama-forms-email-down.md(pilorama98) — почему монитор нужен. - Portainer API:
pass vds-kzntsv/full-env(PORTAINER_URL/JWT-аут),.wiki/concepts/portainer-stack-management-vds.md. - ntfy: контейнер на VDS (стек из host-stacks).