秘密鍵・公開鍵を作成したので、DNSゾーンファイルを編集します。
ポリシーレコード、セレクターレコード、2つのレコードを追加
ポリシーレコード、
_policy._domainkey.hstech. 600 IN TXT "t=y; o=~; r=yoshio@hstech.net" hstech._domainkey.hstech.net. 600 IN TXT "t=y; k=rsa; p=公開鍵"
下記サイトでポリシレコードのチェックをします。
http://domainkeys.sourceforge.net/policycheck.html
結果は
Testing hstech.net Policy TXT=t=y;o=~;n=;r=yoshio@hstech.net;This policy record appears valid.
OKのようです。
次に下記サイトでセレクターレコードのチェックをします。
http://domainkeys.sourceforge.net/selectorcheck.html
結果は
hstech._domainkey.hstech.net TXT Record length = 229 p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCXxC8mmzt/x8VFnbzPWH1dSw/FU5qoIafLdCAqt ...aP8T1NhBvthFpKQku3gcTs72xZrj0h/I0dmzoFyI+f/emJ7VHuFPfYIyi8dwAc+Qq2vrJmKPYey3vL4q ...Im1SEyYWB4fzUdU9CynjOBeT+RziZcHIroQuQeWVXToqxuzAhaJQIDAQAB;k=rsa;t=y; This selector is in error: Tag 'p': Invalid public key has no modulus
む!なんじゃいノーモデュラスって????
検索してみましたが思うような答えが見つかりません。
オフィシャルサイトの指示通り
Generate a private/public key pair using OpenSSL:
openssl genrsa -out private.key 1024 openssl rsa -in private.key -pubout -out public.key
と鍵を再作成しても結果は同じでした。
ここで1日はまりました。とりあえずDKIMproxyを動作させて、吐かれるエラーメッセージ等から
解決策を探ろうと思い、DKIMproxyの設定をすることにしました。
変更箇所は太字部分のみ
/usr/local/dkimproxy/etc/dkimproxy_in.conf # specify what address/port DKIMproxy should listen on listen 127.0.0.1:10025 # specify what address/port DKIMproxy forwards mail to relay 127.0.0.1:10026
/usr/local/dkimproxy/etc/dkimproxy_out.conf # specify what address/port DKIMproxy should listen on listen 127.0.0.1:10027 # specify what address/port DKIMproxy forwards mail to relay 127.0.0.1:10028 # specify what domains DKIMproxy can sign for (comma-separated, no spaces) domain hstech.net,parts-recycle.net,hair-saloon.net # specify what signatures to add simple signature dkim(c=relaxed,a=rsa-SHA256) signature domainkeys(c=nofws,a=rsa-SHA1) # specify location of the private key keyfile /usr/local/dkimproxy/private.key # specify the selector (i.e. the name of the key record put in DNS) selector hstech # control how many processes DKIMproxy uses # - more information on these options (and others) can be found by # running `perldoc Net::Server::PreFork'. #min_servers 5 #min_spare_servers 2
DKIMproxyの解凍ディレクトリから起動ファイルを/etc/rc.d/init.d/にリネームしてコピー
sample-dkim-init-script.sh ⇒ /etc/rc.d/init.d/dkimproxy
これでDKIMproxyの設定は終了
次に以下のサイトを参照しpostfixのmaster.cfを変更します。
http://dkimproxy.sourceforge.net/postfix-inbound-howto.html
これで受け取ったメールの検証が出来ます。
ためしにDKIM署名をしているgmailとしていないplalaのメールのヘッダーを比較してみます
gmailヘッダー(抜粋)
Return-Path: <hstech99@gmail.com> Received: from dns2.hstech-net.com ([unix socket]) by dns2.hstech-net.com (Cyrus v2.2.13p1-Invoca-RPM-2.2.13p1-4vl4) with LMTPA; Fri, 30 Nov 2012 14:25:24 +0900 X-Sieve: CMU Sieve 2.2 Received: from dns2.hstech-net.com (localhost [127.0.0.1]) by dns2.hstech-net.com (Postfix) with ESMTP id 735426203F6 for <yoshio@hstech.net>; Fri, 30 Nov 2012 14:25:24 +0900 (JST) Authentication-Results: dns2.hstech-net.com; dkim=pass header.i=@gmail.com X-DKIM-Authentication-Results: pass Received: from mail-ie0-f176.google.com (mail-ie0-f176.google.com [209.85.223.176]) by dns2.hstech-net.com (Postfix) with ESMTP for <yoshio@hstech.net>; Fri, 30 Nov 2012 14:25:24 +0900 (JST) Received: by mail-ie0-f176.google.com with SMTP id 13so124242iea.7 for <yoshio@hstech.net>; Thu, 29 Nov 2012 21:25:23 -0800 (PST) DKIM-Signature: 略
検証結果=pass が確認できます。
plalaヘッダー(大部分略)
Return-Path: <hskimura@blue.plala.or.jp> Received: from dns2.hstech-net.com ([unix socket]) by dns2.hstech-net.com (Cyrus v2.2.13p1-Invoca-RPM-2.2.13p1-4vl4) with LMTPA; Sat, 01 Dec 2012 09:37:55 +0900 X-Sieve: CMU Sieve 2.2 Received: from dns2.hstech-net.com (localhost [127.0.0.1]) by dns2.hstech-net.com (Postfix) with ESMTP id 581816203D7 for <yoshio@hstech.net>; Sat, 1 Dec 2012 09:37:55 +0900 (JST) Authentication-Results: dns2.hstech-net.com; X-DKIM-Authentication-Results: none
これで受信メールの検証確認が出来ました。
次はいよいよ署名を付ける設定です。でもまだまだ先は長いかも・・・・・