web-dev-qa-db-ja.com

接尾辞:特定のドメインにのみheader_checksを適用する方法は?

基本的に私がやりたいのは、header_checksを使用してFrom:ヘッダーを書き換えることですが、メールが特定のドメインに送信される場合に限ります。

Header_checkの問題は、To:ヘッダーとFrom:ヘッダーの組み合わせをチェックできないことです。

今、私は、header_checksをsmtpd_restriction_classesまたは同様のものと組み合わせて使用​​することが可能かどうか疑問に思いました。

ネットを検索すると、header_checksと複数のヘッダーフィールドに関する多くの情報が見つかりました。それらのすべては基本的に私に、チェックのために2つのヘッダーを組み合わせることができないと言っています。しかし、条件(たとえば、メールがexample.comに送信される)が満たされた場合にのみヘッダーチェックを実行できる場合、情報は見つかりませんでした。


編集

さらに調査を行っていると、次のことがわかりました article postfix master.cfにサービスを追加することを提案し、トランスポートマップを使用してドメインのメールをそのサービスに渡し、別のheader_checkを定義します。 -o。

問題は、それを機能させることができないということです...

これまでに行ったことは、master.cfにサービスを追加することです。

example      unix  -       -       n       -       -       smtpd
    -o header_checks=regexp:/etc/postfix/check_headers_example

次の行をトランスポートマップに追加します。

example.com                 example:

最後になりましたが、ヘッダーチェック用の2つの正規表現ファイルがあります。1つは新しく追加されたサービス用で、もう1つは書き換えられたドメインに回答をリダイレクトするためのものです。

check_headers_example:

/From:(.*)@mydomain.ain>(.*)/ REPLACE From:[email protected]>$2

明らかに誰かが答えると、メールはニルヴァーナに送られるので、メインの接尾辞プロセスで次の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:

私がこの質問をした理由は、メールをドメインに転送するいくつかのエイリアスを使用する顧客(customer.comなど)がいるためです。たとえば、example.comです。

Example.comのメールサーバーは、送信者@ example.comからの外部サーバーからのメールを受け入れません。

したがって、example.comから[email protected]に書き込まれるすべてのメールは、最終的に拒否されます。

Example.comのメールサーバーでの例外は不可能です。

この問題は実際には解決しませんでしたが、エイリアスの代わりにリスト(mailman)を使用して回避しようとします。しかし、これは本当に素晴らしいことでも、実際の解決策でもありません。

これを適切な方法で行う方法について、すべての提案をいただければ幸いです。

2
Lukas

あなたが望むことを達成できたかどうかはわかりません。私は同様のことをテストしていて、ドメインごとにキーワードフィルタリングなどが必要でしたが、ドメインごとに、またはpostfixのマルチインスタンス機能を使用して必要なドメインに対してheader_checksを使用できました。

インスタンスを作成し、その特定のインスタンスのSMTPポートを変更するだけです。プライマリインスタンスでtransport_mapsを使用して、特定のドメインの電子メールをセカンダリインスタンスのSMTPポートにルーティングします。そして、そこですべてのheader_checksを実行し、電子メールを中継します!

乾杯!

2
Gaumire

新しいサーバーをセットアップし、トランスポートファイルを使用して処理するすべてのドメインをルーティングしてから、新しいサーバーにheader_checksルールを適用できます。

0
Anita Salerno