送信ドメイン認証(SPF)が通らない原因と対処法

途中から参加したプロジェクトで、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
ネームサーバー・・・エックスサーバー

コメント

タイトルとURLをコピーしました