{ d, ifThen, otherwise, }: # Queue Management # https://stalw.art/docs/mta/outbound/overview { # Virtual Queues # https://stalw.art/docs/mta/outbound/queue virtual.default.threads-per-node = 100; virtual.admin.threads-per-node = 10; virtual.local.threads-per-node = 100; # Schedules # https://stalw.art/docs/mta/outbound/schedule schedule = let queue = { retry = [ "1m" "2m" "5m" "10m" "15m" "30m" "1h" "2h" ]; notify = [ "1d" "3d" ]; max-attempts = 15; }; in { default = queue // { queue-name = "default"; }; admin = queue // { queue-name = "admin"; }; local = queue // { queue-name = "local"; }; }; # Routes # https://stalw.art/docs/mta/outbound/routing route = { local.type = "local"; remote = { type = "mx"; ip-lookup = "ipv6_then_ipv4"; tls.implicit = false; tls.allow-invalid-certs = false; }; }; # Strategies # https://stalw.art/docs/mta/outbound/strategy strategy = { schedule = [ (ifThen "is_local_domain('', rcpt_domain)" "'local'") (ifThen "source = 'dsn'" "'admin'") (ifThen "source = 'report'" "'admin'") (ifThen "source = 'autogenerated'" "'admin'") (otherwise "'default'") ]; route = [ (ifThen "is_local_domain('', rcpt_domain)" "'local'") (otherwise "'remote'") ]; connection = "'default'"; tls = "'default'"; }; # Remote Connection # https://stalw.art/docs/mta/outbound/connection connection.default = { ehlo-hostname = d.extUrl; source-ips = d.extIPs; timeout = { connect = "3m"; greeting = "3m"; ehlo = "3m"; mail-from = "3m"; rcpt-to = "3m"; data = "10m"; }; }; tls.default = { dane = "optional"; mta-sts = "optional"; starttls = "optional"; allow-invalid-certs = false; timeout.tls = "3m"; timeout.mta-sts = "3m"; }; }