複数のSPFレコードを持つことはできますか?

複数のSPFレコードを持つことはできますか?

2024年4月9日
著者: Ahona Rudra
翻訳: 岩瀨 彩江

この記事はPowerDMARCのブログ記事 Can you Have Multiple SPF Records? の翻訳です。
Spelldataは、PowerDMARCの日本代理店です。
この記事は、PowerDMARCの許可を得て、翻訳しています。


複数のSPFレコードをドメインに設定してもよいのでしょうか?
その答えは、意外に思われるかもしれません。
SPF レコードはメール認証にとって極めて重要ですが、複数存在すると、かえって到達率を損なう可能性があります。

複数のSPF レコードを持つことは、ドメイン所有者がよく遭遇する一般的な SPF エラーの1つです。
これは SPF を完全に無効化し、SPF PermError を引き起こすことがあります。
なぜこれが起こるのかを理解するには、 SPF がどのように機能するのか、そして複数の SPF レコードが認証に問題を引き起こす理由を知る必要があります。

プロのヒント:今日はドメインレコードチェックを実施して、SPF レコード設定のエラーを見つけてください。

重要なポイント

  1. 複数の SPF レコードを持つと、メールの到達率に問題が発生し、SPF PermError が発生する可能性があります。
  2. SPF 認証時の混乱を避けるため、ドメインには 1 つの SPF レコードのみを設定する必要があります。
  3. 複数の SPF include を 1 つのレコードに統合することは、正しい SPF 設定を行う上で不可欠です。
  4. 効果的なメール認証を維持するためには、SPF レコードを定期的に確認し、最適化する必要があります。
  5. より高いセキュリティを確保するために、DKIMやDMARCなどの追加のメール認証方法を実装することを検討してください。

SPF レコードの仕組み

SPF(Sender Policy Framework)は、ドメインの代理としてメールを送信することを許可された送信元を一覧化することで機能する、一般的なメール認証プロトコルです。
SPF チェックの際、受信 MTA は DNS クエリ(DNS ルックアップ)を実行し、メールの Return-Path アドレスを SPF レコードに記載された IP アドレス一覧と照合して検証します。

一致が見つかれば、そのメールは SPF をパスし、一致しなければSPFチェックに失敗します。
したがって、SPF の設定とは、v=spf1で始まる構文を持つ DNS TXT レコードを公開することを意味します。

複数の SPF レコードの誤解

いくつかのサービスは別々の SPF レコードを追加するよう提案することがありますが、実際にはドメインは SPFレコードを1つしか持つことができません。
これは、SPF の標準(RFC 4408)が複数の SPF レコードを厳格に禁止しているためです。
SPF チェックの際に複数のレコードに遭遇すると、受信サーバを混乱させ、「PermError」が発生します。

受信 MTA メールのSPF認証を開始すると、「v=spf1」で始まるすべての DNS TXTレコードを取得します。
送信ドメインにSPFが設定されておらず、DNSにSPFレコードが存在しない場合は、Noneの結果が返されます。
反対に、同じドメインに「v=spf1」で始まる SPFレコードが複数存在すると、SPF PermErrorの結果が返されます。

複数の SPF レコードがもたらす問題

複数の include を使用した SPF レコード、または単純に 1 つのドメインに複数の SPF レコードを持つことは、以下のような重大な結果を招く可能性があります。

これは非常によくある問題です。
PowerDMARC による複数のドメイン分析レポートでは、ドメイン所有者が犯す最も一般的な誤りの1つが、ドメインあたり 1 つ以上の SPF レコードを持っていることだと示されています。
この誤りは、誤ったSPF設定が発生する主な原因の 1 つとなっています。

複数の SPF レコードの例

以下は、同じドメインに公開されている複数の個別 SPF レコードの例です。

誤った方法
レコードタイプドメイン名レコード値TTL
TXTexampledomain.com
v=spf1 include:_spf.zoho.com -all
default
TXTexampledomain.com
v=spf1 include:_spf.google.com -all
default

この例では、exampledomain.comドメインに対して、2つの個別の SPF 用 DNS TXT レコードがドメインの DNS に公開されています。
この場合、SPF認証は失敗し、ドメインに対して永久的エラーの結果が返されます。
これらのincludeはそれぞれ別個のレコードとして扱われ、同一ドメイン上に複数の SPF レコードが存在することになります。

正しい方法
レコードタイプドメイン名レコード値TTL
TXTexampledomain.com
v=spf1 include:_spf.zoho.com include:_spf.google.com -all
default

この例では、exampledomain.comドメインには複数の SPF レコードではなく、1つの SPF 用 DNS TXT レコードのみが存在します。
これは、複数の include メカニズムを 1 つのレコード内に追加することで実現されています。
このレコードは有効であり、この場合 SPF が PermError を返すことはありません。

プロのヒント:将来の SPF レコードエラーを避けるために、正しい方法でSPF レコードを最適化する方法を学んでください。

複数の SPF レコード問題を修正する方法

PowerDMARC を使えば、複数SPF レコードエラーの修正は簡単です!
以下の手順に従って、ドメインに対して SPF の複数 include を正しく構成してください。

ステップ 1:SPF 複数レコードエラーの確認

最初のステップは、SPF の複数レコードが存在するかどうかを確認することです。
PowerDMARC に無料登録し、 SPF レコードジェネレーターツールを使用して、このエラーの有無を確認してください。

代替案として、DNS を手動で検索することもできます。
Cloudflare、CloudDNS、DNS Made Easy、Namecheap などの DNS ホスティングプロバイダを使用している場合、プロバイダごとに手順は同じではありません。

しかし一般的には、DNS 管理コンソールに入り、DNS ゾーンエディタにアクセスし、「Manage Domains」をクリックするという流れになります。
そこで、ドメインの DNS ゾーン内に SPF 用の DNS レコードを見つけることができます。

ステップ 2: 1 つのドメインに存在する複数のSPF レコードを削除する

ドメインに複数の SPF レコードが含まれている場合は、DNS レコードを編集し、 1 つを除いてすべて削除する必要があります。
ドメインごとに SPF レコードが 1 つだけ残っていることを必ず確認してください。

ステップ 3: SPF レコードを統合する

最後に、残っている 1 つの SPF レコードを編集して、複数の include を統合します。
これは、エラーを修正しつつ、複数の SPF を 1 つのレコードに含めることができる簡単な方法です。

  1. DNS 管理コンソールに入る
  2. SPF レコードの編集をクリックする
  3. 構文内で SPF の “include” メカニズムを使用して、承認したい複数のドメインを含めます。
    以下は、複数の SPF レコードを 1 つに統合する例です。

同じ SPF レコードに、承認したいサードパーティサービスを追加するために includeをさらに追加し続けることができます。
追加が完了したら、必ず DNS にレコードを保存してください。

注意:強制ポリシー(-all)の代わりに、SPF 失敗時により寛容で柔軟な運用を行いたい場合は (~all) を設定することもできます。

複数の SPF レコードを追加する手順

1 つのドメインで複数のメールベンダーを使用している場合、複数の個別 SPF レコードを設定するのは誤った方法です。
代わりに、以下の手順を行ってください。

  1. PowerDMARC を利用すると、ドメインに複数の SPF レコードを簡単に追加できます。
    SPF レコードジェネレーター ツールを使用して、無料のレコードを作成してください。
  2. 「このドメインの代理でメールを送信するドメインまたはサードパーティサービスを承認する」という欄に、承認したいすべてのサードパーティベンダーを入力します。
    これは SPF レコードを統合する上で重要なステップです。
  3. 生成された 1 つの SPF レコードをコピーして貼り付けます。
    このレコードには、承認した送信元向けの複数の SPF が含まれています。
    DNS に保存してください。

SPF レコードで複数の include を使用することの問題点

SPF の includeを何度も使用する方法は、常に最適とは限りません。
この方法で SPF レコードを統合すれば、複数 SPF レコードのエラー自体は解消できますが、別の問題を引き起こす可能性があります。

各メールサービスプロバイダは、SPF 認証の際に DNS ルックアップを 1 回追加します。
SPF レコードに include を複数含めるということは、その数だけルックアップが増えるということです。
しかし RFC では、SPF の DNS ルックアップ数の上限を 10 回と定めています。

この 10 回のルックアップ上限を超えると、SPF PermError が返され、SPF が機能しなくなる可能性があります。
10 回の DNS ルックアップ制限内に収めるには、次の方法があります。

  1. SPF レコードを手動でフラット化する。
    ただし、include の背後にある IP アドレスをすべて展開すると、レコードが長くなりすぎ、SPF の文字列制限を超える可能性があります。
  2. SPF マクロを使用する。
    マクロを利用すると、ルックアップ数と文字数の制限内に収めることができます。

複数 SPF レコードやその他の一般的なエラーを避けるためには、PowerDMARC のホステッド SPFソリューションを利用できます。
当社は SPF レコードにマクロを統合し、最適化されたエラーのない SPF を提供します。

さらに、当社のDMARC Analyzerを使用して、ドメインにDMARCを構成することもできます。
DMARCはフィッシング攻撃、なりすまし、ドメイン悪用からの保護に役立ちます。

最後に

最適なメール到達率を実現するには、単一で適切に構成された SPF レコードを持つことが不可欠です。
このブログでは、エラーのない SPF 設定を行うために、複数の SPF レコードを 1 つに統合する方法を説明しました。
SPF は優れた第一歩ですが、より高度な保護のために DKIM や DMARC など、ほかのメール認証方式も検討してみてください。

メールのセキュリティを簡素化するためのドメインセキュリティソリューションについてさらに知りたい場合は、ぜひお問い合わせください。