qmailanalogでできること

  • zdeferrals:deferrals(配送が先延ばし)されたときの理由の集計
  • zddist:メール遅送の集計
  • zfailures:失敗メールの確認
  • zoverall:基本的で最も重要な統計
  • zrecipients:受け取り先の統計
  • zrhosts:相手のホストの集計
  • zrxdelay:受け取り先の統計(遅れ具合でソート)
  • zsenders:差し出し元の集計
  • zsuccesses:成功時の理由の集計
  • zsuids:差し出し元のUID集計

qmailanalogにはmultilogから特定の期間を取り出して解析する機能はついてないので別途以下のような手順を踏む必要がある

  1. /var/log/qmail/ディレクトリ下のログファイルからqlogselectコマンドで指定のログを抽出する
  2. 抽出したログをmatchupで整形し、一時ファイルに保存
  3. 一時保存したファイルを各スクリプトで必要な情報を収集する
  4. メールで管理者に報告

qmailanalogインストール

http://cr.yp.to/qmailanalog.html から qmailanalog-0.70.tar.gz をゲット

# tar xvfz qmailanalog-0.70.tar.gz
# cd qmailanalog-0.70
# make
# make setup check 

/usr/local/qmailanalog にインストールされる

qlogselectの準備

# wget http://www.qcc.sk.ca/~charlesc/software/misc/qlogselect
# chmod +x qlogselect
# mv qlogselect /usr/local/qmailanalog/bin 

実行スクリプトの作成

tai64n2tai コマンドがないので http://untroubled.org/qlogtools/ から qlogtools-3.1.tar.gz をゲットする

# tar xvzf qlogtools-3.1.tar.gz
# cd qlogtools-3.1
# make
# mv tai64n2tai /usr/local/qmailanalog/bin
# cd ..
# rm -fr qlogtools-3.1*
# vi /usr/local/qmailanalog/bin/analog.sh
#!/bin/sh
MAILTO=mailto@example.com
MAILFROM=mailfrom@example.com
export PATH="$PATH:/usr/local/qmailanalog/bin:/var/qmail/bin"
tmpdir=/tmp/qmail-cron.$$.$RANDOM

mkdir $tmpdir
pushd $tmpdir >/dev/null

s_year=`date -d '1 day ago' +%Y`
s_month=`date -d '1 day ago' +%m`
s_day=`date -d '1 day ago' +%d`
e_year=`date +%Y`
e_month=`date +%m`
e_day=`date +%d`

start="$s_year-$s_month-$s_day"
end="$e_year-$e_month-$e_day"

LOGDIR=/var/log/qmail

cat "$LOGDIR"/{"@",cur}* \
| tai64n2tai \
| qlogselect start $start end $end \
| matchup >logfile 5>/dev/null

for ana in zoverall zddist zdeferrals zfailures zrhosts zsuids zrxdelay; do
echo "" >>result
echo "-----------Result of $ana------------" >>result
$ana 2>/dev/null <logfile >>result
done
rm -f logfile

(echo "To: $MAILTO"
echo "From: $MAILFROM"
echo "Subject: mailstats for $s_year-$s_month-$s_day"
echo ""
cat result )| qmail-inject -f $MAILFROM
rm -f result
popd >/dev/null
rm -rf $tmpdir

2日間を対象にするなら「2 days ago」、1週間なら「1 week ago」

# chmod +x /usr/local/qmailanalog/bin/analog.sh
# /usr/local/qmailanalog/bin/analog.sh

でメールが MAILTO 宛に届けばOK

crontabで実行するには

# crontab -e
30 4 * * * /usr/local/qmailanalog/bin/analog.sh 2>/dev/null

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2005-11-21 (月) 18:26:18 (5023d)