Java 如何在邮件服务器上测试安全SMTP邮件服务

Java 如何在邮件服务器上测试安全SMTP邮件服务,java,sockets,email,smtp,network-protocols,Java,Sockets,Email,Smtp,Network Protocols,我正在做一个用Java自动配置用户电子邮件服务器设置的项目。我正在从他的电子邮件地址提取邮件服务器,并使用com.sun.jndi.dns.DnsContextFactory的DirContext类查找该邮件服务器的MX记录 然后,我向每个服务器打开一个Socket,使用HELO命令测试它们,并检查响应 我的问题是,只有当我使用不安全的SMTP端口25测试它时,它才起作用。如何将其与安全端口465一起使用 我试着通过使用 SSLSocketFactory sslsocketfactory = (

我正在做一个用Java自动配置用户电子邮件服务器设置的项目。我正在从他的电子邮件地址提取邮件服务器,并使用
com.sun.jndi.dns.DnsContextFactory
DirContext
类查找该邮件服务器的MX记录

然后,我向每个服务器打开一个
Socket
,使用
HELO
命令测试它们,并检查响应

我的问题是,只有当我使用不安全的SMTP端口25测试它时,它才起作用。如何将其与安全端口465一起使用

我试着通过使用

SSLSocketFactory sslsocketfactory = (SSLSocketFactory)SSLSocketFactory.getDefault();
SSLSocket socket = (SSLSocket)sslsocketfactory.createSocket(mailserver, STANDARD_SMTP_PORT);
但是所有连接都会得到一个超时异常,如下所示

alt1.gmail-smtp-in.l.google.com. java.net.ConnectException: Operation timed out
请帮忙

进一步信息:我没有创建邮件客户端。这是为了简化现有邮件客户端的邮件服务器设置。

SMTP-SSL(端口465)afaik已被弃用,因此,与其尝试连接到SSL套接字,不如在端口25(或587用于SMTP身份验证连接)上实际连接“明文”,但是发送EHLO而不是HELO,并查看服务器是否支持STARTTLS,它将替换不推荐的SMTP-SSL。客户端发送STARTTLS命令后,连接被加密,因此端口25本身不是“不安全的”

telnet alt1.gmail-smtp-in.l.google.com 25
正在尝试173.194.71.26。。。
已连接到alt1.gmail-smtp-in.l.google.com。
转义字符为“^]”。
220 mx.google.com ESMTP i7si4620651lbb.76
EHLO myserver.com
250-mx.google.com为您服务,[x.x.x.x]
250号35882577
250-8比特
250-STARTTLSSMTP-SSL(端口465)afaik已被弃用,因此,您不必尝试连接到SSL套接字,而是在端口25(或587用于SMTP身份验证连接)上连接“明文”,而是发送EHLO而不是HELO,并查看服务器是否支持STARTTLS,以替换弃用的SMTP-SSL。客户端发送STARTTLS命令后,连接被加密,因此端口25本身不是“不安全的”

telnet alt1.gmail-smtp-in.l.google.com 25
正在尝试173.194.71.26。。。
已连接到alt1.gmail-smtp-in.l.google.com。
转义字符为“^]”。
220 mx.google.com ESMTP i7si4620651lbb.76
EHLO myserver.com
250-mx.google.com为您服务,[x.x.x.x]
250号35882577
250-8比特

250-STARTTLS在与服务器建立连接之前,您是否已对程序进行了身份验证。每个远程邮件服务器都需要对试图建立套接字连接的计算机进行身份验证。例如,如果您使用javaMail库,您将获得添加用户名和密码的选项。在java中使用简单套接字时,您需要找到一种解决方法。在与服务器建立连接之前,您是否验证了该程序。每个远程邮件服务器都需要对试图建立套接字连接的计算机进行身份验证。例如,如果您使用javaMail库,您将获得添加用户名和密码的选项。在java中使用简单套接字时,您需要找到一个解决方法,谢谢。我来看看。但是gmail的smtp服务器是smtp.gmail.com,它使用端口465。那么它怎么可能被弃用呢?许多提供商仍然提供SMTP-S以实现向后兼容性。gmail也在smtp.gmail.com端口587上提供STARTTLS,谢谢。我来看看。但是gmail的smtp服务器是smtp.gmail.com,它使用端口465。那么它怎么可能被弃用呢?许多提供商仍然提供SMTP-S以实现向后兼容性。gmail也在smtp.gmail.com端口587上提供STARTTLS
telnet alt1.gmail-smtp-in.l.google.com 25
Trying 173.194.71.26...
Connected to alt1.gmail-smtp-in.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP i7si4620651lbb.76
EHLO myserver.com
250-mx.google.com at your service, [x.x.x.x]
250-SIZE 35882577
250-8BITMIME
250-STARTTLS                  <<--------- this is what you're looking for
250 ENHANCEDSTATUSCODES
STARTTLS      <<--- client command to actually start encrypting the traffic
220 2.0.0 Ready to start TLS