【備忘録】さくらのレンタルサーバーに置いたWordPressでSPFがnoneになるのはReturn-Pathの設定のせい?

  • URLをコピーしました!

さくらインターネットのサーバーで、DKIMとDMARCの設定を試していたのですが、よく見たらWordPressから送信されているメールのSPFがNONEになっていました。

SPFレコードの設定もONになっているのに……?

さくらインターネットの「メールドメイン設定」のスクリーンショット。SPFレコード「利用する」にチェックが入っている。
Gmailの「原文を表示」で表示したメールの情報のスクリーンショット。SPFがNONEになっている。
目次

SPFレコードの設定、あってる?

今回はネームサーバーがさくらにある状態でSPFレコード「利用する」にチェックを入れる方法で設定しています。

その状態で設定されているのは "v=spf1 a:www***.sakura.ne.jp mx ~all" という形式。
SPFレコードを設定したい:他社ネームサーバー利用の場合 の説明どおりの状態です。

念のためドメインとIPアドレスの組み合わせでSPFがPASSするはずか、SPF Record Check | MXTOOLBOX にかけてみるととくにエラーはなさそうです。

SPF Record Check の結果画面のスクリーンショット。チェックをパスしているように見える

なお、ドメインとIPアドレスの組み合わせがSPFレコードに設定されていない場合は、エラーが発生している場合は、結果に「SPF Faild for IP ***」という表示が出るようです。

SPF Record Check の結果画面のスクリーンショット。SPF Failed for IP *** のエラーが出ている。

SPFレコードが見ているのはfromのメールアドレスではなくReturn-path

今回の問題は、SPFレコードの設定にある通りのドメインとIPアドレスの組み合わせで送信されたメールなのに、SPFがNONEになっていることです。

Gmailの「原文を表示」で表示したメールの情報のスクリーンショット。SPFがNONEになっている。

SPFレコードとは(徹底解説):kinsta によれば、SPFの検証にはFromのドメインではなくReturn-pathが利用されます。

SPFは、Fromドメインではなく、主にReturn-Pathで使用されるドメインに機能するため、メールの送信に使用されているReturn-Pathを確かめます

そこで、メールのソース(原文)を表示してReturn-pathを確認すると……

Return-Path: <********@www****.sakura.ne.jp>

ドメインが、サイトのドメインではなくさくらのドメインになっていました!

Return-pathはどうやって変更するのか

今回メールの送信テストに使った「WP Test Email」プラグインや、メールフォーム作成プラグインの「Contact Form 7」では、Return-pathの設定はできません。

方法1 : functions.phpで設定する

利用しているテーマファイルのfunctions.phpに以下のように記載するとWordPressが送信するメールのReturn-pathを変更できます。

add_action('phpmailer_init', function($phpmailer){
	$phpmailer->SMTPKeepAlive = true;
	$phpmailer->Sender = 'wordpress@[ドメイン名]';
});

方法2:WP Mail SMTP で設定する

テーマファイルにプログラムで直書きするのはイマイチ……という場合は WP Mail SMTP のメーラーをPHPにした状態で、送信元メールアドレスにサイトのドメインのメールアドレスを記載し、そのうえで「返信パス」をオンにします。

WP Mail SMTP の設定画面のスクリーンショット。

Return-pathをサイトのドメインにしたらSPFがPASSするようになった

Return-pathをサイトのドメイン(SPFレコードに記載されたドメインとIPアドレスの組み合わせ)になるようにしたところ、SPFの検証がPASSするようになりました。

今回 SPFがNONEになっていたのは、Return-pathのメールアドレスが原因だったようです。

今回分からなかったこと

今回SPFがNONEになっていたのは、さくらインターネットのレンタルサーバーに設置したWordPressでした。

同様のテストをXServerに設置したWordPressで行ったときは、Return-pathがサイトのドメインではなくsv****.xserver.jp になっていても、SPFはPASSしました。

XServerのSPFの標準設定は、v=spf1 +a:sv****.xserver.jp +a:[ドメイン名] +mx include:spf.sender.xserver.jp ~all という書き方になっているため、さくらインターネットの設定とは違うようですが、さくらインターネットではNONEでXServerではPASSになる根本的な理由は、分かりませんでした。

本題とは直接関係しないメモ

SPFがNONEの状態で、DKIM / DMARCの設定もOFFだとGmailにメールが届かない

SPF:NONE、DKIM: NONE、DMARC:NONE の状態でWordPressから送信したメールは、Outlook.com(筆者が使ったのはinfoseek.jp)へは迷惑メールとして届きました。
しかし、gmail.comの方のメールアドレスでは、迷惑メールフォルダにも入らずに消滅しています。

その後 DKIMとDMARCの設定をONにしたところ、gmail.comのメールアドレスでも受信できるようになりました。(この時点ではSPFはNONEの状態)

※今回はDKIM / DMARCを同時にONにしたあとで、SPFがNONEだと気が付いたため、SPFのみ・DKIMのみなどのパターンは未検証

DKIM / DMARC を設定した24~48時間後、受信するメールアドレスによって検証結果が異なる

DKIMとDMARCの設定をONにした24~48時間後くらいにテストメールを送信したところ、gmail.comのメールアドレスではDKIM: PASS、DMARC: PASS として届いていました。

しかし、Outlook.comの方では、DKIM: timeout、DMARC: temperrorとなっていました。

それからさらに24~48時間後くらいにテストメールを送信すると、Outlook.comでもDKIM: PASS、DMARC: PASS になっていました。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

コメントは日本語で入力してください。(スパム対策)

CAPTCHA

目次