> MARAT_SHVETS.portfolio
> cd ../projects
011
DevOps · Self-hosted

Self-hosted почта: Stalwart и Bulwark за реверс-прокси

DevOps-инженер·2026 · 3 недели

Перенесли почту компании со стороннего сервиса на свой сервер: экономия 800 000 → 32 000 ₽ в год без потери удобства и защиты.

DockerStalwartBulwarkNginxJMAP
800 000 → 32 000 ₽
Стоимость почты в год
Открытых портов на хостетолько протокольные
Протоколов автонастройки3 (Autodiscover, Autoconfig, .mobileconfig)
mail-tester scoreрабочий, без спам-меток
Сторонних почтовых сервисов0
// ПРОБЛЕМА

Почта команды зависела от сторонних сервисов — без контроля над данными, инфраструктурой и настройками безопасности. Нужен был полностью автономный почтовый стек: сервер и веб-клиент под своим управлением, с автонастройкой на всех устройствах и защитой от подбора паролей.

// ПРОЦЕСС
01
Развёртывание за реверс-прокси

Убрал прямую публикацию портов 80/443 у Stalwart в пользу nginx-proxy-manager, посадил Stalwart и Bulwark в общую docker-сеть без лишних портов на хосте. Переключил ACME-провайдера на dns-01, чтобы автопродление TLS-сертификата не зависело от того, кто держит 443-й порт.

02
Публичный URL и веб-админка

Настроил переменную STALWART_PUBLIC_URL, чтобы OAuth и JMAP discovery за прокси строили ссылки на публичный домен, а не на внутренний docker-хостнейм.

03
CSP и подключение Bulwark к JMAP

Нашёл и устранил блокировку логина в веб-клиенте: строгая CSP-политика Bulwark запрещала запросы на внутренний http-адрес JMAP-сервера. Переключил конфиг на публичный HTTPS-адрес, уже проксируемый через nginx.

04
Репутация, автонастройка и защита от брутфорса

Прошёл проверку на mail-tester.com, донастроил PTR-запись у хостинг-провайдера. Поднял Autodiscover, Autoconfig и .mobileconfig-профиль для автонастройки почты на Outlook, Thunderbird и iPhone. Снял и предотвратил блокировку встроенной защитой Stalwart от брутфорса собственного IP реверс-прокси через stalwart-cli.

// РЕШЕНИЕ

Полностью self-hosted почтовый стек — от SMTP до веб-интерфейса — работает предсказуемо за единым реверс-прокси, поддерживает автонастройку на всех основных клиентах и проходит спам-фильтры без проблем.

// РЕЗУЛЬТАТЫ
только протокольные
Открытых портов на хосте
3 (Autodiscover, Autoconfig, .mobileconfig)
Протоколов автонастройки
рабочий, без спам-меток
mail-tester score
0
Сторонних почтовых сервисов
// СТЕК
DockerStalwartBulwarkNginx Proxy ManagerJMAPACME DNS-01stalwart-cli