Что-то я дано ничего путного не писал, на этот раз, я расскажу как интегрировать iRedMail и MS Windows Server с Active Directory на борту. Допустим, у вас есть небольшого или среднего размера компания, в ней уже есть контроллер домена (AD DC) и все функционирует как надо, но через некоторое время, появляется необходимость в настройке корпоративного почтового сервера.Необходимо подобрать будущую платформу для почтовой инфраструктуры, если руководствоваться соображениями разумного минимализма, то замену MS Exchange, можно найти в лице iRedMail, еще и бесплатной. Правда тут появляется один момент, что придется настраивать руками учетные записи пользователей в службе каталогов (Active Directory), а затем, создавать почтовые ящики на почтовом сервере и все это руками, в этой ситуации, обязательно возникнут сложности с пользователями и паролями (на вход в систему один пароль, на вход в почту другой), железобетонным, решением данной проблемы, будет интеграция этих систем между собой.
Для чего это нужно?!
Служба каталогов (Active Directory) представляет из себя централизованную базу хранения пользовательских данных и иных объектов, которая может обеспечить проверку подлинности пользователей. По сути, у нас уже есть база данных, с заполненной информацией о пользователях с сохраненными, в виде хешей, паролями и другими данными. Так почему ее не использовать?! Но переносить данные руками-совершенно не правильно, нам необходимо, этот процесс автоматизировать. Идея довольно проста, при попытке входа в почту, введенные данные пользователя будут пересылаться, для проверки подлинности, на контроллер домена, он, в свою очередь, проверив введенный пользователем пароль, разрешает вход или не разрешает- если пароль не верен, предположим, что введенный пароль верен, то пользователь получит доступ к своей почте.
У данной системы есть несомненный плюс, пользователю достаточно знать пароль, от собственной учетной записи, в Active Directory, в случае если он его забудет, то от вас, как от системного администратора, требуется его сбросить и пользователь снова может работать.
Как все это будет работать, я изобразил на схеме ниже:
Данное руководство рассчитано на работу контроллера домена и почтового сервера, в одном пространстве имен, в случае если ваши сервера имеют разные доменные имена, в настройке имеются существенные различия, для этого смотрите обновленный вариант статьи
Теперь, более подробно, о том, что я там изобразил.
У нас есть 2 сервера:
Сервер №1-Windows Server 2003/2008/2008R2 (с поднятыми ролями AD DC, DNS, NTP)
(данные службы присутствуют на любом контроллере домена!) с IP адресом 172.16.0.20 и ДНС именем DC1.example.org
Сервер №2-Linux (Ubuntu/Debian) сервер с установленной системой iRedMail (Postfix,OpenLDAP,RoundCube и прочее), который имеет IP адрес 172.16.0.100 и ДНС имя MAIL.example.org.
О том, как его поднять, я писал ранее в статье: Настройка почтового сервера iRedMail. Его необходимо только установить, никаких настроек делать, пока, не требуется.
Предполагается что оба сервера установлены и готовы к работе. Вся дальнейшая конфигурация представлена ИСКЛЮЧИТЕЛЬНО в тестовых целях, имена серверов, логины пользователей, IP адреса, пароли-необходимо заменить на свои, а пароли желательно вообще генерировать с помощью ПО, добавив им сложности!
Единственное ограничение — Dovecot воспринимает символ # как перенос, данный символ НЕЛЬЗЯ использовать в паролях!
Для чего это нужно?!
Служба каталогов (Active Directory) представляет из себя централизованную базу хранения пользовательских данных и иных объектов, которая может обеспечить проверку подлинности пользователей. По сути, у нас уже есть база данных, с заполненной информацией о пользователях с сохраненными, в виде хешей, паролями и другими данными. Так почему ее не использовать?! Но переносить данные руками-совершенно не правильно, нам необходимо, этот процесс автоматизировать. Идея довольно проста, при попытке входа в почту, введенные данные пользователя будут пересылаться, для проверки подлинности, на контроллер домена, он, в свою очередь, проверив введенный пользователем пароль, разрешает вход или не разрешает- если пароль не верен, предположим, что введенный пароль верен, то пользователь получит доступ к своей почте.
У данной системы есть несомненный плюс, пользователю достаточно знать пароль, от собственной учетной записи, в Active Directory, в случае если он его забудет, то от вас, как от системного администратора, требуется его сбросить и пользователь снова может работать.
Как все это будет работать, я изобразил на схеме ниже:
Данное руководство рассчитано на работу контроллера домена и почтового сервера, в одном пространстве имен, в случае если ваши сервера имеют разные доменные имена, в настройке имеются существенные различия, для этого смотрите обновленный вариант статьи
Теперь, более подробно, о том, что я там изобразил.
У нас есть 2 сервера:
Сервер №1-Windows Server 2003/2008/2008R2 (с поднятыми ролями AD DC, DNS, NTP)
(данные службы присутствуют на любом контроллере домена!) с IP адресом 172.16.0.20 и ДНС именем DC1.example.org
Сервер №2-Linux (Ubuntu/Debian) сервер с установленной системой iRedMail (Postfix,OpenLDAP,RoundCube и прочее), который имеет IP адрес 172.16.0.100 и ДНС имя MAIL.example.org.
О том, как его поднять, я писал ранее в статье: Настройка почтового сервера iRedMail. Его необходимо только установить, никаких настроек делать, пока, не требуется.
Предполагается что оба сервера установлены и готовы к работе. Вся дальнейшая конфигурация представлена ИСКЛЮЧИТЕЛЬНО в тестовых целях, имена серверов, логины пользователей, IP адреса, пароли-необходимо заменить на свои, а пароли желательно вообще генерировать с помощью ПО, добавив им сложности!
Единственное ограничение — Dovecot воспринимает символ # как перенос, данный символ НЕЛЬЗЯ использовать в паролях!
Подготавливаем инфраструктуру к взаимодействию.
Поднимаем права до root:
В Ubuntu
sudo su
В Debian
su
нам необходимо добавить имя сервера в hosts
nano /etc/hosts
Добавляем туда:
172.16.0.20 dc1.example.org
Сохраняем изменения и выходим
Пробуем пинговать dc1.example.org
Если пинги, проходят все отлично! Если нет, то проверяем правильность написания и IP адрес контроллера домена.
Маленький, полезный, но не обязательный момент
Настроим синхронизацию времени почтового сервера с контроллером домена, это нужно для корректного отображения даты и времени получения писем, с другой стороны ничего не мешает использовать поставщиков времени в интернете, но если мы хотим получить полноценную систему, то лучше сделать это.
nano /etc/default/ntpdate
Находим строку и вписываемым туда DNS адрес контроллера домена:
NTPSERVERS="dc1.example.org"
Перезагружаем почтовый сервер, вуаля, все работает, время синхронизировалось.
Переходим на наш Windows Server 2003/2008/2008R2
Нам необходимо создать пользователя с именем iredmail, логином iredmail и паролем: password^1 Никаких админских прав, мы ему не даем-это важно! Его мы создаем в самом корне контроллера домена.
Чтобы путь к учетной записи в LDAP каталоге был cn=iredmail,dc=example,dc=org
Также, нам необходимо создать подразделение (Organization Unit), в нашей индустрии, его еще называют ОУшка-с ударением на У. Назовем подразделение personal путь в LDAP каталоге, будет иметь вид: ou=personal,dc=example,dc=org
Внутри подразделения personal, создадим 3 учетные записи, пользователей домена с паролем password@1 с именами:
Федя Мегатронов с логином megatronov и адресом электронной почты megatronov@example.org
Кеша Фуфлометов с логином fuflometov и адресом электронной почты fuflometov@example.org
Светлана Кукуева с логином kukueva и адресом электронной почты kukueva@example.org
Пути в каталоге LDAP, будут иметь вид:
cn=Федя Мегатронов,ou=personal,dc=example,dc=org
cn=Кеша Фуфлометов,ou=personal,dc=example,dc=org
cn=Светлана Кукуева,ou=personal,dc=example,dc=org
В этом подразделении, создадим группу распространения, allusers и электронной почтой allusers@example.org.
Вопрос на засыпку-какой путь в LDAP будет иметь данная группа?
В эту группу добавим трех наших пользователей.
В Ubuntu
sudo su
В Debian
su
нам необходимо добавить имя сервера в hosts
nano /etc/hosts
Добавляем туда:
172.16.0.20 dc1.example.org
Сохраняем изменения и выходим
Пробуем пинговать dc1.example.org
Если пинги, проходят все отлично! Если нет, то проверяем правильность написания и IP адрес контроллера домена.
Маленький, полезный, но не обязательный момент
Настроим синхронизацию времени почтового сервера с контроллером домена, это нужно для корректного отображения даты и времени получения писем, с другой стороны ничего не мешает использовать поставщиков времени в интернете, но если мы хотим получить полноценную систему, то лучше сделать это.
nano /etc/default/ntpdate
Находим строку и вписываемым туда DNS адрес контроллера домена:
NTPSERVERS="dc1.example.org"
Перезагружаем почтовый сервер, вуаля, все работает, время синхронизировалось.
Переходим на наш Windows Server 2003/2008/2008R2
Нам необходимо создать пользователя с именем iredmail, логином iredmail и паролем: password^1 Никаких админских прав, мы ему не даем-это важно! Его мы создаем в самом корне контроллера домена.
Чтобы путь к учетной записи в LDAP каталоге был cn=iredmail,dc=example,dc=org
Также, нам необходимо создать подразделение (Organization Unit), в нашей индустрии, его еще называют ОУшка-с ударением на У. Назовем подразделение personal путь в LDAP каталоге, будет иметь вид: ou=personal,dc=example,dc=org
Внутри подразделения personal, создадим 3 учетные записи, пользователей домена с паролем password@1 с именами:
Федя Мегатронов с логином megatronov и адресом электронной почты megatronov@example.org
Кеша Фуфлометов с логином fuflometov и адресом электронной почты fuflometov@example.org
Светлана Кукуева с логином kukueva и адресом электронной почты kukueva@example.org
Пути в каталоге LDAP, будут иметь вид:
cn=Федя Мегатронов,ou=personal,dc=example,dc=org
cn=Кеша Фуфлометов,ou=personal,dc=example,dc=org
cn=Светлана Кукуева,ou=personal,dc=example,dc=org
В этом подразделении, создадим группу распространения, allusers и электронной почтой allusers@example.org.
Вопрос на засыпку-какой путь в LDAP будет иметь данная группа?
В эту группу добавим трех наших пользователей.
Настраиваем сервер Linux
Протестуем соединение с LDAP:
ldapsearch -x -h dc1.example.org -p 389 -D 'CN=iredmail,DC=example,DC=org' -W
Enter password: Вводим пароль password^1
Нам должно вывалить кучу всякой инфы из AD, в которой содержатся информация о группах, пользователях и т.п. Я не буду ее тут выкладывать т.к. там целая портянка, на пару страниц. Для желающих посмотреть какая инфа там содержится, вывод результата всегда можно перенаправить в текстовый файл и потом, в спокойной обстановке, посмотреть что и к чему там.
Меняем настройки транспорта для сообщений:
postconf -e transport_maps='hash:/etc/postfix/transport'
Изменим настройки транспорта:
nano /etc/postfix/transport
Добавим в него следующее:
mail.example.org dovecot
Экспортируем все это, в базу данных Postfix:
postmap hash:/etc/postfix/transport
Внесу ясность в происходящее! Нам необходимо разрешить поиск пользователей, групп и отправителей в Active Directory.
Теперь, нам необходимо настроить Postfix, чтобы он опрашивал Active Directory (В пойске учетных данных пользователей)
Указываем пользователя, от имени которого, будет выполняться опрос Active Directory ( по умолчанию, анонимные запросы к AD запрещены, их можно разрешить через политики безопасности, но это, очень хреновая идея, в плане безопасности!)
Подключаться к AD мы будем от имени пользователя iredmail (cn=iredmail,dc=example,dc=org) с паролем password^1, мы будем искать пользователей, которые находятся в аУшке personal (ou=presonal,dc=example,dc=org)
Нам необходимо отредактировать содержимое следующих файлов (то что там находится удаляем и заменяем на приложенное снизу)
nano /etc/postfix/ldap/virtual_mailbox_maps.cf
server_host = dc1.example.org
server_port = 389
version = 3
bind = yes
start_tls = no
bind_dn = cn=iredmail,dc=example,dc=org
bind_pw = password^1
search_base = ou=personal,dc=example,dc=org
scope = sub
query_filter = (&(objectclass=person)(userPrincipalName=%s))
result_attribute = userPrincipalName
debuglevel = 0
Разрешаем подключение к AD с целью поиска групп и их членов. (содержимое данного файла думаю понятно)
nano /etc/postfix/ldap/virtual_group_maps.cf
server_host = dc1.example.org
server_port = 389
version = 3
bind = yes
start_tls = no
bind_dn = cn=iredmail,dc=example,dc=org
bind_pw = password^1
search_base = ou=personal,dc=example,dc=org
scope = sub
query_filter = (&(objectClass=group)(mail=%s))
special_result_attribute = member
leaf_result_attribute = mail#result_attribute= userPrincipalName
debuglevel = 0
Активируем поиск логинов отправителей в AD:
nano /etc/postfix/ldap/sender_login_maps.cf
server_host = dc1.example.org
server_port = 389
version = 3
bind = yes
start_tls = no
bind_dn = cn=iredmail,dc=example,dc=org
bind_pw = password^1
search_base = ou=personal,dc=example,dc=org
scope = sub
query_filter = (&(userPrincipalName=%s)(objectClass=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
result_attribute= userPrincipalName
debuglevel = 0
Отредактируем main.cf
nano /etc/postfix/main.cf
Там нам необходимо найти и удалить строку:
check_policy_service inet:127.0.0.1:7777
ldapsearch -x -h dc1.example.org -p 389 -D 'CN=iredmail,DC=example,DC=org' -W
Enter password: Вводим пароль password^1
Нам должно вывалить кучу всякой инфы из AD, в которой содержатся информация о группах, пользователях и т.п. Я не буду ее тут выкладывать т.к. там целая портянка, на пару страниц. Для желающих посмотреть какая инфа там содержится, вывод результата всегда можно перенаправить в текстовый файл и потом, в спокойной обстановке, посмотреть что и к чему там.
Меняем настройки транспорта для сообщений:
postconf -e transport_maps='hash:/etc/postfix/transport'
Изменим настройки транспорта:
nano /etc/postfix/transport
Добавим в него следующее:
mail.example.org dovecot
Экспортируем все это, в базу данных Postfix:
postmap hash:/etc/postfix/transport
Внесу ясность в происходящее! Нам необходимо разрешить поиск пользователей, групп и отправителей в Active Directory.
Теперь, нам необходимо настроить Postfix, чтобы он опрашивал Active Directory (В пойске учетных данных пользователей)
Указываем пользователя, от имени которого, будет выполняться опрос Active Directory ( по умолчанию, анонимные запросы к AD запрещены, их можно разрешить через политики безопасности, но это, очень хреновая идея, в плане безопасности!)
Подключаться к AD мы будем от имени пользователя iredmail (cn=iredmail,dc=example,dc=org) с паролем password^1, мы будем искать пользователей, которые находятся в аУшке personal (ou=presonal,dc=example,dc=org)
Нам необходимо отредактировать содержимое следующих файлов (то что там находится удаляем и заменяем на приложенное снизу)
nano /etc/postfix/ldap/virtual_mailbox_maps.cf
server_host = dc1.example.org
server_port = 389
version = 3
bind = yes
start_tls = no
bind_dn = cn=iredmail,dc=example,dc=org
bind_pw = password^1
search_base = ou=personal,dc=example,dc=org
scope = sub
query_filter = (&(objectclass=person)(userPrincipalName=%s))
result_attribute = userPrincipalName
debuglevel = 0
Разрешаем подключение к AD с целью поиска групп и их членов. (содержимое данного файла думаю понятно)
nano /etc/postfix/ldap/virtual_group_maps.cf
server_host = dc1.example.org
server_port = 389
version = 3
bind = yes
start_tls = no
bind_dn = cn=iredmail,dc=example,dc=org
bind_pw = password^1
search_base = ou=personal,dc=example,dc=org
scope = sub
query_filter = (&(objectClass=group)(mail=%s))
special_result_attribute = member
leaf_result_attribute = mail#result_attribute= userPrincipalName
debuglevel = 0
Активируем поиск логинов отправителей в AD:
nano /etc/postfix/ldap/sender_login_maps.cf
server_host = dc1.example.org
server_port = 389
version = 3
bind = yes
start_tls = no
bind_dn = cn=iredmail,dc=example,dc=org
bind_pw = password^1
search_base = ou=personal,dc=example,dc=org
scope = sub
query_filter = (&(userPrincipalName=%s)(objectClass=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
result_attribute= userPrincipalName
debuglevel = 0
Отредактируем main.cf
nano /etc/postfix/main.cf
Там нам необходимо найти и удалить строку:
check_policy_service inet:127.0.0.1:7777
Тестируем подключение к Active Directory
Проверка логина отправителя:
postmap -q megatronov@example.org ldap:/etc/postfix/ldap/sender_login_maps.cf
Должно выдать:
megatronov@example.org
Проверим разрешение членства в группе:
postmap -q allusers@example.org ldap:/etc/postfix/ldap/virtual_group_maps.cf
Должно выдать:
kukueva@example.org,fuflometov@example.org,megatronov@example.org
Если нет вывода то возможно 2 причины:
1) Не правильные данные для подключения к AD
2) В указанную группу не добавлены пользователи.
Нам также необходимо перенастроить Dovecot для запросов в Active Directory, все что там написано сотрем и записываем свое:
nano /etc/dovecot/dovecot-ldap.conf
Вставляем
hosts = dc1.example.org:389
ldap_version = 3
auth_bind = yes
dn = iredmail
dnpass = password^1
base = ou=personal,dc=example,dc=org
scope = subtree
deref = never
user_filter = (&(userPrincipalName=%u)(objectClass=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
pass_filter = (&(userPrincipalName=%u)(objectClass=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
pass_attrs = userPassword=password
default_pass_scheme = CRYPT
user_attrs = =home=/var/vmail/vmail1/%Ld/%Ln/Maildir/,=mail=maildir:/var/vmail/vmail1/%Ld/%Ln/Maildir/
Квота на размер почтового ящика.
По умолчанию, iRedMail позволяет задавать квоты на размер почтового ящика, но перейдя с OpenLDAP на работу с AD эта возможность теряется, но мы можем указать дисковую квоту для всех пользователей, одним махом.
nano /etc/dovecot/dovecot.conf
Находим строку:
quota_rule = *:storage=1G
Это и есть размер почтового ящика для каждого пользователя- 1Гб.
Перезапускаем службы:
/etc/init.d/postfix restart/etc/init.d/dovecot restart
Проверка логина отправителя:
postmap -q megatronov@example.org ldap:/etc/postfix/ldap/sender_login_maps.cf
Должно выдать:
megatronov@example.org
Проверим разрешение членства в группе:
postmap -q allusers@example.org ldap:/etc/postfix/ldap/virtual_group_maps.cf
Должно выдать:
kukueva@example.org,fuflometov@example.org,megatronov@example.org
Если нет вывода то возможно 2 причины:
1) Не правильные данные для подключения к AD
2) В указанную группу не добавлены пользователи.
Нам также необходимо перенастроить Dovecot для запросов в Active Directory, все что там написано сотрем и записываем свое:
nano /etc/dovecot/dovecot-ldap.conf
Вставляем
hosts = dc1.example.org:389
ldap_version = 3
auth_bind = yes
dn = iredmail
dnpass = password^1
base = ou=personal,dc=example,dc=org
scope = subtree
deref = never
user_filter = (&(userPrincipalName=%u)(objectClass=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
pass_filter = (&(userPrincipalName=%u)(objectClass=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
pass_attrs = userPassword=password
default_pass_scheme = CRYPT
user_attrs = =home=/var/vmail/vmail1/%Ld/%Ln/Maildir/,=mail=maildir:/var/vmail/vmail1/%Ld/%Ln/Maildir/
Квота на размер почтового ящика.
По умолчанию, iRedMail позволяет задавать квоты на размер почтового ящика, но перейдя с OpenLDAP на работу с AD эта возможность теряется, но мы можем указать дисковую квоту для всех пользователей, одним махом.
nano /etc/dovecot/dovecot.conf
Находим строку:
quota_rule = *:storage=1G
Это и есть размер почтового ящика для каждого пользователя- 1Гб.
Перезапускаем службы:
/etc/init.d/postfix restart/etc/init.d/dovecot restart
Создание пользователей на почтовом сервере:
Создавать пользователей, на почтовом сервере больше не требуется, достаточно на контроллере домена создать учетную запись с заполненным полем электронной почты, при первом подключении пользователя, его папка будет создана автоматически!
Алгоритм работы очень простой-создали учетку, лезем в почту. Все остальное, сделает сервер самостоятельно.
Почтовые ящики пользователей находятся в:
/var/vmail/vmail1/example.org/$userlogin
Эта информация вам пригодится, когда понадобится настроить резервное копирование почтовых ящиков пользователей!
Пробуем подключиться через telnet
telnet localhost 110
Получаем:
Trying 127.0.0.1…
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready.
Пишем туда:
user megatronov@example.org
Получаем:
+OK
Вводим пароль:
pass password@1
Получаем:
+OK Logged in.
Проверим количество писем( у меня там лежит 2 письма):
list
Получаем:
+OK 2 messages:
1 1554
2 1554
.
Отключимся от сервера:
quit
нам выдаст:
+OK Logging out.
Connection closed by foreign host.
Отлично, все работает.
Заходим через WEB интерфейс.
Пользователь: megatronov@example.org
Пароль:password@1
Пробуем подключиться под другими пользователям, с паролем, который мы указывали на сервере Windows- при создании учетных записей.
Нас должно пускать под всеми тремя!
Пробуем написать письмо, но тут нас ждет маленький сюрприз, авто заполнение получателя письма не работает, но мы напишем email ручками полностью и жмем отправить, заходи под пользователем которому мы отправили письмо, у него появилось новое письмо.
Приятным бонусом будет возможность входа по логину т.е. достаточно указать login пользователя, для примера:
login: megatronov
pass: password@1
Пользователь также получит доступ к почтовому ящику.
Но заполнять получателей руками это не есть гуд, прикрутим адресную книгу из Active Directory
Алгоритм работы очень простой-создали учетку, лезем в почту. Все остальное, сделает сервер самостоятельно.
Почтовые ящики пользователей находятся в:
/var/vmail/vmail1/example.org/$userlogin
Эта информация вам пригодится, когда понадобится настроить резервное копирование почтовых ящиков пользователей!
Пробуем подключиться через telnet
telnet localhost 110
Получаем:
Trying 127.0.0.1…Пишем туда:
Connected to localhost.
Escape character is '^]'.
+OK Dovecot ready.
user megatronov@example.org
Получаем:
+OKВводим пароль:
pass password@1
Получаем:
+OK Logged in.Проверим количество писем( у меня там лежит 2 письма):
list
Получаем:
+OK 2 messages:Отключимся от сервера:
1 1554
2 1554
.
quit
нам выдаст:
+OK Logging out.
Connection closed by foreign host.
Отлично, все работает.
Заходим через WEB интерфейс.
Пользователь: megatronov@example.org
Пароль:password@1
Пробуем подключиться под другими пользователям, с паролем, который мы указывали на сервере Windows- при создании учетных записей.
Нас должно пускать под всеми тремя!
Пробуем написать письмо, но тут нас ждет маленький сюрприз, авто заполнение получателя письма не работает, но мы напишем email ручками полностью и жмем отправить, заходи под пользователем которому мы отправили письмо, у него появилось новое письмо.
Приятным бонусом будет возможность входа по логину т.е. достаточно указать login пользователя, для примера:
login: megatronov
pass: password@1
Пользователь также получит доступ к почтовому ящику.
Но заполнять получателей руками это не есть гуд, прикрутим адресную книгу из Active Directory
Прикрутим адресную книгу:
nano /usr/share/apache2/roundcubemail/config/main.inc.php
Находим строку:
$rcmail_config['autocomplete_addressbooks']
Приводим ее к виду:
$rcmail_config['autocomplete_addressbooks'] = array("sql", "mail.example.org");
Далее, нам необходимо найти раздел:
// Global LDAP address book.
И привести его к виду, указанному ниже:
(Я специально ничего не удалал, а просто за комментировал строки, которые там были изначально и добавил свои, также слегка переделал порядок сортировки, теперь он идет по алфавиту)
Вставляем туда:
$rcmail_config['ldap_public']["mail.example.org"] = array(
'name' => 'Global AD Address Book',
'hosts' => array('dc1.example.org'),
'port' => 389,
'use_tls' => false,
// Search accounts in the same domain.
'user_specific' => false, // If true the base_dn, bind_dn and bind_pass default to the user's IMAP login.
'base_dn' => 'ou=personal,dc=example,dc=org',
'bind_dn' => 'cn=iredmail,dc=example,dc=org',
'bind_pass' => 'password^1',
'writable' => false, //запретим запись в AD
'ldap_version' => '3',
// 'search_fields' => array('mail', 'cn', 'givenName', 'sn'),
'search_fields' => array('mail', 'cn', 'sAMAccountName', 'displayname', 'sn', 'givenName'),
// 'name_field' => 'cn',
'email_field' => 'mail',
'surname_field' => 'displayName',
'firstname_field' => 'givenName',
// 'sort' => 'cn',
'scope' => 'sub',
// 'filter' => '(&(enabledService=mail)(enabledService=deliver)(enabledService=displayedInGlobalAddressBook)(|(objectClass=mailList)(objectClass=mailAlias)(objectClass=mailUser)))',
'filter' => "(mail=*@*)",
'fuzzy_search' => true);
Сохраняем изменения, пробуем под пользователем зайти в адресную книгу, у нас там появиться пункт Global AD Address Bookнажимаем на него и получаем список пользователей домена, которые имеют почтовые ящики.
Ну а теперь легкий тюнинг вида ящика. Слегка изменим порядок отображения колонок в почтовом ящике, лично мне нравится дефонтный порядок отображения колонок писем в Outlook, на мой взгляд, он удобный, по этому я решил привести отображение писем немного похожим на него.
Открываем файл:
nano /usr/share/apache2/roundcubemail/config/main.inc.php
находим строку:
$rcmail_config['list_cols'] = array
Закоментриуем ее и сразу под ней добавим, готовую строку:
$rcmail_config['list_cols'] = array('flag','attachment', 'from', 'subject', 'status', 'date', 'size' );
nano /usr/share/apache2/roundcubemail/config/main.inc.php
Находим строку:
$rcmail_config['autocomplete_addressbooks']
Приводим ее к виду:
$rcmail_config['autocomplete_addressbooks'] = array("sql", "mail.example.org");
Далее, нам необходимо найти раздел:
// Global LDAP address book.
И привести его к виду, указанному ниже:
(Я специально ничего не удалал, а просто за комментировал строки, которые там были изначально и добавил свои, также слегка переделал порядок сортировки, теперь он идет по алфавиту)
Вставляем туда:
$rcmail_config['ldap_public']["mail.example.org"] = array(
'name' => 'Global AD Address Book',
'hosts' => array('dc1.example.org'),
'port' => 389,
'use_tls' => false,
// Search accounts in the same domain.
'user_specific' => false, // If true the base_dn, bind_dn and bind_pass default to the user's IMAP login.
'base_dn' => 'ou=personal,dc=example,dc=org',
'bind_dn' => 'cn=iredmail,dc=example,dc=org',
'bind_pass' => 'password^1',
'writable' => false, //запретим запись в AD
'ldap_version' => '3',
// 'search_fields' => array('mail', 'cn', 'givenName', 'sn'),
'search_fields' => array('mail', 'cn', 'sAMAccountName', 'displayname', 'sn', 'givenName'),
// 'name_field' => 'cn',
'email_field' => 'mail',
'surname_field' => 'displayName',
'firstname_field' => 'givenName',
// 'sort' => 'cn',
'scope' => 'sub',
// 'filter' => '(&(enabledService=mail)(enabledService=deliver)(enabledService=displayedInGlobalAddressBook)(|(objectClass=mailList)(objectClass=mailAlias)(objectClass=mailUser)))',
'filter' => "(mail=*@*)",
'fuzzy_search' => true);
Сохраняем изменения, пробуем под пользователем зайти в адресную книгу, у нас там появиться пункт Global AD Address Bookнажимаем на него и получаем список пользователей домена, которые имеют почтовые ящики.
Ну а теперь легкий тюнинг вида ящика. Слегка изменим порядок отображения колонок в почтовом ящике, лично мне нравится дефонтный порядок отображения колонок писем в Outlook, на мой взгляд, он удобный, по этому я решил привести отображение писем немного похожим на него.
Открываем файл:
nano /usr/share/apache2/roundcubemail/config/main.inc.php
находим строку:
$rcmail_config['list_cols'] = array
Закоментриуем ее и сразу под ней добавим, готовую строку:
$rcmail_config['list_cols'] = array('flag','attachment', 'from', 'subject', 'status', 'date', 'size' );
Важный и тонкий момент!
Поиск пользователей и скорость работы системы!
В данной статье, я указывал базу для поиска пользователей ou=personal,dc=example,dc=org, но ничего не запрещает вам опрашивать весь контроллер домена целиком расширив зону поиска до dc=example,dc=org, но есть одно НО! Время опроса получается очень большим, так Dovecot, при опросе всего LDAP каталога, пускает пользователя в почтовый ящик почти 1 минуту, это очень много, по этому я и сузил параметры поиска, так поиск учетных данных пользователя, происходит практически мгновенно. Обязательно попробуете это, в настройках указав адресной книге искать по всему LDAP dc=example,dc=org вы сразу увидите как долго идет поиск пользователей.
На этом все.
Обо всех найденных недостатках, ошибках и возможных улучшениях, а также, если просто возникли вопросы, прошу в комментарии.
Данная схема была протестирована на Windows Server 2008/2008R2 на Windows 2k3 все должно работать т.к. атрибуты учетных записей не изменились.
Статья была написана с использованием материалов:
iRedMail-WiKi Но видимо, она написана для совсем старой версии iRedMail.
А также форума, на сайте разработчиков. На котором написано как у них все здорово работает, но не написано как это сделать.
В данной статье, я указывал базу для поиска пользователей ou=personal,dc=example,dc=org, но ничего не запрещает вам опрашивать весь контроллер домена целиком расширив зону поиска до dc=example,dc=org, но есть одно НО! Время опроса получается очень большим, так Dovecot, при опросе всего LDAP каталога, пускает пользователя в почтовый ящик почти 1 минуту, это очень много, по этому я и сузил параметры поиска, так поиск учетных данных пользователя, происходит практически мгновенно. Обязательно попробуете это, в настройках указав адресной книге искать по всему LDAP dc=example,dc=org вы сразу увидите как долго идет поиск пользователей.
На этом все.
Обо всех найденных недостатках, ошибках и возможных улучшениях, а также, если просто возникли вопросы, прошу в комментарии.
Данная схема была протестирована на Windows Server 2008/2008R2 на Windows 2k3 все должно работать т.к. атрибуты учетных записей не изменились.
Статья была написана с использованием материалов:
iRedMail-WiKi Но видимо, она написана для совсем старой версии iRedMail.
А также форума, на сайте разработчиков. На котором написано как у них все здорово работает, но не написано как это сделать.
Комментариев нет:
Отправить комментарий