8.3 Интеграция 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.2 и младше:

sudo yum install openldap-clients postfix-ldap

для РЕД ОС версии 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.

https://localhost/mail

Логин пользователя и пароль  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.cong
// 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

Если вы нашли ошибку, выделите текст и нажмите Ctrl+Enter.

Print Friendly, PDF & Email