以前在这里推广过,不好意思打扰大家。主要是差 92 个 star 到 1k ,想要几个 star
专为个人使用场景设计,目前绝对是全网你能找到的,资源占用最少、部署最方便的邮箱服务器。除此之外,自动 SSL 、微信 Push ,应该也是全网独此一家。
整个项目二进制文件仅 15M ,运行内存仅 1M 。0.5 核 64M 的垃圾 VPS 也能流畅运行!
相比于 3 个月前,目前项目基本上成型了,支持了 pop3 和 smtp 协议,可以使用 GMail 之类的第三方邮件客户端收发信了。
演示视频:
项目地址:
https://github.com/Jinnrry/PMail
PS:
我以前也没有邮箱相关的开发经验。go 语言也基本上没有邮件相关协议的生态。全网无论中英文,基本上也找不到这类的资料。整个开发过程还是挺曲折的,都是我自己去硬啃 RFC 协议文件,然后照着 RFC 文件一点一点写出来的。但是某个协议并不是看完一个 RFC 就完了,各种知识分散在很多个 RFC 中,RFC 文档也没有目录,也没有示例,很多东西可能一句话就描述完了,但是具体实现的时候很多细节根本不知道怎么处理。
目前第三方客户端还是存在兼容性问题,我使用 GMail 和苹果邮件客户端测试是没有问题的。但是 QQ 邮箱等客户端会有问题,暂时没找到原因。
最后,欢迎感兴趣的朋友加入。无论是前端、还是后端、还是 UI 、设计等等。无论贡献的是协议代码,还是业务逻辑代码,还是插件代码,还是前端代码,甚至是 UI 、设计图都可以。
1
allenby 2023-12-18 12:57:19 +08:00 via Android
支持 25 端口的提供商有哪些?
|
2
allenby 2023-12-18 12:59:34 +08:00 via Android
以前试着整了一个 pop 读取新邮件发送到 tg 的,但是需要定时去 pop 上取,不是很方便。话说,有哪些收信协议不需要我定时去读取邮箱的?
|
4
jiangwei2222 OP |
5
andy7076 2023-12-18 15:21:40 +08:00
好像腾讯企业邮箱绑定一下域名就好, 主要是还是自己搭建的服务感觉不够稳定,不敢用,万一哪天挂了或者自己不想维护了。 一堆绑定邮箱的业务用不了真的捉急。
|
6
fw1314 2023-12-18 15:32:17 +08:00
cloudflare 免费,而且非常的快速,想抛直接就抛
|
7
Bzero 2023-12-18 18:03:18 +08:00
imap 993 端口,支持吗?
|
8
julyclyde 2023-12-18 20:28:34 +08:00
为什么说 RFC 文档没有目录?
|
9
yafoo 2023-12-18 22:02:24 +08:00 via Android
之前收藏过了
|
10
aayyooh2 2023-12-18 22:08:09 +08:00
已 star
|
12
jiangwei2222 OP @julyclyde 我说的不是单个文档内的目录。我说的是比如你想了解 smtp 协议,不会有人告诉你需要看那几个 RFC ,也你只能一个一个去找相关的,然后根据发布年份一个一个看
|
13
julyclyde 2023-12-20 10:51:05 +08:00
|
14
rekulas 2023-12-20 21:54:44 +08:00
提个建议 配置文件可以考虑按不同功能/类型的不同分层级管理,全部平铺看着好累而且以后扩展新功能也会显得杂乱
|
15
rekulas 2023-12-20 22:04:30 +08:00
另外文档不是很清晰,我跑起来发现没配置文件,看了代码才猜到应该放到 config/config.json 里,对小白或不熟悉的不友好
另外我只想搭建一个收件服务器的话应该不需要 dkim,但启动似乎强制校验,也没有开关... |
16
rekulas 2023-12-20 22:08:02 +08:00
当我修复了以上问题,继续运行,又报 ssl 错误
panic: at /home/runner/work/PMail/PMail/server/services/setup/ssl/ssl.go:157 然而我的 httpsEnabled 已经为 0 sslType 也设置为 1 了 我不懂为什么还要强制去开启 ssl ssl 这种交给 web 服务就好了 |
17
rekulas 2023-12-20 22:11:13 +08:00
好吧 上面配置看错了 httpsEnabled 0 1 都是启用 2 是不启用, 这 🤣
|
18
rekulas 2023-12-20 22:25:35 +08:00
修复以上配置后,程序终于跑起来了,但是发现没账号密码,找遍文档也没有
只能自己拉下来 db 文件,查看下源码里密码 hash 函数自己手动写入一个账号,上传覆盖,终于可以登录了... 说实话,体验感受并不是很美好建议优化下 我估计你的目的是一开始就启动 web 然后用户从 web 初始化系统 但是现实总是复杂多变的,我的 80 端口冲突所以直接覆盖了默认配置,而且 init 参数没有改,导致踩了不少坑 |
19
jiangwei2222 OP @rekulas #16 因为不止 https 协议需要 SSL 证书,pop3 、smtp 这些协议都需要 SSL 证书
|