spfレコードに対象hostのIPアドレスを追加しまくったら長いと怒られた

前提

  • DNSはroute53
  • サーバはクラウド
    • IPアドレスセットがバラバラになる
  • メールは各サーバから
  • システムが構築されるたびにwebサーバ群のIPを登録
    • +ip4:123.456.789.0/24 こんな感じ

増やしすぎて怒られる

512バイトが上限なのでまだいけると思ってたけど怒られる、、、
kako-wEIvFfYWAh0XzByQ.png

サポートされる DNS リソースレコードタイプ - Amazon Route 53 - http://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/ResourceRecordTypes.html

TXT レコードには、スペースで区切られた、二重引用符で囲まれた文字列のリストが含まれます。1 つの文字列には、最大 255 文字が含まれます

RFCで連結した後の1つのレコードが450バイト以下であることが目安とされているため
妥当と思われる255バイトで制限かかってるところが多いらしい

 

分割をしよう

間違いから学ぶSPFレコードの正しい書き方 : 迷惑メール対策委員会 - http://salt.iajapan.org/wpmu/anti_spam/admin/operation/information/spf_i01/

TXTレコードを単純に分けてはダメらしい

baseレコードとincludeレコードに分ける

オリジナル

"v=spf1 mx ip4:123.456.000.0/24 +ip4:123.456.111.0/24 +ip4:123.456.222.0/24 +ip4:123.456.333.0/24 +ip4:123.456.444.0/24 +ip4:123.456.555.0/24 +ip4:123.456.666.0/24 +ip4:123.456.999.0/24 +ip4:123.456.888.0/24 +ip4:123.456.999.0/24 include:spf-bma.mpme.jp ~all"

分割

baseレコード:mydomain.com. IN TXT

"v=spf1 mx ip4:123.456.000111.0/25  include:spf.mydomain.com include:spf-bma.mpme.jp ~all"

includeレコード:spf.mydomain.com IN TXT

"v=spf1 +ip4:123.456.111.0/24 +ip4:123.456.222.0/24 +ip4:123.456.333.0/24 +ip4:123.456.444.0/24 +ip4:123.456.555.0/24 +ip4:123.456.666.0/24 +ip4:123.456.999.0/24 +ip4:123.456.888.0/24 +ip4:123.456.999.0/24 ~all"

レコードチェックする

無事通りましたヽ(・∀・)人(・∀・)ノ
http://www.kitterman.com/spf/validate.html
実際のメールでも確認
 

問題点

includeレコードの中身が増え続けていくのですぐに同じ問題にぶち当たる可能性

解決策案

  • スーパー楽な手段
    • 第2オクテットで登録 : 123.456.0.0/25
      • 漏れが発生する可能性は残る
  • さらに入れ子にする
    • ベース - include:ドメインtxt include:txt ~all"
    • ベース - include:ネットワークセット include:ネットワークセット ~all"
      • ネットワークセット - include:ドメイン名txt ~all"
    • ドメイン名別にtxtを用意すると削除がしやすい
  • MXをアウトソースにする
    • 余計な作業が減る
      • お金はかかる