I am interested in forcing
encrypted authentication with Postfix.
I am aware that in some countries, public ISPs and the like are forbidden from requiring encryption where email systems are concerned. I am also aware that this practice is discouraged in certain circles.
According to the Postfix documentation ( http://www.postfix.org/TLS_README.html#server_tls_auth
), it may be useful to employ the following combination of directives. The idea is that authentication mechanisms will still be announced to older clients, and even though they won't be able to authenticate, they will receive some kind of error message. (The helpfulness of that error message is another issue altogether, as will become apparent.)
smtpd_tls_security_level = may
smtpd_tls_auth_only = yes
With this configuration, attempts to send mail are rejected, with a message like the following:
An error occurred while sending mail. The mail server responded: 5.7.1 <your-hostname.your-isp.com[XXX.XXX.XXX.XXX]>: Client host rejected: Access denied. Please check the message recipient email@example.com and try again.
Additionally, my email client (Thunderbird) displays something like this:
Sending of message failed.
The message could not be sent because the connection to SMTP server example.com was lost in the middle of the transaction. Try again or contact your network administrator.
If I enable STARTTLS for the SMTP connection, I am able to send mail without issue.
So far, all is well, and these are the expected results.
If I change the security level to "encrypt", the results when attempting to connect over an unencrypted connection are slightly different:
smtpd_tls_security_level = encrypt
smtpd_tls_auth_only = yes
An error occurred while sending mail. The mail server responded: 5.7.0 Must issue a STARTTLS command first. Please verify that your email address is correct in your Mail preferences and try again.
This message is much more useful to clients that understand how to receive it, which I appreciate.
However, when I enable STARTTLS for the SMTP connection, mail is sent without issue, but it is always returned with the following message attached
<firstname.lastname@example.org>: host 127.0.0.1[127.0.0.1] said: 530 5.7.0 Failed,
id=01520-12, from MTA([127.0.0.1]:10025): 530 5.7.0 Must issue a STARTTLS
command first (in reply to end of DATA command)
Is this because the local, internal connection between Postfix and Amavis is also
requiring encryption, given these directives? If so, is there a simple means by which to exempt local connections from this requirement?
The fact that the first method works without issue seems to indicate that the "smtpd_tls_auth_only = yes" directive is ignored for local connections.
I am okay with using the first set of directives, but I would like to understand why the second does not work.
Thanks for any help!