前回、[Office365をオンプレミスメールサーバーなどと併用する場合、SPFレコードはしっかり管理しましょうというお話と、よく使うリンク集]という記事を書きました。あらためてSPFレコードを書く際の記述やルールについて、まとめてみました。
基本的な記述について
一般的に、以下のような記述になります。基本的に、1行で書きましょう。
text = "v=spf1 +ip4:192.168.100.100/32 include:spf.protection.outlook.com ~all"
上記を例に、分解するとこんな感じです。
区切り | 区切る場合は、必ず半角スペースで区切ります |
---|---|
v=spf1 | SPFレコードの記述バージョン。2もあるけど、基本は1を使えばOKです |
+ip4:192.168.100.100/32 | ipv4で指定する場合に使います。ipv6を使う場合は、+ip6: |
include:spf.protection.outlook.com | 他のSPFレコードを参照する場合に使います |
~all | 前述以外のすべてのIPからのメールは、不正な送信元から送信されたとみなしてもいいけど、とりあえずは届けてね、の目印 |
+ip4:
オンプレミスのメールサーバーを使っているなどで決まったIPアドレスから送信する場合に使います。[このIPからの場合は、信じてもらってOK]という意味です。
・サブネットマスクでの指定も可能です。
・もし複数のIPを記入したい場合は、+ip4:192.168.100.100 +ip4:192.168.100.101などと「+ip4から必要なIP」を記述します。もちろん、間には半角スペースを入れましょう。
include:
Office365など外部のメールサービスを使っている場合などで、[参照先のレコードを参照してください]というときに使います。
・参照先のSPFレコードを参照させます。
・SPFレコード以外のaレコードやMXレコードを指定することも可能です。その場合は少し記述が異なります。
・もし複数includeしたい場合は、include:spf.protection.outlook.com include:amazonses.com などと記述します。
~all
[これまでのレコード以外からのメールの場合は、信用しないでください。でも、とりあえずメールサーバーには届けてもらってOK]という記述です。届けられたメールサーバー側で、メールボックスに届くケースもあれば、迷惑メール判定されて迷惑メールボックスに入るケースもあります。
それだと困るな、信用しないでください、というときは
-all
を使います。[これまでのレコード以外からのメールの場合は、信用しないでください]という強い意味になります。基本的には、-allが優先ですが、それだと困るときは~allを使います。
+、~、-などの記号(qualifier)
ipv4だったり、allだったりの前についている記号は、qualifierというそうです。
+ | 信じてね! |
---|---|
- | 信じないでね! |
~ | 信じないでね!でも、通してはあげてほしい |
+ip4:だったら 信じてね!このIPからのメールを。
-all だったら、信じないでね!これまでのレコード以外からのメールの場合は。
という感じです。
1レコードに入れられる文字数
無制限に記入できるわけではなく、最大255文字まで、です。なるべく255文字に収まるSPFレコードに収まる範囲に、送信元となるIPアドレスは統制しましょう。
とはいえ、1レコードに収まらない場合もあります。その場合に利用するのが先ほどのincludeです。
includeで入れ子にできる回数
includeで入れ子にできます。例えば、peridot-green.comのSPFレコードに含むinclude:spf.protection.outlook.comですが、これは以下のようになっています。
text = "v=spf1 ip4:40.92.0.0/15 ip4:40.107.0.0/16 ip4:52.100.0.0/14 ip4:104.47.0.0/17 ip6:2a01:111:f400::/48 ip6:2a01:111:f403::/48 include:spfd.protection.outlook.com -all"
さらに、上記のspfd.protection.outlook.comですが、以下のようになっています。
text = "v=spf1 ip4:51.4.72.0/24 ip4:51.5.72.0/24 ip4:51.5.80.0/27 ip4:51.4.80.0/27 ip6:2a01:4180:4051:0800::/64 ip6:2a01:4180:4050:0800::/64 ip6:2a01:4180:4051:0400::/64 ip6:2a01:4180:4050:0400::/64 -all"
2回入れ子になっていますね。
入れ子できる回数にも制限があり、最大10回までです。
同じドメイン内ではSPFレコードは必ず1行にする
spfレコードは1行のみ、です。どうしても複数行にしなければならない場合は、別の複数レコード設定できません。どうしても複数行になる場合はサブドメインを作成し、includeさせましょう。
正しい例:サブドメインなどを作成し、includeしている
ドメイン名 | |
---|---|
include:spf.protection.outlook.com include:_spf1.peridot-green.com -all | |
_spf1 | include:amazonses.com -all |
誤った例:サブドメインを指定せず、同じドメインのレコードが複数ある
ドメイン名 | |
---|---|
include:spf.protection.outlook.com -all | |
include:amazonses.com -all |
1行目で判定され、2行目は無視されます。
まとめ
メール送信元がOffice365だけならあまり悩まないのですが、別のメールサービス使ってたりするとレコード数が1行で収まらなくなることも・・・。そういったときにはルールのあった記述になっているか確認の上登録しましょう。
0 件のコメント:
コメントを投稿