OpenDKIM

DKIMの署名と検証に、OpenDKIMを設定します。なお、検証の方は合わせてDNSレコードの設定が必要になります。

インストール

  1. OpenDKIMをインストールします。インストール後は勝手に起動してくれますが、設定がまだなので落とします。
    # apt install opendkim opendkim-tools
    # service opendkim stop
  2. 署名に使用する鍵を作成します。
    ※鍵の保存場所として/etc/dkimkeysというディレクトリが作成されています。
    # opendkim-genkey -D /etc/dkimkeys -b 1024 -d example.com -s postfix
    # chown opendkim:opendkim /etc/dkimkeys/*
    この結果、/etc/dkimkeys/にpostfix.private(秘密鍵)とpostfix.txt(公開鍵:DNS登録用データ)が作成されます。DNSに登録する公開鍵はそれぞれ以下のようになります。
    postfix._domainkey      IN      TXT    ( "v=DKIM1; h=sha256; k=rsa; "
          "p=xxxxx....xxx" )  ; ----- DKIM key postfix for example.com
    _adsp._domainkey  IN TXT "dkim=unknown"
  3. /etc/opendkim.confを修正します。ここでは、複数のドメインに対して署名はするものの、同じ鍵を共用しています。
    # Sign for example.com with key in /etc/dkimkeys/dkim.key using
    # selector '2007' (e.g. 2007._domainkey.example.com)
    #Domain                 example.com
    #KeyFile                /etc/dkimkeys/dkim.key
    #Selector               2007
    Domain   example.com, example.jp
    KeyFile  /etc/dkimkeys/postfix.private
    Selector postfix
  4. systemdの設定にsocketのパスがハードコードされているので、confではなくsystemd側を変更します。
    # cp /lib/systemd/system/opendkim.service /etc/systemd/system/
    コピーしたopendkim.serviceのsocketを修正します。
    [Service]
    Type=forking
    PIDFile=/var/run/opendkim/opendkim.pid
    User=opendkim
    UMask=0007
    ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p local:/var/spool/postfix/opendkim/opendkim.sock
    Restart=on-failure
    ExecReload=/bin/kill -USR1 $MAINPID
    
  5. socketの場所は手動で作成します。また、このままではソケットにPostfixがアクセスできないので、postfixをopendkimグループに追加します。
    # mkdir /var/spool/postfix/opendkim
    # chown opendkim:opendkim /var/spool/postfix/opendkim/
    # adduser postfix opendkim
  6. systemdの設定を反映しておきます。
    # systemctl daemon-reload

Postfixの設定

  1. /etc/postfix/main.cfに、milterの使用を追加します。
    # milter
    smtpd_milters = unix:/milter-greylist/milter-greylist.sock, unix:/clamav/clamav-milter.ctl, unix:/opendkim/opendkim.sock
    
  2. Postfixに新しい設定とグループ所属を反映します。
    # service postfix restart

起動と動作確認

  1. opendkimを起動します。
    # service opendkim start
  2. メールを送信し、送信メールにDKIMが署名されているか確認します。送信したメールのヘッダに、以下のようなDKIMヘッダがついていれば成功です。
    DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=example.net;
  3. 受信側のサーバーでDKIMそのものの認証が成功していれば、下のようなヘッダがメールに付加されているはずです。
    Authentication-Results: example.jp; dkim=pass header.i=@example.com
    X-DKIM-Authentication-Results: pass
  4. 外部のサーバー(GmailなどDKIMを付加するもの)から自分のサーバーにメールを送信し、受信したメールのヘッダにDKIM検証結果が書いてあれば、検証設定も完了です。

目次へ戻る