我是如何使用Serverless降低团队支出的

作为一个暂时还没有盈利的团队来说,能有很多台独立的网站服务器已经比较好了,可是,最近有人莫名其妙对我们的网站DDoS,在进过与团队队长协商后,我们决定将网站迁往Cloudflare。但是迁完没多久,便又出现了针对源站的DDoS,这让我们很头疼,明明迁了CF,换了IP,为什么仍然有人DDos呢?于是,我们从邮件等好几个方面入手封堵IP泄露,今天就是说说如何在邮件发送方面既做到隐藏原站IP又能节约成本。

0x01 想到Idea

在漏洞开始封堵的时候,我就想团队队长提议使用独立的邮件服务器,就能防止原站IP泄露。但是一台服务器的价格太高(在现有已经有多台服务器,但不是我们这个项目组的,所以也用不了),而且可用性太差:一旦邮件服务器被DDoS,所有邮件都发不出去.所以便准备使用Serverless

0x02 选择

Serverless我选的是腾讯云的SCF,因为我们服务器就是腾讯云的,也懒得多个平台去跑,于是就在SCF上使用PHPMailer创建了一个邮件发送服务.

0x03 困难

因为我们项目组负责的是一个论坛的建设,而我们选用的是Flarum论坛(不知道的请自行百度),但是Flarum论坛并没有对二开开发者很友好(默认邮件发送模块SwiftMailer仅支持SMTP,SES,Mailgun),于是,我就想了一个新办法,就是改Hosts文件,使得Mailgun的API域名指向127.0.0.1,然后在本地使用团队CA为网站颁发证书.

但是接着,我又发现一个问题.Flarum传输过来的是MIME格式(就是发送邮件的原文格式),无法直接发送.于是,我便使用了MIME解析器先将其解析为可读格式,然后再发给SCF进行发送

0x04进阶

为了提高邮件发送稳定性(不受腾讯云各种网络维护)的影响,我将这个函数部署到了5个不同的地域,使用Hostname进行区分,然后在后端实行软件负载均衡(就是记录下上一次发邮件所用的服务器,这一次用列表中的下一个),增加邮件发送稳定性.

附:使用SCF之后的邮件原文

Received: from out208-12.dm.aliyun.com (unknown [***.***.***.***])
	by newmx40.qq.com (NewMx) with SMTP id 
	for <!!!隐藏了!!!>; Tue, 16 Apr 2019 19:06:21 +0800
X-QQ-FEAT: <!!!隐藏了!!!>
X-QQ-MAILINFO: <!!!隐藏了!!!>
X-QQ-mid: mx40t155541278**********
X-QQ-ORGSender: [email protected]
X-EnvId: 1787028338**********
Received: from out01-d9f4.shanghai.china.mailpushserivce.*****.***(115.159.***.***)
          by smtpdm.aliyun.com(127.0.0.1);
          Tue, 16 Apr 2019 19:06:21 +0800
Date: Tue, 16 Apr 2019 11:06:21 +0000
X-BCMailer-Region: ShangHai
X-SenderHostName: d62d4af92dc69fb44fa3396ed29a3eac6020342b18c5771ebbd5bf882c893561
To: receiver <!!!隐藏了!!!>
From:<!!!隐藏了!!!> <!!!隐藏了!!!>
Subject: <!!!隐藏了!!!>
Message-ID: <********************@out01-d9f4.shanghai.china.mailpushserivce.*****.***>
X-Mailer: BCMailer Proxy v1.0 [Serverless Cloud Function Version]
MIME-Version: 1.0
Content-Type: text/html; charset=UTF-8

Test Message!

猜你喜欢

转载自www.cnblogs.com/xieyi1393/p/serverless-with-email-and-moneyless.html