mailcow: dockerized — полноценный стек для своей почты на сервере: Postfix, Dovecot, Rspamd, опционально ClamAV, веб-админка, SOGo, MariaDB, Redis, Nginx и др., на Docker и Docker Compose.
Зачем mailcow
- Своя почта для доменов под вашим контролем.
- Домены, алиасы, квоты из одной панели.
- Поддерживаемая community-сборка вместо ручной склейки Postfix + Dovecot + антиспам + веб-почта.
Официальные лимиты (соблюдайте)
| Ресурс | Минимум в документации |
|---|---|
| RAM | 6 ГиБ + 1 ГиБ swap (по умолчанию) |
| Диск | 20 ГиБ минимум (без объёма почтовых ящиков) |
| CPU | 1 GHz |
| Архитектура | x86_64 или ARM64 |
Не поддерживается: OpenVZ, Virtuozzo, LXC, NAS Synology/QNAP. Нужна полная виртуализация (KVM, Hyper-V, ESXi и т.д.), желательно 8+ ГиБ RAM при нескольких пользователях / ActiveSync.
Облегчение: в mailcow.conf — SKIP_CLAMD=y, SKIP_FTS=y.
Перед установкой убедитесь, что порты 25, 80, 110, 143, 443, 465, 587, 993, 995, 4190 свободны на хосте:
Bashss -tlpn | grep -E -w '25|80|110|143|443|465|587|993|995|4190'
DNS до старта
См. prerequisite-dns:
- FQDN сервера, например
mail.example.com— этоMAILCOW_HOSTNAME. - Записи A (и AAAA при IPv6) на IP VPS.
- MX домена на этот FQDN.
- PTR публичного IP должен совпадать с FQDN (часто настраивается у хостера, не в зоне домена).
- После установки: SPF (TXT), DKIM (из UI mailcow), DMARC (
_dmarc).
Инструменты: MXToolbox, Mail-tester.
Шаг 1 — пакеты (Debian / Ubuntu)
Bashsudo apt update sudo apt install -y git openssl curl gawk coreutils grep jq
Шаг 2 — Docker Engine и Compose v2
Нужны Docker ≥ 24.0.0 и Compose ≥ 2.0. Рекомендуется актуальный Docker Engine:
Bashcurl -sSL https://get.docker.com/ | CHANNEL=stable sudo sh sudo systemctl enable --now docker
Плагин Compose (docker compose без дефиса):
Bashsudo apt update sudo apt install -y docker-compose-plugin
Проверка:
Bashdocker --version docker compose version
Шаг 3 — клонирование и конфиг
Официально /opt и umask 0022:
Bash1sudo su 2umask 0022 3cd /opt 4git clone https://github.com/mailcow/mailcow-dockerized 5cd mailcow-dockerized 6./generate_config.sh
Скрипт спросит FQDN и создаст mailcow.conf.
Bashnano mailcow.conf
Проверьте MAILCOW_HOSTNAME. С версии 2025-09 можно отключить IPv6, если сеть/хостер некорректно обрабатывает IPv6 Docker:
BashENABLE_IPV6=false
После смены IPv6 нужен полный перезапуск стека. См. Disable IPv6.
Шаг 4 — запуск
Из /opt/mailcow-dockerized:
Bashdocker compose pull docker compose up -d
Админка: https://ВАШ_MAILCOW_HOSTNAME/admin
Учётные данные по умолчанию (смените сразу):
- Пользователь:
admin - Пароль:
moohoo
Сразу после первого входа
- Сменить пароль администратора (не оставлять
moohoo). - Включить 2FA: Two-Factor Authentication.
- NTP / время — обязательно для TOTP:
timedatectl status(NTP synchronized: yes). Date and Time. - HTTPS — штатный доступ mailcow; см. при необходимости HTTP to 443.
- DKIM / SPF / DMARC — ключ в UI и записи TXT по prerequisite-dns.
UFW, Docker и фаервол
Документация предупреждает: UFW / firewalld на хосте часто плохо стыкуются с правилами Docker; рекомендуется настраивать цепочку DOCKER-USER. См. материалы mailcow и например unrouted.io — Docker firewall.
На стороне провайдера откройте как минимум входящие TCP: 25, 80, 110, 143, 443, 465, 587, 993, 995, 4190 (если не меняли в mailcow.conf).
Облегчение нагрузки (опционально)
В mailcow.conf:
BashSKIP_CLAMD=y SKIP_FTS=y
Затем пересоздание/перезапуск сервисов по документации.
MTU ≠ 1500
При уменьшенном MTU в docker-compose.yml:
YAMLnetworks: mailcow-network: driver_opts: com.docker.network.driver.mtu: 1450
См. Troubleshooting MTU.
Обновления
Используйте update.sh из репозитория. Бэкапьте volumes Docker и каталог mailcow-dockerized (mailcow.conf, data/).
Сброс пароля админа
Bashcd /opt/mailcow-dockerized ./helper-scripts/mailcow-reset-admin.sh
Полезные ссылки
На VPS Infrawire заранее проверьте ресурсы и тип виртуализации под требования mailcow.