日々之迷歩

世の中わからんことだらけ

ITが複雑で難しくなっていく様に翻弄される日々です。微力ながら共著させていただいた「シェル・ワンライナー160本ノック」をよろしくお願い申し上げます。

Cyrus-IMAPdのQUOTA情報一覧を出す

これでも一応メールサーバの管理とかしているわけでして。Webメール用にはPOPサーバじゃなくてIMAPサーバ使うよね?え?POPサーバとかもう使わない?え?そもそもメールサーバ自前で準備しない??まあそんな世の中だな・・・

IMAPサーバと言えば、普通はDovecotとかCourier-IMAPdとかかな?だが使っているのは、おそらくマイナーと思われるCyrus-IMAPd。メールボックスも独自形式で、ユーザやメールボックスの管理も独自。独自独自。ああ独自・・・

cyradmっていう対話型コマンドでメールボックスの管理するのだが、これがシェルスクリプトから何とも使いにくい。素直にフィルタとして動いてくれて欲しいのだがね。

で、メールボックスはQUOTAで利用量制限をしているのだが、この一覧表示をさせるのにcyradmコマンドでやろうとすると、意外と手こずるのであった。ネット上を見ても案外みんな手こずっている模様??

なんとかならんのかいな??とメール管理のフォルダをのぞいてたら、QUOTA情報はユーザ毎にテキストファイルが出来てて、その中に利用量と制限値が数字で書かれているだけのようだ。これならシェル芸で片付くんじゃね??

CentOSでCyrus-IMAPの管理ディレクトリは/var/lib/imap。QUOTA情報は/var/lib/imap/quotaのディレクトリ内。こんな感じでファイルがある。

# find /var/lib/imap/quota/
/var/lib/imap/quota/
/var/lib/imap/quota/a
/var/lib/imap/quota/a/user.auser01
/var/lib/imap/quota/a/user.auser02
/var/lib/imap/quota/a/user.auser03
/var/lib/imap/quota/b
/var/lib/imap/quota/b/user.buser04
/var/lib/imap/quota/b/user.buser05

ファイルの中身はこちら、1行目が利用量のバイト数。2行目が利用量制限のバイト数。

# cat /var/lib/imap/quota/a/user.auser01
6964
61440

# cat /var/lib/imap/quota/b/user.buser04
40140
61440

ということで、Let'sシェル芸!環境はCentOS7。Open usp Tukubaiを使っているので、入ってない方は要インストール。

# find /var/lib/imap/quota -type f |
 xargs grep "" |
 tr ':' ' ' |
 cut -c 28- |
 yarr num=1 |
 awk '{print $1,$2/1024"MB/"$3/1024"MB",100*$2/$3"%"}' |
 keta
auser01 6.80078MB/60MB 11.3346%
auser02 39.1992MB/60MB  65.332%
auser03       0MB/60MB       0%
buser04   49.4238/60MB  82.373%
buser05   135.723/60MB 226.204%

あとはこのワンライナーを管理スクリプトに貼り付ければオケ。もしCyrus-IMAPdを使っていて、QUOTA情報の全ユーザ毎一覧を出したいな・・・と思っている人がおられたら、参考になれば嬉しいな。はたしてそんな人いるのか??