一、应用场景
1.配置好Confluence后无法发送找回密码邮件。
二、问题处理
1.我首先申领了一个网易的邮箱,然后找到网易邮箱的配置如下:
主机名:smtp.163.com
端口号:25或465
常规的思路是填写25号端口,因此,我填入25号端口以后,发现根本连接不上smtp.163.com这个邮件服务器,很郁闷。报错信息如下:
An error has occurred with sending the test email:
com.atlassian.mail.MailException: javax.mail.MessagingException: Exception reading response;
nested exception is:
java.net.SocketTimeoutException: Read timed out
at com.atlassian.confluence.jmx.JmxSMTPMailServer.doSendWithMessageIdSupport(JmxSMTPMailServer.java:120)
at com.atlassian.confluence.jmx.JmxSMTPMailServer.send(JmxSMTPMailServer.java:79)
at com.atlassian.confluence.admin.actions.mail.SendTestEmailAction.execute(SendTestEmailAction.java:57)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:168)
at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)
...........
...........
at org.apache.catalina.valves.StuckThreadDetectionValve.invoke(StuckThreadDetectionValve.java:206)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:502)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1132)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1533)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1489)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: javax.mail.MessagingException: Exception reading response;
nested exception is:
java.net.SocketTimeoutException: Read timed out
at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:2210)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1950)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:642)
at javax.mail.Service.connect(Service.java:317)
at javax.mail.Service.connect(Service.java:176)
at javax.mail.Service.connect(Service.java:125)
at com.atlassian.confluence.jmx.JmxSMTPMailServer.doSendWithMessageIdSupport(JmxSMTPMailServer.java:102)
... 363 more
Caused by: java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
at java.net.SocketInputStream.read(SocketInputStream.java:171)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at com.sun.mail.util.TraceInputStream.read(TraceInputStream.java:110)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
at java.io.BufferedInputStream.read(BufferedInputStream.java:265)
at com.sun.mail.util.LineInputStream.readLine(LineInputStream.java:89)
at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:2188)
... 369 more
想到是不是服务器没有开25号端口,所以我就在安全组配置了25号端口,然而没有什么用,系统根本不会开启。后来进入阿里云的官方论坛查找答案,发现25号端口被阿里云特意Ban掉了,所以不会开启。
那就试试465号端口?好吧,同样的,在安全组添加465号端口,然后重试一下,记得这一次要加上TLS选项,因为它是采用安全SMTP协议传输的,因此,需要多加一个选项。事实证明,这个根本没有用。
2.切换邮件服务提供商
觉得服务器部署在阿里云的服务器上连接不上网易的邮件服务器,那我就换一个邮件服务提供商—腾讯企业邮箱。关于腾讯企业邮箱的申请和配置就不再赘述了,拿到了如上图所示的地址和配置:
主机名:smtp.exmail.qq.com
端口号:25或465
好吧,还是一样,采用25号端口和465号端口后依然不行。找到Confluence官网的配置说明,看到了一行字:
SMTP Port Optional. The port to connect to on the SMTP host. FishEye needs to use port 25 or
port 587, because unlike JIRA its initial connection doesn't use SSL. Port 25 will be used if no
port is specified.
也就是说还可以整587端口呗,抱着试一试的心态,发现真心可以!
输出了如下结果:
Your test message has been sent successfully to xxxxx@xxxxx.com.
3.总结
这里总结一下这些坑,首先服务器部署在阿里云的ECS上面,端口号25是默认关闭的,465端口虽然开启,但是服务器连接超时了,这个只是针对我的这个confluence应用的,对于其它使用Java编写的应用不一定适用,请甄别。587端口是一个邮件里面也会使用的端口,腾讯企业邮箱虽然没有明确说明使用了这个端口,但是经过尝试,确实发现可以使用587端口发送,这也是官方推荐的端口号。网易邮箱则没有这个功能。
参考链接
https://qinjiangbo.com/mail-server-configuration-of-confluence.html