日本酒応援サイト「サケナビ」掲載日本酒絶賛募集中です。

お問い合わせフォーム「メール届かない・スパム対策」を一気に解決 ─ Gmail SMTP × Cloudflare Turnstileの設定手順

WordPress でサイトを運営している方なら、一度はこんな経験ありませんか?

「お客様からの問い合わせメール、実は届いていなかった…」

「フォームから毎日大量のスパムが入って、本物のお問い合わせを見つけるのに苦労する」

筆者は、自社で運営しているWordPressサイトで、まさにこの2つの問題に同時に直面しました。本記事では、この2つの悩みを 同時に・無料で・実用的に 解決するために実際に導入した方法を、手順とともに丁寧に解説します。

採用した解決策はこの2つ:

  1. Gmail SMTP(Workspace App Password 利用) ── メール到達率を 40%→99%以上 に
  2. Cloudflare Turnstile ── reCAPTCHA に代わる新世代スパム対策

どちらも 無料 で、ユーザー体験を損なわず に導入できます。

目次

第1章:なぜフォームメールは届かないのか

WordPress の標準メール送信機能 wp_mail() は、サーバーから直接メールを送る方式です。これにはいくつか問題があります。

主な原因

原因 説明
SPFレコード未設定 送信元IPが「正規」と認められず、Gmail等が受信拒否
DKIM署名なし 改ざん検知の電子署名がないため、スパム判定されやすい
共用サーバーの IPブラックリスト入り 他の利用者のスパム送信で、サーバー全体が「悪質」認定されている
送信元アドレスとドメイン不一致 wordpress@example.com のような擬似アドレスで送信され、信頼度が低い

これらの結果、メールが受信側のスパムフォルダに入る、もしくは完全に拒否されるという事態が起きます。

解決方針:SMTP外部経由送信

WordPress の wp_mail() を、外部の信頼できるメールサーバー経由で送るようにすれば、これらの問題は一気に解消します。今回採用したのは Google Workspace の Gmail SMTP。なぜなら:

  • Googleの高い送信ドメインレピュテーションが使える
  • SPF・DKIM が自動で適切に設定される
  • 既に Workspace 契約していれば追加費用ゼロ
  • 送信ログが Gmail の「送信済み」フォルダに残る

第2章:reCAPTCHA より Cloudflare Turnstile が良い3つの理由

スパム対策といえば長年 Google の reCAPTCHA が定番でしたが、近年は Cloudflare Turnstile がより優れた代替として注目されています。

比較表

項目 reCAPTCHA v3 Cloudflare Turnstile
料金 無料(一定枠超過は有料) 完全無料・利用上限なし
プライバシー Google にトラッキングデータ送信 ユーザートラッキングなし
ユーザー体験 「私はロボットではありません」表示 不可視・操作不要
設定の手間 キー発行+プラグイン 同等
検証精度 高い 同等以上

Turnstile を選ぶ理由

  1. GDPR/個人情報保護法の観点で安心 ── ユーザーをトラッキングしないため、プライバシーポリシーの記載負担が軽い
  2. ユーザーが「ロボットチェック」を意識せずに送信できる ── 離脱率の低下
  3. 無料で利用上限なし ── サイト規模が拡大しても課金不要

第3章:今回採用する全体構成

[ユーザー]
   ↓ フォーム入力
[WordPress フォーム]
   ↓ Turnstile トークン検証 ← ① Cloudflare Turnstile
   ↓ 検証成功
[wp_mail() 呼び出し]
   ↓ Gmail SMTP 経由 ← ② Gmail Workspace
[管理者の Gmail 受信箱]
   ✉️ SPF=pass / DKIM=pass で着信

スパム対策と到達率改善を 2層で実現する構成です。

第4章:Gmail SMTP 設定手順

Step 1:Google Workspace アプリパスワードを発行

前提:使用する Google アカウントに 2段階認証が有効になっている必要があります。

  1. Google アカウントのアプリパスワード設定ページにアクセス
  2. ログイン中の Google アカウント(フォームメールを送信したいアドレス)を確認
  3. アプリ名 に任意の識別名を入力(例:WordPress SMTP
  4. 作成 をクリック
  5. 生成された 16文字のパスワード が画面に表示される(xxxx xxxx xxxx xxxx 形式)
  6. このパスワードを安全な場所にコピーしておく(再表示できないため注意)

⚠️ このパスワードは絶対に外部に漏らさないこと。GitHubなどの公開リポジトリに誤って入れると即時悪用されます。

Step 2:WordPress に Gmail SMTP を組み込む

実装方法は2通り:

方法A:プラグイン採用(簡単・推奨)

人気プラグイン「WP Mail SMTP by WPForms」が定番です。400万サイト以上で利用されており、Awesome Motive 社(WPForms運営)が活発に開発を継続しています。

  1. WordPress 管理画面 → プラグイン → 新規追加
  2. 「WP Mail SMTP」で検索 → インストール → 有効化
  3. 設定画面で:
    Mailer: Other SMTP(または Gmail を直接選択)
    SMTP Host: smtp.gmail.com
    SMTP Port: 587
    Encryption: TLS
    Auto TLS: ON
    Authentication: ON
    SMTP Username: あなたのGoogleアカウント(フルアドレス)
    SMTP Password: Step 1 で取得した16文字
    From Email: 同上
    From Name: 任意(サイト名等)
  4. 保存 → 「Email Test」タブからテスト送信

方法B:自前 PHP 実装(プラグイン極小派向け)

wp-config.php に定数を定義:

define('SMTP_HOST', 'smtp.gmail.com');
define('SMTP_PORT', 587);
define('SMTP_USER', 'your-account@example.com');
define('SMTP_PASS', '(16文字のアプリパスワード)');

wp-content/mu-plugins/ 配下に SMTP 設定 mu-plugin を配置し、phpmailer_init フックで PHPMailer に上記設定を投入。

⚠️ セキュリティの鉄則
– 認証情報は コードに直接書かない
wp-config.php または wp_options テーブルに保管
– Git管理ディレクトリ外、または .gitignore に登録

Step 3:動作確認

WordPress の管理画面か実際のフォームから1通送信し、受信した側の Gmail で メッセージのソースを表示

Authentication-Results: spf=pass (...)
Authentication-Results: dkim=pass (header.d=gmail.com)
Received: from ... by smtp.gmail.com ...

この3行が確認できれば成功です。

第5章:Cloudflare Turnstile 設定手順

Step 1:Cloudflare アカウントを作成

Cloudflare アカウントがない方は Cloudflare サインアップページで作成(無料)。

Step 2:Turnstile のサイト登録

  1. Cloudflare ダッシュボードの Turnstile セクションにアクセス
  2. Add site をクリック
  3. 以下を入力:
    Site name: 任意の管理名
    Hostname: あなたのサイトドメイン(例:example.com
    Widget Mode: Managed(推奨・標準)
    Pre-Clearance: OFF でOK
  4. Create をクリック
  5. 生成された Site Key(公開キー)と Secret Key(秘密キー)の2つをコピー

Step 3:WordPress に組み込む

フロントエンド側

フォームのHTMLに以下を追加:

<!-- ページの <head> または </body> 直前 -->
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>

<!-- フォーム内(送信ボタンの直前) -->
<div class="cf-turnstile" data-sitekey="(取得したSite Key)"></div>

サーバーサイド側

フォーム送信時に、Cloudflare API でトークン検証:

$token = $_POST['cf-turnstile-response'] ?? '';
$secret = '(取得したSecret Key・wp_optionsから読み込み推奨)';

$response = wp_remote_post('https://challenges.cloudflare.com/turnstile/v0/siteverify', [
    'body' => [
        'secret'   => $secret,
        'response' => $token,
        'remoteip' => $_SERVER['REMOTE_ADDR'],
    ],
]);

$body = json_decode(wp_remote_retrieve_body($response), true);

if (empty($body['success'])) {
    wp_die('スパム判定によりフォーム送信がブロックされました');
}

Secret Key の保管も鉄則
wp-config.php 定数 or wp_options DB
– コード内ハードコーディング厳禁
– Git管理対象外

Step 4:動作確認

  1. シークレットウィンドウでフォームページを開く
  2. Turnstile のウィジェットが表示される(一瞬チェック動作)
  3. 入力 → 送信 → 成功
  4. わざと Secret Key を誤った値で投入し、失敗パターンも確認

第6章:SPF / DKIM / DMARC 仕上げチェック

Gmail SMTP を使えば自動で SPF・DKIM は通りますが、独自ドメインからのメールを送りたい場合は追加設定が必要です。

項目 確認方法
SPF DNSに v=spf1 include:_spf.google.com ~all を追加
DKIM Google Workspace 管理コンソールで DKIM を有効化+公開鍵を DNS に登録
DMARC DNSに v=DMARC1; p=none; rua=mailto:postmaster@example.com を追加

確認には MXToolboxmail-tester.com が便利です。10点満点でスコアが出ます(9点以上目標)。

まとめ:2つの仕組みで運営が劇的にラクに

Before(導入前) After(導入後)
❌ お客様からのメールが届いていない ✅ 99%以上の到達率
❌ 毎日100通のスパムを手動で振り分け ✅ Turnstile が自動ブロック
❌ reCAPTCHA で離脱が増加 ✅ 不可視 Turnstile で離脱ゼロ
❌ メールサーバーの管理に悩む ✅ Google Workspace 任せ

実装の難易度はそれほど高くなく、プラグイン使用なら 30分・自前実装でも2〜3時間 で完了します。

筆者の運営サイトでは、この組み合わせ導入後、お問い合わせ取りこぼしゼロ・スパム手動振り分け作業ほぼゼロを実現しました。同じ悩みを持つ運営者の方の参考になれば幸いです。

この記事が気に入ったら
いいね または フォローしてね!

是非シェアしてもらえると嬉しいです!
  • URLをコピーしました!
目次