validrcpttoでSPAMをブロック

仕事で管理しているメールサーバが、SPAM攻撃を受け続けている。存在しないアドレスも含めて特定ドメイン宛てに無作為に大量メールを送信する、いわゆるディクショナリーアタックというやつだ。かなりの数の匿名プロキシを経由しているらしく、発信元を特定してのブロックはほぼ不可能。まったくもってたちが悪い。

通常なら大量のSMTPセッションが発生したところで、サーバへの負担は大したことはない。しかしながら、アタックを受けてしばらくすると、ローカルでのメール配信の遅延に加え、POPセッションまでタイムアウトする有り様。とりあえず現時点では、未処理のローカル配信メールが大量にキューに溜まってしまうことが原因のようだが、SPAM発信元が特定できない限りどうしようもない。

# watch /var/qmail/bin/qmail-qstat

で確認したところ、ひどいときには2000以上もキューに溜まっていたようだ。

高負荷時にtopコマンドを実行してみるとなんのことはない、syslogdがCPUを90%以上も専有している。なるほど、キューに溜まったメールを大量に処理している間、syslogdがローカル配送処理のログを逐一maillogに書き込む処理がかなりの負荷になっていたというわけか。試しにsyslogdをkillしてみたところ、キューの減り方がかなり早くなるのも確認。ひとまずSMTPも落としてローカル配送をすべて終わらせておいた。

その上で、qmailのほうに抜本的改革を施すことに。結論から先に言えば、qmailのソースにvalidrcpttoパッチを当てて再コンパイルしてインストール。これにより、有効なメールアドレスをvalidrcpttoファイルにリストしておくことで、無効なユーザ宛のメールをSMTPセッション段階で拒否できるようになる。

手順はいたって簡単。qmailのソースディレクトリと同じ場所にパッチを置いたのであれば、ソースディレクトリに移動してから、

# patch -p1 < ../validrcptto.patch

を実行。あとは

# make setup check

で再インストール完了。設定ファイルなどは上書きされないので、新たに/var/qmail/control/validrcpttoを作成し、そこにメールを受け取りたいアドレスを列記。あとはqmail(およびtcpserver)を起動すればオーケーだ。

コマンドラインから起動した場合、SPAMをはねている様子がコンソールから確認できる。その仕事ぶりも見事だが、負荷軽減への貢献度も相当なもの。こんなことなら、もっと早く導入していればよかったな。

validrcptto

トラックバック(0)

このブログ記事を参照しているブログ一覧: validrcpttoでSPAMをブロック

このブログ記事に対するトラックバックURL: http://somin.heteml.jp/mt/mt-tb.cgi/4289

コメントする

このブログ記事について

このページは、Sominが2004年12月 5日 03:04に書いたブログ記事です。

ひとつ前のブログ記事は「MT4iを導入」です。

次のブログ記事は「ブートパーティションの移動」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。