メールセキュリティ(SPF/DKIM/DMARC/Gmailガイドライン)

メール


2024/2のGmailセキュリティガイドライン変更でメールセキュリティ対応に苦労したのでそのメモ。SPF/DKIM/DMARCやワンクリックオプトアウトなどを分かりやすく整理。

ヘッダfromとエンベロープfrom

ヘッダfromとエンベロープfromとは

メールの「送信元」と言うと、通常はヘッダfromのことを指すが、エンベロープfromというものもある。

  • ヘッダfrom
    Gmailなどのメールソフトで送信元として表示されるアドレスのこと。送信者が任意のアドレスに変更できるため、実際の送信元と異なることがある。
  • エンベロープfrom
    実際にメール送信した送信元のこと。メール送信に失敗した場合は、これに返ってくる。

メリット・デメリット

2種類の「送信元」がある理由はメリットがあるため。一方でデメリットもある。

メリット

  • メール配信サービスを利用できる
    この仕組みを使って代わりにメール配信サービスなどでメール送信してもらえる。例えば、xxxxx@shachiku-se.comというアドレスで顧客にメール送信したいとする。メール配信サービスを利用すれば、自社で環境を構築する必要が無く、メール配信に役立つ機能(送信先管理機能やオプトアウト機能など)を利用することができる。その際、実施はメール配信サービスから送信するのでエンベロープfromはメール配信サービスのアドレスとなるが、ヘッダfromにxxxxx@shachiku-se.comを設定することで、顧客から見るとxxxxx@shachiku-se.comからメールが送信されたように見える
  • メール転送やBCC送信ができる
    この仕組みを使って実現しているらしい

デメリット

  • なりすましメールに利用される
    ヘッダfromは任意のアドレスに変更可能のため、簡単になりすましメールを送信できる。というか、ヘッダfromをエンベロープfromと異なるアドレスになりすましたメールをなりすましメールと言う。

メールヘッダで確認する方法

受信したメールソフトでメールヘッダを確認することで、ヘッダfromとエンベロープfromを確認できる。

  • ヘッダfrom
    メールヘッダ上の「From:」の後に記載がある(通常はメールソフト画面の差出人で確認可能)
  • エンベロープfrom
    メールヘッダ上の「Return-Path:」の後に記載がある

なりすましメール対策

上述のとおり、ヘッダfromを任意のアドレスに変更してなりすましメールを送信することが可能。なりすましメールを防ぐために、SPF/DKIM/DMARCがある。

SPF

メール送信元IPの正当性を認証する。
メール送信元ドメインに対し、正当な送信元IPをDNSに登録しておくことで、受信者がメール受信したときに、DNSを参照し正当なIPからメールが来ているか認証する。詳細は後述

DKIM

メールの中身の改ざんが無いことを認証する。
メール送信者は秘密鍵と公開鍵のペアを作成し、秘密鍵は保持、公開鍵はDNSに送信元ドメインと紐づけて登録する。メール送信時に、送信者が秘密鍵でメールを署名し、受信者はDNS上の公開鍵を使って認証する。もし、改ざんがあった場合は認証NG(Fail)となる。詳細は後述

DMARC

SPFとDKIMでFailした時に、受信者がメールを受信するかどうかを送信者側で制御できる仕組み。DMARC未設定の場合、受信者側のポリシーで受信するかどうかが決まる。例えば、攻撃者がxxxxx@shachiku-se.comに偽装したなりすましメールを送信した場合、受信者側のポリシーが甘ければ受信できてしまい、xxxxx@shachiku-se.comを持つ会社は風評被害を受けてしまう。そのため、受信者側のポリシーに任せず、送信者側のポリシーで強制する仕組みがある。詳細は後述

SPF

Sender Policy Frameworkの略。メール送信元IPの正当性を認証する。

仕組み

  1. メール送信者が、エンベロープfrom※に対する正当な送信元IP(SPFレコード)をDNSに登録しておく
  2. メールを受信したメールサーバが、メール情報内のエンベロープfromからSPFレコードを取得する
  3. メールを受信したメールサーバが、メール情報内の送信元IPとSPFレコード内のIPを照合し一致すればPass

※ドコモのキャリアメールでなりすまし拒否レベルを高く設定している人にメールを送信する際は、ヘッダfromでもSPF認証される(正確にはSPF認証でなくSender ID認証と言う)。通常はヘッダfromとエンベロープfromは同じなので、エンベロープfromのSPFレコードを登録していればヘッダfromもSPF認証Passするが、上述の例の場合などはヘッダfromとエンベロープfromが異なるので、エンベロープfromだけSPFレコードを登録していても認証Failする。個人的には、ドコモのキャリアメール、かつなりすまし拒否レベルが高い人のためだけに(私が確認できたのはドコモくらい)対応する必要はないと思う。実際に2024/2にGmailがセキュリティガイドラインを変更しSPF対応していないメールは受信しないことを公表したが、Sender IDまで要求していないというか触れてもいなかったので、ニッチな対応なんだと思う。

SPFレコードの設定方法

以下DNSレコードを登録する
送信元ドメイン IN TXT ①SPF version ②qualifier ③mechanism ④値

③④の条件に該当したものを②のルールで処理する。②③④は繰り返し記述することで複数条件処理できる。

①SPF version

v=spf2.0(Sender ID)もあるらしいが、あまり気にせず普通はv=spf1(※v=spf1.0は誤り)で設定するものらしい。

②qualifier

省略したら+となる
③④に該当したら②の処理を実施する

処理内容
正常なメールとして処理
不正メールとして処理され配信拒否(Fail)
~不正メールとして処理されるが配信される(Soft Fail)
?SPF指定なしとして処理

③mechanism+④値

③+④で②の処理を実施する条件を決める

よくある設定

送信元をip指定する

shachiku-se.com IN TXT ”v=spf1  +ip4:52.195.25.206  -all”

2つの②③④がある
 1つ目 +(②)ip4:(③)52.195.25.206(④)
 2つ目 -(②)all(③④)
1つ目の方が優先されるので、送信元が52.195.25.206であれば正常なメールとして処理、それ以外は

送信元をドメイン指定する

ip指定でなくドメイン指定したい場合はincludeを使う。例えば、メール配信サービスを使う場合は送信元ipが固定でないので、メール配信サービスのドメインを指定し、そのドメインに紐づくipであれば認証passするなど

DKIM

DomainKeys Identified Mailの略。メールの中身の改ざんが無いことを認証する。

仕組み

設定方法

よくある設定

タイトルとURLをコピーしました