さくらのレンタルサーバにspfレコードが追加された
—- 2014.02.08追記 —-
このエントリの内容をベースに改訂したものを改訂版:さくらのレンタルサーバ用spfレコード、AAAAレコード設定として新規エントリに記載しました。このエントリでの記述内容で設定を変更してもメール配信問題は解決しますが、新しいエントリの設定方法の方がよりスマートかと思います。
なにやら、さくらのレンタルサーバからGMailへの送信に遅延が発生していたらしい。(うちでは未確認)
で、その対策として2014/01/27付でさくらのレンタルサーバにもspfが追加された。
他のサーバでなにやらspfを使ったような記憶があった(後述の通り、それはさくらの鯖でだった(笑))けど、だいぶ前のことだしすっかり忘れていたので、『spfレコードってどう書くんだっけかなあ…思い出さなきゃ』と思っていたら、単にチェックボックスをONにするだけだったのでちょっと拍子抜け。まあ、チェック入れとけばいいかあ…と思いつつドメイン設定が浸透するまで一日放置。
で、昨日試しにGMail宛てにテストメールを送信してみたのだけど、これが届かない。『あれーおっかしーなー』と思ってまってたら、約2時間後に迷惑メールに振り分けられていた。ダメじゃん。
GMailで迷惑メールに振り分けられた原因が『題名、または本文が迷惑メールの可能性があります』だったので、まあそういうこともあるかなあと思って迷惑メールを解除してチェックしてみた。
うちはいまだにBecky!2をメーラとして使っているレガシーさん。で、ヘッダを詳細に見ることもできるんだけど、いつも必要最低限なヘッダをチェックできるように、Header View Plugin for B2と言うのも入れてある。
こんな感じで、本文を見ても必要なヘッダが表示されるようになっているのだが、
こんな風に「softfail」判定されてる。(spfレコードが正しいと、Received-SPF: passと表示されるはず。) あっれー、おっかしいなあと思ってその他を一通りチェックしていると…
そもそもspf = txtレコードの追加、でこれは僕はとうの昔に設定済みだった。
<code> v=spf1 mx ~all </code>
(※mxだけかくのは+mxの省略形)
(表記の意味:spfのversion1.0での判定で、mxレコードに登録されているサーバは認証を通す=pass、その他のサーバは一応拒否はしない=softfail。spfの書き方の詳細はSPF(Sender Policy Framework)を参照のこと。)
で、この記述なら従来は問題ないはずで、実際にSPFレコードチェックツールでも問題なしと言う判定になっている。
けどよくよく読んでいくとGmailの判定では『SoftFail:SPFレコードが「~」として公開されている条件にマッチした』とある。本来ならば”+mx ~all”なので、”+mx”の部分でマッチするはずなのに、GMailさんでは”+mx”をスルーして”~all”が評価されている。
そこで、いろいろ調べていくと、どうやらGMailさんはIPv4とIPv6の両方が配布されているサーバの場合、IPv6のアドレスを評価して、IPv4の方は評価しないっぽいと言うことがわかってきた。mxレコードに登録されているのが”10 @”=”202.181.99.22″のみ評価しており、うちのサーバのIPv6であるところの”2001:e42:101:2:202:181:99:22″は評価されないようなのだ。
で、結局これに対する対策として、(1)IPv6アドレスを正しく指定してあげる、(2)FQDNのAレコードを指定してあげる、のいずれかをすればちゃんと認識するようだ。(※2014.02.08追記:もっとスマートな解決策として、IPv6用のAAAAレコードを指定してあげる方法を思いついたのでそっちを推奨します。)結果的に、冗長でも正しい判定をする方が好ましいと思ったので、以下のように記述するようにした。
<code> "v=spf1 +ip4:202.181.99.22 +ip6:2001:e42:101:2:202:181:99:22 +a:www302.sakura.ne.jp +mx -all" </code>
表記の意味:spfのversion1.0で、以下の順に評価をしていく。(先に書いた方から評価されていくので、”all”は最後に書くこと。上記の”+”印は省略可。)
(ip4:202.181.99.22) ←IPv4アドレスで割り振られているサーバのアドレス。
(ip6:2001:e42:101:2:202:181:99:22) ←IPv6アドレスで割り振られているサーバのアドレス。分からなければ、GMailに試しにメールを送ればメールヘッダ内に記述されてます。※基本的にこの行が記述されていればGMail対策は終了。
(a:www302.sakura.ne.jp) ←aレコードのFQDNを記述。※GMail対策だけならこっちの表記だけでもいい。
(mx) ←mxレコードのアドレスでもpassとする。
(-all) ←上記アドレス以外はfailを返す。うちは他のSMTPサーバ経由でメール配信することはないので”-“記述だが、普通は”~all”記述の方が無難だろう。
これでGMailには無事にspf=passのメールが届くようになりましたとさ。うーむ、最初に戻るけど、さくらのレンタルサーバのコントロールパネルでのチェックボックスにはいったい何の意味があったのだろう…って言うか、サーバにIPv6アドレスをいつ配布したのか定かじゃないけど、実は鯖にIPv4/IPv6両方のアドレスを割り振ってることがGMail遅延の主因だったりしないかなあ…それとせっかくspfに対応するなら、受け取るメールでもspf認証可能にしてほしいな…それから、spfだけでなくDomainKeysにも対応して欲しいな(たしかYahooはDKIM認証やってたはずなんだけど)…
長ったらしい文章なので、結論だけ書くと、spfとしてtxtレコードに
“v=spf1 +a:www(鯖番号).sakura.ne.jp ~all” か
“v=spf1 +ip4:(IPの4桁アドレス) +ip6:(IPの6桁アドレス) ~all”
のどちらかを記載するとGmail対策は完了です。
さくらのコントロールパネル(会員メニューの方)にログインして、『契約情報』をクリック。
『ドメインメニュー』をクリック。
『ゾーン編集』を行う。
現在のゾーン設定が見れるので、『編集』をクリック。
『エントリの追加と変更』に必要な値を入力していく。入力が終わったら『新規登録』ないし『変更』をクリックして、上のエントリ名テーブルに正しく追加されたことを確認して、一番最後に『データ送信』をクリックして完了。
Comment
[…] さくらのレンタルサーバにspfレコードが追加されたの追記と言うか、修正と言うか、改訂版。 […]