2.9.12.2.2 Интеграция Iredmail с MS AD
Скачать документ1 Настройка машины с ms ad
2 Настройка машины с iredmail
3 Настройка дополнительных конфигураций
Настройка интеграции с ms ad
1 Настройка машины с MS AD
Зайдите в active directory домены и доверие
Откройте свойства
Впишите домен сервера на котором iredmail, нажмите принять
В свойствах домена ms ad выберите пункт управление
Создайте подразделение внутри домена ms ad, пример "personal"
Добавьте в подразделение - пользователя iredmail, домен укажите машины с ms ad
Добавьте еще одного пользователя, домен укажите сервера iredmail
2 Настройка машины с iredmail
Установка openldap:
для РЕД ОС версии 7.3 и старше:
sudo dnf install openldap-clients postfix-ldap
Проверка соединения с ms ad
ldapsearch -x -h 10.81.1.231 -D 'vmail@irwol.ru' -W -b 'dc=ipamsadom,dc=ru' (домен и ip указаны для примера)
При корректном выполнении будет список с информацией о ms ad
Т.к. мы будем использовать интеграцию с AD, необходимо отключить параметры в конфиге postfix, которые используются для работы с MySQL
postconf -e virtual_alias_maps='' && postconf -e sender_bcc_maps='' && postconf -e recipient_bcc_maps='' && postconf -e relay_domains='' && postconf -e relay_recipient_maps='' && postconf -e sender_dependent_relayhost_maps=''
Добавляем почтовый домен
postconf -e smtpd_sasl_local_domain='irwol.ru' && postconf -e virtual_mailbox_domains='irwol.ru'
Меняем транспорт:
postconf -e transport_maps='hash:/etc/postfix/transport'
Экспортируем в базу данных Postfix:
postmap hash:/etc/postfix/transport
Добавляем запросы для подключения к AD:
postconf -e smtpd_sender_login_maps='proxy:ldap:/etc/postfix/ad_sender_login_maps.cf' && postconf -e virtual_mailbox_maps='proxy:ldap:/etc/postfix/ad_virtual_mailbox_maps.cf' && postconf -e virtual_alias_maps='proxy:ldap:/etc/postfix/ad_virtual_group_maps.cf'
Создаем или добавляем в файл строку для транспорта (домен указывается сервера с iredmail)
nano /etc/postfix/transport
irwol.ru dovecot
Создаем файл для подключения к AD:
nano /etc/postfix/ad_sender_login_maps.cf
server_host = 10.81.1.231 server_port = 389 version = 3 bind = yes start_tls = no bind_dn = vmail имя пользователя из ms ad, созданного в 1 пункте bind_pw = *** укажите пароль пользователя search_base = ou= personal,dc=ipamsadom,dc=ru scope = sub query_filter = (&(userPrincipalName=%s)(objectClass=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2))) result_attribute = userPrincipalName debuglevel = 0
Создаем файл групп AD:
nano /etc/postfix/ad_virtual_mailbox_maps.cf
server_host = 10.81.1.231 server_port = 389 version = 3 bind = yes start_tls = no bind_dn = vmail имя пользователя из ms ad, созданного в 1 пункте bind_pw = *** укажите пароль пользователя search_base = ou= personal,dc=ipamsadom,dc=ru scope = sub query_filter = (&(objectclass=person)(userPrincipalName=%s)) result_attribute = userPrincipalName result_format = %d/%u/Maildir/ debuglevel = 0
Создаем файл для подключения к AD:
nano /etc/postfix/ad_virtual_group_maps.cf
server_host = 10.81.1.231 server_port = 389 version = 3 bind = yes start_tls = no bind_dn = vmail имя пользователя из ms ad, созданного в 1 пункте bind_pw = *** укажите пароль пользователя search_base = ou= personal,dc=ipamsadom,dc=ru scope = sub query_filter = (&(objectClass=group)(userPrincipalName=%s)) special_result_attribute = member leaf_result_attribute = mail debuglevel = 0
Требуется удалить обе строчки в файле
nano /etc/postfix/main.cf
check_policy_service inet:127.0.0.1:7777
smtpd_end_of_data_restrictions = check_policy_service inet:127.0.0.1:7777
Проверка соединения с ms ad (пользователь указывается который был создан вторым в ms ad, домен прописывается сервера iredmail)
postmap -q vmail@irwol.ru ldap:/etc/postfix/ad_virtual_mailbox_maps.cf
Если все успешно, то вывод будет не пустым и без ошибок
Вторая команда проверки
postmap -q vmail@irwol.ru ldap:/etc/postfix/ad_sender_login_maps.cf
При успешном выполнении выдаст
vmail@irwol.ru
Редактируем файл конфига
nano /etc/dovecot/dovecot.conf
и приводим секцию Virtual mail accounts к виду:
Virtual mail accounts. userdb { args = /etc/dovecot/dovecot-ldap.conf driver = ldap } passdb { args = /etc/dovecot/dovecot-ldap.conf driver = ldap }
Создаем файл
nano /etc/dovecot/dovecot-ldap.conf
hosts = 10.81.1.231:389 ldap_version = 3 auth_bind = yes dn = vmail имя пользователя из ms ad, созданного в 1 пункте dnpass = *** укажите пароль пользователя base = ou=personal,dc=ipamsadom,dc=ru 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/
Перезапускаем службы
systemctl restart postfix systemctl restart dovecot
Теперь при добавлении нового пользователя в ms ad и указании домена iredmail, пользователю будет автоматически создаваться почтовый ящик в iredmail. Проверить можно будет на машине с iredmail.
Логин пользователя и пароль ms ad соответственно
3 Настройка дополнительных конфигураций
Если в AD есть группы рассылки, тогда отключаем iRedAPD т.к. при работе с AD он не нужен:
systemctl disable iredapd
По умолчанию, iRedMail позволяет задавать квоты на размер почтового ящика, можно указать дисковую квоту для всех пользователей сразу:
nano /etc/dovecot/dovecot.conf
Находим строку:
quota_rule = *:storage2G
Это и есть размер почтового ящика для пользователей- 2Гб. Квота задается для всех пользователей разом!
Подключение адресной книги
nano /opt/www/roundcubemail/config/config.inc.php
Найдите раздел // Global LDAP address book
Удалите все ниже до конца файла и вставляем строки:
$rcmail_config['ldap_public']["irwol.ru"] = array( 'name' => 'Общая адр. книга', 'hosts' => array('10.81.1.231'), '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 IMA$ 'base_dn' => 'ou=personal,dc=ipamsadom,dc=ru', 'bind_dn' => 'cn=vmail,dc=ipamsadom,dc=ru', 'bind_pass' => 'xxxxxxx', '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=displayedInG$ 'filter' => "(mail=*@*)", 'fuzzy_search' => true); $config['autocomplete_addressbooks'] = array('sql', 'irwol.ru'); $rcmail_config['list_cols'] = array('flag','attachment', 'from', 'subject', 'status', 'date', 'size' );
Настройка конфига SOGo
открываем файл конфигурации и добавляем строки
nano /etc/sogo/sogo.conf
// Authentication using LDAP - Active Directory SOGoUserSources = ( { // Used for user authentication id = directory; displayName = "Active Directory"; canAuthenticate = YES; type = ldap; CNFieldName = cn; IDFieldName = sAMAccountName; UIDFieldName = sAMAccountName; baseDN = "ou=personal,dc=ipamsadom,dc=ru"; bindDN = "cn=vmail,dc=ipamsadom,dc=ru"; bindFields = (sAMAccountName); bindPassword = xxxxxxx; hostname =10.81.1.231; }, { // Used for global address book id = sambaShared; displayName = "Общая адр. книга"; canAuthenticate = NO; isAddressBook = YES; type = ldap; CNFieldName = cn; IDFieldName = mail; UIDFieldName = mail; hostname = ldap://10.81.1.231; baseDN = "ou=personal,dc=ipamsadom,dc=ru"; bindDN = "cn=vmail,dc=ipamsadom,dc=ru"; bindPassword = xxxxxxx; filter = "((NOT isCriticalSystemObject='TRUE') AND (mail=\'*\') AND (NOT objectClass=contact))"; //мои параметры scope = SUB; CNFieldName = cn; SearchFieldNames = (mail, cn, sAMAccountName, displayname, sn, givenName); //Uncomment to list local users in WebUI without searching (small directories only) //listRequiresDot = NO; }, { id = sambaContacts; displayName = "Общие контакты"; canAuthenticate = NO; isAddressBook = YES; type = ldap; CNFieldName = cn; IDFieldName = mail; UIDFieldName = mail; hostname = ldap://10.81.1.231; baseDN = "ou=personal,dc=ipamsadom,dc=ru"; bindDN = "cn=vmail,dc=ipamsadom,dc=ru"; bindPassword = xxxxxxx; filter = "((((objectClass=person) AND (objectClass=contact) AND ((uidNumber>=2000) OR (mail='*'))) AND (NOT isCriticalSystemObject='TRUE') AND (NOT showInAdvancedViewOnly='TRUE') AND (NOT uid=Guest)) OR (((objectClass=group) AND (gidNumber>=2000)) AND (NOT isCriticalSystemObject='TRUE') AND (NOT showInAdvancedViewOnly='TRUE')))"; mapping = { displayname = ("cn"); //Uncomment to list contacts in WebUI without searching (few contacts only) //listRequiresDot = NO; }; } );
Перезапуск служб:
systemctl restart postfix systemctl restart dovecot systemctl restart sogod
Дата последнего изменения: 09.09.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.