qmail+vpopmailからパスワード暗号化文字列ごと移植したpostfix+dovecotベースの統合環境iredmail環境がある。
iredmailにはExchange互換サーバのSOGoもあるので、そちらでログインしようとしたらエラーになる。
roundcubeからだとログインができるし、dovecotを使うPOP3/IMAPアクセスでも問題無い。
/var/log/sogo/sogo.log へのエラーは下記の様になっていた。
Jul 04 13:15:04 sogod [9257]: SOGoRootPage Login from 'クライアントIPアドレス' for user 'ユーザ名@ドメイン名' might not have worked - password policy: 65535 grace: -1 expire: -1 bound: 0
iredmailのフォーラムに「Can’t configure password policy when using SOGo」といのがあり、sogo.confに「passwordPolicy = YES;」を追加すればいいじゃん?とあったのでやってみたが、変化はなし。
SOGo側のbug tracking system「 0003899: SQL authentication 」にてヒントを発見。
暗号化文字列の指定の問題のようだ。
今回、sogo.confは下記の様に「userPasswordAlgorithm = ssha512」となっており、パスワード暗号化文字列がssha512フォーマットである、ということになっている。
SOGoUserSources = ( { type = sql; id = users; viewURL = "mysql://sogo:~@127.0.0.1:3306/sogo/users"; canAuthenticate = YES; // The algorithm used for password encryption when changing // passwords without Password Policies enabled. // Possible values are: plain, crypt, md5-crypt, ssha, ssha512. userPasswordAlgorithm = ssha512; prependPasswordScheme = YES; // Use `vmail.mailbox` as per-domain address book. isAddressBook = YES; displayName = "Domain Address Book"; SOGoEnableDomainBasedUID = YES; DomainFieldName = "domain"; },
しかし、今回、vpopmail時代の文字列「$1$5ulpxxxx$VS0xHxxKxMPBSIPQlXDXC/」という書式、つまりはmd5-cryptフォーマットを流用しているので認証できなかった、ということになる。
メインとなるiredmail側は新しくパスワードを設定した場合はssha512、移植したものはmd5-cryptという運用にしている。
ただ、postfix,dovecot,roundcubeの運用に関しては、ssha512でもmd5-cryptでも問題無くログインできている。
それに対してSOGo側は「SOGO Installation and Configuration Guide」を見ると userPasswordAlgorithm には1つの値しか指定はできないようだ。
セキュリティを考えると全体をmd5-cryptに下げる、という選択肢はとれないので、SOGoを使いたい場合は、パスワードを再設定する、ということになる。
パスワードを再設定すると以下のログとなる。
Jul 04 13:50:43 sogod [1094]: SOGoRootPage successful login from 'クライアントIPアドレス' for user 'ユーザ名@ドメイン名' - expire = -1 grace = -1