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。