ubuntu 10.04 をメールサーバーに (DKIM 署名の検証)

送信するメールへの DKIM の署名と、受信したメールに付けられた DKIM の署名の検証には dkim-filter を使う。

dkim-filter は「ubuntu 10.04 をメールサーバーに (ウィルスチェック)」の記事で紹介した milter というシステムを使って、メールサーバーに DKIM の署名と検証の機能を付加する。
dkim-filter と似た名前の dkim-milter というものもあるようだが、どう違うのかは一切知らない。
ubuntu 10.04 の公式なリポジトリには dkim-filter しかないので、これを使うことにしたまでだ。

dkim-filter のインストールは sudo aptitude update; sudo aptitude install dkim-filter コマンドを実行するだけだ。

Postfix と dkim-filter の情報交換に使うソケットは、ubuntu の場合は TCP の 8891 番ポートになっている。
この設定は /etc/default/dkim-filter に書かれている。
dkim-filter を Postfix で使うためには、Postfix の設定ファイル main.cf に、このソケットを使って dkim-filter と通信するように設定する必要がある。

dkim-filter は milter を使ったシステムになるので main.cf の smtpd_milters と non_smtpd_milters の二つのエントリを使って設定する。
具体的には smtpd_milters と non_smtpd_milters の二つのエントリに 'inet:localhost:8891' と追記すればいい。
以前の記事でウィルススキャンのために clamav-milter を導入しているので、実際の main.cf の該当箇所は以下のようになる。

なお、何らかの理由で milter で呼び出したプログラムがエラーになったときに、メールがロストしたりしないようにするために、milter_default_action エントリを適切に設定する (ここでは milter_default_action = accept としている) ことを忘れてはいけない。

受信した DKIM 署名を検証するだけなら、以上で設定作業は終わりだ。
しかし実際には、このままだとローカル ネットワークにあるメーラーが送信したメールに対しても、DKIM 署名の検証が行われてしまう。
こういったメールの DKIM 署名の検証をしないようにするため、/etc/mail/dkim-ilist.conf ファイルを作成して、そこにローカル ネットワークのアドレスを記載する。
通常はメール サーバー自身が送信するメールに対しても DKIM 署名の検証が不要であるので、ローカル ネットワークにサーバー自身を含めるのが普通だろう。
例えばローカル ネットワークのアドレスが 192.168.123.0/24 だとすると、以下のような内容で /etc/mail/dkim-ilist.conf ファイルを作成する。

/etc/mail/dkim-ilist.conf ファイルを作成したら、/etc/dkim-filter.conf ファイルに以下の一行を追加する

受信した DKIM 署名を検証するだけなら、以上で設定作業は終わりだ。
後は sudo service dkim-filter restart; sudo service postfix restart コマンドを実行して、dkim-filter と Postfix を再起動すればいい。
sudo service dkim-filter restart コマンドに対応して、以下のようなメッセージが表示されるものの DKIM 署名の検証はきちんと行われる。

Restarting DKIM Filter: No /usr/sbin/dkim-filter found running; none killed.
dkim-filter: /etc/dkim-filter.conf: at least one selector and key required for signing mode
See /usr/share/doc/dkim-filter/README.Debian for help
Starting for DKIM verification only
2011.4 月 8 日追記
dkim-filter 起動時に表示されるメッセージを加筆した。

コメントを残す