I've setup postfix so that email clients use port 465 (smtps) for outbound mail. I'm not really understanding the difference between smtps (port 465) and submission (port 587)
What's the 'best practice' when configuring postfix for clients to securely send mail? Just use smtps? Or use both submission and smtps?
edit: This answer is based on RFC-6409 and is no longer correct, see the newer RFC-8314
Port 465 was used for SMTP connections secured by SSL. However, using that port for SMTP has been deprecated with the availability of STARTTLS: "Revoking the smtps TCP port" These days you should no longer use Port 465 for SMTPS. Instead, use Port 25 for receiving mails for your domain from other servers, or port 587 to receive e-mails from clients, which need to send mails through your server to other domains and thus other servers.
As an additional note, port 587 however is dedicated to mail submission - and mail submission is designed to alter the message and/or provide authentication:
Submission to port 587 is supposed to support STARTTLS, and thus can be encrypted. See also RFC#6409.
TL;DR
The new recommendation is to support both submissions/smtps and submission with STARTTLS for the time being, phasing out the later once it's not used anymore. (The same recommendations also apply for POP3 vs POP3S and IMAP vs IMAPS.)
Details
The best practice has changed with RFC 8314 Section 3.3:
The cited Appendix A then elaborates on the decision to prefer implicit TLS for all of SMTP, POP3 and IMAP, because these main points
As IETF RFC8314 Section 7.4 outlined, “Although STARTTLS on port 587 has been deployed, it has not replaced the deployed use of Implicit TLS submission on port 465.”
465/tcp (direct TLS) has strong Internet deployment of SMTP MTAs today due to 578/tcp (STARTTLS) being too easy to get man-in-the-middle by with.