spam対策の一つであるDKIMの検証結果をまとめてみました。
※以下まとめは、個人が勝手に理解して作ったものです。そのため間違いがある可能性があります。間違っている場合、教えて頂けるとうれしいですm(__)m

■DKIMとは
http://e-words.jp/w/DKIM.html

■DKIMの動き


①クライアントが送信MTAにメールをリレーする。
②送信MTAは受け取ったメールの「ヘッダ + 本文」からハッシュ値を求めヘッダに付与し、受信MTAにリレーする。
③受信MTAはメールを受信した時にDNSへ「公開鍵 + SSP」を取得しにいく。
④DNSは受信MTAに「公開鍵 + SSP」を渡す。
⑤受信MTAは、受信したメールの「ヘッダ + 本文」から電子署名を作成しそれを公開鍵でハッシュ値を求める。そして、受信メールのヘッダに元々付与されていたハッシュ値と求めたハッシュ値を比較して問題が無ければ受信する。
# 設定自体で問題があった場合(ハッシュ値が違う)でも拒否、受信ができます。
※送信MTA、受信MTAはDKIMの設定が入っているものとします。また、画像サイズは非常に大きいです。

検証で使用するMTAはPostfixを利用するため、Postfixの内部処理について説明します。

■Postfixの内部処理

# 簡単(最低限)に図を書いています。色々(deferred、transport、etc)足りませんがご了承ください。また、画像サイズは非常に大きいです。

①外部からメールを受け取った場合
外部からメールを受け取った場合は、「smtpd」の処理で「DKIM(milter)」にメールが渡されてDKIMの処理が走ります。

②内部(ローカル)からメールを受け取った場合
例えば、sendmailコマンドなどで内部からメールを受け取った場合は、「cleanup」の処理で「DKIM(milter)」にメールが渡されてDKIMの処理が走ります。

Postfix設定例(main.cf)

# DKIM
smtpd_milters = inet:10026
non_smtpd_milters = $smtpd_milters
milter_default_action = accept
①の処理が2行目
②の処理が3行目
になります。

また、4行目はmilter(プロセス)が落ちている場合でも処理を通すという設定になっています。

# Postfix before-queue Milterサポートページより
http://www.postfix-jp.info/trans-2.3/jhtml/MILTER_README.html

次に、DKIMの検証をしていきます。
※ちなみに、DKIMの検証ではハッシュ値比較までしかしません。SSPはまた今度。

次 >>


10月 23, 2011 at 3:54 pm by 黒ぶちメガネ
Category: Postfix, spam対策