PHP メール、Postfix、メッセージ キュー

PHP メール、Postfix、メッセージ キュー

私は毎日かなりの量のメールを送信する必要がある Web プラットフォームを運営しています。実装日に、私とパートナーはサーバーに Postfix を設定し、Swift Mailer クラスを使用して SMTP 接続でローカル Postfix サーバーにメールを送信することにしました。

[email protected]これにより、、などの複数のメール アカウントを持ち[email protected][email protected]それらを使用して DKIM で正しく署名されたメールを送信できるようになりました。

私の質問は、ローカル SMTP 接続 (時間とサーバー リソースを消費します) を回避し、Postfix キューに送信されるメッセージを配信するより直接的な方法に置き換えるように PHP を構成することはできないでしょうか?

私の理解では、PHPmail()関数または Swift Mailer のSwift_SendmailTransportクラスを使用して、メッセージを直接 Postfix キューに配信できます。しかし、その場合、DKIM をどのように保証できますか? ローカル サーバー上の電子メール アカウントへの "FROM" ヘッダーを変更するだけで十分でしょうか?

ありがとう。

答え1

私の理解では、PHP mail() 関数、または Swift Mailer の Swift_SendmailTransport クラスを使用して、メッセージを直接 Postfix キューに配信できるはずです。

それは本当だ

しかし、そうであれば、どうすれば DKIM を保証できるでしょうか? ローカル サーバー上の電子メール アカウントの「FROM」ヘッダーを変更するだけで十分でしょうか?

DKIM署名者を指定していないので、セットアップでOpenDKIMを使用していると想定しています。OpenDKIMはpostfixと統合されています。ミルターインターフェース. mail() コマンドから電子メールに署名するには (smtp の手順なし)、OpenDKIM ソケット/ポートもリストされていることを確認する必要がありますnon_smptd_milters

答え2

まず、Postfix の main.cf の smptd_milters だけでなく non_smptd_milters でも OpenDKIM が指定されている限り、PHP mail() を介して送信される送信メールは署名されるはずです。Received ヘッダーはデフォルトでは署名されず、クリーンアップによって書き換えられるものはほとんどありません。別の方法が必要な場合は、Amavis と content_filter を使用して DKIM 署名できますが、その場合は SMTP セッションがさらに増えることになります。

第二に、メールをメールドロップ キューにドロップするのではなく、ローカル SMTP を使用することが、パフォーマンスのオーバーヘッドになる可能性は低いと思います。限られた数の postfix smtpd デーモンがすべて milter を呼び出している可能性がありますが、それがなくても、メールは送信される前に OpenDKIM milter を通過する必要があります。確かに、PHP スクリプトは早く終了しますが、メールが早く配信されるとは思えません。もう一度読んでみる価値があるかもしれません。http://www.postfix.org/QSHAPE_README.html

関連情報