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
Дата последнего изменения: 31.03.2025
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.