vpopmailでのDomainKey対応

Yahooやgoogleなどでのスパムフィルタとして用いられているDomainKeysの仕組みを既に稼働しているvpopmail( + qmail)環境へインストールする方法について説明します。

以下、送信のみの対応となります。

1. 秘密鍵、公開鍵の作成
opensslを使ってキーファイルを作成します。

% openssl md5 ~/* > random.txt
% openssl genrsa -rand random.txt -out private.key 512
% openssl rsa -in private.key -out public.key -pubout -outform PEM

秘密鍵(private.key)は
/etc/domainkeys/default
にコピーします。公開鍵(public.key)はDNSに設定します。

2. DNSへの公開鍵の設定
対象となるドメイン(ここではexample.comとします)のDNSのTXTフィールドに以下の設定を行います。
エントリー名:default._domainkey
種別:TXT
値:k=rsa; p=[1で作った公開鍵の内容(改行なし)]

登録後、下記のコマンドで設定を確認。

% dig default._domainkey.example.com txt

3. qmail-dkのインストール
(1) FreeBSDの場合
/usr/ports/mail/qmail-dk
が用意されているので、これをmakeしてqmail-dkを作成する。
これを/var/qmail/bin以下にコピーして
# chown qmailq /var/qmail/bin/qmail-dk
# chmod 4711 /var/qmail/bin/qmail-dk
を実行。

(2)Linuxの場合(未実施)
http://jeremy.kister.net/howto/dk.html
を参照。

4. qmailの停止

qmailを停止します。

5. vpopmailの修正
vpopmail.cの下記の個所を修正。

fprintf( fs_tmp_file, "%s:allow,RELAYCLIENT=\"\",RBLSMTPD=\"\"t%d\n",
↓
fprintf( fs_tmp_file, "%s:allow,RELAYCLIENT=\"\",RBLSMTPD=\"\",DKSIGN=\"/etc/domainkeys/default\",QMAILQUEUE=\"bin/qmail-dk\"\t%d\n",

【参考】
http://www.weloveya.com/oshigoto/qMail2.html

修正後、makeしてinstallする。

6. qmail設定ファイルの修正
SMTP用のtcpserver設定ファイル内容を変更します。
(例:/usr/local/vpopmail/etc/tcp.smtp)

[IPAddress]:allow,RELAYCLIENT="", DKSIGN="/etc/domainkeys/default", QMAILQUEUE="bin/qmail-dk"

※4での修正内容と同じフォーマットで無いと正しく動作しません。
変更後、cdbファイルを作成する。

7. qmailの起動
qmailを再起動します。
8. Yahooへのメール送信
DomainKey-Signature:
がヘッダ先頭に付記され、
Authentication-Results:
のフィールドに
domainkeys=pass (ok)
が入っていれば完了です。