阿里云和腾讯云默认封禁 25 端口

昨天用 Ghost 创建了一个新的博客,在发邮件邀请 team members 时,发现邮件总是收不到。

在查看 Ghost log 时发现:

ghost log

可用 ghost ls 和 ghost log <blog name> 查看

WARN Error sending email: Failed to send email. Reason: connect ETIMEDOUT 183.57.48.35:25. Please check your email settings and resend the invitation.  

向 QQ 邮箱发送邮件时会出现 `ETIMEDOUT 183.57.48.35:25`

发送超时?期初我以为是 nodemailer 的问题,但其文档中提到:

I get ETIMEDOUT errors

Check your firewall settings. Timeout usually occurs when you try to open a connection to a port that is firewalled either on the server or on your machine

他说可能是防火墙挡住了,需要检查 Firewalld 状态:

$ firewall-cmd --list-all
FirewallD is not running  

但 FirewallD 并没有在运行(当初不太会配置,懒得开)……

所以我直接搜索了 183.57.48.35:25

Google Search 183.57.48.35:25

哦……25 端口是啥?

25端口

利用25端口,黑客可以寻找SMTP服务器,用来转发垃圾邮件。

25端口被很多木马程序所开放,比如Ajan、Antigen、Email Password Sender、ProMail、trojan、Tapiras、Terminator、WinPC、WinSpy等等。拿WinSpy来说,通过开放25端口,可以监视计算机正在运行的所有窗口和模块。

原来,25 端口经常遭到滥用和攻击,阿里云和腾讯云均已将 25 出口端口封禁,虽然可以申请解封,但安全更重要些。

那怎么才能正常发邮件?

Postfix 配置 SSL 比较麻烦,需要生成/维护证书。所以我们直接用第三方的加密 SMTP 服务就可以了:

编辑 Ghost 博客配置文件 config.production.json

  "mail": {
    "transport": "SMTP",
    "from": "Example <example@example.com>",
    "options": {
      "host": "smtp.qq.com",
      "secureConnection": true,
      "port": 465,
      "auth": { "user": "example@example.com", "pass": "example" }
    }
  }

我用的是 QQ 邮箱,你们也可以用其他邮箱

保存后重启 Ghost 服务 systemctl restart <service name>

send success

发送成功!

References

正在加载 Disqus 评论组件...