SPAM対策の基本
漠然とした言い方をすれば
- キューに入れない
これに限る。キューに入れないためにはいくつか方法がある。
- 送信元のDNS情報を検査
- RBLを使う
- Tarpitting/Throttling
- ニセのバウンス対策
- ユーザ存在チェックを先に行う
有効な手段はこんなところか。IP逆引きによる云々もあるけど除外。
送信元のDNS情報を検査
送信元のメールアドレスの@以降で
- MXレコードを検索
- Aレコードを検索
どちらもなければ無効なメールアドレスとして排除する方法。ただ、近頃は他人のメールアドレスを書かれる事が多いので性能は疑問。
RBL
RBLには問題もあって、管理する手間も問題ではあるんだけれど(RBLを使わない事による手間もわかるけど)、まずは導入にかかる手間を考えたい。
この話はホント、日ごろの情報収集を怠るとえらい目にあう話なんだと思う。RBLが応答しない時にMTAがどう動くか、という検証もしておいたほうが良いと思うし。(MTAによるんだろうなぁ。未調査。)
tarpitting
1つのSMTPセッションで大量のRCPT TOコマンドを送ってくる事も多い。
ある数以上のRCPT TOコマンドの応答にDelayを入れると、単位時間あたりに受け付けてしまうメールの総数を減らすことが出来る。
結果として、SPAM送信者にとって"使えないMX"となる。このようにわざとゆっくり応答する事を、TarpittingとかThrottlingと言う。
ニセのバウンスメッセージを弾く
バウンスメッセージのenvelope-fromは<>で、これは前述の通り拒否してはいけないことがRFC2505で決まっているから、バウンスを装ったメールも多い。バウンスは送信者に行われるものだから、バウンスメッセージの宛先は必ず一つ。
ニセのバウンスメッセージは複数の宛先を書いてくるからこれを排除する。