考えられる原因
SPFレコードが2つ以上ある
1つのドメインに SPF の TXT レコードは1つだけです。サービスを増やすたびに新しい行を足すと、受け取る側は「不正」と判断して評価そのものを止めます。既存の行に include を足して、1行にまとめてください。
DNSの参照が10回を超えている
SPF は評価のときに DNS を引きます。include や a、mx を積み重ねると上限の10回を超え、そこで失敗します。エラーは出ないまま「認証されない」状態になるので、気づきにくい詰まり方です。
送っているサービスが含まれていない
メール配信、フォーム、会計ソフト、予約システム。あなたのドメインを名乗って送るものは全部 include が要ります。1つ足し忘れると、そのサービスのメールだけ届かなくなります。
~all と -all の違いを決めていない
~all は「たぶん違う」(受け取るが疑う)、-all は「絶対に違う」(拒否してよい)。いきなり -all にすると、含め忘れたサービスのメールが完全に消えます。まずは ~all で様子を見てください。
直し方
自分で書く
ドメインのDNSに TXT レコードを1つ置きます。値は v=spf1 で始め、使っているサービスの include を並べ、最後を ~all で閉じます。書いたあとは必ず実際に引いて確かめてください——反映まで時間がかかり、書けたことと効いていることは別です。
フォームのメールだけ、対象外にする
問い合わせフォームに限れば、あなたのドメインを名乗らずに送る手があります。差出人は認証済みの基盤、返信先はあなたのアドレス。SPF を触らずに、フォームからのメールだけ確実に届かせられます。
無料で試す設置はコードを1行。DNSにも、契約中のサーバーにも触りません。届いた問い合わせは分類され、返信の下書きまで用意されます。
<script src="https://nintact.com/embed.js"
data-nintact="YOUR_FORM_ID" async></script>よくある質問
SPFだけ設定すれば、メールは届きますか?
「認証がない」ことによる拒否は止まります。ただし迷惑メール判定を安定して避けるには DKIM も要りますし、まとまった数を送る相手には DMARC が求められます。
include をいくつまで足せますか?
数の上限ではなく、DNSの参照回数が10回までです。include 1つが内部でさらに引くこともあるので、3〜4個で上限に近づくこともあります。到達チェックで実際の回数を確認できます。
反映にどれくらいかかりますか?
数分から数時間です。DNSの設定によっては1日近くかかることもあります。書いたあと、実際に引いて確かめるまでは終わったと考えないでください。
DNSを触る権限がない場合は?
フォームのメールに限れば、触らずに済ませられます。詳しくは「DNSを触れないままメールを届かせる」をご覧ください。