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

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
lex284
проходил мимо
Сообщения: 5
Зарегистрирован: 2014-08-27 14:42:20

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

Непрочитанное сообщение lex284 » 2014-08-29 10:17:10

Добрый день, коллеги.

Настраиваю связку 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 нескольких доменов, то поделитесь идеями/конфигами.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35466
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

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

Непрочитанное сообщение Alex Keda » 2014-08-31 9:46:14

ну так в проверке домен жёстко прибит
проверяйте без домена
Убей их всех! Бог потом рассортирует...

lex284
проходил мимо
Сообщения: 5
Зарегистрирован: 2014-08-27 14:42:20

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

Непрочитанное сообщение lex284 » 2014-09-01 10:04:35

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}"

lex284
проходил мимо
Сообщения: 5
Зарегистрирован: 2014-08-27 14:42:20

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

Непрочитанное сообщение lex284 » 2014-09-04 12:37:10

В общем сделал так:

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

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"
Такие проверки работают нормально. По крайне мере, я пока ошибок не нашел.
Находит пользователей из обоих доменов, в том числе алиасы.