variable "tls_secret_name" {} variable "mailserver_accounts" {} variable "postfix_account_aliases" {} variable "opendkim_key" {} resource "kubernetes_namespace" "mailserver" { metadata { name = "mailserver" } } module "tls_secret" { source = "../setup_tls_secret" namespace = "mailserver" tls_secret_name = var.tls_secret_name } resource "kubernetes_config_map" "mailserver_env_config" { metadata { name = "mailserver.env.config" namespace = "mailserver" labels = { app = "mailserver" } } data = { DMS_DEBUG = "0" ENABLE_CLAMAV = "0" ENABLE_FAIL2BAN = "1" ENABLE_FETCHMAIL = "0" ENABLE_POSTGREY = "0" ENABLE_SPAMASSASSIN = "0" ENABLE_SRS = "1" FETCHMAIL_POLL = "120" ONE_DIR = "1" OVERRIDE_HOSTNAME = "mail.viktorbarzin.me" TLS_LEVEL = "intermediate" SSL_TYPE = "manual" SSL_CERT_PATH = "/tmp/ssl/tls.crt" SSL_KEY_PATH = "/tmp/ssl/tls.key" } } locals { postfix_accounts_cf = join("\n", [for user, pass in var.mailserver_accounts : "${user}|${bcrypt(pass, 6)}"]) # postfix_accounts_cf = join("\n", [for user, pass in var.mailserver_accounts : format("%s%s%s", user, "|{SHA512-CRYPT}$6$$", sha512(pass))]) # Does not work :/ } resource "kubernetes_config_map" "mailserver_config" { metadata { name = "mailserver.config" namespace = "mailserver" labels = { app = "mailserver" } annotations = { "reloader.stakater.com/match" = "true" } } data = { # Actual mail settings "postfix-accounts.cf" = local.postfix_accounts_cf "postfix-main.cf" = var.postfix_cf "postfix-virtual.cf" = format("%s%s", var.postfix_account_aliases, file("${path.module}/extra/aliases.txt")) KeyTable = "mail._domainkey.viktorbarzin.me viktorbarzin.me:mail:/etc/opendkim/keys/viktorbarzin.me-mail.key\n" SigningTable = "*@viktorbarzin.me mail._domainkey.viktorbarzin.me\n" TrustedHosts = "127.0.0.1\nlocalhost\n" } # Password hashes are different each time and avoid changing secret constantly. # Either 1.Create consistent hashes or 2.Find a way to ignore_changes on per password lifecycle { ignore_changes = [data["postfix-accounts.cf"]] } } # resource "kubernetes_config_map" "user_patches" { # metadata { # name = "user-patches" # namespace = "mailserver" # labels = { # "app" = "mailserver" # } # } # data = { # user_patches = <