Ubuntu 12.04 で LDAP 使って cyrus-imapd を使えるようにする

メモです.たぶん俺得.
/etc/sasldb2 は作成しない

前提

LDAPサーバにはすでにユーザ登録がされていて,LDAPサーバとお話できる状態であること.具体的には,

ldapsearch -x -b "dc=xxxx,dc=yy" "(&(objectClass=posixAccount)(uid=ユーザ名))"

とかやると

# extended LDIF
#
# LDAPv3
# base with scope subtree
# filter: (&(objectClass=posixAccount)(uid=ユーザ名))
# requesting: ALL
#

# ユーザ名, Users, xxxx.yy
dn: uid=ユーザ名,ou=Users,dc=xxxx,dc=yy
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: posixAccount
objectClass: shadowAccount
objectClass: inetOrgPerson
objectClass: sambaSamAccount
: :

こんなかんじで返事が返ってくること.
ちなみに,マネージャは cn=admin,dc=xxxx,dc=yy として話をすすめる.

ユーザからの imap アクセスが LDAP サーバに認証されるまでの動き

エンティティは

で,認証の流れは,

  1. ユーザが imap クライアント(メールクライアント)で cyrus-imapd にアクセス
  2. cyrus-imapd が saslauthd に問い合わせ
  3. saslauthd が LDAP サーバに問い合わせ
  4. LDAP サーバが承認.

ところで cyrus では cyradm でmailboxを作ったりしなくてはいけない

cyradm というツールでユーザのmailboxを作らなくてはいけないけれど,困ったことに,cyradm を操作するユーザを認証するのはちとホネ(というか,どうやっていいのかわからん).
できれば,LDAP マネージャである admin ( cn=admin,dc=xxxx,dc=yy ) で認証させてやりたい.
つまり,

# cyradm -u admin localhost
> cm user.ユーザ名

とかやりたいわけなんです.
下手に LDAP で認証を済ませていたりすると,admin の認証をしようとしても,/etc/sasldb2 がないだの(LDAP モードでうごいてるからそもそも見ない?),なんだのいわれるし,LDAP サーバにお問い合わせするにも,普通のユーザとは扱いが違う.

キーとなる設定メモ

他のところは,まあ適当に.
/etc/default/saslauthd

START=yes
MECHANISMS="ldap"

saslauthd では LDAP にお伺いたてますと宣言.

/etc/imapd.conf

admins: admin
sasl_pwcheck_method: saslauthd

ここの,admins: admin が,cyradm を叩く権限を持つユーザID.あとは,この admin を LDAP で返事できるような聞き方にするだけ.

/etc/saslauthd.conf

ldap_servers: ldap://127.0.0.1/
ldap_bind_dn: cn=admin,dc=xxxx,dc=yy
ldap_password: cn=admin の LDAPパスワード
ldap_search_base: dc=xxxx,dc=yy
ldap_start_tls: no
ldap_filter: (|(&(objectClass=posixAccount)(uid=%u))(&(objectClass=organizationalRole)(cn=%u)))

これは全行書き下しました.
ポイントはフィルタのところ.
前半が一般ユーザのためのもので,後半は admin 認証のためのものです.
LDAP browser とかつかって,ご自身の LDAPサーバの設定をみつつ,適宜書き換えてください.

# testsaslauthd -u ユーザ名 -p ユーザのLDAPパスワード
0: OK "Success."
# testsaslauthd -u admin -p adminのLDAPパスワード
0: OK "Success."

となってれば,少なくとも saslauthd → LDAP の認証はいけてる.