diff --git a/chatmaild/src/chatmaild/config.py b/chatmaild/src/chatmaild/config.py index 38c955c8..d19e966a 100644 --- a/chatmaild/src/chatmaild/config.py +++ b/chatmaild/src/chatmaild/config.py @@ -1,3 +1,4 @@ +import os from pathlib import Path import iniconfig @@ -43,6 +44,8 @@ class Config: ) self.mtail_address = params.get("mtail_address") self.disable_ipv6 = params.get("disable_ipv6", "false").lower() == "true" + self.addr_v4 = os.environ.get("CHATMAIL_ADDR_V4", "") + self.addr_v6 = os.environ.get("CHATMAIL_ADDR_V6", "") self.acme_email = params.get("acme_email", "") self.imap_rawlog = params.get("imap_rawlog", "false").lower() == "true" self.imap_compress = params.get("imap_compress", "false").lower() == "true" diff --git a/cmdeploy/src/cmdeploy/cmdeploy.py b/cmdeploy/src/cmdeploy/cmdeploy.py index 56d39b1f..aabb42c9 100644 --- a/cmdeploy/src/cmdeploy/cmdeploy.py +++ b/cmdeploy/src/cmdeploy/cmdeploy.py @@ -101,6 +101,9 @@ def run_cmd(args, out): env["CHATMAIL_WEBSITE_ONLY"] = "True" if args.website_only else "" env["CHATMAIL_DISABLE_MAIL"] = "True" if args.disable_mail else "" env["CHATMAIL_REQUIRE_IROH"] = "True" if require_iroh else "" + if not args.dns_check_disabled: + env["CHATMAIL_ADDR_V4"] = remote_data.get("A") or "" + env["CHATMAIL_ADDR_V6"] = remote_data.get("AAAA") or "" deploy_path = importlib.resources.files(__package__).joinpath("run.py").resolve() pyinf = "pyinfra --dry" if args.dry_run else "pyinfra" diff --git a/cmdeploy/src/cmdeploy/postfix/main.cf.j2 b/cmdeploy/src/cmdeploy/postfix/main.cf.j2 index 5c624362..bc537783 100644 --- a/cmdeploy/src/cmdeploy/postfix/main.cf.j2 +++ b/cmdeploy/src/cmdeploy/postfix/main.cf.j2 @@ -69,6 +69,15 @@ mynetworks = 127.0.0.0/8 {% else %} mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 {% endif %} +{% if config.addr_v4 %} +smtp_bind_address = {{ config.addr_v4 }} +{% endif %} +{% if config.addr_v6 %} +smtp_bind_address6 = {{ config.addr_v6 }} +{% endif %} +{% if config.addr_v4 or config.addr_v6 %} +smtp_bind_address_enforce = yes +{% endif %} mailbox_size_limit = 0 message_size_limit = {{config.max_message_size}} recipient_delimiter = +