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をはねている様子がコンソールから確認できる。その仕事ぶりも見事だが、負荷軽減への貢献度も相当なもの。こんなことなら、もっと早く導入していればよかったな。
トラックバック(0)
このブログ記事を参照しているブログ一覧: validrcpttoでSPAMをブロック
このブログ記事に対するトラックバックURL: http://somin.heteml.jp/mt/mt-tb.cgi/4289
コメントする