V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
jiangwei2222
V2EX  ›  分享创造

再来推广一下自己写的域名邮箱服务

  •  1
     
  •   jiangwei2222 · 2023-12-18 11:19:31 +08:00 · 2694 次点击
    这是一个创建于 370 天前的主题,其中的信息可能已经有所发展或是发生改变。

    以前在这里推广过,不好意思打扰大家。主要是差 92 个 star 到 1k ,想要几个 star

    一台服务器、一个域名、一行代码、一分钟时间,你就能够搭建出一个自己的域名邮箱!

    专为个人使用场景设计,目前绝对是全网你能找到的,资源占用最少、部署最方便的邮箱服务器。除此之外,自动 SSL 、微信 Push ,应该也是全网独此一家。

    整个项目二进制文件仅 15M ,运行内存仅 1M 。0.5 核 64M 的垃圾 VPS 也能流畅运行!

    相比于 3 个月前,目前项目基本上成型了,支持了 pop3 和 smtp 协议,可以使用 GMail 之类的第三方邮件客户端收发信了。

    演示视频:

    img

    项目地址:

    https://github.com/Jinnrry/PMail

    PS:

    我以前也没有邮箱相关的开发经验。go 语言也基本上没有邮件相关协议的生态。全网无论中英文,基本上也找不到这类的资料。整个开发过程还是挺曲折的,都是我自己去硬啃 RFC 协议文件,然后照着 RFC 文件一点一点写出来的。但是某个协议并不是看完一个 RFC 就完了,各种知识分散在很多个 RFC 中,RFC 文档也没有目录,也没有示例,很多东西可能一句话就描述完了,但是具体实现的时候很多细节根本不知道怎么处理。

    目前第三方客户端还是存在兼容性问题,我使用 GMail 和苹果邮件客户端测试是没有问题的。但是 QQ 邮箱等客户端会有问题,暂时没找到原因。

    最后,欢迎感兴趣的朋友加入。无论是前端、还是后端、还是 UI 、设计等等。无论贡献的是协议代码,还是业务逻辑代码,还是插件代码,还是前端代码,甚至是 UI 、设计图都可以。

    19 条回复    2023-12-21 19:44:01 +08:00
    allenby
        1
    allenby  
       2023-12-18 12:57:19 +08:00 via Android
    支持 25 端口的提供商有哪些?
    allenby
        2
    allenby  
       2023-12-18 12:59:34 +08:00 via Android
    以前试着整了一个 pop 读取新邮件发送到 tg 的,但是需要定时去 pop 上取,不是很方便。话说,有哪些收信协议不需要我定时去读取邮箱的?
    alfchin
        3
    alfchin  
       2023-12-18 13:00:02 +08:00 via iPhone
    @allenby exchange
    jiangwei2222
        4
    jiangwei2222  
    OP
       2023-12-18 14:13:17 +08:00
    @allenby #1 我用的搬瓦工,25 端口是能够正常使用的,也不需要申请解封

    另外,这个项目现在就有 tg 推送插件,配置好推送相关 key 就行了,不需要额外开发
    andy7076
        5
    andy7076  
       2023-12-18 15:21:40 +08:00
    好像腾讯企业邮箱绑定一下域名就好, 主要是还是自己搭建的服务感觉不够稳定,不敢用,万一哪天挂了或者自己不想维护了。 一堆绑定邮箱的业务用不了真的捉急。
    fw1314
        6
    fw1314  
       2023-12-18 15:32:17 +08:00
    cloudflare 免费,而且非常的快速,想抛直接就抛
    Bzero
        7
    Bzero  
       2023-12-18 18:03:18 +08:00
    imap 993 端口,支持吗?
    julyclyde
        8
    julyclyde  
       2023-12-18 20:28:34 +08:00
    为什么说 RFC 文档没有目录?
    yafoo
        9
    yafoo  
       2023-12-18 22:02:24 +08:00 via Android
    之前收藏过了
    aayyooh2
        10
    aayyooh2  
       2023-12-18 22:08:09 +08:00
    已 star
    947
        11
    947  
       2023-12-20 09:00:07 +08:00
    @andy7076 #5 挂了再绑定企业邮箱就行了吧?只是说以前的邮件没了,但是重新找个平台绑上应该还能收到新邮件
    jiangwei2222
        12
    jiangwei2222  
    OP
       2023-12-20 10:49:15 +08:00
    @julyclyde 我说的不是单个文档内的目录。我说的是比如你想了解 smtp 协议,不会有人告诉你需要看那几个 RFC ,也你只能一个一个去找相关的,然后根据发布年份一个一个看
    julyclyde
        13
    julyclyde  
       2023-12-20 10:51:05 +08:00
    @jiangwei2222 确实,尤其是替代关系需要自己捋一下
    比如 822/821 和 2822/2821

    按说这属于行业通识。但是对于外行人员入行来说就比较麻烦
    rekulas
        14
    rekulas  
       2023-12-20 21:54:44 +08:00
    提个建议 配置文件可以考虑按不同功能/类型的不同分层级管理,全部平铺看着好累而且以后扩展新功能也会显得杂乱
    rekulas
        15
    rekulas  
       2023-12-20 22:04:30 +08:00
    另外文档不是很清晰,我跑起来发现没配置文件,看了代码才猜到应该放到 config/config.json 里,对小白或不熟悉的不友好

    另外我只想搭建一个收件服务器的话应该不需要 dkim,但启动似乎强制校验,也没有开关...
    rekulas
        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 服务就好了
    rekulas
        17
    rekulas  
       2023-12-20 22:11:13 +08:00
    好吧 上面配置看错了 httpsEnabled 0 1 都是启用 2 是不启用, 这 🤣
    rekulas
        18
    rekulas  
       2023-12-20 22:25:35 +08:00
    修复以上配置后,程序终于跑起来了,但是发现没账号密码,找遍文档也没有

    只能自己拉下来 db 文件,查看下源码里密码 hash 函数自己手动写入一个账号,上传覆盖,终于可以登录了...

    说实话,体验感受并不是很美好建议优化下

    我估计你的目的是一开始就启动 web 然后用户从 web 初始化系统

    但是现实总是复杂多变的,我的 80 端口冲突所以直接覆盖了默认配置,而且 init 参数没有改,导致踩了不少坑
    jiangwei2222
        19
    jiangwei2222  
    OP
       2023-12-21 19:44:01 +08:00
    @rekulas #16 因为不止 https 协议需要 SSL 证书,pop3 、smtp 这些协议都需要 SSL 证书
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2610 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 10:52 · PVG 18:52 · LAX 02:52 · JFK 05:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.