Exim + AD , а именно группы пользователей из АД

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

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
mailo
ефрейтор
Сообщения: 52
Зарегистрирован: 2011-05-09 17:28:11

Exim + AD , а именно группы пользователей из АД

Непрочитанное сообщение mailo » 2011-07-01 14:10:30

Задача: В АД есть группы, у группы есть email адрес. каждой группе принадлежат какие то пользователи у которых то же есть email.
На данный момент работает просто поиск пользователя в АД и авторизация. Необходимо если приходит письмо группу рассылки скажем group@domain.ru
что бы exim это смотрел в АД и ага это группа, и вытягивал из АД всех мэйлы пользователей которые в группе и отправлял им письмо.
Пока все что получилось сделать это что бы exim вообще увидел группу, но он не воспринимает это как группу а просто как почтовый адрес.
Помоги победить.

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

#LDAP
ldap_default_servers = <; ad-server.local:3268
LDAP_AD_BINDDN = "CN=exim,CN=Users,DC=domain,DC=ru"
LDAP_AD_PASS = "*****"
LDAP_AD_BASE_DN = "DC=domain,DC=ru"

RCPT Macros
LDAP_AD_MAIL_RCPT =\
user=LDAP_AD_BINDDN \
pass=LDAP_AD_PASS \
ldap:///DC=domain,DC=ru?mail?sub?\
(&\
(objectCategory=person)(objectClass=user)\
(!(UserAccountControl:1.2.840.113556.1.4.803:=2))\
(mail=${quote_ldap:${local_part}@${domain}}))

ad_check:
  driver = redirect
  domains = +local_domains
  allow_fail
  allow_defer
  data = ${lookup ldap {LDAP_AD_MAIL_RCPT}\
  {${local_part}@${domain}} {:fail: User unknown}}
  redirect_router = local_ad_user


local_ad_user:
  driver = accept
  transport = local_ad_delivery
  cannot_route_message = Unknown user

local_ad_delivery:
  driver = appendfile
  delivery_date_add
  envelope_to_add
  return_path_add
  maildir_format
  create_directory
  directory = /var/mail/$local_part@$domain
  directory_mode = 0770
  group = mail
  user = mail
  mode = 0640
  no_mode_fail_narrower
Вот собственно на этом и работает сейчас. А как допинать группы?

Хостинговая компания 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/

blade_007
ст. прапорщик
Сообщения: 571
Зарегистрирован: 2010-03-12 12:59:08
Контактная информация:

Re: Exim + AD , а именно группы пользователей из АД

Непрочитанное сообщение blade_007 » 2011-07-01 15:45:42

Условие (condition) - писать на общий адрес группы будут ТОЛЬКО те, IP-адрес которых в списке allow_auth_hosts ИЛИ если в поле "Описание" группы распространения есть слово public.

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

adsi_group_check:
        driver = redirect
        domains = +local_domains
        allow_defer
        condition = \
        ${if or{ \
           { eq {${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}})\
              )\
           }}}{public}}\
           {match_ip{$sender_host_address}{iplsearch;/etc/exim/allow_auth_hosts}}\
            }\  
        }
        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
Файл allow_auth_hosts

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

$ cat allow_auth_hosts 
#10.0.0.0/8
#10.1.16.119/32
172.16.0.0/12
192.168.0.0/24
127.0.0.0/8


mailo
ефрейтор
Сообщения: 52
Зарегистрирован: 2011-05-09 17:28:11

Re: Exim + AD , а именно группы пользователей из АД

Непрочитанное сообщение mailo » 2011-07-01 16:11:39

ну мне ограничения пока не нужны поэтмоу я выкосил вот эти 2 строчки

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

 }}}{public}}\
           {match_ip{$sender_host_address}{iplsearch;/etc/exim/allow_auth_hosts}}\
можешь показать что у тебя в

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

redirect_router = ldapuser
пробую отправить письмо на группу, говорит что нет такого ящика

mailo
ефрейтор
Сообщения: 52
Зарегистрирован: 2011-05-09 17:28:11

Re: Exim + AD , а именно группы пользователей из АД

Непрочитанное сообщение mailo » 2011-07-01 16:34:48

Вот почти весь конфиг. что не так ? (

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

smtp_accept_max = 100			

ldap_default_servers = <; server.local:3268 ; server2.local:3268
LDAP_AD_BINDDN = "CN=exim,CN=Users,DC=domain,DC=ru"
LDAP_AD_PASS = "123123"
LDAP_AD_BASE_DN = "DC=domain,DC=ru"
LDAP_AD_MAIL_RCPT =\
user=LDAP_AD_BINDDN \
pass=LDAP_AD_PASS \
ldap:///DC=domain,DC=ru?mail?sub?\
(&\
(objectCategory=person)\
(objectClass=user)\
(!(UserAccountControl:1.2.840.113556.1.4.803:=2))\
(mail=${quote_ldap:${local_part}@${domain}}))

domainlist local_domains = lsearch;/etc/exim/localdomains
domainlist relay_to_domains = lsearch;/etc/exim/relaydomains
hostlist   relay_from_hosts = 127.0.0.1 : 10.1.0.0/24
acl_smtp_helo = acl_check_helo
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_data
acl_smtp_mime = acl_check_mime
daemon_smtp_ports = 25 
local_interfaces = 0.0.0.0
qualify_domain = mxs1.domain.ru
allow_domain_literals = false
never_users = root
host_lookup = !+relay_from_hosts
rfc1413_hosts = *
rfc1413_query_timeout = 0s
ignore_bounce_errors_after = 45m
timeout_frozen_after = 1d
begin acl
acl_check_helo:
вырезал
acl_check_rcpt:
вырезал
acl_check_data:
вырезал
acl_check_mime:
begin routers

dnslookup:
  driver = dnslookup
  domains = ! +local_domains
  transport = remote_smtp
  ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
  no_more

system_aliases:
  driver = redirect
  allow_fail
  allow_defer
  data = ${lookup{$local_part}lsearch{/etc/aliases}}
  user = mail
  group = mail
  file_transport = address_file
  pipe_transport = address_pipe

per_domain_aliases:
  driver = redirect
  allow_fail
  allow_defer
  condition = ${if exists{/etc/exim/aliases/$domain} {yes} {no}}
  data = ${lookup{$local_part}lsearch{/etc/exim/aliases/$domain}}
  file_transport = address_file
  pipe_transport = address_pipe

groups:
  driver = redirect
  allow_fail
  allow_defer
  condition = ${if exists{/etc/exim/groups/$local_part@$domain} {yes} {no} }
  file = /etc/exim/groups/$local_part@$domain
  file_transport = address_file
  pipe_transport = address_pipe
  no_more

userforward:
  driver = redirect
  user = mail
  file = /var/mail/$local_part@$domain/.forward
  no_verify
  no_expn
  check_ancestor
  allow_filter
  file_transport = address_file
  pipe_transport = address_pipe
  reply_transport = address_reply
  directory_transport = local_ad_delivery
  condition = ${if exists{/var/mail/$local_part@$domain/.forward} {yes} {no} }

ad_check:
  driver = redirect
  domains = +local_domains
  allow_fail
  allow_defer
  # forbid_file
  # forbid_pipe
  data = ${lookup ldap {LDAP_AD_MAIL_RCPT}\
  {${local_part}@${domain}} {:fail: User unknown}}
  redirect_router = local_ad_user

adsi_group_check:
        driver = redirect
        domains = +local_domains
        allow_defer
        condition = \
        ${if or{ \
           { eq {${lookup ldap{ \
               user=LDAP_AD_BINDDN \
               pass=LDAP_AD_PASS \
               ldap:///LDAP_AD_BASE?description?sub?\
              (&\
                  (objectClass=group)\
                  (grouptype=2)\  # почему тип группы 2 ?
                  (mail=${quote_ldap:${local_part}@${domain}})\
              )\
            }\  
        }
        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

local_ad_user:
  driver = accept
  transport = local_ad_delivery
  cannot_route_message = Unknown user

ldapuser:
        driver = accept
        condition = ${if !eq{}{${lookup ldapdn{LDAP_AD_RCPT}}}{yes}{no}}
        transport = local_ad_delivery

localuser:
  driver = accept
  #check_local_user
  condition = ${lookup{$local_part@$domain}lsearch{/etc/exim/passwd} {yes} {no} }
  transport = local_delivery
  cannot_route_message = Unknown user

begin transports

remote_smtp:
  driver = smtp

local_ad_delivery:
  driver = appendfile
  delivery_date_add
  envelope_to_add
  return_path_add
  maildir_format
  create_directory
  directory = /var/mail/$local_part@$domain
  directory_mode = 0770
  group = mail
  user = mail
  mode = 0640
  no_mode_fail_narrower

local_delivery:
  driver = appendfile
  directory = /var/mail/$local_part@$domain
  maildir_format
  delivery_date_add
  envelope_to_add
  return_path_add
  mode_fail_narrower = false
  mode = 0640
  directory_mode = 0750
  user = mail
  group = mail

address_pipe:
  driver = pipe
  return_output

address_file:
  driver = appendfile
  delivery_date_add
  envelope_to_add
  return_path_add

address_reply:
  driver = autoreply

begin retry
*                      *           F,2h,15m; G,16h,1h,1.5; F,4d,6h
begin rewrite
begin authenticators

PLAIN:
 driver = plaintext
 public_name = PLAIN
 server_condition = ${if saslauthd{{$2}{$3}}{1}{0}}
 server_set_id = $2
LOGIN:
 driver = plaintext
 public_name = LOGIN
 server_prompts = "Username:: : Password::"
 server_condition = ${if saslauthd{{$1}{$2}}{1}{0}}
 server_set_id = $1

blade_007
ст. прапорщик
Сообщения: 571
Зарегистрирован: 2010-03-12 12:59:08
Контактная информация:

Re: Exim + AD , а именно группы пользователей из АД

Непрочитанное сообщение blade_007 » 2011-07-01 16:44:07

1. тип группы=2 потому как это группа распространения а не безопасности
2. если убрали ограничения - уберите и or в условии

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

condition = \
        ${if  eq {${lookup ldap{ \
               user=LDAP_AD_BINDDN \
               pass=LDAP_AD_PASS \
               ldap:///LDAP_AD_BASE?description?sub?\
              (&\
                  (objectClass=group)\
                  (grouptype=2)\  # почему тип группы 2 ?
                  (mail=${quote_ldap:${local_part}@${domain}})\
              )\
            }\  
        }}}

mailo
ефрейтор
Сообщения: 52
Зарегистрирован: 2011-05-09 17:28:11

Re: Exim + AD , а именно группы пользователей из АД

Непрочитанное сообщение mailo » 2011-07-01 17:28:19

Сейчас вот так выглядит, но проблема таже , не видит группы, просто пользователей видит. может этот запрос да же не отрабатывает, можете глянуть правильно в роутерах и транспортах у меня?

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

ldap_default_servers = <; server:3268
LDAP_AD_BINDDN = "CN=exim,CN=Users,DC=domain,DC=local"
LDAP_AD_PASS = "****"
LDAP_AD_BASE_DN = "DC=domain,DC=local"
LDAP_AD_MAIL_RCPT =\
user=LDAP_AD_BINDDN \
pass=LDAP_AD_PASS \
ldap:///DC=domain,DC=local?mail?sub?\
(&\
(objectCategory=person)\
(objectClass=user)\
(!(UserAccountControl:1.2.840.113556.1.4.803:=2))\
(mail=${quote_ldap:${local_part}@${domain}}))

domainlist local_domains = lsearch;/etc/exim/localdomains
domainlist relay_to_domains = lsearch;/etc/exim/relaydomains
hostlist   relay_from_hosts = 127.0.0.1 : 10.1.0.0/24
acl_smtp_helo = acl_check_helo
acl_smtp_rcpt = acl_check_rcpt
acl_smtp_data = acl_check_data
acl_smtp_mime = acl_check_mime
daemon_smtp_ports = 25 
local_interfaces = 0.0.0.0
qualify_domain = mxs1.domain.local
allow_domain_literals = false
never_users = root
host_lookup = !+relay_from_hosts
rfc1413_hosts = *
rfc1413_query_timeout = 0s
sender_unqualified_hosts =
recipient_unqualified_hosts =
ignore_bounce_errors_after = 45m
timeout_frozen_after = 1d
begin acl
acl_check_helo:
	accept
acl_check_rcpt:
  accept
acl_check_data:
  accept
begin routers

black_hole:
 dnslookup:
  driver = dnslookup
  domains = ! +local_domains
  transport = remote_smtp
  ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
  no_more
system_aliases:
  driver = redirect
  allow_fail
  allow_defer
  data = ${lookup{$local_part}lsearch{/etc/aliases}}
  user = mail
  group = mail
  file_transport = address_file
  pipe_transport = address_pipe
per_domain_aliases:
  driver = redirect
  allow_fail
  allow_defer
  condition = ${if exists{/etc/exim/aliases/$domain} {yes} {no}}
  data = ${lookup{$local_part}lsearch{/etc/exim/aliases/$domain}}
  file_transport = address_file
  pipe_transport = address_pipe
groups:
  driver = redirect
  allow_fail
  allow_defer
  condition = ${if exists{/etc/exim/groups/$local_part@$domain} {yes} {no} }
  file = /etc/exim/groups/$local_part@$domain
  file_transport = address_file
  pipe_transport = address_pipe
  no_more
userforward:
  driver = redirect
  user = mail
  file = /var/mail/$local_part@$domain/.forward
  no_verify
  no_expn
  check_ancestor
  allow_filter
  file_transport = address_file
  pipe_transport = address_pipe
  reply_transport = address_reply
  directory_transport = local_ad_delivery
  condition = ${if exists{/var/mail/$local_part@$domain/.forward} {yes} {no} }

ad_check:
  driver = redirect
  domains = +local_domains
  allow_fail
  allow_defer
  # forbid_file
  # forbid_pipe
  data = ${lookup ldap {LDAP_AD_MAIL_RCPT}\
  {${local_part}@${domain}} {:fail: User unknown}}
  redirect_router = local_ad_user

adsi_group_check:
        driver = redirect
        domains = +local_domains
        allow_defer
        condition = \
        ${if eq {${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}})\
              )\
            }\  
        }
        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

local_ad_user:
  driver = accept
  transport = local_ad_delivery
  cannot_route_message = Unknown user

ldapuser:
        driver = accept
        condition = ${if !eq{}{${lookup ldapdn{LDAP_AD_RCPT}}}{yes}{no}}
        transport = local_ad_delivery

localuser:
  driver = accept
  #check_local_user
  condition = ${lookup{$local_part@$domain}lsearch{/etc/exim/passwd} {yes} {no} }
  transport = local_delivery
  cannot_route_message = Unknown user

begin transports

remote_smtp:
  driver = smtp

local_ad_delivery:
  driver = appendfile
  delivery_date_add
  envelope_to_add
  return_path_add
  maildir_format
  create_directory
  directory = /var/mail/$local_part@$domain
  directory_mode = 0770
  group = mail
  user = mail
  mode = 0640
  no_mode_fail_narrower

local_delivery:
  driver = appendfile
  directory = /var/mail/$local_part@$domain
  maildir_format
  delivery_date_add
  envelope_to_add
  return_path_add
  mode_fail_narrower = false
  mode = 0640
  directory_mode = 0750
  user = mail
  group = mail

address_pipe:
  driver = pipe
  return_output

address_file:
  driver = appendfile
  delivery_date_add
  envelope_to_add
  return_path_add

address_reply:
  driver = autoreply

begin retry
*                      *           F,2h,15m; G,16h,1h,1.5; F,4d,6h

begin rewrite

begin authenticators

PLAIN:
 driver = plaintext
 public_name = PLAIN
 server_condition = ${if saslauthd{{$2}{$3}}{1}{0}}
 server_set_id = $2
LOGIN:
 driver = plaintext
 public_name = LOGIN
 server_prompts = "Username:: : Password::"
 server_condition = ${if saslauthd{{$1}{$2}}{1}{0}}
 server_set_id = $1


blade_007
ст. прапорщик
Сообщения: 571
Зарегистрирован: 2010-03-12 12:59:08
Контактная информация:

Re: Exim + AD , а именно группы пользователей из АД

Непрочитанное сообщение blade_007 » 2011-07-01 17:35:21

См. еще раз предыдущий мой пост - перепроверьте число закрывающих скобок в condition.

mailo
ефрейтор
Сообщения: 52
Зарегистрирован: 2011-05-09 17:28:11

Re: Exim + AD , а именно группы пользователей из АД

Непрочитанное сообщение mailo » 2011-07-01 17:57:46

проверил добавил, теперь в лог арет

failed to expand condition "${if {eq {${lookup ldap{ user="CN=exim,CN=Users,DC=domain,DC=local" pass="123123" ldap:///LDAP_AD_BASE?description?sub?(&(objectClass=group)(grouptype=2)(mail=${quote_ldap:${local_part}@${domain}}))}}}}" for ad_check router: condition name expected, but found "{eq {${lookup ld"
2011-07-01 18:54:54 failed to expand condition "${if {eq {${lookup ldap{ user="CN=exim,CN=Users,DC=domain,DC=local" pass="123123" ldap:///LDAP_AD_BASE?description?sub?(&(objectClass=group)(grouptype=2)(mail=${quote_ldap:${local_part}@${domain}}))}}}}" for ad_check router: condition name expected, but found "{eq {${lookup ld"
2011-07-01 18:54:54 1Qcf7O-0001UR-Pl <= test@domain.local H=([10.1.10.13]) [10.1.10.13] P=esmtp S=468 id=1309532085.4421.4.camel@mail-HP
2011-07-01 18:54:54 1Qcf7O-0001UR-Pl failed to expand condition "${if {eq {${lookup ldap{ user="CN=exim,CN=Users,DC=domain,DC=local" pass="123123" ldap:///LDAP_AD_BASE?description?sub?(&(objectClass=group)(grouptype=2)(mail=${quote_ldap:${local_part}@${domain}}))}}}}" for ad_check router: condition name expected, but found "{eq {${lookup ld"

blade_007
ст. прапорщик
Сообщения: 571
Зарегистрирован: 2010-03-12 12:59:08
Контактная информация:

Re: Exim + AD , а именно группы пользователей из АД

Непрочитанное сообщение blade_007 » 2011-07-01 18:04:17

По моему лишняя { в ${if {eq {${lookup *** т.е. должно быть ${if ВОТ_ТУТ_УБРАТЬ eq {${lookup**

mailo
ефрейтор
Сообщения: 52
Зарегистрирован: 2011-05-09 17:28:11

Re: Exim + AD , а именно группы пользователей из АД

Непрочитанное сообщение mailo » 2011-07-01 18:16:27

поменял все равно.

failed to expand condition "${if eq {${lookup ldap{ user="CN=exim,CN=Users,DC=domain,DC=local" pass="123123" ldap:///LDAP_AD_BASE?description?sub?(&(objectClass=group)(grouptype=2)(mail=${quote_ldap:${local_part}@${domain}}))}}" for ad_check router: missing } at end of string

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

ad_check:
	driver = redirect
        domains = +local_domains
        allow_defer
        condition = \
        ${if eq {${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}})\
              )\
            }\
        } #здесь пробовал ставить 2 и 3 не помогло
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 = local_ad_user


blade_007
ст. прапорщик
Сообщения: 571
Зарегистрирован: 2010-03-12 12:59:08
Контактная информация:

Re: Exim + AD , а именно группы пользователей из АД

Непрочитанное сообщение blade_007 » 2011-07-01 18:21:05

Сообщение точно требует 2-х закрывающих скобок, тут я ничего не могу поделать.
Еще раз и снова попробуйте:

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

condition = \
        ${if  eq {${lookup ldap{ \
               user=LDAP_AD_BINDDN \
               pass=LDAP_AD_PASS \
               ldap:///LDAP_AD_BASE?description?sub?\
              (&\
                  (objectClass=group)\
                  (grouptype=2)\  # почему тип группы 2 ?
                  (mail=${quote_ldap:${local_part}@${domain}})\
              )\
            }\  
        }}}

mailo
ефрейтор
Сообщения: 52
Зарегистрирован: 2011-05-09 17:28:11

Re: Exim + AD , а именно группы пользователей из АД

Непрочитанное сообщение mailo » 2011-07-01 18:28:27

Сделал все точно так как выше. data не трогал оставил как есть.
пишет

failed to expand condition "${if eq {${lookup ldap{ user="CN=exim,CN=Users,DC=domain,DC=local" pass="123123" ldap:///LDAP_AD_BASE?description?sub?(&(objectClass=group)(grouptype=2)(mail=${quote_ldap:${local_part}@${domain}}))}}}}" for ad_check router: missing 2nd string in {} after "eq"
2011-07-01 19:26:11 failed to expand condition "${if eq {${lookup ldap{ user="CN=exim,CN=Users,DC=domain,DC=local" pass="123123" ldap:///LDAP_AD_BASE?description?sub?(&(objectClass=group)(grouptype=2)(mail=${quote_ldap:${local_part}@${domain}}))}}}}" for ad_check router: missing 2nd string in {} after "eq"
2011-07-01 19:26:11 1Qcfbf-0001YE-9H <= test@domain.ru H=([10.1.10.13]) [10.1.10.13] P=esmtp S=471 id=1309533962.4421.14.camel@mail-HP
2011-07-01 19:26:11 1Qcfbf-0001YE-9H failed to expand condition "${if eq {${lookup ldap{ user="CN=exim,CN=Users,DC=domain,DC=local" pass="123123" ldap:///LDAP_AD_BASE?description?sub?(&(objectClass=group)(grouptype=2)(mail=${quote_ldap:${local_part}@${domain}}))}}}}" for ad_check router: missing 2nd string in {} after "eq"

blade_007
ст. прапорщик
Сообщения: 571
Зарегистрирован: 2010-03-12 12:59:08
Контактная информация:

Re: Exim + AD , а именно группы пользователей из АД

Непрочитанное сообщение blade_007 » 2011-07-01 18:33:49

Блин. Бездумное выкашивание было ошибкой. Оператор eq СРАВНИВАЕТ то что получил из ldap-каталога со с словом public.

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

${if eq {${lookup ldap{ user="CN=exim,CN=Users,DC=domain,DC=local" pass="123123" 
ldap:///LDAP_AD_BASE?description?sub?(&(objectClass=group)(grouptype=2)
(mail=${quote_ldap:${local_part}@${domain}}))}}{public}}}

mailo
ефрейтор
Сообщения: 52
Зарегистрирован: 2011-05-09 17:28:11

Re: Exim + AD , а именно группы пользователей из АД

Непрочитанное сообщение mailo » 2011-07-01 18:37:18

а если мне не надо сравнивать а просто тупо смотреть все группы? тогда убрать if eq ?

blade_007
ст. прапорщик
Сообщения: 571
Зарегистрирован: 2010-03-12 12:59:08
Контактная информация:

Re: Exim + AD , а именно группы пользователей из АД

Непрочитанное сообщение blade_007 » 2011-07-01 18:39:59

Если не надо сравнивать - убираете condition и все.

mailo
ефрейтор
Сообщения: 52
Зарегистрирован: 2011-05-09 17:28:11

Re: Exim + AD , а именно группы пользователей из АД

Непрочитанное сообщение mailo » 2011-07-01 18:49:17

я вас уже наверное замучал.

оставил только data

011-07-01 19:46:52 H=([10.1.10.13]) [10.1.10.13] F=<test@domain.ru> temporarily rejected RCPT <it_dep@domain.ru>: failed to expand "${sg{${map {<\n ${sg{${lookup ldapm { user="CN=exim,CN=Users,DC=domain,DC=local" pass="123123" ldap:///LDAP_AD_BASE?member?sub?(&(objectClass=group)(grouptype=2)(mail=${quote_ldap:${local_part}@${domain}}))}}}{\N, \N}{\n}}} {${lookup ldap{ user="CN=exim,CN=Users,DC=domain,DC=local" pass="132123" ldap:///${quote_ldapdn:$item}?mail?base?}} }}}{\N\n\N}{, } }": "${map" is not a known operator (or a } is missing in a variable reference)
2011-07-01 19:46:52 no host name found for IP address 10.1.10.13
2011-07-01 19:46:52 H=([10.1.10.13]) [10.1.10.13] F=<test@domain.ru> temporarily rejected RCPT <it_dep@domain.ru>: failed to expand "${sg{${map {<\n ${sg{${lookup ldapm { user="CN=exim,CN=Users,DC=domain,DC=local" pass="123132" ldap:///LDAP_AD_BASE?member?sub?(&(objectClass=group)(grouptype=2)(mail=${quote_ldap:${local_part}@${domain}}))}}}{\N, \N}{\n}}} {${lookup ldap{ user="CN=exim,CN=Users,DC=doamin,DC=local" pass="132132" ldap:///${quote_ldapdn:$item}?mail?base?}} }}}{\N\n\N}{, } }": "${map" is not a known operator (or a } is missing in a variable reference)

mailo
ефрейтор
Сообщения: 52
Зарегистрирован: 2011-05-09 17:28:11

Re: Exim + AD , а именно группы пользователей из АД

Непрочитанное сообщение mailo » 2011-07-01 18:51:49

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

ad_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 = local_ad_user

blade_007
ст. прапорщик
Сообщения: 571
Зарегистрирован: 2010-03-12 12:59:08
Контактная информация:

Re: Exim + AD , а именно группы пользователей из АД

Непрочитанное сообщение blade_007 » 2011-07-01 19:00:01

Обновите версию exim. "map is not a known operator" - оператор map появился в версии 4.68(9) если мне не изменяет память.

mailo
ефрейтор
Сообщения: 52
Зарегистрирован: 2011-05-09 17:28:11

Re: Exim + AD , а именно группы пользователей из АД

Непрочитанное сообщение mailo » 2011-07-01 23:21:23

Обновился до 4.76 все принимает, группу видит, но пользователей не цепляет. просто кидает письмо как простой почтовый ящик. ( чего не хватает?

blade_007
ст. прапорщик
Сообщения: 571
Зарегистрирован: 2010-03-12 12:59:08
Контактная информация:

Re: Exim + AD , а именно группы пользователей из АД

Непрочитанное сообщение blade_007 » 2011-07-02 18:42:47

Тогда остается прогнать с дебагом. Группа в AD создана как группа распространения, напоминаю.

mailo
ефрейтор
Сообщения: 52
Зарегистрирован: 2011-05-09 17:28:11

Re: Exim + AD , а именно группы пользователей из АД

Непрочитанное сообщение mailo » 2011-07-02 19:15:53

нет у меня как группа безопасности

mailo
ефрейтор
Сообщения: 52
Зарегистрирован: 2011-05-09 17:28:11

Re: Exim + AD , а именно группы пользователей из АД

Непрочитанное сообщение mailo » 2011-07-02 19:36:19

нет у меня как группа безопасности, где можно глянуть какой номер у этой группы?

blade_007
ст. прапорщик
Сообщения: 571
Зарегистрирован: 2010-03-12 12:59:08
Контактная информация:

Re: Exim + AD , а именно группы пользователей из АД

Непрочитанное сообщение blade_007 » 2011-07-02 20:14:08

Если сложно создать группу распространения - просто уберите

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

(grouptype=2)\
из data. Номер группы можно глянуть в браузере ldap.

mailo
ефрейтор
Сообщения: 52
Зарегистрирован: 2011-05-09 17:28:11

Re: Exim + AD , а именно группы пользователей из АД

Непрочитанное сообщение mailo » 2011-07-02 20:49:38

ЗАРАБОТАЛО!!!!! я прости совсем тупить стал, и глаза болят малость ) спасибо!!! ДЕло было да же не в id группы, в втом что смотриш в скрипт видишь фигу. Спасибо!