ホーム > フラッグblog > ページ用コンテンツ > Postfix Spamassassin amavisd-new でスパムフィルター
Date 2011/04/15   ページ用コンテンツ

Postfix Spamassassin amavisd-new でスパムフィルター

親会社のスタッフの一人が退職され、ホームページに公開しているアドレスの管理が僕に回ってきました。

まぁよくある info@****.com を複数の人間に転送しとこうみたいな感じです

で、今月から転送されてきたメールを受け取ってるんですが・・・

 

スパム多すぎるんじゃぼけ〜〜!!!

 

 

 

やー、公開してるとこんなに来るもんですか。

僕はメーラーにThunderbirdを使用してまして、ThunderbirdのSpamフィルターは優秀なんですが、

それでも意外に海外のメールとかがスルーされてしまう。

 

朝来て大体500〜800ぐらメール受信して、そのうちの9割はThunderbirdがスパム判定してくれるけど、

残りの1割のうちの8割はやっぱりスパム。

 

これは朝からしんどいということでサーバー側でフィルターをかけるようにしました。

 

目指せスパム撲滅。

 

サーバーはCentOSでPostfixを使っていたので

メールサーバーでウィルス&スパムチェック(Postfix+Clam AntiVirus+SpamAssassin)

 

↑上記のような非常に優秀なサイトを参考にシコシコとインストール。

 

Clam AntiVirus というのはウイルス判定ソフトで、

amavisd-new というのがメールのヘッダー判定ソフトで

SpamAssassin というのがスパム判定ソフトのようです。


でインストールまでは問題なくでき、一見完了しているかに見えるんですが、
スパム判定がうまくいかない。

届くメールのヘッダーには 

X-Virus-Scanned: amavisd-new 
 

と追加され、amavisdを経由しているのはわかるんですが、
スパム判定されたときに***SPAM***と件名についていない。

 

本来だと.Spam というディレクトリに転送されるはずが
(今回はThunderbirdの仕様に合わせたので.Junkというディレクトリ)
これもうまく転送されていない。

 
 

2日ほど悩んで気づきました。

 
 

まずひとつは、上記のサイトはドメインが一つで運営されたサーバーだということ。

うちのサーバーみたいにバーチャルドメインにしている場合は、

 

/etc/amavisd/amavisd.conf 
 

の$mydomainあたりを複数ドメインに指定してやらなければいけないわけです。

 

 

もう一つが

/etc/procmailrc

の設定。


 

参考サイトでは procmail をつかってメールの振り分けをしているんですが、
どうもバーチャルドメイン環境では優先順位が違う様子。

具体的にいうと

/etc/postfix/main.cf

mailbox_command = /usr/bin/procmail

より、

virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf

のほうが優先されて先に振り分けられてしまうみたい。




これは困った問ことで、色々考えた結果、
最後はスパム判定をamavisd-newにさせてしまおうという結論に。

http://drupal.395963.com/node/84

↑このへんを参考に

/etc/amavisd/amavisd.conf 

 

#@bypass_spam_checks_maps  = (1);

をコメントすると、amavisd-new がスパム判定をします。


ただ、このままではスパム判定が厳しいので、

http://www.imc.cce.i.kyoto-u.ac.jp/~umehara/misc/comp/20060506.html

↑このへんを参考に


 

$sa_tag_level_deflt  = 7.0;  # ヘッダにスパムの情報を加える
$sa_tag2_level_deflt = 15.0; # スパムであると判定する
$sa_kill_level_deflt = 15.0; # スパムを宛先に通知しアーカイブを保存する
$sa_dsn_cutoff_level = 20.0; # スパムを宛先に通知しない

 

としました。

 

後は

 /etc/init.d/amavisd restart

と再起動して、

/var/log/maillog を確認してみると・・・

cat /var/log/maillog | grep 'Blocked SPAM'

 

Apr 15 12:28:13 itm*** amavis[19406]: (19406-10) Blocked SPAM, [211.0.63.57] [83.110.***.***] <dmiraau@acculab.com> -> <***@itm.***.jp>, Message-ID: <20b11f64x22-62628552-869t5z88@ydbphhjw>, mail_id: xhBvrdNQhwEH, Hits: 66.678, 4294 ms

 

というようにはじいていることがわかります。

この

Hits: 66.678,

というのがスパムポイントですね。

ちなみにprocmailに判定を任せて

#@bypass_spam_checks_maps  = (1);

↑のコメントを外すと

Apr 15 11:56:47 flagsystem amavis[25098]: (25098-14) Passed CLEAN, [182.48.***.***] [182.48.***.***] <"info@itm-asp.***,system"@itm.ne.jp> -> <contact@flagsystem.***.***>, Message-ID: <20110415025647.26321.qmail@itm-asp.com>, mail_id: mIFpWCQKbSFA, Hits: -, size: 5934, queued_as: 868802961A8, 160 ms

みたいな感じになって、

Hits: -,

と判定されてません。

その後

Apr 15 11:57:00 flagsystem postfix/local[27760]: 868802961A8: to=<contact@flagsystem.***.***>, relay=local, delay=13, delays=0.01/0/0/13, dsn=2.0.0, status=sent (delivered to command: /usr/bin/procmail)

delivered to command: /usr/bin/procmail

とprocmailに判定を任せてたlogが残ります。

 

やー。

 

やっとなんとなく理解できた。

 

ちなみにどんなメールを弾いてるか

cat /var/log/maillog | grep 'Blocked SPAM'

で確認してみると・・・・・

 

Apr 15 10:12:26 itm-*** amavis[17937]: (17937-01) Blocked SPAM, [211.133.130.147] [***.***.***.***] <mmz-79hc=65125560683147=2jjvbvx=453=***=***.ne.jp@magerr.combzmail.jp> -> <***@***.ne.jp>, Message-ID: <20110415011222.7551.qmail@r1339.ps.combzmail.jp>, mail_id: npcKVwVbSEm6, Hits: 35.976, 3797 ms

 

でた!コンビーズメール

Hits: 35.976

はちょっと高杉じゃないでしょうか。

大手メルマガ配信スタンドなのに。届かないとかスパムだとか苦情が多いのもわかる気がします。

 

ちょっと驚いたのがこれ

Apr 15 11:26:28 itm-*** amavis[18691]: (18691-10) Blocked SPAM, [203.174.74.38] [***.***.***.***] <mailman-bounces@ml.postgresql.jp> -> <***@***.ne.jp>, Message-ID: <20110415022619.1461775E5F8@ml.postgresql.jp>, mail_id: gQzGXn79Ib1l, Hits: 74.753, 2488 ms

 

PostgreSQLユーザー会のメーリングリスト本家じゃないか!

Hits: 74.753

と高すぎです。

たのんます。本家さん。

とりあえず救済リストにいれてスパム判定しないようにしました。

(その方法はこちら)

そんな感じでスパム対策も一段落

 

また時間があったら続きかきます。

この記事をシェアする

TOP

Flagsystem