一次性电子邮件服务的开发和审查
项目介绍
一次性电子邮件是在不想透露我的电子邮件地址时使用的。此外,当在不信任的网站上注册时,也可以用它来保护我的电子邮件免受垃圾邮件的侵扰。我是在进行开发测试时发现了这种服务。为了进行测试,我需要大量的电子邮件,但由于这些电子邮件只能使用一次并且需要丢弃,因此创建多个Gmail帐户会很麻烦。使用这项服务,我可以轻松地通过电子邮件注册和验证,并且在不需要时可以大胆地更换为新的电子邮件地址。
开始原因
我选择一次性电子邮件服务作为个人项目的原因是因为维护成本较低。电子邮件的技术结构已经保持数十年不变。而且我认为未来也不会有太大变化。一旦创建好,就可以持续稳定地实现盈利,因此我认为这是一个适合个人项目主题的选择。
制作过程
-
如果在谷歌上搜索一次性电子邮件服务,你会发现确实有很多不同的服务。由于这是一个常见的服务,我认为一定会有人写过指南。我找到了AHEM服务器的开发者Oren Geva编写的如何设置您自己的一次性电子邮件服务器指南。
-
该指南作者创建的开源AHEM(Ad-Hoc-Email-Server)服务器是一个基于node.js的邮件服务器。我按照指南在AWS Lightsail上构建了邮件服务器,并使用SMTP测试工具验证了其正常运行。
-
我购买了用于邮件服务器的域名。一次性电子邮件服务通常只会使用一天或者很短的时间,因此每年更换一次域名也没有问题。因此,我以每个500日元的价格购买了可以使用一年的域名。一年后,我将需要支付49,000日元才能续订一个域名,但我根本没有续订的打算。
-
由于需要将域名地址连接到邮件服务器,因此我设置了域名的DNS信息。我本来想直接将MX记录连接到服务器地址,但是由于MX记录不允许IP地址,所以我在中间插入了mail.redmail.shop。这样一来,MX记录将指向mail.redmail.shop地址,而该地址将指向服务器地址15.165.14.244。注册后半天后,我在Gmail中成功收到了邮件服务器的电子邮件。
-
需要创建连接邮件服务器和前端的API,AHEM服务器的好处是,只需查看Github的readme文件,就可以看到API已经创建好了。因此,连接邮件服务器就完成了后端的搭建。
-
最后,我使用Next.js构建了Web并完成了开发。由于初始设置已经模板化,并且设计库已经自动连接,因此开发很快就完成了。
使用的技术
- Web:Next.js,Typescript,TailwindCSS
- 多语言化:next-i18next(翻译),使用Google表格管理翻译文本
- 部署:通过Vercel自动部署
- 后端:在AWS Lightsail上使用开源AHEM服务器
- 数据库:MongoDB
好的方面
- 我很喜欢利用开源快速完成后端构建。查看邮件服务器的代码后,发现它比想象中简单,因此我认为下次可能会尝试自己构建邮件服务器。
- 我认为选择的主题很好。开发难度不高,但维护成本低,因此我希望能找到更多这样规模的项目。
在开发过程中遇到的失败
- AHEM服务器没有进行CORS处理,因此我不得不修改代码。我参考了cptkuk91的Node.js基本CORS问题解决方法。
- 在Linux上,端口号1024以下需要管理员权限才能使用。由于我使用的SMTP端口是25,所以我使用管理员权限运行邮件服务器服务。
- AHEM服务器是一个非常古老的项目。因此,在最新的Node.js上无法运行。我安装了Node.js 10.x版本并进行了开发。
- 为了节省成本,我使用了AWS Lightsail而不是AWS EC2。Lightsail的费用基本上是EC2的一半,并且最初可以免费使用3个月。但是Lightsail很难与AWS的其他服务连接,因此我必须通过Let's encrypt手动设置HTTPS证书。虽然Let's encrypt是免费的,但需要每90天更新一次。我计划以后自动更新,并完成了设置。
结束语
我很喜欢这个案例,因为它合理地利用了开源。我没有重新发明轮子,而是充分利用已有的轮子,使得开发仅用了3天就完成了。到目前为止,我只使用Web作为前端,现在我打算尝试制作应用程序。由于服务器已经搭建好,所以我相信制作应用程序会更快。服务可以在https://tmpmail.danver.io上查看。
