Postfixで大量スパムメール送信元の接続数を制限する

カテゴリ:メールサーバ

スパムメールが1分間隔などで大量に送られてくる場合があります。
手軽な対処方法として、同一配送元IPアドレスごとの接続数制限が便利です。

main.cf に以下のパラメータを設定することで smtpd_client_message_rate_limit で anvil_rate_time_unit あたりの接続数を制限します。
smtpd_client_message_rate_limit = 1
anvil_rate_time_unit = 3600s
smtpd_client_event_limit_exceptions = $mynetworks

※上記の場合、mynetworks以外の送信元からの接続は、3600秒(1時間)に1回のみ許可します。
2回目の接続要求があった場合、1回目の接続から1時間経つまでは一時的な否定応答を返します。
送信元では再試行されますが、1時間経つまでは何度再試行しても接続を許可しません。

Postfix をリロードして設定を反映させます。

# postfix reload
postfix/postfix-script: refreshing the Postfix mail system

テストとして、他のマシンから telnet で2回目の接続を行うと、mail from コマンドの送信後に以下のように 450 4.7.1 Error: too much mail from xx.xx.xx.xx が返される事が確認できます。

220 hacentos7.prime ESMTP Postfix
helo fqdn

250 hacentos7.prime

mail from: test@example.com

450 4.7.1 Error: too much mail from 192.168.11.8

但し多くのスパム送信元は世界中にある踏み台となってくれるMTA(オープンリレーサーバー)を利用します。
従って、スパム送信元のIPアドレスはほぼ無限にあるといってもいいでしょう。
従って100や200の踏み台MTAを利用しているスパマーに対しては接続数制限も限界があるかもしれません。
しかしこの設定をやっておけば確実にスパム受信数を減らすことはできると思います。

注意点として、スパマーではない普通の送信者がメールを連続して送った場合でも、2通目は1時間以上遅れて届く事になります。

公開日時:2017年08月29日 12:39:40

なお、VPS選びで迷ったらこちらの記事で主要VPSのメモリ容量ごとの月額、年額料金を比較していますので、是非参考にしてみてください。

メールサーバに戻る

このページのトップに戻る