Postfix と OpenDKIM で DKIM を実装する

シェアする

Postfix と OpenDKIM で DKIM を実装します。

DKIM とは、メールのなりすましや改ざんを検知するためのメール認証の仕組みです。

似たような仕組みに SPF というものもあります。どちらもメールの到達率を上げるために有効な手段ということで、両方実装した方が良いとされています。

SPF の場合は、DNS にレコードを一行追加するだけなので、とても簡単ですが、DKIM の場合は、送信サーバに少し設定が必要になってきます。といっても、本当に少しの設定なので、こちらも是非実装しましょう。

バージョン

  • CentOS 7.5.1804
  • Postfix 2.10.1-6.el7.x86_64
  • OpenDKIM 2.11.0-0.1.el7.x86_64

インストール

Postfix

$ rpm -qa | grep postfix
postfix-2.10.1-6.el7.x86_64

Postfix のインストールです。と言っても私の環境では、デフォルトでインストール済みでしたので、何もしていません。

OpenDKIM

$ sudo yum install -y epel-release
$ sudo yum install -y opendkim

DKIM を実装するために、EPEL リポジトリに用意されている OpenDKIM パッケージを使います。

実装

それでは、実装に入っていきたいと思いますが、Postfix は基本的な設定が済んでいるものとします。

実装の段階としては、大きく3つです。まず OpenDKIM の設定ファイル、次に Postfix の設定ファイル、そして最後は、DNS です。

OpenDKIM

鍵の生成

$ sudo opendkim-genkey -d leben.mobi -s 20180903 -D /etc/opendkim/keys/
$ sudo chown opendkim:opendkim /etc/opendkim/keys/*

opendkim-genkey コマンドを使用して、秘密鍵と公開鍵を生成します。秘密鍵は、OpenDKIM で使用し、公開鍵は DNS の TXT レコードで使用します。

opendkim.conf

Mode    sv
Domain    leben.mobi
#KeyFile    /etc/opendkim/keys/default.private
KeyTable    /etc/opendkim/KeyTable
SigningTable    refile:/etc/opendkim/SigningTable
ExternalIgnoreList    refile:/etc/opendkim/TrustedHosts
InternalHosts    refile:/etc/opendkim/TrustedHosts

OpenDKIM のメインの設定ファイルです。差分がある箇所だけを記載しています。

KeyTable

20180903._domainkey.leben.mobi leben.mobi:20180903:/etc/opendkim/keys/20180903.private

上記の内容を KeyTable ファイルの一番下に追記します。このファイルで、OpenDKIM の秘密鍵を指定します。

SigningTable

*@leben.mobi 20180903._domainkey.leben.mobi

こちらも一番下に追記します。

TrustedHosts

10.10.0.0/21

こちらも一番下に追記します。10.10.0.0/21 は、私の環境での TrustedHost ですので、適切なものに修正してください。

Postfix

smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept

Postfix の設定です。

外部からメール受け取った時(smtpd_milters)と内部のメール(non_smtpd_milters)、そして、milter が使えなかった時のアクション(milter_default_action)を設定します。

DNS

最後に DNS です。

公開鍵

$ cat /etc/opendkim/keys/20180903.txt

先ほど作成した 公開鍵を DNS の TXT レコードとして登録します。”v=DKIM1; …” の部分を登録します。

ADSP

ADSP という DKIM 認証結果の振る舞いについても TXT レコードとして登録します。

_adsp._domainkey.leben.mobi. “dkim=unknown” のような形で登録します。

動作確認

事前に Postfix と OpenDKIM は再起動をして、設定を読み込ませておきましょう。

Gmail

動作確認は、Gmail にメールを送信し、ソースを表示する方法が一番簡単でしょう。

上記画像のように、DKIM ‘PASS’ となれば OK です。(Google Group のメールのキャプチャーです。)

maillog

maillog でも動作確認することができます。Gmail で見るよりも先にこちらを確認した方がいいですね。正常に動作している場合、以下のようなログが確認できると思います。

... opendkim ... DKIM-Signature field added (s=20180903, d=leben.mobi)

まとめ

Postfix と OpenDKIM で DKIM を実装しました。

DKIM について、もっと詳しく知りたい人は、こちら (DKIM:迷惑メール対策委員会) が参考になると思います。

メールサーバを運用していると、なりすまし、乗っ取り、到達率、スパム対策に、IP のレピュテーション、そしてブラックリストと、覚えることや対策することがたくさんあって大変です。

もっと楽に運用したい・・・

シェアする

フォローする