アフィリエイト広告を利用しています
ファン
最新記事
写真ギャラリー
カテゴリーアーカイブ
日別アーカイブ
<< 2016年06月 >>
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    

広告

posted by fanblog

2016年03月09日

DNSのSPFレコードについてあらためて学習してみた

DNSのSPFレコードとは

SPFは、メール送信における送信元ドメインの偽装を防ぐための
技術(送信ドメイン認証)。迷惑メールは、送信元ドメインを偽装していることが
多く、偽装されたドメインとそれを所有する組織は、SPAMメールの送信に当たっては、
あてずっぽうなメールアドレス宛に大量に送信するといったことがよく行われ、
その場合には、大量のエラーメールがSPAMメールを送信したサーバではなく、
偽装されたドメイン側に返送されることになる。

このような事態を防止するために、SPFを利用して、送信元ドメインをの偽装を
防ぐ。これらは迷惑メール対策の一環ではあるが、ドメイン偽装メール対策というのが
より適切な見方で、受信側への気配りとしてもSPFを登録することが推奨される。

SPFは、メールの送信を許可(または禁止)しているサーバのリストをDNSで公開し、
受信サーバ側メールサーバでそのリストを確認して、正当なメールサーバからの
メールかどうか判断する仕組み。

偽装されたメールの場合


SPFを使うとできること



SPFレコードを理解する

SPFレコードはドメイン名をレコード名とするTXTレコードとして公開する。
ゾーンファイルの記述例。
example.com. IN TXT "v=spf1 +ip4:100.AAA.0.1 +ip4:200.BBB.0.1 ~all"

SPFレコードの各項目は、空白で区切られ、上記例では、次の4つに分けられる。

  • v=spf1
  • +ip4:100.AAA.0.1
  • +ipv4:200.BBB.0.1
  • ~all


最初の部分(v=spf1)は、どのバージョンのSPFを使っているかを相手に伝える。
それ以降の各部(+ipv4:100.AAA.0.1 +ipv4:200.BBB.0.1 ~all)で、サーバのIPアドレスと
そのサーバに対する許可、禁止を記述していく。この各部分を「ディレクティブ」と呼ぶ。

SPFレコードで記述できる内容の一部

クオリファイア(許可/禁止を示す)
表記内容
+許可
-指定なし
~禁止(ソフトフェイル)
-禁止(ハードフェイル「~よりも強い禁止」)

メカニズム(対象IPアドレスを示す)

表記内容
100.AAA.0.1100.AAA.0.1というIPアドレス
200.BBB.0.1200.BBB.0.1というIPアドレス
allすべてのIPアドレス


ディレクティブの記述順序と意味


「~all」自体の意味は、「すべてのIPアドレスからのメール送信は、許可されていない」という意味。
受信側メールサーバはSPFレコードに基づいて、処理を行う際、左側に書かれているディレクティブほど優先
される。基本的には、許可されているものすべて書いた後、~allまたは、-allというディレクティブを右に記載する。

受信側メールサーバの処理


送信者のメールアドレスがuser@example.comだったとして、
  1. 送信者のメールアドレスからドメインを取り出す(@example.com)
  2. example.comという名前のTXTレコード(SPFレコード)を問い合わせ、結果を得る。レコードが存在しなければ、検証を打ち切りそのまま配送する。
  3. SPFレコードの内容とメール送信元IPアドレスを照合し、正当なメールサーバからかどうかを検証する。
  4. 判断に基づいて、判断結果を表すヘッダを付け加えて届ける、届けずに破棄する、などの処理を行う。
として。

クオリファイア


この部分は、省略可能で、省略した場合は、「+」を指定したものとみなされる。「?」を指定した場合は、判断をせずにメールを届ける。これは、SPFレコードが存在しない場合と同じ。禁止については、主にallと組み合わせて「それ以外のものは禁止」を表すために使用する。2種類ある禁止の使い分けとしては、実施にメールアドレスに使われているドメインについては、「~」を指定し、絶対に使用されていないドメインについては、「-」を使用するとよい。

メカニズム


メカニズムは、すでにIPアドレスの直接指定(ip4)と、指定された以外のすべてのIPアドレス(all)以外に、Aレコード、MXレコード、PTRレコードなどが指定可能。

・Aレコードによる指定
送信者メールアドレスからドメイン名(@より後)を取り出し、そのドメインのAレコードの値(IPアドレス)得て、そのIPアドレスを送信者側IPアドレスと比較する。

・MXレコードによる指定
送信者メールアドレスからドメイン名(@より後)を取り出し、そのドメインのMXレコードの値を得て、そのホスト名のAレコードを引き、これによって得たIPアドレスを送信者側IPアドレスと比較する。

・PTRレコードによる指定
送信者メールアドレスを逆引きし、ホスト名を得て、そのホスト名と送信者側IPアドレスとを比較する。

レコードの例


表記内容
Aレコード"v=spf1 +a ~all"
mxレコード"v=spf1 +mx~all"
PTRレコード"v=spf1 +ptr ~all"
組み合わせ"v=spf1 +a +mx +ipv:x.x.x.x ~all"


ドメインの指定


a,mx,ptrの後ろに「:ドメイン」を付け加えると、送信者メールアドレスドメインの代わりにそのドメインが使用される。

ドメイン意味
aドメイン名のAレコードの値(IPアドレス)を得て、そのIPアドレスを送信側IPアドレスと比較する。
mxドメイン名のMXレコードの値(IPアドレス)を得て、そのIPアドレスを送信側IPアドレスと比較する。
ptrドメイン名のPTRレコードの値(IPアドレス)を得て、そのIPアドレスを送信側IPアドレスと比較する。


・Aレコードとの組み合わせ
+a:example.com

・MXレコードとの組み合わせ
+mx:example.com

・PTRレコードとの組み合わせ
+ptr:example.com

ネットマスクの指定

・IPアドレス + ネットマスク(先頭30ビットと一致すれば許可
+ip4:100.AA.0.0/30

・送信元ドメイン名のAレコードのIPアドレスの先頭30ビットが送信元IPアドレスの先頭30ビットに一致すれば許可
+a/30

そのほかの設定例

・メールを一切送信しないドメインの場合
example.com.  IN TXT "v=spf1 -all"


・送信専用のSMTPサーバ(MSA)と受信用SMTPサーバ(MX)からのエラーメールを許可する場合
example.com.  IN TXT "v=spf1 +a:msa.example.com +mx ~all"


SPFレコードのテスト

$dig @DNSサーバのIPアドレス example.com TXT


参考文献





この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバックURL
https://fanblogs.jp/tb/4822853
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック
検索
最新コメント
タグクラウド
プロフィール
さんの画像

アラフォー世代です。コンピュータ関連を中心に、戯言をグダグダと書き綴ってます。
プロフィール
×

この広告は30日以上新しい記事の更新がないブログに表示されております。