前几天帮朋友处理Magento 2不能发送邮件的问题,发现digitalocean机房的防火墙关闭了smtp端口(25,465,587)
目前digitalocean对新账户完全封闭smtp,以前还可以发工单解决,现在不行了。
过了60天的静默期之后,才会开放。
而且发现Vultr也有相同的问题。
虽然客服也给出了解决方案:
实际使用过程中还是有问题。
所以我的解决办法就是做smtp端口转发.
首先你要找一台可以正常连接smtp的服务器,然后安装socat
如果是centos服务器运行:
yum install -y socat
如果是Ubuntu:
apt-get install -y socat
然后使用socat做端口转发:
nohup socat TCP4-LISTEN:2525,reuseaddr,fork TCP4:163.177.72.143:587 >> port.log 2>&1 &
上面这段命令的意思是监听本地2525端口,然后转发到163.177.72.143的587端口,并使用port.log记录日志.
有个问题是587端口是ssl端口,个人建议转发至25端口,不然会报证书错误。
Retest.再次测试.
然后到digitalocean的服务器上运行命令,访问端口转发服务器:
telnet remoteIP 2525
如果正常会有回显,例如:
[root@root ~]# telnet 1.1.1.1 2525
Trying 1.1.1.1…
Connected to 1.1.1.1.
Escape character is ‘^]’.
220 smtp.qq.com Esmtp QQ Mail Server
增加守护进程
由于socat非常不稳定,一天大概会挂两三次,所以需要再增加一个守护脚本守护期进程.
如果没有正常回显,请检查防火墙…
如果能够正常连接,但是依然不能发送邮件,请关闭smtp的证书认证.