Webフォームから問い合わせがあったはずなのに、
管理者への通知メールが届いていない

お客様から『返信がない』とお叱りを受けてしまった

もし、あなたのサイトで最近上記のような現象が起きているなら、それはサーバーの不具合ではなく、2024年6月から本格化されたGoogle(Gmail)のセキュリティ強化が原因である可能性が極めて高いです。

本記事では、このメール未達問題の技術的な原因と、弊社サービス「sHub」でも採用している、セキュリティと利便性を両立させる解決策(SMTP設定とコード解説)について詳しく解説します。

メールが届かなくなった「2024年6月問題」とは?

Googleは以前よりメール送信者のガイドラインを更新してきましたが、2024年6月以降、その要件を満たさないメール(特になりすまし判定されたメール)に対するブロックを大幅に強化しました。

これまで多くのWebフォームでは、管理者への通知メールの「送信元(from)」を「問い合わせ者のメールアドレス」や「WordPressのメールに設定するケースが多く見られました。これは「返信ボタンを押すだけでお客様に返信できる」という利便性があったためです。

しかし、これは「自社サーバーから、お客様(他社ドメイン)になりすましてメールを送っている」という挙動になり、現在のセキュリティ基準では完全にアウトとなります。

つまり、WordPressのWebフォームは「WordPressやサーバPHPの標準メール機能(mail関数)」を使ってメールを送るのが一般的でしたが、これは、メールサーバーへのログイン(認証)を経由せず、Webサイトが動いているサーバープログラムが直接メールを送り出す仕組みです。 Webフォームを設置したWebサイトから手軽にメールを送れる反面、「どこの誰が送ったか」という証明(認証)が弱く、送信元メールアドレスを自由に書き換えられるため、仕組み上は「なりすましメール」と同じ挙動をしていました。

2024年6月まではこれで問題なくWebフォームからの問い合わせ内容がお問合せした方と管理者にメールで届いていましたが、セキュリティが厳格化された現在では、この「認証のないメール」は不正なメールとしてブロックされるようになったのです。

「sHub」が選ばれる理由
当初よりspf・dkim・DMARCに対応

弊社が提供するWebサービス「sHub」をご利用のクライアント様では、2023年秋にGoogleからアナウンスがあった時点で対応準備をしています。つまり、sHubではドメインセキュリティが強化された当初より、以下の「送信ドメイン認証」の3点セットを標準設定としているからです。

SPF(IPアドレスの許可)/DKIM(電子署名による改ざん検知)/DMARC(認証失敗時のポリシー宣言:現在は「quarantine/隔離する」設定にしています)

WordPressを使ってお問合せWebフォームを運用、2024年6月からのセキュリティ強化の影響で、問い合わせいただいた方へのメール、管理者宛のメール、これらが不安定なケースが発生しています。それで、昨今慌てて対応するケースが多く、やみくもにフラグインとかで設定されているようです。sHubは「セキュリティ重視」をコンセプトにしており、これらの設定は当たり前のものとして改善しています。

解決策
SMTP送信への切り替えと
「Reply-To」の活用

では、どうすれば「届くメール」になるのか。正解は以下の構成です。

送信元(From): 自社ドメインのアドレスに固定する(なりすまし回避
返信先(Reply-To): 問い合わせ者のアドレスを設定する(運用利便性確保
送信方式: PHPのmail関数ではなく→ 認証を通したSMTP送信を行う

この構成を実現するために、WordPressの functions.php と wp-config.php を活用したカスタマイズ方法をご紹介します。

技術解説
設定コードの実例

弊社で推奨している、セキュアなSMTP送信を行うためのコード記述例です。

1)wp-config.php(設定情報) サーバーごとの機密情報(パスワードやポート番号)はこちらに集約します。


// メールSMTP情報設定
define('SMTP_HOST', 'smtp.example.jp'); // 貴社のSMTPサーバー
define('SMTP_PORT', 465);                // ポート番号(例:TLS使用時)
define('SMTP_USER', 'post@example.com'); // 送信アカウント
define('SMTP_PASS', 'examplepasswords');         // パスワード
define('SMTP_SECURE', 'ssl');            // 暗号化方式
define('SMTP_FROM', 'post@example.com'); // 送信元アドレス

2) functions.php(送信ロジック) wp-config.php の情報を読み込み、メール送信プロセスをSMTP経由に切り替えます。


// SMTP経由の送信設定
function ag_send_mail_smtp($phpmailer)
{
    // SMTP有効設定
    $phpmailer->isSMTP();
    // wp-config.phpからSMTP情報を取得
    $phpmailer->Host       = defined('SMTP_HOST') ? SMTP_HOST : '';
    $phpmailer->SMTPAuth   = true;
    // ポート番号の優先順位判定
    $phpmailer->Port       = defined('SMTP_PORT') ? SMTP_PORT : 465;
    $phpmailer->Username   = defined('SMTP_USER') ? SMTP_USER : '';
    $phpmailer->Password   = defined('SMTP_PASS') ? SMTP_PASS : '';
    $phpmailer->SMTPSecure = defined('SMTP_SECURE') ? SMTP_SECURE : 'ssl';
    // 送信者情報
    $phpmailer->From       = defined('SMTP_FROM') ? SMTP_FROM : 'post@example.jp';
    // デバッグを無効化
    $phpmailer->SMTPDebug  = 0; 
}
add_action("phpmailer_init", "ag_send_mail_smtp");