AwstatsによるSMTPログ解析

アクセスログ解析ソフトのAwstatsでPostfixなどのSMTPログの解析方法について解説します。

なお、環境はCentOS-6を利用し、AwstatsはEPELリポジトリを利用します。

 

Awstatsのインストール

CentOS-6では提供されていないため、ここでは、EPELリポジトリを利用します。


EPELリポジトリの追加

EPELリポジトリを追加は、以下のコマンド行います。

wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm
rpm -ivh epel-release-6-5.noarch.rpm


以下のコマンドで読み込みます。

yum update

 

インストール

awstatsをインストールします。

yum install awstats

 

 

Awstats設定の準備

Awstatsをインストールすると/etc/awstats/以下に設定ファイルが作成されます。

この中の、awstats.model.confを流用して、自身で必要な設定ファイルを作成します。

今回は、unixlife.jpドメインのSMTPログの解析を行う設定をして行きます。

まず、awstats.model.confをコピーしてawstats.smtp.confを作成します。

cp awstats.model.conf awstats.smtp.conf

コピーが終わったら、awstats.smtp.confを編集していきます。

 

 

Awstats定義ファイルの設定

awstats.smtp.confを作成しましたので、この内容を編集して行きます。

ここでは、SMTP用に必要と思われる箇所のみ列挙します。

awstats.smtp.conf

ログファイルフォーマットの指定
LogFile="/var/log/maillog.analysis" <---コンバート後のmaillog

LogType=M
LogFormat="%time2 %email %email_r %host %host_r %method %url %code %bytesd"

SiteDomain="unixlife.jp" <---解析するメールドメインを指定
HostAliases="unixlife.jp" <---解析するメールドメインを指定
HostAliases="unixlife.jp examples.com" <---複数ドメインの解析を行う場合

DNSLookup=1

AllowFullYearView=3 <---年間レポートの生成

SkipDNSLookupFor="REGEX[^192.168.]"

無効にする設定
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

 

 

解析用ログファイルの作成と解析

CentOSでは、SMTPのログはSYSLOG経由で/var/log/maillogに出力されますのでこれを利用しますが、Awstatsでmaillogを解析するには、このmaillogをmaillogconvert.plを利用しコンバートする必要があります。

また、このログはrotatelogsの設定で毎日や毎週の単位でローテーションされています。また、デフォルトの設定では、cronによって4時頃にローテーションが実施されます。

ここでは、rotatelogsの設定で、毎日、4時02分に圧縮なしでローテーションしているもとします。

このログファイルを1時間毎にCronを利用して解析するシェルスクリプトを作成します。

*rotatelogsの設定については、こちらをご覧ください。

 

シェルスクリプト作成に際して注意点が2点あります。

1.4時に解析する時は、ローテーション後の旧ログファイルを対象にする。

2.オプションで年を指定しますが、年代わりの1月1日解析時には前年を指定する。(実際には常に1日前に年を指定する)

/usr/local/bin/awstats-smtp.shを以下の内容で作成します。

#!/bin/sh

ANALIYSIS_YEAR=`/bin/date -d '1 days ago' +%Y`
NOW_HOUR=`/bin/date +%H`
ANALIYSIS_LOG="/var/log/maillog.analysis"

if [ $NOW_HOUR = 04 ]; then
        MAIL_LOG="/var/log/maillog.1"
else
        MAIL_LOG="/var/log/maillog"
fi

/usr/share/awstats/tools/maillogconvert.pl standard $ANALIYSIS_YEAR < $MAIL_LOG > $ANALIYSIS_LOG

/usr/share/awstats/wwwroot/cgi-bin/awstats.pl -config=smtp -update

 

 

Apacheの設定

Awstats用のアクセス解析ページは、/var/www/awstats/以下に作成されます。

Awstats用のApacheの設定ファイルは、Awstatsインストール時に、/etc/httpd/conf.d/以下にawstats.confが作成されます。

ここでは、awstats.confでアクセス制限などを行います。

#
# Directives to add to your Apache conf file to allow use of AWStats as a CGI.
# Note that path "/usr/share/awstats/" must reflect your AWStats install path.
#
Alias /awstatsclasses "/usr/share/awstats/wwwroot/classes/"
Alias /awstatscss "/usr/share/awstats/wwwroot/css/"
Alias /awstatsicons "/usr/share/awstats/wwwroot/icon/"
ScriptAlias /awstats/ "/usr/share/awstats/wwwroot/cgi-bin/"

#
# This is to permit URL access to scripts/files in AWStats directory.
#
<Directory "/usr/share/awstats/wwwroot">
    Options None
    AllowOverride None
    Order allow,deny
    Allow from 127.0.0.1 192.168.110.0/24 ローカルアドレスからのみアクセス可能 
</Directory>

# Additional Perl modules
<IfModule mod_env.c>
    SetEnv PERL5LIB /usr/share/awstats/lib:/usr/share/awstats/plugins
</IfModule>

 

これで、Apache側の設定は終了です。Apacheに新しい設定を読み込ませましょう。

/etc/init.d/apache graceful

 

 

cronによる定時解析

Awstatsで定時的にアクセスログ解析を行うには、cronを設定するが良いでしょう。

例えば、awstats.smtp.conf設定ファイルの指定で、1時間毎に解析をする設定をした場合は、先ほど作成したシェルスクリプトを以下のようにcronを設定します。

10  */1  *  *  *  /usr/local/bin/awstats-smtp.sh

これで、1時間毎にログ解析が行われます。

 

 

ログ解析結果ページの閲覧

ログ解析結果のページは以下のURLを指定する事により閲覧可能です。

ここでは、ログ解析サーバのIPアドレスが、192.168.1.1と仮定します。

http://192.168.1.1/awstats/awstats.pl?config=smtp

 

 

 

参考資料:

http://awstats.sourceforge.net/docs/awstats_faq.html#MAIL

satospo – PostfixのログをAWStatsで集計

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <img localsrc="" alt="">