postfixadminでdovecot:sshaを指定するとログインできなくなる
postfixadminの暗号化設定がdovecotを利用できるようなのでsshaを指定してみた。
[config.inc.php]
$CONF['encrypt'] = 'dovecot:ssha';
するとpostfixaadminにログインできなくなった。何でだろーと思って、DBの中身を見てもちゃんとssha形式でパスワードは保存されてるみたい。
仕方ないのでログイン処理のソースを追ったら、パスワードを確認する処理に問題があった。どうやらWebからPOSTされたパスワードをssha処理してそのハッシュ結果とDBに保存されていたハッシュ結果を比較してるみたい。というかsshaとか関係なく、そういう共通処理になってた。
sshaの場合は同じバスワードでも生成されるハッシュ文字列は毎回違うのでこのやり方だとハッシュ文字列が合わないので認証が通らない。
ssha使うのやめようかなーとも思ったけど、別に改造はそんなに難しくなかったのでパッチを作った。
postfixadmin_ssha.patch.gz
これを適用。
cd postfixadmin-2.3/
patch < ../postfixadmin_ssha.patch
これで無事にdovecot:sshaでも無事にpostfixadminにログインできるようになった。
あとちょっと疑問。
postfixadmin内部ではdovecotpwコマンドを使ってハッシュを生成してるんだけど、何でその出力結果から"{xxxx}"ってアルゴリズムの指定部分を削除してるんだろ?sshaの場合、"{SSHA}"がハッシュの先頭につく。
なんか意図があるのかな?謎。
ちなみにそのせいでdovecotのMySQL設定もちょっとハマッた。まぁ動いたからいいんだけどね。
[2010/05/13追記]
postfixadminの開発元でも同じ報告があってパッチが用意されてた。
Dovecot SSHA support
次リリースするバージョンあたりで実装されるのかな。
あとパッチの中を見ると疑問だった"{xxxx}"が消されるロジックがコメントアウトされてる。これもそのまま実装されるんだったら今度バージョンアップするとき一緒にdovecotの設定修正もやらないと駄目だな。覚えとこ。
作成日:2010/05/20 03:00:43