chiark / gitweb /
base.m4: Tweakable TLS parameters in `smtp' transport.
authorMark Wooding <mdw@distorted.org.uk>
Mon, 17 Mar 2014 21:30:57 +0000 (21:30 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Mon, 17 Mar 2014 21:30:57 +0000 (21:30 +0000)
Now we can designate particular hosts as requiring TLS, with proper
certificate checking and maybe client certification.  No SMTP client
authentication yet.

base.m4

diff --git a/base.m4 b/base.m4
index 8211506c45e916065030288f58a7edc07ab2616d..6c2dc7ba3e6c50a8ec5ee6786bea3cd072bd91e6 100644 (file)
--- a/base.m4
+++ b/base.m4
@@ -345,12 +345,26 @@ m4_define(<:USER_DELIVERY:>,
        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_require_tls = DOMKV(tls-peer-ca, {*}{})
+       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