/etc/passwdから一般ユーザー情報を削除しLDAPへ移行しようとしたら、まぁいろいろ不具合が。ProFTPD の次は、IMAPサーバのdovecot。RPMでインストールすると/etc/passwdからユーザー情報を取ろうとする。
LDAPで認証をするときは大まかに二つあって、- LDAPサーバにユーザーIDと(平文)パスワードを渡して、LDAPサーバでOKかどうか返事してもらう
- LDAPサーバから暗号化されたパスワードを取得して、自前でパスワードが正しいか判断する
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 * readPAMの設定はデフォルトのままで、/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