javamail配置
25 vs 465 vs 587
大多数电子邮件软件在端口25上使用SMTP将消息提交到电子邮件服务器,以便转发到目的地。然而,SMTP最初设计用于传输,而不是提交。因此定义了另一个端口(587)用于消息提交。尽管端口587不强制要求使用STARTTLS,但在意识到客户端和服务器之间通信的SSL/TLS加密是一个重要的安全和隐私问题的同时,端口587的使用开始流行起来。
结果是,在大多数情况下,通过端口587提供消息提交的系统需要客户端使用STARTLS来升级连接,还需要用户名和密码来进行身份验证。这种方法还有一个额外的好处。通过让用户不再使用25端口提交电子邮件,isp现在能够阻止用户电脑的25端口连接,这些连接是垃圾邮件的重要来源,因为它们会感染垃圾邮件发送病毒。
目前,使用端口465加密的SMTP SSL/TLS的人和使用端口587升级STARTTLS的SMTP的人之间的情况似乎相对随机。
MTA到MTA通信(邮件服务器到邮件服务器)使用端口25。它可能被用于客户端到服务器的通信,但目前并不是最推荐的。标准SMTP端口接受来自其他邮件服务器的电子邮件到它的“内部”邮箱,而不进行身份验证。
端口465和587用于电子邮件客户端到电子邮件服务器的通信-使用SMTP协议发送电子邮件。
端口465和587都是邮件提交代理(MSA)的有效端口。端口465需要在连接设置时协商TLS/SSL,端口587如果选择协商TLS,则使用STARTTLS。IANA注册表进行了更新,允许为此目的合法使用端口465。对于邮件中继,只使用端口25,因此STARTTLS是使用邮件中继执行TLS的惟一方法。
很多云服务商会直接关闭25端口, 防止垃圾邮件。
SSL vs TLS vs STARTTLS
对于不同的术语SSL、TLS和STARTTLS,常常会有一些混淆。
SSL和TLS都提供了一种方法来加密两台计算机(例如您的计算机和我们的服务器)之间的通信通道。TLS是SSL的继承者,术语SSL和TLS可以互换使用,除非您指的是协议的特定版本。
STARTTLS是一种使用SSL/TLS将现有的不安全连接升级为安全连接的方法。注意,尽管名称中有TLS,但STARTTLS并不意味着必须使用TLS,您可以使用SSL。
465-CONFIG
spring:
mail:
host: 'smtp.exmail.xx.com'
username: '[email protected]'
password: 'xxxxxxxx'
properties:
mail.debug: false
mail.smtp.auth: true
mail.smtp.port: 465
mail.smtp.ssl.enable: true #必须为true 注释掉或者为false都无法发送邮件
如果我们把port改成587会抛出
javax.net.ssl.SSLException: Unsupported or unrecognized SSL message
如果我们把enable改成false则可以发送邮件
587-CONFIG
spring:
mail:
host: 'smtp.exmail.xx.com'
username: '[email protected]'
password: 'xxxxxxxx'
properties:
mail.debug: false
mail.smtp.auth: true
mail.smtp.port: 587
mail.smtp.ssl.enable: false #注释或者为false
mail.smtp.starttls.enable: true
mail.smtp.starttls.required: true
下一篇: css3学习之自定义字体