一般社団法人 全国個人事業主支援協会

COLUMN コラム

  • 問合せフォームの迷惑メール対策【基礎編】

問合せフォームから送信してもらった内容を
送信者のメールアドレス宛に確認メールとして送信してみたものの、
そのメールが「迷惑メール」として処理されてしまう、、

自己紹介サイトを開設したときにけっこう悩まされたので
備忘も兼ねて、迷惑メールと判定されないための対策をいくつか紹介したいと思います。

まず、なぜ迷惑メールになるのかという理由については
以下のような複数の要素があります。

・送信元IPが信頼されているか(SPF)
・メールの正当性が確認できるか(DKIM)
・メールの文面やヘッダーに不審点がないか
・受信者の過去の行動(迷惑マーク)など

その中でもSPFとDKIMの設定が未対応または不一致だと、
それだけで「なりすましの可能性あり」と判断されやすくなります。

SPF(Sender Policy Framework)は、
「このドメインはこのIPアドレスからの送信を許可してますよ」というDNSの設定です。

例:
Xserverを使っている場合、以下のようなSPFレコードが自動で登録されていることがあります。
v=spf1 +ip4:xxx.xxx.xxx.xxx include:spf.xserver.jp ~all

この設定により、メール受信側は「このIPからの送信はOK」と判断します。
逆に、これがない、または不一致だとSPF failになります。

DKIM(DomainKeys Identified Mail)は、メールに「デジタル署名」をつけて、
送信元ドメインが改ざんされていないことを保証する仕組みです。
これもDNSに公開鍵を登録しておく必要があります。
Xserverでは、ドメイン設定画面で「DKIM署名の有効化」をONにすれば自動的に設定されます。

次に送信フォームの処理記述時の注意点です。
自作フォームから送信する際、PHPのmail()関数を使っていると、ヘッダー情報が不完全になりやすく、
スパム判定の一因になってしまうので、最低限以下については考慮しましょう。

・Fromアドレスは「自ドメインの正規メールアドレス」にする
・Reply-Toにユーザーの入力メールアドレスを入れる(Fromは変えない)
・Content-TypeやX-Mailerなどのヘッダーも明示的に設定する

例:
$headers = “From: noreply@coneco-waltz.jp\r\n”;
$headers .= “Reply-To: user@example.com\r\n”;
$headers .= “Content-Type: text/plain; charset=UTF-8\r\n”;
$headers .= “X-Mailer: PHP/” . phpversion();

※「Return-Path」も追加するとさらに改善しますが、
 mail()関数では指定できないため、次回中級編で解説するPHPMailerの導入が効果的です。

迷惑メール判定の基準は各サービスで異なります。
GmailはDKIMさえ通っていれば緩めですが、OutlookはSPFに厳しく、Failしていれば即迷惑扱いされることもあります。
つまりどちらも通すにはSPFとDKIMの両方が揃って初めて安心ということです。

【まとめ】
・SPF:DNSで送信元IPを正しく指定
・DKIM:署名を付けて改ざん防止
・フォーム送信:Fromヘッダーに注意
・GmailはOKでもOutlookでは迷惑判定される場合がある

「とりあえず届けばいい」という時代は終わり、信頼される送信元を整えることが必須です。
まずはSPFとDKIM、そして適切なFromヘッダーの3点を確認してみましょう。

The following two tabs change content below.

西堀 絵理

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア