Для начала то, что имеется в нашем распоряжении:
- Установленный и настроенный почтовый сервер 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 _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.
Оригинал здесь
2 комментов оставлено (Add 1 more)