From 7eb7115bf9b48924b9188f118f2db603e3a8b3a0 Mon Sep 17 00:00:00 2001 From: Alpha Chen Date: Fri, 5 Apr 2024 20:41:14 -0700 Subject: [PATCH] fastmail terraform module --- .terraform.lock.hcl | 34 +++++++++---------- fastmail/main.tf | 83 +++++++++++++++++++++++++++++++++++++++++++++ main.tf | 10 ++++-- 3 files changed, 108 insertions(+), 19 deletions(-) create mode 100644 fastmail/main.tf diff --git a/.terraform.lock.hcl b/.terraform.lock.hcl index f527d0b..e15c048 100644 --- a/.terraform.lock.hcl +++ b/.terraform.lock.hcl @@ -2,23 +2,23 @@ # Manual edits may be lost in future updates. provider "registry.terraform.io/linode/linode" { - version = "1.29.4" - constraints = "1.29.4" + version = "2.18.0" + constraints = "2.18.0" hashes = [ - "h1:pdhSuNr3SQWvHHI+C1zF8J8tJetxGJoCQNxgsg1QHQs=", - "zh:06ccda35d968429a1184aaf981c8104394fa1d719de86b718c56d93c27c1fcd6", - "zh:1fb2497917094e77bde90fe6ee781e20cee739142b891391480c1b3376d81dbb", - "zh:27960e9c07e995aad07a9c5ebfd7fe0304fffd4cb159fd215e82932b798c6d55", - "zh:4ed29807c423c77aab1338972aa1ec3cc16c6b14f4c25c86f4427e8a86bfc467", - "zh:7a39103dc0dc8538f5258d3b64db1e6c91335640763bd05da0478e99748a4949", - "zh:95b3e418e6fcb4b826be9b289a834f1b9893977bd330ac418e0285e56a4644c1", - "zh:ac69c992a5cbaaa6ed9bb65206309ab2c71b5eb17740b7a5295532f9840c67fd", - "zh:ae943e8975075cd9664f00a028838566fdf879c772e518b7adcc82e757916a67", - "zh:b3a85a52489bc3777b5e8c4428b8ea42ae8e0f2398077699c1eb99acea931a34", - "zh:c1a2e945f5691ed97b9cf01351dd3a99c2f9871f172bd71ba0c8a810c75740cd", - "zh:ce86a03d73ee3d2ed58c6fe853cd2a9d0974710d94a0aeb4c195a9d1e78a3481", - "zh:d34afbbf848d8b541a068d64fa04ace13c3bd37ad19fd8b0796662f553ca9652", - "zh:e13b4847098d295cd8216eeec55d940cfc4544672fdc89e0048dd067e69b63f8", - "zh:fc62e9f8fc5d37d28aba2077db10355839cae6d7770eaf8711f97877bac046ab", + "h1:CeGbgARw4BrgUrEfPVRUjwoPI5WrCtA4bG39ckFHrlQ=", + "zh:03bc6644991818395759757cc5a3f07b6a8f7f797f04d701441e79e85cb9dc69", + "zh:5248ed1626e1531616fd227840c7734b8f2d13631427d80672b615e60f106a2d", + "zh:80a890b44a66639b1dabc2773e5dbb5f22a8e73495ce167a5064296463e17cdc", + "zh:874f5794a567250fc873af73c8c67a1980eb30de864ef76eb772ae492cf530ba", + "zh:94469b62cc27ce53fcd06a48b84de256136576699602ba68d157b2ad033ac0ed", + "zh:a1b9096702e1ee197f84634159d512b54d9223d00ff850ff4073eb9e5ac5eb9d", + "zh:a39c77dbf770a349529596124d4188fc7eeb8ecaf88ebc06f586d884f68df550", + "zh:bd5ee9da38d1846edc6af87771ede950bb703d99f78756c05da00fc0ca325be5", + "zh:c4b1d74d8d44ed258ca96a2b76d0101858672624a8d9731df8a97b8373dba728", + "zh:c69db2d6e4d7b04f9bc2f00223e61ae12127946043b07bca567fa3883bf5c071", + "zh:e818b9ea84e55ce1d2eb1f8852ec6606ce5d3691f356ea4eb3a701e5986ed339", + "zh:eeb7e6d518f62d6f02b497dbb5427a7a8ea38e2e5dddc8a114f7989a7a8c47f7", + "zh:fa77abf56e34701cdc49799cc13c6298be184d7cb48de20ee8b30e93fb3735a0", + "zh:fc3e94acd6fb2ad6b526169896fc6821298ba394a4d181c9b2448341e2e0eb54", ] } diff --git a/fastmail/main.tf b/fastmail/main.tf new file mode 100644 index 0000000..ef5e686 --- /dev/null +++ b/fastmail/main.tf @@ -0,0 +1,83 @@ +# https://www.fastmail.help/hc/en-us/articles/1500000280261-Setting-up-your-domain-MX-only#domain-registration +# +terraform { + required_providers { + linode = { + source = "linode/linode" + version = "2.18.0" + } + } +} + +variable "domain" { + type = object({ + id = string, + domain = string, + }) + nullable = false +} + +resource "linode_domain_record" "fastmail_mx" { + domain_id = var.domain.id + + for_each = { + "in1-smtp.messagingengine.com" = 10 + "in2-smtp.messagingengine.com" = 20 + } + + record_type = "MX" + priority = each.value + target = each.key +} + +resource "linode_domain_record" "fastmail_spf" { + domain_id = var.domain.id + + name = var.domain.domain + record_type = "TXT" + target = "v=spf1 include:spf.messagingengine.com ?all" +} + +resource "linode_domain_record" "fastmail_dkim" { + domain_id = var.domain.id + + for_each = { + "mesmtp._domainkey" = "mesmtp.${var.domain.domain}.dkim.fmhosted.com" + "fm1._domainkey" = "fm1.${var.domain.domain}.dkim.fmhosted.com" + "fm2._domainkey" = "fm2.${var.domain.domain}.dkim.fmhosted.com" + "fm3._domainkey" = "fm3.${var.domain.domain}.dkim.fmhosted.com" + } + + name = each.key + record_type = "CNAME" + target = each.value +} + +resource "linode_domain_record" "fastmail_dmarc" { + domain_id = var.domain.id + + name = "_dmarc.${var.domain.domain}" + record_type = "TXT" + target = "v=DMARC1; p=none;" +} + +resource "linode_domain_record" "fastmail_srv" { + domain_id = var.domain.id + + for_each = { + "submission" = { priority = 0, weight = 1, port = 587, target = "smtp.fastmail.com" } + "imap" = { priority = 0, weight = 0, port = 0, target = "." } + "imaps" = { priority = 0, weight = 1, port = 993, target = "imap.fastmail.com" } + "pop3" = { priority = 0, weight = 0, port = 0, target = "." } + "pop3s" = { priority = 10, weight = 1, port = 995, target = "pop.fastmail.com" } + "jmap" = { priority = 0, weight = 1, port = 443, target = "api.fastmail.com" } + } + + service = each.key + record_type = "SRV" + priority = each.value.priority + protocol = "tcp" + weight = each.value.weight + port = each.value.port + target = each.value.target +} diff --git a/main.tf b/main.tf index 40bc8eb..0a2bca4 100644 --- a/main.tf +++ b/main.tf @@ -9,7 +9,7 @@ terraform { required_providers { linode = { source = "linode/linode" - version = "1.29.4" + version = "2.18.0" } } } @@ -38,8 +38,14 @@ locals { lotus_land_story = data.linode_instances.lotus_land_story.instances.0 } -resource "linode_domain" "kejadlen-dev" { +resource "linode_domain" "kejadlen_dev" { type = "master" domain = "kejadlen.dev" soa_email = var.soa_email } + +resource "linode_domain" "chislan_family" { + type = "master" + domain = "chislan.family" + soa_email = var.soa_email +}