URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 72711
[ Назад ]

Исходное сообщение
"Exim + Active Directory"

Отправлено Князь , 07-Мрт-07 05:47 
Встала проблема авторизации пользователей почты в Active Directory и вытягивании оттуда их почтовых ящиков. Как это реализовать? Пожалуйста киньте пример конфига :)

Содержание

Сообщения в этом обсуждении
"Exim + Active Directory"
Отправлено Князь , 07-Мрт-07 05:55 
>Встала проблема авторизации пользователей почты в Active Directory и вытягивании оттуда их
>почтовых ящиков. Как это реализовать? Пожалуйста киньте пример конфига :)

Почтовый сервер видит любой введенный адрес как валидный. Т.е. думает адреса "fuckoff@domain.org" и "null@domain.org" существуют когда в действительности их нет :(

Вот часть моего конфига:

ldap_default_servers = <; 10.10.0.1:3268
LDAP_AD_BINDDN  = "CN=Dummy,CN=Users,DC=domain,DC=org"
LDAP_AD_PASS    = "SecretPassowrd"
LDAP_AD_BASE_DN = "CN=Users,DC=domain,DC=org"

LDAP_AD_MAIL_RCPT = \
        user=LDAP_AD_BINDDN \
        pass=LDAP_AD_PASS \
        ldap:///LDAP_AD_BASE_DN\
        ?mail?sub?


<... skip ...>

adsi_check:
  driver = accept
  condition = ${lookup ldap {LDAP_AD_MAIL_RCPT\
              (sAMAccountName=${quote_ldap_dn:$1})}\
              {${local_part}@${domain}}{fail}}
  transport = local_delivery
  cannot_route_message = Unknown user


"Exim + Active Directory"
Отправлено niksonnnn , 07-Мрт-07 08:46 
И вот так вот всё работает? Или к экзиму прикручивать чего надо?


"Exim + Active Directory"
Отправлено dawnshade , 07-Мрт-07 11:25 
>И вот так вот всё работает? Или к экзиму прикручивать чего надо?
>


deny
!verify = recipient/callout=32s


"Exim + Active Directory"
Отправлено niksonnnn , 07-Мрт-07 18:37 
>>И вот так вот всё работает? Или к экзиму прикручивать чего надо?
>>
>
>
>deny
>!verify = recipient/callout=32s


А можно поподробнее описать настройку? или ссылочку пожалуйста)) Интересно попробовать у себя реализацию такого...


"Exim + Active Directory"
Отправлено dawnshade , 07-Мрт-07 20:26 
>>>И вот так вот всё работает? Или к экзиму прикручивать чего надо?
>>>
>>
>>
>>deny
>>!verify = recipient/callout=32s
>
>
>А можно поподробнее описать настройку? или ссылочку пожалуйста)) Интересно попробовать у себя
>реализацию такого...


http://www.exim.org/eximwiki/Verification?highlight=%28...


"Exim + Active Directory"
Отправлено niksonnnn , 09-Мрт-07 08:21 
>>>>И вот так вот всё работает? Или к экзиму прикручивать чего надо?
>>>>
>>>
>>>
>>>deny
>>>!verify = recipient/callout=32s
>>
>>
>>А можно поподробнее описать настройку? или ссылочку пожалуйста)) Интересно попробовать у себя
>>реализацию такого...
>
>
>http://www.exim.org/eximwiki/Verification?highlight=%28...


Я конечно понимаю, что может быть кажусь недалёким стьюпом, но извините ссылку сами смотрели? И где там про EXIM и Актив Дайректори? Я просил поподробнее, а получилось как всегда.... ИМХО смысл этого форума в том чтобы развивать ОпенСорс движение, а не показывать как ты "Круто можешь рулить в" той или иной области.... Мог бы вообще не отвечать....
В EXIM я мало что соображаю и хотелось узнать про подобные методы настройки... вот и всё.


"Exim + Active Directory"
Отправлено pavel_simple , 09-Мрт-07 08:30 
мне почему-то казалось, что форум на opennet.ru предназначен, для помощи людям -- у которых что-то где-то не получается и обменом опытом, а ни как портал, где кто-то за кого-то делает работу. хммм.



"Exim + Active Directory"
Отправлено niksonnnn , 09-Мрт-07 08:48 
>мне почему-то казалось, что форум на opennet.ru предназначен, для помощи людям --
>у которых что-то где-то не получается и обменом опытом, а ни
>как портал, где кто-то за кого-то делает работу. хммм.


Смотрели ссылку уважаемый? Где там написано про то как прикрутить АД к ЭКЗИМу? Да и не надо за меня работу делаьт))) у меня всё работает)))...


"Exim + Active Directory"
Отправлено pavel_simple , 09-Мрт-07 09:17 
замечательно, зачем только такое количество эмоций -- праздники не удались??
Грубо конечно -- но только вот зачем в форум писать, задавать вопросы -- а потом хвастаться "а у меня и так ВСЁ работает".

"Exim + Active Directory"
Отправлено niksonnnn , 09-Мрт-07 09:51 
>замечательно, зачем только такое количество эмоций -- праздники не удались??
>Грубо конечно -- но только вот зачем в форум писать, задавать вопросы
>-- а потом хвастаться "а у меня и так ВСЁ работает".
>


Праздники удались, настроение отличное.. Просто не люблю когда необоснованно чего-то-там говорят... а то что всё работает это не хвастовство, а результат курения манов и хэндбуков, чтение статей и форумов. Кстати, СПАСИБО ВСЕМ ТЕМ КТО ПОМОГ МНЕ КОГДАТО начать ДУМАТЬ)))) А вот ссылочка на которую скинули просто непонятное что-то.
PS. Будучи эмоциональным человеком, выражаюсь как могу... Если кого-то обидел, то таких людей считаю ущербными, ибо неадекватны они в мыслях. А писать в форум и спрашивать о чем-то новом я считаю незазорно, тем более dawnshade мне не раз помогал свими советами, за что ему респект))))


"Exim + Active Directory"
Отправлено dawnshade , 09-Мрт-07 10:14 
>>>>>И вот так вот всё работает? Или к экзиму прикручивать чего надо?
>>>>>
>>>>
>>>>
>>>>deny
>>>>!verify = recipient/callout=32s
>>>
>>>
>>>А можно поподробнее описать настройку? или ссылочку пожалуйста)) Интересно попробовать у себя
>>>реализацию такого...
>>
>>
>>http://www.exim.org/eximwiki/Verification?highlight=%28...
>
>
>Я конечно понимаю, что может быть кажусь недалёким стьюпом, но извините ссылку
>сами смотрели? И где там про EXIM и Актив Дайректори? Я
>просил поподробнее, а получилось как всегда.... ИМХО смысл этого форума в
>том чтобы развивать ОпенСорс движение, а не показывать как ты "Круто
>можешь рулить в" той или иной области.... Мог бы вообще не
>отвечать....
>В EXIM я мало что соображаю и хотелось узнать про подобные методы
>настройки... вот и всё.

разумееться смотрел :)
точнее там надо курить Recipient Verification.
+сделать вьюху в DNS чтобы для внутренней сетки MX запись указывала на exchange, тогда и ходить в лдап не надо. вкратце должно быть так:
- со внешки MX видится как exim, приходит на него почта
- дальше exim смотрит на MX домена и видит что для него является exchange
- на этапе приходящей почты rcpt to exim идет к exchange по smtp и спрашивает ровно тоже самое- а у тебя есть такой юзер?
- дальше поступает в зависимости от ответа

опятьже альтернатива есть - http://www.exim.org/eximwiki/MsExchangeAddressVerification?h...


"Exim + Active Directory"
Отправлено niksonnnn , 09-Мрт-07 10:21 
>>>>>>И вот так вот всё работает? Или к экзиму прикручивать чего надо?
>>>>>>
>>>>>
>>>>>
>>>>>deny
>>>>>!verify = recipient/callout=32s
>>>>
>>>>
>>>>А можно поподробнее описать настройку? или ссылочку пожалуйста)) Интересно попробовать у себя
>>>>реализацию такого...
>>>
>>>
>>>http://www.exim.org/eximwiki/Verification?highlight=%28...
>>
>>
>>Я конечно понимаю, что может быть кажусь недалёким стьюпом, но извините ссылку
>>сами смотрели? И где там про EXIM и Актив Дайректори? Я
>>просил поподробнее, а получилось как всегда.... ИМХО смысл этого форума в
>>том чтобы развивать ОпенСорс движение, а не показывать как ты "Круто
>>можешь рулить в" той или иной области.... Мог бы вообще не
>>отвечать....
>>В EXIM я мало что соображаю и хотелось узнать про подобные методы
>>настройки... вот и всё.
>
>разумееться смотрел :)
>точнее там надо курить Recipient Verification.
>+сделать вьюху в DNS чтобы для внутренней сетки MX запись указывала на
>exchange, тогда и ходить в лдап не надо. вкратце должно быть
>так:
>- со внешки MX видится как exim, приходит на него почта
>- дальше exim смотрит на MX домена и видит что для него
>является exchange
>- на этапе приходящей почты rcpt to exim идет к exchange по
>smtp и спрашивает ровно тоже самое- а у тебя есть такой
>юзер?
>- дальше поступает в зависимости от ответа
>
>опятьже альтернатива есть - http://www.exim.org/eximwiki/MsExchangeAddressVerification?h...

Вот теперь понятно)))) Сенкс и респект)))


"Exim + Active Directory"
Отправлено Князь , 09-Мрт-07 13:32 
Вижу, что в мое отсутствие много чего понаписали :)

Мне удалось подружить Exim с Active Directory. Конкретно: вытягивание почтовых адресов и SMTP-авторизация.

Exim скомпилировал с такими опциями (может неправильно - покопался в /usr/ports/mail/exim/Makefile):
WITH_CONTENT_SCAN = yes
WITH_SASLAUTHD = yes
WITH_MYSQL = yes
WITH_MYSQL_VER = 50
WITH_DEFAULT_CHARSET ?= KOI8-R
WITH_AUTH_SASL = yes

/usr/local/etc/saslauthd.conf:
ldap_servers: ldap://192.168.0.254:3268/
ldap_bind_dn: CN=Sasl,CN=Users,DC=domain,DC=com
ldap_bind_pw: password
ldap_version: 3
ldap_search_base: CN=Users,DC=domain,DC=com
ldap_filter: (sAMAccountName=%u)
ldap_debug: -1

/usr/local/etc/exim/configure:

( ... skip ... )

LDAP_AD_BINDDN  = "CN=Exim,CN=Users,DC=domain,DC=com"
LDAP_AD_PASS    = password
LDAP_AD_BASE_DN = "CN=Users,DC=domain,DC=com"

LDAP_AD_MAIL_RCPT = \
        user=LDAP_AD_BINDDN \
        pass=LDAP_AD_PASS \
        ldap:///DC=domain,DC=com\
        ?mail?sub?\
        (&\
          (|\
            (objectClass=user)\
            (objectClass=organizationalPerson)\
            (objectClass=person)\
          )\
          (mail=${quote_ldap:${local_part}@${domain}})\
          # (sAMAccountName=${quote_ldap:${local_part}})\
        )

( ... skip ... )

begin routers

adsi_check:
  driver = redirect
  domains = +local_domains
  allow_fail
  allow_defer
  # forbid_file
  # forbid_pipe

  redirect_router = localuser
  data = ${lookup ldap {LDAP_AD_MAIL_RCPT}\
        {${local_part}@${domain}} {:fail: User unknown}}

localuser:
  driver = accept
# check_local_user
# local_part_suffix = +* : -*
# local_part_suffix_optional
  transport = local_delivery
  cannot_route_message = Unknown user

( ... skip ... )

begin transports

local_delivery:
  driver = appendfile
  file = /var/mail/$local_part
  delivery_date_add
  envelope_to_add
  return_path_add
  group = mail
  user = $local_part
  mode = 0660
  no_mode_fail_narrower

( ... skip ... )

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

Вот, у кого какие соображения будут? :)


"Exim + Active Directory"
Отправлено Князь , 09-Мрт-07 13:36 
вдогонку, /etc/rc.conf:
saslauthd_enable="YES"
saslauthd_flags="-a ldap"

"Exim + Active Directory"
Отправлено Князь , 12-Мрт-07 07:01 
Теперь другая проблема - почта отправляется так и сяк с/без SMTP-авторизации хотя авторизацию вроде настроил. Подскажите, в какую сторону копать?

"Exim + Active Directory"
Отправлено Sergey Loputnev , 04-Май-07 01:55 
>ldap_servers: ldap://192.168.0.254:3268/
>ldap_bind_dn: CN=Sasl,CN=Users,DC=domain,DC=com
>ldap_bind_pw: password
>ldap_version: 3
>ldap_search_base: CN=Users,DC=domain,DC=com
>ldap_filter: (sAMAccountName=%u)
>ldap_debug: -1
>
>/usr/local/etc/exim/configure:
>
>( ... skip ... )
>
>LDAP_AD_BINDDN  = "CN=Exim,CN=Users,DC=domain,DC=com"
>LDAP_AD_PASS    = password
>LDAP_AD_BASE_DN = "CN=Users,DC=domain,DC=com"
>
>LDAP_AD_MAIL_RCPT = \
>        user=LDAP_AD_BINDDN \
>        pass=LDAP_AD_PASS \
>        ldap:///DC=domain,DC=com\
>        ?mail?sub?\
>        (&\
>          (|\
>            
>(objectClass=user)\
>            
>(objectClass=organizationalPerson)\
>            
>(objectClass=person)\
>          )\
>          (mail=${quote_ldap:${local_part}@${domain}})\
>          # (sAMAccountName=${quote_ldap:${local_part}})\
>
>        )
>
>( ... skip ... )
>
>begin routers
>
>adsi_check:
>  driver = redirect
>  domains = +local_domains
>  allow_fail
>  allow_defer
>  # forbid_file
>  # forbid_pipe
>
>  redirect_router = localuser
>  data = ${lookup ldap {LDAP_AD_MAIL_RCPT}\
>        {${local_part}@${domain}} {:fail: User unknown}}
>
>
>localuser:
>  driver = accept
># check_local_user
># local_part_suffix = +* : -*
># local_part_suffix_optional
>  transport = local_delivery
>  cannot_route_message = Unknown user
>
>( ... skip ... )
>
>begin transports
>
>local_delivery:
>  driver = appendfile
>  file = /var/mail/$local_part
>  delivery_date_add
>  envelope_to_add
>  return_path_add
>  group = mail
>  user = $local_part
>  mode = 0660
>  no_mode_fail_narrower
>
Приветствую...
спасибо за пример..

у меня давно уже стояла проблема проверки пользователей из АД при приёме Экзимом .
ещё давно года 3 назад эта проблема была решена.. но на Экзиме 3.22..
и там ОН несколько иначе выглядит..
и вот возникла проблема с переходом на 4ый экзим на основной тачке и на других тачках...на которых уже стоят 4ые экзимы.

вобщем у меня схема построения почтовой системы следующая..
на гейте стоит Экзим и выполняет роль антиспама днсБЛ и распасовщика почты... локальных ящиков на гейте нет...
ну а внутри стоит Эксчендж на который Экзим пересылает письма..
Эксчендж посылает почту наружу также через Экзим.

в чём состоит сейчас проблема...
проблема в том что гадские спамеры шлют адреса на ФЭЙК локал парты по моим доменам
тоесть приходит почта на адрес XREN@mydomain.ru и она проходит через экзим, попадает на Эксчендж, который даёт ответ о том что адреса нет... посылает реплай на подставной адрес через экзим.... этот отлуп успешно морозится в спуле Экзима и по стандартному таймауту заморозки 7 дней успешно дохнет...

всё бы ничего... да трафика жалко...стало.. возник проектик большой конторы..
где спам тоннами приходит и там в день по 200-300 мегов спама наваливает...
и хочется сделать всё по нормальному... плюс на всех остальных тачках поправить ситуацию..

я всё настроил как описано выше

только выборку на мой взгляд грамотнее делать вот из этого объекта objectClass=proxyAddresses
так как там хранятся почтовые алиасы... =) ну это в моей ситуации =)

и вроде работает..

но никак не могу оттралить почему роутеры вроде работают, но на левые адреса типа XREN@mydomain.ru  отлуп отправителю Экзим не даёт и всё пропускает на Эксчендж..
чтото уже запутался совсем...  в чём может быть затык???
прошу помощи бью челом..=))))

кстати могу помоч с СМТП авторизациет.. у меня это на одной из машин через САСЛ реализовано с использованием ТЛС..=)



"Exim + Active Directory"
Отправлено Князь , 04-Май-07 03:06 
>кстати могу помоч с СМТП авторизациет.. у меня это на одной из
>машин через САСЛ реализовано с использованием ТЛС..=)

Проблему авторизации я решил вот так :)

require verify = csa

# И после него добавляем правило, запрещающее без авторизации отправлять
# письма от имени наших пользователей
deny !authenticated = *
condition = ${if eq{$sender_address_domain}{ourdomain.ru}{yes}{no}}
message = Sorry, authorization required


"Exim + Active Directory"
Отправлено Князь , 04-Май-07 03:27 
> только выборку на мой взгляд грамотнее делать вот из этого объекта objectClass=proxyAddresses
Возможно, но в ldap-схеме его не было (смотрел программой ldp.exe из support tools в win2ksrv).

>кстати могу помоч с СМТП авторизациет.. у меня это на одной из
>машин через САСЛ реализовано с использованием ТЛС..=)

Проблему авторизации я решил вот так :)

require verify = csa
# И после него добавляем правило, запрещающее без авторизации отправлять
# письма от имени наших пользователей
deny !authenticated = *
condition = ${if eq{$sender_address_domain}{ourdomain.ru}{yes}{no}}
message = Sorry, authorization required


"Exim + Active Directory"
Отправлено Sergey Loputnev , 04-Май-07 09:49 
>и вроде работает..
>
>но никак не могу оттралить почему роутеры вроде работают, но на левые
>адреса типа XREN@mydomain.ru  отлуп отправителю Экзим не даёт и всё
>пропускает на Эксчендж..
>чтото уже запутался совсем...  в чём может быть затык???
>прошу помощи бью челом..=))))

а по моей проблеме есть мысли?
вот так выглядят у меня сейчас роутеры и транспорт

------------------------------------------------------------
ldap_default_servers = <; 192.168.22.55:389

LDAP_AD_BINDDN  = "CN=exim_ldap_auth,CN=Users,DC=mydomain,DC=ru"
LDAP_AD_PASS    = ldap_auth_password
LDAP_AD_BASE_DN = "CN=Users,DC=mydomain,DC=ru"

LDAP_AD_MAIL_RCPT = \
    user=exim_ldap_auth \
    pass=ldap_auth_password \
    ldap:///DC=smsmedia,DC=ru?mail?sub?\
    (& (| (objectClass=proxyAddresses) )\
    ##   (& (| (objectClass=proxyAddresses) (objectClass=user)\
    ##(objectClass=organizationalPerson) (objectClass=pe
    (mail=${quote_ldap:${local_part}@${domain}})\
    ## (sAMAccountName=${quote_ldap:${local_part}})\
)

( ... skip ... )

begin routers

adsi_check:
  driver = redirect
    ####    domains = +local_domains
    domains = "mydomain.com: mydomain.ru"
    allow_fail
    allow_defer
    # forbid_file
    # forbid_pipe

redirect_router = localuser_check
    data = ${lookup ldap {LDAP_AD_MAIL_RCPT} {:fail: User unknown}}

localuser_check:
  driver = accept
  # check_local_user
  # local_part_suffix = +* : -*
  # local_part_suffix_optional
  # transport = local_delivery
    transport = srv_exchange
    cannot_route_message = Privet, priplyli... Unknown user

( ... skip ... )

begin transports

srv_exchange:
    driver = smtp
    hosts = 192.168.22.555
    envelope_to_add = true
-------------------------------------------------------------------------

есть идеи??

вот пример нормально работающего Директора на Экзиме 3.22 со Лдап проверкой

my_director:
    driver = smartuser
    local_parts = *
    domains = "mydomain.com:mydomain.ru"
    condition = ${lookup ldap {user="anonymous" \
ldap://192.168.168.100:3268/dc=mydomain,dc=ru?sAMAccountName?sub? \
(proxyAddresses=SMTP:${quote_ldap:$local_part}@${quote_ldap:$domain})} {$value} {false} }
    transport = my_exchange
    verify_recipient = true

( ... skip ... )

begin transports

my_exchange:
    driver = smtp
    hosts = 192.168.168.100
    envelope_to_add = true


"Exim + Active Directory"
Отправлено Князь , 05-Май-07 03:47 
"exim -bh <ip-address>" чо кажет?

"Exim + Active Directory"
Отправлено Sergey Loputnev , 05-Май-07 13:26 
>"exim -bh <ip-address>" чо кажет?

это тест Эксченджа
[root@mx ~]# exim -bh 192.168.100.50

**** SMTP testing session as if from host 192.168.100.50
**** but without any ident (RFC 1413) callback.
**** This is not for real!

>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? yes (matched "*")
>>> looking up host name for 192.168.100.50
>>> IP address lookup using gethostbyaddr()
>>> IP address lookup failed: h_errno=1
LOG: no host name found for IP address 192.168.100.50
>>> host in host_reject_connection? no (option unset)
>>> host in sender_unqualified_hosts? no (option unset)
>>> host in recipient_unqualified_hosts? no (option unset)
>>> host in helo_verify_hosts? no (option unset)
>>> host in helo_try_verify_hosts? no (option unset)
>>> host in helo_accept_junk_hosts? no (option unset)
220 mydomain.com secure smtp server


это самого экзима
[root@mx ~]# exim -bh 127.0.0.1

**** SMTP testing session as if from host 127.0.0.1
**** but without any ident (RFC 1413) callback.
**** This is not for real!

>>> host in hosts_connection_nolog? no (option unset)
>>> host in host_lookup? yes (matched "*")
>>> looking up host name for 127.0.0.1
>>> IP address lookup yielded localhost
>>> gethostbyname2 looked up these IP addresses:
>>>   name=mx.mydomain.com address=127.0.0.1
>>> checking addresses for localhost
>>>   127.0.0.1 OK
>>> host in host_reject_connection? no (option unset)
>>> host in sender_unqualified_hosts? no (option unset)
>>> host in recipient_unqualified_hosts? no (option unset)
>>> host in helo_verify_hosts? no (option unset)
>>> host in helo_try_verify_hosts? no (option unset)
>>> host in helo_accept_junk_hosts? no (option unset)
220 mydomain.com secure smtp server


"Exim + Active Directory"
Отправлено Князь , 05-Май-07 16:09 
Да я не про это. Посимулируй "диалог" с каким-нить сторонним почтовым сервером, например с 194.67.23.20 (mxs.mail.ru)

"Exim + Active Directory"
Отправлено Nomadic , 22-Окт-07 18:47 
я решил это проще - проверкой поля mail в AD, т.к. мне не всем пользователям положены ящики они разрешены только тем у кого заполнено поле Эл. Почта, оно же является их мылом

mailbox_user_ad:
  driver = accept
  hide condition = ${lookup ldap{user="user@domain.org" pass=Secret \
              ldap://192.168.0.1/dc=domain,dc=org?mail?sub?(&(objectClass=user) \
              (mail=${local_part}@${domain}))}{yes}{no}}

  transport = mailbox_delivery



"Exim + Active Directory"
Отправлено Князь , 23-Окт-07 03:42 
>[оверквотинг удален]
>
>mailbox_user_ad:
>  driver = accept
>  hide condition = ${lookup ldap{user="user@domain.org" pass=Secret \
>            
>  ldap://192.168.0.1/dc=domain,dc=org?mail?sub?(&(objectClass=user) \
>            
>  (mail=${local_part}@${domain}))}{yes}{no}}
>
>  transport = mailbox_delivery

Так у меня почти то же самое )