自研邮件服务-PMail

284 天前
 jiangwei2222

由于主流的域名邮箱服务逐步停止服务,比如 qq 邮箱、outlook 邮箱。剩下的基本上都是一些企业邮箱,使用一堆限制,因此开始自建。

刚开始我使用的是 Poste ,使用 docker 部署,但是 docker pull 一拉,我丢,几个 G 的磁盘空间没了。我自己用的服务器只有 10G 磁盘空间,根本装不下这玩意。于是我尝试精简一下,结果发现复杂得要死,根本没法动。

然后我又找了好几个邮箱服务程序,结果都写得罗里吧嗦的,依赖一堆中间件,空间、内存占用一个比一个高。我就奇了怪了,邮件这么简单一个协议,怎么就被写得这么复杂了。

于是自己动手,使用 Golang 自己手撸了一个邮件服务。后端所有依赖都尽可能的使用 Go 官方的,前端使用了 vue3+element 。

优势:

1 、部署简单 使用 Go 语言编写,支持跨平台,编译后单文件运行,单文件包含完整的前后端代码。修改配置文件,运行即可。仅依赖 MySQL ,所有数据均存储在 MySQL 中。

2 、资源占用极小 编译后二进制文件仅 15MB ,运行过程中占用内存 10M 以内。

3 、安全方面 支持 dkim 、spf 校验。正确配置的情况下,Email Test 得分 10 分。

4 、邮箱前缀 既然是域名邮箱,前缀就不重要了,收发邮件均可使用任意前缀。

5 、插件支持 关键位置都留了插件 hook 点,你可以根据需要开发插件。目前写了一个微信 push 插件,收信后通过微信公众号 api 推送

其他

目前我已经用了一个多月,用来收发验证码,国内各种银行、各个 app 的、海外各种 app 的,均正常使用。

收发邮件是否成功,是否进垃圾箱与邮箱程序无关,在正确配置 dkim 、spf 后,只与你的 ip 、域名有关。我自己服务器是搬瓦工美西机房的。这个 IP 我自己已经用了 7 年多了,收发邮件没任何拦截。拿主流邮箱( gmail 、qq 、163 、outlook 、阿里企业邮箱、飞书邮箱)测试过,均正常收发。

目前差个 logo ,另外前端界面写得很差,欢迎有兴趣的小伙伴提 PR

项目地址: https://github.com/Jinnrry/PMail

4551 次点击
所在节点    分享创造
40 条回复
jiangwei2222
284 天前
PS:顺带吐槽一下,Golang 原生的 SMPT 协议写得太他妈粗糙了。简直坑死人。最基本的,竟然只支持很少几种编码方式,gbk 、gb2312 等中文编码均不支持。另外其他坑也一堆。

我目测,这个包,除了我在用,应该这世界上没有第二个人在用他了。我本来想把我改了后的代码 push 给 go 官方的。但是 go 的提交流程太繁琐了,最后放弃了,直接 copy go 源码到项目里面改了
amlee
284 天前
好东西
kaikai5601
284 天前
由于主流的域名邮箱服务逐步停止服务,比如 qq 邮箱、outlook 邮箱

哪里得出的结论
Gtristan
284 天前
好东西,晚点回去试试,一直在鼓捣这方面,收了
Champa9ne
284 天前
iredmail 不错,也是开源支持自部署的
lhx2008
284 天前
为何要改 go 代码,再弄出一个 SMPT 库不挺好
akira
284 天前
确实是,之前用过 一些 自建邮箱,部署维护起来都好麻烦
Yien
284 天前
Postal 你值得拥有
ashong
284 天前
看起来比以往的简单, 希望继续完善用户管理, 多一个选择总是好的👍
StuPYX
284 天前
@kaikai5601 #3 他应该说的是 QQ 域名邮箱,和 Outlook 自定义域名邮箱,QQ 域名邮箱确实早停止新增域名和邮箱,Outlook 不知道
Ccf
284 天前
已经 star ,等完善
t41372
284 天前
Skiff 还可以用免费的域名邮箱,不过因为是端到端加密的,所以没有 smpt 。不过网页版很好用,各个平台也有开发客户端,国内也可以用。

https://www.v2ex.com/t/956615
mschultz
284 天前
@kaikai5601 #3
@StuPYX #10
https://support.microsoft.com/en-us/office/changes-to-microsoft-365-email-features-and-storage-e888d746-61e5-49e3-9bd1-94b88e9be988

> Starting November 30, 2023, Microsoft 365 Personal or Microsoft 365 Family subscribers will no longer be able to create a new email address for any personalized domain associated with their Outlook.com mailbox.
xuc
284 天前
@StuPYX 从 2023 年 11 月 30 日开始,Microsoft 365 个人版 或 Microsoft 365 家庭版 订阅者将无法再为其 Outlook.com 邮箱关联的任何个性化域创建新的电子邮件地址。( PS:商业版订阅还有)
vsean
284 天前
jiangwei2222
284 天前
@ashong 我刚开始准备写多用户管理的,我表都是按多用户设计的。但是后面感觉工作量太大了,就没继续写多用户功能了。先写个单用户用着吧。
hbytw1
284 天前
已经 star ,等完善
jiangwei2222
284 天前
@lhx2008 因为我以前没用过,刚开始觉得官方库应该没啥问题,结果越写坑越多。再到后面想换也换不了了,所有方法都是按官方库的设计写的。就只能 copy 一份自己改了
yaott2020
284 天前
楼主 webui 放个图?
xiangyuecn
284 天前
收藏,早些年也爱折腾自建邮件服务器,.Net Framework 自带的 smtp 也有字符编码问题,陈年 bug 后面也是提交了一个代码给他们修复了,感觉这种底层功能压根没多少人会去直接调用😂

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/960934

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX