おさらい 〜 メールのポリシーについて 〜
SPFは,メールの送信元IPアドレスを検証する仕組みです。
しかし,SPFはEnvelopeFromのみを確認するため,本文のFromヘッダーがなりすましであっても検知できませんでした。
この問題を解決するため,DKIMが提案されました。DKIMは本文の改ざんを検知できますが,Fromヘッダーのなりすましは防げません。
そこで,SPFとDKIMの検証結果に基づいてポリシーを決められるDMARCが導入されました。
DMARCには以下のポリシーが設定できます。
p=none: 何もしない
p=quarantine: なりすましメールを隔離
p=reject: なりすましメールを拒否
さらに,DMARCではFromヘッダーとEnvelopeFromのアラインメントもチェックできます。
adkim=s: DKIMでFromとEnvelopeFromが完全に一致していること
adkim=r: DKIMでFromの一部とEnvelopeFromが一致していること
aspf=r: SPFでEnvelopeFromが有効であること
DMARCはあくまで送信ドメインの方針を示すものであり,受信側はその方針に従う義務はありませんので,メール受信時の判定が非常に厳格になっています。
ということを,様々なWebサイトで,もっとくやしく書いてあるのですが...
何を設定すればメールは届くのかって話はあんまり書かれていない...
hoge.comを例に何をどう指定するのかを書く
SPFレコードを設定する
まずは,どこから送信することを許可するかを書く。
_spf.hoge.com descriptive text "v=spf1 +ip4:xxx.xxx.xxx.xxx/32 +ip4:yyy.yyy.yyy.yyy/32 ~all"
Gmailから送信する場合
_spf.google.com descriptive text "v=spf1 include:_netblocks.google.com include:_netblocks2.google.com include:_netblocks3.google.com ~all"
SPFレコードを設定する
hoge.com TXT "v=spf1 include:_spf.hoge.com include:_spf.google.com ~all"
-allでも良いのですが,SoftFailを採用するのは,レコードにリストが正しくない場合もあるでしょうから,まずは~allにしておくべきだという考えです。
SPFはメールの送信元の認証に役立ちますが,それ自体ではFromヘッダーのなりすましを防ぐことはできません。
DKIMは電子メールが配信経路で改ざんされていないことを確認するため,メールの完全性を提供します。
DKIMを設定する
GmailやAmazonSESなどを利用している場合はメール送信サービスから作るので割愛。
自前のサーバーであればopendkim入れてopendkim.conf設定する。
pkg install opendkim # pkgが何かって?FreeBSD使え
opendkim-genkey -D /usr/local/etc/mail/dkim -d hoge.com -s selector1
chown opendkim:mail /usr/local/etc/mail/dkim/*
chmod u=rw,go=r /usr/local/etc/mail/dkim/*
/usr/local/etc/mail/opendkim.confと/usr/local/etc/postfix/main.cfにOpenDKIMとのマッピングを追加します。(postfix以外は知らない)
service opendkim start
service postfix restart
DKIMを設定する
selector1._domainkey.hoge.com TXT "v=DKIM1; k=rsa; p=[公開鍵]"
DMARCを設定する
DMARCはこれら2つの結果を組み合わせたものとして,送信者ポリシーの遵守を要求します。
DMARCは送信側が自身のポリシーを公開するただの方法であり,受信側がそのポリシーに従わなければならないわけではありません。
多くの大手メールプロバイダーはDMARCを尊重しており,これはドメイン所有者にとって有益な追加の防御措置となります。
_dmarc.hoge.com TXT "v=DMARC1; p=none; rua=mailto:dmarc_rua@hoge.com; ruf=mailto:dmarc_ruf@hoge.com"
初期段階ではレポートモードにして,DMARC違反メールに対して具体的なアクションを行わず,代わりにDMARC違反レポートを収集を行い,DMARCのプロトコルにどの程度準拠しているのか,どんな種類のメールが違反しているのかを理解して,SPFやDKIMの設定を調整をする。
調整後に隔離か拒否の設定を行う。
おわり