【Linux入門】Postfixで接続元IPアドレスを元にアクセス制限を設定

サーバ・ネットワーク
スポンサーリンク

以前の記事で、自社で運用しているPostfixのメールサーバーに、海外からSMTP-AUTHの認証を試行するアクセスが大量に存在することが、Postfixのログにて確認できました。
その為、今回はその対策編として、接続元IPアドレスを元にアクセス制限を掛ける方法を紹介します。
また、上記の「接続元IPアドレス」と共に、「スパムメール送信元ブラックリスト」のデータベースもアクセス制限条件に含める方法も併せて紹介していきます。

↓前回の記事はこちら

【Linux入門】初心者向けPostfixのログの見方とログ調査時のポイント
今回はLinux環境でPostfixを使ってメールサーバーを運用している場合の簡単なログの見方やログの確認ポイントをLi...

前提条件(動作環境)

当記事で使用している環境は以下です。
※環境は古いのですが、大まかには同じ設定がそのまま使用できるはずです。

■バージョン情報
CentOS:5.11
Postfix:2.8.3

Postfixの接続元IPアドレス制限手順

当項では、Postfixにて接続元IPアドレスを元にアクセス制限を掛ける設定箇所や手順を紹介していきます。

Postfix設定ファイル「main.cf」の編集

Postfixでは「main.cf」ファイルの記述を変更、加筆することで様々な設定が可能です。
まずは以下のコマンドで「main.cf」ファイルを開きます。
※ファイルパスは以下と異なる可能性もあるので必要によってご確認ください。

# vi /etc/postfix/main.cf

開いた「main.cf」ファイルの最終行に以下の内容を追記してください。

#SMTP接続制限設定
smtp_client_restrictions = reject_rbl_client bl.spamcop.net,
 reject_rbl_client b.barracudacentral.org,
 reject_rbl_client psbl.surriel.com,
 reject_rbl_client multi.surbl.org,
 reject_rbl_client csi.cloudmark.com,
 check_client_access hash:/etc/postfix/reject_client,
 permit
■設定内容解説
smtp_client_restrictions
SMTPサーバーがクライアントからSMTP接続の要求を受けた際に適用する、オプションのアクセス制限を指定します。

詳しい仕様は以下のリンク先のPostfix公式マニュアルを参照してください。

reject_rbl_client
「reject_rbl_client」と記述されている行が5行存在します。
これは「RBL(Real-time Blackhole List)」と呼ばれるスパムメール送信元データベースからREJECT対象の送信元を判別させる為の記述です。
今回はIPアドレスを指定したアクセス制限以外にも、各団体などが管理しているスパムメール送信元リストもアクセス制限の判定条件に加えることします。

RBL(DNSBL)とは、についてはWikipediaの記事を参考にしてください。

今回の設定例に記述したRBLのリストは

の「Multi-RBL Check」処理で利用されていたRBLの一覧から当方で抜粋したものです。

check_client_access
アクセス制限を掛ける接続元のIPアドレスやホスト名などを指定します。
対象行では hash: と記述が続いており、データベース化したファイルを参照する指定内容にしてあります。
データベース化については後述します。

permit
最終行に permit が記述されています。
これはアクセス制限対象か否かを上から順番に評価されていき、上記の各条件に当てはまらなかったら permit(許可)と指定しています。
ただ、実際にはこの permit を記述しなくても許可されます。
視覚的にルールがわかりやすいので、明示的に書いておくことをおススメします。

アクセス制限対象db作成

今回は接続元IPアドレスを元にアクセス制限を掛ける為、その対象となるIPアドレスのリストを用意し、Postfix用のdbファイルを作成します。
まずは以下のコマンドでアクセス制限対象リスト用ファイルを作成します。

# vi /etc/postfix/reject_client

尚、ファイル「reject_client」は別の名前でも問題ありませんが、その場合は上項の「main.cf」内の「smtp_client_restrictions」でも同じファイルを指定してください。

今回は以前の記事の続きの作業で、接続元がロシアのIPアドレスの場合に制限を掛けようと思います。
その為、ファイル「reject_client」には以下の記述を入れて保存します。

45.142.120.0/24 REJECT

Postfixの公式マニュアルでは以下の様な記載でも問題無い様ですが、今回の環境はバージョンも古いので一応省略せずに記載することにしました。

45.142.120 REJECT

尚、当ファイルへの記述する際の書式の詳細は以下の公式マニュアルを参照してください。

作成したアクセス制限対象リストのファイルをdb化します。
以下のコマンドを実行します。

# postmap /etc/postfix/reject_client

ディレクトリ /etc/postfix/reject_client.db という名称のファイルが生成されていれば成功です。

Postfixの設定ファイルを再読み込みして変更を適用

上記作業で変更した設定をPostfixに適用します。
当環境のPostfixでは以下のコマンドで再読み込みを実行します。

postfix reload

Postfixのバージョンによって reload のコマンドは異なりますのでご確認ください。

その後、対象のIPアドレスが適切にREJECTされていれば作業は成功です。

最後に

今回はLinux初心者向け記事として、Postfixの smtp_client_restrictions の設定を追加して、接続元IPアドレスを元にアクセス制限を掛ける方法を紹介しました。

今回も読んでいただきましてありがとうございました。
それでは皆さまごきげんよう。