четверг, 8 апреля 2010 г.

exim + ldap

Прикручивание разлапистого новелевого дерева к exim'у для аутентификации пользователей несколько заморочено, в основном из-за скупого дебага в секции authenticators (logwrite тута не работает).

Есть более простой вариант, ака saslauthd, который нынче sasl2-bin.

в /etc/saslauthd.conf:

ldap_servers: ldap://slp.domain
ldap_bind_dn: cn=proxy,ou=internet,o=domain
ldap_password: proxy
ldap_version: 3
ldap_timeout: 10
ldap_cache_ttl: 30
ldap_cache_mem: 32768
ldap_scope: sub
ldap_search_base: o=domain
ldap_auth_method: bind
ldap_filter: (&(&(cn=%U)(objectClass=Person))(groupmembership=cn=permit_email,ou=internet,o=domain))


В конфиге экзима:

begin authenticators

PLAIN:
driver = plaintext
public_name = PLAIN
server_set_id = $auth2
server_prompts = :
  server_condition = ${if saslauthd{{$auth2}{$auth3}}{1}{0}}
server_advertise_condition = true

И в завершении нужно дунуть, иначе никакого чуда не произойдет: usermod -G sasl Debian-exim

Хинт для проверки:
Команда AUTH ожидает строку в Base64 с тремя параметрами. Разделитель в строке NUL
Можно сгенерить так: perl -MMIME::Base64 -e 'print encode_base64("\000user\@domain\000password")'   =>  AHVzZXJAZG9tYWluAHBhc3N3b3Jk

Далее:
telnet post2.domain
Connected to post2.domain
helo domain
250 post2.domain Hello domain [91.124.141.210]
ehlo testing
250-post2.pirsoilgas.ru Hello testing [91.124.141.210]
250-SIZE 25165824
250-PIPELINING
250-AUTH PLAIN
250 HELP
AUTH PLAIN AHZ2ZWxpY2hrbwA3NEBGUjNQeUdtalc=
235 Authentication succeeded
mail from: Bla-Bla-Bla
 

//включить debug: в /etc/default/exim4 добавить COMMONOPTIONS='-d'

Комментариев нет: