メモです.たぶん俺得.
/etc/sasldb2 は作成しない
前提
LDAPサーバにはすでにユーザ登録がされていて,LDAPサーバとお話できる状態であること.具体的には,
ldapsearch -x -b "dc=xxxx,dc=yy" "(&(objectClass=posixAccount)(uid=ユーザ名))"
とかやると
# extended LDIF
#
# LDAPv3
# basewith 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 サーバに認証されるまでの動き
エンティティは
- LDAPに登録済みユーザ
- LDAPサーバ
- saslauthd (with ldap); ubuntu 12.04 server には apt-get のリポジトリに ldap モジュールがあったはず
- cyrus-imapd
で,認証の流れは,
ところで 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 の認証はいけてる.