Dovecotのユーザ情報をMySQLで管理していて、quotaの設定を追加をしようとおもったら、doveadmでquota情報の一覧を表示するときに次のようなエラーが表示された。
# doveadm quota get -A -------------------------------------------------- doveadm(root): Error: User listing returned failure doveadm: Error: Failed to iterate through some users Username Quota name Type Value Limit % --------------------------------------------------
個別のユーザをuオプションで指定した場合はちゃんと表示される。
# doveadm quota get -u user1@example.com -------------------------------------------------- Quota name Type Value Limit % user STORAGE 92315 10000000 0 user MESSAGE 3426 - 0 --------------------------------------------------
エラー文にも書かれているように、Aオプションでユーザの一覧が出力されないのは、ユーザー情報を走査するための情報がDovecotの設定に書かれていないからだった。
次はDovecotが使用するMySQLの情報を/etc/dovecot/dovecot-sql.conf.extに書いていて、postfixadminのテーブル構造を使用している場合。
dovecot-sql.conf.extにiterate_queryの行を追加して、ユーザ情報の一覧が取得できるSQL文を設定してあげればよい。あとはdovecotをreloadしておく。
詳しくはマニュアル参照のこと。
AuthDatabase/SQL – Dovecot Wiki
quotaサブコマンドに限らずAオプションを使うときはiterate_queryの設定が必要なようだ。
vi /etc/dovecot/dovecot-sql.conf.ext -------------------------------------------------- (最後の行にでも追加する) iterate_query = SELECT username FROM mailbox -------------------------------------------------- /etc/init.d/dovecot reload
これで各ユーザのquota情報一覧が表示されるようになった。
# doveadm quota get -A -------------------------------------------------- Username Quota name Type Value Limit % user1@example.com user STORAGE 92315 10000000 0 user1@example.com user MESSAGE 3426 - 0 user2@example.com user STORAGE 376930 - 0 user2@example.com user MESSAGE 6119 - 0 user3@example.com user STORAGE 59609 - 0 user3@example.com user MESSAGE 14815 - 0 ...... --------------------------------------------------