On Tue, Feb 24, 2015 at 07:35:18PM +0100, ?hsan?Do?an wrote:
> For me, it's not 100% clear, how the Postfix smtp client chooses the TLS
> cipher. In a setup, where a Postfix server connects to mail.dogan.ch,
> I've experienced this behaviour:
>
> 1. smtp_tls_security_level = verify
>
> Feb 24 18:51:28 bender postfix/smtp[26237]: [ID 197553 mail.info]
> Verified TLS connection established to mail.dogan.ch[77.109.151.89]:25:
> TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)
[ Note "verify" is not recommended, use "secure" instead. However,
these coincide when the [nexthop] is not subject to MX lookups. ]
This ciphersuite involves use of an RSA key to sign the server's
ephemeral ECDH key agreement parameters, thereby authenticating the
server to the client.
> 2. smtp_tls_security_level = may
>
> Feb 24 19:16:51 bender postfix/smtp[26830]: [ID 197553 mail.info]
> Untrusted TLS connection established to mail.dogan.ch[77.109.151.89]:25:
> TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)
[ Note, sufficiently recent Postfix versions correctly report this
as "Anonymous" rather than "Untrusted". ]
Here, since no authentication is performed, an anonymous ciphersuite
is used, saving the server pointless cycles signing the ECDH
parameters.
> I guess the Postfix smtp client chooses the cipher
> ECDHE-RSA-AES256-GCM-SHA384 only when smtp_tls_security_level is set to
> verify, because the TLS connection is untrusted.
No, with "verify" the client removes anon-(EC)DH ciphers from its
cipherlist, because these would prevent the desired server
authentication.
> What makes me wonder is, why the TLS connection is trusted, if
> smtp_tls_security_level is set to verify, but it's untrusted if
> smtp_tls_security_level is set to may. What is the logic behind?
http://www.postfix.org/TLS_README.html#client_tls_limits
http://www.postfix.org/TLS_README.html#client_tls_levels
http://www.postfix.org/TLS_README.html#client_tls_secure
http://www.postfix.org/TLS_README.html#client_tls_may
With "may" there is no protection against active attacks, so no
CPU cycles are wasted going through the motions of certificate
checks whose results are ignored.
--
Viktor.