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の設定まで完了します。