ログの統計情報ツール qmailanalog
Last modified: Sun May 7 15:51:33 2000
qmailanalog は qmail が出力するログから統計情報を求めるためのツールです。
qmailanalog のインストール
Section titled “qmailanalog のインストール”インストールは次のとおりです。
-
次のサイトからqmailanalog-0.70.tar.gzを入手します。
-
それぞれファイルを展開します。
Terminal window $ gzip -dc qmailanalog-0.70.tar.gz | tar xvf - -
make してインストールします。標準では /usr/local/qmailanalog にインストールされます。
Terminal window $ cd qmailanalog-0.70$ make$ su# make setup check -
ezmlm を使っていると envelope sender の情報が長く、メッセージ毎にシーケンス番号が異なるので、そのままでは個別にそれぞれ出力され分析結果が見にくくなってしまいます。そこで senders を修正してみます。(必要に応じて行ってください)
/^m/ {sender = $10"/"$8の次に行に
sub("-return-.*=.*@","@",sender)を挿入します。また、
/^d/ {sender = $10"/"$7の次の行にも
sub("-return-.*=.*@","@",sender)を挿入します。
qmailanalog の使い方(splogger を使う場合)
Section titled “qmailanalog の使い方(splogger を使う場合)”-
/etc/syslog.conf を見て、maillog が単独で出力されるか確認します。以下は syslog.conf の例です。なおこの例では、パケットフィルタリングのログを KERN レベルで吐き出し、tcpserver のログを AUTH レベルで吐き出すため、maillog と同様にそれぞれファイルを独立させています。man 3 syslog あるいは syslog.h を見るといいです。
*.=info;*.=notice;kern,mail,auth.none /var/log/messages*.=debug;kern,mail,auth.none /var/log/debug*.warn;kern,mail,auth.none /var/log/syslog*.crit /var/log/criticalkern.* /var/log/kernelmail.* /var/log/maillogauth.* /var/log/authlog -
maillog から日時、ホスト名、“qmail:“を取り除いて、matchup に通してログを整理します。以下はこれを処理するスクリプトの一部です。
#!/bin/sh#PATH=/usr/local/qmailanalog/bin:/var/qmail/binMAILLOG="/var/log/maillog"QMAILLOG="$HOME/tmp/qmail.$$"/usr/bin/awk '{$1="";$2="";$3="";$4="";$5="";print}' \< $MAILLOG | matchup > $QMAILLOG -
整理されたログを標準入力として qmailanalog の各スクリプトに通して統計結果を得ます。以下のスクリプトは先のスクリプトにつなげて使い、ログの統計情報をpostmaster にメールするものです。cron で毎日1回動かすといいでしょう。
Terminal window (echo "To: postmaster@foo.or.jp"echo "From: postmaster@foo.or.jp"echo "Subject: maillog"echo ""zoverall < $QMAILLOGzfailures < $QMAILLOGzdeferrals < $QMAILLOGzrecipients < $QMAILLOGzsenders < $QMAILLOG )| qmail-inject -f postmaster@foo.or.jp/bin/rm -f $QMAILLOG
qmailanalog の使い方(multilog を使う場合)
Section titled “qmailanalog の使い方(multilog を使う場合)”splogger は syslogd を経由してログを出力するため、syslogd の性能上、すべてのログを確実に残せる保証はありません。そこで、DJB 氏による daemontools というパッケージに含まれる multilog を用いた例を示します。
-
daemontools をインストールして、multilog の設定をします。 詳細は daemontools HOW-TO をご覧下さい。
-
/service/qmail にあるログから統計を取りたい時間のみ取り出し、matchup に通 してログを整理します。以下はこれを処理するスクリプトの一部です。logcollector は multilog が出力するログから必要な時間だけを取り出すスクリプトだと思ってください。
#!/bin/sh#PATH="/usr/local/qmailanalog/bin:/var/qmail/bin:$PATH"export PATHQMAILLOG="/service/qmail/log/qmail.$$"/usr/local/bin/logcollector /service/qmail/log 1 | matchup > $QMAILLOG -
整理されたログを標準入力として qmailanalog の各スクリプトに通して統計結果を得ます。以下のスクリプトは先のスクリプトにつなげて使い、ログの統計情報をpostmaster にメールするものです。qmaill の UID として cron で毎日1回動かすといいでしょう。
Terminal window (echo "To: postmaster@foo.or.jp"echo "From: postmaster@foo.or.jp"echo "Subject: maillog"echo ""zoverall < $QMAILLOGzfailures < $QMAILLOGzdeferrals < $QMAILLOGzrecipients < $QMAILLOGzsenders < $QMAILLOG )| qmail-inject -f postmaster@foo.or.jp/bin/rm -f $QMAILLOG