途中から参加したプロジェクトで、PHPの送信プログラム(mail関数)から送信されるGmail宛のメールが迷惑メールに判定されてしまう現象がありメールのヘッダー情報を見てみるとSPFの認証が通っていないようでした。
メールヘッダー確認( 認証が通っていない場合 )
Received-SPF
Received-SPF: neutral (google.com: xxx.xxx.xxx.xxx is neither permitted nor denied by best guess record for domain of amimoto-user@ip-xxx-xxx-xxx-xxx.us-west-2.compute.internal) client-ip=xxx.xxx.xxx.xxx;
Return-Path
Return-Path: amimoto-user@ip-xxx-xxx-xxx-xxx.us-west-2.compute.internal
PHPメール送信プログラム修正
Return-Path がローカルの情報になっていましたので、PHPのメール送信プログラムの該当箇所を確認したところ mail()関数の第5パラメーターに指定する Return-Path が指定されていませんでしたので、下記のように追加するように修正しました。
<?php
/* Return-Path 設定 */
$return_path="-f test@example.com";
/* 送信実行 */
mail($to, $subject, $body, $header, $return_path);
修正後メールヘッダー確認
PHP mail()関数に Return-Path 追加後の送信テストでは、”Received-SPF” は “pass” になり “Return-Path” も指定したものが入り意図した動作をするようになりましが、別の問題が発覚。。。
Received-SPF
Received-SPF: pass (google.com: domain of test@example.com designates xxx.xxx.xxx.xxx as permitted sender) client-ip=xxx.xxx.xxx.xxx;
Return-Path
Return-Path: test@example.com
別問題発覚
上記の修正対応で送信ドメイン認証(SPF)は通るようになりましたが、迷惑メールに振り分けられる現象が直らない。。。今回ウェブサーバーはAWS上にありそこからPHPのmail()関数でメール送信していましたが、対象ドメインのMXレコードに指定されたサーバーは GSuiteなため実際に送信しているサーバーとMXレコードのメールサーバーが異なるため迷惑メールに振り分けられている可能性がありそうでした。
SMTP経由で送信するように修正するしか方法がないかも???
環境情報
ウェブサーバー・・・AWS メールサーバー・・・G Suite ネームサーバー・・・エックスサーバー
コメント