WordPressメールフォームからGmailに届かないとき、エンベロープFromとSPFについて見直そう

目次

Gmailに届かない問題

「ある日から急に、ホームページのフォームからの送信がGmailでメール受信できなくなった」と相談をうける事がよくある。

古いサイトでメールフォームの設定が適切でなく、メールフォームからのメール送信が、なりすましメールやスパム判定されてしまうからだ。

これまでもGmailは送信者ごとに随時判定を行ってきたが、ついに2024年2月1日以降、Gmailにメールを送信するすべての送信者は、SPF等のメール認証が義務付けられる。

2024 年 2 月 1 日以降、Gmail アカウントにメールを送信するすべての送信者は、このセクションに示す要件を満たしている必要があります。

  • ドメインに SPF または DKIM メール認証を設定します。
  • 送信元のドメインまたは IP に、有効な正引きおよび逆引き DNS レコード(PTR レコードとも呼ばれます)があることを確認します。
  • Postmaster Tools で報告される迷惑メール率を 0.10% 未満に維持し、迷惑メール率が決して 0.30% 以上にならないようにします。
  • Internet Message Format 標準(RFC 5322)に準拠する形式でメールを作成します。
https://support.google.com/mail/answer/81126?sjid=3209894911023463548-AP

米Yahooも2024年の第1四半期より同等のポリシーが適用される。

エンベロープFromとヘッダFromの一致

そもそも今回のGmailのガイドラインうんぬん以前に、Wordpressフォームの送信元(ヘッダFrom)にGmailを設定してしまっているケースなど、表示上の送信元である「ヘッダFrom」と実際の送信元である「エンベロープFrom※」が一致しない場合、DMARCに準拠していない為メールの信頼性が下がると言われている。

※厳密には、エンベロープFrom(Return-Path)は送信者側が設定するエラー通知先アドレスのこと。

Gmailの場合は、受信したメールの「To自分▼」をクリックすると送信元の詳細が表示される。From:がヘッダFromで、送信元:がエンベロープFromだ。このメールでは、どちらもjp90.mixhost.jpとなっており、エンベロープFromとヘッダFromが一致している。

Gmailはもちろん、キャリア(docomo/au/softbank)のメールでは、チェックが厳しいのでこのヘッダFromとエンベロープFromは一致させた方がメールの到達率が上がる。

WordPressフォームの仕様上、送信元(ヘッダFrom)には任意のメールアドレスを設定できるようになっているが、安易にGmailなどを設定してしまっている場合は見直したがよい。

Gmailでスパム判定に参照されるエンベロープFrom(Return-Path)

Gmailのスパム判定やSPFのしくみでは、エンベロープFrom(Return-Path)のアドレスを参照する。

通常、Wordpressからメールを送る際は、PHPMailerというライブラリを用いるため、SMTPと異なり認証なしでメールを送ることができる。この際、メールの送信元(=エンベロープFrom)はWordpressサイトのサーバーとなる。

たとえば、Wordpressサイトがエックスサーバーにある場合、通常エンベロープFromはsv***.xserver.jpとなる。エンベロープFromはメールヘッダにしっかりと記載されている。

Contact Form 7プラグインで設定できる送信元アドレスは「ヘッダFrom」。この送信元(ヘッダFrom)にGmailアドレスを設定すると、エンベロープFrom(sv***.xserver.jp)が属するドメインと異なるので「なりすまし」判定される可能性が高くなる。

Contact Form 7のエンベロープFrom(Return-Path)の設定

Contact Form 7でエンベロープFromを設定するには、追加ヘッダーの項目に入れても効かないので、function.phpに以下を追記する

add_action('phpmailer_init', function($phpmailer){
	$phpmailer->SMTPKeepAlive = true;
	$phpmailer->Sender = 'no-reply@example.com';
});

※no-reply@example.comの部分は実在するアドレスに適宜修正すること

function.phpの編集に抵抗がある方は、「WP Mail SMTP」プラグインを用いるとよい。「送信元アドレスを返信先 (return-path) として設定」の項目がある。

PHP mb_send_mailでのエンベロープFromの設定

ちなみにPHPのmb_send_mailでエンベロープFromを設定する場合は、第5引数の$additional_parametersを使用する。

$opt = '-fno-reply@example.com'; //-fに続けてメールアドレスを記入
mb_send_mail ( $to, $subject, $body, $headers, $opt );

なおこの方法でエンベロープFromを設定する際は、 X-Warningヘッダ( -fオプションを使って送信者を書き換えたという警告)が付加されないように、ApacheなどWebサーバーの実行ユーザーを信任ユーザー(trusted)に追加しておく必要がある。

SPFレコードの設定を確認

「エンベロープFrom」にWordpressサイトと同じドメイン(example.com)を設定しているにも関わらず、Gmailに届かない、迷惑メールに振り分けられてしまう場合は、SPFレコードの設定を確認してほしい。

SPFとはSender Policy Frameworkの略で、メールの送信アドレス(正確には送信ドメイン)を偽っていないかをチェックする仕組み。具体的には次のような流れでメールのチェックが行われる。

SPF認証の流れ
  1. 受信サーバー(ここではGmail)が、Return-Pathに記載されたドメインのDNSからSPFレコードを取得
  2. SPFレコードに記載されたメカニズムで、送信サーバーの正当性をチェック
  3. 結果により、メールを受信または受信拒否する

エックスサーバーの場合は、独自ドメインを追加時に自動的に次のようなSPFレコードを設定してくれる。

v=spf1 +a:sv***.xserver.jp +a:example.com +mx include:spf.sender.xserver.jp ~all

このSPFレコードでは、次の内容が設定されている。

記載意味
v=spf1SPFのバージョン1(原則としてv=spf1の記載)
+a:sv***.xserver.jpsv***.xserver.jp(ホスト名)のAレコードに設定されているIPアドレスと一致する場合に正当なメールとして処理
+a:example.comexample.com(ドメイン)のAレコードに設定されているIPアドレスと一致する場合に正当なメールとして処理
+mxMXレコードで指定されたメールサーバーと一致する場合に正当なメールとして処理
include:spf.sender.xserver.jpspf.sender.xserver.jpのSPFレコードで設定されたメカニズムを含める
~all末尾に記載し、他のメカニズムにマッチしなかった場合に不当なメールとして処理するが配信はされる(受信拒否される可能性がある)

エックスサーバーの自動設定例では、ホスト名/ドメイン/MXレコード/(あとSPFインクルード)のいずれかにマッチした場合に、正当なメールとして処理されるようになっているので、example.comをエンベロープFromとして明示的に設定しなくてもsv***.xserver.jpのAレコードからIPアドレス一致でSPF認証パスとなる。(MXレコード/SPFインクルードでもパスするのかも)

SPFレコードが未設定の場合は、以下の詳細リンクが参考になると思う。

SPFレコードの設定でも駄目な場合、DKIMとDMARCがあるが、その話はまた別の機会に。

メールのヘッダーを分析してSFP/DKIM認証OKか確認する

Google 管理者ツールボックス」にメールヘッダーをコピペすると、ヘッダーを分析してSPF/DKIM認証がOKか確認することができる。以下の画面では、SPFとDKIMが「pass」となっている。その他、ARC認証(転送されたメールの以前の認証ステータス)の結果が「pass」。

Gmailまたは他のメールサービスでメールのソースを表示、取得する方法については以下のリンクを参照。上記の「Google 管理者ツールボックス」の使い方も書かれているので、ぜひ試してみてほしい。

また、PostmasterToolを使うことで、迷惑メール率など送信ドメインに関するデータを確認することができる。こちらも下記Googleの記事で詳しく書かれているので参照されたし。

Googleの送信者ガイドラインは2024年2月1日以降から適用される。SPF/DKIM認証の対応は、今のうちに忘れずにチェックしておこう。

  • URLをコピーしました!
  • URLをコピーしました!

WHO WROTE

komadairaのアバター komadaira 代表社員・COO

地方テレビ局、歯科コンサル、中堅SIerを経て独立。ダイヤルアップ接続の時代にHTMLに魅せられ、なんだかんだ10年以上WEB制作に関わり続けている。

目次