2007年10月18日 星期四

[poppassd]500 Old password is incorrect

以前用 SquirrelMail 時,有一個 change_password plugin 很好用,我是用 poppassd backend ,可以讓使用者直接在 webmail 裡修改自己帳號的密碼。

後來因故放棄 SquirrelMail 後,改用 V-webmail ,界面什麼都不錯,中文問題也修得差不多了,就是沒有線上改密碼的功能。於是,動手把 SquirrelMail 的 change_password plugin 裡的 poppassd beckend 給移植過來用,效果蠻不錯的。

V-webmail change password

最近將 Mail 主機升級 ( 其實是重新安裝 ) 成 Mandriva 2008.0 Free ,結果慘劇發生,完全相同的程式碼,不管輸入的密碼是多麼的正確,一律給錯:

500 Old password is incorrect

好不容易終於解決了。因為是 poppassd 的問題,所以,解決這個問題後, SquirrelMail 的 change_password plugin 不能換密碼的問題也可以一併解決。

查了半天程式、 log 、網路,不斷搜尋資料,一直找不到原因,直到看到有人提到 /etc/pam.d/poppassd 裡面

#%PAM-1.0 auth required pam_pwdb.so shadow nullok account required pam_pwdb.so password required pam_cracklib.so retry=3 password required pam_pwdb.so use_authtok nullok

使用的 pam_pwdb.so ,但是系統上沒有這個檔案 O_O 。仔細一查,奇了, Mandriva 2008.0 竟然真的找不到這個檔案。 -_-

知道原因,就好辦。仔細查了一下, Mandriva 2008.0 Free 的 pam 套件裡,真的沒提供 pam_pwdb.so 。網路上看到似乎 pam_pwdb.so 是 redhat 維護的,我沒去找 source code ,以後還要升級啊。而 pam_pwdb.so 與 pam_unix.so 是相同功能的模組,於是解決方法就很簡單了:

cd /lib/security ln -s pam_unix.so pam_pwdb.so

建立一個 soft link ,用 pam_unix.so 來提供 pam_pwdb.so 的功能,搞定!

V-webmail change password

順便記一下,網路上找到的文件,關於 pam 各模組的介紹,蠻詳細的:

沒有留言:

張貼留言