dovecotの認証にmysqlを使った時、ログインのクエリを1つにする

メールサーバ立てるぞ。

環境

dovecot --version 2.2.18

dovecotというimapサーバの認証にmysqlを使う場合、そのままだとpasswordとユーザ名を取得するクエリを別々で投げるんだけど、設定すれば1クエリで押さまるらしい。
http://www.dovecot.jp/doc/dovecot-sql-example.conf, http://www.dovecot.jp/wiki/UserDatabase.Prefetch.txt にある翻訳されてる情報は1系だけどは2系とほとんど同じみたい。

http://wiki2.dovecot.org/UserDatabase/Prefetch を見て

/etc/dovecot/conf.d/auth-sql.conf.ext

userdb {
  driver = sql
  args = /etc/dovecot/dovecot-sql.conf.ext
}

をアンコメントして,
password_query のgid, home, uidというcolun_nameにuserfhdb_というプレフィックスをつけておしまし。

before

SELECT name as user, domain, password, CONCAT("/home/virtual/", dir) as home, '5000' as uid, '5000' as gid FROM anonymous_mailboxes WHERE name = 'koji' AND domain = 'hoge.com'
SELECT CONCAT("/home/virtual/", dir) as home, '5000' as uid, '5000' as gid FROM anonymous_mailboxes WHERE name = 'koji' AND domain = 'hoge.com'

after

SELECT name as user, domain, password, CONCAT("/home/virtual/", dir) as userdb_home, '5000' as userdb_uid, '5000' as userdb_gid FROM anonymous_mailboxes WHERE name = 'koji' AND domain = 'hoge.com'

になりました。

次はクォーターあたりやります。