web-dev-qa-db-ja.com

Postfix:エンベロープ送信者ではなくFrom:メールヘッダーに基づいてリレーホストを選択する

SASLとsender_dependent_relayhost_mapsを使用してMySQLテーブルでMandrill経由でメールをリレーするようにPostfixを正常に設定し、異なる送信者が独自のMandrillユーザー名とAPIキーを使用してMandrillに接続するようにしました。

これまでのところ良好ですが、3人のユーザーがすべてメールサービスプロバイダーを使用しており、メッセージエンベロープの送信者は3人のユーザーすべてに対して「[email protected]」に設定されており、実際のユーザーのメールが含まれる唯一の場所ですアドレスはFrom:電子メールヘッダーにあります。

From:メールヘッダーを使用することのセキュリティ(またはその欠如)に満足しています。厳密に制御されている特定のメールアドレスに送信されたメールのみを転送しているので、本当に感謝しています。 From:ヘッダーの値に基づいてrelayhostを最適に指定する方法についての提案。エンベロープ値をFromフィールドと同じに設定する方法はありますか?またはこれを行う他の方法は?

9
Adrian Savage

Postfixメーリングリストのこのスレッドに基づいて: sendmail(1)を介して導入されたすべてのメールの異なるトランスポート 、あなたのケースは可能だったようです。残念ながら、2つのテーブルsender_dependent_relayhost_mapssmtp_sasl_password_mapsだけに依存することはできません。 master.cfを変更する必要があります。アイデアはheader_checksを使用して電子メールを別のトランスポートにルーティングすることです。次に、各トランスポートで、独立した資格情報とrelayhostを使用するsmtpクライアントを定義します。

まず、main.cfとそのpcreテーブルでheader_checksを定義します

#main.cf
header_checks = pcre:/etc/postfix/header_dependent_relay

#/etc/postfix/header_dependent_relay

/^From:.*specialsender1\@example\.com/       smtp1:[Host1.example.com]
/^From:.*specialsender2\@example\.com/       smtp2:[Host2.example.com]
/^From:.*specialsender3\@example\.com/       smtp3:[Host3.example.com]

これで、master.cfにsmtp1smtp2smtp3トランスポートを設定しました

#master.cf
smtp1    unix  -       -       -       -       10       smtp
    -o smtp_sasl_password_maps=hash:/etc/postfix/smtp1.relay
smtp2    unix  -       -       -       -       10       smtp
    -o smtp_sasl_password_maps=hash:/etc/postfix/smtp2.relay
smtp3    unix  -       -       -       -       10       smtp
    -o smtp_sasl_password_maps=hash:/etc/postfix/smtp3.relay

ファイルsmtpX.relayには同様のコンテンツがあります。

[hostX.example.com]   userX:passwordX

免責事項:

5
masegaloeh

これは私にとって1つの変更で機能しました。アクション「FILTER」をheader_dependent_relayファイルに追加する必要があります。

#/etc/postfix/header_dependent_relay

/^From:.*specialsender1\@example\.com/       FILTER smtp1:[Host1.example.com]
/^From:.*specialsender2\@example\.com/       FILTER smtp2:[Host2.example.com]
/^From:.*specialsender3\@example\.com/       FILTER smtp3:[Host3.example.com]

を参照してくださいhttp://www.postfix.org/header_checks.5.html

0
Aurel