smtpd_sender_restrictions
テーブルファイルを参照させる場合に良く使用されるのはテーブルの種類は、テーブルファイルをhash化したDBを参照する方法(hash:/~)と、正規表現で記述されたテーブルファイルを参照する方法(regexp:/~)があります。
※hashを使用する場合は、ルールファイルを作成後「postmap」コマンドでテーブルファイルをhash化させる必要があります。
送信元ドメインが存在しているかを確認しドメインが存在しない(DNSのMX、Aレコードに存在しない)場合拒否します。
送信元のアドレス形式を確認し、送信元のアドレスがFQDN形式でない場合拒否します。
「/etc/postfixmain.cf」の最後に以下の内容を追記します。
今回は「reject_unknown_sender_domain」と「reject_non_fqdn_sender」も一緒に設定していきますが、必要ない場合は設定しなくてもかまいません。
# vi /etc/postfix/main.cf |
smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/reject_sender, reject_unknown_sender_domain, reject_non_fqdn_sender |
拒絶するメールを記載したテーブルファイルを作成します。
制限するメールのルールは下記の書式で記述することになります。
拒否するドメイン or メールアドレス 拒否方法 |
拒否するメールの「From」の指定は、ドメイン全体や個別のメールアドレスで指定することが出来ます。
拒否方法の指定
拒否方法は通常「REJECT」か「DISCARD」のどちらかを指定すればよいでしょう。
メール送信元にエラーメッセージを返したい場合は「REJECT」を指定して、エラーメッセージを返したくない場合は「DISCARD」を指定します。
設定例
下記の例では、「From」が「example.jp」ドメインからの場合はすべて(ドメイン全体を指定)「REJECT」し、「user@example.com」からのメール(個別のメールアドレスを指定)は「DISCARD」させるといった内容になります。
# vi /etc/postfix/reject_sender |
example.jp REJECT user@example.com DISCARD |
テーブル形式に「hash」を指定した場合、そのままでは設定した作成したファイルの内容が「postfix」に読み込まれないので、「postmap」コマンドを使用して作成したファイルからhash化したDBファイルを作成します。
# postmap /etc/postfix/reject_sender |
これで「reject_sender.db」というhash化されたファイルが作成されます。
※「check_sender_access hash:/etc/postfix/reject_sender」といったように、テーブルファイルとして「reject_sender」を指定していますが実際には今作成した「reject_sender.db」が参照されています。
作成されたファイルは「strings」コマンドを使用することで中身の確認をすることが出来ます。
# strings /etc/postfix/reject_sender.db |
REJECT example.jp DISCARD example.com |
テーブルファイルが完成しましたら「postfix」を再起動させて設定を反映させます。
CentOS7であれば「systemctl」コマンドで再起動させます。
# systemctl restart postfix |