ローカル開発をセットアップしていますVMそしてローカルメールボックスに送信されたすべての電子メールをリダイレクトすることができましたエントリvirtual_alias_maps
で/.*/ username
を使用します。
追加したいのは、notメールをローカルメールボックスにリダイレクトするオプションですifメールに特定のヘッダーが含まれています。
言い換えれば、送信メールに特定のヘッダーが見つかった場合は送信しますが、ヘッダーがない場合はローカルメールボックスにリダイレクトする必要があります。
Postfixを使用してこれをどのように達成できますか?
あなたの助けをどうもありがとう!
Tpml7からの擬似コードのスキャッピング
if header exist (postfix will checks via header_cheks)
no rewrite --> different instance
else
rewrite with virtual_alias_maps same instance
AFAIKポストフィックスは、特定のヘッダーが存在する場合に電子メールをリダイレクトできます。 man header_checks のREDIRECT機能を参照してください。
残念ながら、上記の擬似コードに基づいて、リクエストはメールをリダイレクトしています特定のヘッダーが存在しない場合。私はすでにいくつかの簡単な回避策を試しました。しかし、リクエストが直接サポートされていなかったため、このソリューションは少し複雑でした。特に、このソリューションは postfix multi instance について学習するために必要です。
私はここに概要を書きます-正確なステップバイステップではありません-、何かがまだ曖昧であるかどうか気軽に尋ねてください。
これを行うには、2つのマルチインスタンスが必要です。最初のインスタンスはheader_checksを実行し、2番目のインスタンスは通常の送信を実行しています。
最初のインスタンスには、master.cf
で定義された2つのsmtpdデーモンがあります。 1つのデーモン(デフォルト)は*:25でリッスンし、2番目のデーモンは127.0.0.1:12525でリッスンします。
2番目のインスタンスは127.0.0.1:22525でリッスンします
##main.cf
# your header filter
header_checks = pcre:/path/to/header_checks
# no rewriting
receive_override_options = no_address_mappings
# send to second instance
relayhost = [127.0.0.1]:22525
virtual_alias_maps = pcre:/your/catch-all
##master.cf
# second smtpd but with rewriting enabled
[127.0.0.1]:12515 inet n - n - - smtpd
-o receive_override_options=
# /path/to/header_checks
/^MyHeader/ FILTER smtp:[127.0.0.1]:12525
Header_checks、relayhost、virtual_alias_maps、receive_override_options(通常の接尾辞のインストール)を使用せずに、最初の接尾辞インスタンスのように設定するだけです。 [127.0.0.1]:22525でのみリッスンするようにmaster.cfを設定します。 myhostname
を設定して、最初のインスタンスとは異なるようにします。
まず、master.cf
で2つのsmtpdプロセスを定義します。1つはリライトが有効で、もう1つはリライトが無効です。書き換えが有効になっているSMTPDは、デフォルトでmaster.cfに存在していました。今、私たちはこれらの行になります
127.0.0.1:2525 inet n - n - 2000 smtpd
-o receive_override_options=no_header_body_checks,no_address_mappings
これにより、別のsmtpdプロセスが有効になります
ここにあなたの要求の擬似コードがあります
if header exist (postfix will checks via header_cheks)
no rewrite
else
rewrite with virtual_alias_maps
そのロジックを header_checks で実装します。
この行をmain.cf
に追加します
header_checks = regexp:/etc/postfix/mycustomheader
/etc/postfix/mycustomheader
の内容
/^X-Your-Header/ FILTER smtp:[127.0.0.1]:2525
PostfixがメッセージでX-Your-Headerを検出すると、前に定義したように、電子メールを2番目のsmtpdプロセスにリダイレクトします。ヘッダーが存在しない場合、電子メールは書き換えが有効になっているデフォルトのsmtpdプロセスを通過します。