こんにちは。メッセージング技術領域における第11代黒帯(ヤフーでのスキル任命制度)の中村成陽と申します。エンジニアとしてYahoo!メールを担当しております。
今回の記事では、メールの比較的新しい認証規格である BIMI についてのご紹介、そしてその BIMI を Yahoo! JAPAN が導入することになりましたので、それまでの過程や実際の対応内容などについてご説明します。さらに、BIMI における今後の展望に関しても触れられればと思います。
BIMI とは?
BIMI (Brand Indicators for Message Identification) とは、認証に成功した正規のメールに、その送信元である企業やサービスのロゴマークを表示する仕組みです。これにより、適切に認証されたメールに対してのみ、そのドメインの管理者が設定したロゴマークが表示されるため、ユーザーに正式なメールであるか、そうでないかの認識をサポートする効果が期待できます。
BIMI は Internet draft の段階であり、まだ RFC にはなっていません。しかし、Gmail が 2021/7/13 に正式対応、さらには2022年秋には Apple が MacOS / iOS16 より対応予定であると発表しており、今後より普及していくものと思われます。
この BIMI において、そもそもの送信元の正当性を保証するための認証の仕組みとしては DMARC が採用されています。この DMARC の詳細については、以前 Yahoo! JAPAN Tech Blog に掲載した以下の記事を参考にしてください。
偽ヤフーのメールからユーザーを守りたい
BIMI の導入を検討した背景として、Yahoo! JAPAN や関連サービスを騙るフィッシングサイトが多く発生しており、そこへ誘導する SMS やメールも横行してしまっているという現状があります。
Yahoo!メール内では従来より正規のメールにはY!のアイコンを表示しております。が、Gmail等のほかのメーラーで受信しているユーザーも一定数存在しているため(Yahoo! JAPAN のアカウントのメインメールアドレスに Gmail を設定している等)、そういった方々も含めてフィッシングの被害から守るため、対応をすることとなりました。
BIMI 導入の条件
自社サービスからのメールを BIMI に対応させたい! となった場合、まずはメールのFromアドレスで利用するドメインにおいて、送信ドメイン認証が特定の条件を満たす内容で宣言されていることが必要です。その条件とは「DMARC レコードが宣言されており、なおかつ DMARC ポリシーが quarantine もしくは reject に設定されていること」です。
ポリシー none を許容しないことで、より厳密な SPF 及び DKIM の設定を送信者に求め、BIMI によってロゴが表示されているメールへの信頼性を高めているものと思われます。
詳細な説明は先述した以前の記事を参照いただければと思いますが、ヘッダFromのドメインがこの条件を満たす DMARC 認証に成功したメールが、BIMI の表示条件をまず認証面ではクリアしているということになります。
次のステップとして、VMC (Verified Mark Certificate) を取得する必要があります。これは、商標登録されているロゴを検証し、 BIMI を表示させるため証明書です。現在は 2 社の認証局から発行されており、そちらから取得する必要があります。
こちらで発行された証明書( pem 形式)とロゴマーク( svg 形式)を DNS の TXT レコードに決められた書式で宣言すれば、対応としてはひととおり完了です。なお、これを「BIMI レコード」といいます。
Yahoo! JAPAN での導入
この BIMI を Yahoo! JAPAN から配信される各メールに対しても対応させるためには、今回導入するドメインである @mail.yahoo.co.jp
について、先述した条件を満たさなければなりません。
まず認証面ですが、DMARC は従来よりポリシー quarantine で宣言をしておりますので、こちらは問題ございません。
% dig _dmarc.mail.yahoo.co.jp txt +short
"v=DMARC1; p=quarantine; rua=mailto:mail_dmarc_report@yahoo.co.jp"
次に、VMC の取得です。今回は認証局として digicert 様より VMC を発行いただきました。
これで準備が整いましたので、以下の通り DNS に BIMI レコードを宣言しました。
% dig default._bimi.mail.yahoo.co.jp txt +short
"v=BIMI1; l=https://bimi.west.edge.storage-yahoo.jp/yahoo_japan_corporation_224791083.svg; a=https://bimi.west.edge.storage-yahoo.jp/yahoo_japan_corporation_224791083.pem"
BIMI レコードは、対象ドメインの <selector>._bimi
というサブドメインの TXT レコードに宣言します。この<selector>
(セレクタ)により、一つのドメインで複数の BIMI レコードが宣言できます。通常は default が利用されますが、切り替えたい場合は送信するメールに BIMI-Selector
というメールヘッダを付与することで、参照する BIMI レコードを変更できます。このヘッダが未指定の場合は default が参照されます。
次にレコードの中身についてです。v
パラメータは BIMI のバージョンを表しますが、現在は BIMI1
しかないため、ひとまずおまじないのように v=BIMI1;
を付与すれば、それが BIMI レコードを表すことになります。 そして l
パラメータは表示されるロゴイメージの場所を、a
パラメータには発行された VMC の場所を指定します。なお、これらはHTTPSで接続できる場所で、なおかつ同じドメインである必要があります。
BIMI 導入にあたっての注意ポイント
BIMI 導入のための対応をまとめてしまうと、実際に行ったのは記載した通りの内容なのですが、実現するまでにはそれなりの苦労もありました。中には Yahoo! JAPAN ならではのものもあるかと思いますが、皆さんの参考になるものもあるかと思いますので、ご紹介させてください。
Yahoo! JAPAN ならではの苦労
まず一点目は、先ほど必要条件であると述べた DMARC ポリシーの quarantine への設定についてです。ポリシーを厳しいものに変更するという部分に Yahoo! JAPAN という規模の大きいサービスならではの難しい点があり、こちらについては以前掲載した以下の記事を参照いただければと思います。
そしてもう一点は、ロゴの商標についてです。BIMI では、関係のない第三者に勝手にロゴが利用されてしまうのを防ぐため、VMCの発行に際しては、その企業が所有して商標登録されているロゴを利用する必要があります。
ヤフーの”Y!”のロゴは従来、日本のヤフー株式会社ではない別の米国企業が商標を所有しており、その利用に制限がある状態でした。
しかし、2021年7月に「ヤフージャパン ライセンス契約」に係る基本契約締結のお知らせが発表され、これにより”Y!”のロゴの権利者がわれわれヤフー株式会社となり、晴れて BIMI で表示するロゴとして利用できるようになりました。こちらがなければ、少なくとも”Y!”のロゴでの BIMI 導入は難しかったものと思われます。
この辺り、私は門外漢なので正直あまり詳しくはないのですが、BIMI で利用したいロゴの商標が登録されているか、そしてその権利者は想定通りかどうかは、必ずご確認いただくべき事項かと思います。
組織ドメイン、およびサブドメインにおける仕様
さらに、BIMI に関する細かい仕様にも注意が必要です。
先ほど導入するドメイン(今回は mail.yahoo.co.jp
)の DMARC 認証の条件についてご説明しましたが、実は他にも注意しなければならないポイントがあります。
まずは、導入するドメインのサブドメインに関する仕様です。BIMI の要件を満たすための DMARC 認証の条件として、Internet draft には以下のような記載があります。
If a subdomain policy is published it MUST NOT be “none”
実は DMARC レコードにはそのサブドメインのポリシーを指定できる sp というオプションがあり、これを使うことでレコードを宣言しているドメインとそのサブドメインとでそれぞれポリシーを設定することができます。
例えば example.com
というドメインで、DMARC レコードが以下のように宣言されていたとします。
v=DMARC1; p=quarantine; sp=none
この場合、example.com
ドメインの DMARC ポリシーは quarantine となりますが、hoge.example.com
など、そのサブドメインの DMARC ポリシーは全て none で宣言されていることと同等になります。これにより、例えばサブドメインは正規のメールアドレスとして利用されるケースがないといった場合にはポリシーを厳しくする、といったことができるわけです。(ちなみに sp オプションを指定しない場合は、サブドメインも p オプションで指定したポリシーを継承します。)
Internet draft の記載では「サブドメインポリシーを公開する場合、それを none にしちゃダメですよ」と言っているので、サブドメインも含めて none は許容しませんよ、という仕様になっています。
そしてもう一点、同じく BIMI に関して記載された Internet draft には以下の記載もあります。
To participate in BIMI, Domain Owners MUST have a strong [DMARC] policy (quarantine or reject) on both the Organizational Domain, and the RFC5322.From Domain of the message.
“RFC5322.From Domain” とはヘッダFromのドメイン、つまり BIMI の導入対象となるドメインです。もう一つ、”Organizational Domain” というのは RFC7439 でも定義されている言葉ですが、要するにレジストラに登録されている親ドメインのことであり、Yahoo! JAPAN では yahoo.co.jp
が該当します。
つまり、「Fromアドレスのドメイン( mail.yahoo.co.jp
)だけでなく、その組織ドメイン( yahoo.co.jp
)の DMARC ポリシーも quarantine か reject にしないとダメだよ」と言っています。
ここまでを要約すると、BIMI に対応するドメインは、その親子のドメイン含め全て DMARC ポリシーの条件を満たす状態にしなければならない ということです。
大変恥ずかしながら、実は当初、 yahoo.co.jp
は none で DMARC を宣言していたため、この条件に該当できず BIMI によるロゴの表示が行われませんでした。
BIMI に対応したいドメインそのものが組織ドメインで、なおかつそのサブドメインに対して DMARC の設定をしていない場合、そのドメインの DMARC レコードの内容を確認すれば良いのでシンプルです。しかし、われわれ Yahoo! JAPAN のように親子のドメインで DMARC をそれぞれ宣言しているケースでは特に注意してください。
この辺りに言及している日本語の資料などが見受けられなかったため、この場を借りて共有をいたしました。
Yahoo!メールではどうするの?
ここまでお読みいただいて疑問に思われている方もいらっしゃると思いますが、私の担当サービスでもある Yahoo!メール で、BIMI によるロゴの表示に対応する予定があるのかどうかについてです。
回答としては、ユーザーメリットも大きいと考えているので、もちろん検討はしております。しかし、ひとまずは既に導入している独自機能である「ブランドアイコン」をより普及させることを考えております。このブランドアイコンには BIMI にはないメリットもあり、その一つが詳細画面の表示となります。
BIMI の場合、例えば Gmail ではロゴが出ている理由が UI 上に特に表示されず、Google アカウントのプロフィール画像と同じように表示されています。
一方、Yahoo!メール のブランドアイコンでは、メールの詳細画面に送信元の企業やサービス名、そしてそのリンクが表示されます。この点は導入企業やユーザーの皆さんからも好評をいただいております。
Yahoo!メール での BIMI の表示対応に際しては、ただ導入するだけでなく、これまでの経験を生かした改善提案などもしつつ、検討をしたいと考えております。
さいごに
今回の記事では、今後普及する機運が高まっている BIMI について、実際の導入事例も交えてご紹介いたしました。メールを利用するユーザーの方々の安心・安全のためより普及させていくことが重要だと考えておりますので、この記事を参考に、ぜひ対応を検討いただければと思います。
こちらの記事のご感想を聞かせください。
- 学びがある
- わかりやすい
- 新しい視点
ご感想ありがとうございました