このうちSPFは日本でも広く使われていますが、DKIMは情報が少ないために殆ど使われている事例を見かけません。DKIMは決して難しすぎるわけではないのですが、概念を把握できるような情報が日本語で存在しないため、概要を掴むのに苦労します。
さて、DKIMとは何でしょうか。
一言でいうと、メールに電子署名を付与するための手法です。電子署名を付与することで、正しい送信者から送信されていることを証明し、送信者を詐称する迷惑メールに対抗します。
ややこしいのは、「誰が署名するのか」「署名を検証したらどう使うのか」ということが利用者の裁量に任されており、そのせいで概念が極めて掴みにくくなっています。
署名する方法と、署名を検証する方法はシンプルです。DNSにレコードを追加して、そこにRSA公開鍵をおきます。送信者は対応する秘密鍵を使ってメールに署名します。受信者はDNSに問い合わせして公開鍵を取得し、その公開鍵を使って署名を検証します。
DNSに記載するドメイン名は、(selector)._domainkeys.(domain)という形式になり、そのselectorとdomainは署名中で指定することができます。gmail._domainkeys.example.comというドメインであれば、example.comの持ち主が署名しているということが証明されます。
selectorは鍵の名前と考えれば良いかと思います。DKIMでは、異なるサーバーから送信する場合など、同じドメインに対して複数の鍵を使うことが多いので、鍵に名前をつけて管理できるようになっています。
このことから分かるのは、SPFはDNSに記載があると強制的に検証されますが、DKIMの場合は、あくまで送信されたメールに署名が付与されている場合のみ検証されるということです。SPFとDKIMは大きく違います。
「誰が署名するのか」ということですが、基本的にはFromアドレスの持ち主が署名するのが最も効果的な方法です。Envelope Fromなどが署名しても良いと思いますが、Envelope FromはSPFで検証できますので、DKIMではFromのドメインで署名する方がベターでしょう。
「検証した結果どうするのか」ということですが、いまのところは目立つ効果はあまりありません。DMARCと組み合わせてFromアドレス偽装を完全に防いだり、Fromアドレスを証明することで迷惑メールと認定されにくくしたり、そういった効果が期待されます。
最近はgmailを始め、各社のメールサーバーが迷惑メール認定を極めて厳しくしていますので、こうした手法を取り入れて迷惑メール認定を防ぐことはビジネス上、重要だと思います。
DKIMを付与するだけで、メールの送信に計算量がかかるようになるので、単純な大量送信迷惑メールとは一線を画することができます。
さて、DKIMの具体的な導入方法ですが、以下の通りです。
自分でRSA鍵ペアを生成する場合は、opensslを使って以下のようなコマンドで生成します。
openssl genrsa -out rsa.private 1024
openssl rsa -in rsa.private -out rsa.public -pubout -outform PEM
ここで注意する点は、鍵長を1024bitにすることです。2048bitにするとDNSの1レコードに収まらなくなり互換性の問題を生じます。512bitは短すぎて受信者に検証拒否されます。
gmailのようなメールサーバーでは、鍵ペアを生成する機能を持っていますので、それを使って下さい。
DNSでは、(selector)._domainkeys.(domain)という形式のドメインに対して、以下のようなレコードを追加します。
v=DKIM1; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDwIRP/UC3SBsEmGqZ9ZJW3/DkMoGeLnQg1fWn7/zYtIxN2SnFCjxOCKG9v3b4jYfcTNh5ijSsq631uBItLa7od+v/RtdC2UzJ1lWT947qR+Rcac2gbto/NMqJ0fzfVjH4OuKhitdY9tf6mcwGjaNBcWToIMmPSPDdQPNUYckcQ2QIDAQAB
署名したり署名を検証する方法については、メールサーバーやライブラリによりますので、それらの製品のマニュアルを参照して下さい。gmailなどは容易にDKIM対応が可能です。
DKIMについてより詳しく知りたい場合は、残念ながらRFCを読むしかないかと思います。
http://tools.ietf.org/html/rfc6376
0 件のコメント:
コメントを投稿