民审-M

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

作者:民审-M   发布时间:2017-05-15 17:01   回复数:24   浏览数:5508
民审-M
550824民审-M金牌草根
热门 2017-05-15 17:01:34
550824 热门 2017-05-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
<p align="left">既然不能使用SMTP代发,又不能使用 SendMail,那就只有一个办法了:用第三方API代发邮件即可,就算暴露IP也是暴露了邮件服务器的IP,和我们的小站没有任何关系。</p><p align="left">感兴趣的可以前往SendCloud官网一探究竟。这玩意如何牛逼,如何高大上我就不说了。简单的说就是一个邮件代发服务,比上面介绍的自建API更加完善,当然使用也更加复杂,希望看完本文的朋友可以成功集成到Discuz!当中。</p>三、动手集成
      ①、注册帐号<p align="left">如何注册就不赘述了,官网地址:http://sendcloud.sohu.com/</p>
<p align="left">②、域名设置</p><p align="left">邮件设置==>域名==>新增发信域名</p><p align="left"></p><p align="left"></p><p align="left">完成后,进入域名设置,按照提示到你的DNS解析控制台新增必须的几个记录:</p><p align="left"></p><p align="left">下面还有一个收信配置,也是一个必配项:</p><p align="left"></p><p align="left">Ps:不过这里有一个技巧,上图可以很明显的看到,我现有的记录值是2个,一个sendcloud,一个是QQ的域名邮箱。因为,我不是很想用Sendloud的转发功能,而是想继续用之前就配好的QQ域名邮箱。这里该如何实现呢?很简单,在DNS解析那新建2个MX记录,然后将QQ域名的MX优先级设置更小即可!</p><p align="left">下面是草根吧的相关DNS设置,不会的可以参考下:</p><p align="left"></p><p align="left">设置好了之后,可以点击右上角的【检测配置】来探测是否生效。这个生效时间长短不一,咱们先继续做后面的设置。</p>
<p align="left">最新补充:其实如果你的网站要用其他域名邮箱或企业邮箱,那么只要在Sencloud域名验证后将MX记录改为相应的域名邮箱或企业邮箱记录即可!比如草根吧要用QQ的域名邮箱,那么就将上图中的sendcloud的MX记录删除,只保留QQ邮箱的MX记录就好了。并不影响 sendcloud 发信,因为这个MX记录只是用于收信,而最爽的是QQ邮箱那边依然可以用域名邮箱发信!</p>
③、获取api_user和api_key
<p align="left">登录后,就会获得帐号专属的API_KEY,当然如果你忘记了也可以使用会员首页的重置功能。</p><p align="left">接着点击上方的【邮件设置】==>【Api_user】,来创建新的API_KEY备用:</p><p align="left"></p>④、邮件样本<p align="left">Ps:目前已和邮件模板合并,请直接跳过这一步!展开</p>
⑤、邮件模板<p align="left">看到这,估计大伙要骂娘了。。。刚弄了一个邮件样本,又要弄邮件模板!当然,我们是可以直接post整个邮件内容到Sendloud,但是并不是强迫症所向往的,我们追求的是极致,因为使用模板发送只要post模板中的几个变量即可。</p><p align="left">废话不说,点击【发送相关】==>【邮件模板】===>【创建模板】</p><p align="left">和上面的邮件样本一样,将以下代码粘贴到源码模式保存即可:</p>
<p align="left">调用名称推荐使用字母:</p><p align="left">

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

</p><p align="left">

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

</p><p align="left">这里就不用审核了,但是注意这个模板在邮件样本中必须存在匹配的样本,否则无法发出去。</p>⑥、PHP函数<p align="left">唉,草根吧折腾一上午,分享出来几分钟!代码已经整合到提供的附件的\source\class\SendCloud.php</p>
⑦、系统邮件(可选)[p=null, 2, left]什么叫系统邮件?就是开启后系统会发一条注册的地址到用户的邮箱,从该地址链接过来的允许注册,同时建议UCenter中开启一个邮箱只允许注册一个帐户 注意:只有在站长 - 邮件设置中完成邮件设置,确保邮件能发送成功下可以开启该功能。但是我懒得将这个功能也用Sendloud来代发,一是麻烦,二是发给管理员的,泄漏IP又如何?[/p]<p align="left">所以,之前如果已经弄过SMTP,可以保留如下代码,让系统继续使用SMTP发邮件给管理员:</p>
<p align="left">但是如果之前已经添加过评论回复邮件通知代码的的,请注意注释掉,否则之前的代码可能还会继续工作,泄漏IP,一般在functions.php里面添加如下代码即可:</p>//移除原有的邮件通知动作钩子(一般都是用的comment_mail_notify这个函数,自己注意辨别)
remove_action('comment_post', 'comment_mail_notify');
四、效果预览<p align="left">目前草根吧已经使用了一段时间了,非常稳定。免费用户每天可以发送200封邮件,这已经足够应付绝大部分个人论坛了,如果不够用,其实安装应用中心一个免费插件:SendCloud邮件发送 2.0.3(http://addon.discuz.com/?@sendcloud.plugin)会自动分配一个日发送1000封的免费账号 !</p><p align="left">[color=rgb(47, 136, 154)]
</p><p align="left">[color=rgb(47, 136, 154)]

图片:.jpg

</p><p align="left">Ps:如图,最看不起那些乱填邮件的人!要么就灌水,要么就是找茬的。而且经常对SendCloud请求一些无效邮件,将会降低帐号的信誉度,影响以后的发送成功率。</p><p align="left">很多人看到本文肯定会望而却步,因为确实弄起来比较复杂,也比较麻烦!嫌麻烦,下面已经给你备好懒人包和安装使用文档,按需选择!!!</p><p align="left">API接口调用包(适用于Discuz X3.2 X3.3):
本部分内容设定了隐藏,需要回复后才能看到
</p><p align="left">----------------------------------------------------------------------------------------------------------------------------</p>[color=rgb(255, 0, 0)]解决方案②、SendCloud 通过SMTP接入

[color=rgb(255, 0, 0)]
[p=20, null, left]使用 SMTP 协议传输数据到 SendCloud 的邮件服务器 ( smtp.sendcloud.net:25 smtpcloud.sohu.com:25 )[/p]

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

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

[color=rgb(255, 0, 0)]然后测试即可,直接用SendCloud 的smtp接入,而发送云的SMTP隐藏了真实服务器IP了。

[color=rgb(255, 0, 0)]后记:
\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丶小樱@繁星夜空下 提供指导支持!

民审-M
沙发民审-M金牌草根 2017-05-15 18:19
取回密码说明模板:
&lt;p&gt;&lt;span style=\&quot;color: rgb(0, 0, 0); font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; font-size: 14px; line-height: 23.8px;\&quot;&gt;取回密码说明&lt;/span&gt;&lt;/p&gt;

&lt;table align=\&quot;center\&quot; cellpadding=\&quot;0\&quot; style=\&quot;color: rgb(0, 0, 0); font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; font-size: 14px; line-height: 23.8px;\&quot; width=\&quot;800\&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th style=\&quot;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);\&quot; valign=\&quot;middle\&quot;&gt;&lt;span style=\&quot;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);\&quot;&gt;草根吧&lt;/span&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=\&quot;font-size: 12px; -webkit-font-smoothing: subpixel-antialiased;\&quot;&gt;
&lt;div style=\&quot;padding: 25px 35px 40px;\&quot;&gt;
&lt;p style=\&quot;line-height: 20.4px;\&quot;&gt;&lt;font color=\&quot;#333333\&quot; face=\&quot;sans-serif, Arial, Verdana, Trebuchet MS\&quot;&gt;&lt;span style=\&quot;font-size: 13px; line-height: 20.8px;\&quot;&gt;这封信是由 草根吧 发送的。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

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

&lt;p style=\&quot;line-height: 20.4px;\&quot;&gt;&lt;font color=\&quot;#333333\&quot; face=\&quot;sans-serif, Arial, Verdana, Trebuchet MS\&quot;&gt;&lt;span style=\&quot;font-size: 13px; line-height: 20.8px;\&quot;&gt;----------------------------------------------------------------------&lt;br /&gt;
重要!&lt;br /&gt;
----------------------------------------------------------------------&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

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

&lt;p style=\&quot;line-height: 20.4px;\&quot;&gt;&lt;font color=\&quot;#333333\&quot; face=\&quot;sans-serif, Arial, Verdana, Trebuchet MS\&quot;&gt;&lt;span style=\&quot;font-size: 13px; line-height: 20.8px;\&quot;&gt;----------------------------------------------------------------------&lt;br /&gt;
密码重置说明&lt;br /&gt;
----------------------------------------------------------------------&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

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

&lt;p style=\&quot;line-height: 20.4px;\&quot;&gt; &lt;/p&gt;

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

&lt;p style=\&quot;line-height: 20.4px; color: rgb(0, 0, 0); font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; font-size: 12px;\&quot;&gt; &lt;/p&gt;

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

&lt;p style=\&quot;line-height: 20.4px; color: rgb(0, 0, 0); font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; font-size: 12px;\&quot;&gt;&lt;font color=\&quot;#333333\&quot; face=\&quot;sans-serif, Arial, Verdana, Trebuchet MS\&quot;&gt;&lt;span style=\&quot;font-size: 13px; line-height: 20.8px;\&quot;&gt;草根吧 管理团队. &lt;a href=\&quot;https://www.cgzz8.cn/\&quot; style=\&quot;outline: none; cursor: pointer;\&quot; target=\&quot;_blank\&quot;&gt;http://www.c&lt;wbr /&gt;aogen8.co/&lt;/a&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;


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

&lt;table align=\&quot;center\&quot; cellpadding=\&quot;0\&quot; style=\&quot;color: rgb(0, 0, 0); font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; font-size: 14px; line-height: 23.8px;\&quot; width=\&quot;800\&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th style=\&quot;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);\&quot; valign=\&quot;middle\&quot;&gt;&lt;span style=\&quot;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);\&quot;&gt;草根吧&lt;/span&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=\&quot;font-size: 12px; -webkit-font-smoothing: subpixel-antialiased;\&quot;&gt;
&lt;div style=\&quot;padding: 25px 35px 40px;\&quot;&gt;
&lt;p style=\&quot;line-height: 20.4px;\&quot;&gt;&lt;font color=\&quot;#333333\&quot; face=\&quot;sans-serif, Arial, Verdana, Trebuchet MS\&quot;&gt;&lt;span style=\&quot;font-size: 13px; line-height: 20.8px;\&quot;&gt;这封信是由 草根吧 发送的。&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

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

&lt;p style=\&quot;line-height: 20.4px;\&quot;&gt;&lt;font color=\&quot;#333333\&quot; face=\&quot;sans-serif, Arial, Verdana, Trebuchet MS\&quot;&gt;&lt;span style=\&quot;font-size: 13px; line-height: 20.8px;\&quot;&gt;----------------------------------------------------------------------&lt;br /&gt;
重要!&lt;br /&gt;
----------------------------------------------------------------------&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

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

&lt;p style=\&quot;line-height: 20.4px;\&quot;&gt;&lt;font color=\&quot;#333333\&quot; face=\&quot;sans-serif, Arial, Verdana, Trebuchet MS\&quot;&gt;&lt;span style=\&quot;font-size: 13px; line-height: 20.8px;\&quot;&gt;----------------------------------------------------------------------&lt;br /&gt;
密码重置说明&lt;br /&gt;
----------------------------------------------------------------------&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;

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

&lt;p style=\&quot;line-height: 20.4px;\&quot;&gt; &lt;/p&gt;

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

&lt;p style=\&quot;line-height: 20.4px; color: rgb(0, 0, 0); font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; font-size: 12px;\&quot;&gt; &lt;/p&gt;

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

&lt;p style=\&quot;line-height: 20.4px; color: rgb(0, 0, 0); font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; font-size: 12px;\&quot;&gt;&lt;font color=\&quot;#333333\&quot; face=\&quot;sans-serif, Arial, Verdana, Trebuchet MS\&quot;&gt;&lt;span style=\&quot;font-size: 13px; line-height: 20.8px;\&quot;&gt;草根吧 管理团队. &lt;a href=\&quot;https://www.cgzz8.cn/\&quot; style=\&quot;outline: none; cursor: pointer;\&quot; target=\&quot;_blank\&quot;&gt;http://www.c&lt;wbr /&gt;aogen8.co/&lt;/a&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;


老公。
板凳老公。步入草根 2017-06-27 17:31
看看看看看看
Small草根
地板Small草根步入草根 2017-07-02 12:00
感谢分享
弈丨天
4楼弈丨天步入草根 2017-07-26 21:58
Discuz! X3.4 X3.3 X3.2集成SendCloud api邮件代发
RoNg
5楼RoNg步入草根 2017-08-08 11:52
这个不错
周天宇
6楼周天宇禁止发言 2017-08-17 03:52
用户被禁言,该主题自动屏蔽!
大埔人
7楼大埔人步入草根 2017-08-21 03:26
非常感谢
togke
8楼togke步入草根 2017-09-04 19:51
谢谢分享
绝望的蜗牛
9楼绝望的蜗牛终身ViP 2017-10-05 16:38
谢谢,很需要啊!!!
随时
10楼随时步入草根 2017-12-25 13:18
支持下,谢谢分享
心有所守
11楼心有所守步入草根 2018-02-21 23:18
暗示的发生大幅
心有所守
12楼心有所守步入草根 2018-02-21 23:19
暗示的发生大幅
心有所守
13楼心有所守步入草根 2018-02-21 23:19
暗示的发生大幅
心有所守
14楼心有所守步入草根 2018-02-21 23:19
暗示的发生大幅
游客
登录后才可以回帖,登录 或者 注册