ICTSC2026 一次予選 問題解説: 問43
問43
次のような DNS レコードが登録されているとする
example.com. IN TXT "v=spf1 redirect=_spf.example.com"
_spf.example.com. IN TXT "v=spf1 exists:%{ir}.%{l1r-}._spf.%{d} ~all"
123.100.51.198.user-ictsc2026._spf.example.com IN A 127.0.0.1
送信者が [email protected] の場合、最終的な SPF 評価結果はどれでしょう?
なお、 SMTP クライアントのアドレスは 198.51.100.123 とします
選択肢(択一選択)
passsoftfailfailneutral
正解
2
解説
SPF レコードのマクロ展開を含む仕様理解を問う問題でした
まず、 exists は指定した DNS レコードを解決可能であるか (A レコードが存在するか) を確認するディレクティブです
そしてマクロ展開は送信元アドレスやメールアドレスといった情報を元にを動的に文字列を組み立てる仕組みで、よく exists と組み合わせて利用されます
RFC7208#7.4 の拡張表現テーブル (抜粋)
The <sender> is [email protected]. ... macro expansion ------- ---------------------------- ... %{l1r-} strong ... macro-string expansion --------------------------------------------- ... %{ir}.%{v}.%{l1r-}.lp._spf.%{d2} 3.2.0.192.in-addr.strong.lp._spf.example.com
に倣うと %{ir} で期待されるのは逆順の送信元アドレス 23.100.51.198 となり、 %{l1r-} は user です
つまり 23.100.51.198.user._spf.example.com の A レコードの存在が pass の条件となり、 SPF レコードの ~all に従って softfail が正解となります