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
最近のコメント