なる理系学生日記おまえはいつまで学生気分なのか2022-07-17送信ドメイン認証としてのSPFとDKIMmail最近はなりすましメール周りについて調べていまして、いままでまったくタッチしてこなかったメール周辺知識を必死で吸収するようにしています。Mail)今後メールにおける送信者情報メールにおいては、2つの送信者情報が存在します。エンベロープFromヘッダFromエンベロープFromご存知の通り、メールの配送プロトコルはSMTPです。SMTPは配送を行うプロトコルであるがゆえに、当然送信者や宛先のメールアドレスが必要になります。これらは、MAILやRCPTといったSMTPのコマンドにより、メールサーバ(MTA)間でやりとりされます。FROMでやりとりされる情報は「reverse-パス」という名前がついていますが、これが俗にいう「エンベロープFrom」です。Transactionsあくまで「配送」に使われる情報であるため、メールの受信者にはこの情報は届きません。ヘッダFrom一方で、メール本体をメール本文とともに構成するのがメールヘッダであり、ここにも送信者情報が含まれます。Fieldsメールソフト(MUA)がユーザに「送信者」として表示するのは、このうちのFromヘッダの情報であることが多いです。上記のように、メールには2種類の送信者情報が存在しますが、それが正しく名乗られているかを確認する仕組みは長らくありませんでした。これを何とかしようという技術が、一般に「送信ドメイン認証」と呼ばれる技術になります。Framework)です。あるメールを受信した時、その送信者が「ドメイン所有者が認めたメール送信者であること」をチェックします。原理は単純で、メールを受信したMTAは、reverse-パスのドメインのDNSサーバに対して、SPFレコードを問い合わせます。SPFレコードには、当該ドメインのメールは「どこから送信されるのか」という情報が記載されており、ここで宣言された場所からメールを受信したか否かによって認証を実施します。SPFの優れたところは、SPF対応が送信者側のDNSサーバへTXTレコードを追加することだけで完了する点です。qiita.comが「どこからメールを送信すると宣言しているのか」を見てみましょう。これはqiita.comのTXTレコードを問い合わせてみるとわかります。~all"includeは「どこからメールを送るかの設定は別のドメインの設定を見てくれ」という設定です。SES、Zendeskなどから送られると宣言されています。SESからqiita.comを名乗るメールを送信する」と宣言していることがわかります。具体的に「どこから」ということを確認するには、amazonses.comへ再度TXTレコードを問い合わせれば良いです。mechanismを使って列挙されており、-allによってそれ以外の送信元は「認証していない」ことがわかります。mechanismを使うことにより、メール配信サービスを利用してもSPFに対応可能になっています。Aレコード/AAAAレコードが示すIPアドレスからの送信も「認証する」ことを示します。最後の~allはSoftfailを示しており、それ以外の送信元からのメールは「認証はしないがリジェクトまではするな」、という微妙な意味合いになります。Mail)は電子署名によって送信元を認証します。シーケンスはシンプルで、まずメールの送信側では電子メールに(秘密鍵を利用して)電子署名を付与します。メール受信側は、送信元のドメインに対して(秘密鍵に対応する)公開鍵をDNSサーバに要求し、手に入れた公開鍵で署名を検証します。送信元ドメインが詐称されていた場合、詐称者は当該ドメインの「秘密鍵」を持っていないため、署名の検証には失敗するという筋書きです。Qiitaの公開鍵を探してみましょう。Qiitaから私に届いたメールにも当然DKIMの電子署名が付与されています。具体的には、メールヘッダのうちのDKIM-Signatureです。Fieldに定義があります。d=qiita.comがドメイン、s=k1がセレクタを意味しています。DKIMの仕様においては、<セレクタ>._domainkey.<ドメイン>に公開鍵を配置することになっているため、これを理解していれば公開鍵が取得可能です。p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDbNrX2cY/GUKIFx2G/1I00ftdAj713WP9AQ1xir85i89sA2guU0ta4UX1Xzm06XIU6iBP41VwmPwBGRNofhBVR+e6WHUoNyIR4Bn84LVcfZE20rmDeXQblIupNWBqLXM1Q+VieI/eZu/7k9/vOkLSaQQdml4Cv8lb3PcnluMVIhQIDAQAB;"dkim.mcsv.net側に公開鍵が登録されており、その値はBase64でMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDbNrX2cY/GUKIFx2G/1I00ftdAj713WP9AQ1xir85i89sA2guU0ta4UX1Xzm06XIU6iBP41VwmPwBGRNofhBVR+e6WHUoNyIR4Bn84LVcfZE20rmDeXQblIupNWBqLXM1Q+VieI/eZu/7k9/vOkLSaQQdml4Cv8lb3PcnluMVIhQIDAQABであることがわかります。7601)の理解が必要そうです。読みきれなかったので、まずはここまで。ExtensionのユニットテストでCoverageを取得する「上流から下流まで生成AIが変革するシステム開発」を読んだ「その仕事、AIエージェントがやっておきました。(1)はてなブログをはじめよう!kiririmodeさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。