モーグルとカバとパウダーの日記

モーグルやカバ(EXカービング)山スキー(BC)などがメインの日記でした。今は仕事のコンピュータ系のネタが主になっています。以前はスパム対策関連が多かったのですが最近はディープラーニング関連が多めです。

スパム対策は単純な1手法だけに頼ろうとするのは得策でないと思う

Linux.com :: Reducing spam with OpenBSD and spamd

ここのコメントでtaRgreyが紹介されていたので、関連するコメントを読んだ。


taRgreyに対して、というわけではないのだけど、コメントにあった内容で「lard」なシステムは良くないというのがあった。

Isn't it better to have more layers of spam protection / security than not?

Yup. It's called Defense in Depth.

I call it "lard." Adding more layers also adds complexity, sucks up system resources, and introduces more possible errors.
If only we could take the direct, effective route and just shoot spammers. Then we wouldn't have to continually re-invent bigger and better waders to deal with floods of spam.

「lard」なシステムとは、ゴテゴテと複雑にしたもの、と考えればよいと思う。
普通、システム作るときはそうすべきだと思うし、そのほうが余計な負荷が減ったりトラブルが起きたりすることも減る場合が多いと思う。


しかし、(MTAでの)スパム対策については、多種のフィルタや判定条件を組み合わせて使うことが、検出率を上げたり、誤検出を減らしたり、余計な負荷を減らしたり、また安定性を上げるにも有効だと思う。


例えば、ベイジアンフィルタだけで全部フィルタする、という場合を考えると、無理に検出率を上げようとすると誤検出率が上がってきてしまう可能性が高いと思うし、全メールをベイジアンフィルタに掛ける負荷はだいぶ大きいと思う。
スパムには、エンベロープ情報から見て明らかにスパムと判定できるものが結構な比率あって、その判定は「揺れ」がないため、誤検出はほぼありえない。
もちろん、その判定で防げる割合はそれほど多くないのだが、そういうものを積み重ねるだけでも、だいたい半分くらいは判定できてしまう。
それで半分に出来るのなら、ベイジアンフィルタ閾値を、今より倍にスパムを通しても良いように閾値を下げても、同率の検出率にすることが出来る。そして、ベイジアンフィルタを通るメールは半分で済む。
ベイジアンフィルタなどの重いフィルタの誤検出率より、軽いフィルタでより誤検出率が低いのなら、(組み合わせ方によっては)それを重ね合わせたほうが、負荷的にも誤検出率的にも有利に持って行けるということだ。


また、taRgreyやRgreyは現在、S25Rでの(動的IPっぽいかどうかの)チェックをポリシーサーバ側ではなくて、postfix側のフィルタでもって選り分けているが、設定する側としてはポリシーサーバ側でやってくれれば、設定箇所が1つになるからいいのに、と思うかもしれない。
が、こうしたほうが、全てのメールが一旦ポリシーサーバに投げられなくなるため負荷的に有利だし、もし何らかの事故でポリシーサーバが止まってしまった場合、S25Rに引っかからないような普通のサーバは、普通に受信されるため、よりトラブルに強くなる。


バブルソートよりクイックソート、単純な検索よりBoyer-Moore法、のように、なんでも単純だから良い、というもんでもないよね、と。