Categories: サーバ運用

postfixのsmtpd_client_restrictionsを使って迷惑メールを排除してみた

最近はメーラーも賢くなってきて、迷惑メールの振り分けはある程度自動的にやってくれるのですが、メールサーバ側での対策を見直そうと最新情報を調べ直しました。以前もpostfixの「header_checks」を使って簡易的に迷惑メールを排除していたのですが、特定IPアドレスからのsmtp関連への攻撃が多いのと、スパム対策の見直しで「smtpd_client_restrictions」の再設定を行い、迷惑メールをしっかり駆除したいと思います。

やりたい事

  • RBLを利用して迷惑メール対策を強化する
  • 特定IPアドレスからの攻撃があるのでIPアドレス指定でブロックする



RBL(Realtime Blackhole List)の設定

RBLは「迷惑メールの配信元をまとめたリスト」、つまりブラックリストの事で、このリストを管理しているサービスが幾つかありますので、それを参照してメールサーバ側で排除したいと思います。今回利用するRBLは「all.rbl.jp(元々設定済み)」「bl.spamcop.net」「zen.spamhaus.org」の3つです。設定は簡単で、main.cfの「smtpd_client_restrictions」にパラメータを記述するだけです。

smtpd_client_restrictions =
  permit_mynetworks,
  reject_rbl_client all.rbl.jp,
  reject_rbl_client bl.spamcop.net,
  reject_rbl_client zen.spamhaus.org,
  permit

「permit_mynetworks」はその名の通り、「mynetworks」のネットワークを許可します。
「reject_rbl_client」でRBLサービスのドメインを設定する事でRBLをチェック、リストに該当すれば排除します。
最後に「permit」として、それ以外は許可するという設定例です。

この設定によりチンケな迷惑メールは大方排除できるのですが、稀に正常な送信元がブラックリストに登録されている事があり、メールが届かないといったトラブルが発生しますので、その場合は一旦該当サービスを外して、リストから該当IPアドレスを削除する申請を行う必要があります。実体験として今まで2件ほどありました。

個別のブラックリストの設定

「smtpd_client_restrictions」の「check_client_access」というパラメータで、個別にドメインやIPアドレスを指定して許可したり排除したりできます。今回は攻撃回数が多いIPアドレスを排除するのですが、IPアドレスはコロコロ変わるものの、ご丁寧に「91.200.12.」の範囲になっていたので「91.200.12」という指定で設定します。また設定は「reject_client」というファイルを作り、postmapでdbファイルを作成するやり方で設定しました。
※「check_client_access」パラメータを上記RBL関連の設定とまとめて記述しています。

91.200.12 REJECT
smtpd_client_restrictions =
  permit_mynetworks,
  reject_rbl_client all.rbl.jp,
  reject_rbl_client bl.spamcop.net,
  reject_rbl_client zen.spamhaus.org,
  check_client_access hash:/etc/postfix/reject_client,
  permit

記述が完了すれば以下のコマンドで「reject_client.db」を作成してpostfixを再起動すれば完了です。

# postmap /etc/postfix/reject_client
# postfix reload



Photo credit: Lorie Shaull on Visualhunt.com / CC BY-SA

memento-mori