これでも一応メールサーバの管理とかしているわけでして。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情報の全ユーザ毎一覧を出したいな・・・と思っている人がおられたら、参考になれば嬉しいな。はたしてそんな人いるのか??