Пошаговая инструкция по установке и настройке Mailcow с интеграцией LDAP (FreeIPA)

1. Обновление системы

sudo su -
dnf update -y && dnf upgrade -y

2. Установка дополнительных пакетов

dnf install -y dnf-plugins-core curl net-tools traceroute mc git wget

3. Установка Docker

dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
systemctl start docker
systemctl enable docker
systemctl daemon-reload
systemctl restart docker
usermod -aG docker yc-user

4. Установка docker-compose

sudo curl -L "https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

5. Загрузка Mailcow

git clone https://github.com/mailcow/mailcow-dockerized /opt/mailcow-dockerized
cd /opt/mailcow-dockerized
./generate_config.sh

Необходимо выбрать "ночные сборки" при генерации файла конфигурации.

6. Включение SELinux в Docker

cat <<EOF | sudo tee /etc/docker/daemon.json > /dev/null
{
  "selinux-enabled": true
}
EOF

systemctl restart docker
docker info | grep selinux

7. Запуск Mailcow

docker compose pull
docker compose up -d

8. Доступ к интерфейсу

  • URL: https://post.tx0.ru
  • Логин: admin
  • Пароль: moohoo

9. Создание холодной копии

./create_cold_standby.sh

10. Настройка резервного копирования

mkdir -p /opt/mailcow-backup
THREADS=14 MAILCOW_BACKUP_LOCATION=/opt/mailcow-backup /opt/mailcow-dockerized/helper-scripts/backup_and_restore.sh backup all --delete-days 3

11. Настройка внешнего LDAP-провайдера (FreeIPA)

  • Identity Provider: LDAP
  • Host: ipa-01.tx0.ru
  • Port: 636
  • Use SSL: yes
  • Use StartTLS: no
  • Ignore SSL Errors: yes
  • Base DN: dc=tx0,dc=ru
  • Username Field: mail
  • Filter: (objectClass=inetOrgPerson)(memberOf=cn=post,cn=groups,cn=accounts,dc=tx0,dc=ru)
  • Attribute Field: mail
  • Bind DN: uid=admin,cn=users,cn=accounts,dc=tx0,dc=ru
  • Bind Password: ExamplePassword123!
  • Attribute Mapping: Default
  • Periodic Full Sync: yes
  • Import Users: yes
  • Sync / Import interval: 5 min

12. Настройка Dovecot LDAP

cat <<EOF > /opt/mailcow-dockerized/data/conf/dovecot/ldap/passdb.conf
hosts = ipa-01.tx0.ru
ldap_version = 3
dn = uid=admin,cn=users,cn=accounts,dc=tx0,dc=ru
dnpass = ExamplePassword123!
tls = yes
tls_require_cert = never
base = cn=users,cn=accounts,dc=tx0,dc=ru
auth_bind = yes
pass_filter = (&(objectClass=inetOrgPerson)(uid=%u))
pass_attrs = mail=user,userPassword=password
default_pass_scheme = SSHA
EOF

13. Настройка FreeIPA

В интерфейсе FreeIPA создайте группу post и добавьте в неё всех пользователей, которым необходим доступ к почтовому сервису.

  • Если используется глобальный REALM (например, tx0.ru), дополнительных изменений не требуется.

  • Если же используется локальный домен, необходимо отредактировать поле почтового адреса у соответствующих пользователей, чтобы оно соответствовало нужному домену.