Mailcow на Ubuntu 24.04: пошаговая установка
Свой почтовый сервер перестал быть уделом энтузиастов: Mailcow собирает Postfix, Dovecot, Rspamd, SOGo и веб-админку в один набор Docker-контейнеров, который поднимается за полчаса. Ниже — полная установка Mailcow на Ubuntu 24.04: от подготовки VPS и DNS до первого отправленного письма, которое не улетает в спам.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что такое Mailcow и что нужно заранее
Mailcow (полное имя — mailcow: dockerized) — это готовая почтовая платформа. Вместо ручной сборки десятка сервисов вы получаете единый стек: Postfix для SMTP, Dovecot для IMAP/POP3, Rspamd для фильтрации спама и подписи DKIM, ClamAV для антивируса, SOGo как веб-почту с календарём и контактами, а сверху — удобную панель управления доменами и ящиками.
Минимальные требования к серверу выше, чем у одиночного Postfix, потому что контейнеров много:
- 2 vCPU (можно 1, но ClamAV будет подтормаживать);
- от 6 ГБ RAM — это честный минимум, комфортно от 8 ГБ;
- 20–40 ГБ SSD под систему и почту;
- чистый белый IP с возможностью настроить обратную запись (PTR).
Последний пункт критичен. Почтовые провайдеры проверяют репутацию IP, и адрес из «грязного» пула, ранее замеченного в рассылках, обречён падать в спам. Берите VPS с выделенным чистым IP и возможностью задать PTR — без этого качественную доставку не получить. Порт 25 у провайдера должен быть открыт: некоторые хостеры закрывают его по умолчанию, уточните это до заказа.
Готовим DNS-записи домена
DNS настраивают до установки, чтобы записи успели разойтись по миру (TTL может держаться сутки). Предположим, домен example.com, а хост почты — mail.example.com.
Понадобятся записи:
- A —
mail.example.com→ ваш IPv4; - AAAA — если у сервера есть IPv6, иначе не создавайте (пустая или битая AAAA портит доставку);
- MX —
example.com→mail.example.comс приоритетом 10; - SPF (TXT) —
example.com→v=spf1 mx ~all; - DMARC (TXT) —
_dmarc.example.com→v=DMARC1; p=quarantine; rua=mailto:postmaster@example.com; - PTR (обратная запись) — настраивается на стороне провайдера/хостинга, а не в зоне домена: IP →
mail.example.com.
DKIM-запись добавим позже — её сгенерирует сама Mailcow после установки. Проверить расхождение записей удобно так:
dig +short MX example.com
dig +short A mail.example.com
dig +short TXT example.com
PTR должен строго совпадать с именем mail.example.com, а прямая A-запись — вести обратно на тот же IP. Это правило FCrDNS, и почтовые гиганты его проверяют жёстко.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPS под MailcowПодготовка сервера Ubuntu 24.04
Зайдите на свежий сервер по SSH и обновите систему:
apt update && apt upgrade -y
apt install -y curl git apt-transport-https ca-certificates gnupg
timedatectl set-timezone Europe/Moscow
hostnamectl set-hostname mail.example.com
Проверьте, что hostname отдаётся полным доменным именем — Mailcow это использует:
hostname -f
Важный нюанс: Ubuntu держит на порту 53 системный резолвер systemd-resolved, а Mailcow поднимает собственный DNS-контейнер (Unbound). Освободите порт заранее:
sed -i 's/^#DNSStubListener=yes/DNSStubListener=no/' /etc/systemd/resolved.conf
systemctl restart systemd-resolved
Устанавливаем Docker и Docker Compose
Mailcow работает поверх официального Docker. Ставим движок и плагин compose из репозитория Docker:
curl -fsSL https://get.docker.com | sh
Скрипт добавит репозиторий и установит docker-ce вместе с плагином docker compose. Проверьте версии — Mailcow требует Docker свежее 24 и Compose v2:
docker --version
docker compose version
Убедитесь, что демон запущен и стартует автоматически:
systemctl enable --now docker
Разворачиваем Mailcow
Клонируйте репозиторий в /opt — так принято по документации:
cd /opt
git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized
Запустите генератор конфигурации. Он спросит основной FQDN почты и часовой пояс:
./generate_config.sh
На вопрос Mail server hostname (FQDN) введите mail.example.com — именно то имя, что стоит в PTR и A-записи. Скрипт создаст файл mailcow.conf со всеми параметрами. Пара полезных правок в нём: если у сервера нет IPv6, отключите его, чтобы не ловить ошибки:
sed -i 's/^SKIP_IP_CHECK=n/SKIP_IP_CHECK=n/' mailcow.conf
Если 80 и 443 порты заняты внешним обратным прокси, поменяйте HTTP_PORT/HTTPS_PORT в mailcow.conf. Для отдельного VPS оставьте по умолчанию.
Теперь тянем образы и стартуем весь стек:
docker compose pull
docker compose up -d
Первый запуск скачивает несколько гигабайт образов и инициализирует базы — это занимает 5–15 минут. Следите за состоянием контейнеров:
docker compose ps
Все сервисы должны быть в статусе running/healthy. Контейнер acme-mailcow в этот момент уже запрашивает бесплатный сертификат Let's Encrypt для вашего FQDN — отдельно SSL настраивать не нужно, если 80-й порт доступен снаружи.
Первый вход в панель и настройка почты
Откройте в браузере https://mail.example.com. Логин по умолчанию — admin, пароль — moohoo. Первым делом смените пароль администратора в разделе Access → Administrators, это обязательный шаг безопасности.
Дальше добавьте домен и ящик:
- Configuration → Mail Setup → Domains — добавьте
example.com, задайте квоту и лимит ящиков. - Во вкладке Mailboxes создайте первый ящик, например
postmaster@example.com. - Вернитесь к домену и откройте DKIM keys — Mailcow уже сгенерировала пару. Скопируйте публичный ключ.
- Добавьте его в DNS как TXT-запись
dkim._domainkey.example.com.
После того как DKIM разойдётся по DNS, ваши письма получают три подписи разом — SPF, DKIM и DMARC. Отправьте тестовое письмо на внешний ящик и проверьте заголовки: все три проверки должны быть pass. Удобный внешний тест — отправить письмо на сервис проверки доставляемости и посмотреть итоговый балл.
Клиентские настройки для пользователей: IMAP — mail.example.com, порт 993 (SSL); SMTP — mail.example.com, порт 587 (STARTTLS); логин — полный адрес ящика. Веб-почта доступна прямо в панели через SOGo.
Чтобы стек стартовал сам после перезагрузки, ничего дополнительно делать не нужно — Docker с политикой рестарта поднимет контейнеры. Но проверьте это вручную один раз: перезагрузите сервер и убедитесь, что docker compose ps снова показывает все сервисы живыми.
Для обновления Mailcow есть штатный скрипт, запускайте его раз в пару месяцев:
cd /opt/mailcow-dockerized
./update.sh
Не забудьте про бэкапы. В комплекте идёт helper-scripts/backup_and_restore.sh — настройте его на выгрузку почтовых томов и базы на отдельное хранилище по расписанию через cron.
Почему локация и чистый IP решают всё
Mailcow технически безупречен, но доставляемость на 90% зависит от репутации IP и корректного PTR. Если провайдер не даёт задать обратную запись или выдаёт адрес из «серого» пула, даже идеально подписанные письма будут уходить в спам. Поэтому под почту берут VPS с выделенным чистым IP и правом настроить PTR.
Локация выбирается по аудитории. Пишете в основном по России и работаете с персональными данными — берите RU-сервер: так вы остаётесь в поле 152-ФЗ и получаете минимальный пинг. Рассылаете и общаетесь с зарубежными адресатами — US или UES дают лучшую репутацию у Gmail и Outlook и меньше региональных ограничений. Под 6–8 ГБ RAM, чистый IP и открытый 25-й порт подойдёт VPS среднего тарифа — на нём Mailcow чувствует себя комфортно.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPS под MailcowОбсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Частые вопросы
Сколько RAM реально нужно для Mailcow?
Честный минимум — 6 ГБ, комфортно — 8 ГБ. На 4 ГБ можно отключить ClamAV, но антивирус лучше оставить и просто взять сервер помощнее.
Обязателен ли PTR и чистый IP?
Да. Без корректной обратной записи и белого IP письма массово уходят в спам независимо от подписей SPF/DKIM/DMARC. Это главное условие рабочей почты.
Что делать, если провайдер закрыл порт 25?
На таком сервере полноценную отправку не поднять. Уточняйте открытость 25-го порта до заказа и берите хостинг, где почта разрешена.
Как оплатить сервер под Mailcow из России?
В MAATRIX доступна оплата картой российского банка, через СБП, криптовалютой и токеном MAAT — иностранная карта не нужна.
Нужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.