自研邮件服务-PMail

2023-07-30 11:59:24 +08:00
 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

5021 次点击
所在节点    分享创造
40 条回复
oszlso
2023-07-30 18:12:41 +08:00
期待传到 dockerhub
deorth
2023-07-30 18:15:37 +08:00
这帖牛的,硬是让我质疑了一下自己到底是 smtp 还是 smpt 。这可是我每天打交道的协议
kebamt
2023-07-30 20:42:52 +08:00
放个图?
jiangwei2222
2023-07-30 20:44:49 +08:00
@oszlso 项目里面有 dockerfile ,你自己编译一个就行
jiangwei2222
2023-07-30 20:49:17 +08:00
@kebamt 添加图片了
justincnn
2023-07-30 21:01:44 +08:00
gmail 保平安
oIMOo
2023-07-30 21:25:49 +08:00
@t41372 #12 本来想把个人邮箱换到这个平台,然而很多功能不齐全,提交给了官方,迟迟没有等来更新。
- 邮件签名放在回复引用的原文之上 —— 目前还是在最下面
- 收到日历邀请的邮件,没有任何选项、也不显示 ics 文件,前者必须去日历里操作,后者比如导出邮件才能看到
等等
Steaven
2023-07-30 21:26:07 +08:00
代码开源协议指定
jiangwei2222
2023-07-30 22:34:18 +08:00
@Steaven 指定了,使用 GPL 开源协议
WhatTheBridgeSay
2023-07-31 05:42:08 +08:00
虽然楼主造轮子的精神可嘉,但是有没有可能,现在你想要实现的收发信功能都是分离开的,IMAP 确实没有什么太好的 self-hosted 解决方案,但是你可以用转发服务啊,发信就更简单了,免费 SMTP/API 不要太多,self-hosted 主要还隔着一个固定 IP 信誉的问题,就单纯你这种用作账号注册用途的话直接用 simplelogin 最简单方便。
jiangwei2222
2023-07-31 09:11:02 +08:00
@WhatTheBridgeSay 我当然知道有转发,而且我用过很长一段时间的转发。真正用了以后会发现,破问题一堆
mengzhuo
2023-07-31 09:14:24 +08:00
邮件服务最大的问题是个人架设的服务器可能是大邮件商的 ip 黑名单了
jiangwei2222
2023-07-31 09:18:05 +08:00
@mengzhuo 我自己有使用 7 年多的 ip ,所有服务商均正常收发,如果没干净 ip 的话,那确实没办法。
julyclyde
2023-07-31 15:54:55 +08:00
@jiangwei2222 首先,把 SMTP 四个字拼对
其次,这玩意和邮件内容的 encoding 有啥关系?
wushenlun
2023-08-01 14:28:14 +08:00
加个读写邮件 api 吧,我想直接对接 chatgpt
hong2351
2023-08-01 21:50:58 +08:00
看起来很不错啊!!
jiangwei2222
2023-08-06 09:57:28 +08:00
@wushenlun 为嘛要加 api 读,你直接读数据库不好吗
nice2cu
2023-08-28 09:28:57 +08:00
请问老哥,收邮件 你是咋弄的 定时去拉吗
jiangwei2222
2023-09-05 12:32:08 +08:00
@nice2cu 这是一个完整的邮箱服务器,拉什么拉?
Gtristan
2023-09-11 18:47:21 +08:00
忘记安装 nginx 了,重新配置 ip 访问的话,需要指向哪个目录?

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

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

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

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

© 2021 V2EX