doveadm quota getでユーザ一覧が出力されない (MySQL使用時)

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
......
--------------------------------------------------

関連記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です