DKIMとSPF

どうせまた尋ねられそうなのでDKIMとSPFについて
分かる範囲で書いておきます。
というかSPFは説明が簡単なので、ほとんどがDKIMに
ついてになります。

【 DKIM 】DomainKeys Identified Mail

Gmailが推奨するDKIMはペアになる公開鍵と電子証明の
整合性が取れれば、なりすましでないという判断をします。

送信側がやること

・ペアキーを作成。
・公開鍵 
  DNSのzoneファイルにTXTレコードとして記載
・電子証明
  ヘッダに付与して送信

受信側サーバーがやること

・ヘッダに付与された電子証明からIPアドレスを割り出す。
・DNSサーバーに公開鍵(TXTレコード)を問い合わせる。
・公開鍵と電子証明がペアであれば正当なメールと判断。

簡単に書くとこんな流れでしょうか。

CentOS6.X / POSTFIX の環境での例
ドメインは hogehoge.jp とする。

【ペアキーを作成】

・OpenDKIMをインストール。

 epel.repoが追加されていること。
 /etc/yum.repos.d/epel.repo で enabled=0
 追加されていなければ
 rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm(一行)
 で追加される。
 異なるリポジトリに同じパッケージが存在すると
 トラブルの元なので、標準リポジトリ以外はenabled=0で
 無効にしておき以下のコマンドで呼び出す。

# yum --enablerepo=epel install opendkim

設定

 # vi /etc/opendkim.conf

 Mode sv ←vをsvに
 Syslog yes
 SyslogSuccess yes
 LogWhy yes
 UserID opendkim:opendkim
 Socket inet:8891@localhost
 Umask 002
 Canonicalization relaxed/simple
 Domain hogehoge.jp 複数ドメイン→,hoge.com,hoge.org カンマ区切りで
 # KeyFile /etc/opendkim/keys/default.private ←コメントアウト
 KeyTable refile:/etc/opendkim/KeyTable ←refile:を記述
 SigningTable refile:/etc/opendkim/SigningTable     ←refile:を記述
 ExternalIgnoreList refile:/etc/opendkim/TrustedHosts ←refile:を記述
 InternalHosts refile:/etc/opendkim/TrustedHosts     ←refile:を記述

 キー作成作業場所の確保
 
 mkdir /etc/opendkim/keys/hogehoge.jp

  ディレクトリ名は任意だが複数ドメインを扱う場合
  ドメイン名が分かりやすい。
 

 ペアキーを作成
 
 # cd /etc/opendkim/keys/hogehoge.jp  ←作業場に移動

 # opendkim-genkey -D /etc/opendkim/keys/hogehoge.jp -d hogehoge.jp -s 20160411(一行で)

これにより /etc/opendkim/keys/hogehoge.jpに 
  20160411.txt と 20160411.private  が作成されます。
* -s 任意名です。ここでは作成日ですがdefaultやselector
           などが一般的のようです。

 # chown -R opendkim:opendkim /etc/opendkim/keys
   rootからopendkimの所有に変更

  以上複数ドメインの場合はドメイン数の分だけ作業を行う。

 
 KeyTable(ヘッダに付与させる鍵情報)

 # vi /etc/opendkim/KeyTable

  20160411._domainkey.hogehoge.jp hogehoge.jp:20160411:/etc/opendkim/keys/hogehoge.jp/20160411.private(一行で)

  複数ドメインの場合は同様の書式で列記。
  20ドメインなら20行です。
 
SigningTableに信頼できるドメイン登録

 # vi /etc/opendkim/SigningTable
*@hogehoge.jp 20160411._domainkey.hogehoge.jp

複数ドメインの場合は同様の書式で列記。 

Postfixの設定

 # /etc/postfix/main.cf
  smtpd_milters = inet:127.0.0.1:8891
  non_smtpd_milters = $smtpd_milters
  milter_default_action = accept

   main.cfの末尾にでも記述

zoneファイルに公開鍵を設定

 * zoneファイルまでのパスは環境に寄ります。
 拙宅サーバーの例
 /var/named/chroot/var/named/vhost/hogehoge.jp.zone
 vhostは管理上で他にもmasterやmanageなどがあり、
 named.confにincludeしてあります。
 
 # vi /var/named/chroot/var/named/vhost/hogehoge.jp.zone

 
$ORIGIN .
$TTL 3600 ; 1 hour
hogehoge.jp IN SOA ns.hogehoge.jp. www.ns.hogehoge.jp. (
20160411 ; serial ←シリアル番号を増やす
3600 ; refresh (1 hour)
900 ; retry (15 minutes)
86400 ; expire (1 day)
3600 ; minimum (1 hour)
)
NS ns1.hoge.com.
NS ns2.hoge.net.
NS ns.hogehoge.jp.
A 211.9.226.*** ←これは某プロバイダのDNS(笑
MX 10 mail.hogehoge.jp.
hogehoge.jp. IN TXT “v=spf1 ip4:211.9.226.*** -all” ←SPFレコード
20160411._domainkey.hogehoge.jp. IN TXT "v=DKIM1; k=rsa; p=QODfMA0GCSqGSI(長いので省略)lJ98nlT4EwIDAQAB" ; —– DKIM key 20160411 for hogehoge.jp ←DKIM公開鍵 一行で
$ORIGIN hogehoge.jp. ——— 以下省略 —————-

"v=DKIM1; k=rsa; p=QODfMA0GCSqGSI(長いので省略)lJ98nlT4EwIDAQAB" ;
----- DKIM key 20160411 for hogehoge.jp

は以下からゲット

 # cat /etc/opendkim/keys/hogehoge.jp/20160411.txt

20160411._domainkey

20160411._domainkey.hogehoge.jp.
とします。
無いと自動補完されるらしいけど拙生は一応書きます。

行ごとに””で括れば改行できるはずですが何故かエラー。。。
で、一行にしています。

設定の反映  
 
 # service opendkim start(またはreload)← DKIM
 # service postfix reload ← メールサーバー
 # service named reload  ← DNSサーバー

* /etc/init.d/named restart や
 rndc reload などお好みで。。。(笑

反映されているかgoogleのサーバーからみてみます。

$ dig @8.8.8.8 -t TXT 20160411._domainkey.hogehoge.jp

ANSWER SECTIONに表示されればOKであります。

ふぅ〜・・・長くなりました。

【 SPF 】Sender Policy Framework

次はSPFレコードですが、

すでに上記でご紹介したzoneファイルにTXTとして
たった一行書くだけでオシマイです。

hogehoge.jp. IN TXT “v=spf1 ip4:211.9.226.*** -all”

これでhogehoge.jpのメールは211.9.226.***からしか送信しないゾ!
宣言をしているわけです。
こちらは簡単でしょ?w

【 感想 】

DKMIとSPF、いずれもスパマーでは設定できないDNSサーバーを
参照するわけですから、簡単な方でイイんじゃない?って感じです。
DNSサーバーもなりすまし?あり得なくはないけど現実味は
ありませんね。(笑

【 確認 】

確認サイトはいろいろありますが日本の
サイトをご紹介しておきます。

http://www.appmaildev.com/jp/dkim/

指定されたアドレスにメールを送ると
すぐに返信があり、中に

SPF result: Pass
DKIM result: pass

という文字が見つかればOKです。

【 宣言 】

コレだけやっているんだからどぉかメール撥ねないでください!!

HOME

おすすめ