Страница 1 из 1

Exim+Exchange несколько доменов

Добавлено: 2014-08-29 10:17:10
lex284
Добрый день, коллеги.

Настраиваю связку Exim (внешний почтарь) + Exchange 2010 (внутренний почтарь).
Exchage обслуживает несколько доменов (сейчас пока 2). У пользователей\груп могут быть разные комбинации адресов:
user1@firma.ru
user2@firma.ru, user2@firma.com
user3@firma.ru, user3@firma.com, user3alias@firma.ru, user3alias@firma.com
Делаю проверку адресов через AD (уровень win2k8). Делаю по http://www.lissyara.su/articles/freebsd ... +exchange/.
Вот мои настройки

Код: Выделить всё

30_exim4-config_check_rcpt:
   warn
     set acl_m1 = 0
   accept
     domains = MS_EXCHANGE_DOMAIN
     condition = ${if match{${lookup ldap {LDAP_AD_MAIL_RCPT}}}\
                   {@MS_EXCHANGE_DOMAIN}{yes}{no}}
     set acl_m1 = 1
   accept
     domains = MS_EXCH_DOMAIN2
     condition = ${if match{${lookup ldap {LDAP_AD_MAIL2_RCPT}}}\
                   {@MS_EXCH_DOMAIN2}{yes}{no}}
     set acl_m1 = 1
   deny
     condition  = ${if eq{$acl_m1}{0}{yes}{no}}
     message = "Unknown user for this domain"

02_exim4-config_options:
MS_EXCHANGE_DOMAIN = firma.ru
MS_EXCH_DOMAIN2 = firma.com

ldap_default_servers = <; 192.168.1.2:3268
LDAP_AD_BINDDN = exim
LDAP_AD_PASS = pass
LDAP_AD_BASE_DN = DC=firma,DC=local

# макросы для проверки пользователей в доменах - первый домен
 LDAP_AD_MAIL_RCPT = \
 user=LDAP_AD_BINDDN \
 pass=LDAP_AD_PASS \
 ldap:///LDAP_AD_BASE_DN?mail?sub?\
 (&(|(objectClass=user)(objectClass=publicFolder)(objectClass=group))\
 (proxyAddresses=smtp:${quote_ldap:${local_part}@MS_EXCHANGE_DOMAIN}))

# макросы для проверки пользователей в доменах - второй домен
 LDAP_AD_MAIL2_RCPT = \
 user=LDAP_AD_BINDDN \
 pass=LDAP_AD_PASS \
 ldap:///LDAP_AD_BASE_DN?mail?sub?\
 (&(|(objectClass=user)(objectClass=publicFolder)(objectClass=group))\
 (proxyAddresses=smtp:${quote_ldap:${local_part}@MS_EXCH_DOMAIN2}))
Заметил такую проблему - такие настройки возвращают accept только на том домене, который у пользователя стоит в обратном адресе.
Т.е. если у пользователя стоит обратным адресом user@firma.ru, то все адреса и алиасы с доменом firma.ru принимаются, а все с другим доменом - user not found. Тоже самое для групп.

Кто-нибудь может подсказать почему такое происходит?
Если кто делал проверку через одну AD нескольких доменов, то поделитесь идеями/конфигами.

Re: Exim+Exchange несколько доменов

Добавлено: 2014-08-31 9:46:14
Alex Keda
ну так в проверке домен жёстко прибит
проверяйте без домена

Re: Exim+Exchange несколько доменов

Добавлено: 2014-09-01 10:04:35
lex284
Alex Keda писал(а):ну так в проверке домен жёстко прибит
проверяйте без домена
По $local_part ?
Получается что если у пользователя есть ящик user@firma.ru.
А письмо придет на ящик user@firma.com, то оно пройдет проверку.
Я как раз хочу проверять адрес полностью, но если писать
LDAP_AD_MAIL_RCPT = \
user=LDAP_AD_BINDDN \
pass=LDAP_AD_PASS \
ldap:///LDAP_AD_BASE_DN?mail?sub?\
(&(|(objectClass=user)(objectClass=publicFolder)(objectClass=group))\
(proxyAddresses=smtp:${quote_ldap:${recipient}}))
То после перезапуска получаю в логах:
failed to expand ACL string "${if match{${lookup ldap {user=exim pass=pass ldap:///DC=firma,DC=local?mail?sub?(&(|(objectClass=user)(objectClass=publicFolder)(objectClass=group))(proxyAddresses=smtp:${quote_ldap:${recipient}}))}}}{@firma.ru}{yes}{no}}": unknown variable in "${recipient}"

Re: Exim+Exchange несколько доменов

Добавлено: 2014-09-04 12:37:10
lex284
В общем сделал так:

Код: Выделить всё

02_exim4-config_options:
 LDAP_AD_MAIL_RCPT = \
 user=LDAP_AD_BINDDN \
 pass=LDAP_AD_PASS \
 ldap:///LDAP_AD_BASE_DN?mail?sub?\
 (&(|(objectClass=user)(objectClass=publicFolder)(objectClass=group))\
 (proxyAddresses=smtp:${quote_ldap:${local_part}@${domain}}))

 LDAP_AD_MAIL2_RCPT = \
 user=LDAP_AD_BINDDN \
 pass=LDAP_AD_PASS \
 ldap:///LDAP_AD_BASE_DN?mail?sub?\
 (&(|(objectClass=user)(objectClass=publicFolder)(objectClass=group))\
 (proxyAddresses=smtp:${quote_ldap:${local_part}@${domain}}))

30_exim4-config_check_rcpt:
   warn
     set acl_m1 = 0
   accept
     domains = +relay_to_domains
     condition = ${if match{${lookup ldap {LDAP_AD_MAIL_RCPT}}}\
                   {@MS_EXCHANGE_DOMAIN}{yes}{no}}
     set acl_m1 = 1
   accept
     domains = +relay_to_domains
     condition = ${if match{${lookup ldap {LDAP_AD_MAIL2_RCPT}}}\
                   {@MS_EXCH_DOMAIN2}{yes}{no}}
     set acl_m1 = 1
   deny
     condition  = ${if eq{$acl_m1}{0}{yes}{no}}
     message = "Unknown user for this domain"
Такие проверки работают нормально. По крайне мере, я пока ошибок не нашел.
Находит пользователей из обоих доменов, в том числе алиасы.