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