So I have TLS and AUTH working just fine in almost every email client
that I use. I have confirmed that it's encrypted, and authenticating
correctly, so my settings are OK (for those two things used together).
The problem I am having is when enabling the following feature:
smtpd_tls_auth_only = yes
So I know that it's NOT supposed to show AUTH capability until /after/
the client does STARTTLS. So the client does a STARTTLS, issues another
EHLO and according to the debugs, there /still/ is no AUTH capability
reported.
I have used the openssl client, and debug peer parameter to confirm this
bug (or misconfiguration on my part). Note the following two examples.
1) using openssl client
2) using debug peer
===================================================================
1) using the openssl client, note after 250 DSN, STARTTLS is not
available because we're already in it, so this is the second EHLO I
manually issue, and still no AUTH:
# openssl s_client -host 10.174.4.235 -port 25 -starttls smtp
CONNECTED(00000003)
... OpenSSL Details ...
---
250 DSN
EHLO foo.example.com
250-bar.example.com
250-PIPELINING
250-SIZE
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
===================================================================
2) Using the debug_peer parameter. I am omitting most of the back end
SSL stuff. Notice the first EHLO, it initiates the STARTTLS, then it
issues another EHLO and no STARTTLS, AND it has no AUTH:
connect from 6.8.8.234.pools.example.net[6.8.8.234]
smtp_stream_setup: maxtime=300 enable_deadline=0
match_hostname: 6.8.8.234.pools.example.net ~? 192.168.4.0/24
match_hostaddr: 6.8.8.234 ~? 192.168.4.0/24
match_hostname: 6.8.8.234.pools.example.net ~? 127.0.0.0/8
match_hostaddr: 6.8.8.234 ~? 127.0.0.0/8
match_list_match: 6.8.8.234.pools.example.net: no match
match_list_match: 6.8.8.234: no match
auto_clnt_open: connected to private/anvil
send attr request = connect
send attr ident = smtp:6.8.8.234
private/anvil: wanted attribute: status
input attribute name: status
input attribute value: 0
private/anvil: wanted attribute: count
input attribute name: count
input attribute value: 1
private/anvil: wanted attribute: rate
input attribute name: rate
input attribute value: 1
private/anvil: wanted attribute: (list terminator)
input attribute name: (end)
220 foo.example.org ESMTP
watchdog_pat: 0x556d0692d6e0
EHLO [29.97.162.234]
match_list_match: 6.8.8.234.pools.example.net: no match
match_list_match: 6.8.8.234: no match
250-foo.example.org
250-PIPELINING
250-SIZE
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
watchdog_pat: 0x556d0692d6e0
STARTTLS
220 2.0.0 Ready to start TLS
setting up TLS connection from 6.8.8.234.pools.example.net[6.8.8.234]
TLS cipher list "aNULL:-aNULL:ALL:!EXPORT:!LOW:+RC4:@STRENGTH"
send attr request = seed
... SSL STUFF ...
TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)
watchdog_pat: 0x556d0692d6e0
EHLO [29.97.162.234]
match_list_match: 6.8.8.234.pools.example.net: no match
match_list_match: 6.8.8.234: no match
250-foo.example.org
250-PIPELINING
250-SIZE
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
watchdog_pat: 0x556d0692d6e0