メールサーバーアクセスログ解析(AWStats)

最終更新日: 2019.06.17

■概要

AWStatsを利用してメールサーバー(sendmailPostfixqmail)のアクセスログを解析し、メールサーバーへのアクセス統計をWebブラウザから参照できるようにする。⇒サンプル

※メールサーバー(sendmailPostfixqmail)、WebサーバーAWStats導入済であること

■AWStats設定

[root@centos ~]# cp /etc/awstats/awstats.model.conf /etc/awstats/awstats.mail.conf ← 設定ファイルをサンプルよりコピー

[root@centos ~]# vi /etc/awstats/awstats.mail.conf ← 設定ファイル編集
LogFile="perl /usr/bin/maillogconvert.pl standard < /var/log/maillog |" ← 解析対象ログファイルにメールサーバーログファイルを指定

LogType=M ← ログ種別にメール(M)を指定

LogFormat="%time2 %email %email_r %host %host_r %method %url %code %bytesd" ← メールサーバーのログフォーマットを指定

SiteDomain="centossrv.com" ← メールサーバー名を指定

メールサーバーログ解析に不要な下記項目を無効化
LevelForBrowsersDetection=0
LevelForOSDetection=0
LevelForRefererAnalyze=0
LevelForRobotsDetection=0
LevelForSearchEnginesDetection=0
LevelForKeywordsDetection=0
LevelForFileTypesDetection=0
LevelForWormsDetection=0

メールサーバーログ解析に合わせて各表示項目を変更
ShowSummary=HB
ShowMonthStats=HB
ShowDaysOfMonthStats=HB
ShowDaysOfWeekStats=HB
ShowHoursStats=HB
ShowDomainsStats=0
ShowHostsStats=HBL
ShowAuthenticatedUsers=0
ShowRobotsStats=0
ShowWormsStats=0
ShowEMailSenders=HBML
ShowEMailReceivers=HBML
ShowSessionsStats=0
ShowPagesStats=0
ShowFileTypesStats=0
ShowFileSizesStats=0
ShowOSStats=0
ShowBrowsersStats=0
ShowScreenSizeStats=0
ShowOriginStats=0
ShowKeyphrasesStats=0
ShowKeywordsStats=0
ShowMiscStats=0
ShowHTTPErrorsStats=0
ShowSMTPErrorsStats=1
ShowClusterStats=0

■AWStatsデータベース作成

(1)AWStatsデータベース初期作成
メールサーバーのログファイルを過去分も含めて全てAWStatsのデータベースに取り込む
[root@centos ~]# vi awstatsinit.sh ← AWStatsデータベース初期作成スクリプト作成
#!/bin/bash

tmplog1=`mktemp`
tmplog2=`mktemp`
for log in `ls /var/log/maillog*|sort -r`
do
    cat $log >> $tmplog1
done
/usr/bin/maillogconvert.pl standard < $tmplog1 > $tmplog2
/var/www/awstats/awstats.pl -config=mail -update -logfile=$tmplog2
rm -f $tmplog1 $tmplog2

[root@centos ~]# sh awstatsinit.sh ← AWStatsデータベース初期作成スクリプト実行
Update for config "/etc/awstats/awstats.mail.conf"
With data in log file "/tmp/tmp.LSHEN24644"...
Phase 1 : First bypass old records, searching new record...
Searching new records from beginning of log file...
Jumped lines in file: 0
Parsed lines in file: 236
 Found 0 dropped records,
 Found 0 corrupted records,
 Found 236 old records,
 Found 0 new qualified records.

[root@centos ~]# rm -f awstatsinit.sh ← AWStatsデータベース初期作成スクリプト削除
※以後のAWStatsデータベースの更新は/etc/cron.hourly/00awstatsにより1時間おきに自動実行される

(2)メールサーバーログロテート設定
メールサーバーログファイル切替え時、AWStatsのデータベースに取り込んでから切替えを行うようにする
[root@centos ~]# vi /etc/logrotate.d/syslog ← syslogログロテート設定ファイル編集
/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron {
    sharedscripts
    −−−−追加(ここから)−−−−
    prerotate
        /var/www/awstats/awstats.pl -config=mail -update > /dev/null
    endscript
    −−−−追加(ここまで)−−−−
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}

■AWStats確認

http://Webサーバー名/awstats/awstats.pl?config=mailへアクセスしてアクセス統計ページが表示されることを確認

■アクセス統計ページHTML版の作成

万が一、AWStatsのデータベースが失われた場合、アクセス統計が見れなくなってしまうため、アクセス統計ページをHTMLで作成するようにする。

(1)アクセス統計ページHTML版格納ディレクトリ作成
[root@centos ~]# mkdir /var/www/awstatsreport/mail ← HTML版格納ディレクトリ作成

(2)アクセス統計ページHTML版作成
[root@centos ~]# vi awstatsmailreport.sh ← アクセス統計ページHTML版作成スクリプト作成
#!/bin/bash

dir=$1

reportbuild() {
    /usr/bin/awstats_buildstaticpages.pl -awstatsprog="/var/www/awstats/awstats.pl"\
    -config=mail -update -lang=jp -dir=$dir \
    -year=$YEAR -month=$MONTH -builddate=$YEAR$MONTH
    if [ "$YEAR$MONTH" = $(date +%Y%m) ]; then
        mv $dir/awstats.mail.$YEAR$MONTH.html $dir/index.html
    else
        mv $dir/awstats.mail.$YEAR$MONTH.html $dir/$YEAR$MONTH.html
    fi
}

ls $dir/* > /dev/null 2>&1
if [ $? -eq 0 ]; then
    YEAR=`date --date '1 days ago' +%Y`
    MONTH=`date --date '1 days ago' +%m`
    reportbuild
else
    for log in `ls /var/www/awstats/awstats*.mail.txt`
    do
        YEAR=`echo $log|cut -d / -f 5|cut -d . -f 1|sed -e 's/awstats..\([^ ]*\)/\1/p' -e d`
        MONTH=`echo $log|cut -d / -f 5|cut -d . -f 1|sed -e 's/awstats\([^ ]*\)..../\1/p' -e d`
        reportbuild
    done
fi

[root@centos ~]# chmod 700 awstatsmailreport.sh ← アクセス統計ページHTML版作成スクリプトへ実行権限付加

[root@centos ~]# ./awstatsmailreport.sh /var/www/awstatsreport/mail ← アクセス統計ページHTML版作成スクリプト実行

(3)アクセス統計ページHTML版確認
http://Webサーバー名/awstatsreport/mail/へアクセスして今月分のアクセス統計ページが表示されることを確認
過去のアクセス統計ページはhttp://Webサーバー名/awstatsreport/mail/年月(YYYYMM).html(例:http://Webサーバー名/awstatsreport/mail/200601.html)へアクセスする

(4)アクセス統計ページHTML版作成定期自動実行設定
[root@centos ~]# crontab -e ← cron編集
00 00 * * * /root/awstatsmailreport.sh /var/www/awstatsreport/mail > /dev/null
 ← 追加(毎日00:00にアクセス統計ページHTML版作成スクリプト実行)


■関連コンテンツ




▲このページのトップへ戻る

ご自由にリンクしてください(連絡は不要です)
本ページへのご意見・ご要望、誤字・脱字・リンク切れ等のご連絡はこちらからお願いします