(2010/1/23追記)
このエントリの内容は一部正しくないため、
http://blog.yellowback.net/archives/406-20100127.htmlをご参照ください。
送信者認証技術 DKIMのsendmail用milter opendkim 1.2.1をインストールしました。
opendkimは少し前にdkim-milterからforkしたプロジェクトです。
NetBSD3.1付属のopenssl-0.9.7では、アルゴリズムrsa-sha256が扱えないのでopenssl-0.9.8をリンクしてrsa-sha256対応にしています。
環境
- OS: NetBSD 3.1
- sendmail: 8.14.4
- openssl: 0.9.8h
- opendkim: 1.2.1
インストール
http://sourceforge.net/projects/opendkim/files/ から取得します。
% tar zxvf opendkim-1.2.1.tar.gz
% cd opendkim-1.2.1
devtools/Site/site.config.m4を以下のように作成
define(`confMTCCOPTS', `-pthread')
define(`confMTLDOPTS', `-pthread')
APPENDDEF(`confINCDIRS', `-I/usr/local/openssl-0.9.8/include')
APPENDDEF(`confLIBDIRS', `-L/usr/local/openssl-0.9.8/lib')
% ./Build
# make install
インストールされるもの↓
/usr/libexec/dkim-filter
/usr/bin/dkim-genkey
/usr/bin/dkim-testkey
/usr/bin/dkim-testssp
sendmail.mcの設定
sendmail.mcに以下を追加してsendmail.cfをつくり直す
INPUT_MAIL_FILTER(`opendkim', `S=inet:8891@localhost')
dkim-filterを実行するためのユーザ作成
セキュリティ上、dkimを実行するためのユーザは分離したほうがいいので、dkimを実行するためのユーザを作成します。
# useradd dkim
キーの生成およびDNSの設定
SELECTORは識別子となるようです。今回はSELECTORを「lagoon」とします。
% cd dkim-filter
% ./gentxt.csh
標準出力に
lagoon._domainkey IN TXT "v=DKIM1; g=; k=rsa; t=y; p=XXXXXXXYYYYYYYZZZZZZZZ"
のようなものが出力されます。これをDNSのzoneファイルに設定します。bindであればこのまま張り付ければOKです。
DNSには以下のようにポリシーも設定します。
_policy._domainkey IN TXT "t=y; o=~"
bind等を再起動し lagoon._domainkey.example.com のTXTエントリがアクセスできることを確認します。
% host -t txt lagoon._domainkey.example.com
lagoon._domainkey.example.com descriptive text "v=DKIM1\; g=\; k=rsa\; t=y\; p=XXXXXXXYYYYYYYZZZZZZZZ"
このように出力されればOKです。
gentxt.cshを実行すると、lagoon.public, lagoon.privateというファイルが生成
されます。lagoon.privateを適当なディレクトリにコピーします。mail送信時に
このファイルを用いてサインされます。 ついでなのでlagoon.publicもコピーし
ておきます。
# mkdir -p /var/db/dkim
# cp lagoon.private lagoon.public /var/db/domainkeys
# chown -R dkim /var/db/dkim
# chmod 500 /var/db/dkim
その他のdkim-filter用設定ファイル
dkim-filterではサインするかどうかは受信したときの相手のIPアドレスで判定します。
デフォルトでは127.0.0.1のみとなっていますが、自ネットワーク内のアドレスをここに設定します。
# mkdir /etc/mail/dkim
# vi /etc/mail/dkim/ilist
192.168.1.0/24
127.0.0.1
# chown -R dkim /etc/mail/dkim
# chmod 500 /etc/mail/dkim
起動
# /usr/local/sbin/opendkim -l \
-i /etc/mail/dkim/ilist \
-p inet:8891@localhost \
-c relaxed/simple \
-s lagoon \
-k /var/db/dkim/lagoon.private \
-d example.com,example.org
# /etc/init.d/sendmail restart
動作確認(送信時設定)
sa-test@sendmail.netにメールをなげて確認できます。
sa-test@sendmail.netが不調の場合は autorespond+dkim@dk.elandsys.com でも同様のサービスをしているようです。
以下のように結果がpassになっていればOKです。
なお、送付したメイルにはDKIM-Signature:ヘッダが付加されていない場合は設定を再確認します。
DKIM Test: pass
動作確認(受信時設定)
返送されたメイルのヘッダに、
Authentication-Results: example.com; dkim=pass (1024-bit key) header.i=@sendmail.net
があれば受信時の設定はOKです。
OSブート時起動設定
/etc/rc.confに以下を追加します。
opendkim=YES
opendkim_flags="-l -s lagoon -c relaxed/simple -i /etc/mail/dkim/ilist -p inet:8891@localhost -k /var/db/dkim/lagoon.private -d example.org,example.net -u dkim -P /var/run/dkim/dkimfilter.pid"
/etc/rc.d/opendkimを作成します。内容は以下です。
#!/bin/sh
# REQUIRE: syslogd
# BEFORE: mail
# KEYWORD: FreeBSD NetBSD
. /etc/rc.subr
name="opendkim"
rcvar=$name
command="/usr/local/sbin/opendkim"
pidfile="/var/run/dkim/${name}.pid"
required_files="/etc/mail/dkim/ilist"
load_rc_config $name
run_rc_command "$1"