kazuakix の日記

Windows Phone とか好きです

Office 365 で SPF レコードが設定されていないメールを受信したときの挙動を試してみる

Office 365 フォーラムで SPF レコードが設定されていないメールを受信したときにどんな動作をするのか?というスレッドがあったので確認してみました。

送信側 SPF レコードの内容確認

実験台にするのは例のドメインです。

このドメインは Office 365 で使用しているので こんな感じで SPF レコードが設定されています。spf.protection.outlook.com を参照するように指定されていますね。

# dig kazuakix.jp TXT

;; ANSWER SECTION:
kazuakix.jp. 3599 IN TXT  "v=spf1 include:spf.protection.outlook.com -all"

 
spf.protection.outlook.com を確認してみると、Office 365 がメールを送る可能性のある IP アドレスが列挙されています。更に別のレコードを参照していますが、あまり深入りはしないでおきます。

# dig spf.protection.outlook.com TXT

;; ANSWER SECTION:
spf.protection.outlook.com. 480 IN TXT "v=spf1 ip4:207.46.101.128/26 ip4:207.46.108.0/25 ip4:207.46.100.0/24 ip4:207.46.163.0/24 ip4:65.55.169.0/24 ip4:157.55.133.0/25 ip4:157.56.110.0/23 ip4:157.55.234.0/24 ip4:213.199.154.0/24 ip4:213.199.180.0/24 include:spfa.protection.outlook.com -all"

ここで SPF レコードの末尾は "-all" となっていますので、「ここに列挙しているアドレス以外からのメールはうちのドメインからのメールではありませんよ」と宣言していることになります。

これが "~all" だと「もしかしたら このアドレス以外からも送るかもね」という宣言になります。*1
 

受信側 Office 365 の設定

そして受信側、上記ネタドメインとは別のドメインで運用している Office 365 のテナントで設定をおこないます。
 
Exchange 管理センターの 保護 - スパムフィルター を開いて Default ポリシーの詳細オプションを開きます。

f:id:kazuakix:20150814232458j:plain,w500

ここに "SPF レコード: Hard Fail" ・ "条件付き Sender ID フィルター処理: Hard Fail" といった項目があり、初期値ではオフになっています。

f:id:kazuakix:20150814232505j:plain,w500

この状態だと 別サーバーから上記ドメインを騙ったメールを送信しても普通に受信してしまいました。 Exchange Online Protection の機能で拒否したりはしないんですね...

その後これらの設定をオンにして同様にメールを送ったところ、メールは Junk フォルダ送りになりました。受信しているので送信元にエラーが返ったりすることもありませんでした。

最近だと SPF レコードは正しく設定しているのが当たり前みたいな感じなので、これらの設定はオンにしておいてもいいのかもしれませんね。

*1:これを softfail と呼びますが、-all を hardfail と言うのかどうかは知りません