22 November '2004 - 02:15 | 雑記 スパム対策
時間を費やしてもどうせイタチごっこだし、面倒だから特に何も施していなかった MTA での SPAM 対策を、急遽実施することにした。 どうせ総流量もたいしたことがないし、賢い MUA での対策で十分ってことにしておいたのに、なぜいまさらそんなことをすることにしたかというと、理由がいくつかある。まず、最近、Thunderbird のフィルタをすり抜けてくるやつがかなり増え始めたということ。敵も bayesian フィルタに引っかからない作戦をいろいろと考えているんだろうね。
メールの本文だけからそれが本当におれの友達からのものじゃないかどうかを判定することは原理的にも不可能だし、まあ、当然といえば当然の成り行き。ほとんどの SPAM は英語だから、英語は SPAM って決め付けられると簡単なんだけれど、あいにく、おれの受け取る仕事関係のメールって99%英語だからそういうわけにもいかない。
次に、qmail の特性上、どうすることもできないタイプの SPAM が増えてきたこと。
qmail は、とにかくまず受信プロセスが受信してしまって、それからそいつの始末を別のプロセスが担当するという構造になっている。なので、送信元がでたらめのアドレスを使ったり、送信先がでたらめのアドレスだったりしても、とにかく受信してしまう。その次に配送プロセスが、送信先が存在しないことに気づいて、送信元に配送しようと思いきや、それも存在してないので、エラー通知を管理者宛に配信するということが起きる。
というわけで、管理者のおれは、エラーとして SPAM を大量に受信させてもらっている。
エラーは全て自動的に捨てるという方法もあるのだが、自分のメールアドレスを書き間違えて、送信先からエラーが帰ってきちゃうという馬鹿なユーザのお知りを拭くためには、全てのエラーを捨てるというわけにはいかなかったりする。
それから、最後の、そして最大の理由としては、最近、仕事が忙しすぎてぼんやりと考えている暇がないので何かで現実逃避したかったということ。
で、何かネタがないかと考えていたときに思い出したのは、だいぶ前にスパム対策技術を見つけたときに至極感心したのに qmail でそのアイデアを実現する方法を知らなくて残念だなあと思ったことだった。
いろいろ patch をあたってみたのだけれど、どうも、うまい方法が見当たらない。
たとえば tcpserver (tcpsvd) で弾く作戦だと、おれがどっかワケのわからないところからメールを出す時に困りそうだし、qregex は所詮嘘をつかれたらそれまでって感じだし、SPAMCONTROL はよさそうに見えつつも、いらない patch もたくさん取り込まれてるわりには STARTTLS が入ってないし。
おれが必要なのは、SMTP-Auth と STARTTLS だけであって、それ以外は date-localtime くらいしかいらない。あとは全部余計。
というわけでパッチを書いた。
で、どんな感じになるかテストしてみた。ルールに .* とか書いて全てのメールを 450 で返したら、ちゃんとまともなところは再送してきてくれたが、怪しいところは一回で諦めてるようだ。うまくいってる。
が、しかし、逆引きがなかったり、スパム対策技術でのルールに引っかかってるのに何度も再送してくるところが思ったよりもあるようだ。
こいつらはホワイトリストで救済してやることになるか、接続自体を拒否してやるか、どっちかの方向になるんだろうけれど、たぶん、ほとんどは接続拒否の方向っぽい。逆引きできない連中をいくつか調べたら、極東とか南米からがほとんどだったし。
予告もなしに大胆にサーバを弄っちゃったけど、誰にも大きな問題がおきませんように。