こんにちは。エムスリー・QLife(エムスリーのグループ会社)・エムスリーヘルスデザイン(エムスリーのグループ会社)でエンジニアとして各種作業に関わっている山本です!
以前もメール送信の話を書かせていただいたことがありますが、今回もまたメールネタとなります。今回のお題はメールセキュリティです。
すでにご覧になった方もいるかと思いますが、次のようなニュースが流れています。
この「GoogleとYahooの新Eメール認証要件」ってつまりどういうことよ? というところを具体的にどのように進めているかについて書かせていただきたいと思います。
2023/12/18追記 : Googleからメール送信にTLSを使うことが追加要件として示されました。
- TL;DR
- とりあえず何から始める?
- 現状の把握で対応要否判定
- DMARCを突破しよう
- Gmailのさらなる追加要求
- ドメイン一致はどちらで満たすか?
- その他注意
- まとめ
- We are hiring!
TL;DR
とりあえず簡単な図です。
SPFとDKIMがPassになっているかどうか。そしてドメインが一致しているかどうか。DMARCがPassするかどうか。Gmailが(一日5000通送信する送信者について)どう判定するかの早見表です。
見てわかる通り、SPFとDKIMがPassだったからといってDMARCがPassするとは限らないし、DMARCがPassするからといってGmailが許してくれるとは限らないという複雑な関係です。
水色のところにないと分かったら水色のところに持っていくように変更していく、というのがやることです!「ドメイン一致(不一致)」というものが特に問題となってきます。DMARCは必須となります。しかし水色のところにあればDMARCは通りますのでDNSレコード追加だけで終わりです。 今回のGmailの規制はメール送信者へのなりすましへの対策を強化するものとなりますので、逆に言えば水色以外の場所にあるメールはなりすましメールと判断されやすいということです。
とりあえず何から始める?
特に一日5000メッセージ以上をGmail(企業がGoogleのサービスとしてGmailを利用している場合も含みます)に送信している場合にはご注意ください。
- 社内でメールを送っているサービスを調べ上げる
- 上記の上で、メールの認証技術を確認する
- 必要ならば対処を実施する
ということになるわけですが、「確認」とか「対処」といっても具体的なところがわからないとどうしようもありません。
エムスリーでもQLifeでも各所で多数のメールを送信させていただいています。 送信しているメールも担当が多様ですのでヒアリングを開始したところです、そして送信しているメールを収集中です。
収集したメールの何を見ればよいのかを書いていきます!
何はともあれ実際に送っているメールをGmailで開く!
まずは確認です。メッセージのソースを開いてみましょう。
そして例えば次のようなものを見ることができます。
以下の3つの設定が見えます。これがメール認証のキモです。
- SPF
- DKIM
- DMARC
例えばDKIMを使ってなければその表示はありませんしDMARCを使っていなければDMARCの表示はありませんので、全ての項目が常に表示されるわけではありません。
この結果を受けてどのような観点で見るのでしょう?
SPFの見どころ(Fromドメインとenvelope-fromのドメインの差異)
SPFに関してはenvelope-fromと呼ばれるものを確認します。 具体的にはメールのソース画面を下に辿って Return-Path:というところを見てみましょう。
テストとして私に送信してみました。
Return-Path: <XXXXX-XXXXX@m3.com> 省略 From: XXXXX-XXXXX@example.com To: 私用アドレス@gmail.com Subject: test
このメールの場合は、Fromは example.com
ですが、Return-Pathことenvelope-fromは m3.com
となっています。このドメインの一致があるのかないのかをまずは確認です。
ドメインは一致した方が好ましいのですが、一致しなかったからといって即問題があるわけではありません。
一般論として他社のメールサービスを使ってメールを送信する際にこの不一致が起きることがあります。
例えば、Amazon SESを利用してメールを送信する場合にはデフォルトのenvelope-fromは amazonses.com
となります。Fromは自社ドメインでしょうから不一致となるのです。
カスタムの MAIL FROM ドメインを使用する - Amazon Simple Email Service
なりすましメールの場合でもSPFがPassするものがあり、それは一般にこの不一致が起きています。例えば Fromがm3.com
であっても、envelope-fromが spam.example.com
であるとすれば、m3.com
管理者としてはその送信者の正当性を保証できません。
DKIMの見どころ(Fromドメインと署名ドメインの差異)
DKIMについても同様の観点があります。
先ほどのメール認証結果例ですが、これは実は Fromは m3.com
のメールです。しかし、メールのDKIMについてはドメインが m3.com
にはなっていません。このような例も各所にあります。これも一致する方が好ましいのですが、一致しなかったら即問題だというわけではありません。
ここでドメインが一致しているものが「作成者署名」、一致していないものが「第三者署名」です。
例えば上記は From が m3.com
のメールでも XXXX.gappssmtp.com
が署名しています。Gmailを独自ドメイン(m3.com
など)で使っている場合、特段設定をしていない場合はこのような不一致ドメインの署名となります。
参考: ドメインで DKIM を有効にする - Google Workspace 管理者 ヘルプ
SPFの場合と同じですが、なりすましメールの場合でもDKIMがPassするものがあり、それは一般にこの不一致が起きています。例えば Fromがm3.com
であっても、DKIM署名が spam.example.com
であるとすれば、m3.com
管理者としてはその送信者の正当性を保証できません。
DMARC
DMARCはFromドメインごとの設定となります。
例えばFromが m3.com
ならば、どのような送信方法を取ろうと1つの設定(具体的には _dmarc.m3.com
の DNSのTXTレコードに登録したもの)がそれです。
DMARCは、「SPFやDKIMをこういう感じで評価してね」とお願いする設定です。 このDMARC設定が今後はGmailへの大量送信において必須となります。
まずは、自分が送信しているメールにDMARCがあるのかないのかということだけを把握してください。
DMARC設定を追加するだけならば自ドメインのDNSレコードに設定を入れるだけであり v=DMARC1; p=none
のような無難な設定だけをするというのもアリです。アリなのですが、入れたらDMARCがFailになる状況で入れるのは害しかありませんので、DMARCがPassする状態であることを確信してから入れることになります。
追記:DMARCについてはその後以下の記事で触れております。 www.m3tech.blog
現状の把握で対応要否判定
これまでの調査で、送信しているメールの位置がわかったはずです。
例えば、SPFとDKIMは存在していてどちらもPassしているけれどもどちらもドメインが不一致ならば、真ん中の部分の「DMARC Fail / Gmail Fail」というところにあたります。 SPFは同一ドメインで成功しているけれど、DKIM署名として誤ったものをつけてFailした場合は、「DMARC Pass / Gmail Fail」です。
ここで「Gmail Pass」になっている水色の箇所に現状でいないならばメール認証について対応の必要があります。水色の部分にあるならば一旦メール認証については安心して下さい。DMARCがもしも存在しなかったとしたら入れる必要はありますがPassするはずです。
もちろんGmailが求めている話は他にもあります。あくまで「メール認証」に限った話です。
DMARCを突破しよう
DMARCがFailになるよ、というものだった時にどうすればよいのでしょう。DMARCは基本的にはSPFとDKIMの「どちらか」が一致していればOKというものです。ですのでSPFとDKIMをちゃんと設定するのは前提です。
しかし、図を見るとわかるようにむしろSPF/DKIMの両方がPassでもDMARCがFailだったりすることさえあります。これはDMARCアラインメントと呼ばれるものが原因です。
DMARCアラインメントは簡単に言えばFromドメインと検証ドメイン(SPFのenvelope-from、DKIMの署名ドメイン)を一致させてくださいということです。SPFやDKIMの仕組みではFromドメインについての確認をしていないので、仮にそれらがPassであってもなりすましが可能という面があり、DMARCアラインメントのFromチェックによってそれを防ぐのです。
- envelope-fromが @example.com で Fromが @example.netの場合→ Fail
- DKIM署名が @example.com で Fromが @example.netの場合→ Fail
上記どちらか一つだけでもよいのでドメインを一致させてしまえばDMARCアラインメントを突破できます。
なお、DMARCの設定依存ですが、Fromアドレスはデフォルトでは検証ドメインのサブドメインでもOKです。
Gmailのさらなる追加要求
一日5000通以上送る場合に限りますが、DMARC Passよりも上を要求しています。図でいうところの黄色に当たるところにある場合はDMARC PassでもGmailはFailです。つまりSPF(or DKIM)がアラインメントを含めてPassでも、他方が存在しないとかFailならばダメなのです。
例えばSPFだけ設定してドメインも一致しているならば今まではDMARCを含めて特に問題ありませんでしたし、実際にそのような運用は広く行われています。しかしGmailはDKIMが存在しないという理由で許してくれないということです。 DMARCもDKIMも必須であると考えて下さい。
Email sender guidelines - Gmail Help
ドメイン一致はどちらで満たすか?
ドメインの一致はSPF側(envelope-from側)でもDKIM署名側でもどちらでもOKですし、もちろん両方一致してもOKです。
しかし今からシステムを変えるとしてenvelope-fromの変更はそれなりに難しい可能性もあります。 envelope-fromはつまりはエラー発生時のbounceメール到達アドレスです。メール配信システムは通常はbounceメールを自動処理させますので、そのドメインを変えると処理に問題が発生しうるのです。
特に問題なく設定できる場合もあります。例えばSendGridの場合は自社ドメインのサブドメイン(ex. sub.example.com
)にCNAMEを設定させて sendgrid.net
のドメインを向けるようです。それによって、envelope-from(bounceメールの宛先)は自社ドメイン(sub.example.com
)でありながら実際は sendgrid.net
のサーバを向くので、そちらでメール受信されて自動的処理される模様です。
SendGridからメール送信する場合のSPFとDKIMの認証の仕組み – 前編 | SendGridブログ
envelope-fromを変えるのが問題である場合は、DKIM署名を自社ドメインとして付与となります。こちらの方がどちらかといえばシステムに悪影響なく簡単に導入できる可能性が高そうです。
- Will Mail DKIMとは?なぜメルマガ配信に必要なの?
- HENNGE One Hennge One (HDE One)にDKIMを設定するには?- スカイスナッグ
- postfix/sendmail OpenDKIM
その他注意
Googleの公式ページの記述を見てみます。
日本語で読みますと、(少なくともこれを書いている現在では)一日5000通以上の場合でも「SPF『または』DKIM」を導入しろとあります。(追記:2023/10/30時点では「SPFおよびDKIM」と訂正されていました。ありがとうございます。)
ただ、英語版を読みますと明らかに5000通以上の場合だけ書き分けてあります。
全送信者に適用されるポリシーは"or"。
Set up SPF or DKIM email authentication for your domain.
5000通以上の場合は"and"。
Set up SPF and DKIM email authentication for your domain.
プルーフポイントさんの記事で5000通以上の場合は「SPFおよびDKIM」が必要であるであることを前提としてありますし、その通りなのだと思います。そしてどんなに少なくともSPFとDKIMの両方を入れることには認証上で何もデメリットはありませんので「SPFおよびDKIM」を導入するようにしましょう!
まとめ
- 来年2月からGmailへの大量送信は規制が始まる
- とりあえず、送っているメールの認証結果を確認しよう
- 早見表を参考に現状で規制対象予定なのかどうかを知ろう
- 規制対象予定なら規制されないように設定を変更しよう(特にDKIMとDMARC)
We are hiring!
エムスリーやそのグループ会社では常に素敵なエンジニアを募集しております! 興味あればぜひお越しください!
また、メールに限らずセキュリティ強化を実施中で、セキュリティエンジニアも募集中です。