さくらのレンタルサーバの「高精度迷惑メールフィルタ」と「簡易迷惑メールフィルタ」を併用した話
「高精度迷惑メールフィルタ」がメルマガ系をことごとく迷惑メール判定するので困ったなということで工夫した話
さくらのレンタルサーバの迷惑メールフィルタに高機能版が増えた
長らくSpamAssassinだけだったので、直近見逃しが増えていた、さくらのレンタルサーバの迷惑メールフィルター。
Vade社のソリューションが入ったと聞き、
喜び勇んで入れて見たところ…
ということで、誤検知率が高め、是正情報を送っても(どうやらユーザ別カスタマイズをしているわけではないようで)反映された体感が得られず、微妙に悲しい結果になってしまいました。
誤検知されるカテゴリのメールだけ簡易迷惑メールフィルタ(SpamAssassin)を使えないか?
が、メルマガ系のメールをmaildropを使って自動でフォルダ分類していたので、よく考えると、以下の様な迷惑メールフィルタの使い分けが出来るのでは?と調べて見ました。
メルマガ系のメールの送信者を名乗る迷惑メールは(今のところ)少なめで、こちらであれば過去からトレーニングしているSpamAssasin(簡易迷惑メールフィルタ)でも十分に弾けるのでこちらを使う
それ以外の送信者を名乗る迷惑メールは、確かにSpamAssasinで弾けなくなったので、Vade社の汎用フィルタ(高精度迷惑メールフィルタ)を使いたい
簡易迷惑メールフィルタ(SpamAssassin)、高精度迷惑メールフィルタ(Vade社フィルタ)それぞれの実装
さくらのレンタルサーバでは、maildropを使って迷惑メールフィルタのホワイトリストを実装しています。
簡易迷惑メールフィルタ…メールはまずmaildropに渡され、maildropがホワイトリストに含まれないメールだけをSpamAssassinに渡し、迷惑メールフラグが付いたメールをフォルダに振り分ける
if ( ! ( /^From:\s*(.*)/ && lookup( $MATCH1, ".whitelist" ) ) )
{
xfilter "/usr/local/bin/spamc"
}
if ( /^X-Spam-Flag:.*YES/ )
{
to "maildir/.spam/"
}
高精度迷惑メールフィルタ…メールはまずVade社フィルタに渡され迷惑メール判定フラグが付く。受けとったmaildropがフラグがあり、ホワイトリストに含まれないメールをフォルダに振り分ける
if ( /^X-VADE-SPAMSTATE:/ )
{
if ( ! /^X-VADE-SPAMSTATE:\s*clean/ )
{
if ( ! ( /^From:\s*(.*)/ && lookup( $MATCH1, ".whitelist" ) ) )
{
to "maildir/.spam/"
}
}
}
SpamAssassin+高精度迷惑メールフィルタの併用maildrop例
ということで、前述の希望をほぼそのまま実装したのが以下のmaildropです。(.newsaddressに「メルマガの送信者アドレス」を入れてある)
if ( /^X-VADE-SPAMSTATE:/ )
{
if ( /^From:\s*(.*)/ && lookup( $MATCH1, ".newsaddress") )
{
if ( ! ( /^From:\s*(.*)/ && lookup( $MATCH1, ".whitelist" ) ) )
{
xfilter "/usr/local/bin/spamc"
}
if ( /^X-Spam-Flag:.*YES/ )
{
to "maildir/.spam/"
}
if ( /^From:\s*(.*)/ && lookup( $MATCH1, ".newsaddress") )
{
to "maildir/.News/"
}
}
if ( ! /^X-VADE-SPAMSTATE:\s*clean/ )
{
if ( ! ( /^From:\s*(.*)/ && lookup( $MATCH1, ".whitelist" ) ) )
{
to "maildir/.spam/"
}
}
}
if ( /^From:\s*(.*)/ && lookup( $MATCH1, ".newsaddress") )
{
to "maildir/.News/"
}
こうすることで、メルマガ系は誤検知を回避しつつ、非メルマガ系の迷惑メールは高精度迷惑メールフィルタでガンガンはじくことが出来るようになりました。
今のところの困りごと、そのうち何とかしたい
今のところの困りごとはこんな感じです。
メルマガ系じゃないが誤検知されるメールがある
LinkedInメールなどがよく誤検知されている(とはいえ、本物の迷惑メールもLinkedInを名乗りそうなので安易に「簡易フィルタ対象」にはしたくない)
Vadeが見落としたメールを教えてあげるのが面倒
Thunderbirdでも迷惑メールフィルタをかけていて、そこそこ迷惑メールを拾う性能がある
Vadeに教えるには、さくらのWebメールUIを起動して「迷惑メールではない」と教える必要がある
個別の迷惑メールをさくら/Thunderbirdのどちらに教えたか記憶があやふやになる ⇒ 操作手順を決める必要がある
が、あまり学習が反映されなさそうなVade社にデータを送るのを諦めるというのも一案…
さくらのWebメールUIでは、簡易迷惑メールフィルタをすり抜けたメールをSpamAssasinに学習させることが出来ない
コマンドラインで何とかするしかないのかな、 http://www.miloweb.net/spamassassin.html#7 このあたりをみて何とかできるとよいか…?
まあ、このように検知率の底上げと誤検知率の抑制を同時にできるのも、さくらのレンタルサーバだからだよなぁ…
この記事が気に入ったらサポートをしてみませんか?