Exim4 で DKIM

さくら VPS にて DKIM の設定したので記しときます。記述漏れはあるかもしれません。
今回は外に出ていくメール (Outgoing mail) に署名するだけです。

DKIM の基礎を学んだ上で読んでください。

参考

http://mikepultz.com/2010/02/using-dkim-in-exim/
http://www.atmarkit.co.jp/fsecurity/special/89dkim/dkim01.html

鍵の生成

cd /etc/exim4
sudo openssl genrsa -out dkim.private 1024
sudo chown root:Debian-exim dkim.private
sudo chmod 640 dkim.private

所有者、所有グループ、mode は passwd.client などの設定に倣っています。(man exim4-config_files)

DNS TXT 登録用の公開鍵を抽出

sudo openssl rsa -in dkim.private -out dkim.public -pubout -outform PEM

Exim の設定

/etc/exim4/update-exim4.conf.conf で dc_use_split_config='false' のときは /etc/exim4/exim4.conf.localmacros に以下のように記述します。*1

DKIM_SELECTOR=*******
DKIM_PRIVATE_KEY=/etc/exim4/dkim.private
DKIM_CANON=relaxed
DKIM_DOMAIN=********

dc_use_split_config='true' のときは /etc/exim4/conf.d の下にあるファイルのどれかに上記を書いておけばいいみたいです。*2

DNS の設定

次はさくら VPSDNS に TXT レコードを追加します。
WEB の会員メニューからドメインの編集へ進みましょう。

エントリ名は [DKIM_SELECTOR]._domainkey
抽出した公開鍵の BASE64 部分の改行を取り除いて [public key] のところに入れてください。

v=DKIM1; t=y; k=rsa; p=[public key]

Exim のプロセスに設定を反映

sudo /etc/init.d/exim4 reload

で自動的に update-exim4.conf が実行され DKIM が有効になるはずです。

dc_use_split_config の設定いかんによっては undocumented line という警告メッセージが出力されます。
これが出ていても動作しますが、Exim4 on Debian 的には正しくない設定方法みたいです。

トラブルシューティング

最初、selector の設定を typo してて gmail に bad form と言われてしまったのですが、どこが間違っていたのかしばらく分かりませんでした。

check-auth _at_ verifier.port25.com に当該ドメインから空メールを送ると細かいところをチェックして通知してくれるので便利です。

その他、様子がおかしいときは /var/log/exim4 などへのログ出力を確認しましょう。

その他

update-exim4.conf を読んでたけど /etc/exim4 のハードコーディングが気になる。

*1:selector と domain は隠してあります。

*2:おそらく transport/30_exim4-config_remote_smtp より若いファイル名のどれか。