Postfix DKIM 認証 設定メモ(CentOS6.5+OpenDKIM)

2014年11月6日  カテゴリー:Linux  タグ: , , ,
Pocket
LINEで送る

DKIM(ディーキム)は、そのメールが正当なメールサーバから送信されたメールか否(差出人のメールアドレスが詐称されたメール)かを識別する技術です。仕組みとしては、送信側でメールに電子署名を行い、受信側でその電子署名を検証することによってメールサーバの正当性をチェックします。PostfixでDKIMを使えるようにするには OpenDKIM を使うのが定番のようです。

設定の手順は、送信側のメールサーバで署名に必要な秘密鍵と公開鍵を作成し、この秘密鍵を使ってメールサーバで署名を行うように設定します。一方、ペアの公開鍵はメールドメインを管理しているDNSサーバのTXTレコードに登録しておき、受信側のメールサーバはこの公開鍵を使って電子署名の検証を行います。
dkim01

OpenDKIMのインストール

インストールにあたってEPELリポジトリを追加します。

OpenDKIM(2.9.0-2)をインストールします。※バージョンは2014年11月5日時点のものです。

インストールが終了したら、EPELリポジトリを無効にしておきます。
vi /etc/yum.repos.d/epel.repo

DKIM署名用の秘密鍵と公開鍵の作成

今回は「apar.jp」ドメインでの設定になります。ご自分の管理しているドメイン名に読み替えてください。

鍵ファイルの作成先ディレクトリを作っておきます。ディレクトリをドメイン名にしておくと、複数のドメインを管理する時に便利かと思います。

opendkim-genkeyコマンドで鍵ファイル(秘密鍵と公開鍵)を作成します。

・オプションの意味
-D 鍵ファイルの作成先ディレクトリを指定
-d ドメイン名を指定
-s セレクタ名(セレクタ名はこの後もろもろの設定で使いますので、覚えやすいものがよいかと思います。私は鍵を作成した日にしておきました)

鍵ファイルのオーナーを「opendkim」に変更します。

以上で下記2つの鍵ファイル(秘密鍵と公開鍵)が作成されました。ここで作成した公開鍵をDNSサーバに登録します。
/etc/opendkim/keys/apar.jp/20141105.private ・・・秘密鍵
/etc/opendkim/keys/apar.jp/20141105.txt   ・・・公開鍵

公開鍵レコードとADSPレコードの作成

DNSサーバに登録するための公開鍵レコードと、ADSPレコードの2つを作成します。普通のDNSレコードとはだいぶ異なりますので複雑に感じます(^^;)

公開鍵レコードの書式

「v=DKIM1; k=rsa;」はお決まりの設定です。このタグは省略することも可能ですが、設定することが推奨されています。当たり前ですが「p=<公開鍵のデータ>」は省略できません。

「p=」の後に指定する<公開鍵のデータ>は、公開鍵ファイルの下記赤字の部分です。
cat /etc/opendkim/keys/apar.jp/20141105.txt
------------------------------
20141105._domainkey IN TXT ( "v=DKIM1; k=rsa; "
"p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEY3elqxNK0guNILe8vha+WUpjiX2OVxkCDm6TzTAUCKR9Zde3sphY/gzor4j0ElHr2H3ax4MOqwuZ7WyP466d89QpYIbUxhz/zR/1TzqKa8ES0OHiUVvY9Nf4uONQY84Yr1g6l1vFNDy3nqK6/cf5OuOzxcGYbxOL3djH1TnF7QIDAQAB" ) ; ----- DKIM key 20141105 for apar.jp
------------------------------

上記をふまえて今回登録する公開鍵レコードはこのようになります。かなーり長くなりますね。

ADSPレコードの書式

ADSPレコードは、受信側でDKIMの認証結果をどのように扱ってほしいかを示すためのレコードです。dkim=の値は「all」「unknown」「discardable」のいずれかを設定します。

現時点では下記の理由から「dkim=unknown」とするのが無難なようです。

▽ (引用元)DKIM (Domainkeys Identified Mail)|迷惑メール対策委員会

*なお、discardableやallを公開すると、署名して送信したメールが配送経路において再署名されるケース(メーリングリストへの投稿等)や、第三者にメールの送信を委託する場合などにおいて、受信側に厳しい対応をとられる可能性が考えられる。そのような状況を考慮する必要のあるメールを送信する場合、discardableやallの公開については十分に注意が必要である。

上記をふまえて今回登録するADSPレコードはこのようになります。

DNSサーバ(Amazon Route 53)へ公開鍵の登録

作成した下記の公開鍵レコードとADSPレコードをDNSサーバに登録します。

AWSのマネジメントコンソールから「Route53」を選択します。
aws-route53-01-min

「Hosted Zones」をクリックします。
aws-route53-02-min

レコードを登録するドメイン名(apar.jp)にチェックを入れ、「Go to Record Set」をクリックします。
aws-route53-03-min

「Create Record Set」をクリックします。
aws-route53-04-min

公開鍵レコードを登録します。TYPEは「TXT」を選択してください。
dkim02

同様にADSPレコードを登録します。
dkim03

確認

登録したレコードが正しく引けるかを確認します。

公開鍵レコードの確認

ADSPレコードの確認

どちらのレコードも正しく引けていることが分かります。

OpenDKIMの設定

今回のメイン OpenDKIMの設定です。

vi /etc/opendkim.conf

署名に使う秘密鍵を指定
vi /etc/opendkim/KeyTable

署名を行うドメイン名を指定
vi /etc/opendkim/SigningTable

送信を行うPostfixサーバのIPアドレスを指定。今回は同じサーバでPostfixを動かしているのでループバックアドレスを指定します。
vi /etc/opendkim/TrustedHosts

・OpenDKIMの起動
service opendkim start

OpenDKIM起動時に秘密鍵を自動生成できなかった旨の警告が発生することがあります。

動作には問題ないようですが、起動時に秘密鍵を自動生成しないように変更しておくと良いでしょう。
vi /etc/sysconfig/opendkim

・OpenDKIMの再起動
service opendkim start

・OpenDKIM自動起動設定
chkconfig opendkim on

Postfix と OpenDKIM を接続

Postfixの基本設定はこちらを参照してください。

PostfixからOpenDKIMを使えるように設定します。
vi /etc/postfix/main.cf

・Postfixをリロードします。
service postfix reload

DKIM認証の動作確認

最後に動作確認です。

メール送信時の署名確認

Gmailなどへメールを送信して、メールヘッダに下記のような表示があればOKです。
dkim04

Gmailなどからメールを受信して下記のようなログがあればOKです。

スポンサーリンク
Pocket
LINEで送る

Postfix DKIM 認証 設定メモ(CentOS6.5+OpenDKIM)」への5件のフィードバック

  1. ピンバック: MailmanをGmailで使う場合の注意点 | このコードわからん

  2. ピンバック: DKIM導入 | かんのWebメモ

  3. ピンバック: spam認定を解除するためにDKIMの設定した話 | Lachelier

  4. ピンバック: spam認定を解除するためにDKIMの設定した話

  5. ピンバック: PostfixをDKIM認証に対応(CentOS) | Angel21 HP Blog

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です