Синхронизирует алиасы пользователей и групп из LDAP (например, Active Directory) с mailcow-dockerized. Этот инструмент предназначен для работы только с алиасами и не создает почтовые ящики пользователей.
Python-скрипт периодически проверяет LDAP и создает/обновляет алиасы в mailcow через API:
- Алиасы пользователей: извлекает алиасы из атрибута
proxyAddressesпользователей LDAP - Алиасы групп: создает алиасы для групп LDAP, где адрес группы направляет на всех участников группы
- Опционально: отключает пользователей, которые больше не найдены в LDAP (если включено)
-
Создайте директорию
data/db. В ней будет храниться SQLite база данных для синхронизации. -
Создайте (или обновите) ваш
docker-compose.override.ymlс дополнительным контейнером:version: '2.1' services: ldap-mailcow: image: 'ghcr.io/lazygatto/custommailcow-ldap:latest' network_mode: host container_name: mailcowcustomized_ldap-mailcow depends_on: - nginx-mailcow volumes: - ./data/ldap:/db:rw restart: unless-stopped environment: - LDAP_MAILCOW_LDAP_URI=ldap(s)://dc.example.local - LDAP_MAILCOW_LDAP_BASE_DN=OU=Mail Users,DC=example,DC=local - LDAP_MAILCOW_LDAP_BIND_DN=CN=Bind DN,CN=Users,DC=example,DC=local - LDAP_MAILCOW_LDAP_BIND_DN_PASSWORD=BindPassword - LDAP_MAILCOW_API_HOST=https://mailcow.example.local - LDAP_MAILCOW_API_KEY=XXXXXX-XXXXXX-XXXXXX-XXXXXX-XXXXXX - LDAP_MAILCOW_SYNC_INTERVAL=300 - LDAP_MAILCOW_LDAP_FILTER=(&(objectClass=user)(objectCategory=person)(memberOf:1.2.840.113556.1.4.1941:=CN=Group,CN=Users,DC=example DC=local)) - LDAP_MAILCOW_LDAP_GROUP_FILTER=(&(objectClass=group)(mail=*)) - LDAP_MAILCOW_LDAP_GROUP_MEMBER_FILTER=(&(objectClass=person)(mail=*)(distinguishedName={MEMBER_CN})) - LDAP_MAILCOW_DISABLE_DELETED_USERS=false
-
Настройте переменные окружения:
Обязательные переменные:
LDAP_MAILCOW_LDAP_URI- URI LDAP сервера (например, Active Directory). Должен быть доступен из контейнера. Формат:protocol://host:port, напримерldap://localhostилиldaps://secure.domain.orgLDAP_MAILCOW_LDAP_BASE_DN- базовый DN где находятся учетные записи пользователейLDAP_MAILCOW_LDAP_BIND_DN- DN специальной учетной записи LDAP для поиска пользователейLDAP_MAILCOW_LDAP_BIND_DN_PASSWORD- пароль для bind DN учетной записиLDAP_MAILCOW_API_HOST- URL API mailcow. Убедитесь, что он включен и доступен из контейнера для чтения и записиLDAP_MAILCOW_API_KEY- ключ API mailcow (чтение/запись)LDAP_MAILCOW_SYNC_INTERVAL- интервал в секундах между синхронизациями LDAP
Опциональные LDAP фильтры:
LDAP_MAILCOW_LDAP_FILTER- LDAP фильтр для поиска пользователей, по умолчанию(&(objectClass=user)(objectCategory=person))LDAP_MAILCOW_LDAP_GROUP_FILTER- LDAP фильтр для поиска групп и создания алиасов, по умолчанию(&(objectClass=group)(mail=*))LDAP_MAILCOW_LDAP_GROUP_MEMBER_FILTER- LDAP фильтр для поиска участников группы, по умолчанию(&(objectClass=person)(mail=*)(distinguishedName={MEMBER_CN})). Сохраните{MEMBER_CN}, так как он заменяется во время выполнения скрипта.
Опциональные переменные управления:
LDAP_MAILCOW_DISABLE_DELETED_USERS- включить отключение пользователей, удаленных из LDAP (по умолчаниюfalse). Установите вtrue, если хотите, чтобы скрипт отключал пользователей, которые больше не найдены в LDAP.
-
Запустите дополнительный контейнер:
docker compose up -d ldap-mailcow -
Проверьте логи
docker compose logs ldap-mailcow(илиdocker compose logs --tail=100 ldap-mailcowдля сокращения вывода)
Скрипт поддерживает алиасы пользователей, которые должны быть установлены в Active Directory в атрибуте proxyAddresses.
Формат записей: smtp:username@domain.com
Вы можете добавить столько алиасов, сколько нужно для каждого пользователя.
Скрипт автоматически создает алиасы для групп LDAP:
- Адрес алиаса берется из атрибута
mailгруппы - Алиас направляет письма на всех участников группы, у которых есть атрибут
mail - При изменении состава группы алиас автоматически обновляется
Если установлена переменная LDAP_MAILCOW_DISABLE_DELETED_USERS=true, скрипт будет отключать пользователей в mailcow, которые больше не найдены в LDAP. Это полезно, если вы не используете встроенную синхронизацию пользователей mailcow.
Если переменная не установлена или установлена в false, эта функция отключена, что подходит для использования со встроенной синхронизацией пользователей mailcow.
Этот инструмент предназначен только для синхронизации алиасов. Он НЕ создает почтовые ящики пользователей. Используйте встроенную функциональность mailcow для синхронизации пользователей или создавайте их вручную.
Алиасы из вашего LDAP каталога будут добавлены (и деактивированы при удалении/отключении) в вашу базу данных mailcow. Обратная синхронизация не выполняется, и это сделано намеренно.
Эта версия была написана и протестирована только с Active Directory на контроллере домена Windows Server 2019. Работа с OpenLDAP или другими реализациями LDAP не тестировалась.
Оригинальный инструмент был создан Programmierus. Эта версия является форком от форка rinkp
Если вы запускаете ваш сервер mailcow за Nginx Proxy Manager - вы можете проверить этот репозиторий с дополнительным скриптом для экспорта SSL сертификата в mailcow.
Вы всегда можете связаться со мной для помощи с интеграцией или для кастомных модификаций на платной основе. Моя текущая почасовая ставка (отслеживается ActivityWatch) составляет 50$ с минимальным обязательством 3 часа.