Как установить mailcow через Docker

Пошаговая инструкция по установке почтового сервера mailcow на VPS с помощью Docker и Docker Compose

Установка 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):

  1. Проверьте, установлен ли пакет container-selinux:
rpm -qa | grep container-selinux
  1. Включите поддержку SELinux в Docker:
    Отредактируйте файл /etc/docker/daemon.json и добавьте параметр "selinux-enabled": true:
{
  "selinux-enabled": true
}

После этого перезапустите демон Docker:

systemctl restart docker

Подробнее — в документации container-selinux.


Установка mailcow

  1. Переключитесь на root-пользователя и задайте маску прав:
su
umask 0022
  1. Перейдите в директорию /opt и клонируйте репозиторий:
cd /opt
git clone https://github.com/mailcow/mailcow-dockerized
cd mailcow-dockerized
  1. Сгенерируйте файл конфигурации:
./generate_config.sh
  1. При необходимости отредактируйте конфигурацию:
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.
Назад к статьям