taRgrey + postfix
spam すごいですねぇ ^^;
先日、ついに鯖1台お亡くなりになっちゃいました。
あまりのspamのすごさに処理しきれなくなって、HDDが逝かれちゃいました。
spamのほとんどは動的なIPから送られているもので、ちょっとじらしてやるとすぐにあきらめちゃうんですね。
taRgreyというspamフィルターを入れてみました。
これは、基本的にはtarpitting(遅延)ポリシーサーバとなっていて、その制限を抜けられなかった場合に、
さらにgreylisting(再送)をチェックして救済する、というものです。
S25Rという、動的IPっぽい接続からの場合にこのポリシーサーバでチェックする、という運用を想定しています。
こうすると、動的IPっぽいところから、通常よりもだいぶ短いタイムアウトにしていて、かつ再送もしてこない、
というメールだけがフィルタされます。
これで本当にほぼ全く誤検出無くスパムだけが捨てられます。
さとうさんのページ
taRgrey - S25R + tarpitting + greylisting
http://k2net.hakuba.jp/targrey/
あと、設定ファイルのサンプルがこちらにあります。
http://k2net.hakuba.jp/spam/postfix.conf.2.tar.gz
でここでは相変わらず実装だけ ^^;
対象はDebianです。今はVineとかでも同じにできるのかも知れませんが。
今回私はmail鯖がqmailであることと、鯖がお亡くなりになったときに既にmail鯖自体は移設してしまっているので
INET -> taRgrey鯖 -> qmail鯖
というようにメールをリレーさせることでtaRgrey鯖ではspam処理だけをさせています。
こうしておくと万一taRgrey鯖が逝かれても、MXを書き換えるだけで直接メールを受け取れるようになります。
postfixのバージョンが2.3以上が必要で、もしくはpatchをあてる必要があります。
postfixのv2.3はsargeにはありません。etchでないと入っていないようです。
もうじきetchもリリースされるらしいのでtaRgrey鯖はetchにしちゃいました。
必要なぱっけーじをインストールします。
apt-get install postfix postgrey
ついでにこの鯖にclamavとspamassassinも入れてしまいました。
apt-get install clamav clamav-daemon clamav-freshclam spamassassin spamc amavisd-new
postgreyにぱっちをあてます。別途ソースをgetしてあてても良いですし、postgrey自体perlなので直接あてちゃってもいいと思います。
apt-get source postgrey
patch -d postgrey-1.27 < targrey-0.30-postgrey-1.27.patch
cp posygrey-1.27/postgrey /usr/sbin/postgrey
postfix.conf.2.tar.gzを解凍すると次のファイルが出てきますのでとりあえず/etc/postfix/ にコピーしちゃいます。
check_ns
check_sender_apacheinfo
ClamSMTP.master.cf
permit_client_nots25r
prepend_client
reject_helo
reject_mx
reject_ns
Rgrey.main.cf
taRgrey.main.cf
whitelist_client
whitelist_recipient
taRgrey.main.cfの中身をmain.cfに書き加えちゃいます。
ついでにamavisも動かすならClamSMTP.master.cfもmaster.cfに書き加えましょう。
逆にamavis動かさないんならtaRgrey.main.cfの最後はいらないですね。
サンプルはポートが10026と10027になってますが、標準だと10024と10025だと思います。
amavisとあわせましょう。
設定ファイルのwhitelistとrejectはpostmapでdbにします。
postmap reject_mx reject_ns whitelist_client whitelist_recipient
転送をするならリレーのルールを設定します。
mydestination = targrey.exsample.net, localhost.localdomain, localhost.localdomain,
localhost
relayhost =
relay_domains = exsample.net, rylay.exsample.net
transport_maps = hash:/etc/postfix/transport
私は送信もこの鯖を経由させているのでmynetworks にqmail鯖のアドレスを書きました。
mynetworks = 127.0.0.0/8, 220.xxx.xxx.xxx
/etc/postfix/transportに転送先を書き、postmapします。
exsample.net smtp:220.xxx.xxx.xxx
relay.exsample.net smtp:220.xxx.xxx.xxx
postgreyの起動オプションを設定します。
vi /etc/default/postgrey
私は
POSTGREY_OPTS="--inet=127.0.0.1:60000 --tarpit=125 --retry-count=2
--delay=3600 "
としてあります。
clamav spamassassin を使うなら
/etc/amavis/conf.d/15-content_filter_mode を編集します。
@bypass_virus_checks_maps = (
\%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re);
@bypass_spam_checks_maps = (
\%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
それぞれコメントをはずします。
そのままだとamavisは走るのにvirus checkしてくれません。ログに
localhost.localdomain /usr/sbin/amavisd-new[224]: ANTI-VIRUS code NOT loaded
localhost.localdomain /usr/sbin/amavisd-new[224]: ANTI-SPAM code NOT loaded
localhost.localdomain /usr/sbin/amavisd-new[224]: ANTI-SPAM-SA code NOT
loaded
てなぐあいになります
/etc/amavis/conf.d/05-domain_id を編集します。
@local_domains_acl = ( ".$mydomain",".exsample.net" ); ローカル側のドメインすべて書き並べます。最初これがわからなくてはまりましたぁ --;
/etc/amavis/conf.d/20-debian_defaults
ウィルスやspamは残しても仕方ないので。
# $QUARANTINEDIR = "$MYHOME/virusmails";
タイトルは書き換えない
# $sa_spam_subject_tag = '***spam***';
spamはサーバー側では削除しない。
$final_spam_destiny = D_PASS;
再起動
#mail.log said
(host 127.0.0.1[127.0.0.1] said: 451 4.5.0 Error in processing, id=xxxxx-01, virus_scan FAILED: virus_scan: ALL VIRUS SCANNERS FAILED: ClamAV-clamd av-scanner FAILED: Too many retries to talk to /var/run/clamav/clamd.ctl (Can't connect to UNIX socket /var/run/clamav/clamd.ctl: No such file or directory) at (eval 44) line 268.; ClamAV-clamscan av-scanner FAILED: /usr/bin/clamscan timed out at (eval 44) line 462. (in reply to end of DATA command))
あれれ? ってこれしばらく待っていると直ります。知らないもんだから一生懸命restartして、いつまでたっても動かなかった^^;;;
http://lurker.clamav.net/message/20071121.123741.caa8ba6a.ja.html
ログを見るとわかるのだが、clamdがデータベースを読み込むのに時間がかかるらしい。しかし数分から数十分かかる。何とかならんのかなぁ^^;
これおそらくetchだけの問題らしいです。aptに
deb http://ftp2.jp.debian.org/debian-volatile etch/volatile main contrib
としてspamdをアップデートしたら20分かかっていたのが3秒で終わるようになりました。
セキュリティな問題はアップデートしてくれるのだが単純なバグはアップデートしないdebianの問題ですね。
効果
log眺めていると次々と落とされていくのがわかります。
今までの鯖だとこれをすべてviruscheckしていたので過負荷になるはずです。^^;
まぁこれでも抜けてくるspamは結構あります。今のところ手元のpopfileでほとんど落とせてますので問題は無いですが、
あとはspamassassinでもチューニングして対策するしかないですね。
問題?
携帯電話への転送が使えなくなっちゃいました。そもそもqmailが直接受けることを前提にしていたので無理もありません。
仕方ないのでtaRgrey鯖がつけるRecived:を除いてやることに・・・・
まだ実装があいまいなので公開しませんが、お急ぎの方はメールか掲示板へ。