2026年5月23日

2026年5月23日

メール送信テストとヘッダー確認方法:Received・Authentication-Resultsの読み方とSPF/DKIM/DMARCの判定

メールが届かない、迷惑メールに入るといった問題は、テストメールを1通送り、受信側でヘッダーを開けば原因の見当がつくことがほとんどです。見るべきなのは、経路を示す Received、受信側の認証結果を示す Authentication-Results、そして From と Return-Path のドメインの組み合わせです。この記事では、テストメールの送り方、主なメールソフトでのヘッダーの開き方、各ヘッダーの読み方と、結果が「fail」だったときの直し方を説明します。

テストメールを送る

テストの目的によって送り方を変えます。

  • サイトのメールそのものを試したい: WordPress のお問い合わせフォームやパスワードリセットなど、実際に使う経路で送ります。経路が違うと結果も変わるためです。
  • サーバーの送信設定だけを試したい: コマンドで送ります。

WordPress から送る場合は、WP-CLI で wp_mail() を直接呼べます。

wp eval 'var_dump( wp_mail( "you@example.net", "header test", "This is a test." ) );'

bool(true) は「WordPress が送信処理に渡せた」という意味で、相手に届いたことまでは示しません。届いたかどうかは受信側で確かめます。bool(false) のときは、次のように wp_mail_failed フックでエラーの内容を記録すると原因が分かります。wp-content/mu-plugins/ にファイルを置き、調べ終わったら外してください。

<?php
/**
 * Plugin Name: Log wp_mail failures
 * Description: wp_mail の送信失敗時にエラーメッセージだけを debug.log に書く(調査用)。
 */
add_action( 'wp_mail_failed', function ( $error ) {
	if ( is_wp_error( $error ) ) {
		// 本文や宛先などの個人情報は記録しない
		error_log( 'wp_mail failed: ' . $error->get_error_message() );
	}
} );

WP_DEBUG_LOG を有効にしていれば、wp-content/debug.log に書き出されます。調査が終わったらデバッグ設定も元に戻します。

サーバーから SMTP の動きを確かめたい場合は、swaks という SMTP のテスト用ツールが便利です。

sudo apt install swaks
swaks --to you@example.net --from wp@example.com --server localhost
# 外部の SMTP に認証して送る例(値は自分のものに置き換える)
swaks --to you@example.net --from wp@example.com \
  --server smtp.example.com:587 --tls --auth-user your-username

swaks は SMTP のやり取りを画面に表示するので、どの段階で拒否されたかが分かります。--auth-user だけを指定すると、パスワードは実行時に入力を求められ、シェルの履歴に残りません。

受信用には、Gmail と Outlook.com など、異なる事業者のアドレスを複数用意しておくと、受信側による判定の違いが分かります。

ヘッダーを開く

  • Gmail: メールを開き、右上のメニューから「メッセージのソースを表示」を選びます。上部に SPF・DKIM・DMARC の判定がまとめて表示され、その下に元のヘッダーが出ます。
  • Outlook(Web 版・デスクトップ版): メッセージのメニューから、メッセージのソースやプロパティを表示する項目を選びます。
  • Thunderbird: 表示メニューの「メッセージのソース」で開けます。

メニューの位置や名前は、メールソフトの更新で変わることがあります(2026年10月現在)。見つからない場合は「ソース」「ヘッダー」「原文」といった語で各ソフトのヘルプを検索してください。

主なヘッダーの読み方

Received: 経路を下から読む

Received は、メールが中継されるたびに上に追加されます。したがって、いちばん下が送信元に近く、いちばん上が受信したサーバー です。下から順に読むと、どのサーバーを経由したかが分かります。

Received: from mail.example.com (mail.example.com [203.0.113.10])
        by mx.example.net with ESMTPS id ...
        for <you@example.net>; Sat, 17 Oct 2026 10:00:05 +0900
Received: from localhost (localhost [127.0.0.1])
        by mail.example.com (Postfix) with ESMTP id ...

各行の時刻を比べると、どこで時間がかかったかも分かります。「届くのが遅い」という問題では、時刻が大きく開いている区間が原因の場所です。from の後ろの角かっこ内が、実際に接続してきた IP アドレスです。これが想定と違う(例: 中継サービス経由のはずが自分のサーバーの IP になっている)なら、送信の設定が反映されていません。

Authentication-Results: 受信側の判定

受信したサーバーが SPF・DKIM・DMARC を判定した結果です。

Authentication-Results: mx.example.net;
       spf=pass smtp.mailfrom=bounce.example.com;
       dkim=pass header.d=example.com header.s=s1;
       dmarc=pass header.from=example.com
  • spf: 接続してきた IP アドレスが、smtp.mailfrom(エンベロープの送信者、Return-Path に出るアドレス)のドメインの SPF レコードで許可されているか。
  • dkim: 署名が検証できたか。header.d が署名したドメイン、header.s がセレクターです。
  • dmarc: From のドメイン(header.from)と、SPF または DKIM で認証されたドメインが一致(アライメント)しているか。

ここで大切なのは、SPF と DKIM が pass でも DMARC が fail になることがある という点です。たとえば中継サービスのドメインで SPF が pass し、DKIM もサービスのドメインで署名されている場合、From の自分のドメインと一致しないため DMARC は fail になります。自分のドメインで DKIM 署名するよう、中継サービス側でドメイン認証を設定する必要があります。

Return-Path・From・Message-ID

  • Return-Path: エラーメールの返送先で、SPF の判定に使われるドメインです。WordPress のメールで、サーバーのホスト名(例: www-data@vps123.example.jp)になっていることがあります。
  • From: 読み手に見える送信者です。WordPress の既定は wordpress@サイトのドメイン です。
  • Message-ID: @ の後ろがサーバーのホスト名のままになっていても、それだけで不達になることは多くありませんが、送信の設定を見直す手がかりになります。

判定が fail だったときの直し方

よくある順に並べます。

  1. spf=fail / softfail: 送信元の IP アドレスや中継サービスが SPF レコードに入っていません。dig +short TXT example.com で現在のレコードを確かめ、中継サービスの案内どおりに include: を追加します。SPF のレコードは1つのドメインに1つだけにします。2つあると判定が permerror になります。
  2. dkim=none / fail: 署名されていないか、DNS の公開鍵とずれています。dig +short TXT セレクター._domainkey.example.com で公開鍵が引けるか確かめます。DNS 管理画面で長い値を貼るときに途中で切れていることがよくあります。
  3. dmarc=fail: 前の節のアライメントの問題です。From のドメインで DKIM 署名するか、Return-Path のドメインを From と揃えます。
  4. すべて pass なのに迷惑メールに入る: 認証以外の要素(IP アドレスやドメインの評判、本文の内容、送信量の急増)が原因です。送信元の IP アドレスがブラックリストに載っていないかを確かめ、Gmail 宛てが多いなら Google の Postmaster Tools でドメインの評判を確認します。

Gmail や Yahoo は、一定量以上を送る送信者に SPF・DKIM・DMARC の設定や、簡単に配信停止できる仕組みを求める方針を示しています。基準や対象は見直されることがあるので、各社の送信者向けガイドラインで最新の内容を確かめてください。

まとめ

  • テストは実際に使う経路で送る。サーバー側の確認は swaks、WordPress は WP-CLI の wp_mail() と wp_mail_failed フックで。
  • Received は下から読む。接続元の IP アドレスと時刻の開きを見る。
  • Authentication-Results の spf・dkim・dmarc を見る。SPF と DKIM が pass でも、From と一致しなければ DMARC は fail。
  • fail は SPF のレコード、DKIM の公開鍵、ドメインの一致の順に直す。すべて pass で迷惑メールに入るなら評判を調べる。

お気軽にご相談ください

お見積りへ お問い合わせへ
▲