Exim + dovecot + ad

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

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
CrazyPilot
ст. сержант
Сообщения: 321
Зарегистрирован: 2008-08-14 9:17:58
Откуда: Санкт-Петербург
Контактная информация:

Exim + dovecot + ad

Непрочитанное сообщение CrazyPilot » 2008-08-14 10:00:38

Доброго времени суток, уважаемые!

Сразу оговорюсь - exim и dovecot ставлю в первый раз, раньше все как-то сендмейлом обходился. Читаю сейчас доку на exim.org, но просветления что-то не наступает. Поэтому, если вопросы подобного характера задавались тысячу раз и обсосаны со всех сторон - просьба не пинать, можно кидаться ссылками. И да, поиск я пользовал :)

Объясните, плз, по возможности, что к чему.

Итак.

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

[root@flanker ~]# uname -r
7.0-RELEASE
[root@flanker ~]# pkg_info | grep exim
exim-4.69           High performance MTA for Unix systems on the Internet
[root@flanker ~]# pkg_info | grep dovecot
dovecot-1.1.2_1     Secure and compact IMAP and POP3 servers
Задача: Настроить почтовик для конторы. E-mail адреса должны браться из AD (Win2k3 Server) из поля mail у аккаунта. Сотрудники авторизовываются на почтовике под своим доменным логином.

Итак, довекот я настроил. Он работает по imap, лезет в ad через ldap и авторизовывает пользователей по auth_bind. Все ок. Поле mail выдирается из ad.
Прекрасно. Теперь надо настроить exim, и тут возник затык. Если авторизовывать пользователей в exim'e через довекот - то он берет с его помощью из ad поле mail и все ок. При доставке письма допустим на superman@domain.com exim по проверяет существование такого mail у какого-нить юзера в ad. Такой mail есть, допустим у аккаунта crazypilot. Все ок, exim отдает довекоту письмо на доставку:

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

command = /usr/local/libexec/dovecot/deliver -d $local_part@$domain
Довекот, как я понимаю, пытается сконструировать путь maildir для данного юзера superman и начинает искать его в AD. Но такого юзера в AD нету и в логах exim я вижу:

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

2008-08-14 10:45:18 [1221] SMTP connection from [10.10.1.211]:3268 I=[10.10.1.213]:25 (TCP/IP connection count = 1)
2008-08-14 10:45:24 [1432] 1KTWaK-0000N6-Rm <= superman@domain.com H=([10.10.1.211]) [10.10.1.211]:3268 I=[10.10.1.213]:25 P=esmtpa A=dovecot_plain: S=590 id=48A3D47E.5010705@domain.com T="sdfs" from <superman@domain.com> for superman@domain.com
2008-08-14 10:45:24 [1432] SMTP connection from ([10.10.1.211]) [10.10.1.211]:3268 I=[10.10.1.213]:25 closed by QUIT
2008-08-14 10:45:24 [1433] cwd=/var/spool/exim 3 args: /usr/local/sbin/exim -Mc 1KTWaK-0000N6-Rm
2008-08-14 10:45:25 [1433] 1KTWaK-0000N6-Rm ** superman@domain.com F=<superman@domain.com> P=<superman@domain.com> R=dovecot_user T=dovecot_delivery: Child process of dovecot_delivery transport returned 67 (could mean user nonexistent) from command: /usr/local/libexec/dovecot/deliver
2008-08-14 10:45:25 [1437] cwd=/var/spool/exim 7 args: /usr/local/sbin/exim -t -oem -oi -f <> -E1KTWaK-0000N6-Rm
2008-08-14 10:45:25 [1437] 1KTWaL-0000NB-2e <= <> R=1KTWaK-0000N6-Rm U=mailnull P=local S=1388 T="Mail delivery failed: returning message to sender" from <> for superman@domain.com
2008-08-14 10:45:25 [1433] 1KTWaK-0000N6-Rm Completed QT=1s
2008-08-14 10:45:25 [1439] cwd=/var/spool/exim 3 args: /usr/local/sbin/exim -Mc 1KTWaL-0000NB-2e
2008-08-14 10:45:25 [1439] 1KTWaL-0000NB-2e ** superman@domain.com F=<> P=<> R=dovecot_user T=dovecot_delivery: Child process of dovecot_delivery transport returned 67 (could mean user nonexistent) from command: /usr/local/libexec/dovecot/deliver
2008-08-14 10:45:25 [1439] 1KTWaL-0000NB-2e Frozen (delivery error message)
Из чего я заключил, что dovecot не может и не должен находить в ad юзера superman.

Вопрос - как настроить exim, чтобы это работало? Честно говоря, не совсем догоняю, как это вообще сделать.
По-моему надо настроить exim так, чтобы он лазил в AD, искал там поле mail - забирал sAMAccountName и отдавал это значение на доставку довекоту, который в свою очередь лез в ad...Какая-то мутная схема получается.

Подскажите как сделать лучше, или как решить проблему с пользователями.

И еще вопрос: что значит condition в роутерах, и как используются результаты раскрытия строки в condition. В документации написано что результаты используются в работе роутера, но как я не понял.

Вот конфиг exim: (обрезанный)

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

LDAP_AD_BINDDN = "CN=ldap ldap,CN=Users,DC=domain,DC=com"
LDAP_AD_PASS = 12345678
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=top)(objectClass=user)\
           (objectClass=organizationalPerson)(objectClass=person))\
           (mail=${quote_ldap:${local_part}@${domain}}))

........


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

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

dovecot_user:
 driver = accept
 condition = ${lookup ldap{LDAP_AD_MAIL_RCPT}{yes}{no}}
 transport = dovecot_delivery
 cannot_route_message = Unknown user

begin transports

remote_smtp:
  driver = smtp

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

dovecot_delivery:
  driver = pipe
  delivery_date_add
  envelope_to_add
  return_path_add
  check_string =
  command = /usr/local/libexec/dovecot/deliver -d $local_part@$domain
  user = mailnull
  group = mail
  message_prefix = ""
  message_suffix = ""
  log_output

begin authenticators

dovecot_login:
  driver = dovecot
  public_name = LOGIN
  server_socket = /var/comn/dovecot/auth-client
  server_set_id = $auth1

dovecot_plain:
  driver = dovecot
  public_name = PLAIN
  server_socket = /var/comn/dovecot/auth-client
  server_set_id = $auth2
Конфиг dovecot:

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

protocols = imap
listen = *
disable_plaintext_auth = no
ssl_disable = yes
mail_location = maildir:%h
mail_access_groups = mail
verbose_proctitle = yes
first_valid_uid = 26
last_valid_uid = 26
first_valid_gid = 6
last_valid_gid = 6
maildir_copy_with_hardlinks = yes
log_path = /var/log/dovecot.log
mail_uid = 26
mail_gid = 6
mail_executable = /usr/local/etc/dov_prog.sh
protocol imap {
  imap_client_workarounds = delay-newmail outlook-idle tb-extra-mailbox-sep
}

protocol lda {
  postmaster_address = superman@domain.com
  sendmail_path = /usr/sbin/sendmail
  auth_socket_path = /var/run/dovecot/auth-master
}

auth_cache_size = 0
auth_username_format = %Lu

auth default {
  mechanisms = plain

  passdb ldap {
    args = /usr/local/etc/dovecot-ldap.conf
  }
  userdb ldap {
    args = /usr/local/etc/dovecot-ldap.conf
  }
  socket listen {
    master {
      path = /var/run/dovecot/auth-master
      mode = 0600
      user = mailnull
      group = mail
    }
     client {
      path = /var/run/dovecot/auth-client
      mode = 0666
      user = mailnull
      group = mail
    }
  }
}
dovecot-ldap.conf:

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

hosts = boss2.domain.com:3268
auth_bind = yes
ldap_version = 3
base = dc=domain, dc=com
deref = searching
scope = subtree
user_attrs=mail=home=/var/mail/%$
user_filter = (&(objectClass=top)(objectClass=user)(objectClass=organizationalPerson)(objectClass=person)(sAMAccountName=%u))
pass_filter = (&(objectClass=top)(objectClass=user)(objectClass=organizationalPerson)(objectClass=person)(sAMAccountName=%u))
Извините за поток сознания, но как-то яснее сформулировать не могу, башка кипит :)
Если что надо еще - спросите, жду любой помощи :)

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

CrazyPilot
ст. сержант
Сообщения: 321
Зарегистрирован: 2008-08-14 9:17:58
Откуда: Санкт-Петербург
Контактная информация:

Re: Exim + dovecot + ad

Непрочитанное сообщение CrazyPilot » 2008-08-14 14:11:50

Переписал в экзиме транспорт на:

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

dovecot_delivery: 
  driver = pipe
  delivery_date_add
  envelope_to_add
  return_path_add
  check_string =
  command =/usr/local/libexec/dovecot/deliver -d ${lookup ldap{user=LDAP_AD_BINDDN pass=LDAP_AD_PASS ldap:///dc=domain,dc=com?sAMAccountName?sub?(&((objectClass=top)(objectClass=user)(objectClass=organizationalPerson)(objectClass=person))(mail=${quote_ldap:$local_part}${quote_ldap:@}${quote_ldap:$domain}))}{$value} }@$domain
  user = mailnull
  group = mail
  message_prefix = ""
  message_suffix = ""
  log_output
Но exim меня послал:

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

2008-08-14 14:34:45 [2831] 1KTaAH-0000je-6L == superman@domain.com R=dovecot_user T=dovecot_delivery defer (0): Expansion of "${lookup" from command "/usr/local/libexec/dovecot/deliver -d ${lookup ldap{user="CN=ldap%20ldap,CN=Users,DC=domain,DC=com" pass=12345678 ldap:///dc=domain,dc=com?sAMAccountName?sub?(&((objectClass=top)(objectClass=user)(objectClass=organizationalPerson)(objectClass=person))(mail=${quote_ldap:$local_part}${quote_ldap:@}${quote_ldap:$domain}))}{$value} }@$domain" in dovecot_delivery transport failed: missing lookup type
Теперь я вообще ничего не понимаю. Запрос перечитал раз 100. Написано же русским языком lookup ldap.
Почему missing lookup type?

CrazyPilot
ст. сержант
Сообщения: 321
Зарегистрирован: 2008-08-14 9:17:58
Откуда: Санкт-Петербург
Контактная информация:

Re: Exim + dovecot + ad

Непрочитанное сообщение CrazyPilot » 2008-08-14 16:24:37

пиляд....

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

[root@flanker /usr/ports/mail/exim]# exim -be
> ${lookup ldap{user="CN=ldap ldap,CN=Users,DC=domain,DC=com" pass=12345678 ldap:///dc=domain,dc=com?sAMAccountName?sub?(&(mail=${quote_ldap:superman}${quote_ldap:@}${quote_ldap:domain.com}))}{$value}}@domain.com
kajalainen@domain.com
> ^C
[root@flanker /usr/ports/mail/exim]# cat /var/log/exim/exim-main-20080814.log
2008-08-14 17:18:50 [3284] SMTP connection from [10.10.1.211]:1688 I=[10.10.1.213]:25 (TCP/IP connection count = 1)
2008-08-14 17:18:50 [3329] 1KTcj4-0000rh-Hd <= superman@domain.com H=([10.10.1.211]) [10.10.1.211]:1688 I=[10.10.1.213]:25 P=esmtpa A=dovecot_plain: S=590 id=48A430AF.70800@domain.com T="sdfsdf" from <superman@domain.com> for superman@domain.com
2008-08-14 17:18:50 [3329] SMTP connection from ([10.10.1.211]) [10.10.1.211]:1688 I=[10.10.1.213]:25 closed by QUIT
2008-08-14 17:18:50 [3330] cwd=/var/spool/exim 3 args: /usr/local/sbin/exim -Mc 1KTcj4-0000rh-Hd
2008-08-14 17:18:50 [3330] 1KTcj4-0000rh-Hd == superman@domain.com R=dovecot_user T=dovecot_delivery defer (0): Expansion of "${lookup" from command "/usr/local/libexec/dovecot/deliver -d ${lookup ldap{user="CN=ldap ldap,CN=Users,DC=domain,DC=com" pass=12345678 ldap:///dc=domain,dc=com?sAMAccountName?sub?(&(mail=${quote_ldap:$local_part}${quote_ldap:@}${quote_ldap:$domain}))}{$value}}@$domain" in dovecot_delivery transport failed: missing lookup type
[root@flanker /usr/ports/mail/exim]#

Уличная магия? :st:

CrazyPilot
ст. сержант
Сообщения: 321
Зарегистрирован: 2008-08-14 9:17:58
Откуда: Санкт-Петербург
Контактная информация:

Re: Exim + dovecot + ad

Непрочитанное сообщение CrazyPilot » 2008-08-15 9:17:02

Неужели никто не в состоянии помочь :-o

Плз, вторая неделя пошла мучений....

CrazyPilot
ст. сержант
Сообщения: 321
Зарегистрирован: 2008-08-14 9:17:58
Откуда: Санкт-Петербург
Контактная информация:

Re: Exim + dovecot + ad

Непрочитанное сообщение CrazyPilot » 2008-08-15 11:02:40

Все, сам поборол с помощью debug'a exim'a. Оказывается он ldap запрос при передаче deliver разбивал на кучу аргументов...
Теперь надо сообразить, как сделать рассылку почты по группам AD. Чтобы письмо, посланное на мыло группы раскидывалось всем доменным аккаунтам этой группы...

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

Re: Exim + dovecot + ad

Непрочитанное сообщение Alex Keda » 2008-08-15 11:12:47

Убей их всех! Бог потом рассортирует...

CrazyPilot
ст. сержант
Сообщения: 321
Зарегистрирован: 2008-08-14 9:17:58
Откуда: Санкт-Петербург
Контактная информация:

Re: Exim + dovecot + ad

Непрочитанное сообщение CrazyPilot » 2008-08-15 11:22:46

Блин, че-то как ломает еще и perl туда совать.
А других мыслей по поводу mailing list с группами из AD у вас не возникало, уважаемый lissyara? :)

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

Re: Exim + dovecot + ad

Непрочитанное сообщение Alex Keda » 2008-08-15 11:39:35

в смысле совать?
это штатный перл. без изысков.
Убей их всех! Бог потом рассортирует...

CrazyPilot
ст. сержант
Сообщения: 321
Зарегистрирован: 2008-08-14 9:17:58
Откуда: Санкт-Петербург
Контактная информация:

Re: Exim + dovecot + ad

Непрочитанное сообщение CrazyPilot » 2008-08-15 11:48:40

lissyara писал(а):в смысле совать?
это штатный перл. без изысков.
Ну эт понятно, я просто думаю, может как-нибудь можно сделать, чтобы exim сам этим занимался, без использования скриптов. То есть по мылу понимал что адрес группы из AD, смотрел в группе атрибут members, потом у мемберсов смотрел поле mail и вызывал deliver для каждого мебмера. Хочется сделать конфиг, который можно будет совать на разные серваки и править только названия доменов и биндинг юзера для exim'a. А так придется еще скрипты копировать :) На отмазу конечно слабо тянет, но что-то не тянет разбираться в perl, которого я в принципе вообще не знаю...

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

Re: Exim + dovecot + ad

Непрочитанное сообщение Alex Keda » 2008-08-15 11:51:48

чё там разбирться-то....
====
и потом - это не скрипт который вызывается каждый раз - он один раз вызвался и висит в памяти.
Убей их всех! Бог потом рассортирует...

CrazyPilot
ст. сержант
Сообщения: 321
Зарегистрирован: 2008-08-14 9:17:58
Откуда: Санкт-Петербург
Контактная информация:

Re: Exim + dovecot + ad

Непрочитанное сообщение CrazyPilot » 2008-08-15 11:55:58

И все же хочется сделать по-своему. Только додуматься бы как. Мыслей не подкинете?

CrazyPilot
ст. сержант
Сообщения: 321
Зарегистрирован: 2008-08-14 9:17:58
Откуда: Санкт-Петербург
Контактная информация:

Re: Exim + dovecot + ad

Непрочитанное сообщение CrazyPilot » 2008-08-15 14:13:29

Чет я подумал - по-моему такое возможно организовать через router типа redirect, если ему в data подсунуть lookup, который будет возвращать нужные e-mail. Правильно мыслю?

tolik_dub
проходил мимо

Re: Exim + dovecot + ad

Непрочитанное сообщение tolik_dub » 2008-08-15 20:19:56

У меня работает связка exim+dovecot+ad. ексим использует сокет автентификатора довекота. В довекоте пассдб - лдап, юзердб - ескуель, кроном дергается пхп скриптик который синхронит ескуель таблицу с адресами с домен контроллером, плюс такого изврата - возможность доставки писем в то время когда домен контроллер в ауте.

CrazyPilot
ст. сержант
Сообщения: 321
Зарегистрирован: 2008-08-14 9:17:58
Откуда: Санкт-Петербург
Контактная информация:

Re: Exim + dovecot + ad

Непрочитанное сообщение CrazyPilot » 2008-08-17 0:00:15

tolik_dub писал(а):У меня работает связка exim+dovecot+ad. ексим использует сокет автентификатора довекота. В довекоте пассдб - лдап, юзердб - ескуель, кроном дергается пхп скриптик который синхронит ескуель таблицу с адресами с домен контроллером, плюс такого изврата - возможность доставки писем в то время когда домен контроллер в ауте.
У мну ща тоже екзим через довекот авторизует юзеров. Единственно что юзердб тоже лдап. Юзердб на сиквеле чет не то, что мне надо. Вообще не понял, как можно завязать юзердб на сиквеле и групповую рассылку писем, поясните, плз. Плюс изврата, имхо, сомнительный - на херна мне почта, если юзер не сможет залогиниться на рабочую станцию? :)

Хотя, входящие письма могут получить отлуп по варианту "юзер ункновн"...в любом случае у мну несколько контроллеров, их одновременная смерть весьма маловероятна...

Ща курю доки по поводу написать лдап запрос на предмет возврата всех мейлов участников группы. Чувствую, мало что получится :)

tolik_dub
проходил мимо

Re: Exim + dovecot + ad

Непрочитанное сообщение tolik_dub » 2008-08-17 16:29:05

Дык тяни мейлы мемберов группы и заполняй таблицу алиасов. А меня чет не прет туева хуча запросов на дом. контроллер на предмет наличия юзерей...

CrazyPilot
ст. сержант
Сообщения: 321
Зарегистрирован: 2008-08-14 9:17:58
Откуда: Санкт-Петербург
Контактная информация:

Re: Exim + dovecot + ad

Непрочитанное сообщение CrazyPilot » 2008-08-18 8:29:27

tolik_dub писал(а):Дык тяни мейлы мемберов группы и заполняй таблицу алиасов. А меня чет не прет туева хуча запросов на дом. контроллер на предмет наличия юзерей...
Не, не айс. Еще блин и sql держать на почтовике...Хочется поменьше телодвижений :) Хотя как обычно, хер получится...Лучше уж тогда воспользоваться скриптом Лиса.

tolik_dub, приведи свою конфигурацию роутеров exim'a, плз.

CrazyPilot
ст. сержант
Сообщения: 321
Зарегистрирован: 2008-08-14 9:17:58
Откуда: Санкт-Петербург
Контактная информация:

Re: Exim + dovecot + ad

Непрочитанное сообщение CrazyPilot » 2008-08-18 8:59:56

lissyara

Можешь по скрипту пояснить, что есть DISTRIBUTION_LISTS. Это в ад нечто хранится? Как я понял - это ou, где группы валяются? И судя по скрипту, как я понял, rcpt_generator констурирует мыла по dn. А как туда можно запихать чтобы мыло конструировалось по полю mail аккаунта юзера? Просто я в perle не аллё :)

tolik_dub
проходил мимо

Re: Exim + dovecot + ad

Непрочитанное сообщение tolik_dub » 2008-08-18 10:02:04

Да стандартно все.....

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

system_aliases:
    driver      = redirect
    allow_fail
    allow_defer
    data = ${lookup mysql{SELECT `goto` FROM `alias` WHERE `address`='${quote_mysql:$local_part@$domain}' OR `address`='${quote_mysql:@$domain}'}}

dovecot:
  driver = accept
  condition = ${lookup mysql{SELECT `goto` FROM `alias` WHERE `address`='${quote_mysql:$local_part@$domain}' OR `address`='${quote_mysql:@$domain}'}{yes}{no}}
  transport = dovecot_delivery
На перлухе или пхп пишеш скрипт который тянет с АД мейлы всех мемберов группы и заполяет табличку alias... ну и кроном его дергаеш пару раз в сутки, можно также забабахать веб-страничку с кнопочкой для ручной срочняковой синхронизации

CrazyPilot
ст. сержант
Сообщения: 321
Зарегистрирован: 2008-08-14 9:17:58
Откуда: Санкт-Петербург
Контактная информация:

Re: Exim + dovecot + ad

Непрочитанное сообщение CrazyPilot » 2008-08-18 13:23:32

Сделал скрипт который в AD лазиет, на основе скрипта Лиса:

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

#!/usr/bin/perl -w

use Net::LDAP;

sub rcpt_generator
{
        $list_of_recipients = "";
        $ldap = Net::LDAP->new('boss2.domain.com') or die "$@";
        $mesg = $ldap->bind( 'cn=ldap ldap, cn=Users, dc=domain, dc=com',password => '12345678');
        $group_address = $_[0];
        $mesg = $ldap->search(filter=>"(&(objectClass=group)(mail=$group_address))",base=>"dc=domain,dc=com",scope =>'sub',attrs=>['member']);
        @entries = $mesg->entries;
        foreach $entry (@entries) {
                @array_of_ldap_search = $entry->get_value("member");
        }
        foreach $dn(@array_of_ldap_search) {
                $mesg = $ldap->search(filter=>"(&(objectClass=user)(distinguishedName=$dn))",base=>"dc=domain,dc=com",scope =>'sub',attrs=>['mail']);
                @entries = $mesg->entries;
                foreach $entry (@entries) {
                        $user_mail = $entry->get_value("mail");
                        $list_of_recipients = $list_of_recipients . "," . $user_mail;
                        #printf "User mail: $user_mail \n"
                }
        }
        $list_of_recipients = substr($list_of_recipients,1);
        #printf "List of recipients: $list_of_recipients \n";
        $ldap->unbind;
        return "$list_of_recipients";
}

# для теста раскомментить и запустить
# rcpt_generator('it@domain.com')
На перле писал первый раз, так что если что можно улучшить - пишите. Скрипт возвращает mail адреса участников группы, у которой mail совпадает с переданным в процедуру.

CrazyPilot
ст. сержант
Сообщения: 321
Зарегистрирован: 2008-08-14 9:17:58
Откуда: Санкт-Петербург
Контактная информация:

Re: Exim + dovecot + ad

Непрочитанное сообщение CrazyPilot » 2008-08-18 15:18:19

Lissyara

Благодаря Вам, усе настроил :) С меня пиво =)

yeah
проходил мимо

Re: Exim + dovecot + ad

Непрочитанное сообщение yeah » 2008-10-20 8:47:37

2 CrazyPilot
помоему дело было в кавычках - командная строка при встречающихся пробелах делится на отдельные аргументы. решение - ""

CrazyPilot
ст. сержант
Сообщения: 321
Зарегистрирован: 2008-08-14 9:17:58
Откуда: Санкт-Петербург
Контактная информация:

Re: Exim + dovecot + ad

Непрочитанное сообщение CrazyPilot » 2008-10-20 9:00:48

yeah писал(а):2 CrazyPilot
помоему дело было в кавычках - командная строка при встречающихся пробелах делится на отдельные аргументы. решение - ""
Да я уже не помню в чем дело было, ща вот внедряю по-тихоньку новую почту :)

glukky
проходил мимо

Re: Exim + dovecot + ad

Непрочитанное сообщение glukky » 2009-06-02 8:09:40

уффф :crazy:
Работает!

Рассылки группам AD по полю mail.

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

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_DN?member?sub?\
		(&\
		    (objectCategory=group)\
		    (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_adsi_user

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

Re: Exim + dovecot + ad

Непрочитанное сообщение Alex Keda » 2009-06-02 8:33:02

а вы, батенько, извращенец =)
я процедуру на перл для этого прикручивал =)))
Убей их всех! Бог потом рассортирует...

tolik_dub
проходил мимо

Re: Exim + dovecot + ad

Непрочитанное сообщение tolik_dub » 2009-06-16 22:13:32

Ой не жалієте ви, хлопці, доменних контролерів. Хоча я сам зараз їх дрюкаю куди можна :) зараз пишу довідник по співробітниках контори на ПХП який тягне все з Актів Дайрікторі, з інтерфейсом для кадровички шоби могла міняти відділ, фотку, телефон і т п. Але поштовик який кожен раз лізе на контролер домена по адреси - по мойму стрьомновато, в мене то всьо в мускулі який сінхрониться з АД. навіть якшо шнурок з картки локальної мережі витягнути всьо фурикає без проблем. Ну це діло хазяйське звісно...