パスワードを忘れた? アカウント作成
530131 journal

Ryo.Fの日記: DomainKeys導入・その2・spamass-milterと共用

日記 by Ryo.F

前のエントリの続き。
SPAM対策ソフトとして有名な、SpamassassinをMILTERで使う、spamass-milterと同時に使ってみた。Sendmail側の設定(.mc)を次のようにしてみた:

INPUT_MAIL_FILTER(`spamassassin', `S=local:/var/run/spamass-milter/spamass-milter.sock,, F=, T=C:15m;S:4m;R:4m;E:10m')dnl
INPUT_MAIL_FILTER(`dk-filter', `S=local:/var/run/dk-filter/dk-filter-kaki.sock')dnl

すると、検証(verify)で失敗するようになった。

Authentication-Results: host.example.com from=user@example.com; domainkeys=fail

原因は、dk-filterが署名(sign)した後に、spamass-milterがheaderを追加してしまうためだ。前回参考にしたページによると、

複数の milter を導入する時は dk-milter を優先させなくてはいけない

とあるが、INPUT_MAIL_FILTERの順番を変えてもやはり検証に失敗する。
というのは、例えば上のように設定した場合、(1)spamass-milter、(2)dk-filter、その後受信時に(3)spamass-milter、(4)dk-filterの順で処理される。送信時は、(1)でspamass-milterで処理された後、dk-filterで署名されるため、この時点では問題ないが、受信時に先に(3)でspamass-milterによりヘッダ情報が追加されるため、(4)の検証で失敗する。
上と逆の順番で設定した場合はこの逆で、送信時は、(1)dk-filter、(2)spamass-milter、その後受信時に(3)dk-filter、(4)spamass-milterの順で処理される。このとき、(1)で署名した後に、(2)でヘッダ情報が追加されるため、(3)の署名で失敗する。ただし、この場合は他のサイトから送信されたメールは正常に検証できる。
実は、ここで指摘されている通り、dk-filterに`-H'をつけてdk-filterが署名したヘッダ情報を明示するようにすれば良い。このようにすると、dk-filterによる署名時に次のようなヘッダ情報が挿入される:

DomainKey-Signature: a=rsa-sha1; s=selector; d=example.com; c=nofws; q=dns;
        h=date:message-id:to:subject:from:x-mailer:mime-version:
        content-type:content-transfer-encoding;
        b=mZSQ<<以下略>>

ここで、`h='で示されているヘッダ情報に対してのみ署名されていることが明示されている。このため、spamass-milterで挿入されたヘッダ情報に影響されることなく、正常に検証できる。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

未知のハックに一心不乱に取り組んだ結果、私は自然の法則を変えてしまった -- あるハッカー

読み込み中...