Возник вопрос на тему группы рассылки в AD.
На данном форму было найдено рабочее решение одного товарища.
Данный роутер ищет в AD группу рассылки (grouptype=2) и если в поле Эл. адрес значение совпадает с текущим обрабатываемым адресом, то составляется список из почтовых адресов, передаваемых роутеру ldapuser.
В данный роутер на мой взгляд необходимо добавить следующий функционал, а именно условие по которому на адреса данной группы могут писать ТОЛЬКО пользователи определенных подсетей (свои подсети, подсети партнеров и т.п.) ИЛИ если в описании группы AD есть какое-то ключевое слово (например, public)
Собственно роутер, найденный на форуме
Код: Выделить всё
adsi_group_check:
driver = redirect
domains = +local_domains
allow_defer
data = ${sg{${map {<\n \
${sg{${lookup ldapm { \
user=LDAP_AD_BINDDN \
pass=LDAP_AD_PASS \
ldap:///LDAP_AD_BASE?member?sub?\
(&\
(objectClass=group)\
(grouptype=2)\
(mail=${quote_ldap:${local_part}@${domain}})\
)\
}}}{\N, \N}{\n}}} \
{${lookup ldap{ \
user=LDAP_AD_BINDDN \
pass=LDAP_AD_PASS \
ldap:///${quote_ldapdn:$item}?mail?base?}} \
}}}{\N\n\N}{, } \
}
redirect_router = ldapuser
Код: Выделить всё
condition = ${if or{ \
{match_ip{$sender_host_address}{iplsearch;/etc/exim/allow_auth_hosts}}\
{eq {public}{lookup ldap{ \
user=LDAP_AD_BINDDN \
pass=LDAP_AD_PASS \
ldap:///LDAP_AD_BASE?description?sub?\
(&\
(objectClass=group)\
(grouptype=2)\
(mail=${quote_ldap:${local_part}@${domain}})\
)\
}}}\
}\
}
Код: Выделить всё
13:49:13 10660 dnslookup router skipped: domains mismatch
13:49:13 10660 --------> adsi_group_check router <--------
13:49:13 10660 local_part=testgroup domain=******
13:49:13 10660 checking domains
13:49:13 10660 cached yes match for +local_domains
13:49:13 10660 cached lookup data = NULL
13:49:13 10660 ****** in "+local_domains"? yes (matched "+local_domains" - cached)
13:49:13 10660 checking "condition"
13:49:13 10660 expanding: $sender_host_address
13:49:13 10660 result: 10.1.16.119
13:49:13 10660 expanding: iplsearch;/etc/exim/allow_auth_hosts
13:49:13 10660 result: iplsearch;/etc/exim/allow_auth_hosts
13:49:13 10660 search_open: iplsearch "/etc/exim/allow_auth_hosts"
13:49:13 10660 cached open
13:49:13 10660 search_find: file="/etc/exim/allow_auth_hosts"
13:49:13 10660 key="10.1.16.119" partial=-1 affix=NULL starflags=0
13:49:13 10660 LRU list:
13:49:13 10660 5/etc/exim/allow_auth_hosts
13:49:13 10660 End
13:49:13 10660 internal_search_find: file="/etc/exim/allow_auth_hosts"
13:49:13 10660 type=iplsearch key="10.1.16.119"
13:49:13 10660 cached data used for lookup of 10.1.16.119
13:49:13 10660 in /etc/exim/allow_auth_hosts
13:49:13 10660 lookup failed
13:49:13 10660 10.1.16.119 in "iplsearch;/etc/exim/allow_auth_hosts"? no (end of list)
13:49:13 10660 expanding: public
13:49:13 10660 result: public
13:49:13 10660 expanding: CN=exim,CN=Users,DC=********=com
13:49:13 10660 result: CN=exim,CN=Users,DC=******,DC=com
13:49:13 10660 expanding: ${local_part}@${domain}
13:49:13 10660 result: testgroup@********
13:49:13 10660 expanding: lookup ldap{ user=${quote_ldap:CN=exim,CN=Users,DC=*****DC=com} pass=*** ldap:///DC=*****,DC=com?description?sub?(&(objectClass=group)(grouptype=2)(mail=${quote_ldap:${local_part}@${domain}}))
13:49:13 10660 result: lookup ldap{ user=CN%3Dexim%2CCN%3DUsers%2CDC******2CDC%3Dcom pass=*** ldap:///DC=*****DC=com?description?sub?(&(objectClass=group)(grouptype=2)(mail=testgroup%40*****))
13:49:13 10660 condition: or{ {match_ip{$sender_host_address}{iplsearch;/etc/exim/allow_auth_hosts}}{eq {public}{lookup ldap{ user=${quote_ldap:CN=exim,CN=Users,DC=*****,DC=com} pass=*** ldap:///DC=***,DC=com?description?sub?(&(objectClass=group)(grouptype=2)(mail=${quote_ldap:${local_part}@${domain}}))}}}
13:49:13 10660 result: false
13:49:13 10660 expanding: ${if or{ {match_ip{$sender_host_address}{iplsearch;/etc/exim/allow_auth_hosts}}{eq {public}{lookup ldap{ user=${quote_ldap:CN=exim,CN=Users,DC=***,DC=com} pass=*** ldap:///DC=***,DC=com?description?sub?(&(objectClass=group)(grouptype=2)(mail=${quote_ldap:${local_part}@${domain}}))}}}}}
13:49:13 10660 result: }
13:49:13 10660 calling adsi_group_check router
Скорее всего условие немного неправильное. Любые идеи - Welcom.