土曜日, 6月 30, 2007

生兵法は大怪我のもと

 私はS25R方式の英語名を「the S25R anti-spam system」と称している。
 オックスフォード英英辞典によると、「system」の意味は、まず「a group of things or parts working together as a whole」(全体として共に働くものまたは部分の集まり)とある。「コンピュータシステム」と言うときの意味はこれである。3番目の意味として「a set of ideas, theories, procedures, etc according to which sth is done」(何かが行われることに関する考え、理論、手続きなどの組)とある。「情報セキュリティマネジメントシステム(ISMS)」や「the S25R system」と言うときの意味はこれである。
 S25R方式は、次のアイデアあるいは手続きから成る組としてのシステムである。

●IPアドレスの逆引き結果からクライアントが高い確率でエンドユーザーコンピュータであると推定できる条件(一般規則)を定め、それに基づいて受信を拒否する。
●一般規則に引っかからないエンドユーザーコンピュータに対しては、ブラックリスト登録によって受信を拒否する。
●受信を拒否する際には、クライアントがエンドユーザーコンピュータだという推定がはずれるかもしれないので、正当なメールをエラーリターンさせないように、再送を促す応答コード(450)を返す。
●運用時にログを監視して、「450」の応答コードに対する規則的な再送を発見したら、正当なメールサーバに対して偽陽性判定をしている可能性が高いので、ホワイトリスト登録によって受信を許可する。

 メールシステムの知識のある人なら、私の論文を熟読すれば、S25R方式をシステマティックに理解することは難しくないはずである。実際、Postfixのオペレーションがどうにかできるくらいのスキルレベルの人でも、S25R方式の導入に成功して、ユーザーをスパム問題から解放している。
 しかし、論文を一瞥して、S25R方式をシステムとしてとらえずに「ダイナミックIPアドレスからのアクセスを排除するメソッド(method: a way of doing sth;何かを行うやり方)」と思った人は、必ず失敗する。拒否条件を設定してみてから、正当なメールサーバを拒否する副作用に気付き、これじゃ使えないと思ったり、拒否条件を緩めてみようと思ったりする。拒否条件を緩めると、スパムの阻止率が下がり、それでいて副作用はなくならない。
 S25R方式は、私が数千件の不正メールアクセスを観察しながら10ヶ月かけて、ホワイトリスト作りの運用も含めたシステムとして作り上げたものである。2006年8月7日「ホスト名「nat」」で紹介したような微小な工夫は加えてもよいものの、発表から3年たった今も抜本的な見直しは必要ないと思っているくらいの完成度のシステムである。私が説明していることを最初は素直に真似すればよいものを、自己流でやろうとするから、S25R方式による利益を享受し損なうのである。
 アルゼンチンの人からメールをいただいた。bay0-omc1-s40.bay0.hotmail.comを蹴飛ばしてしまったという。私は論文で、一般規則に引っかかる正当なメールサーバの実例としてmc1-s3.bay6.hotmail.comがあることをちゃんと書いている。
 その人が設定していた拒否条件は

/^[^.]*[0-9][^0-9.]+[0-9]/ REJECT NO !!!, your IP is dynamic

だという。「REJECT」(「554」で蹴る)なんか書いちゃいかんっちゅうに!
 その人は、だから次のような設定を試そうと思っているという。

/^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\..*/ REJECT NO !!!, seems dynamic
/^[0-9]+-[0-9]+-[0-9]+-[0-9]+-.*/ REJECT NO !!!, seems dynamic
/.*[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\..*/ REJECT NO !!!, seems dynamic
/.*[0-9]+-[0-9]+-[0-9]+-[0-9]+-.*/ REJECT NO !!!, seems dynamic

私は、2003年、S25R方式の着想を得た時に、「ドットかハイフンで区切られた4個の数字列」という条件を真っ先に試している。確か最初は「REJECT」と書いたが、そうしてはいけないということは、正当なメールをエラーリターンさせる事故を起こす前に気付いた。Postfixがreject_unknown_clientで返すのと同じ応答コード「450」を指定することを覚えた。論文では、そうせよと書いている。
 その人が試そうとしている条件ではたくさんの不正メールアクセス元を阻止し損なうという実例を教えてあげた。

100.red-217-217-187.user.auna.net
host51-253-dynamic.16-87-r.retail.telecomitalia.it
200-19.is.net.pl
a252-96.adsl.paltel.net
p6223-ipad30fukuokachu.fukuoka.ocn.ne.jp

また、207-171-180-101.amazon.comが正当なメール送信サーバであることも教えてあげた。
 それっきり返事は来ていない。
 生兵法は大怪我のもと。英語では「A little learning is a dangerous thing.」(少しばかりの学問は危ないものだ)という。

0 件のコメント: