SASLとsender_dependent_relayhost_maps
を使用してMySQLテーブルでMandrill経由でメールをリレーするようにPostfixを正常に設定し、異なる送信者が独自のMandrillユーザー名とAPIキーを使用してMandrillに接続するようにしました。
これまでのところ良好ですが、3人のユーザーがすべてメールサービスプロバイダーを使用しており、メッセージエンベロープの送信者は3人のユーザーすべてに対して「[email protected]」に設定されており、実際のユーザーのメールが含まれる唯一の場所ですアドレスはFrom:電子メールヘッダーにあります。
From:メールヘッダーを使用することのセキュリティ(またはその欠如)に満足しています。厳密に制御されている特定のメールアドレスに送信されたメールのみを転送しているので、本当に感謝しています。 From:ヘッダーの値に基づいてrelayhostを最適に指定する方法についての提案。エンベロープ値をFromフィールドと同じに設定する方法はありますか?またはこれを行う他の方法は?
Postfixメーリングリストのこのスレッドに基づいて: sendmail(1)を介して導入されたすべてのメールの異なるトランスポート 、あなたのケースは可能だったようです。残念ながら、2つのテーブルsender_dependent_relayhost_maps
とsmtp_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にsmtp1
、smtp2
、smtp3
トランスポートを設定しました
#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
免責事項:
smtp_sasl_password_maps
のハッシュテーブルは単なる例です。 mysqlテーブルに置き換えることができます。これは私にとって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]