インストール
インストールはpkgを利用します。
# pkg install opendkim # pkg install opendmarc
access: 202831
インストールはpkgを利用します。
# pkg install opendkim # pkg install opendmarc
まずは鍵を生成します。
複数ドメイン利用することを前提にしますので、ドメイン名でディレクトリを作ってそこで生成。
# 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 ExternalIgnoreList refile:/usr/local/etc/mail/TrustedHosts InternalHosts refile:/usr/local/etc/mail/TrustedHosts 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
設定が終わったら、/etc/rc.conf に設定を追加します。
# service milter-opendkim enable
OpenDMARCの設定を行います。
/usr/local/etc/opendmarc.conf を以下の内容にします。
AutoRestart true BaseDirectory /var/run/opendmarc IgnoreHosts /usr/local/etc/mail/TrustedHosts IgnoreMailFrom junkie.work Socket inet:8893@localhost SPFSelfValidate true
設定が終わったら、/etc/rc.conf に設定を追加します。
# service opendmarc enable
サービスを起動します。
# service milter-opendkim start # service opendmarc start
DKIMでは、相手に公開鍵を渡す手段としてDNSを利用するので、ドメイン情報に鍵を追加します。
/usr/local/etc/mail/keys/junkie.work/default.txt にかかれている鍵を登録します。
(鍵が長くて見づらいので、()で括って複数行に分割しました)
$ORIGIN junkie.work. default._domainkey TXT ( "v=DKIM1; k=rsa; " "p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDlDvVmXOKJ6oHNcmey" "IIZQToSYTnllOsqtqpLUasMhPi+yx8/BcuijrN6Mwx3lKjTxP1vodHug" "tHYlQtwEt9RasQGAJ7bG2nBGBRbVsPq48R2vpy0rmB/HJm2xlsXNHC66" "L8HuPhNoROoNrKTOs3gCQQHiHhUvA59Pkm5vtlLqLQIDAQAB" )
このタイミングで、DNSに以下のようなレコードも追加します。(SPF/DMARC)
SPFは、メールの送信元IPアドレスを指定して、なりすましを防ぐためのものです。
DMARCは、SPFとDKIMの結果を集約してポリシーを適用するためのものです。
SPFレコード
junkie.work. TXT "v=spf1 a mx -all"
DMARCレコード
$ORIGIN junkie.work. _dmarc TXT ( "v=DMARC1; p=reject; pct=100;" "rua=mailto:dmarc.rua@junkie.work;" "ruf=mailto:dmarc.ruf@junkie.work" )
SOAレコードのシリアルを更新した後、DNSの設定を反映させておきます。
# rndc reload
準備が整ったら、sendmailにDKIMを利用する設定を追加します。
/etc/mail/hostname.mc(例:conoha.junkie.work.mc)に以下の行を追加します
INPUT_MAIL_FILTER(`opendkim', `S=inet:8891@127.0.0.1') INPUT_MAIL_FILTER(`opendmarc', `S=inet:8893@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