MRTGでpopアスセス数と受信通数の表示(その2)

前回、我が家のメインサーバーにあるメールサーバーに対して、メーラーでどの程度アクセスし、何通のメールを受信しているかをMRTGで表示させるツールを作ろうとおもったが、汎用的なツールを作るには、かなり労力が要りそうなので、前提条件を絞った本当にローカルなツールを作ってみた。

まず前提条件として、メーラーの設定で、サーバーにはメールを残さないよう設定すること。

こうすることで、

Jul 29 20:51:32 royalblue popper[28072]: Stats: user 1 26182 47 531608

の様に出力されるqpopperのログの中の、「user」の後に続く、削除した通数をカウントすることで、受信した通数に置き換えることができる(と思う)。

そうすることで、以下の様なperlスクリプトでアクセス数と受信通数とを取得できる。

$access = 0;
$receive= 0;
open(FILE,"/var/log/POP.log");
while () {
    if(/Stats/){
        $access++;
        @w1 = split(':',$_);
        @w2 = split(' ',$w1[4]);
        $receive += $w2[1];
    }
}
close(FILE);

qpopperのログを順次読み込み、ステータスが「Stats」の行なら正常にアクセスできたログだと判断し、「:」で行を分解。

必要なのは、ユーザ名から始まる文字列の2つ目の数字なので、「:」で区切った5番目の文字列を、更に空白で分割し、2番目の文字列、すなわち、削除した通数を取り出すことにした。

結果として、$accessにはメーラーがメールを取りに行った回数が、$receiveには読み取ったメール通数得られた事になる。

このロジックを使って、実際にMRTGで表示可能なスクリプトの作成を行ってみる。

結果は後日・・・・