基本的に私がやりたいことは、メールが特定のドメインに送信される場合にのみ、header_checks を使用して From: ヘッダーを書き換えることです。
header_check の問題は、To: ヘッダーと From: ヘッダーの組み合わせをチェックできないことです。
ここで、header_checks を smtpd_restriction_classes などと組み合わせて使用できるかどうか疑問に思いました。
ネットで検索すると、header_checks と複数のヘッダー フィールドに関する情報がたくさん見つかりました。基本的に、それらはすべて、チェックのために 2 つのヘッダーを組み合わせることはできないと言っています。しかし、条件 (メールが example.com に送信されるなど) が満たされた場合にのみヘッダー チェックを実行できるかどうかに関する情報は見つかりませんでした。
編集:
さらに調査を進めるうちに、次のことがわかりました記事これは、postfix master.cf にサービスを追加し、トランスポートマップを使用してドメインのメールをそのサービスに渡し、-o で別の header_check を定義することを提案しています。
問題は、それが機能しないということです...
これまでに行ったことは、master.cf にサービスを追加することです。
example unix - - n - - smtpd
-o header_checks=regexp:/etc/postfix/check_headers_example
トランスポートマップに次の行を追加します。
example.com example:
最後になりましたが、ヘッダー チェック用の 2 つの正規表現ファイルがあります。1 つは新しく追加されたサービス用で、もう 1 つは書き換えられたドメインに応答をリダイレクトするためのものです。
チェックヘッダーの例:
/From:(.*)@mydomain.ain>(.*)/ REPLACE From:[email protected]>$2
明らかに誰かが返信すると、メールは天国に送られるので、メインの postfix プロセスで次の check_headers を定義しています。
/To:(.*)<(.*)@mydomain.example.com>(.*)/ REDIRECT [email protected]$2
何らかの理由でトランスポートが無視されます。 ご協力いただければ幸いです。
編集2:
まだ行き詰まっています...次のことを試しました:
smtpd_restriction_classes = header_rewrite
header_rewrite = regexp:/etc/postfix/rewrite_headers_domain
smtpd_recipient_restrictions = (some checks) check_recipient_access hash:/etc/postfix/rewrite_table, (more checks)
にはrewrite_table
次のエントリが存在します:
/From:(.*)@mydomain.ain>(.*)/ REPLACE From:[email protected]>$2
得られるのは だけですNOQUEUE: reject: 451 4.3.5 Server configuration error
。 それをどうやって行うかというリソースは見つかりませんでしたが、不可能だと言っている人もいます。
編集3:
この質問をした理由は、メールをドメイン(example.com とします)に転送するエイリアスを使用している顧客(customer.com とします)がいるからです。
example.com のメール サーバーは、送信者 @example.com から送信された外部サーバーからのメールを一切受け入れません。
つまり、example.comから送信されるすべてのメールは[メールアドレス]最終的には拒否されます。
example.com のメールサーバーでの例外は不可能です。
この問題は実際には解決されていませんが、エイリアスの代わりにリスト (mailman) を使用して回避策を試みます。ただし、これはあまり良い方法ではなく、実際の解決策でもありません。
これを適切に行う方法について、あらゆる提案をいただければ幸いです。
答え1
希望どおりに実行できたかどうかはわかりません。私も同様のことをテストしていましたが、ドメインごとにキーワード フィルタリングなどが必要で、ドメインごとに、または postfix のマルチ インスタンス機能を使用して必要なドメインに対して header_checks を使用することができました。
インスタンスを作成し、その特定のインスタンスの SMTP ポートを変更するだけです。プライマリ インスタンスの transport_maps を使用して、特定のドメインの電子メールをセカンダリ インスタンスの SMTP ポートにルーティングします。そして、そこですべての header_checks を実行し、電子メールを中継します。
乾杯!
答え2
新しいサーバーをセットアップし、トランスポート ファイルを使用して処理するすべてのドメインをルーティングしてから、新しいサーバーに header_checks ルールを適用できます。