SECTION(global, bounce)m4_dnl
delay_warning = 1h : 24h : 2d
+SECTION(global, tls)m4_dnl
+tls_certificate = CONF_sysconf_dir/server.cert
+tls_privatekey = CONF_sysconf_dir/server.key
+tls_advertise_hosts = ${if exists {CONF_sysconf_dir/server.key} {*}{}}
+tls_dhparam = CONF_ca_dir/dh-param-2048.pem
+tls_require_ciphers = ${if or {{={$received_port}{CONF_submission_port}} \
+ {match_ip {$sender_host_address}{+trusted}}} \
+ {CONF_good_ciphers} \
+ {CONF_acceptable_ciphers}}
+tls_verify_certificates = CONF_ca_dir/ca.cert
+tls_verify_hosts = ${if eq{$acl_c_mode}{submission} {} {+allnets}}
+
DIVERT(null)
###--------------------------------------------------------------------------
### Access control lists.
return_path_add = true:>)
SECTION(transports)m4_dnl
-## A standard transport for remote delivery. Try to do TLS, and don't worry
-## too much if it's not very secure: the alternative is sending in plaintext
-## anyway.
+## A standard transport for remote delivery. By default, try to do TLS, and
+## don't worry too much if it's not very secure: the alternative is sending
+## in plaintext anyway. But all of this can be overridden from the
+## `domains.conf' file.
smtp:
driver = smtp
- tls_require_ciphers = CONF_acceptable_ciphers
+ hosts_try_auth = *
+ hosts_require_tls = DOMKV(tls-peer-ca, {*}{})
+ hosts_require_auth = \
+ ${if bool {DOMKV(require-auth, {$value}{false})} {*}{}}
+ tls_certificate = DOMKV(tls-certificate, {${expand:$value}}fail)
+ tls_privatekey = DOMKV(tls-private-key, {${expand:$value}}fail)
+ tls_verify_certificates = DOMKV(tls-peer-ca, {${expand:$value}}fail)
+ tls_require_ciphers = \
+ DOMKV(tls-ciphers,
+ {${extract {${expand:$value}} \
+ { good = CONF_good_ciphers \
+ any = CONF_acceptable_ciphers } \
+ {$value} \
+ {${expand:$value}}}} \
+ {CONF_acceptable_ciphers})
+ ## Can't set this to an expansion. :-(
+ m4_dnl tls_dh_min_bits = DOMKV(dh-min-bits, {$value}{1020})
tls_dh_min_bits = 1020
tls_tempfail_tryclear = true