web-dev-qa-db-ja.com

異なるSPFエントリを含む単一のドメインに複数のTXTレコードがあることは問題ありませんか?

リモートの受信者ドメインが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

17
Mike B

いいえ、そうです。 RFC 4408、セクション4.5 を参照してください。

  1. 正確に "v = spf1"のバージョンセクションで始まらないレコードは破棄されます。バージョンセクションは、SP文字またはレコードの末尾のいずれかで終了します。バージョンセクションが "v = spf10"のレコードは一致しないため、破棄する必要があります。

  2. タイプSPFのレコードがセット内にある場合、タイプTXTのすべてのレコードが破棄されます。

    上記の手順の後、残りのレコードは1つだけになり、評価を続行できます。 2つ以上のレコードが残っている場合、check_Host()は「PermError」の結果ですぐに終了します。

    一致するレコードが返されない場合、SPFクライアントはドメインがSPF宣言を行わないと想定しなければなりません(MUST)。 SPF処理は停止しなければならず、
    「None」を返します。

20
dmourati

このSPFセットアップは無効です。複数のレコードが見つかった場合、レコード選択は結果としてエラーを生成するはずです。レコードの選択については RFC 7208、セクション4.5 を参照してください。

結果のレコードセットに複数のレコードが含まれている場合、check_Host()は「permerror」結果を生成します。

4
JHoffmann