postfix+sasl+courier-imap+AD [solved]

Пытаюсь заставить работать связку postfix+sasl+AD, пока что. Думаю, что надо по результатам этой темы написать хауту, поскольку нигде в сети не нашел внятного описания дружбы между этими программами.

При этом использовал: http://www.nestor.minsk.by/sr/2005/00/050003.html, http://www.grena.spb.ru/linux_mail.html, http://homya4ok.livejournal.com/731054.html#cutid1

Под словом "система" подразумеваю машину с линуксом и MDA postfix.

Из конфига postfix привожу то, что относится к sasl:

virtual_mailbox_domains = dom1.ru dom2.ru

smtpd_sasl_auth_enable = yes
smtpd_sasl_application_name = smtpd
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

, поскольку без использования sasl все работает: были созданы локально пользователи, письма ходят к ним и от них.

Далее, в файле /etc/sasl2/smtpd.conf указал
pwcheck_method: saslauthd

Следуя ману для pam и pam_ldap, создал /etc/pam.conf и прописал в нем
smtp auth sufficient /lib/security/pam_ldap.so

Примечание:

Чтобы возможно было использовать pam_ldap.so, необходимо установить

[I] sys-auth/pam_ldap
     Available versions:  180 ~182 183 ~184 {sasl ssl}
     Installed versions:  183(17:17:24 30.10.2007)(sasl ssl)
     Homepage:            http://www.padl.com/OSS/pam_ldap.html
     Description:         PAM LDAP Module

Также создал файл /etc/ldap.conf

base dc=ph,dc=com  (ph.com - локальный домен, не видимый снаружи)
scope sub
uri ldap://srvm001.ph.com
port 389
ldap_version 3
binddn cn=post,cn=Users,dc=ph,dc=com     (post - юзер, созданный специально для работы с AD)
bindpw 1                (пароль для него)
pam_filter objectclass=User
pam_login_attribute sAMAccountName
pam_password ad      (насколько я понимаю, здесь не требуется менять ничего)

Все вроде как должно быть готово. Запускаю
/etc/init.d/saslauthd start
/etc/init.d/postfix start

После успешного запуска, в своем внешнем почтовом клиенте создаю ящик, и пытаюсь отправить письмо. Получить не пробую, т.к. imap/pop3 сервера не запущены пока что. Отправителем письма является юзер из AD. Получателем - он же. В AD юзер создан. В системе нет ни пользователя с этим именем, ни папки для него. При попытке отправить письмо почтовый клиент ругается на невозможность соединиться с сервером, при этом постфикс пишет:

Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  mail
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  ipv4
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: name_mask: ipv4
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  localsrv.ph.com
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  ph.com
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  Postfix
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  postfix
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  postfix
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  postdrop
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: expand $myhostname, localhost.$mydomain, localhost, $mydomain -> localsrv.ph.com, localhost.ph.com, localhost, ph.com
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: expand $myhostname -> localsrv.ph.com
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  /usr/lib/postfix
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  /usr/sbin
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  /var/spool/postfix
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  pid
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  all
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  double-bounce
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  nobody
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  hash:/etc/mail/aliases
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  20070102
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  2.3.6
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  hash
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  deferred, defer
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: expand $mydestination -> localsrv.ph.com, localhost.ph.com, localhost, ph.com
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: expand $relay_domains -> localsrv.ph.com, localhost.ph.com, localhost, ph.com
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  TZ MAIL_CONFIG LANG
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  MAIL_CONFIG MAIL_DEBUG MAIL_LOGTAG TZ XAUTHORITY DISPLAY LANG=C
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  subnet
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  ph.com
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  +=
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  -=+
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  debug_peer_list,fast_flush_domains,mynetworks,permit_mx_backup_networks,qmqpd_authorized_clients,relay_domains,smtpd_access_maps
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  bounce
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  cleanup
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  defer
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  pickup
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  qmgr
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  rewrite
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  showq
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  error
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  flush
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  verify
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  trace
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  2
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  100s
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  100s
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  100s
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  100s
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  3600s
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  3600s
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  100s
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  100s
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  1000s
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  1000s
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  10s
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  10s
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  1s
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  1s
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  1s
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  1s
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  500s
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  500s
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  18000s
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  18000s
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  1s
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  1s
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_eval: const  192.168.1.0/24, 127.0.0.0/8

....

Oct 31 13:23:48 localsrv postfix/smtpd[23062]: process generation: 7 (7)
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: input attribute name: status
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: input attribute value: 0
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: private/proxymap socket: wanted attribute: flags
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: input attribute name: flags
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: input attribute value: 16464
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: private/proxymap socket: wanted attribute: (list terminator)
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: input attribute name: (end)
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_proxy_open: connect to map=unix:passwd.byname status=0 server_flags=fixed|lock|fold_fix
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_open: proxy:unix:passwd.byname
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: Compiled against Berkeley DB: 4.5.20?
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: Run-time linked against Berkeley DB: 4.5.20?
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: dict_open: hash:/etc/mail/aliases
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: match_string: smtpd_access_maps ~? debug_peer_list
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: match_string: smtpd_access_maps ~? fast_flush_domains
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: match_string: smtpd_access_maps ~? mynetworks
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: match_string: smtpd_access_maps ~? permit_mx_backup_networks
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: match_string: smtpd_access_maps ~? qmqpd_authorized_clients
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: match_string: smtpd_access_maps ~? relay_domains
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: match_string: smtpd_access_maps ~? smtpd_access_maps
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: match_string: debug_peer_list ~? debug_peer_list
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: xsasl_cyrus_server_init: SASL config file is smtpd.conf
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: auxpropfunc error invalid parameter supplied
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: _sasl_plugin_load failed on sasl_auxprop_plug_init for plugin: ldapdb
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: match_string: fast_flush_domains ~? debug_peer_list
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: match_string: fast_flush_domains ~? fast_flush_domains
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: auto_clnt_create: transport=local endpoint=private/anvil
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: connection established
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: master_notify: status 0
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: name_mask: resource
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: name_mask: software
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: xsasl_cyrus_server_create: SASL service=smtp, realm=localsrv.ph.com
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: name_mask: noanonymous
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: connect from wst016.ph.com[192.168.1.136]
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: match_list_match: wst016.ph.com: no match
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: match_list_match: 192.168.1.136: no match
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: match_list_match: wst016.ph.com: no match
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: match_list_match: 192.168.1.136: no match
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: match_hostname: wst016.ph.com ~? ph.com
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: match_hostname: wst016.ph.com ~? 192.168.1.0/24
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: match_hostaddr: 192.168.1.136 ~? 192.168.1.0/24
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: > wst016.ph.com[192.168.1.136]: 220 localsrv.ph.com ESMTP Postfix
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: watchdog_pat: 0x80ba198
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: vstream_fflush_some: fd 10 flush 35
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: vstream_buf_get_ready: fd 10 got 22
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: < wst016.ph.com[192.168.1.136]: EHLO [192.168.1.136]
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: > wst016.ph.com[192.168.1.136]: 250-localsrv.ph.com
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: > wst016.ph.com[192.168.1.136]: 250-PIPELINING
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: > wst016.ph.com[192.168.1.136]: 250-SIZE 10240000
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: > wst016.ph.com[192.168.1.136]: 250-VRFY
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: > wst016.ph.com[192.168.1.136]: 250-ETRN
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: match_list_match: wst016.ph.com: no match
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: match_list_match: 192.168.1.136: no match
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: > wst016.ph.com[192.168.1.136]: 250-AUTH GSSAPI CRAM-MD5 DIGEST-MD5 LOGIN PLAIN NTLM
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: > wst016.ph.com[192.168.1.136]: 250-ENHANCEDSTATUSCODES
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: > wst016.ph.com[192.168.1.136]: 250-8BITMIME
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: > wst016.ph.com[192.168.1.136]: 250 DSN
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: watchdog_pat: 0x80ba198
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: vstream_fflush_some: fd 10 flush 178
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: vstream_buf_get_ready: fd 10 got 6
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: < wst016.ph.com[192.168.1.136]: QUIT
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: > wst016.ph.com[192.168.1.136]: 221 2.0.0 Bye
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: vstream_fflush_some: fd 10 flush 15
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: match_hostname: wst016.ph.com ~? 192.168.1.0/24
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: match_hostaddr: 192.168.1.136 ~? 192.168.1.0/24
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: disconnect from wst016.ph.com[192.168.1.136]
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: master_notify: status 1
Oct 31 13:23:48 localsrv postfix/smtpd[23062]: connection closed
Oct 31 13:25:28 localsrv postfix/smtpd[23062]: proxymap stream disconnect
Oct 31 13:25:28 localsrv postfix/smtpd[23062]: idle timeout -- exiting

Итак, каким образом заставить авторизоваться в системе? Не забыл ли я сделать что-либо еще?

Собственно,

Собственно, использование pam_ldap в данном случае в корне неверно. Правильнее использовать saslauthd с модулем ldap. Попозднее я выложу действия по авторизации через LDAP.
_______________________
From Siberia with Love!

Нашел вот это

Нашел вот это на одном из форумов:

Файл /etc/postfix/master.cf

maildrop  unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}

Файл /etc/postfix/main.cf

virtual_gid_maps = static:800
virtual_mailbox_base = /home/vmail/ph.com/
virtual_mailbox_limit = 0
virtual_mailbox_maps = ldap:ldapvirtual
virtual_minimum_uid = 800
virtual_transport =  maildrop
virtual_uid_maps = static:800

ldapvirtual_server_host = 192.168.1.201
ldapvirtual_server_port = 389
ldapvirtual_bind = yes
ldapvirtual_bind_dn = CN=post, CN=Users, DC=ph, DC=com
ldapvirtual_bind_pw = 1
ldapvirtual_search_base = CN=Users, DC=ph, DC=com
ldapvirtual_query_filter =  (&(mail=%s)(sAMAccountName=%u))
ldapvirtual_result_attribute = sAMAccountName
ldapvirtual_domain = ph.com

Перед этим были созданы группа и юзер vmail, были созданы папки /home/vmail, /home/vmail/ph.com

groupadd -g 800 vmail
useradd -u 800 -g vmail -m vmail
mkdir /home/vmail/ph.com
mkdir /home/vmail/ph.com/basov
maildirmake /home/vmail/ph.com/basov/.maildir
chown -R vmail:vmail /home/vmail/

Проблема следующая.
ph.com - это мой локальный домен. Есть еще внешний домен domain.ru. Когда я отправляю письмо на

, то постфикс почему-то лезет во внешний мир, ищет там MX моего домена и кладет письмо туда, куда эта запись указывает. Когда же я шлю письмо на

, то

Nov  1 11:06:29 localsrv postfix/smtpd[25221]: dict_proxy_lookup: table=unix:passwd.byname flags=lock|fold_fix key=@ph.com -> status=1 result=
Nov  1 11:06:29 localsrv postfix/smtpd[25221]: maps_find: local_recipient_maps: @ph.com: not found
Nov  1 11:06:29 localsrv postfix/smtpd[25221]: mail_addr_find:  -> (not found)
Nov  1 11:06:29 localsrv postfix/smtpd[25221]: NOQUEUE: reject: RCPT from wst016.ph.com[192.168.1.136]: 550 5.1.1 <basov@ph.com>: Recipient address rejected: User unknown in local recipient table; from=<basov@painthouse.ru> to=<basov@ph.com> proto=ESMTP helo=<[192.168.1.136]>
Nov  1 11:06:29 localsrv postfix/smtpd[25221]: > wst016.ph.com[192.168.1.136]: 550 5.1.1 <basov@ph.com>: Recipient address rejected: User unknown in local recipient table

Причем, я отсылал письма как от имени пользователя существующего в домене, так и от имени несуществующего. И реакция была одна и та же. Получается, что аутенфикация не происходит.
_______________________________________________________________________
Intel Core2Duo E6600 / 2 Gb RAM / NV GF 8800 GTX / x86_64-pc-linux-gnu

1. С постфиксом

1. С постфиксом несомненный успех. Вчерашние проблемы были из-за того, что пользователь user не имел вообще ящика в АД. Мой косяк. Сегодня проверка на пользователях с реальными ящиками показала, что в папке

/home/vmail/

создаются автоматически папки с именами доменов:

/home/vmail/domain1.ru
/home/vmail/domain2.ru

В этих папках создается также автоматически юзер
/home/vmail/domain1.ru/какой-то_юзер с подпапками
cur new tmp

Т. о. smtp сервер работает. Письма отсылаются и попадают куда надо, это все в формате maildir.

2. Пытаюсь заставить работать courier-imap/pop3 с этими вещами.
вот файл
/etc/courier/authlib/authdaemonrc

authmodulelist="authldap"
authmodulelistorig="authldap"

а вот
/etc/courier/authlib/authldaprc

LDAP_URI                ldap://192.168.1.201
LDAP_PROTOCOL_VERSION   3
LDAP_BASEDN             OU=Дом краски, DC=ph, DC=com
LDAP_BINDDN             CN=post, CN=Users, DC=ph, DC=com
LDAP_BINDPW             1
LDAP_TIMEOUT            5
LDAP_AUTHBIND           1
LDAP_MAIL               mail

до этого момента все настройки понятны и не подводят, судя по логам, а вот после...

LDAP_DOMAIN             domain1.ru # меня удивляет, почему поиск в АД идет только с использованием этого параметра. Т.е. если юзер имеет ящик , то его, естественно, не находит. Как задать поиск в АД именно по юзеру, а уже потом только смотреть какой у него maildir?
Пытался использовать 
LDAP_FILTER           (mail=%s)
Но в этом случае в логе было видно, что запрос к лдап выглядел так: 
(&(mail=%s)(mail=anyuser@domain1.com))
Поставил как 
LDAP_FILTER           (objectclass=user) - вроде заработало как надо, но все равно поиск велся по домену, взятому из LDAP_DOMAIN.

Итак, аутенфикация прошла, а дальше

LDAP_GLOB_UID           postfix
LDAP_GLOB_GID           mail       (т.к. права на папки у них)

LDAP_HOMEDIR            /home/vmail/ #вот здесь откровенно не понимаю, что делать. Вроде на форумах и в мане написано, что этот путь должен совпадать с virtual_mailbox_base из постфикс. Таким и сделал.
LDAP_MAILROOT        /home/vmail # т.к. предыдущее - не абсолютный путь, то указал и этот
LDAP_MAILDIR            ./Maildir # насколько понимаю, в папке пользователя если выводится
 # ls -la /home/vmail/domain1.ru/modin/
итого 0
drwx------ 5 postfix mail 120 Ноя  9 13:27 .
drwx------ 4 postfix mail  96 Ноя  9 14:53 ..
drwx------ 2 postfix mail  48 Ноя  9 13:27 cur
drwx------ 2 postfix mail 112 Ноя  9 13:27 new
drwx------ 2 postfix mail  48 Ноя  9 13:27 tmp

то это называется Maildir, так?

LDAP_DEFAULTDELIVERY    defaultDelivery #оставил по умолчанию
LDAP_FULLNAME           cn # тоже

Но после таких настроек в логе видно следующее:

Nov  9 17:44:19 localsrv authdaemond: received auth request, service=pop3, authtype=login
Nov  9 17:44:19 localsrv authdaemond: authldap: trying this module
Nov  9 17:44:19 localsrv authdaemond: selected ldap protocol version 3
Nov  9 17:44:19 localsrv authdaemond: binding to LDAP server as DN 'CN=post, CN=Users, DC=ph, DC=com', password '1'
Nov  9 17:44:19 localsrv authdaemond: using search filter: (&(objectclass=user)(mail=modin))
Nov  9 17:44:19 localsrv authdaemond: number of entries returned: 0 (but we need exactly 1)
Nov  9 17:44:19 localsrv pop3d: LOGIN FAILED, method=PLAIN, ip=[::ffff:192.168.1.136]
Nov  9 17:44:19 localsrv authdaemond: authldap: REJECT - try next module
Nov  9 17:44:19 localsrv authdaemond: FAIL, all modules rejected
Nov  9 17:44:24 localsrv authdaemond: received auth request, service=pop3, authtype=login
Nov  9 17:44:24 localsrv authdaemond: authldap: trying this module
Nov  9 17:44:24 localsrv authdaemond: using search filter: (&(objectclass=user)(mail=modin))
Nov  9 17:44:24 localsrv authdaemond: number of entries returned: 0 (but we need exactly 1)
Nov  9 17:44:24 localsrv pop3d: LOGIN FAILED, method=LOGIN, ip=[::ffff:192.168.1.136]
Nov  9 17:44:24 localsrv authdaemond: authldap: REJECT - try next module
Nov  9 17:44:24 localsrv authdaemond: FAIL, all modules rejected
Nov  9 17:44:29 localsrv authdaemond: received auth request, service=pop3, authtype=login
Nov  9 17:44:29 localsrv authdaemond: authldap: trying this module
Nov  9 17:44:29 localsrv authdaemond: using search filter: (&(objectclass=user)(mail=modin))
Nov  9 17:44:29 localsrv authdaemond: number of entries returned: 0 (but we need exactly 1)
Nov  9 17:44:29 localsrv pop3d: LOGIN FAILED, user=modin, ip=[::ffff:192.168.1.136]
Nov  9 17:44:29 localsrv authdaemond: authldap: REJECT - try next module
Nov  9 17:44:29 localsrv authdaemond: FAIL, all modules rejected
Nov  9 17:44:38 localsrv authdaemond: stopping authdaemond children
Nov  9 17:44:38 localsrv authdaemond: modules="authldap", daemons=5
Nov  9 17:44:38 localsrv authdaemond: Installing libauthldap
Nov  9 17:44:38 localsrv authdaemond: Installation complete: authldap
Nov  9 17:44:44 localsrv pop3d: Connection, ip=[::ffff:192.168.1.136]
Nov  9 17:44:44 localsrv authdaemond: received auth request, service=pop3, authtype=login
Nov  9 17:44:44 localsrv authdaemond: authldap: trying this module
Nov  9 17:44:44 localsrv authdaemond: selected ldap protocol version 3
Nov  9 17:44:44 localsrv authdaemond: binding to LDAP server as DN 'CN=post, CN=Users, DC=ph, DC=com', password '1'
Nov  9 17:44:44 localsrv authdaemond: using search filter: (&(objectclass=user)(mail=modin@domain1.ru))
Nov  9 17:44:44 localsrv authdaemond: one entry returned, DN: CN=.......... .......... ......................,OU=...... ............,DC=ph,DC=com
Nov  9 17:44:44 localsrv authdaemond: raw ldap entry returned:
Nov  9 17:44:44 localsrv authdaemond: | cn: .......... .......... ......................
Nov  9 17:44:44 localsrv authdaemond: | mail: 
Nov  9 17:44:44 localsrv authdaemond: authldaplib: sysusername=<null>, sysuserid=207, sysgroupid=12, homedir=, address=modin, fullname=Модин Игорь Анатольевич, maildir=<null>, quota=<null>, options=<null>
Nov  9 17:44:44 localsrv authdaemond: authldaplib: clearpasswd=<null>, passwd=<null>
Nov  9 17:44:44 localsrv authdaemond: rebinding with DN 'CN=.......... .......... ......................,OU=...... ............,DC=ph,DC=com' to validate password
Nov  9 17:44:44 localsrv authdaemond: authentication bind successful
Nov  9 17:44:44 localsrv authdaemond: Authenticated: sysusername=<null>, sysuserid=207, sysgroupid=12, homedir=, address=modin, fullname=Модин Игорь Анатольевич, maildir=<null>, quota=<null>, options=<null>
Nov  9 17:44:44 localsrv authdaemond: Authenticated: clearpasswd=1, passwd=<null>
Nov  9 17:44:44 localsrv pop3d: modin: chdir() failed!!
Nov  9 17:44:44 localsrv pop3d: error: No such file or directory
Nov  9 17:44:44 localsrv pop3d: LOGIN FAILED, method=PLAIN, ip=[::ffff:192.168.1.136]
Nov  9 17:44:44 localsrv pop3d: authentication error: No such file or directory

Все эти странные многоточия проставляются системой. Отображение паролей после настройки уберу. Видно, что программа не может после аутенфикации найти папки пользователя. Как ее заставить это сделать или хотя бы как заставить вывести результат работы наподобие вот этого:

# postmap -q "modin@domain1.ru" ldap:/etc/postfix/ldap/users.cf
domain1.ru/modin/ ?
_______________________________________________________________________
Intel Core2Duo E6600 / 2 Gb RAM / NV GF 8800 GTX / x86_64-pc-linux-gnu

Почти доделал.

Почти доделал. Осталось вот это.

Необходимо заставить postfix и courier-imap,pop3d брать информацию о пользователях из active directory. Вот один кусок конфига постфикса, который вытаскивает инфу о пользователе:

# адрес LDAP-сервера
# можно использовать ldaps://
server_host = ldap://192.168.1.201/
# где искать людей
search_base = DC=ph,DC=com
version = 3
# какие записи отфильтровывать
# брать только тех, у кого есть атрибут mail
query_filter = (&(objectClass=user)(samAccountName=%u))
# требуемый атрибут - мы забираем mail
result_attribute = samAccountName
# по каким путям будет создаваться папка для юзера и подпапки (если еще %d/ то будет создаваться подпапка с доменом вида domain.dom/user/.maildir
result_format = %u/.maildir/
# DN-запись для подключения к LDAP
#bind = yes
bind_dn = CN=post,CN=Users,DC=ph,DC=com
bind_pw = 1

Соответственно, после прогона этой командой
postmap -q "modin@painthouse.ru" ldap:/etc/postfix/ldap/users.cf

выводится
modin/.maildir/

Естественно, ящик пользователя прописан в АД, в поле "электронная почта" вкладки "общие" в свойствах пользователя.

НО(!) это верно и работает если только ящик юзера совпадает с его логином:

login DOMAIN\user
e-mail: 

А вот если надо, чтобы почта шла не на ящик вида

, а на ящик

, то надо использовать другой код:

# адрес LDAP-сервера
# можно использовать ldaps://
server_host = ldap://192.168.1.201/
# где искать людей
search_base = DC=ph,DC=com
version = 3
# какие записи отфильтровывать
# брать только тех, у кого есть атрибут mail
query_filter = (&(mail=%s)(sAMAccountType=268435457))
# требуемый атрибут - мы забираем mail
result_filter = %u
result_attribute = userPrincipalName
special_result_attribute = member
# по каким путям будет создаваться папка для юзера и подпапки (если еще %d/ то будет создаваться подпапка с доменом вида domain.dom/user/.maildir
result_format = %u/.maildir/
# DN-запись для подключения к LDAP
#bind = yes
bind_dn = CN=post,CN=Users,DC=ph,DC=com
bind_pw = 1

но неясно, где и как в АД указать этот алиас, этот ящик для перенаправления.
_______________________________________________________________________
Intel Core2Duo E6600 / 2 Gb RAM / NV GF 8800 GTX / x86_64-pc-linux-gnu

Нужно либо

Нужно либо указать у пользователя атрибут mail в каталоге (если есть такой в AD, по идее должен быть), либо делать алиасы (тоже в каталоге, но тут сложнее - возможно, потребуется добавлять свою схему). По идее, когда я сталкивался с Exchange то он добавлял свои схемы (или использовал готовые), и там был атрибут alternateMail. Можно использовать его.
_______________________
From Siberia with Love!

Все настроено.

Тема уходит в небытие. Судя по количеству откликов, вопросов по настройке этой связки нет ни у кого. Посему, похоже что статью писать нет смысла. Благодарю всех, кто помог мне.
_______________________________________________________________________
Intel Core2Duo E6600 / 2 Gb RAM / NV GF 8800 GTX / x86_64-pc-linux-gnu

ну можно хотябы

ну можно хотябы для самого себя написать - чтобы незабыть.
темболее что сейчас gentoo.ru тоже на LDAP мигрирует.
P.S. может вам с winterheart'том скооперироваться?

Так откуда им

Так откуда им взяться? Тема postfix'а и LDAP уже хорошо освещена в рунете, ИМХО.
Я с этим упражнялся в 2005, хорошо помню, что нашлось не мало толковых статей и по postfix и по его связке с LDAP.

С AD некоторые

С AD некоторые тонкости есть. И вот с ними пришлось повозиться. В инете полной информации нет нигде. Везде либо умолчания, либо несоответствие требованиям.
_______________________________________________________________________
Intel Core2Duo E6600 / 2 Gb RAM / NV GF 8800 GTX / x86_64-pc-linux-gnu

Хм, долго ищу связку

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

http://www-personal.umich.edu

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".