朝から昼寝

整理しておきたいIT関連の小ネタ

SPF認証の整理しておきたいポイント

概要

電子メールの送信元ドメインが詐称されていないかを検証する送信ドメイン認証(Sender Domain Authentication)。
本記事は、SPF認証についてまとめたものです。
SPFDKIM、DMARC、ARC、BIMIといった送信ドメイン認証を俯瞰的にまとめた記事はこちらです。

本記事の目的

  • SPF認証の概要を理解する。
  • SPF対応の際してのポイントを把握する。

※本記事では、整理しておきたいポイントを中心に記載しています。ネット上に解説記事が多そうな内容については省略している場合があります。

目次

基本

SPFの認証対象と認証成否

認証時の動作

  • メールを受信する側が、上記の認証を行います。
  • なお、エンベロープFromが<>(アドレス無し)のときは、EHLOコマンド、EHLOコマンドで指定されたドメインDNS検索に使用されます。

SPF対応に必要な設定

  • DNSレコード登録のみです。

認証結果

  • SPFの認証結果は、大きく"Pass"か、"Pass以外"("Fail"等)に分類できます。種類は以下の通りです。
    • None
    • Neutral
    • Pass
    • Fail
    • Softfail
    • TempError
    • PermError
  • 認証結果は、送信ドメイン認証において共通的に使用されるAuthentication-Results(AR)ヘッダに記録されます。ARヘッダの詳細は別記事にまとめる予定です。

詳細

導入ステップや運用ポリシーに応じた調整のポイント

  • allの修飾子(qualifier)
    • デフォルトの認証結果(all)に対する修飾子の指定において、自ドメインからのメールを受信する側のSPF認証時、明示されていないホスト(IPアドレス)からメールが送信された場合に、どの程度厳しく判定して欲しいかを示すことができます。
      修飾子は、"+"(Pass)、"-"(Fail)、"~"(Softfail)、"?"(Neutral)を使用できます。
    • 例えば、以下のようなSPFレコードがあるとします。
      v=spf1 +ip4:xxx.xxx.xxx.xxx +ip4:yyy.yyy.yyy.yyy –all
      • ドメインからのメールを送信を許可するホストのIPアドレスとして"xxx.xxx.xxx.xxx"と"yyy.yyy.yyy.yyy"が明示されています。これらに該当しないIPアドレスから送信されたメールは"–all"にマッチし、修飾子"-"によりSPF認証失敗となります。
        "–"は、メール受信者に"Fail"判定して欲しいことを示しており、"all"の扱いとして最も厳しいものです。
        その代わり、自ドメインからのメールを送信を許可すべきホストの洗い出しに漏れがあった際には、正規のメールがSPF認証失敗により届かなくなる可能性があります。
    • よって、SPF対応の初期段階等で様子を見たい場合には、"-all"でなく、"?all"や"~all"を指定する方法が考えられます。
      "?all"(Neutral)は"all"省略時のデフォルトです。送信元ドメインとして、"all"がメール送信を許可しているかどうかを表明していない、ということを示す設定ですので、"all"に該当するホストがSPF認証により受信拒否されることはありません(もちろんSPF認証以外の理由で拒否されることはあり得ます)。
    • 合わせて、DMARCレポートを受け取る設定にしておくと、自ドメインから送信されたメールに対するSPF認証結果を含む集計情報を得られるので、SPFの"all"に対する修飾子の指定をより厳しいものに変更できるかどうかを検討しやすくなります。
    • なお、修飾子の指定を省略した場合はデフォルト"+"として扱われます。