If not cipher list is specified for a relay rule, fallback to
the global cipher list if defined, rather than libtls default.
This is closer to the previous behavior.

Eric.

Index: mta.c
===================================================================
RCS file: /cvs/src/usr.sbin/smtpd/mta.c,v
retrieving revision 1.236
diff -u -p -r1.236 mta.c
--- mta.c       31 Mar 2021 17:47:16 -0000      1.236
+++ mta.c       31 Mar 2021 19:14:13 -0000
@@ -491,6 +491,7 @@ mta_setup_dispatcher(struct dispatcher *
        struct tls_config *config;
        struct pki *pki;
        struct ca *ca;
+       const char *ciphers;
        uint32_t protos;
 
        if (dispatcher->type != DISPATCHER_REMOTE)
@@ -501,8 +502,10 @@ mta_setup_dispatcher(struct dispatcher *
        if ((config = tls_config_new()) == NULL)
                fatal("smtpd: tls_config_new");
 
-       if (remote->tls_ciphers &&
-           tls_config_set_ciphers(config, remote->tls_ciphers) == -1)
+       ciphers = env->sc_tls_ciphers;
+       if (remote->tls_ciphers)
+               ciphers = remote->tls_ciphers;
+       if (ciphers && tls_config_set_ciphers(config, ciphers) == -1)
                err(1, "%s", tls_config_error(config));
 
        if (remote->tls_protocols &&

Reply via email to