Junkie Work

access: 172069

メール認証(OpenDKIM)


今回は、以下の内容を設定します。

インストール

インストールはyumを利用します。

 # yum install opendkim

設定

まずは鍵を生成します。
複数ドメイン利用することを前提にしますので、ドメイン名でディレクトリを作ってそこで生成。

 # mkdir /etc/opendkim/keys/junkie.work
 # cd /etc/opendkim/keys/junkie.work
 # opendkim-genkey -d junkie.work
 # chown -R root:opendkim .
 # chmod 640 default.private
 # chmod 644 default.txt

/etc/opendkim/opendkim.confに設定を記載します。

PidFile              /var/run/opendkim/opendkim.pid
Mode                 sv
Syslog               yes
SyslogSuccess        yes
LogWhy               yes
UserID               opendkim:opendkim
Socket               inet:8891@localhost
Umask                002
Canonicalization     relaxed/relaxed
Selector             default
MinimumKeyBits       1024
KeyTable             /etc/opendkim/KeyTable
SigningTable         refile:/etc/opendkim/SigningTable
ExternalIgnoreList   refile:/etc/opendkim/TrustedHosts
InternalHosts        refile:/etc/opendkim/TrustedHosts
AlwaysAddARHeader    yes

/etc/opendkim/KeyTable には、ドメインの鍵情報を一行ずつ記載します。

default._domainkey.junkie.work
  junkie.work:default:/etc/opendkim/keys/junkie.work/default.private
(↑実際には一行です)

/etc/opendkim/SigningTable には、署名するためのマッチング情報を記載します。

*@junkie.work default._domainkey.junkie.work

/etc/opendkim/TrustedHosts には、信用できる(処理を行わない)相手の情報を記載します。

127.0.0.1
10.0.0.0/16

起動

サービスを起動し、問題なければ自動起動をonにしておきます。

 # service opendkim start
 # chkconfig opendkim on

DKIMでは、相手に公開鍵を渡す手段としてDNSを利用するので、ドメイン情報に鍵を追加します。

/etc/opendkim/keys/junkie.work/default.txt にかかれている鍵を登録します。

(鍵が長くて見づらいので、()で括って複数行に分割しました)

$ORIGIN junkie.work.
default._domainkey      IN TXT  ( "v=DKIM1; k=rsa; p="
   "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCt6yihaVGS65L8mSkDugIrHJLZ"
   "LkSXKvHsyQM91fTsAYue7AEFeh5l3v1W/Q0zrm5ugwRKh/1Mgb1Z3ZkXfOd4i+S/"
   "HHZ0OzCyQLOO2g4lovxFFpQNiIe3xXYUINWPavaHIEoRaReOi6Totilzrz6tOtdl"
   "sE3jAouyv+73ISNm/QIDAQAB" )

SOAレコードのシリアルを更新した後、DNSを再起動して反映させておきます。


Postfixの場合

準備が整ったら、postfixにDKIMを利用する設定を追加します。
/etc/postfix/main.cf に以下の設定を追加します。

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

サービス再起動。

 # service postfix restart

Sendmailの場合

準備が整ったら、sendmailにDKIMを利用する設定を追加します。

/etc/mail/sendmail.mcに以下の一行を追加します

INPUT_MAIL_FILTER(`opendkim', `S=inet:8891@127.0.0.1')

sendmail.mcからsendmail.cfを生成してサービス再起動。

 # cd /etc/mail
 # make
 # service sendmail restart

確認

正しく動作していると、送信するメールには以下のようなヘッダ情報が追加されます。

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=junkie.work;
  s=default; t=1426902300;
  bh=GgIdlLH7WDDB4xJE/H01SAfYuBT25XMKnri/aPUpR94=;
  h=Date:From:To:Subject;
  b=N+g3/6DYV1CC2CyPNi9+MurhUCeiMfYnM/l78AE1bpGFlTKIZS+PdVLGoCzgTjlDf
   zZHr41//vmYgtSlyT+A/1Gog6Mt62ZE0AJSMZiCH90nAvMvjDq+kzGSQOVRU2I5dog
   ID42pr3MBkH+yQrBSHdUeK+Q2IMopHJijyRiCh6I=

また、受信側(この例ではgmail)では以下のようなヘッダ情報が追加されます。

Authentication-Results: mx.google.com;
   spf=pass (google.com: domain of user@junkie.work
    designates 2001:2e8:61f:0:2:1:0:bd as permitted sender)
    smtp.mail=user@junkie.work;
   dkim=pass header.i=@junkie.work