Настройка SASL для SMTP аутентификации пользователей в AD (MTA:Postfix)
Установлен ASPLinux 9.2. В составе ASPLinux 9.2 идут следующие пакеты :
(если некоторых раздражает магическое (как красная тряпка на быка) слово
"ASPLinux" - все равно рекомендую дочитать до конца :) )
итак при инсталляции ASPLinux были установлены следующие пакеты :
самым сложным было настроить sasl так чтобы он проверял пароли пользователей из AD
Windows 2000. (вообще то проверять можно многие атрибуты каталога active directory)
ldap_servers - указывает на IP сервера windows 2000 с поднятой AD
ldap_bind_dn - указывает контекст пользователя под которым мы биндимся к AD
ldap_bind_pw - указывает пароль для пользователя под которым мы биндимся к AD
ldap_version - указывает на версию ldap сервера
ldap_search_base - указывает контекст в котором мы будем искать пользователей
ldap_filter - указывает фильтр ldap (т.е. у каждого обьекта в AD есть набор
атрибутов таких как полное имя , login name и т.д.
(sAMAccountName=%u) - это как раз атрибут login name в AD
(mail=%u) - это атрибут e-mail пользователя из AD
Таким образом в приведенном выше примере мы будем биндить AD под пользователем
sasl_ldap_bind с паролем 842 созданным нами в ветке Users в AD. А проверять поль-
зователей которые хотят аутентификации будем в например созданном нами в AD -
Organizational Unit - SOME_DEP.
Внимание
такие параметры как ldap_bind_dn и ldap_search_base - указывающие на контекст
пользователя в AD лучше брать из windows утилиты ldp.exe которая поставляется в
support tools.
Порядок работы с этой улитой такой :
1. запускаем ldp.exe
2. connection -> connect
3. connection -> bind ( для чтения паролей например совсем необязательно чтобы пользователь
под которым вы делаете bind обладал правами administratora - членства в группе Users - вполне
достаточно)
4. view -> tree ( указываете контекст - например DC=your_domain,DC=ru)
Далее наверное уже понятно т.е. просматриваем обьекты и их атрибуты. В общем полезно поизучать
вывод утилиты ldp.exe
Если хотите поискать в AD то делаем browse -> search - там необходимо будет опять же указать
контекст в котором будет производится поиск (например DC=your_domain,DC=ru) а также Filter
(например (sAMAccountName=Administrator))
затем нужно запустить демон saslauthd (предварительно в каталоге sysconfig в файле
saslauthd указать флаг ldap для запуска демона
cat saslauthd
# Directory in which to place saslauthd's listening socket, pid file, and so
# on. This directory must already exist.
SOCKETDIR=/var/run/saslauthd
# Mechanism to use when checking passwords. Run "saslauthd -v" to get a list
# of which mechanism your installation was compiled to use.
#MECH=shadow
MECH=ldap
# Additional flags to pass to saslauthd on the command line. See saslauthd(8)
# for the list of accepted flags.
FLAGS=-V
Далее соответственно
/sbin/service saslauthd start
или на время проверки вот так:
/usr/sbin/saslauthd -a ldap -d -n 1 -V
Теперь нужно проверить как это работает - для этого запускаем
появилась еще одна проблемка - тот postfix который я ставил из rpm (2.0.16)
не подходил так как он был собран с поддержкой sasl версии 1.
Качаем postfix с http://www.postfix.org на момент написания статьи это была версия 2.2.1
Распаковали - теперь необходимо собрать как его с поддержкой sasl (мне нужна была
поддержка ldap, sasl, tls)
более подробно смотри в доке по postfix благо ее много :)
перезапускаем postfix и ... не авторизирует - недоступен для postfix демон saslauthd
- для этого необходимо в чирут postfixа скопировать /usr/lib/sasl2
пробуем еще раз - все заработало (у меня по крайней мере) :