很久没有写博客了,一是工作比较忙,二是个人也有点懒,最近很多朋友问,SMTP发信会暴露网站服务器的IP(即使用了CDN),该怎么解决这个问题呢?解决方法其实有很多种,我就说说我目前在用的一种方法,就是使用Haproxy中转,大致上和Haproxy安装及端口转发配置这个文章差不多。好了,废话也就不说那么多了,直接开始吧。

第一步:
需要找一台机器做中转,先安装Haproxy,参考Haproxy安装及端口转发配置这篇文章,然后我们来看看配置文件:

  1. global
  2. ulimit-n 51200
  3. defaults
  4. log global
  5. mode tcp
  6. option dontlognull
  7. timeout connect 1000ms
  8. timeout client 150000ms
  9. timeout server 150000ms
  10. listen status
  11. bind 0.0.0.0:1080
  12. mode http
  13. log global
  14. stats refresh 30s
  15. stats uri /admin?stats
  16. stats realm Private lands
  17. stats auth admin:password
  18. stats hide-version
  19. frontend ssin
  20. bind *:1000-2000
  21. default_backend ssout
  22. backend ssout
  23. server server1 11.22.33.44 maxconn 204800

我们只需要修改上面代码片段中的两处

  1. bind *:465
  2. // 如果是普通模式,那这里就填25,如果是SSL模式,就需要填465
  1. server server1 11.22.33.44 maxconn 204800
  2. //这里的IP需要改成SMTP地址的IP,ping一下SMTP域名即可得到地址

修改完成后,执行重启命令,并设为开机启动

  1. service haproxy restart
  2. chkconfig haproxy on

第二步:
登录WEB服务器,把smtp地址写进/etc/hosts文件,指向中转服务器的IP。假如我使用的是阿里云的邮件推送,那么它的SMTP服务器域名就是:smtpdm.aliyun.com 然后编辑/etc/hosts文件

  1. [root@sscloud ~]# vim /etc/hosts
  2. 127.0.0.1 localhost
  3. ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
  4. 10.16.156.98 sscloud
  5. 22.33.44.55 smtpdm.aliyun.com
  6. //22.33.44.55就是中转服务器的IP

修改完成后,执行service network restart 重启网卡即可。