Postfixで特定のIPアドレスやホスト名のアクセスを拒否をする
2023年10月08日 更新
概要: Postfixでhashやregexpを使用したアクセス制御の説明
基本設定
アクセス制御を有効するにあたり、main.cfを編集
$ vi /etc/postfix/main.cf
smtpd_client_restrictions = permit_mynetworks, regexp:/etc/postfix/filename, permit
smtpd_client_restrictions では指定したオプションの順に、要求の可否を判定する。
permit_mynetworks: mynetworksで指定したIPアドレスからの要求は許可
regexp:/etc/postfix/filename: /etc/postfix/filename ファイルで指定したIPアドレスやホスト名から要求の可否を判定する
permit: 上記2つに当てはまらない接続(mynetworksで未指定かつ、reject_senderでも未指定のIPアドレスやホスト名)を許可する
上記の「regexp:」の部分は「hash:」とすることもできる。
hash:/etc/postfix/filename
regexp では正規表現を用いてIPアドレスやホスト名を指定できる。hash は正規表現を用いずにIPアドレスやホスト名を指定するが、その後に postmap コマンドを実行する手順が必要になる。
regexp による設定例
正規表現では「/hostname/」のように半角スラッシュで囲む。ファイル名は reject_sender とした。
$ vi /etc/postfix/reject_sender
/amazonaws\.com$/ REJECT
/^12\.345\.67\.89$/ REJECT
この例の場合、まずホスト名の末尾が amazonaws.com に一致するホストを拒否する設定になっている。 abc.amazonaws.com や 123.amazonaws.com が拒否の対象となる。
次行では、IPアドレスが 12.345.67.89 に完全一致する場合に拒否としている。
hash による設定例
$ vi /etc/postfix/reject_sender
amazonaws.com REJECT
sub.amazonaws.com REJECT
12.345.67.89 REJECT
12.345.67 REJECT
12.345.67 は、12.345.67.0/24と同義である。
設定ファイルを書いたら、DBを更新する。
$ postmap /etc/postfix/reject_client
上記のコマンドを実行することで、reject_clientと同じディレクトリに reject_sender.db が生成される。
最後にPostfixの再読み込みを実行
Postfix を再読み込みする。
$ systemctl reload postfix