WordPressから送信したメールがスパム判定されるのを防ぐには?

WordPress

WordPressの問い合わせフォームといえば、Contact Form 7プラグインを使うことが多いですよね。

でも、問い合わせフォームから送信してみると、通知メールがスパム判定されてしまったり、送信元が確認できないと判定されてしまうことがあります。

これはWordPressの設定だけではなく、DNSの設定にも関係してきます。

WordPressから送信したメールをスパム判定されないようにする方法を紹介します。

Gmailで送信元が確認できない時は?

「Gmailでは、このメールが(スパム発信者からではなく)本当に xxxx から送信されたメールであることを確認できませんでした」というメッセージが表示されます。

これは、この後に説明する送信元メールサーバーの設定がされていないことが主な原因です。

FROMアドレスのドメイン名を確認する

まず、Contact Form 7のメールテンプレートで、送信されるメールのFROMアドレスを確認しましょう。

確認するポイントは、FROMアドレスのドメインです。

FROMアドレスのドメインは、WordPressサイトのドメイン名や、自社企業のドメイン名など、自社管理下にあるドメイン名のみ、使用できます。gmail.comやnifty.comなど、他社企業が保有するドメインFROMアドレスにはできません。

一方、FROMアドレスのアカウント名(@より前の部分)には自由につけることができます。

DNSにSPFレコードを登録する

FROMアドレスの送信元ドメインを認証する仕組みとして、SPF(Sender Policy Framework)があります。

SPFをざっくり説明すると、送信元のメールサーバーが正しいかどうかをメール受信者がDNSサーバーに登録されたIPアドレスから確認する、という仕組みです。

Gmailでも、SPFレコードで送信元のメールサーバーが正規のサーバーかどうかをチェックしています。

送信メールサーバーが1つのとき

1台のサーバーで、WordPressとメール送受信を行っているときは、次のようなTXTレコードを登録します。

ホスト名レコード種別
xxxx.comTXTv=spf1 ip4:xxx.xxx.xxx.xxx -all

レコード種別はSPFもしくはTXTのどちらでもOKです。

お名前ドットコムの場合は、次のようにTYPEをTXT、VALUEに値を指定します。

送信メールサーバーが複数の時

通常のメールはGoogle Workspace(旧G Suite)で送受信し、WordPressサイトからも送信したいようなときは、複数のメールサーバーのIPアドレスを指定します。

Gmailが利用するIPアドレスは直接指定せず、_spf.google.comをincludeします。

ホスト名レコード種別
xxxx.comTXTv=spf1 ip4:xxx.xxx.xxx.xxx include:_spf.google.com -all

DNSに逆引き(PTR)レコードを設定する

送信メールサーバー(=WordPressサーバー)のIPアドレスからホスト名が引けるよう、DNSに逆引きレコードを設定します。

逆引きレコードの設定は、サーバーを管理しているクラウドサービス側で設定します。

例えば、当サイトをホスティングしているKAGOYA VPSの場合、コントロールパネルにログインして設定します。

なお、WordPress内のメールサーバーがIPv6アドレスで送信しているとき、次のようにIPv6送信ガイドラインに準拠していないというエラーになることがあります。

Our system has detected that this 550-5.7.1 message does not meet IPv6 sending guidelines regarding
 PTR records 550-5.7.1 and authentication. Please review 550-5.7.1 https://support.google.com/mail/?p=IPv6AuthError for more information 550 5.7.1.

IPv6のPTRレコードを登録しているか、またそのホスト名に対するAAAAレコードを登録しているかを確認してください。

確認方法

問い合わせフォームに入力して、迷惑メール判定されないようになったかを確認しましょう。

ただし、DNSの変更にはタイムラグがあるため、数時間~12時間後にならないと正しい動作確認はできないので注意してください。