メール関係のログを解析する
ログ監視ツール "qmailanalog" を用いたサーバ管理
(編集中)

2000/05/29 村田泰洋


はじめに

ログファイルは大変膨大なためログを見て異常を発見することはかなり骨の折 れる作業である.そこでメールサーバではログファイルに書かれてある内容を 整理してもう少し見やすい形にするために qmailanalog というログ統計処理 ツールを用いる.

qmailanalog のインストール

■qmailanalog-0.70.tar.gz を以下から入手する

http://www.ne.jp/asahi/cyber/taki/djb/qmailanalog/qmailanalog-0.70.tar.gz

■ それぞれファイルを展開する

$ gzip -dc qmailanalog-0.70.tar.gz | tar xvf -

■ インストールする

$ cd qmailanalog-0.70 $ make $ su or sudo -s # make setup check

必要なファイルの編集

■インストールされた /usr/local/qmailanalog の下の senders を書き換え る(メーリングリストプログラム ezmlm を使用している場合)

/usr/local/qmailanalog/senders の /^m/ { sender = $10"/"$8 の次に行に sub("-return-.*=.*@","@",sender) を挿入します.また, /^d/ { sender = $10"/"$7 の次の行にも sub("-return-.*=.*@","@",sender) を挿入します.

■ /etc/syslog.conf をみて mail.log が単独で出力されるかを確かめる

■ 毎週 1 回 解析されたログファイルをメールで管理者に流すようにする

qmailanalog によってログファイルを解析するようなスクリプト(mail.log-ananlog) に書く. そして /root/mail.log-analog を crontab で毎週日曜日の 07:30 に実行させる.
# crontab -e
エディタが立ち上がって以下の内容を書き込む(一行で). もしエディタが上がらない場合は環境変数 EDITOR を emacs , vi などで 指定してやる($export EDITOR=vi(emacs)).

===================================================================
30 7 * * 7      ( echo "To: postmaster@ep.sci.hokudai.ac.jp" ; echo \ 
"From: blue@ep.sci.hokudai.ac.jp" ; echo "Subject: mail.log" ; echo \
"" ; /root/bin/mail.log-analog ) | /var/qmail/bin/qmail-inject -f \
blue@ep.sci.hokudai.ac.jp 
===================================================================

(このページの最後に載せた) mail.log-analog は http://www.ne.jp/asahi/cyber/taki/djb/qmailanalog/qmailanalog.html に書かれたスクリプトの一部を書き換えて専攻メールサーバで使用しているも のです. 本専攻サーバでのログ解析は全体の配送量などを知るのみとしてエラ ーメッセージや各構成員へのメール配送数など細かい解析は自動的に送らない とした(下のスクリプトでコメントアウトした部分を実際に実行するとサイズ の大きなメールとなって結局管理者が読み飛ばしてしまうから).

===========================================================================
#!/bin/sh
#
# taken from http://www.ne.jp/asahi/cyber/taki/server/qmail/qmailanalog.html
# modified by Kyoma TAK and Yasuhiro C. Murata 2000/03/17
#                                              2000/03/18
#
PATH=/usr/local/qmailanalog/bin:/var/qmail/bin:/usr/bin
MAILLOG="/var/log/mail.log.0"
QMAILLOG="/tmp/qmail.$$"
/usr/bin/awk '{$1="";$2="";$3="";$4="";$5="";print}' \
< $MAILLOG | matchup > $QMAILLOG
(zoverall < $QMAILLOG
#zfailures < $QMAILLOG
#zdeferrals < $QMAILLOG
#zrecipients < $QMAILLOG
#/usr/bin/perl -pe 's/-return-.*=.*@/@/g' < $QMAILLOG | zsenders \
)
/bin/rm -f $QMAILLOG
==========================================================================