スキップしてメイン コンテンツに移動

DNSのTXTレコード(SPF)まとめ

メールサーバーをリレーで配送する場合、リレーの仕組み上はpostfixなどのメールサーバーの設定だけでOKですが、最新のなりすましメールというかヘッダ情報を巧妙にいじって送るスパムメールが横行しているため、ヘッダ情報だけでは白か黒かの判別がつかなくなりました。
スパムフィルターは確かにある意味で有効ですが、白か黒かの判断が完全にできるわけではありませんね。その欠点を補う為に、既存のシステムの機能を利用して、送信元のドメインと経由してきたメールサーバーの関係でこの問題を解決しようというのがDNSのTXTレコードを使ったドメインの認証システムです。



DNSは、ドメインの根幹にある技術なので、なかなか難しい印象がありますが、しっかり調べて正しい情報を吸収すれば、難しくなんてないです。結構中途半端な理解で書いてるブログもありますからね・・・。たくさんのブログを読んで、話の真贋がわかるようになれば、きっと理解できているでしょう。

このページの内容が白か黒かはアナタが感じてくださいww

さて、今回はメールに関わるDNSでは比較的新しめの技術、TXTレコードによるドメインの認証(ちょっとニュアンスは違うかもしれない)について書きます。

MXレコードは、受信する際にメールサーバーのIPアドレスを示すためのものです。
TXTレコードに記載する、SPFというのは、送信する際に、そのメールがスパムではない事を証明する情報です。
スパムメールが存在しなければ、今からの話は必要ないわけですが、もう存在してしまっている以上、仕方ないですね。

gmailなんかは、メールを受信したら、送信元メールアドレスに記載されたドメインのネームサーバーへ問い合わせをするようです。その際に、TXTレコードにSPFに記載があれば、その記載に基づいて受信したメールがスパムなのかそうではないのかを判断します。

スパムと判断されたメールには「Received-SPF」というヘッダに良くないステータスが付けられます。

すると、なんという事でしょう!

FailとかErrorとか付けられた日にゃ、迷惑メールフォルダに格納されてしまうわけですよ。
こりゃ参った。
と、諦めるわけにはいかないのが土方エンジニアの辛いところですが、話はとてもシンプルで、SPFの設定さえちゃんとすれば、メールは受信トレイに入れてやるよと暗に言ってくれているだけに、理由もなく(無くはないだろうがわからない)defferedで差し戻すyahooメールよりは親切ですね。

ちゃんと設定してあるSPFとはどういうものでしょう?
まずは設定済のTXTレコードを拝借してきたのでサンプルとしてみてみましょう。

v=spf1 a mx ptr a:rmilk.com ip4:67.228.247.35 ip4:74.86.143.220 ip4:174.37.68.34 ip4:74.86.221.34 ip4:74.86.221.35 ip4:74.86.221.36 ip4:173.192.30.96/29 ip4:50.23.241.224/29 ip4:50.97.76.104 ~all

これは私が常用しているGTDツール、「remember the milk」のDNSから引っ張ってきたものです。
いきなりちょっと長めなもので困ってしまう方もおられそうですが、ざっくり説明するにはなかなかいい内容だったのでこのまま続けようと思います。

スペースで設定を分割しているので、スペース毎に内容を見てみます。
v=spf1
このフレーズでspfのバージョンを指定しています。この記述ではSPFのバージョン1だという事になります。
a(+a)
aレコードのアドレスからはOKとします
mx(+mx)
MXレコードのアドレスからはOKとします
ptr(+ptr)
ptrレコードのドメインからはOKとします
a:rmilk.com(+a:rmilk.com)
rmilk.comのアドレスからはOKとします
ip4:67.228.247.35(+ip4:67.228.247.35)
67.228.247.35からはOKとします
ip4:173.192.30.96/29(+ip4:173.192.30.96/29)
173.192.30.96のサブネットマスク255.255.255.248の範囲でOKとします
~all
上記に当てはまらないものはsoftfailとします

かっこの中に書いたのは本来の形で、先頭の「+」が省略されているからです。
これを組み合わせれば、だいたいの設定はできるんじゃないでしょうか。
以上が「rememberthemilk.com」ドメインのメールアドレスに対するSPFの設定でした。

1台のサーバーでメール受信と配信を行う場合は、「v=spf1 a mx ~all」とこれだけで事足ります。ただし、正しくAレコードとMXレコードが設定されている事が大前提ですが。

リレー用のSMTPサーバーを追加した場合は、+a:、もしくはip4:でサーバーを追加するようにすればOK、という事ですね。

ちなみに、先頭の「+」、「~」はそれ以外にも記号があります。
それをまとめると、以下のような感じになります。
+
Pass、つまりOK
-
Fail、つまりNG
~
SoftFail、これは微妙なニュアンスですが、やんわりと許可しない
?
Neutralは不明の事で、設定されていないのと同じ振る舞いをします

以上が簡単なクオリファイアの説明でした。クオリファイアは記号の呼び名みたいなもんです。

結局のところ、全てのサーバーがSPFをチェックしてメール配送をやってるかというとそうではないですし、最後を「~all」にすると、なんだかんだでちゃんと配送されることが多いのですが、メールヘッダをチェックして、「Received-SPF: softfail」となっていたらちゃんとパスできるように設定したほうがいいってことでした。


コメント

このブログの人気の投稿

[VB.NET]オレオレ証明書でSSL通信するための短絡的な解決法

VB.NETソフトウェアでサーバーと通信することはよくある事だと思いますが、最近はHTTPを使って明けっ広げに刺しに行くよりHTTPSを使って暗号化してこそこそやった方が時代の流れに即した感じですよね(違うか)。 いちいちテスト環境でSSL証明書を用意するのも面倒だということで、セキュリティ的には全くよろしくない方法で迂回できるので紹介します。

[JS]Canvasでよく使う描画テクまとめ

HTMLで画像をいじくりたい時は、canvasを利用して編集するのは一般的ですが、WindowsストアアプリではHTML+CSS+JSでのアプリ開発ができる事もあって、簡単な画像編集であれば、C#やVBを使うより分かりやすいし資料が多く、C++でDirectXをガリガリ書くよりお手軽。入出力もファイルピッカーを使えば簡単に実装できます。今回は、Windowsのコードではなく、Canvasを利用する時のJavaScriptを使いどきに合わせてまとめていきます。

curl の基本的な使い方 -設定編-

今回のcurl TIPSは、curlをより日常的に使っていくためのHow toです。curlには、数多くのオプションが用意されていて、それらを組み合わせる事で様々な事が楽になるでしょう。サービス監視の自動化などにはまさにcurlの得意分野です。 今回は、curlを更に自分のものにしていくために大事なカスタマイズの部分を解説します。