自分のドメイン以外のFROMアドレスを持つアウトバウンドメッセージを受け入れないようにPostfixを設定しようとしています。
次の正規表現は、3つのドメインのみを正常に拒否します。
/etc/postfix/header_checks:
/(^From:.*domain\.com|^From:.*domain\.net|^From:.*domain\.co\.il)/ REJECT SEND FROM THE RIGHT DOMAINS FFS!
基本的にそれを逆にして、すべてをブロックしたいのですが、それらの3つです。
したがって、マニュアルによると:
!/ pattern/flags resultパターンが入力文字列と一致しない場合は、対応する結果値を使用してください。
ただし、これはすべてをブロックするだけです。
/etc/postfix/header_checks:
!/(^From:.*domain\.com|^From:.*domain\.net|^From:.*domain\.co\.il)/ REJECT SEND FROM THE RIGHT DOMAINS FFS!
問題は、everyヘッダー行の接尾辞使用header_checksです。したがって、次のようなヘッダー行がある場合
Subject: I love you :p
接尾辞はその正規表現をこの行に適用します。その結果、接尾辞はこのメールを拒否します。
解決策は、正規表現パターンにif endif
を追加することです。
if /^From:/
!/(^From:.*domain\.com|^From:.*domain\.net|^From:.*domain\.co\.il)/ REJECT SEND FROM THE RIGHT DOMAINS FFS!
endif
基本的に、パターンをFromヘッダーにのみ適用するようにpostfixに指示します。これにより、postfixが正規表現を別のヘッダー行に評価するのを防ぎ、電子メールを拒否します。
詳細については、 接尾辞マニュアル を参照してください。