headermask image

Интеграция почтового сервера CommuniGate Pro с доменом Microsoft Active Directory

Для начала то, что имеется в нашем распоряжении:

  • Установленный и настроенный почтовый сервер CommuniGate Pro под управлением ОС FreeBSD-5.3-RELEASE.
  • Почтовый клиент MS Outlook 2003.
  • Учётные записи в домене Communigate Pro отличаются от учётных записей в домене AD и имеют другие пароли (названия доменов также отличаются).
  • Корректно работающий домен AD под управлением ОС Windows Server 2003 Standart Edition

Итак, наша цель или то, что мы хотим получить на выходе:

  • Синхронизация учётных записей пользователей в домене AD и в домене Communigate Pro (Пользователи автоматически создаются в домене Communigate Pro, если они существуют в домене AD, и автоматически удаляются, если они там отсутствуют).
  • Аутентификация пользователей Communigate Pro в домене AD.
  • Корректное отображение поля “Полное имя” учётной записи домена AD в поле RealName учётной записи CommunigatePro.
  • Подключение MS Outlook к Communigate Pro при помощи MAPI-коннектора.
  • Общие контакты.
  • Общие папки.

Теперь о том, что для всего этого нам потребуется:

  • MAPI-коннектор к MS Outlook версии 1.1.10 либо позднее. Качаем с сайта Stalker.
  • Скрипт LDAP аутентификации на Perl, который представляет собой немного модифицированный скрипт от Stalker. [Сам скрипт] [Оригинал от Stalker]
  • Следующие Perl модули для работы скрипта:Net::LDAP и его зависимости.

    CGP::CLI Это модуль для работы с Communigate Pro из командной строки. Важно использовать последнюю версию 2.6.6 или позднее, т.к. предыдущие имеют очень неприятный дефект – администратор почтовой системы не может авторизоваться с использованием CLI, если в настройках Communigate Pro отключен Advertise APOP method.

    Digest::MD5 Требуется для работы CGP::CLI.

Установка и настройка системы


1. Установка модулей Perl

# cd /usr/ports/net/p5-perl-ldap # make install clean
# cd /usr/ports/security/p5-Digest-MD5 # make install clean

Узнаём в какие каталоги можно установить CLI.pm.

# perl -V

Копируем CLI.pm в один из этих каталогов.

2. Настройка Communigate Pro

Копируем скрипт аутентификации в /var/CommuniGate/.

Заходим в Domain Settings, ищем группу Unknown Names и в ней выставляем Consult External Authenticator = Yes. Это позволит нам использовать внешний список пользователей, т.е. запрос на аутентификацию от неизвестной учётной записи будет перенаправляться внешнему аутентификатору.

Теперь заходим в Account Defaults для нашего домена и настраиваем следующую опцию: External Authentication=Yes. Это позволит пользователям использовать внешнюю аутентификацию. Далее жмём на галку в левом верхнем углу. В поле Display and Data Input устанавливаем Charset=utf8-получаем корректное отображение имени пользователя, так как Windows Server 2003 использует ту же кодировку utf8.

Заходим в Settings=>Obscure и снимаем все галки. Пароли будут передаваться в открытом виде (шифрованные пароли не будут корректно распознаны LDAP сервером, так как LDAP использует plain text пароли).

Подключаем внешний аутентификатор для всего сервера. Это делается на вкладке Settings=>General=>Helpers. Указываем путь до модуля аутентификации. В нашем случае это /var/CommuniGate/w2k3domain.pl. Запускаем.

3. Механизм работы

Домен AD может авторизовывать и предоставлять информацию о пользователях по протоколу LDAP, а CommuniGatePro может использовать эту информацию. При выяснении обстоятельств выяснилось, что AD несколько необычно хранит данные о пользователях в каталоге, т.е. нет прямого соответствия между логином пользователя и его именем, поэтому предлагаемый Stalker скрипт в данном случае не подходит, пришлось его немного поправить.

Вы создаёте учётную запись в домене AD, например, ad_account. При попытке принять или отправить почту с этой учётной записи( логин вида ad_account@cgp_domian.ru) после поиска в LDAP каталоге и успешной аутентификации будет создана учётная запись ad_account в домене cgp_domain.ru. В поле RealName в Communigate Pro передаётся поле “Полное имя”, которое можно увидеть при переименовании пользователя. По умолчанию оно совпадает с полем “Выводимое имя”.

4. Настройка скрипта w2kdomain.pl

my $LDAPServerAddress =  '192.168.0.1';
# Адрес вашего контроллера домена
my $LDAPAdminDN = 'CN=admin,CN=Users,DC=ad_domain,DC=local';
# Учётная запись администратора домена,   полезно запустить на контроллере домена Adsiedit.msc
my $LDAPAdminPassword = 'admin_pass';
# пароль администратора домена
my $LDAPSearchBase = 'DC=ad_domain,DC=local';
# поиск пользователей ведётся по всему дереву каталога
my $CGServerAddress =  '127.0.0.1';
# Адрес сервера Communigate Pro
my $CLILogin = '
 postmaster@mail.cgpЭтот адрес e-mail защищен от спам-ботов. Чтобы увидеть его, у Вас должен быть включен Java-Script  _domain.ru';
# аккаунт постмастера на Communigate Pro

my $CLIPassword = 'postmaster_pass';
# пароль постмастера

5. Устанавливаем MAPI-коннектор

Для установки MAPI-коннектора на большое количество рабочих станций удобно воспользоваться групповыми политиками домена AD. Есть два варианта установки: для пользователя и для компьютера. Настройки обоих вариантов отличаются незначительно. В качестве примера рассмотрим установку для компьютера. Создаём в домене AD новое подразделение под названием, к примеру, Workstations. Перетаскиваем в него все компьютеры, на которых должен быть установлен MAPI-коннектор. В свойствах подразделения ищем вкладку Групповая политика. Создаём новый объект групповой политики. Далее изменяем его. Идём в Конфигурация компьютера=>Конфигурация Windows=> Сценарии(запуск/завершение)=>Автозагрузка. Далее Свойства=>Показать файлы. Перетаскиваем в открывшуюся папку файлы setup.exe cgmxp32.ini cgmxui32.inf. Копируем полный путь к файлу setup.exe и вставляем его в сценарий автозагрузки. В параметрах сценария указываем ключи /i /q /Q (установить/обновить MAPI-коннектор, не спрашивать о конфигурировании профиля, не выводить сообщения об ошибках). Сообщение об ошибке может появиться в случае установки на компьютер, на котором не установлен MS Outlook. После перезагрузки на рабочих станциях будет установлен MAPI-коннектор. Очень удобен данный метод для обновления MAPI-коннектора по мере выхода новых версий.

6. Настраиваем MS Outlook 2003

Устанавливаем MAPI-коннектор. На вопрос о конфигурировании почтового профиля отвечаем отрицательно. Запускаем MS Outlook. Создаём новую учётную запись. При выборе типа сервера нужно указать Дополнительные типы серверов. Там должен появиться Communigate Pro. В свойствах коннектора указываем учётную запись вида ad_account@cgp_domain.ru и пароль из домена AD. Снимаем галку Использовать безопасную проверку пароля.

На самом деле согласно документации на Communigate Pro можно использовать два пароля для входа-один из Communigate Pro, другой-полученный от внешнего аутентификатора. Они будут проверяться по очереди.

7. Использование общих контактов и папок

Для того, чтобы использовать общие контакты и общие папки, создадим в Communigate Pro специальную учётную запись, например, public. Подключимся к ней через через MS Outlook и перетащим в папку Контакты заранее подготовленные контакты, а также назначим права пользователей на эту папку, к примеру anyone на чтение. Далее создадим подписку всех новых пользователей на эту папку. Для этого идём в Domains=>cgp_domain.ru=>Accounts=>Template и ищем группу Initial Mailbox Aliases. Вносим в поле Alias Name = Контакты, в поле Foreign Mailbox Name = ~public/Контакты.После этого у каждого нового пользователя автоматически будут появляться контакты при подключении с помощью MAPI-коннектора.

Тоже самое можно проделывать с любыми папками. К примеру, удобно складывать почту с таких почтовых ящиков как sales, info, support в соответствующую папку учётной записи public и подписывать на эти папки тех пользователей, кому они нужны, плюс будут полезны права доступа на эти папки. Более подробно об этом можно узнать в документации к Communigate Pro.

Есть ещё один вариант коллективной работы, который кажется мне болле приемлемым с точки зрения масштабируемости и удобства работы. Это не просто подписка на папки в аккаунте public, а подключение этого аккаунта как дополнительного почтового ящика, который будет виден в MS Outlook как отдельная учётная запись. Для автоматического подключения дополнительных почтовых ящиков и использования ряда дополнительных настроек, которые помогут уменьшить количество действий со стороны пользователя при установке MAPI-коннектора, можно использовать специальный файл конфигурации cgmxui32.inf, который должен располагаться в том же каталоге что и setup.exe.

   ;Providers=CGATEMS,CGATEMSP,CGATEXP  Providers=CGATEMS,CGATEXP

Если раскомментировать первую и закомментировать вторую строки, то при установке MAPI-коннектора аккаунт с именем public автоматически будет добавлен. Информацию об остальных полезных настройках можно почерпнуть из комментариев в этом файле (в частности, можно подключать несколько дополнительных аккаунтов, прописывать имя почтового сервера и прочее). Аналогично предыдущему случаю в аккаунте создаются необходимые общие папки. Доступ пользователей в этом случае будет регулироваться только правами доступа к папкам, тем самым отпадает необходимость в подписке.

Заключение:

Остаётся написать скрипт на Perl, который будет автоматически удалять пользователей из Communigate Pro, если не обнаружит таковых в домене AD, и запускать его допустим раз в день.Также придётся привести в соответствие старые учётные записи Communigate Pro и домена AD. Пример моего скрипта adsync.pl. Поддерживатеся уведомление администратора по почте об удалённых аккаунтах и специальные учётные записи, которые не требуется удалять если их нет в AD.

Оригинал здесь 

vtoroy
Похожие посты
  • Использование CommuniGate Pro как почтового сервера периметра для MS Exchange
  • Пошаговые руководства по Windows Server 2008 на русском
  • Защита OU от случайного удаления в Windows Server 2008
  • Веб-трансляция: Active Directory Rights Management Services в Windows Server 2008
  • Active Directory Topology Diagrammer – помощник администратора
  • Настройка Windows Server 2008 R2 в качестве RADIUS сервера для Cisco ASA, часть 2
  • О блоге
  • Настройка SCCM 2007 SP1 в Windows Server 2008, часть 7
  • Как переименовать существующий DAG в Exchange 2010
  • Event id 9548. Disabled user does not have a master account SID
  • 2 комментов оставлено (Add 1 more)

    1. Может кто подскажет, как изменить этот скрипт, что бы поиск по LDAP домену производился не по sAMAccountName а по полю mail ?
      У меня email пользователей отличается от sAMAccountName поэтому хочу что бы инфа в коммунигейт заливалась правильная.

      Прошелся по скрипту, заменил sAMAccountName на mail, сделал
      mail=$name\@$domain\

      Но все равно в логах пишет

      13:05:25.163 4 EXTAUTH out(051): 6 VRFY PASSWORD\n
      13:05:25.180 4 EXTAUTH inp(041): 6 ERROR Error: Not get distinguishedName
      13:05:25.180 1 EXTAUTH la@X.X.X (XIMSS) plain password is incorrect
      13:05:25.180 1 ACCOUNT(la@X.X.X ) login(XIMSS) from [192.168.100.28]:61912 failed. Error Code=incorrect password
      13:14:50.536 4 EXTAUTH out(051): 7 VRFY la@X.X.X PASSWORD\n
      13:14:50.590 4 EXTAUTH inp(041): 7 ERROR Error: Not get distinguishedName
      13:14:50.590 1 EXTAUTH la@X.X.X (XIMSS) plain password is incorrect
      13:14:50.590 1 ACCOUNT(la@X.X.X ) login(XIMSS) from [192.168.100.28]:62695 failed. Error Code=incorrect password

      1. Kris on January 26th, 2011 at 3:31 pm
    2. Автору риспект!
      Очень вовремя )

      Такой очень важный вопрос:
      Как устроен механизм работы удаления учётной записи пользователя из домена CGP, если в домене AD мы удалили учётку данного пользователя? (допустим сотрудник уволился)
      Какой компонет (модуль, скрипт или др.) за это отвечает?

      Спасибо.

      2. buriy on May 20th, 2008 at 12:08 pm