服务器禁用smtp端口的解决办法

前几天帮朋友处理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的证书认证.

PS:个人觉得单个端口的转发,socat非常简单方便。

安装一个smtp插件就可以了。不走自己服务器的邮件服务

就是smtp插件,直接封了的,不让你连任何服务器的25,468,587端口。

然后使用自定义邮箱账号密码方式,邮件发送相当是由第三方来发送。

是第三方发送,但是你要先连接到邮箱的服务器是不是?服务器商直接把端口干掉了。

那你这个挺悲剧的,换掉吧。

目前DO和vultr都是这么管制的。
没办法,我只有使用linode来进行中转了。

我们用的是OVH,Needaserver的服务器,没有限制。