PostfixでDKIM対応にする


 自宅のメールドメインをDKIM(ディーキム)対応にしてみた。正直な話、Sender-IDもDKIMも対応したとは言ってもそれでspamを排除できるかと言えばできない。spamじゃないという自己主張ができるだけで、DKIMで電子署名がないメールを全て弾けるかと言えばそんなことは全くない。それを踏まえた上で作業。

 大前提として、amd64なGentoo Linux上でPostfixがMTAとして既に稼働していること、対応するドメインは自前管理できている = 自前でネームサーバを立てているか、レジストラのサービスなどでドメインをいじれる環境にあることを挙げておく。

 まずDKIM用のツールをインストールする。/etc/portage/package.keywordsに

mail-filter/dkim-milter

を追記してから

emerge dkim-milter

する。

 Gentooの場合、鍵をemergeで作れちゃったりするので

emerge --config mail-filter/dkim-milter

selectorには任意の文字列を設定、鍵の長さは1,024bitsを指定する。selectorについてはデフォルトでホスト名が入っているのでこのままでもいいかと思う。

 ここまでできたら、まずDNSの設定をする。先ほどのemergeで「After you configured your MTA, publish your key by adding this TXT record to your domain:」の後にDNSでTXTフィールドとして設定すべき行が表示されているので、これをそのままコピペしてreloadする。reloadしたらdigコマンドで確認をしておく。

dig txt selector._domainkey.hoge.com

 次に、dkim-milterの設定。/etc/mail/dkim-milter/dkim-milter.confを修正する。selector名をSelectorに、あとは適用するドメインをDomainに設定する。複数ドメインを運用している場合は、Domainにカンマ区切りでドメインを列挙すればよいが、カンマの後にスペースを入れると2個目以降が認識されなかった。

 最後にPostfixの設定。/etc/potfix/main.cfに

smtpd_milters     = unix:/var/run/dkim-filter/dkim-filter.sock
non_smtpd_milters = unix:/var/run/dkim-filter/dkim-filter.sock
milter_default_action = accept

を追加し、

gpasswd -a postfix milter

しておく。後はdkim-fitlerとpostfixを起動・再起動すればok。

 正しく設定できているかは、check-auth@verifier.port25.com 宛にメールを送信してみればよい。返信でチェック結果が送られてくるので、DKIMの欄が「pass」になっていればok。