
私は毎日かなりの量のメールを送信する必要がある 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