2006年11月15日水曜日

cyrus-imapdで、なぜかInvalid credentialsというエラーが記録されるユーザーがいる

久しぶりの、サーバーでログメッセージがたくさん出すぎて、うざったいシリーズ、第4弾。



前回はこちら:





今回のエラーメッセージも、数ヶ月間、見なかったことにしていた・・・というか、これ以外にも、あまりにもたくさんのエラーメッセージが出てて、見逃していたものです。

なんかログにたくさん出てるけど、動いているからいいや!

管理者として失格ですね。





☆ ☆ ☆ ☆ ☆ ☆ 



cyrus-imapdを使って、IMAP/POP3なメールサーバを運用していましたが、ある一人のユーザーでのみ、以下のようなエラーメッセージが記録されていました。



Nov  2 14:29:42 HOST saslauthd[9274]: pam_ldap: error trying to bind as user "uid=USER,ou=People,dc=SOME,dc=DOMAIN" (Invalid credentials)



このエラーの意味は、おそらくは、パスワードが間違っていて認証に失敗した、という意味なのですが、このユーザー「USERさん」(仮称)は、実際には、メールは読めています。



このユーザーが使っているメールソフトは、Mozilla Thunderbirdだったのですが、「あ~、Thunderbirdね、フフン」と思って(深い意味はありません)、Thunderbirdの設定をいろいろ変えてみたり、最新バージョンにアップデートしてもらったり、さらには、通信ログを取得してもらったりしたのですが、どこをどうみても、メールソフト側では何のエラーも出ていなくて、原因は、まったくわからず。



新着メールのチェックを1回すると、それに応じて、必ず、上記のエラーがメールサーバ側で1回記録される、という具合でした。



終いには、トロイの木馬つきのThunderbirdじゃないの?とか、スパイウェアが仕掛けられていて、メールを盗み読みされてんじゃないの?とか、言い出す始末。





さてさて、調査を開始して、2日目、原因が、やっと判明しました!

サーバ側で、pamの設定が悪い

それが、原因でした。



メールの認証は、LDAPを用いて行うようにしていました。ただし、cyrus-imapdの認証は、実はめぐりめぐって、saslauthdから、pamを経由して、pam_ldapで認証されるような設定になっていました。そのため、/etc/pam.d/pop3 とかが参照されていたのですが、そこにはこう書かれていました。



auth  sufficient  pam_ldap.so   no_warn try_first_pass
auth  required    pam_unix.so   no_warn try_first_pass



そう、実は、LDAPで登録されているパスワードが、このユーザーUSER(仮称)がThunderbirdで入力したものとは一致していなくて、pam_ldapでは認証が失敗していたのです。



しかし、/etc/nsswitch.conf で、なぜか



passwd: files nis ldap



となっていたので、pam_ldapでエラーが出たあと、そのあと、pam_unixでは、NISのpasswdが参照され、passwdマップに設定されたパスワードでは認証が成功していた・・・というわけでした。



原因が判明したので、/etc/pam.d/pop3や、/etc/pam.d/imapで、pam_unix.soは外して、以下のように、pam_ldap.soだけで認証するように変更しました。



auth  required    pam_ldap.so   no_warn try_first_pass



本業の合間にやっている素人管理者なんで、こういうみっともないミスもあるんですよ・・・



すみませんねぇ。



0 件のコメント:

コメントを投稿