CentOS-Bash共有ホスティング環境では、mail()
PHP機能を含む単純なバックエンド - フロントエンドのお問い合わせフォームを含むWebサイトをホストしています。
テストメールは私のGmailアカウントに届くかもしれませんが、到着すると(非常にまれですが)時間がかかり、通常は1時間以上かかります。
ホスティング会社のインフラ開発者から次の理由を知りました。
- 送信された最終Eメールには、
[email protected]
有効なDKIM、有効なSPF、およびSMTP認証はありません。
インフラストラクチャ開発者は、この問題を解決するために、ホスティング環境で電子メールアカウントを開き、そこに電子メールを転送して、実際に有効なDKIM、有効なSPF、およびSMTP認証を持つことを提案しました。
しかし、まだメールを私のGmailアカウントに転送したいとしましょう。
Linux環境(CentOS)でバックエンド - フロントエンドの問い合わせフォームにSMTP認証を設定するには?
これは共有ホスティング環境でも可能です(DKIMとSPFはどうですか?)...
ノート
- 上記の質問に追加されたもう1つの質問は、このセッションの基礎となる単純なテスト形式よりもやや複雑な2番目の形式で発生します
。"From" => $email
ヘッダーメールアドレス私のGmailアドレスなので、最終的な配送先住所は[email protected]
次のように誤って解釈されました。メール偽造(「スプーフィング」)、上記のサーバーの不一致に加えて再び発生します。
ベストアンサー1
PHPは、mail()
基本オペレーティングシステムのメール転送エージェント(単にMTA、Sendmail、Postfix、Exim、OpenSMTPDなどの電子メールサービスソフトウェア)に依存しています。あなたの場合、WebホストのMTAは本質的に「工場設定」で実行されているようです。これは、ホスティングプロバイダは、MTAが実際にこの方法でメールを送信するために使用されることを期待していないことを意味します。
PHPフォームハンドラを使用するように変更することをお勧めします。PHPメーラーまたは非常に基本的なものの代わりにそのようなものmail()
。これにより、ホストのデフォルト設定に依存せずにアプリケーション内でメールサーバーを指定できます。
これにより、SMTP認証(およびそれに伴う必須暗号化)などの機能を使用することもできます。 Webホストが複数のユーザー間で共有される場合、rootアクセス権がない可能性があります。この場合、PHPMailerのようなものを使用することが唯一のアプローチです。できるアプリケーションで使用するメールサーバー設定を選択します。
メールを世界中に送信する場合は、DKIMとSPFが適しています。 1 つのアカウントにメールを転送するだけでは不十分です。ポート587または465(TLSの適用方法によって異なります)を使用してSMTPサーバーに接続するようにアプリケーションを構成すると、メールを送信するときにアプリケーションが本質的にメールクライアントのように機能するため、SMTPサーバー管理者はDKIMとSPFを心配する必要はありません。ただし、サーバー管理者はサーバーのDKIMとSPFの利点を享受する前にあなた(/あなたのアプリケーション)に認証を要求し、認証資格情報を暗号化されていない状態でサーバーに渡したくないので、暗号化が必要です。
それにもかかわらず、ウェブフォームを介してメールを送信するときに個人のGmailアカウントを使用しないことをお勧めします。 Webホストがハッキングされ、電子メールアクセスの資格情報が盗まれた場合に備えて別のアカウントを作成してください。