Junkie Work

access: 173476

メール認証(OpenDKIM)


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

インストール

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

 # pkg install opendkim

設定

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

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

/usr/local/etc/mail/opendkim.conf の設定を変更します。変更したのは以下。

AlwaysAddARHeader    yes
Canonicalization     relaxed/relaxed
Domain               junkie.work
ExternalIgnoreList   refile:/usr/local/etc/mail/TrustedHosts
InternalHosts        refile:/usr/local/etc/mail/TrustedHosts
KeyFile              /usr/local/etc/mail/keys/junkie.work.private
KeyTable             /usr/local/etc/mail/KeyTable
LogWhy               yes
PidFile              /var/run/opendkim/opendkim.pid
SigningTable         refile:/usr/local/etc/mail/SigningTable
Socket               inet:8891@localhost

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

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

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

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

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

127.0.0.1
10.0.0.0/16

起動

サービスの起動設定を行い、起動します。

 # sysrc milteropendkim_enable="YES"
 # service milter-opendkim start 

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

/usr/local/etc/mail/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を再起動して反映させておきます。


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

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

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

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

 # cd /etc/mail
 # make
 # make install
 # 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