海外を含む広い拠点で統一的に使われているActive Directoryドメインコントローラの認証機能(ユーザ・アカウント)を、社内のごく限られたメンバーだけに立てたローカルサーバで使いたくて、wadahiroさんの「OpenLDAPでActive Directoryに対してPass-Through 認証する」を参考にチャレンジしたところ、最初は認証がうまくいかなかったのですが、userPrincipalNameを使うことでエラーを回避しました。
エラー内容
# testsaslauthd -u ユーザ名 -p パスワード
0: NO "authentication failed"
ldap_servers: ldap://yourad.org
ldap_search_base: dc=yourad,dc=org
ldap_filter: (cn=%u)
ldap_bind_dn: cn=suser,ou=users,dc=yourad,dc=org
ldap_password: secret
解決策
ldap_servers: ldap://yourad.org
ldap_search_base: dc=yourad,dc=org
ldap_filter: (sAMAccountName=%u)
ldap_bind_dn: suser@yourad.org
ldap_password: secret
suserは検索用にActive Directoryドメインコントローラにユーザとして登録してあります。secretはそのユーザのパスワードです。
変更点はldap_bind_dnです。カンマで区切る識別名ではなく、userPrincipalNameにするとうまくいきました。
正直理由はわかりません。同様の問題(Active DirectoryをOpenLDAPから使う際の問題)の解決方法でこの方法が採られていることが多いためやってみました。