123下一页
返回列表 发新帖
查看: 5520|回复: 24

Discuz! X3.4 X3.3 X3.2集成SendCloud api邮件代发, 规避smtp泄漏服务器真实IP的风险

[复制链接]

1万

热度

1万

元宝

1万

贡献

金牌草根

发表于 2017-5-15 17:01:34 | 显示全部楼层 |阅读模式
本帖最后由 民审-M 于 2017-5-18 15:58 编辑

       很多站长为了避免被攻击,全站虽然接入了百度云加速、360网站卫士、加速乐、其他cdn等,但是攻击者任然可以通过服务器上的论坛 Discuz 的邮件功能(用来发注册信,取回密码,还有一些论坛服务器的,没办法关闭),你只要随便注册一个用户,或者使用密码取回功能,立刻给你发邮件,邮件头上清清楚楚就是 服务器真实 IP ,一时间DZ smtp发送邮件找回密码、验证密码、重发验证邮件等种种手法都可以通过smtp发信获得站长真实服务器IP,该漏洞一直是dz不公开的密码,站长因此被CC、DD苦不堪言,今天草根吧公布并彻底解决站长发邮件泄露真实服务器IP的问题的两大解决方案供站长使用。

   
一、如何泄漏
看过Discuz!官网的bug反馈区的站长应该已经知道是怎么一回事了。就是当我们的网站通过SMTP代发或者php调用SendMail来发邮件通知注册用户时,我们发送过去的邮件原文中将带有我们主机的真实IP!!如果被人恶意利用,我们的CDN防护都将变得毫无意义(点此查看个人网站暴漏真实IP的危害)!
真实服务器IP.jpg

二、解决方案
①、SendCloud 发信API

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

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

三、动手集成
       ①、注册帐号

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


②、域名设置

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

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

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

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

下面是草根吧的相关DNS设置,不会的可以参考下:

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


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


③、获取api_user和api_key

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

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

④、邮件样本

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


⑤、邮件模板

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

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

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


调用名称推荐使用字母:

[草根吧.] 论坛注册地址,请完成您的注册.jpg

[草根吧] 取回密码说明.jpg

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

⑥、PHP函数

唉,草根吧折腾一上午,分享出来几分钟!代码已经整合到提供的附件的\source\class\SendCloud.php


⑦、系统邮件(可选)

什么叫系统邮件?就是开启后系统会发一条注册的地址到用户的邮箱,从该地址链接过来的允许注册,同时建议UCenter中开启一个邮箱只允许注册一个帐户 注意:只有在站长 - 邮件设置中完成邮件设置,确保邮件能发送成功下可以开启该功能。但是我懒得将这个功能也用Sendloud来代发,一是麻烦,二是发给管理员的,泄漏IP又如何?

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


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

  1. //移除原有的邮件通知动作钩子(一般都是用的comment_mail_notify这个函数,自己注意辨别)
  2. remove_action('comment_post', 'comment_mail_notify');
复制代码

四、效果预览

目前草根吧已经使用了一段时间了,非常稳定。免费用户每天可以发送200封邮件,这已经足够应付绝大部分个人论坛了,如果不够用,其实安装应用中心一个免费插件:SendCloud邮件发送 2.0.3(http://addon.discuz.com/?@sendcloud.plugin)会自动分配一个日发送1000封的免费账号 !


.jpg

Ps:如图,最看不起那些乱填邮件的人!要么就灌水,要么就是找茬的。而且经常对SendCloud请求一些无效邮件,将会降低帐号的信誉度,影响以后的发送成功率。

很多人看到本文肯定会望而却步,因为确实弄起来比较复杂,也比较麻烦!嫌麻烦,下面已经给你备好懒人包和安装使用文档,按需选择!!!

API接口调用包(适用于Discuz X3.2 X3.3):

游客,如果您要查看本帖隐藏内容请回复

----------------------------------------------------------------------------------------------------------------------------

解决方案②、SendCloud 通过SMTP接入

使用 SMTP 协议传输数据到 SendCloud 的邮件服务器 ( smtp.sendcloud.net:25 smtpcloud.sohu.com:25 )

  • 用户可以编写程序连接邮件服务器, 发送邮件
  • 用户可以配置客户端连接邮件服务器, 只需修改用户名, 密码和 SMTP 配置即可

Discuz!后台配置如下:
后台——站长——邮件设置——设置:
选择:通过 SOCKET 连接 SMTP 服务器发送(支持 ESMTP 验证)
SMTP 服务器:smtp.sendcloud.net     或      smtpcloud.sohu.com
端口:25
验证:勾选
发信人邮件地址:admin@xxx.com (你的管理员邮箱)
SMTP 身份验证用户名:API_USER
SMTP 身份验证密码:API_KEY

然后测试即可,直接用SendCloud 的smtp接入,而发送云的SMTP隐藏了真实服务器IP了。

后记:
\uc_client\lib\sendmail.inc.php
\uc_server\lib\sendmail.inc.php

\uc_client\control\mail.php
\uc_server\control\mail.php

发信模板:
\source\language\lang_email.php
\source\language\lang_spacecp.php

感谢 @sakura丶小樱@繁星夜空下 提供指导支持!

本文来源于网友学习研究交流 www.caogen8.co,请以学习研究交流为主。
如果您没有贡献积分,可以直接免费领取,免费领取
如果你需要加入本学习研究交流,请以学习研究交流为目的,免责声明
如果找不到您要的资源,请搜索一下,点击搜索

1万

热度

1万

元宝

1万

贡献

金牌草根

 楼主| 发表于 2017-5-15 18:19:29 | 显示全部楼层
取回密码说明模板:
  1. <p><span style="color: rgb(0, 0, 0); font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; font-size: 14px; line-height: 23.8px;">取回密码说明</span></p>

  2. <table align="center" cellpadding="0" style="color: rgb(0, 0, 0); font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; font-size: 14px; line-height: 23.8px;" width="800">
  3.         <tbody>
  4.                 <tr>
  5.                         <th style="height: 25px; color: rgb(255, 255, 255); line-height: 25px; padding: 15px 35px; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: rgb(70, 126, 195); border-radius: 5px 5px 0px 0px; background: rgb(81, 139, 203);" valign="middle"><span style="color: rgb(255, 255, 255); font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; font-size: 14px; font-weight: bold; line-height: 25px; background-color: rgb(81, 139, 203);">草根吧</span></th>
  6.                 </tr>
  7.                 <tr>
  8.                         <td style="font-size: 12px; -webkit-font-smoothing: subpixel-antialiased;">
  9.                         <div style="padding: 25px 35px 40px;">
  10.                         <p style="line-height: 20.4px;"><font color="#333333" face="sans-serif, Arial, Verdana, Trebuchet MS"><span style="font-size: 13px; line-height: 20.8px;">这封信是由 草根吧 发送的。</span></font></p>

  11.                         <p style="line-height: 20.4px;"><font color="#333333" face="sans-serif, Arial, Verdana, Trebuchet MS"><span style="font-size: 13px; line-height: 20.8px;">您收到这封邮件,是由于这个邮箱地址在 草根吧 被登记为用户邮箱, 且该用户请求使用 Email 密码重置功能所致。</span></font></p>

  12.                         <p style="line-height: 20.4px;"><font color="#333333" face="sans-serif, Arial, Verdana, Trebuchet MS"><span style="font-size: 13px; line-height: 20.8px;">----------------------------------------------------------------------<br />
  13.                         重要!<br />
  14.                         ----------------------------------------------------------------------</span></font></p>

  15.                         <p style="line-height: 20.4px;"><font color="#333333" face="sans-serif, Arial, Verdana, Trebuchet MS"><span style="font-size: 13px; line-height: 20.8px;">如果您没有提交密码重置的请求或不是 草根吧 的注册用户,请立即忽略 并删除这封邮件。只有在您确认需要重置密码的情况下,才需要继续阅读下面的 内容。</span></font></p>

  16.                         <p style="line-height: 20.4px;"><font color="#333333" face="sans-serif, Arial, Verdana, Trebuchet MS"><span style="font-size: 13px; line-height: 20.8px;">----------------------------------------------------------------------<br />
  17.                         密码重置说明<br />
  18.                         ----------------------------------------------------------------------</span></font></p>

  19.                         <p style="line-height: 20.4px;"> </p>
  20.                         <font color="#333333" face="sans-serif, Arial, Verdana, Trebuchet MS"><span style="font-size: 13px; line-height: 20.8px;">您只需在提交请求后的三天内,通过点击下面的链接重置您的密码:<br />
  21.                         <a href="%url%">%url%</a><br />
  22.                         (如果上面不是链接形式,请将该地址手工粘贴到浏览器地址栏再访问)</span></font>

  23.                         <p style="line-height: 20.4px;"> </p>

  24.                         <p style="line-height: 20.4px; color: rgb(0, 0, 0); font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; font-size: 12px;"><font color="#333333" face="sans-serif, Arial, Verdana, Trebuchet MS"><span style="font-size: 13px; line-height: 20.8px;">在上面的链接所打开的页面中输入新的密码后提交,您即可使用新的密码登录网站了。您可以在用户控制面板中随时修改您的密码。</span></font></p>

  25.                         <p style="line-height: 20.4px; color: rgb(0, 0, 0); font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; font-size: 12px;"> </p>

  26.                         <p style="line-height: 20.4px; color: rgb(0, 0, 0); font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; font-size: 12px;"><font color="#333333" face="sans-serif, Arial, Verdana, Trebuchet MS"><span style="font-size: 13px; line-height: 20.8px;">此致</span></font></p>

  27.                         <p style="line-height: 20.4px; color: rgb(0, 0, 0); font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; font-size: 12px;"><font color="#333333" face="sans-serif, Arial, Verdana, Trebuchet MS"><span style="font-size: 13px; line-height: 20.8px;">草根吧 管理团队. <a href="https://www.cgzz8.cn/" style="outline: none; cursor: pointer;" target="_blank">http://www.c<wbr />aogen8.co/</a></span></font></p>
  28.                         </div>
  29.                         </td>
  30.                 </tr>
  31.         </tbody>
  32. </table>
复制代码


论坛注册地址模板:
  1. <p><span style="color: rgb(0, 0, 0); font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; font-size: 14px; line-height: 23.8px;">取回密码说明</span></p>

  2. <table align="center" cellpadding="0" style="color: rgb(0, 0, 0); font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; font-size: 14px; line-height: 23.8px;" width="800">
  3.         <tbody>
  4.                 <tr>
  5.                         <th style="height: 25px; color: rgb(255, 255, 255); line-height: 25px; padding: 15px 35px; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: rgb(70, 126, 195); border-radius: 5px 5px 0px 0px; background: rgb(81, 139, 203);" valign="middle"><span style="color: rgb(255, 255, 255); font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; font-size: 14px; font-weight: bold; line-height: 25px; background-color: rgb(81, 139, 203);">草根吧</span></th>
  6.                 </tr>
  7.                 <tr>
  8.                         <td style="font-size: 12px; -webkit-font-smoothing: subpixel-antialiased;">
  9.                         <div style="padding: 25px 35px 40px;">
  10.                         <p style="line-height: 20.4px;"><font color="#333333" face="sans-serif, Arial, Verdana, Trebuchet MS"><span style="font-size: 13px; line-height: 20.8px;">这封信是由 草根吧 发送的。</span></font></p>

  11.                         <p style="line-height: 20.4px;"><font color="#333333" face="sans-serif, Arial, Verdana, Trebuchet MS"><span style="font-size: 13px; line-height: 20.8px;">您收到这封邮件,是由于这个邮箱地址在 草根吧 被登记为用户邮箱, 且该用户请求使用 Email 密码重置功能所致。</span></font></p>

  12.                         <p style="line-height: 20.4px;"><font color="#333333" face="sans-serif, Arial, Verdana, Trebuchet MS"><span style="font-size: 13px; line-height: 20.8px;">----------------------------------------------------------------------<br />
  13.                         重要!<br />
  14.                         ----------------------------------------------------------------------</span></font></p>

  15.                         <p style="line-height: 20.4px;"><font color="#333333" face="sans-serif, Arial, Verdana, Trebuchet MS"><span style="font-size: 13px; line-height: 20.8px;">如果您没有提交密码重置的请求或不是 草根吧 的注册用户,请立即忽略 并删除这封邮件。只有在您确认需要重置密码的情况下,才需要继续阅读下面的 内容。</span></font></p>

  16.                         <p style="line-height: 20.4px;"><font color="#333333" face="sans-serif, Arial, Verdana, Trebuchet MS"><span style="font-size: 13px; line-height: 20.8px;">----------------------------------------------------------------------<br />
  17.                         密码重置说明<br />
  18.                         ----------------------------------------------------------------------</span></font></p>

  19.                         <p style="line-height: 20.4px;"> </p>
  20.                         <font color="#333333" face="sans-serif, Arial, Verdana, Trebuchet MS"><span style="font-size: 13px; line-height: 20.8px;">您只需在提交请求后的三天内,通过点击下面的链接重置您的密码:<br />
  21.                         <a href="%url%">%url%</a><br />
  22.                         (如果上面不是链接形式,请将该地址手工粘贴到浏览器地址栏再访问)</span></font>

  23.                         <p style="line-height: 20.4px;"> </p>

  24.                         <p style="line-height: 20.4px; color: rgb(0, 0, 0); font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; font-size: 12px;"><font color="#333333" face="sans-serif, Arial, Verdana, Trebuchet MS"><span style="font-size: 13px; line-height: 20.8px;">在上面的链接所打开的页面中输入新的密码后提交,您即可使用新的密码登录网站了。您可以在用户控制面板中随时修改您的密码。</span></font></p>

  25.                         <p style="line-height: 20.4px; color: rgb(0, 0, 0); font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; font-size: 12px;"> </p>

  26.                         <p style="line-height: 20.4px; color: rgb(0, 0, 0); font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; font-size: 12px;"><font color="#333333" face="sans-serif, Arial, Verdana, Trebuchet MS"><span style="font-size: 13px; line-height: 20.8px;">此致</span></font></p>

  27.                         <p style="line-height: 20.4px; color: rgb(0, 0, 0); font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; font-size: 12px;"><font color="#333333" face="sans-serif, Arial, Verdana, Trebuchet MS"><span style="font-size: 13px; line-height: 20.8px;">草根吧 管理团队. <a href="https://www.cgzz8.cn/" style="outline: none; cursor: pointer;" target="_blank">http://www.c<wbr />aogen8.co/</a></span></font></p>
  28.                         </div>
  29.                         </td>
  30.                 </tr>
  31.         </tbody>
  32. </table>
复制代码


本文来源于网友学习研究交流 www.caogen8.co,请以学习研究交流为主。
如果您没有贡献积分,可以直接免费领取,免费领取
如果你需要加入本学习研究交流,请以学习研究交流为目的,免责声明
如果找不到您要的资源,请搜索一下,点击搜索

1

热度

5

元宝

0

贡献

步入草根

发表于 2017-6-27 17:31:42 | 显示全部楼层
看看看看看看

5

热度

25

元宝

0

贡献

步入草根

发表于 2017-7-2 12:00:54 | 显示全部楼层
感谢分享

12

热度

24

元宝

0

贡献

步入草根

发表于 2017-7-26 21:58:39 | 显示全部楼层
Discuz! X3.4 X3.3 X3.2集成SendCloud api邮件代发

13

热度

52

元宝

9

贡献

步入草根

发表于 2017-8-8 11:52:08 | 显示全部楼层
这个不错

20

热度

699

元宝

105

贡献

禁止访问

活跃会员灌水之王论坛元老

发表于 2017-8-17 03:52:11 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

5

热度

8

元宝

0

贡献

步入草根

发表于 2017-8-21 03:26:33 | 显示全部楼层
非常感谢

4

热度

11

元宝

2

贡献

步入草根

发表于 2017-9-4 19:51:49 | 显示全部楼层
谢谢分享

120

热度

399

元宝

47

贡献

终身ViP

发表于 2017-10-5 16:38:37 | 显示全部楼层
谢谢,很需要啊!!!
下一页 »
123下一页
返回列表 发新帖
 懒得打字嘛,点击右侧快捷回复【最新发布】   【赞助草根吧享更多权益】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

收藏帖子 返回列表 搜索

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

小黑屋|手机版|草根吧