CentOS7

postfix 送信元(From)によるメール拒否

smtpd_sender_restrictions

check_sender_access

テーブルファイルを参照させる場合に良く使用されるのはテーブルの種類は、テーブルファイルをhash化したDBを参照する方法(hash:/~)と、正規表現で記述されたテーブルファイルを参照する方法(regexp:/~)があります。

※hashを使用する場合は、ルールファイルを作成後「postmap」コマンドでテーブルファイルをhash化させる必要があります。

reject_unknown_sender_domain

送信元ドメインが存在しているかを確認しドメインが存在しない(DNSのMX、Aレコードに存在しない)場合拒否します。

reject_non_fqdn_sender

送信元のアドレス形式を確認し、送信元のアドレスがFQDN形式でない場合拒否します。

main.cf設定

「/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 メールアドレス 拒否方法

拒否ドメイン 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

postmapによるhash化

テーブル形式に「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

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS