🛕
[Terraform]AWS・GCPのDNSにSPF(TXT)レコードを設定するtfファイル実装例
published_at: 2019-11-03 13:39
じぶん G Suite をひとり運用しているのですが、ちょっと思いつきでドメインエイリアス追加はじめたら
なんやかや気づいたし、意外に情報がなかったので試行錯誤して個人的にたのしかったついでに投稿。
refs
- G Suite
- GCP (Cloud DNS)
- AWS (Route53)
-
https://www.terraform.io/docs/providers/aws/r/route53_record.html
-
Argument Reference
に SPF があっておおって思ったけど結局使ってない
-
-
https://www.terraform.io/docs/providers/aws/r/route53_record.html
- その他SPF関連
設定する tf ファイル例
for GCP Cloud DNS
.terraform-version
0.11.14
clouddns.tf
resource "google_dns_managed_zone" "mydomain" {
name = "(任意のゾーン名)"
dns_name = "(ドメイン名)." # 末尾の `.` は必要っぽい
}
resource "google_dns_record_set" "spf_TXT" {
managed_zone = "${google_dns_managed_zone.mydomain.name}"
name = "${google_dns_managed_zone.mydomain.dns_name}"
type = "TXT"
ttl = 3600
rrdatas = ["\"v=spf1 include:_spf.google.com ~all\""]
}
for AWS Route53
.terraform-version
0.12.13
route53.tf
resource "aws_route53_record" "spf_TXT" {
zone_id = var.zone_id
name = var.zone_name
ttl = "3600"
type = "TXT"
records = ["v=spf1 include:_spf.google.com ~all"]
}
variables.tf
# ・・・(他にも変数あるんですが省略)
variable "zone_id" {}
variable "zone_name" {}
コメントなど
-
G Suite で ドメイン認証が完了してしまえばgoogle-site-verification=XXXXX...
の TXT レコードは削除してしまっても大丈夫そう- かわりにSPFのTXTレコードを投入したかたち。複数行のTXTレコードの書き方は把握しておきたい
- G Suite のヘルプに書いてあった、
名前 / ホスト / エイリアス - 「@」と入力するか、空白のままにします。
- 空白のまま のほうが妥当そう。terraform apply で 以下のようになる
- (google)
google_dns_record_set.spf_txt: Error creating DNS RecordSet: googleapi: Error 400: Invalid value for 'entity.change.additions[0].name': '@', invalid
- (aws) エラーが出ずに Route53 に適用されるが、空白にして apply し直したあともマネージドコンソールにレコードが残る。どうしようもなかったので手動削除した。
- (google)
- 空白のまま のほうが妥当そう。terraform apply で 以下のようになる
- google は rrdatas でダブルクオートをエスケープしないとならない(スペースで区切られてしまう)のに対して、aws の records はエスケープ不要
- TTLは一発目は 300 くらいにして apply して、5分後くらいに以下を確認したあとで 3600 で apply し直した
- SPFチェッカーでグリーンな感じ
- テストメールを送ってメールヘッダーorメッセージのソースを確認して SPFが
PASS
となる
- apply 後の状況を tf ファイルで収集しておきたくて terraformer で以下のコマンドで回収を試みたのがだ、google のが回収できていない。v0.12 に upgrade が必要そう。。
- (aws: 回収成功)
terraformer import aws --regions=ap-northeast-1 --resources=route53
-
@
のレコードがあると、終わりはするのだが以下のようなエラーがコンソール出力される
ERROR: Read resource response is null for resource aws_route53_record.tfer--...._TXT_
ERROR: Unable to refresh resource tfer--...._TXT_
-
- (google: 回収できてない)
terraformer import google --resources=dns --projects=(PROJECT_NAME)
- 以下のコンソール出力
google importing project (PROJECT_NAME) region global
google importing... dns
plugin error 1: Incompatible API version with plugin. Plugin version: 4, Client versions: [5]
Incompatible API version with plugin. Plugin version: 4, Client versions: [5]
- 以下のコンソール出力
- (aws: 回収成功)
SPFチェッカー
- https://toolbox.googleapps.com/apps/checkmx/
- https://www.mailcleaner.net/tools/test_spf.html
-
https://mxtoolbox.com/SuperTool.aspx
-
MX Lookup
をSPF Record Lookup
にして使う
-
Discussion