Итак, у меня есть рабочий почтовый сервер, который аутентифицируется по активному каталогу. Все работает нормально, пока я не попытаюсь добавить дополнительный сервер аутентификации.
Информация о сервере:
Server OS: CentOS 7.1.1503
Postfix version: 2.10.1
Dovecot version: 2.2.10
На данный момент моя конфигурация выглядит так:
Файлы конфигурации Postfix:
/etc/postfix/main.cf
virtual_mailbox_base = /homes/vmail/homes
virtual_mailbox_maps = ldap:/etc/postfix/ldap-users-primary.cf
virtual_alias_maps = ldap:/etc/postfix/ldap-groups-primary.cf
virtual_uid_maps = static:989
virtual_gid_maps = static:987
ldap-users-primary.cf
server_host = 192.168.250.200
search_base = cn=Users, dc=domain, dc=local
version = 3
query_filter = (&(objectclass=person)(mail=%s))
result_attribute = samaccountname
result_format = %s/
bind = yes
bind_dn = user@domain.local
bind_pw = password
ldap-groups-primary.cf
server_host = 192.168.250.200
search_base = ou=Email_Groups, dc=domain,dc=local
version = 3
query_filter = (&(objectclass=group)(mail=%s))
leaf_result_attribute = mail
special_result_attribute = member
bind = yes
bind_dn = user@domain.local
bind_pw = password
start_tls = no
Файлы конфигурации Dovecot:
/etc/dovecot/conf.d/10-auth.conf
passdb {
driver = ldap
args = /etc/dovecot/dovecot-ldap-primary.conf
}
userdb {
driver = static
args = uid=989 gid=987 home=/homes/vmail/homes/%u
}
dovecot-ldap-primary.conf
hosts = 192.168.250.200
base = cn=Users, dc=domain, dc=local
ldap_version = 3
auth_bind = yes
auth_bind_userdn = domain\%u
Все вышеперечисленные настройки работают нормально и не вызывают никаких проблем. Пока я не попробую добавить дополнительный контроллер домена ..
Для этого я создал новые файлы конфигурации: ldap-users-secondary.cf, ldap-groups-secondary.cf, dovecot-ldap-secondary.conf.
Единственное, что отличается в этих файлах, - это IP-адрес сервера (он просто указывает на вторичный контроллер домена). Если я использую только эти файлы, все работает нормально. Но если я изменю /etc/postfix/main.cf следующим образом:
virtual_mailbox_base = /homes/vmail/homes
virtual_mailbox_maps = ldap:/etc/postfix/ldap-users-primary.cf, ldap:/etc/postfix/ldap-users-secondary.cf
virtual_alias_maps = ldap:/etc/postfix/ldap-groups-primary.cf, ldap:/etc/postfix/ldap-groups-secondary.cf
virtual_uid_maps = static:989
virtual_gid_maps = static:987
И /etc/dovecot/conf.d/10-auth.conf
passdb {
driver = ldap
args = /etc/dovecot/dovecot-ldap-primary.conf
}
passdb {
driver = ldap
args = /etc/dovecot/dovecot-ldap-secondary.conf
}
userdb {
driver = static
args = uid=989 gid=987 home=/homes/vmail/homes/%u
}
Он просто перестает работать и начинает выдавать такие ошибки:
NOQUEUE: reject: RCPT from localhost[127.0.0.1]: 451 4.3.0 <user@domain.local>: Temporary lookup failure;
Кто-нибудь может мне с этим помочь?
Оказывается, и Postfix, и Dovecot позволяют переключаться при отказе с несколькими хостами ldap в конфигурациях ldap. Однако, насколько я могу судить, конфигурации должны быть одинаковыми на всех серверах LDAP. По крайней мере, для постфикса.
В Postfix это НЕ работает надежно:
virtual_mailbox_maps = ldap:/etc/postfix/ad-users-dc-1.cf, ldap:/etc/postfix/ad-users-dc-2.cf
Это действительно работает. В main.cf:
virtual_mailbox_maps = ldap:/etc/postfix/ad-users.cf
... и в файле ad-users.cf:
server_host = 192.168.44.75,192.168.44.76
server_port = 389
version = ...
bind = ...
start_tls = ...
bind_dn = CN=...
bind_pw = ...
... etc
В Dovecot это работает. В вашем целевом конфигурационном файле ldap:
hosts = 192.168.44.75:389, 192.168.44.76:389
Решение было довольно простым .. Так же, как @sam_pan_mariusz предложил вместо IP-адреса, я поставил DNS-имя. Провел какое-то тестирование и все работает как надо.