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
Файл /etc/postfix/main.cf
Перед этим были созданы группа и юзер vmail, были созданы папки /home/vmail, /home/vmail/ph.com
Проблема следующая.
ph.com - это мой локальный домен. Есть еще внешний домен domain.ru. Когда я отправляю письмо на
, то постфикс почему-то лезет во внешний мир, ищет там MX моего домена и кладет письмо туда, куда эта запись указывает. Когда же я шлю письмо на
, то
Причем, я отсылал письма как от имени пользователя существующего в домене, так и от имени несуществующего. И реакция была одна и та же. Получается, что аутенфикация не происходит.
_______________________________________________________________________
Intel Core2Duo E6600 / 2 Gb RAM / NV GF 8800 GTX / x86_64-pc-linux-gnu
1. С постфиксом
1. С постфиксом несомненный успех. Вчерашние проблемы были из-за того, что пользователь user не имел вообще ящика в АД. Мой косяк. Сегодня проверка на пользователях с реальными ящиками показала, что в папке
создаются автоматически папки с именами доменов:
В этих папках создается также автоматически юзер
/home/vmail/domain1.ru/какой-то_юзер с подпапками
cur new tmp
Т. о. smtp сервер работает. Письма отсылаются и попадают куда надо, это все в формате maildir.
2. Пытаюсь заставить работать courier-imap/pop3 с этими вещами.
вот файл
/etc/courier/authlib/authdaemonrc
а вот
/etc/courier/authlib/authldaprc
до этого момента все настройки понятны и не подводят, судя по логам, а вот после...
Итак, аутенфикация прошла, а дальше
то это называется Maildir, так?
Но после таких настроек в логе видно следующее:
Все эти странные многоточия проставляются системой. Отображение паролей после настройки уберу. Видно, что программа не может после аутенфикации найти папки пользователя. Как ее заставить это сделать или хотя бы как заставить вывести результат работы наподобие вот этого:
# 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. Вот один кусок конфига постфикса, который вытаскивает инфу о пользователе:
Соответственно, после прогона этой командой
postmap -q "modin@painthouse.ru" ldap:/etc/postfix/ldap/users.cf
выводится
modin/.maildir/
Естественно, ящик пользователя прописан в АД, в поле "электронная почта" вкладки "общие" в свойствах пользователя.
НО(!) это верно и работает если только ящик юзера совпадает с его логином:
А вот если надо, чтобы почта шла не на ящик вида
, а на ящик
, то надо использовать другой код:
но неясно, где и как в АД указать этот алиас, этот ящик для перенаправления.
_______________________________________________________________________
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
http://www-personal.umich.edu/~malth/gaptuning/postfix/