base.m4, vhost.m4: Very hacky DH field-size limitation.
[exim-config] / base.m4
diff --git a/base.m4 b/base.m4
index 523e475..4a925df 100644 (file)
--- a/base.m4
+++ b/base.m4
@@ -348,9 +348,11 @@ SECTION(transports)m4_dnl
 ## 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
+## `domains.conf' file.  Annoyingly, the `tls_dh_min_bits' setting isn't
+## expanded before use, so we can't set it the obvious way.  Instead, encode
+## it into the transport name.  This is very unpleasant, of course.
+m4_define(<:SMTP_TRANS_DHBITS:>,
+       <:driver = smtp
        hosts_try_auth = *
        hosts_require_tls = DOMKV(tls-peer-ca, {*}{})
        hosts_require_auth = \
@@ -366,10 +368,14 @@ smtp:
                                 {$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
+       tls_dh_min_bits = $1
+       tls_tempfail_tryclear = true:>)m4_dnl
+smtp:
+       SMTP_TRANS_DHBITS(1020)
+smtp_dhbits_1024:
+       SMTP_TRANS_DHBITS(1020)
+smtp_dhbits_2048:
+       SMTP_TRANS_DHBITS(2046)
 
 ## Transport to a local SMTP server; use TLS and perform client
 ## authentication.