ログファイルは大変膨大なためログを見て異常を発見することはかなり骨の折 れる作業である.そこでメールサーバではログファイルに書かれてある内容を 整理してもう少し見やすい形にするために qmailanalog というログ統計処理 ツールを用いる.
slink では一週間分のメールログが /var/log/mail.log.0 に書き込まれるのだが, potato からはメールログが 2MB を越える場合,一日毎にログファイルが mail.log.1,mail.log.2...のように作成される.したがって一週間分のメールログを 作成させるためには 2MB の制限を外さなければならない.作成されるログファイルを 表示する Perl スクリプト /usr/sbin/syslogd-listfiles には以下のように オプションが書いてある(赤字で示してあるのが 2MB の制限を外すオプション).
Usage: syslogd-listfilesOptions: -f file specifies another syslog.conf file -a | --all list all files (including news) --auth list all files containing auth. --ignore-size don't rotate files which got too large (default: 2MB) --news include news logfiles, too -w | --weekly use weekly pattern instead of daily
一日毎にログファイルを作成するのは /etc/cron.daily/sysklogd である, この中で syslogd-listfiles が呼び出されている./etc/cron.daily/sysklogd の以下の部分を修正してオプションを追加する.
cd /var/log
for LOG in `syslogd-listfiles --ignore-size`
このようにすることで一週間分のメールログが一 つのファイルに書き込まれる.
qmailanalog-0.70.tar.gz をhttp://www.ne.jp/asahi/cyber/taki/djb/qmailanalog から 取得し, それを展開する.
$ gzip -dc qmailanalog-0.70.tar.gz | tar xvf -
$ cd qmailanalog-0.70 $ make $ su or sudo -s # make setup check |
文献1 によると"メーリングリストプログラム ezmlm を使用している場合, 分析結果が長くなってしまうため, senders ファイルを編集すること"とある.
/usr/local/qmailanalog/bin/senders を以下の行を追加する.
#!/bin/sh
# WARNING: This file was auto-generated. Do not edit!
awk '
/^m/ {
sender = $10"/"$8
sub("-return-.*=.*@","@",sender)
...
...
/^d/ {
sender = $10"/"$7
sub("-return-.*=.*@","@",sender)
/etc/syslog.conf をみて mail.log が単独で出力されるかを確かめる.
毎週 1 回 解析されたログファイルをメールで管理者に流すようにする.
qmailanalog にログファイルを解析させるスクリプト /usr/local/sbin/mail.log-analog を編集し, crontab で 毎週日曜日の 07:30 に実行させる.
実行許可(755)を与えるのを忘れないこと。
# crontab -e
エディタが立ち上がって以下の内容を一行で書き込む. もしエディタが上がらない場合は環境変数 EDITOR を emacs , vi などで指定する ($export EDITOR=vi(emacs)).
30 7 * * 7 ( echo "To: postmaster@ep.sci.hokudai.ac.jp" ; echo "From: mail@ep.sci.hokudai.ac.jp" ; echo "Subject: mail.log" ; echo "" ; /usr/local/sbin/mail.log-analog ) | /var/qmail/bin/qmail-inject -f epmail@ep.sci.hokudai.ac.jp
(このページの最後に載せた) mail.log-analog は http://www.ne.jp/asahi/cyber/taki/djb/qmailanalog/qmailanalog.html に書かれたスクリプトの一部を書き換えて EP メールサーバで使用しているも のです. 本 EP サーバでのログ解析は全体の配送量などを知るのみとしてエラ ーメッセージや各構成員へのメール配送数など細かい解析は自動的に送らない とした(下のスクリプトでコメントアウトした部分を実際に実行するとサイズ の大きなメールとなって結局管理者が読み飛ばしてしまうから).
#!/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.$$"
QMAILLOG2="/tmp/qmail.$$2"
/usr/bin/awk '{$1="";$2="";$3="";$4="";$5="";print}'\
< $MAILLOG | matchup > $QMAILLOG 5 > QMAILLOG2
zoverall < $QMAILLOG
#zfailures < $QMAILLOG
#zdeferrals < $QMAILLOG
#zrecipients < $QMAILLOG
#/usr/bin/perl -pe 's/-return-.*=.*@/@/g' < $QMAILLOG | zsenders)
/bin/rm -f $QMAILLOG
/bin/rm -f $QMAILLOG2
/etc/manpath.config に以下を書き加える。
#MANDATORY_MANPATH /usr/src/pvm3/man ... ... MANDATORY_MANPATH /usr/local/man MANDATORY_MANPATH /var/qmail/man MANDATORY_MANPATH /usr/local/qmailanalog/man ... # *PATH* *MANPATH* ... ... ... MANPATH_MAP /opt/sbin /opt/man MANPATH_MAP /var/qmail/bin /var/qmail/man MANPATH_MAP /usr/local/qmailanalog/man /usr/local/qmailanalog/man ... # *PATH* *CATPATH* ... ... ... MANDB_MAP /opt/man /var/cache/man/opt MANDB_MAP /var/qmail/man /var/qmail/man MANDB_MAP /usr/local/qmailanalog/man /usr/local/qmailanalog/man
最終更新日: 2007/05/30(兼成 智久) | Copyright © 2007 epcore |