75.4 Ловушка почты: catch-all только для адресов без своего ящика, файл с паролями #8

Merged
Liosha84 merged 2 commits from feat/75-4-mail-trap into master 2026-11-05 18:14:24 +01:00
Owner

Чек-лист Jambotron v0.2.3, 75.4 — ловушка почты для dev и staging.

  • Маршрут. Раньше при MAIL_CATCH_ALL в ловушку уходило всё, включая письма между ящиками стенда. Теперь: есть такой ящик в нашем домене → в него; иначе (и на чужие домены, user@gmail.com) → в ящик-ловушку. Наружу ничего.
  • Ящик-ловушка создаётся при старте, если его нет (раньше письмо в несуществующий ящик падало).
  • Файл с паролями. Случайные пароли созданных ящиков (первый admin и ловушка) дописываются в MAIL_PASSWORDS_FILE (права 600); в образе — /app/data/initial-passwords.txt (том data). Без настройки — как раньше, в лог один раз.
  • docker-compose.jambotron.yml: MAIL_CATCH_ALL=trap@mail.test по умолчанию.
  • README: раздел про ловушку и файл паролей.

Не сделано (нужно решение в Jambotron): чтобы staging Jambotron слал письма сюда вместо Resend, ему нужен SMTP 3025 этого сервера. Сейчас он только внутри ВМ, а Jambotron публикует наружу лишь HTTP-домены — нужен TCP-проброс.

Проверка: :backend:test 33/33 (+MailRouterTest, DataInitializerTest). Вживую не проверено. После мержа: загрузить ZIP master и передеплоить — с Jambotron #780 compose обновится из ZIP сам; без него — заново выбрать compose в мастере.

— α

🤖 Generated with Claude Code

Чек-лист Jambotron v0.2.3, **75.4 — ловушка почты для dev и staging**. - **Маршрут.** Раньше при `MAIL_CATCH_ALL` в ловушку уходило *всё*, включая письма между ящиками стенда. Теперь: есть такой ящик в нашем домене → в него; иначе (и на чужие домены, `user@gmail.com`) → в ящик-ловушку. Наружу ничего. - **Ящик-ловушка создаётся при старте**, если его нет (раньше письмо в несуществующий ящик падало). - **Файл с паролями.** Случайные пароли созданных ящиков (первый admin и ловушка) дописываются в `MAIL_PASSWORDS_FILE` (права 600); в образе — `/app/data/initial-passwords.txt` (том `data`). Без настройки — как раньше, в лог один раз. - `docker-compose.jambotron.yml`: `MAIL_CATCH_ALL=trap@mail.test` по умолчанию. - README: раздел про ловушку и файл паролей. **Не сделано (нужно решение в Jambotron):** чтобы staging Jambotron слал письма сюда вместо Resend, ему нужен SMTP 3025 этого сервера. Сейчас он только внутри ВМ, а Jambotron публикует наружу лишь HTTP-домены — нужен TCP-проброс. **Проверка:** `:backend:test` 33/33 (+`MailRouterTest`, `DataInitializerTest`). Вживую не проверено. После мержа: загрузить ZIP master и передеплоить — с Jambotron #780 compose обновится из ZIP сам; без него — заново выбрать compose в мастере. — α 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Liosha84 added 1 commit 2026-11-05 17:43:51 +01:00
- MailRouter: существующий ящик получает свою почту, всё остальное (и чужие домены) —
  в ящик MAIL_CATCH_ALL; раньше ловушка забирала и письма между ящиками стенда
- DataInitializer: ящик-ловушка создаётся при старте; случайные пароли — в
  MAIL_PASSWORDS_FILE (права 600, в образе /app/data/initial-passwords.txt)
- docker-compose.jambotron.yml: MAIL_CATCH_ALL=trap@mail.test по умолчанию
- README: ловушка, файл паролей, что нужно для staging Jambotron (TCP-проброс SMTP)
- тесты: MailRouterTest, DataInitializerTest (33 всего)

α
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
jambotron added 1 commit 2026-11-05 18:10:42 +01:00
Liosha84 merged commit 37f6b3ef3d into master 2026-11-05 18:14:24 +01:00
Sign in to join this conversation.