0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

メールサーバ_DNS関連の学習記録④_DKIMとDMARCについて

Last updated at Posted at 2024-12-04

DKIMとは

DKIM(DomainKeys Identified Mail)
DKIMは、電子メールの送信者を認証するための技術。メールに電子署名を付与し、受信者がその署名を検証することで、送信者が正当であることを確認する。これにより、なりすましメールやフィッシング攻撃を防ぐことができる。

〇主な特徴
送信者の認証: メールの送信者が正当であることを確認できる
改ざん検出: メールが送信後に改ざんされていないかを検証できる。
スパム対策: 正当なメールとスパムメールを区別しやすくなる。

たとえば・・・

郵便に例えると、送信者が手紙に自分のサインをして、受信者がそのサインを確認することで、手紙が本当にその人から送られてきたことを確認するようなもの。
もしサインが偽物だったり、手紙の内容が書き換えられていたら、受信者はそれを見破ることができる。

〇使用例
企業のメールシステム: 企業が顧客に送るメールの信頼性を高めるために使用する。
メールマーケティング: メールがスパムフォルダに入らないようにするために使用される。
個人のメールアカウント: 個人がなりすましメールを防ぐために使用する。

DKIMの仕組み

①送信ドメインの管理者は、秘密鍵と公開鍵のペアを生成する。秘密鍵はメールサーバーに登録する。公開鍵はDNSサーバーに登録する。

②メールを送信する際、送信サーバーはメールのヘッダーと本文の一部に対してハッシュ値を計算し、そのハッシュ値を秘密鍵で署名する。この署名がメールのヘッダーに追加される。(DKIM-Signatureが付与される)
③送信ドメインのDNSに、公開鍵を含むTXTレコードが追加されます。これにより、受信サーバーは公開鍵を取得できるようになる。
④受信サーバーは、メールのヘッダーに含まれるDKIM署名を確認する。次に、送信ドメインのDNSから公開鍵を取得し、その公開鍵を使って署名を検証する。

具体的には、受信サーバーはメールのヘッダーと本文の一部からハッシュ値を再計算し、そのハッシュ値と署名から得られたハッシュ値を比較する。これが一致すれば、メールが改ざんされていないことが確認できる。

二つの署名方法

〇作成者署名

メールの送信元のドメインが署名する。
送信者自身のドメインがメールに対してDKIM署名を付けることで、メールがその送信者(ドメイン)から正当に送信されたものであることを証明します。

仕組み

メール送信者のドメインが所有する秘密鍵で署名される。
受信側は送信者のドメインのDNSに公開されている公開鍵を使って署名を検証する。
これにより、「このメールは送信者のドメインから改ざんされずに送られてきた」という保証が得られる。

第三者署名 (Third-Party Signature)

メールが正当に配信されたことを、第三者(通常は信頼されている送信サービス)が保証する。配信インフラを持たない送信者が簡単にDKIM署名を利用可能

仕組み

メールを配信するサービスプロバイダー(例: メールマーケティングサービス、クラウドベースのメール配信サービス)が、独自のドメインでDKIM署名を付ける。
受信側はその第三者のドメインのDNSに公開されている公開鍵で検証する。

設定前の前提条件

送信メールサーバーの対応の確認

メールサーバーまたはメールサービス(例:Google Workspace、Microsoft 365、Amazon SESなど)がDKIMに対応している必要があるため確認する。

ドメインのDNS管理権限

ドメインのDNS設定にアクセスできる必要があるのでここに公開鍵(TXTレコード)を追加する。

ドメインに関連付ける署名鍵ペア

・公開鍵:DNSに登録する。
・秘密鍵:メールサーバーが署名用に使用する(外部に公開しない)

設定手順

1. メールサーバーでDKIM署名を有効化

利用しているメールサービスまたはサーバーの管理画面で、DKIM署名を有効にする。

サービスごとの設定例:
Google Workspace:「Admin Console」→「アプリ」→「Google Workspace」→「Gmail」→「認証」→「DKIM署名を設定」
Microsoft 365:「Exchange管理センター」→「認証」→「DKIMの有効化」

2. 公開鍵(DNSレコード)を取得

メールサーバーでDKIM設定を有効化すると、公開鍵が生成される。
公開鍵は通常、TXT形式で指定され、次のようになる。:
v=DKIM1; k=rsa; p=公開鍵文字列

3. ドメインのDNSに公開鍵を追加

ドメインのDNS設定で、新しいTXTレコードを作成する:
ホスト名(例):default._domainkey.example.com
値(例):v=DKIM1; k=rsa; p=公開鍵文字列
注意:ホスト名はメールサービスによって異なることがある(例:selector1._domainkey)。
4. 設定を検証
メール送信後、受信メールサーバーが署名を検証できるよう、以下の方法でDKIMが正しく設定されているか確認する:
メールヘッダーを確認(Authentication-Resultsにdkim=passが表示される)。
dkim=failやdkim=neutralが表示される場合、DKIM署名が正しく設定されていないか、DNSに問題がある可能性がある。
DKIM検証ツール(例:dkimcore.orgやPostmark)を使用してDNSレコードをテスト。

メールヘッダーの確認方法(Outlook)

該当メールを開く。
メニューから「ファイル」→「プロパティ」を選択。
「インターネットヘッダー」セクションでメールのヘッダー情報が表示される。
Authentication-Resultsというフィールドがあるのでdkimがpassになっているか確認する。

DMARCとは

DMARC(Domain-based Message Authentication, Reporting, and Conformance)は、電子メールのなりすましやフィッシング詐欺を防ぐためのメール認証プロトコル。送信者のドメインに対するSPF(送信ポリシーフレームワーク)やDKIM(ドメイン鍵識別メール)の設定と連携し、受信者にメールが信頼できるかどうかを伝える。最後にレポートを送信する。

たとえば・・・

DMARCは学校の門番、受付の事務員的な存在である。DKIMは生徒手帳、SPFは通学証(決められた通学のルート)のようなもの。これを確認してその学校の生徒なのかを確認する。

DMARCは門番の役割をしている。

校長先生がドメイン管理者的な存在。校長先生が門番にルールを渡す。これがDMARCポリシーになる。

none(記録だけ):怪しい人がいても、「一応記録しておこう」と何も行動しない。
quarantine(要注意人物としてマーク):怪しい人は教頭先生に報告し、校内に入らず別の場所で待機(迷惑メールフォルダ行き)
reject(追い返す):怪しい人は学校に絶対に入れない(メール受信拒否)。

レポートを校長に提出する。門番は毎日、誰が来て、誰が追い返されたかを記録して校長先生に報告する。これがDMARCの「レポート機能」です。

DMARC設定前にやっておくこと

SPF(Sender Policy Framework)の設定

目的:メールを送信するサーバーのIPアドレスを指定し、受信者に正当な送信元かを確認させる。
・ドメインのDNSにSPFレコードを追加(例:v=spf1 include:example.com -all)。
・送信元のIPやメールサービスプロバイダ(例:Google Workspace、Microsoft 365)の情報をリストに含める。

DKIM(DomainKeys Identified Mail)の設定

目的:送信するメールにデジタル署名を付与し、改ざんされていないことを確認する。
・メールサーバーでDKIMを有効化。
・ドメインのDNSにDKIMの公開鍵(TXTレコード)を追加。
 (例:v=DKIM1; k=rsa; p=公開鍵)

DMARCポリシーの設定

目的:SPFやDKIMの結果を元に、受信側がどのようにメールを扱うかを指示する。
・ドメインのDNSにDMARCレコードを追加(TXTレコード)。

v=DMARC1; p=reject; rua=mailto:dmarc-reports@example.com; ruf=mailto:dmarc-failure@example.com

設定例

DMARCポリシーの構文

v=DMARC1; p=ポリシー; rua=レポート送信先; ruf=詳細レポート送信先; sp=サブドメインポリシー; pct=適用割合

最初にDMARCを導入する際、設定をテストするために使用する構文
メールを認証できなくても受信をブロックしない

v=DMARC1; p=none; rua=mailto:dmarc-aggregate@example.com; ruf=mailto:dmarc-failure@example.com; pct=100

v=DMARC1:DMARCレコードのバージョン。

p=ポリシー:none(ログのみ)、quarantine(隔離)、reject(拒否)のいずれか指定。

rua:認証結果レポートの送信先メールアドレス。

ruf:失敗したメールの詳細レポートの送信先メールアドレス。

こんな記事も書いています!

参考にしたドキュメント

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?