サクラでスパムの一次フィルタリングしてみるテスツ。

サクラのスタンダードプラン使ってます。(http://www.sakura.ne.jp/)

長年使ってるメールアドレスだと、毎日来るスパムの数も半端じゃないわけです。
メールソフトは秀丸メールを使っています。今まで秀丸メールのスパムフィルタを
使っていましたが、 誤認識も結構あるので調べるのが大変です。
サクラ自体にも「SpamAssassin」が入っていますが、結局は誤認識もあるわけです。
また、どうなってるのかWEBメールで確認しに行かなければならないのもおっくうです。
とりあえずPOPFileをいれてみたのですが、検出率もなかなかでそれはそれでいいのですが

結局問題は、来るスパムの数が多すぎて誤検出されたメールを目視でチェックするのが大変ということです。

じゃーどうにかしてあらかじめスパムと思われるメールを受け取らないようにしてしまえばいいのではないか?

でも、そんなことできるの?
最初はSpanassassinのlocal.cfを書いてどうにかできないかと思ったのですが、どうにも上手くいかないので挫折
SpamAssassinでの振り分けの制御やメールの転送など、なんか設定ファイルで制御してるんじゃないかと
思って、自分のホームディレクトリ内をsshで覗いてみるとMailBox配下に色々あることがわかりました。

.mailfilterってファイルの中にいかにもっていうスプリクトが書いてあったのでこれでなんとなできんじゃねー?
と思って

で、色々調べてみると「サクラの非公式FAQ 」を見つけました。

▼サクラの非公式FAQ
http://faq.sakura.ne.jp/wiki/wiki.cgi?FrontPage

サクラのレンタルサーバーではmaildropでメール配信を行っていて
.mailfilterで細かい制御が出来るとの事。

やっぱりこいつを使えば何とかできそうです。

手っ取り早く、現状のスプリクトを参考にする事にします。
現状サクラのレンタルサーバーでスパムフィルターを利用する場合以下の様にスプリクトが生成されるようです。

▼ スパムフィルター(SpamAssassin)利用時でスパムフォルダーに振り分ける時
if ( ! ( /^From: *!.*/ && lookup( $MATCH2, ".whitelist" ) ) )
{
xfilter "/usr/local/bin/spamc"
}
if ( /^X-Spam-Flag:.*YES/ )
{
to "maildir/.spam/"
}


▼スパムフィルター(SpamAssassin)利用時でそのまま削除する時(危険)
if ( ! ( /^From: *!.*/ && lookup( $MATCH2, ".whitelist" ) ) )
{
xfilter "/usr/local/bin/spamc"
}
if ( /^X-Spam-Flag:.*YES/ )
{
exit
}

▼スパムフィルター(SpamAssassin)利用時でフィルタのみ利用の場合 (ヘッダにX-Spam-Flag: YESが付く)
if ( ! ( /^From: *!.*/ && lookup( $MATCH2, ".whitelist" ) ) )
{
xfilter "/usr/local/bin/spamc"
}

xfilterのところにフィルタを指定すればフィルターできるようなのでここに自作のフィルターをつくって指定してやることを考えました。

フィルターのポリシーはこんな感じです。

・SpamAssassin等でも利用されているDNSBLやURIBLを利用してスパムかどうか判定する。
・当然多少の誤判定や巻き添えはありえるが、DNSBLやURIBLに登録されているところから送られてくるメールは届かなくてもしょうがない。
・当然多少の誤判定や巻き添えはありえるが、DNSBLやURIBLに登録されているところから送られてくるメールは多分おいらには関係ないメール。
・DNSBLやURIBLに引っかかったメールにはヘッダを追加する。
・おいら個人としてはそのままメールを捨てる(これで受け取るスパムを減らすことが出来るはず)


で、ごにょごにょしてそれなりに形になりました。


●解説&設置方法

▼前に自前のサーバ向けに書いたものを流用

 ソース中ログをsyslogにはいてるところがそのなごり
 ソースを見ればわかると思いますがたいしたことはやってません。メールの中からIPとドメインを取り出してDNSBLやURIBLを正引きしているだけです。

▼参照DNSBL
all.rbl.jp
sbl-xbl.spamhaus.org

追加設定するとかなり有効なDSNBL

具体的にはすり抜けてきたスパムのヘッダをみてIPアドレスからどこの国から来たスパムか調べてから追加するのが吉。

注意、国ごと拒否する場合は注意してください。拒否されると困るメールはホワイトリストに入れて置けばOKです。

2006.10.18修正、
・ blackholes.usの正引き時のドメインの指定方法が変わっているようなので、新しい指定の方法に修正。
・ソースにあらかじめスパムを送って来る国の定義を追加
cn-kr.blackholes.us

必要に応じて中国・韓国を弾くと効果絶大です。(うちの場合はかなり効果大です、ほとんどのスパムが中国、韓国、アメリカ、ブラジルからだからです。)

brazil.blackholes.us ブラジルからのメールを全てブロックする際に利用
russia.blackholes.us ロシア
argentina.blackholes.us アルゼンチン
thailand.blackholes.us タイ王国
cn.countries.blackholes.us 中国
kr.countries.blackholes.us 韓国
br.countries.blackholes.us ブラジル
ru.countries.blackholes.us ロシア
ar.countries.blackholes.us アルゼンチン
th.countries.blackholes.us タイ
tw.countries.blackholes.us 台湾
pl.countries.blackholes.us ポーランド
ph.countries.blackholes.us フィリピン
fr.countries.blackholes.us フランス
※本当はwanadoo-fr.blackholes.usとかでスパム送ってくるISP単位で拒否したいところですが現在使えないようなので国単位。

▼参照URIBL
url.rbl.jp
sc.surbl.org
ab.surbl.org

と無難なところをチョイス。
参照するところは追加や削除が簡単にできる様にしてあるので、Spamcopとかも簡単に追加できます。

▼設置方法

  1. フィルタープログラムをダウンロードして解凍
  2. 解凍したらspamdelっていうフォルダが出来るのでそれをサーバーに転送(wwwディレクトリと同じ階層に)
  3. パーミッションを設定

    spamdel 700 フォルダ
    spamdel.pl 700 フィルタープログラム
    spamdel.log 600 ログファイル

  4. ログを残したい場合は、spamdel.plの14行目に自分のIDを指定して、106行目のコメントを取ってください。
  5. sshでサーバーにアクセスしてターゲットのメールアドレスのディレクトリに移動します。(例:cd MailBox/メールアドレスのID)
    (sshじゃなくてもFTPだけでも作業は可能だとおもわれる。 )
  6. ターゲットのメールアドレスの「.mailfilter」に次のスプリクトを追加します。
    if ( ! ( /^From: *!.*/ && lookup( $MATCH2, ".whitelist" ) ) && (1) )
    {
    xfilter "/home/kumacchi/tools/spamdel.pl"
    }
    if ( /^X-Dnsbl-Status: Yes/ )
    {
    to "maildir/.Trash"
    }

    上記の場合スパムと判定されるとゴミ箱に送られます。
    そのまま削除したい場合は「to "maildir/.Trash"」の部分を「exit」にします。

    フィルタだけしたい場合(メールのヘッダに「X-Dnsbl-Status: Yes」が追加されます。)下記の部分を削除してください。

    if ( /^X-Dnsbl-Status: Yes/ )
    {
    to "maildir/.Trash"
    }


  7. 設置完了
  8. スパムメールと普通のメール流してみて上手く動いているかチェックして完了。

▼現状
とりあえずは、しばらくはゴミ箱に送って確認してました。
scan3.ztv.ne.jpがRBL.JPに登録されてメーリングリストのメールが1個引っかかったことが有りますが
RBL.JPは2日ほどで解除される仕組みですのでこの後は無問題です。
受け取るスパムメールの数が1日当たり200個>10個程度にまで減少して良い感じです。
その上でPOPFileで判定するようにしているので随分楽になりました。

▼ダウンロード
※このスプリクトを利用した場合に生じたいかなる損害にも責任を負いかねますのでご利用は自己責任でおながいします。(*゚д゚)
※sshでunixのコマンドがある程度理解できている人向けです。

上記をご了承いただける場合のみダウンロードしてご利用いただけます。


ダウンロード


2006年10月03日 作成
2006年10月18日
・ソースに国毎に拒否する定義の追加。
・上記についてホームページにも反映。
(スパムが減ってかなり快適)