WordPress集成SendCloud邮件代发,规避SMTP泄漏网站主机真实IP的风险

2018年4月30日19:58:12 发表评论 8 views

WordPress 评论回复邮件存在一个巨大的风险:WordPress 评论回复邮件,不管是使用 SMTP 代发还是用 Sendmail 发送,都会暴露网站主机的真实 IP!

经过我亲自验证,发现的确存在这个令人担忧的问题!但是,一时之间并没有合适的解决方案,所以我和他都一致认为在没有找到替代方案之前,这个东西不能曝光!就算有部分人已经知道了,但还是不能明晃晃的摆到台面上来公布于众!

 

 

WordPress集成SendCloud邮件代发,规避SMTP泄漏网站主机真实IP的风险

接下来的几个月,一直在新公司持续高强度的工作,根本没有闲暇时间来研究替代方案!可惜让我担忧的事情最终还是发生了:幻杀博客的博主小幻在博客公布了这个会泄漏 IP 的“BUG”,却没有分享解决方案!我除了感叹出身牛犊不怕虎之外,也只能无奈加紧步伐,尽快找到替代方案。

一、如何泄漏

看过幻杀博客的文章的朋友应该已经知道是怎么一回事了。就是当我们的网站通过 SMTP 代发或者 php 调用 SendMail 来发邮件通知评论者时,我们发送过去的邮件原文中将带有我们主机的真实 IP!!如果被人恶意利用,我们的 CDN 防护都将变得毫无意义(点此查看个人网站暴漏真实 IP 的危害)!

WordPress集成SendCloud邮件代发,规避SMTP泄漏网站主机真实IP的风险

 

最新补充:果然,在乌云上早就有朋友发过这个漏洞了,感兴趣的童鞋可以前往看看:

某方法可以无视 CDN 查找真实 IP 导致真实站点遭受 DDOS 或入侵

 

二、解决方案

①、自建 API

既然不能使用 SMTP 代发,又不能使用 SendMail,那就只有一个办法了:用第三方 API 代发邮件即可,就算暴露 IP 也是暴露了邮件服务器的 IP,和我们的小站没有任何关系。

本来我是想在 SAE 搭建一个邮件代发 API,后来想到了中国博客联盟那么多的邮件模板,而自己空闲时间确实太少,只好先放弃了。

A. 小幻版本

小幻被我吐槽之后,说去研究下自建邮件 API 服务,目前已在他博客分享了一个自建的邮件代发 API,感兴趣的朋友可以前往查看:

使用邮件代发 API 发送回复邮件提醒

不得不说这家伙确实是一个很赞的高中技术宅(再次汗颜下自己高中时还只会玩 QQ)。

B. SAE 版本

小武这个技术宅,为了解决评论显示代发,导致变成垃圾邮件问题,在 SAE 搭建了一个邮件 API,而且是专门给 WordPress 评论回复用的,感兴趣的朋友可以去了解一下:

通过新浪 SAE 发送 wordpress 评论提醒邮件

②、SendCloud

写到这,本文主角终于姗姗来迟。

SendCloud 由搜狐武汉研发中心孵化的项目,是致力于为开发者提供高质量的触发邮件服务的云端邮件发送平台,为开发者提供便利的 API 接口来调用服务,让邮件准确迅速到达用户收件箱并获得强大的追踪数据[1] 。主要提供两种类型的邮件发送服务,一类是事务性邮件,一类是商务性邮件。

——摘自百度百科

SendCloud 我目前的公司也在使用,而且我也曾写过关于 SendCloud 的堵塞监控脚本:

SendCloud 邮件队列状态和已使用额度的 Python 监控脚本

感兴趣的可以前往一探究竟。这玩意如何牛逼,如何高大上我就不说了。简单的说就是一个邮件代发服务,比上面介绍的自建 API 更加完善,当然使用也更加复杂,希望看完本文的朋友可以成功集成到 WordPress 当中。

三、动手集成

①、注册帐号

如何注册就不赘述了,官网地址:http://sendcloud.sohu.com/

②、域名设置

邮件设置==>域名==>新增发信域名

WordPress集成SendCloud邮件代发,规避SMTP泄漏网站主机真实IP的风险

WordPress集成SendCloud邮件代发,规避SMTP泄漏网站主机真实IP的风险

完成后,进入域名设置,按照提示到你的 DNS 解析控制台新增必须的几个记录:

WordPress集成SendCloud邮件代发,规避SMTP泄漏网站主机真实IP的风险

下面还有一个收信配置,也是一个必配项:

WordPress集成SendCloud邮件代发,规避SMTP泄漏网站主机真实IP的风险

Ps:不过这里有一个技巧,上图可以很明显的看到,我现有的记录值是 2 个,一个 sendcloud,一个是 QQ 的域名邮箱。因为,我不是很想用 Sendloud 的转发功能,而是想继续用之前就配好的 QQ 域名邮箱。这里该如何实现呢?很简单,在 DNS 解析那新建 2 个 MX 记录,然后将 QQ 域名的 MX 优先级设置更小即可!

下面是博客的相关 DNS 设置,不会的可以参考下:

WordPress集成SendCloud邮件代发,规避SMTP泄漏网站主机真实IP的风险

设置好了之后,可以点击右上角的【检测配置】来探测是否生效。这个生效时间长短不一,咱们先继续做后面的设置。

最新补充:其实如果你的网站要用其他域名邮箱或企业邮箱,那么只要在 Sencloud 域名验证后将 MX 记录改为相应的域名邮箱或企业邮箱记录即可!比如博客要用 QQ 的域名邮箱,那么就将上图中的 sendcloud 的 MX 记录删除,只保留 QQ 邮箱的 MX 记录就好了。并不影响 sendcloud 发信,因为这个 MX 记录只是用于收信,而最爽的是 QQ 邮箱那边依然可以用域名邮箱发信!

③、获取 api_user 和 api_key

登录后,就会获得帐号专属的 API_KEY,当然如果你忘记了也可以使用会员首页的重置功能。

接着点击上方的【邮件设置】==>【Api_user】,来创建新的 API_KEY 备用:

WordPress集成SendCloud邮件代发,规避SMTP泄漏网站主机真实IP的风险

④、邮件样本

Ps:目前已和邮件模板合并,请直接跳过这一步!展开

⑤、邮件模板

看到这,估计大伙要骂娘了。。。刚弄了一个邮件样本,又要弄邮件模板!当然,我们是可以直接 post 整个邮件内容到 Sendloud,但是并不是强迫症所向往的,我们追求的是极致,因为使用模板发送只要 post 模板中的几个变量即可。

废话不说,点击【发送相关】==>【邮件模板】===>【创建模板】

和上面的邮件样本一样,将以下代码粘贴到源码模式保存即可:

调用名称推荐使用字母:

WordPress集成SendCloud邮件代发,规避SMTP泄漏网站主机真实IP的风险

这里就不用审核了,但是注意这个模板在邮件样本中必须存在匹配的样本,否则无法发出去。

⑥、PHP 函数

将以上代码添加到主题目录的 functions.php 当中即可,放哪个位置我就不再阐述了,这都搞不清估计也玩不转这种折腾活了。

⑦、系统邮件(可选)

什么叫系统邮件?就是有人在你博客留言了,或者有评论需要审核,WordPress 是可以设置邮件提醒的,这里需要用到 wp_mail 函数。但是我懒得将这个功能也用 Sendloud 来代发,一是麻烦,二是发给管理员的,泄漏 IP 又如何?

所以,之前如果已经弄过 SMTP,可以保留如下代码,让系统继续使用 SMTP 发邮件给管理员:

但是如果之前已经添加过评论回复邮件通知代码的的,请注意注释掉,否则之前的代码可能还会继续工作,泄漏 IP,一般在 functions.php 里面添加如下代码即可:

四、效果预览

目前已经使用了一个多月了,非常稳定。免费用户每天可以发送 200 封邮件,这已经足够应付绝大部分个人博客了!

WordPress集成SendCloud邮件代发,规避SMTP泄漏网站主机真实IP的风险

这篇文章转自博客,原文链接

  • 我的微信
  • weinxin
  • 我的QQ号
  • weinxin
云柯

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: