ToshinoriMaeno/memo/PS50

前野 年紀 / 東京工業大学 原子炉工学研究所

spam SMTP 接続を減らす手法

概要: spam 送信ホストからの SMTP 接続を減らす手法を実装して評価しているので現状を報告します。

[背景] 受信メイルの大半を占めるようになった spam はできるだけ受信しないようにして、 軽快に 排除する方法が求められている。 接続に一時エラー返答することは spam 排除に有効であるが、 SMTP セッションでは受信側のシステム資源が使用されるので、接続させる相手はできるかぎり少くしたい。

多くの spam が送られてくる bot は 送信ホストの IP アドレスを DNS 逆引きすることで選別できる。 しかし、DNS 逆引きはネットワーク全体の負荷ともなり、 DNS 毒入れされるきっかけともなる。

そこで、我々は複数の受信サーバを利用した spam ホストの分別(MX fallback 検査)を 行っている が、もう一歩進めて今回の方法を実装し評価している。

[本題] 以下の手法を実装して、評価中である。

(1) DNS MX レコードの検索に TCP query を使うように要求する。 MX レコードの検索要求を送ってくるホストに対し、 UDP ではなく、TCP を使うように返答する。 UDP と TCP の送信元を集計してみると、 これらの集合の重なりは少なかった。 UDP だけで検索する bot が排除できる。

(2) greet pause 時間の短縮 SMTP 接続を開始する前に 30 秒程度の遅延をはさむことで、 多くの spam ホストが送信を諦めるが、受信サーバの資源を 30 秒間占有される。 この時間を短縮して、3 秒でも効果があることを確認した。

(3) 一時エラー返答に対する再接続も接続間隔パタンをみて、接続させるかを判断する。 6 分間隔で 6 回とか、11 分間隔で 2 回とかのケースが多い。 どちらにしても、15 分以内の再接続は再度エラーにすることで排除できる。

(4) SMTP 接続開始時の packet OS fingerprint を調べて、Windows であったら、接続させない。 メイルサーバに Windows が使われているケースはまれであるので、 救済手段を用意しておけばよい。

上記の方法により選択したホストだけを接続させるのであれば、 システム資源、ネットワーク資源に大きな負荷をかけることなく通常メイル受信が可能になり、 メイルシステムが延命できる。