【Discourse】使用容器内自带的telnet工具测试smtp服务是否被阻止

这两天在迁移服务器的时候,第一次是买了一个纯ipv6(但是带nat ipv4出口)的主机准备尝试能否部署,当时实际上论坛的容器都已经可以启动和访问了,只是邮件无法发送,在后台点击测试邮箱的时候报错:

邮件服务:xxxx failed

报错内容我具体记不清了,但是大概就是这样的

当时我以为是纯ipv6导致的无法访问 smtpdm.aliyun.com:25 ,后来才发现不是的,貌似是阿里云的25端口屏蔽了国外IP的访问,

然后我就放弃了,退了这台IPv6的机子,另买了一台ipv4和v6都有的,结果迁移成功之后发现,卧槽,怎么还是不行,翻了翻discourse官方的文档,找到了这个工具,就想测试一下是否能访问,然后发现确实是ip无法访问的问题,具体的操作步骤如下:

## 进入容器
./launcher enter discourse-app
## 测试邮箱服务连接
telnet smtp.mailgun.org 587
## 阿里云的,25/80/465端口都可
telnet smtpdm.aliyun.com:80

执行之后如果没有反应,则表明无法使用该端口或者当前服务器无法连接到对应的smtp服务商,

如果有反应,则说明可以访问,那么按一下 Ctrl+] 键,然后输入 quit 退出telnet工具

我经过测试之后发现阿里云的服务25和465端口都不可用,但是80端口居然可以连接,总算是解决了这个问题。

参考链接:

对新 Discourse 安装上的电子邮件进行故障排除 - 帮助中心 / 自托管

同时还说明了一个问题,就是只要邮件服务没问题,纯ipv6(但是肯定会有nat ipv4出口)的VPS也是可以部署discourse论坛的,当然前提是使用cloud flare代理公网的ipv4访问。