Чек-лист 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 в мастере.
Чек-лист 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)
- 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>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Чек-лист Jambotron v0.2.3, 75.4 — ловушка почты для dev и staging.
MAIL_CATCH_ALLв ловушку уходило всё, включая письма между ящиками стенда. Теперь: есть такой ящик в нашем домене → в него; иначе (и на чужие домены,user@gmail.com) → в ящик-ловушку. Наружу ничего.MAIL_PASSWORDS_FILE(права 600); в образе —/app/data/initial-passwords.txt(томdata). Без настройки — как раньше, в лог один раз.docker-compose.jambotron.yml:MAIL_CATCH_ALL=trap@mail.testпо умолчанию.Не сделано (нужно решение в Jambotron): чтобы staging Jambotron слал письма сюда вместо Resend, ему нужен SMTP 3025 этого сервера. Сейчас он только внутри ВМ, а Jambotron публикует наружу лишь HTTP-домены — нужен TCP-проброс.
Проверка:
:backend:test33/33 (+MailRouterTest,DataInitializerTest). Вживую не проверено. После мержа: загрузить ZIP master и передеплоить — с Jambotron #780 compose обновится из ZIP сам; без него — заново выбрать compose в мастере.— α
🤖 Generated with Claude Code