迷惑メール対策にて出力される/var/log/auth.logの情報を、集計してWebで参照できるようにしてみました。

<!--
 迷惑メール対策したqmailのauth.logをサマリ化して表示する
 qmail-spam-control.php
 Version:
 0.0        Start
 0.1        ホワイトリスト救済が0件の際にゼロを表示するように修正
 0.2        再試行者の表示は3回以上に。文言も修正
 0.3        毎月1~9日は、格納が1つずれるので、それに対応
 0.4        配列を宣言するように修正
-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<META http-equiv="Content-Type" content="text/html; charset=EUC-JP">
<LINK REV="MADE" HREF="mailto:webmaster@yamanakake.com">
<LINK rel="INDEX" href="./index.html">
<title>qmail-spam-control</title>
</head>
<body>
<?php
 for($n=-1;$n<=7;$n++)
 {
 if ($n==-1)
 {
 echo '<H1>'.date('Y/n/d',time()).'の状況(未確定)</H1>'."\n";
 $fp = fopen('/var/log/auth.log','r');
 }
 else
 {
 echo '<H1>'.date('Y/n/d',time()-($n+1)*24*60*60).'の状況(確定)</H1>'."\n";
 $fp = fopen('/var/log/auth.log.'.$n,'r');
 }
 $counter = array();
 $whitelist = array();
 $retry = array();
 while(!feof($fp))
 {
 $buffer = explode(' ',fgets($fp));
 if ($buffer[1] == '')
 {
 $bias = 1;
 }
 else
 {
 $bias = 0;
 }
 if ($buffer[6+$bias] == 'qmail-smtpd:')
 {
 if ($buffer[7+$bias] == 'badremotehost:')
 {
 $counter[$buffer[10+$bias]] += 1;
 $fromserver = $buffer[8+$bias];
 $buffer = explode(' ',fgets($fp));
 $retry[$fromserver." ".htmlentities($buffer[8+$bias])." ".htmlentities($buffer[10+$bias])] += 1;
 }
 if ($buffer[7+$bias] == 'goodremotehost:')
 {
 $whitelist[$buffer[8+$bias]] += 1;
 }
 }
 }
 echo '<H2>拒否したリモートホストのパターンと拒否数</H2>'."\n";
 echo '<TABLE BORDER="1" SUMMARY="拒否したリモートホストのパターンと拒否数">'."\n";
 echo '<TR><TH ABBR="Pattern">パターン</TH><TH ABBR="DenyCount">拒否数</TH></TR>'."\n";
 foreach($counter as $patname => $count)
 {
 echo '<TR><TD>'.$patname.'</TD><TD ALIGN="RIGHT">'.$count.'</TD></TR>'."\n";
 }
 echo '</TABLE>'."\n";
 echo '<H2>ホワイトリストでの救済数</H2>'."\n";
 echo '<TABLE BORDER="1" SUMMARY="ホワイトリストでの救済数">'."\n";
 echo '<TR><TH ABBR="Pattern">送信元</TH><TH ABBR="OKCount">救済数</TH></TR>'."\n";
 foreach($whitelist as $patname => $count)
 {
 echo '<TR><TD>'.$patname.'</TD><TD ALIGN="RIGHT">'.$count.'</TD></TR>'."\n";
 }
 echo '</TABLE>';
 echo '<H2>3回以上の再試行</H2>'."\n";
 echo '<TABLE BORDER="1" SUMMARY="3回以上の再試行">'."\n";
 echo '<TR><TH ABBR="Server">送信元</TH><TH ABBR="Mailfrom">差出人</TH><TH ABBR="Reciptto">あて先</TH><TH ABBR="DenyCount">再試行数</TH></TR>'."\n";
 $flag = 0;
 foreach($retry as $patname => $count)
 {
 if ($count >= 3)
 {
 $flag += 1;
 $buffer = explode(' ',$patname);
 echo '<TR><TD>'.$buffer[0].'</TD><TD>'.$buffer[1].'</TD><TD>'.$buffer[2].'</TD><TD ALIGN="RIGHT">'.$count.'</TD></TR>'."\n";
 }
 }
 if ($flag == 0)
 {
 echo '<TR><TD COLSPAN="4">なし</TD></TR>'."\n";
 }
 echo '</TABLE>'."\n";
 echo '<BR>'."\n";
 }
?>
</body>
</html>

トラックバック(0)

トラックバックURL: http://www.yamanakas.net/mt/mt-tb.cgi/2293

コメントする

勤務カレンダ

勤務カレンダー

タクシーのご用命は
080-3115-3239 (Softbank)
携帯メール

アーカイブ

OpenID対応していますOpenIDについて
Powered by Movable Type 5.02

おすすめ

広告

このブログ記事について

このページは、のぶおパパが2005年5月 7日 08:00に書いたブログ記事です。

ひとつ前のブログ記事は「badremotehostファイル」です。

次のブログ記事は「ホワイトリスト」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

なかのひと

FoxMeter

Firefox3 Meter