
私は小規模な Web サーバーを管理していますが、ドメインの SPF/DMARC を正しく設定するのに問題がありました。SPF 検証が時々成功したり失敗したりする理由を解明しようとしています。これは、同じ検証ツールを使用し、レコードに変更が加えられていない場合に発生します。試行によっては、異なるソースから異なるレコードを読み取っているかのようです。
この例では、SPF 検証ツールとして dmarcian.com を使用しています。
サイトにアクセスして [ツール] -> [ドメイン チェッカー] を使用すると、「ドメインには有効な SPF レコードがあり、ポリシーは十分に厳格です」と表示されることがあります。「ドメインのチェック」を複数回クリックすると (スペルミスの可能性はありません)、「ドメインには SPF レコードがありません」と表示されることがあります。何も変更されていないのに、同じチェックで 2 つの異なる結果が表示されるのはなぜですか?
プロバイダーは Arvixe (近々変更予定) です。Web サーバーは Windows VPS ですが、Web サーバーは電子メール サーバーではありません。あまり送信しませんが、別途バルク電子メール サービスに料金を支払っています。
DNS レコードを編集するために WebsitePanel を使用しています。SPF レコードはサポートされていないため、TXT レコードを使用しています。次のようになります。
名前: _spf タイプ: TXT データ: v=spf1 +a +mx +ip4:207.210.200.162 +ip4:143.95.68.96 ~all
ドメイン: theiaicertification.org IP: 108.167.130.38 / 108.167.130.39 メールサーバー: 207.210.200.162 / 143.95.68.96
答え1
DNS ゾーンは 2 つの DNS サーバーでホストされていますが、これはドメインをホストする DNS サーバーの数が多すぎるということではありません。両方の DNS サーバーは IPv6 が不足しており、将来的に問題になる可能性があります。
両方の権威 DNS サーバーは、ドメインの TXT レコードを要求されたときに同じ応答を返すので、これも問題ではありません。私が見た正確な応答は次のとおりです。
theiaicertification.org. 86400 IN TXT "v=spf1 +a +mx +ip4:207.210.200.162 +ip4:143.95.68.96 ~all"
ここで指摘したいことがいくつかあります。
a
IPv4 のみのメール サーバーでは、and/orの使用がmx
問題になる場合があります。これは、SPF レコードに対してどの IP アドレスを検証する必要があるかを制御できないため、SPF レコードは IPv4 アドレスと IPv6 アドレスの両方の検証の標準に準拠している必要があるためです。SPF レコードの検証中に、応答のない DNS ルックアップが何回許可されるかには制限があります。ただし、あなたの場合は、その罠をかろうじて回避しました。
すべてのエントリにプレフィックスを付けるというのは、+
SPF レコードの一般的な書き方ではありませんが、機能しているようです。
私は、SPF 検証の Python 実装を使用して、IP アドレスを SPF レコードに対して検証できることをテストしました。
>>> import spf
>>> spf.query('192.0.2.1', '[email protected]', '').check()
('softfail', 250, 'domain owner discourages use of this host')
>>> spf.query('2001:db8::1', '[email protected]', '').check()
('softfail', 250, 'domain owner discourages use of this host')
>>>
ただし、どちらも異なる結果が表示される理由を説明できません。異なる結果の考えられる説明はキャッシュです。TXT レコードの TTL は 86400 秒、つまり 24 時間です。最近変更し、TTL も 24 時間前だった場合、変更がすべての場所で有効になるまでに 24 時間かかることがあります。
SPF レコードを検証するために使用しているサービスには複数の再帰リゾルバがあり、そのうちの少なくとも 1 つが TXT レコードの古いバージョンをキャッシュしていると思われます。