y-matsui::weblog

電子楽器、音楽、コンピュータ、プログラミング、雑感。面倒くさいオヤジの独り言

メールログの可視化:qmailのログ加工

qmailのログ可視化に対応するため、service/qmail/log/main/の下のログを確認してみる。
ログの名前はこんな感じ→@40000000436ad4762a58eb64.s
中を見ると、早速独自路線爆発!。
タイムスタンプがTAI64N形式と呼ばれる、原子時
@ITの記事ここを見ながら、deamontoolのtai64nlocalコマンドでタイムスタンプ形式を変換する。
■コマンド
# cd /command/
# tai64nlocal < "TAI64N形式で記録されたログファイル" >"変換後のログファイル"

コンバートされたログを確認。OK。
しかし、1年分のログで1.7GBもあるぞ(*_*;)。ダウンロードも改行コード変換もかなり重労働だ。
→改行コードについては、FTPダウンロードと同時にコンバートできるからOK。
■変換後のqmailログを見てみる
2005-11-03 13:45:32.726008500 new msg 486760
2005-11-03 13:45:32.726010500 info msg 486760: bytes 1830 from qp 27903 uid 100
2005-11-03 13:45:32.727535500 starting delivery 96991: msg 486760 to local host.domain.jp-person@domain.jp

msg +スペース+******というのがメッセージIDらしきもので、from + スペース,to+スペース+local+仮想サイト名+"-"+アドレスと別の行に書かれている。localがあるってことは、当然remoteもあるわけで、この場合は、これに続くアドレス名に仮想サイト名は付かない。つまり、”-”を区切り文字として使えないわけだ。(localとremoteで場合分け?)いろんなパターンがありそうで嫌なのだが、正規表現で何とかなるとたかを括る。

慣れない正規表現にうろたえながら6時間(T_T;)
とうとう、qmail対応が完了した。
結局local to,remote to,fromで場合分けするハメになってしまった。msg-idが何桁になるか解らんが、とりあえず9桁にしておいた。
■処理結果
8ファイル8.15MBのログサイズが、1.74MBの中間ファイルサイズになり、アドレスレコード数638、ノードレコード2680、送受信されたメールトラフィックは1万1000通。
上記で620秒である。1MBあたり約80秒という結果が出た。
Windows2000Pentium?-700MHz、メモリ384MBのマシンで実験

1.7GBのログ(1年分)と言えば、今回実験した200倍。→124000秒って・・・・36時間!わお
5人日ですか。