web-dev-qa-db-ja.com

Postfix header_checksが機能しない

Main.cf設定があります:

header_checks = regexp:/etc/postfix/header_checks

そして/etc/postfix/header_checks

/^Subject:.*viagra.*/i DISCARD
/^Subject:.*pills.*/i DISCARD
/^Subject:.*f\*ckbuddy.*/i DISCARD
/^Subject:.*f\*ckfriend.*/i DISCARD
/^Subject:.*f\@ck.*/i DISCARD

/^From:.*viagra.*/i DISCARD

大文字と小文字を区別しないように/iを追加したことに注意してください。これが可能かどうかわかりませんか?

件名に丸薬が含まれているhotmailからサーバーにメールを送信しようとしましたが、まだうまくいきません!また、DISCARDの代わりに送信者への戻りメソッドがありますか?

5
maxmitch

postmap -q "<put test header here>" regexp:/etc/postfix/header_checksが正しくDISCARD(または一致する適切なアクション)を返しているが、postfixが実際にそのアクションを実行していない場合、receive_override_options=no_header_body_checksまたはmain.cfのどこかに、ヘッダーチェックをオフにしているmaster.cfがある可能性があります。 master.cfファイルでは、サービス構成エントリの1つにある-oオプションになります。

receive_override_optionsには4つのオプションがあります。

  • no_unknown_recipient_checks不明な受信者を拒否しないでください(SMTPサーバーのみ)。これは通常、外部コンテンツフィルターの後で指定されます。
  • no_address_mappings正規アドレスマッピング、仮想エイリアスマップ拡張、アドレスマスカレード、および自動BCC(ブラインドカーボンコピー)受信者を無効にします。これは通常、外部コンテンツフィルターの前に指定されます。
  • no_header_body_checks header/body_checksを無効にします。これは通常、外部コンテンツフィルターの後で指定されます。
  • no_milters Milter(メールフィルター)アプリケーションを無効にします。これは通常、外部コンテンツフィルターの後で指定されます。

no_address_mappingsオプションは通常main.cfにあり、他のオプションはmaster.cfにあります。

"-o receive_override_options"はmain.cf設定を上書きして、コンテンツフィルターの前にすでに行われた作業の重複を回避します。これらのオプションは、main.cfで指定されているオプションを補完します。

ソース: Postfix After-Queue Content Filter

5
Ryan H.

header_checks(5)マニュアルページには、しばらくの間、すべての正規表現のデフォルトは大文字と小文字を区別しないものとして表示することであるという段落があります。

互換性
Postfixバージョン2.2以前では、「postmap -fq」を指定して、大文字と小文字を区別するパターンを含むテーブルをクエリします。デフォルトでは、regexp:およびpcre:パターンは大文字と小文字を区別しません。

したがって、正規表現にフラグを追加しても問題は解決しません。

他の人が述べたように、あなたの最初のステップはそれがで動作することを確認することです:

postmap -q "<string to test--i.e. Subject: Viagra>" /etc/postfix/header_checks.re

出力はラインのアクションになります。 (あなたのケースではDISCARD

それが機能する場合は、他の人が述べたように、ヘッダーを含める行が含まれていないか、含めることができない行が不足している可能性があります。

header_checks = regexp:/etc/postfix/header_checks.re

あなたはそこにその行があると言っているので、後者は多くの問題です。

.re拡張子。それは重要ではないと思いますが、ファイルに何が含まれているかを知るために、なんらかの拡張子を付けることをお勧めします。

1
Alexis Wilke
  • regex:およびpcre:パターンは、デフォルトでは大文字と小文字を区別しません。ただし、iフラグは機能します。
  • 送信者に通知するには、REJECTの代わりにDISCARDを使用できます。
  • postmap /etc/postfix/header_checksを使用してPostfixをリロードしましたか?
  • 多くのサイトで正規表現をオンラインでテストできます。 http://www.pagecolumn.com/tool/pregtest.htm は、POSIX正規表現を許可します。
  • 可能であれば、pcre正規表現を使用すると、通常、Posix実装をregexp:で使用するよりも高速になります。 header_checks = pcre:/etc/postfix/header_checksを使用

  • ログファイルは何を言っていますか?

1
Sven

@ HZCが言うように、それは-o receive_override_optionsの問題である可能性があります。私はここで同じ問題を抱えていました: 私の問題 そして、ポスト regexp適切なセットアップを使用したpostfix header_checks に従って解決しました。私のケースは[〜#〜] reject [〜#〜]ではなく[〜#〜] discard [ 〜#〜]。スパマーをごまかしたい場合にDISCARDを使用すると、スパマーは通知を受け取りません。これについての詳細は、 このリンク にアクセスして、REJECTS ACTIONSセクションを参照してください。

廃棄eストラクチャ:

              DISCARD optional text...
              Claim successful delivery and silently discard the message.  Log
              the optional text if specified, otherwise log a generic message.
0
Ophion