web-dev-qa-db-ja.com

Postfix Header_Check Regex'Does NotMatch 'の問題

自分のドメイン以外の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!
1
JustAGuy

問題は、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が正規表現を別のヘッダー行に評価するのを防ぎ、電子メールを拒否します。

詳細については、 接尾辞マニュアル を参照してください。

4
masegaloeh