ttt

getttyent

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

2006-11-14 22:19:12 | デジタル・インターネット

久しぶりの、サーバーでログメッセージがたくさん出すぎて、うざったいシリーズ、第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

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

すみませんねぇ。


コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。