feat(mail): enhance mail configuration with getmail and dovecot settings
- Added getmail configuration generation using template files. - Introduced postfix and dovecot configuration checksums for deployment. - Created new dovecot configuration file and sieve script for email handling. - Updated main.tf to utilize local variables for configuration management. - Removed redundant external password hasher from main.tf. feat(nginx): improve nginx configuration management - Centralized nginx configuration into a local variable with checksum. - Created separate config maps for default website configurations. - Updated deployment to utilize new configuration structure. feat(sftpgo): add SFTPGo application deployment - Introduced SFTPGo with Kubernetes resources including namespace, config maps, and secrets. - Configured SFTPGo with SMTP settings and AWS credentials. - Implemented health checks and volume mounts for persistent storage. refactor(seafile): remove Seafile module - Deleted Seafile module and associated resources as part of cleanup.
This commit is contained in:
@@ -51,5 +51,45 @@ locals {
|
||||
name = kubernetes_secret.relay_mail_credentials.metadata[0].name
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
getmail_config = { for job in local.getmail_jobs : "getmailrc_${job.name}" =>
|
||||
|
||||
templatefile("${path.module}/resources/getmail/getmailrc.tpl", {
|
||||
recipient = job.recipient
|
||||
domain = job.domain
|
||||
server = job.server
|
||||
port = job.port
|
||||
username = job.username
|
||||
password = job.password
|
||||
mailbox = job.mailbox
|
||||
delete_after = job.delete_after
|
||||
dovecot_lmtp_address = "dovecot-lmtp.mail.svc.cluster.local"
|
||||
dovecot_lmtp_port = 31024
|
||||
})
|
||||
}
|
||||
|
||||
postfix_run_config = file("${path.module}/resources/postfix/run.config")
|
||||
postfix_bcc_map = join("\n", [for account in var.email_accounts : "/([^@]+)@${replace(account.domain, ".", "\\.")}/ $${1}+Sent@${account.domain}"])
|
||||
|
||||
postfix_run_config_checksum = sha256(local.postfix_run_config)
|
||||
postfix_bcc_map_checksum = sha256(local.postfix_bcc_map)
|
||||
|
||||
dovecot_config = file("${path.module}/resources/dovecot/dovecot.conf")
|
||||
dovecot_users = join("\n", [for account in var.email_accounts : "${account.username}:{BLF-CRYPT.HEX}${local.password_hashes[account.username]}:1000:1000::/var/mail/${account.username}::"])
|
||||
dovecot_sieve = file("${path.module}/resources/dovecot/sieve")
|
||||
|
||||
dovecot_config_checksum = sha256(local.dovecot_config)
|
||||
dovecot_users_checksum = sha256(local.dovecot_users)
|
||||
dovecot_sieve_checksum = sha256(local.dovecot_sieve)
|
||||
}
|
||||
|
||||
data "external" "password_hasher" {
|
||||
for_each = { for account in var.email_accounts : account.username => account }
|
||||
program = ["python3", "${path.module}/lib/bcrypt_hash.py"]
|
||||
|
||||
query = {
|
||||
password = each.value.password
|
||||
cost = "10"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user