TerraformでSESの設定をする機会があったので記事にします。
SPFとDKIMとDMARCの認証を含めてまるっとTerraformでデプロイします。
なお、DNSはすでに作成済みのRoute 53ホストゾーンを使う想定です。
設定手順
Terraformコード
まずはSESのIDを定義します。
ドメイン名はこのあとよく出てくるので変数で定義しておきます。
variable "domain_name" { type = string default = "iret.media" } # SES resource "aws_ses_domain_identity" "main" { domain = var.domain_name }
次にDKIMとSPFの設定を定義します。
(depends_onは明示しなくても通るかもしれないですが念のため)
## For DKIM resource "aws_ses_domain_dkim" "main" { domain = var.domain_name depends_on = [ aws_ses_domain_identity.main ] } ## For SPF resource "aws_ses_domain_mail_from" "main" { domain = var.domain_name mail_from_domain = "mail.${var.domain_name}" depends_on = [ aws_ses_domain_identity.main ] }
最後にDNSレコードを定義します。
SESのID・SPF・DKIM・DMARCの認証をしています。
# For SES resource "aws_route53_record" "ses_txt" { zone_id = aws_route53_zone.primary.zone_id name = "_amazonses.${var.domain_name}" type = "TXT" ttl = "600" records = [aws_ses_domain_identity.main.verification_token] } # For DKIM resource "aws_route53_record" "ses_dkim" { count = 3 zone_id = aws_route53_zone.primary.zone_id name = "${element(aws_ses_domain_dkim.main.dkim_tokens, count.index)}._domainkey.${var.domain_name}" type = "CNAME" ttl = "600" records = ["${element(aws_ses_domain_dkim.main.dkim_tokens, count.index)}.dkim.amazonses.com"] } # For SPF resource "aws_route53_record" "ses_spf_mx" { zone_id = aws_route53_zone.primary.zone_id name = aws_ses_domain_mail_from.main.mail_from_domain type = "MX" ttl = "600" records = ["10 feedback-smtp.ap-northeast-1.amazonses.com"] } resource "aws_route53_record" "ses_spf_txt" { zone_id = aws_route53_zone.primary.zone_id name = aws_ses_domain_mail_from.main.mail_from_domain type = "TXT" ttl = "600" records = ["v=spf1 include:amazonses.com ~all"] } # For DMARC resource "aws_route53_record" "ses_dmarc" { zone_id = aws_route53_zone.primary.zone_id name = "_dmarc.${var.domain_name}" type = "TXT" ttl = "600" records = ["v=DMARC1;p=quarantine;pct=25;rua=mailto:dmarcreports@${var.domain_name}"] }
Terraformデプロイ
変更内容を確認します。
terraform plan
内容確認して問題なければデプロイします。
terraform apply
デプロイが完了すれば、SESのIDの作成からSPF・DKIM・DMARCの設定まで完了します。