web-dev-qa-db-ja.com

PostfixのFromヘッダーとReply-Toヘッダーを条件付きで書き換えます

Amazon AWSで実行されているWebアプリがあり、AmazonSESを使用してメールを送信しています。私がこのシステムに本当に望んでいることの1つは、メールを送信した人から特定のアドレスにメールを転送できるようにすることです。 。

エイリアスを使用してこれを実行しようとしましたが、Amazon SESの制限により、未確認の送信者からのメールの送信が許可されていないため、機能しません。確認済みのメールアドレスから[email protected]にメールを送信した場合は正常に機能しますが、未確認のアドレスからメールを送信した場合は機能しません。

ですから、私がやりたいのは、contact @ mysite.com(および[email protected]などの他のアドレス)に送信されるメッセージのFromヘッダーとReply-Toヘッダーを書き直すことです。元のFromヘッダーをReply-Toヘッダーに移動してから、Fromヘッダーを[email protected](またはこのようなもの)に変更したいと思います。例えば:

From: "Bruce Wayne" <[email protected]>
To: "MySite Support" <[email protected]>

になります

From: "Mail Services" <[email protected]>
Reply-To: "Bruce Wayne" <[email protected]>
To: "MySite Support" <[email protected]>

エイリアスファイルに[email protected]が定義されており、それが個人の電子メールに変換されます。エイリアスのものがheader_checksまたはこれを解決するために必要なものによってどのように影響を受けるかはわかりません。

他の電子メールを私のWebアプリに送信するキャッチオールエイリアスもあるので、このヘッダー書き換え全体は、上記のように非常に特定のアドレスに対してのみ必要/必要なものです。

正規表現を使用して単一のヘッダーを書き換えるのは簡単に思えますが、ここでわからないことは次のとおりです。

  1. toヘッダーのアドレスに基づいて条件付きで書き換え、
  2. fromヘッダーの値に基づいてReply-Toヘッダーを書き換えます。

誰かが私にこれらの2つの問題に対処する方法についてのいくつかの指針を与えることができますか?または、私がこの問題を間違った方法で見ている場合は、どの方向でも大歓迎です。

更新-header_checksにif/endifステートメントがあることをどういうわけか見逃しました。私はこのようなことをしようとしていますが、ヘッダーチェックは何もしていないようです:

if /^To: ([email protected]|[email protected])/
/^From:(.+@.+).*$/ PREPEND Reply-To:$1
/^From:(.+@.+).*$/ REPLACE From: [email protected]
endif

Main.cfに次の行を追加しました。

header_checks = pcre:/etc/postfix/header_checks

このファイルをポストマップすることになっているのかどうかは不明です。私はそれをすることとしないことの両方を試みました、そしてそれは違いがありませんでした。

私がここで間違っていることは明らかですか?

3
bratsche

IFパターンは、IFとENDIFの間の他のパタ​​ーンと同じ行に一致するため、ステートメントでTo:ヘッダーとFrom:ヘッダーを混在させることはできません。 header_checks(5)のマニュアルページのバグを参照してください。

2
user181193

特定の設定をテストしていませんが、To正規表現がヘッダー全体で一致するはずです。つまり、裸のメールアドレスがある場合にのみ一致しているように見えます。一致させたい場合は'To: "MySite Support" <[email protected]>'、次に使用する必要があります:

if /^To:.*([email protected]|[email protected])/

または、「[email protected]」などを除外するより複雑なもの。

0
Nigel