リモートの受信者ドメインがSPFの理由でメールを拒否しています。これは、送信者がSPFを正しく構成していないためと考えられます。
Digを実行すると、次のように表示されます。
[fooadm@box ~]# Dig @8.8.8.8 -t TXT foosender.com
; <<>> Dig 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.6 <<>> @8.8.8.8 -t TXT foosender.com
; (1 server found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30608
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;foosender.com. IN TXT
;; ANSWER SECTION:
foosender.com. 14039 IN TXT "v=spf1 include:spf.foo1.com -all"
foosender.com. 14039 IN TXT "v=spf1 include:_spf.bob.foo2.com -all"
;; Query time: 26 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Tue Jan 7 09:45:38 2014
;; MSG SIZE rcvd: 146
これは有効な設定ですか? 2つの別々のレコードがあることは奇妙に思えます(それぞれにハードフェイルがあります)。すべてが1つのレコードに含まれるべきではありませんか?
適切なTXTレコードは次のようになります。
v=spf1 include:spf.foo1.com include:_spf.bob.foo2.com -all
いいえ、そうです。 RFC 4408、セクション4.5 を参照してください。
正確に "v = spf1"のバージョンセクションで始まらないレコードは破棄されます。バージョンセクションは、SP文字またはレコードの末尾のいずれかで終了します。バージョンセクションが "v = spf10"のレコードは一致しないため、破棄する必要があります。
タイプSPFのレコードがセット内にある場合、タイプTXTのすべてのレコードが破棄されます。
上記の手順の後、残りのレコードは1つだけになり、評価を続行できます。 2つ以上のレコードが残っている場合、check_Host()は「PermError」の結果ですぐに終了します。
一致するレコードが返されない場合、SPFクライアントはドメインがSPF宣言を行わないと想定しなければなりません(MUST)。 SPF処理は停止しなければならず、
「None」を返します。
このSPFセットアップは無効です。複数のレコードが見つかった場合、レコード選択は結果としてエラーを生成するはずです。レコードの選択については RFC 7208、セクション4.5 を参照してください。
結果のレコードセットに複数のレコードが含まれている場合、check_Host()は「permerror」結果を生成します。