![]() |
![]() |
mail/lib/white.starter
/mail/lib/whitelist
/mail/grey
/rc/bin/service/tcp25
2004/10/22
スパムメールは頭痛の種である。大量のスパムメールが送り込まれ、そのために大切なメールを見失うことがある。スパムメールの送信者はパソコンなどをつかって毎日何千通、あるいは何万通かのメールを送っていると思われる。スパム対策は今日におけるインターネットの基本的な課題であるが、どの方法も決定打を欠いている。今回は Plan 9 におけるスパム対策を紹介する。この方法は手間がかからず効果的にスパムを撃退している。
筆者はいくつかのメールアドレスを持っている。そのうち公開されているのは2つであり、1つは大学のメールサーバのアドレス aichi-u.ac.jp 、もう1つは Plan 9 の ar.aichi-u.ac.jp である。

筆者が主に使用する smtp ホスト (vega, ar)
ホスト smtp は大学の smtp サーバで SPAM フィルターがかかっている。vega は大学の メールサーバ、ar は筆者の研究室のメールサーバである。そして vega と ar は筆者の家庭のパソコン mac から見た smtp サーバでもある。
大学のメールサーバからのメールは殆どがゴミである。大学はスパムフィルター、ウィルスフィルターを入れているが、スパムフィルターの働きは十分とは言えない。誤認がある限り届けざるを得ない。また誤認がある限り、我々は目を通さざるを得ない。結局スパムから逃れることはできていないのである。
ar.aichi-u.ac.jp は筆者がメーリングリストにメールを出すときに使用しており、そのために半ば公開されている。以前は ar.aichi-u.ac.jp に膨大なスパムメールが届けられた。そのために外国からのメールは全て入り口で拒否した。これは他方のトラブルをもたらしたが、当時としてはやむを得なかった。現在では拒否を解いている。最近はあまりメーリングリストに投稿していないためか ar へのスパムアクセスは少ない。それでも1日に100通ぐらいのスパムが僕のメールボックスに届けられる。
最近 ar.aichi-u.ac.jp に対して Plan 9 のスパムフィルターを試してみた。スパムが劇的にカットされた。フィルターと書いたが実はメールの内容をスキャンしていないのでフィルターと言わない方がよいかも知れない。従来のスパムフィルターとは全く異なる発想に基づくものである。
発信 IP が DNS に登録されているか否かを確認
最近では意味がない。多くが DNS に登録されている。(たぶんリクエスト時に動的に)
以下は SPAM に使われた IP の DNS 検証
200.141.137.231 200141137231.user.veloxzone.com.br
200.148.82.104 200-148-82-104.dsl.telesp.net.br
200.79.91.5 customer-200-79-91-5.uninet-ide.com.mx
80.207.88.212 host212-88.pool80207.interbusiness.it
82.39.56.49 82-39-56-49.cable.ubr04.benw.blueyonder.co.uk
69.149.24.189 adsl-69-149-24-189.dsl.rcsntx.swbell.net
68.203.221.31 cs68203221-31.rgv.rr.com
68.162.39.146 pool-68-162-39-146.nwrk.east.verizon.net
IP アドレス情報を含むホスト名が全て不正なアクセスかと言えば、そうでもない。次は私がメールを送信した IP の DNS 検証 (これは SPAM ではない)
203.174.217.213 usr203174217213.usr.starcat.ne.jp
つまり区別が付かない。さらにDNS に登録されていない IP の DNS 検証は待ち時間が大きいのも他の攻撃(メール爆弾)との関係で問題になる。
サブジェクト欄に [spam] の文字を挿入する
メールの内容を読み取って分析するスパムフィルターは、それがメールサーバに仕掛けられた場合には私信の秘密性を侵害する可能性を秘めているし、また効果が薄いばかりか、正当なメールを間違ってスパム扱いにすることがある。vega からは [spam] の表題がついたメールが大量に送られてくる。mac はまた独自にフィルターを持っているので、筆者はそうしたメールを「ゴミ箱」に捨てている。しかし本当に捨てる前に、一応目を通さざるを得ない。
ISP が特定の IP から外に向けて発信されるメールの個数を監視し、許される発信数の上限を設定するか、適切な課金をする事であろう。
TCP ヘッダだけを見ていれば済む話。難しい技術が必要とも思えない。
正当なメールは確実に受け取る。その上でスパムメールをどれだけ効果的に削ぎ落とせるかが問題である。
内容ではなく、その送信方法でメールを分類しよう。
注意: SMTP サーバを介した大人しい広告メールもあるが、それらは排除の対象になっていない。
スパマーと正当な送信者はメールを送信する目的が異なる。スパマーの目的はできるだけ多数のスパムメールを撒き散らかす事にある。スパマーにとって私のアドレスは何万分の一、あるいは何十万分の一の価値しか持っていない。従って必ずしも届ける必要がないのである。しかし、正当な送信者にとっては事情が異なる。彼らは私のアドレスへメールを届ける必要があるし、そのための努力をするであろう。
この方法の利点は、手間がかからず、しかも効果的にスパマーを撃退できることにある。
注1: 例えば Mac OSX からは次のように見える。

注2: この時間は設定に依存する。Plan 9 の標準設定では 10 分。
注3: 次に示すのは smtpd のログであり、スパマーの典型的な行動パターンが見て取れる。21:43:18 で "temporary failure" のメッセージを受けてもスパマーは直ちに再送する(21:43:20)。そしてまた失敗しあきらめる。
ar Oct 19 21:43:18 no call registered for 220.191.79.245/ar.aichi-u.ac.jp!linda; registering ar Oct 19 21:43:18 no recent call from 220.191.79.245 for a rcpt; rejecting with temporary failure ar Oct 19 21:43:20 call for 220.191.79.245/ar.aichi-u.ac.jp!linda was seconds ago or long ago ar Oct 19 21:43:20 no recent call from 220.191.79.245 for a rcpt; rejecting with temporary failure
あきらめが良いのは、彼らの目標ができるだけ多くのスパムメールを巻き散らかすことにあり、私に送る事が至上命令ではないからである。
Plan 9 のアイデアの効果の程を調べてみよう。
grep arisawa /mail/grey/*/*
で「灰色リスト」を調べてみると最初の2日間でホスト ar に対して筆者宛に来たメールは 207 通である(最近は ar 宛のスパムは本当に少なくなりました)。この内 /mail/lib/whitelist への登録に至ったのは 20 通であった。カット率は 90% である。カット率は長期的には悪くなる事が予測されるので、もっと長期に観測しカット率の推移を調べた方が面白いであろう。
なお20通の内、個人的なメールは2通、筆者が実験のために出したメールが1通、他はスパムである。
mail/lib/white.starterこれは「白色リスト」の初期設定ファイルである。Plan 9 のリリースに含まれている。吟味し、必要なら追加する。筆者は hotmail.com を追加している。
# internal net 10.0.0.0/8 # yahoo mail hosts 66.218.66.0/24 66.218.84.0/24 # bellnexxia.net 209.226.175.0/24 # telus.net 199.185.220.0/24 # amazon 207.171.188.0/24 # careerbuilder.com 66.45.112.0/24 # psuvax1.cse.psu.edu - 9fans 130.203.4.6 # plan9.bell-labs.com 204.178.31.2 # ieee 140.98.194.25 # jetblue.com 64.50.124.126 # # Kenar's addition # # hotmail.com 64.4.53.0/24
ここに載っているのは主に多数の SMTP サーバを抱えた大きなサイトである。この場合には再送する時の IP が同じであるとは限らないので、「白色リスト」に登録されるまでに何回も再送トライが発生し時間がかかると予想される。
hotmail.com は筆者の周囲に利用者が多い。また hotmail.com はスパマーは利用しづらいと思われる。web メールなので効率的にスパムメールを送るためのコントロールが効かないのてある。もっとも hotmail を名乗るスパムメールはたくさん来るのだが...
/mail/lib/whitelistメールを受け取る事によって自動更新される。
ファイル /mail/lib/whitelist を作成しておく。アクセスモードは a-rw-rw-rw- に設定しておく。
ar% ls -l /mail/lib --rw-rw-r-- M 8 upas upas 460 Apr 27 2000 /mail/lib/blocked ... --rw-rw-r-- M 8 upas upas 326 Nov 2 2003 /mail/lib/white.starter a-rw-rw-rw- M 360659 bootes upas 0 Oct 20 11:47 /mail/lib/whitelist
whitelist には動的に受け入れ可能な IP アドレスが追加される。
ar% cat lib/whitelist # unknown 200.242.215.45 # YahooBB220003016167.bbtec.net 220.3.16.167 # wbg1213na10.ezweb.ne.jp 222.1.136.18 # adsl-west-3212.enjoy.ne.jp 218.223.116.212
/mail/greyメールを受け取る事によって自動更新される。
ディレクトリ /mail/grey を作成する。ユーザ none による読み書きを許す。
ar% ls -l /mail d-rwxrwxr-x M 360659 upas upas 0 Aug 3 20:44 /mail/box ... d-rwxrwxrwx M 360659 bootes sys 0 Oct 20 10:10 /mail/grey d-rwxrwxr-x M 360659 upas upas 0 Oct 20 10:08 /mail/lib d-rwxrwxrwx M 360659 upas upas 0 Oct 20 11:41 /mail/queue d-rwxrwxrwx M 360659 upas upas 0 Oct 19 03:30 /mail/tmp
SMTP ポート(tcp 25)へのアクセスがあるたびに grey に次のようにサブディレクトリが追加される。
ar% ls grey/*/* ... grey/202.250.160.40/201.254.152.159/arisawa grey/202.250.160.40/201.4.210.32/arisawa grey/202.250.160.40/202.112.112.224/arisawa grey/202.250.160.40/203.174.217.213/arisawa grey/202.250.160.40/203.236.190.51/arisawa grey/202.250.160.40/209.169.153.91/arisawa grey/202.250.160.40/210.105.239.14/arisawa ...
arisawa はファイル名である。中身は空。 私宛のメールであることを表している。
/rc/bin/service/tcp25smtpd に -g オプションを設定する。
#!/bin/rc exec upas/smtpd -g -n $3