Sentry服务器在docker中无法发送邮件问题
问题原因
在centos系统中,利用docker的方式,部署好sentry服务器之后。偶然发现,邮件发送服务居然不能正常运行。
排查问题
第一步查看日志
利用docker logs
来查看邮件发送服务为啥不能正常运行。
首先查看web
服务的应用,看看邮件是否有被正常发送。
结果如图:
很明显我们能够发现邮件发送有被正常请求,也能发现邮件请求,被转发到 mail.queued
中。很显然这是一个异步任务,这个任务肯定是在 worker
服务中被注册。
于是我们接着查看 workder
日志。
结果如图:
结果是我们的客户端与邮件发送服务器之间的链接超时了。
排查我们链接的服务器是否正常
这个时候我们需要排查我们的 docker-compose.yml
的邮件配置是否正常(我这里是正常的,使用的是阿里云的邮件服务)。
在我们修改好,docker-compose.yml
配置文件之后,我们需要重新编译一下镜像文件,并重启.
启动好之后,我们可以在自己的sentry服务器。 https://你的域名/manage/status/mail/
中查看邮件发送配置。
当前我们也可以使用 docker
来查看我们某一个镜像的环境。
结果如图:
综上所述:我们的邮件服务器配置都是正常的。
排查我们服务器的网络和端口问题
因为我们的服务器是使用的阿里云服务器。这里有个安全组,需要查看我们的25端口的出入是否没有限制。
经过排查之后,我们的出入方向的25端口都没有限制。
于是我们在服务器上测试一下是否能够访问我们的邮件服务器。
如果这两个都能够正常访问,那么邮件服务器就可以正常使用了。
然而,我这里是能够ping通,但是 telnet
无法正常连上邮件服务器的25端口。但是阿里云的465端口是能够正常访问的,但是sentry
的邮件发送暂时没有支持ssl
,所以我们只能不考虑465端口。
后来通过阿里云工单得知,2018年9月份之后购买的服务器的25端口是受限的。详情查看
所以,我们可以通过申请25端口解封来解决这个问题。
总结
解决问题的方式如下:
- 通过查看日志的方式,定位,猜测,验证问题的来源。
- 知道问题的原因之后,就可以解决找到对应的解决方案。
- 在解决问题的过程中,会学到很多新东西。例如我这里:docker 的操作操作方式。