Dockerでメールサーバーを狂わずに構築する方法

すべてのシステム管理者や開発者は、一度はメールサーバーをゼロから構築しようとしたことがあるでしょう。そして大概、この経験は深い心の傷を残します。Postfixをインストールし、Dovecotを連携させ、ユーザーを保存するためのMySQLを設定し、それからSpamAssassinと格闘し、OpenDKIMを設定し、証明書を生成し、SPFとDMARCに頭を悩ませます。1週間苦しんだ末、それでもメールはGmailのスパムフォルダに振り分けられ、設定ファイルは読めないほど乱雑になります。
ペ проекты и небольшую команду для домена снова, я не хотел собирать Франкенштейна вручную. Платить дополнительно за корпоративные подписки Google Workspace или Yandex 360 тоже не входило в планы. Так я наткнулся на Mailu — проект, который упаковал весь джентльменский набор почтового сервера в аккуратные Docker-контейнеры.
Что такое Mailu
Mailu позиционирует себя как изолированную почтовую систему на базе Docker. Проект существует с 2016 года, собрал почти 7,5 тысяч звезд на GitHub и активно поддерживается.
Основная идея проста: предоставить готовый к использованию сервер, который разворачивается за десять минут через docker-compose, но без лишнего балласта. В отличие от тяжеловесных решений «всё в одном» вроде Zimbra или Nextcloud, Mailu делает только одно — надежно принимает, фильтрует и отправляет почту. Здесь нет проприетарного кода, трекеров или скрытых платных функций. Все компоненты открыты и распространяются под свободной лицензией.

Что под капотом
Архитектура проекта модульная. Вместо одного огромного контейнера Mailu разделен на десяток микросервисов, каждый из которых отвечает за свою область:
- Nginx как фронтенд для веб-трафика и перенаправления почтовых портов
- Dovecot для поддержки протоколов IMAP и POP3
- Postfix в качестве SMTP-сервера
- Rspamd для защиты от спама, автоматического обучения и проверки репутации
- ClamAV для сканирования вложений на вирусы
- Панель управления на Python и Flask
- Несколько веб-клиентов на выбор, включая Roundcube и Snappymail
Все эти контейнеры общаются через внутреннюю сеть Docker, а данные (письма, базы пользователей, ключи) хранятся в подключенных томах.
Ключевые возможности
Безопасность и доставляемость без ручной рутины
В почте самое сложное — не получить сообщение, а отправить его так, чтобы почтовые сервисы получателя не отправили его в спам. Mailu берет на себя настройку безопасности:
- Автоматически выдает и обновляет бесплатные TLS-сертификаты через Let's Encrypt
- Генерирует DKIM-ключи прямо в панели администратора и подсказывает правильные TXT-записи для DNS
- Поддерживает современные протоколы защиты доставки, включая DANE и MTA-STS
- Защищает веб-интерфейс с помощью Snuffleupagus (патч безопасности для PHP)
Удобная панель управления и поддержка нескольких доменов
Через веб-интерфейс администратор создает домены, настраивает почтовые ящики, настраивает алиасы и временные адреса. Приятная деталь: можно делегировать администрирование конкретного домена другому человеку. Например, вы хостите сервер, но передаете управление почтовыми ящиками менеджеру клиента.
Здесь же можно задать квоты дискового пространства для каждого пользователя, глобальные объявления и правила пересылки.
Готовые веб-клиенты и автоконфигурация
Пользователям не обязательно устанавливать почтовые клиенты на телефон или компьютер. В комплекте идут классический Roundcube и легковесный Snappymail.
Если кто-то предпочитает Thunderbird, Apple Mail или Outlook, сервер предоставляет стандартные профили автоконфигурации. Пользователю достаточно ввести логин и пароль, и клиент автоматически подтянет правильные порты и протоколы шифрования.
Умные фильтры и сбор почты
Mailu поддерживает ManageSieve. Это означает, что пользователи могут настраивать правила сортировки, автоответы на время отпуска и пересылку почты прямо из веб-клиента. Также есть встроенный fetchmail, который собирает почту с внешних сторонних аккаунтов и помещает ее в ваш локальный аккаунт.
Как запустить
Разработчики сделали отличный веб-генератор конфигурации на официальном сайте setup.mailu.io. Вы просто отмечаете нужные компоненты (какой веб-клиент установить, нужен ли антивирус, какую базу данных), указываете доменное имя сервера и получаете готовый архив с двумя файлами: mailu.env и docker-compose.yml.
После этого запуск сводится к трем командам в терминале:
# Переходим в директорию с конфигами
cd /mailu
# Скачиваем образы и запускаем сервисы в фоне
docker compose up -d
# Создаем первого администратора
docker compose exec admin flask mailu admin admin example.com 'ВашСложныйПароль'
Затем нужно зайти в панель управления, добавить DNS-записи у регистратора (MX, SPF, DKIM, DMARC), и сервер готов к полноценной работе.
Подводные камни
Как бы удобно ни было программное обеспечение, оно не отменяет физику почтовых протоколов. Перед развертыванием учитывайте несколько моментов:
- Потребление оперативной памяти. Если включить ClamAV, серверу нужно минимум 3-4 ГБ оперативной памяти. Базы данных антивируса тяжелые. Если у вас слабый VPS с 1 ГБ оперативной памяти, придется отключить антивирус в настройках, оставив только Rspamd.
- Чистота IP-адреса. Хостинг-провайдеры часто выдают адреса с плохой историей. Перед запуском обязательно проверьте IP-адрес сервера по черным спискам (DNSBL) и настройте rDNS (PTR-запись) через поддержку хостинга, иначе письма не дойдут до Gmail и Outlook.
- Порт 25. Многие облачные провайдеры блокируют исходящий порт 25 по умолчанию для борьбы со спамерами. Убедитесь, что ваш хост позволяет его открыть.
Кому пригодится проект
Mailu — отличный выбор для веб-студий, небольших компаний и энтузиастов self-hosting. Он покрывает 99% корпоративных почтовых потребностей, не требует часов ручной настройки Postfix и обновляется простым docker compose pull.
Если вы устали от постоянно растущих цен на сторонние почтовые сервисы для доменов или хотите полностью контролировать свою переписку, разверните демо Mailu. Скорее всего, вы никогда не захотите возвращаться к ручной сборке почтовых серверов.
関連プロジェクト