土曜日, 2月 14, 2009

「4xx」は迷惑か?

 「迷惑メール対策サービス「+abmail」」のページに、私への謝辞が書かれている。スパム対策ソフトウェアabmailは、Receivedヘッダを解析してスパム判定する仕組み。送信元がメールサーバかエンドユーザーコンピュータかは逆引き名からかなりの確度で推定できると私が実証したことが活かされているのが、謝辞の理由なのだろうと思う。S25R方式そのものを使うのでなくても、私のアイデアがこうして別の工夫の基礎として役立っていることをうれしく思う。

 ところで、そのページからリンクされている「+abmail — 迷惑メール対策サービス ~ 迷惑メール判定プログラム「abmail」の導入について~」という資料(PDF)には、私とは異なる考え方が述べられている。

 詐称が行い難い箇所とは、主にIPアドレスやその逆引きであるドメイン名ですが、エンドユーザ空間であれば通常ある範囲の動的アドレスであるので、そういったアドレス空間には正当なMTAが設置されていることは稀で、むしろ、ウイルスでボットと化したパソコン、スパマーとの相関が極めて高いことが判っています。こうした点に注目してMTAコネクションで対策を施す手法が既に提案されています。エンドユーザ空間であることをドメイン名から推定して、そこからのメールを拒否応答してしまうのがS25R(Selective Port 25 Rejection)、正当なMTAか否かを判定すべく、再送要求するのがRgrey(S25R & greylisting)、応答遅延するのがStartpit(S25R & tarpitting)、応答遅延と再送要求するのがtaRgrey(tarpitting, S25R & greylisting)という対策方式です。
 このS25R派生の方式は、スパム排除に効果的であることが知られていますが、正当なMTAであることを判定するための資源を正当なMTAに託す、いささか他者に迷惑な方式であることが問題視されています。

 2006年8月8日「リソース負荷」で述べたとおり、送信側が正当なメールサーバであるかどうかを判断できるまで「4xx」(再送要求)を返して(あるいは応答を遅らせて)送信を多少待ってもらうことは罪悪でもモラル違反でもないというのが私の考えである。
 そもそも、「4xx」を返すと送信側に迷惑をかけると考える人は、自サイトから送信したメールに「4xx」を返されたら迷惑だと思うのだろうか。自サイトから送信したメールがすぐにキューから掃けなかったら、自分のサーバのディスク領域がしばらく使われ続けたと怒るのだろうか。再送のためにCPUやメモリが使われたと怒るのだろうか。送信メールがすぐに掃けずに再送を余儀なくされるのは、相手のインターネット接続回線の故障か工事、相手のサーバの故障かメンテナンス、相手サイトの停電などが原因のこともある。その場合も、迷惑を受けたと思うのだろうか。もしそうだとしたら、ずいぶん狭量である。
 「4xx」を返されて迷惑だと思う人は、確かにいるかもしれない。S25Rに引っかかるメールサーバの運用者が、メールを送信した後神経質にログを見て、いつ送達するのだろうかとやきもきするようなケースである。不快になるのは、メールが送達するかどうか心配になるからであって、自分のサーバにリソース負荷がかかったからではないだろう。そのリソース負荷には何の実害もないのだから。そのような人には、私は「のんびり待ってください」と言う。受信側サイトにも都合があるのだから、メールの送達が遅れることはあって当たり前。最終的にリトライアウトした時に対処を考えればよい。
 片や「受信側は、送信側に負荷をかけないように、送信側で発生したメールをただちに吸い込んであげるべきだ」とする“送信側優先”のポリシー、片や「『4xx』で送信が多少待たされるのは許容し合おう」という“相互許容”のポリシー。インターネットの世界でどちらかのポリシーを合意するとすれば、どちらがよいだろうか。送信側優先のポリシーだと、すべてのスパムを吸い込むためにディスク領域をたくさん使う。スパムの可能性が高いと判断しても、万一正当なメールだった場合に送信側に再送を強いないためには、ことごとく受信しなければならないからである。相互許容のポリシーでは、自サイトからの送信メールが送信キューに滞留することがあるが、そのために使われるディスク領域はわずかで済む。一方、スパムの可能性があるアクセスに対して「4xx」を返すことによってほとんどのスパムを受信せずに済むので、受信キューのディスク領域も少なくて済む。つまり、相互許容のポリシーを合意した方が経済的なのである。
 送信側優先のポリシーと相互許容のポリシー。インターネットの世界での合意とまではいかないまでも、どちらが主流となるか。それは明らかに相互許容のポリシーである。相互許容のポリシーを前提としたS25R方式は、付加ソフトウェアが不要で実装も運用も簡単で効果が高いため、送信側優先のポリシーを主張する人よりも圧倒的多数の人たちに支持されているからである(もちろん、Rgrey、Starpit、taRgreyの利用者も合わせればもっと多い)。
 私は、送信側優先のポリシーに立脚してすべてのメールを吸い込むスパム対策システムにも反対しない。しかし、正当な送信側メールサーバに「4xx」を返して負荷をかけるべきではないとする主張にはこう反論する。「あなたは、工夫によって抑制できる不正なトラフィックも無差別に受け入れることによって、インターネットユーザーの共有リソースであるインターネット中継回線に無駄な負荷をかけているのですよ」と。

 なお、「そこからのメールを拒否応答してしまうのがS25R」という書き方は誤解を招く。
「エンドユーザ空間であることをドメイン名から推定して、そこからのメールに対して再送要求を返して受信拒否するのがS25R、再送するメールサーバを自動的に許可するのがRgrey、…」
と書いてくれた方が、より正確である。

 ついでに…

(S25R派生の方式は)また、正当なMTAと同等な応答の実装を、もしスパマーが実現した暁には破綻してしまうことは明らかで、現にそういったウイルスが出現しています。こうした敵に気付かれる手法では、スパマーに次の手を考える余地をすぐさま与えてしまうので、有効性の寿命は短いと言わざるを得ません。
 一方、本手法はそういったスパムと相関の高いエンドユーザ空間からのメールであっても、正当なメールと同様に受信します。設定によってはそのまま棄ててしまうことも可能ですが、スパムである可能性が極めて高いメールを振り分けてしまうという方式を採っていますので、スパマーは徐々に収益が低下していくことしか知り得ないでしょう。

 私の経験では、スパムに対して拒否応答を返し続けた方が、敵がだんだんあきらめてスパムアクセスが減るので得策である。私の自宅のアドレスはwhoisデータベースに露出している。勤務先のアドレスは、過去にwhoisデータベースに露出していたことがあるが、今は露出していない。それにもかかわらず、自宅の正しいアドレスに押し寄せるスパムアクセスは、スパム対策をしていない勤務先に届くスパムより少ない。これは、自宅サイトではスパムが増え始めたころから拒否応答を返し続けてきたことの効果としか思えない。このことは、2006年9月28日「拒絶の効果?」で述べた。
 また、2008年7月20日「信じられない阻止率」で、私の息子へのスパムの着信が2008年3月をピークにその後減ったことを述べた。今では、息子宛のスパムアクセスは月10回ほどと少なくなっている。これも、拒否応答を返し続けたことの効果だろう。
 当然ながら、スパムアクセスの総数が減れば、防御をすり抜けるスパムも減る。それだけユーザーはハッピーになる。
 スパムアクセスに対して「450 S25R check, be patient」という拒否応答を返すのは“敵に気付かれる手法”ではあろうが、当分は気にする必要はない。敵がS25Rを攻略するには、メールサーバを経由するか、脆弱なサーバを侵害するか、ボットに長時間リトライさせるしかなく、いずれにしても大量スパム配信にはコスト高な方法をとらざるを得ないからである。

0 件のコメント: