exim は、1 つのルータに対してのみエンベロープを書き換えます。

exim は、1 つのルータに対してのみエンベロープを書き換えます。

ルーターにheaders_addを追加することはできますが、ルーター内または実際にルーターによってトリガーされたのと同じ条件を使用して、どこでもSMTP From(別名Envelope-From)を変更する方法はありません。

非常に少ない exim "エイリアス" 型リスト拡張の​​ Postman 動作をエミュレートする必要があります。

例:誰かが私に電子メールを送信した場合:[Eメール保護]アドレスはリダイレクトルータによって部分的に処理されます。その時SMTP Fromをローカルに再作成しますか?[Eメール保護]

郵便局が物を処理する方法に似ています。主な理由は、次のステップメールゲートウェイのSPFと外部ユーザーが送信したメールです。

条件付き書き換え規則を試しましたが、正直に言うと、以前にこれらの作業を行ったことがないため、ブロックされました。

とても感謝しています、

チーム

答え1

ルーターのエンベロープ送信者を上書きするには、そのルーターで "errors_to"アクションを使用してください。

errors_to = [email protected]

http://www.exim.org/exim-html-current/doc/html/spec_html/ch-generic_options_for_routers.html 部分的には次のように言います。

error_toが設定されたアドレスが最終的にSMTPを介して転送される場合、その転送のエンベロープ送信者はerror_to値であるため、転送パスの他のMTAによって生成されたバウンスもそこに送信されます。

答え2

最も簡単な方法は、おそらくスクリプト/バイナリパイプラインを使用して任意の変換を実行することです。

begin routers
pass2script:
  driver    = accept
  transport = myscript
  condition = ## every distinction you need ##  

交通手段:

begin transports
myscript:
  driver  = pipe
  command = /path/to/script 

stdinヘッダー、空白行、本文を含むメッセージ全体がスクリプト/バイナリに渡されます。スクリプトを読んで続行したら、変換されたメッセージをローカルに再送信するコマンドをstdin実行する必要があります。sendmail -t私が考えることができる最も簡単なスクリプトは次のスクリプトです。

#!/bin/sh

cat /dev/stdin \
| sed '1 s/[email protected]/[email protected]/' \
| sendmail -t

####

exim変更されたメッセージが受信され、ジョブは通常どおり進行します。ルーティングループが生成されず、メッセージがスクリプトに引き続き配信されないことを確認する必要があります。

eximまた、ユーザーにスクリプト、特にラップされたコマンドを実行するのに十分な権限があることを確認する必要がありますsendmail -t。おそらくsudoルールを正しく設定する必要があります。

関連情報