Настоящая почта: docker-compose.public.yml (MX, DKIM, Let's Encrypt) + перечитка сертификата #13

Merged
Liosha84 merged 1 commits from feat/public-mail into master 2026-11-06 13:12:28 +01:00
Owner

Для mail.jambocheck.com на .154 (прод, Horizon, v0.2.3 75.6).

  • ReloadingKeyManager. Сертификат перечитывается раз в минуту, если файлы поменялись, без перезапуска; работает для STARTTLS и неявного TLS. Ключ можно дать как PKCS#8, RSA или EC (SEC1 — так пишут lego и certbot). Если файл недописан, остаётся прежний сертификат. Добавлено 4 теста.
  • docker-compose.public.yml.
    • Порты 25/587/465/993 открыты на публичном адресе ВМ.
    • Наружу письма уходят напрямую на MX получателей, с подписью DKIM; входящие проверяются по SPF/DMARC.
    • Регистрация закрыта, ловушки нет.
    • Сервис acme (lego v5.5.2): сертификат по HTTP-01 на :80, хук кладёт пару в том tls.
  • README. Описан публичный режим и нужные DNS-записи.

Проверено.

  • Бэкенд: 51/51. Один раз упал ImapServerTest.createRenameAndDeleteFolders с ошибкой STARTTLS; после этого 3 прогона IMAP/SMTP-тестов и полный прогон зелёные. Первопричину не нашёл, отчёт с тем падением перезаписан.
  • Цикл lego и хук прогнаны против Pebble: выпуск, повторный запуск, файлы принадлежат uid 10001, ключ PKCS#8.

Не сделано, важно для публичного адреса. Нет защиты входа от перебора (SMTP AUTH, IMAP, веб) — это пункт README «Не сделано». Ящики создаются со случайными длинными паролями, но лимит попыток или fail2ban нужно добавить до того, как почтой начнут пользоваться.

🤖 Generated with Claude Code

Для `mail.jambocheck.com` на .154 (прод, Horizon, v0.2.3 75.6). - **`ReloadingKeyManager`.** Сертификат перечитывается раз в минуту, если файлы поменялись, без перезапуска; работает для STARTTLS и неявного TLS. Ключ можно дать как PKCS#8, RSA или EC (SEC1 — так пишут lego и certbot). Если файл недописан, остаётся прежний сертификат. Добавлено 4 теста. - **`docker-compose.public.yml`.** - Порты 25/587/465/993 открыты на публичном адресе ВМ. - Наружу письма уходят напрямую на MX получателей, с подписью DKIM; входящие проверяются по SPF/DMARC. - Регистрация закрыта, ловушки нет. - Сервис `acme` (lego v5.5.2): сертификат по HTTP-01 на :80, хук кладёт пару в том `tls`. - **README.** Описан публичный режим и нужные DNS-записи. **Проверено.** - Бэкенд: 51/51. Один раз упал `ImapServerTest.createRenameAndDeleteFolders` с ошибкой STARTTLS; после этого 3 прогона IMAP/SMTP-тестов и полный прогон зелёные. Первопричину не нашёл, отчёт с тем падением перезаписан. - Цикл lego и хук прогнаны против Pebble: выпуск, повторный запуск, файлы принадлежат uid 10001, ключ PKCS#8. **Не сделано, важно для публичного адреса.** Нет защиты входа от перебора (SMTP AUTH, IMAP, веб) — это пункт README «Не сделано». Ящики создаются со случайными длинными паролями, но лимит попыток или fail2ban нужно добавить до того, как почтой начнут пользоваться. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Liosha84 added 1 commit 2026-11-06 13:10:28 +01:00
- ReloadingKeyManager: сертификат и ключ из PEM (PKCS#8, RSA, EC/SEC1 как у lego), раз в минуту
  проверяет файлы и перечитывает их; битый файл оставляет прежний сертификат; поколения по алиасам.
- docker-compose.public.yml: порты 25/587/465/993 на публичном адресе ВМ, OUTBOUND_MODE=mx, DKIM,
  SPF/DMARC, регистрация закрыта, без ловушки; сервис acme (lego v5.5.2, HTTP-01 на :80, EC256,
  продление за 30 дней, хук кладёт пару в том tls для uid 10001).
- README: раздел «Настоящая почта», DNS-записи, перечитка сертификата.

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