/etc/passwdから一般ユーザー情報を削除しLDAPへ移行しようとしたら、まぁいろいろ不具合が。ProFTPD
の次は、IMAPサーバのdovecot。RPMでインストールすると/etc/passwdからユーザー情報を取ろうとする。
LDAPで認証をするときは大まかに二つあって、
- LDAPサーバにユーザーIDと(平文)パスワードを渡して、LDAPサーバでOKかどうか返事してもらう
- LDAPサーバから暗号化されたパスワードを取得して、自前でパスワードが正しいか判断する
dovecotは前者はサポートしないらしい(*1)。これだとパスワードの暗号化の方法とかで面倒なことになりそうなので(*2)、認証だけはPAM、そのほかのユーザー情報はanonymousで取ってくるようにと、/etc/dovecot.confを以下のように変更。
auth_userdb = ldap /etc/dovecot-ldap.conf
auth_passdb = pam
[2008/3/11 追記]
(*1) パスワードが平文でLDAPサーバに送られてしまうからですかねぇ? TLSなどの対策した方がよさそうです。
(*2) 暗号化方法にSSHAとかMD5とか複数ありまして、適当に暗号化方法を決め打ちでやるとLDAP側で暗号化方法を変えた瞬間認証できなくなります。ちゃんと対応すればいいのですが、面倒なので・・・PerlでSSHAの暗号化ってどうやるの^^;
LDAPサーバへのアクセス設定は別ファイル/etc/dovecot-ldap.confで行うと設定。サンプルはソースファイルのdocディレクトリにあります。認証はPAMでやるため設定は簡単で、
base = dc=example, dc=com
hosts = ldap.server.example.com
などと自分の環境に合わせます。LDAPサーバーは認証要求応答とユーザー情報提供をanonymousに行うため、/etc/openldap/slapd.confを以下のように。これは
ProFTPD
の時から変更なし。
access to attrs=userPassword
by self write
by dn="cn=manager,dc=example,dc=com" write
by anonymous auth
by * none
access to *
by self write
by dn="cn=manager,dc=example,dc=com" write
by * read
PAMの設定はデフォルトのままで、/etc/pam.d/dovecotを
#%PAM-1.0
auth required pam_nologin.so
auth required pam_stack.so service=system-auth
account required pam_stack.so service=system-auth
session required pam_stack.so service=system-auth
にしてあります。
Comments