I spent some time this afternoon doing compatibility testing with Courier's TLS_PROTOCOL settings, with both OpenSSL and GnuTLS libraries. The tables that follow detail the results that I observed. GnuTLS got somewhat less testing than OpenSSL. If someone else wants to test GnuTLS against sendmail, that would be quite useful.

The first series of tests were against Courier 0.58.0, compiled with OpenSSL support, to determine what other MTAs could successfully establish TLS connections. Sendmail, courierd (openssl, unless noted with gnutls), and openssl's s_client were tested. All of the senders were running on Fedora 8. Sendmail was using its default configuration. In both of the courierd client test configurations, only TLS_PROTOCOL had been changed from its default.

The second series of tests were against Courier 0.58.0, compiled with GnuTLS support. The senders in that series of tests were running on CentOS 5.

Courier (OpenSSL)


        esmtpd: TLS1*
        esmtpd: SSL2
        esmtpd: SSL3
        esmtpd: SSL23
sendmail (f8)
        no
        yes
        no
        yes
courierd: SSL3*
        no
        no
        yes
        yes
courierd: SSL2
        no
        yes
        no
        yes
courierd: SSL23
        no
        yes
        no
        yes
courierd: TLS1
        yes
        no
        no
        yes
s_client: -ssl2
        no
        yes
        no
        yes
s_client: -ssl3
        no
        no
        yes
        yes
s_client: -tls1
        yes
        no
        no
        yes
s_client: -no_ssl2
        yes
        no
        yes
        yes
s_client: -no_ssl3
        no
        yes
        no
        yes
s_client: -no_tls1
        no
        yes
        no
        yes
courierd(gnutls): SSL3
        no
        no
        yes
        yes
courierd(gnutls): TLS1
        yes
        no
        no
        yes
courierd(gnutls): TLS1_1
        no
        no
        no
        no
courierd(gnutls):
TLS1_1:TLS1:SSL3
        yes
        no
        yes
        yes



Courier (GnuTLS)


        esmtpd: SSL3
        esmtpd: TLS1*
        esmtpd: TLS1_1
        esmtpd:
TLS1_1:TLS1:SSL3
courierd: SSL3*
        yes
        no
        no
        yes
courierd: SSL2
        no
        no
        no
        no
courierd: SSL23
        yes
        yes
        no
        yes
courierd: TLS1
        no
        yes
        no
        yes
s_client: -ssl2
        no
        no
        no
        no
s_client: -ssl3
        yes
        no
        no
        yes
s_client: -tls1
        no
        yes
        no
        yes
s_client: -no_ssl2
        yes
        yes
        no
        yes
s_client: -no_ssl3
        no
        yes
        no
        yes
s_client: -no_tls1
        yes
        no
        no
        yes


Several of the results are notable:

* The biggest and most important: As was pointed out previously by another list member, Courier's esmtpd default setting is TLS_PROTOCOL=TLS1. Courier's courierd default setting is SSL3. They are not interoperable. In its default configuration, one installation of Courier is not able to send email to another.

* I'm not sure what SSL settings Sendmail uses by default. It behaves identically to courier when courierd uses SSL2 and also SSL23. Courier doesn't accept mail from sendmail by default, either.

* SSL23 used in courierd won't allow it to connect to a courier server using SSL3 in esmtpd. Weird.

* More generally, any of SSL2, SSL3, and TLS1 settings in courierd will only connect to an esmtpd that uses either the identical setting, or SSL23.

* The most interoperable client was openssl's "s_client" when using the -no_ssl tls protocol setting.

* There is no setting for courierd (with openssl) that will successfully connect to either TLS1 or SSL3 servers, as s_client will.

* GnuTLS's TLS1_1 setting doesn't work with anything tested. It probably only works with GnuTLS, and an identical setting.

Based on those results, I'm personally inclined to believe that the TLS_PROTOCOL setting should be eliminated. When openssl is used, all of the server components of courier should behave as they do with SSL23, and the default TLS_CIPHER_LIST should disable all of SSL2's ciphers. When GnuTLS is used, TLS_PROTOCOL should probably behave as it does with SSL3:TLS1:TLS1_1.

courierd's default setting should behave like "s_client -no_ssl2" does, when using openssl. It should probably use SSL3:TLS1:TLS1_1 when using GnuTLS.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
courier-users mailing list
[email protected]
Unsubscribe: https://lists.sourceforge.net/lists/listinfo/courier-users

Reply via email to