Установка mailcow
Требования
Системные пакеты
Для работы mailcow необходимы следующие пакеты Linux (могут потребовать установки в зависимости от вашего дистрибутива):
- git
- openssl
- curl
- awk
- sha1sum
- grep
- cut
- jq
Docker и Docker Compose
Для установки потребуются:
- Docker: версия
>= 24.0.0 - Docker Compose: версия
>= 2.0
Руководства по установке:
Быстрая установка
Системные пакеты
Debian/Ubuntu:
apt update
apt install -y git openssl curl gawk coreutils grep jq
RHEL-based дистрибутивы (например, Rocky Linux 9):
dnf install -y git openssl curl gawk coreutils grep jq
Alpine Linux (например, 3.22):
apk add --no-cache --upgrade sed findutils bash git openssl curl gawk coreutils grep jq
Примечание: все программы, не указанные явно в процессе установки, уже включены как подпрограммы в пакет
coreutils.
Docker
Важно: используйте последнюю доступную версию Docker Engine, а не версию из стандартных репозиториев вашего дистрибутива Linux.
Debian/Ubuntu:
curl -sSL https://get.docker.com/ | CHANNEL=stable sh
systemctl enable --now docker
RHEL-based дистрибутивы (например, Rocky Linux 9):
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable --now docker
Alpine Linux (например, 3.22):
apk --no-cache --upgrade add docker
rc-update add docker default
rc-service docker start
Примечание: скрипт
get.docker.comработает нестабильно или вовсе не работает на RHEL и Alpine Linux. Используйте ручной метод установки.
Docker Compose
Внимание: mailcow требует Docker Compose версии
>= 2.0.
Установка через менеджер пакетов (плагин)
Примечание: этот способ требует, чтобы репозиторий Docker был предварительно добавлен (см. раздел Docker).
Debian/Ubuntu:
apt update
apt install docker-compose-plugin
RHEL-based дистрибутивы:
dnf update
dnf install docker-compose-plugin
Alpine Linux (например, 3.22):
apk add --no-cache --upgrade docker-cli-compose
Внимание: при использовании плагина команда вызывается как
docker compose(без дефиса).
Установка как отдельная программа (standalone)
LATEST=$(curl -Ls -w %{url_effective} -o /dev/null https://github.com/docker/compose/releases/latest) && LATEST=${LATEST##*/}
curl -L https://github.com/docker/compose/releases/download/$LATEST/docker-compose-$(uname -s)-$(uname -m) > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
Внимание: при использовании standalone-версии команда вызывается как
docker-compose(с дефисом).
Настройка SELinux (необязательно)
На системах с включённым SELinux (например, CentOS 7):
- Проверьте, установлен ли пакет
container-selinux:
rpm -qa | grep container-selinux
- Включите поддержку SELinux в Docker:
Отредактируйте файл/etc/docker/daemon.jsonи добавьте параметр"selinux-enabled": true:
{
"selinux-enabled": true
}
После этого перезапустите демон Docker:
systemctl restart docker
Подробнее — в документации container-selinux.
Установка mailcow
- Переключитесь на root-пользователя и задайте маску прав:
su
umask 0022
- Перейдите в директорию
/optи клонируйте репозиторий:
cd /opt
git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized
- Сгенерируйте файл конфигурации:
./generate_config.sh
- При необходимости отредактируйте конфигурацию:
nano mailcow.conf
Запуск mailcow
Скачайте образы и запустите контейнеры:
Docker Compose (плагин):
docker compose pull
docker compose up -d
Docker Compose (standalone):
docker-compose pull
docker-compose up -d
Готово!
Теперь вы можете открыть панель управления по адресу https://ваш_домен/admin с логином admin и паролем moohoo.
Устранение неполадок
MTU не равен 1500 (например, OpenStack)
Измените сетевые настройки в файле docker-compose.yml:
networks:
mailcow-network:
driver_opts:
com.docker.network.driver.mtu: 1450
Нет IPv6 на хост-системе
Если ваш сервер не поддерживает IPv6, отключите его для сети mailcow. Подробнее об этом можно узнать в официальной документации mailcow.
Важные замечания
- Сохранность данных: ваши данные хранятся в томах Docker (volumes) и сохраняются даже при пересоздании или удалении контейнеров.
- Обратный прокси: если вы не используете обратный прокси-сервер, рекомендуется настроить перенаправление HTTP на HTTPS.