Qgrey - S25R + qgreylist パッチ

S25Rで判定して怪しい場合はgreylistingで再送要求を送るSPAMフィルタ。
負荷ほとんどなし、検出率90〜95%、判断を間違っても相手が再送すれば通す、という感じで一次フィルタには有効ぽい。
pbs4qと相性が悪かったのでpbs4qの一部機能を取り込むよう軽く変更した。

手順

wget -q http://www.jonatkins.com/qgreylist/qgreylist-0.3.tar.gz
wget -q http://k2net.hakuba.jp/pub/qgrey-0.1-0.3.tar.gz
tar xvzf qgreylist-0.3.tar.gz
tar xvzf qgrey-0.1-0.3.tar.gz
cd qgreylist
patch <../qgrey-0.1-0.3/qgrey.patch
vi greylist
su 
cp ../qgrey-0.1-0.3/s25r /var/qmail
cp greylist              /var/qmail/bin
mkdir /var/qmail/greylist
chown qmaild /var/qmail/greylist
vi /var/service/smtp/run
svc -d /var/service/smtp
svc -u /var/service/smtp
(動作確認..)

runスクリプト

#!/bin/sh
exec /usr/local/bin/tcpserver -x /var/service/smtp/rule.cdb -vDRhl0 -c 40 -u 513 -g 513 \
0 smtp \
/var/qmail/bin/greylist \
/var/qmail/bin/qmail-smtpd 2>&1

diff

diff -Naur greylist.orig /var/qmail/bin/greylist
--- greylist.orig       Mon Feb 13 08:19:59 2006
+++ /var/qmail/bin/greylist     Mon Feb 13 08:46:53 2006
@@ -29,7 +29,7 @@

 use Sys::Syslog;

-
+Sys::Syslog::setlogsock(&#39;unix&#39;);
 openlog "greylist", "pid", "mail";


@@ -398,6 +398,11 @@
 {
        syslog "debug", "Local IP accepted" if $debugmsg;
        run_next_stage;
+}elsif( -e "/var/pbs4q/ip/$ENV{TCPREMOTEIP}" ){
+       $ENV{RELAYCLIENT}="";
+       run_next_stage;
+}else{
+       # syslog "err","no RELAYCLIENT. TCPREMOTEIP=$ENV{TCPREMOTEIP}";
 }