Confluence配置邮件服务器

配置Confluence的时候踩了很多坑,各种各样的原因都有,现在写这篇博客记录下踩过的这些坑,以供大家参考。在说这些坑之前先说一下如何配置Confluence的邮件服务器,比较简单。

配置Confluence邮件服务器

进入配置中心,选择邮件服务器选项,如下图所示。

然后点击增加新的SMTP邮件服务器,如下图

填好对应的字段就可以了,注意区分各个服务器主机名对应的端口号,如果不填好,后面就会踩好多坑。

25和465端口号之殇

我首先申领了一个网易的邮箱,然后找到网易邮箱的配置如下:

1
2
主机名:smtp.163.com
端口号:25或465

常规的思路是填写25号端口,因此,我填入25号端口以后,发现根本连接不上smtp.163.com这个邮件服务器,很郁闷。报错信息如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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协议传输的,因此,需要多加一个选项。事实证明,这个根本没有用。

切换邮件服务提供商

觉得服务器部署在阿里云的服务器上连接不上网易的邮件服务器,那我就换一个邮件服务提供商—-腾讯企业邮箱。关于腾讯企业邮箱的申请和配置就不再赘述了,拿到了如上图所示的地址和配置:

1
2
主机名:smtp.exmail.qq.com
端口号:25或465

好吧,还是一样,采用25号端口和465号端口后依然不行。找到Confluence官网的配置说明,看到了一行字:

1
2
3
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端口呗,抱着试一试的心态,发现真心可以!并输出了如下结果:

1
Your test message has been sent successfully to [email protected]

总结

这里总结一下这些坑,首先服务器部署在阿里云的ECS上面,端口号25是默认关闭的,465端口虽然开启,但是服务器连接超时了,这个只是针对我的这个confluence应用的,对于其它使用Java编写的应用不一定适用,请甄别。587端口是一个邮件里面也会使用的端口,腾讯企业邮箱虽然没有明确说明使用了这个端口,但是经过尝试,确实发现可以使用587端口发送,这也是官方推荐的端口号。网易邮箱则没有这个功能。

分享到