spf=permerror — SPFが壊れていて、設定していないのと同じ状態
最終更新: 2026-09-09
permerror は permanent error(恒久的なエラー)の略で、「SPFレコードが壊れていて、評価できない」という意味です。受信側は評価を打ち切るので、SPFを設定していないのと同じ扱いになります。
- permerror は一時的な不調ではなく、直すまで永久に続くこと
- 原因はほぼ3つ(レコードが2本ある/参照が10回を超えた/書式ミス)に絞れること
- どれに当たるかを、30秒で見分ける方法
どこに出る文字列か
Authentication-Results: mx.google.com;
spf=permerror (google.com: permanent error in processing) smtp.mailfrom=yourdomain.com
届いたメールのヘッダーに出ます(→Authentication-Resultsの見方)。バウンスメールに 550-5.7.27 として現れることもあります。
原因は3つ。上から順に確認してください
| 原因 | 確認方法 | 多さ |
|---|---|---|
| ① SPFレコードが2本ある | dig +short TXT yourdomain.com で v=spf1 が2行出ないか | 非常に多い |
| ② DNS参照が10回を超えた | 配信サービスを足していったドメインで起こる(→詳しく) | 多い |
| ③ 書式のミス | all が途中にある、全角スペース、include のコロン抜けなど | ときどき |
① レコードが2本ある — もっとも多い原因
SPFレコードは、1つのドメインに1本だけです。2本publishすると、RFC 7208違反として両方とも無効になります。「サービスを追加したので、もう1本足した」という操作で起こります。
❌ 2本ある(両方無効になる)
v=spf1 include:_spf.google.com ~all
v=spf1 include:spf.protection.outlook.com ~all
✅ 1本にまとめる
v=spf1 include:_spf.google.com include:spf.protection.outlook.com ~all
直し方は、片方を消して、include を既存の1本に移すことです。どちらを残すかではなく、両方の include を1本に集めるのが正解です。
② 参照が10回を超えた
SPFの検証中に発生するDNS参照は10回までで、超えると permerror になります。include の中の include も数えるため、自分のレコードが短く見えても超えます。→ too many DNS lookups の直し方
③ 書式のミス
allが途中にある …allは必ず最後です。途中に置くと、その後ろは永久に評価されません- 全角のスペースや記号 … 管理画面にコピーするときに混入します。見た目では気づけません
includeのコロン抜け …include _spf.google.com(コロンが無い)は無効ですv=spf1が先頭にない … 必ず1語目です
どれに当たるかを見分ける
無料診断にドメイン名を入れてください。2本登録・参照回数・書式を同時に判定します。参照回数は include を再帰的にたどって数えるので、「どのサービスが何回使っているか」まで分かります。
コマンドで見るなら、まず本数を確認します。
dig +short TXT yourdomain.com | grep spf1直さないとどうなるか
permerror は放置しても直りません。受信側から見ればSPF未設定と同じなので、Gmail・Yahoo!メール・Outlook.com の送信者要件を満たせません。DKIMも設定していない場合、迷惑メール扱いか受信拒否になります。
逆に言えば、DKIMが正しく設定されていれば、SPFがpermerrorでもDMARCは合格しえます(→DMARC徹底解説)。ただし転送されるとDKIMだけが頼りになるため、SPFは直してください。