Ловушка у ящика (TRAP): staging@ отправляет только себе в INBOX #25

Merged
Liosha84 merged 1 commits from feat/trap-mailbox into master 2026-11-07 11:00:13 +01:00
Owner

Ящик с флагом TRAP ничего не отправляет наружу: всё, что он шлёт (SMTP 587 или веб), ложится одной копией в его же INBOX.

Зачем: staging Jambotron шлёт через staging@jambocheck.com на настоящий mail.jambocheck.com — с ловушкой тестовые письма (забыл пароль, уведомления) не дойдут до живых людей. Отдельная ВМ-ловушка не нужна.

  • V5: users.is_trap (по умолчанию false — ничего не меняется для существующих ящиков)
  • MailRouter: залогиненный отправитель-ловушка → все получатели LOCAL → одна копия в INBOX отправителя; DKIM/очередь не трогаются
  • PUT /api/admin/mailboxes/{id}/trap {trap} — только MAIL_ADMINS; MailboxView.trap
  • Настройки → MAILBOXES: кнопка outbox (вкл) / move_to_inbox (выкл, с подтверждением), метка TRAP
  • README: абзац про ловушку
  • тесты: 77 зелёные (новые: router trap, admin trap); ng build OK

После мержа: образ → redeploy почты на prod → MAILBOXES → TRAP у staging@ → «забыл пароль» на staging → письмо в INBOX staging@, а не у адресата.

α

🤖 Generated with Claude Code

Ящик с флагом **TRAP** ничего не отправляет наружу: всё, что он шлёт (SMTP 587 или веб), ложится **одной копией в его же INBOX**. Зачем: staging Jambotron шлёт через `staging@jambocheck.com` на настоящий mail.jambocheck.com — с ловушкой тестовые письма (забыл пароль, уведомления) не дойдут до живых людей. Отдельная ВМ-ловушка не нужна. - V5: `users.is_trap` (по умолчанию false — ничего не меняется для существующих ящиков) - `MailRouter`: залогиненный отправитель-ловушка → все получатели LOCAL → одна копия в INBOX отправителя; DKIM/очередь не трогаются - `PUT /api/admin/mailboxes/{id}/trap {trap}` — только MAIL_ADMINS; `MailboxView.trap` - Настройки → MAILBOXES: кнопка `outbox` (вкл) / `move_to_inbox` (выкл, с подтверждением), метка TRAP - README: абзац про ловушку - тесты: 77 зелёные (новые: router trap, admin trap); `ng build` OK После мержа: образ → redeploy почты на prod → MAILBOXES → TRAP у staging@ → «забыл пароль» на staging → письмо в INBOX staging@, а не у адресата. α 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Liosha84 added 1 commit 2026-11-07 10:45:31 +01:00
Для staging@: staging-стенд шлёт через настоящий mail.jambocheck.com,
но тестовые письма не доходят до живых людей.
- V5: users.is_trap
- MailRouter: отправитель-ловушка → все получатели LOCAL, одна копия в INBOX отправителя
- PUT /api/admin/mailboxes/{id}/trap, MailboxView.trap
- MAILBOXES: кнопка outbox/move_to_inbox, метка TRAP
- тесты: router + admin (77 тестов)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Liosha84 merged commit 3603b9d315 into master 2026-11-07 11:00:13 +01:00
Sign in to join this conversation.