V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
爱意满满的作品展示区。
AutumnVerse

自研邮件服务-PMail

  •  3
     
  •   AutumnVerse · Jul 30, 2023 · 6300 views
    This topic created in 1002 days ago, the information mentioned may be changed or developed.

    由于主流的域名邮箱服务逐步停止服务,比如 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

    Supplement 1  ·  Jul 30, 2023
    补个图片,[!img]( %20%20)
    41 replies    2025-07-25 11:33:22 +08:00
    AutumnVerse
        1
    AutumnVerse  
    OP
       Jul 30, 2023   ❤️ 1
    PS:顺带吐槽一下,Golang 原生的 SMPT 协议写得太他妈粗糙了。简直坑死人。最基本的,竟然只支持很少几种编码方式,gbk 、gb2312 等中文编码均不支持。另外其他坑也一堆。

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

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

    https://www.v2ex.com/t/956615
    mschultz
        13
    mschultz  
       Jul 30, 2023
    @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
        14
    xuc  
       Jul 30, 2023
    @StuPYX 从 2023 年 11 月 30 日开始,Microsoft 365 个人版 或 Microsoft 365 家庭版 订阅者将无法再为其 Outlook.com 邮箱关联的任何个性化域创建新的电子邮件地址。( PS:商业版订阅还有)
    iFrey
        15
    iFrey  
    PRO
       Jul 30, 2023
    AutumnVerse
        16
    AutumnVerse  
    OP
       Jul 30, 2023
    @ashong 我刚开始准备写多用户管理的,我表都是按多用户设计的。但是后面感觉工作量太大了,就没继续写多用户功能了。先写个单用户用着吧。
    hbytw1
        17
    hbytw1  
       Jul 30, 2023
    已经 star ,等完善
    AutumnVerse
        18
    AutumnVerse  
    OP
       Jul 30, 2023
    @lhx2008 因为我以前没用过,刚开始觉得官方库应该没啥问题,结果越写坑越多。再到后面想换也换不了了,所有方法都是按官方库的设计写的。就只能 copy 一份自己改了
    yaott2020
        19
    yaott2020  
       Jul 30, 2023 via Android
    楼主 webui 放个图?
    xiangyuecn
        20
    xiangyuecn  
       Jul 30, 2023
    收藏,早些年也爱折腾自建邮件服务器,.Net Framework 自带的 smtp 也有字符编码问题,陈年 bug 后面也是提交了一个代码给他们修复了,感觉这种底层功能压根没多少人会去直接调用😂
    oszlso
        21
    oszlso  
       Jul 30, 2023
    期待传到 dockerhub
    deorth
        22
    deorth  
       Jul 30, 2023 via Android   ❤️ 4
    这帖牛的,硬是让我质疑了一下自己到底是 smtp 还是 smpt 。这可是我每天打交道的协议
    kebamt
        23
    kebamt  
       Jul 30, 2023
    放个图?
    AutumnVerse
        24
    AutumnVerse  
    OP
       Jul 30, 2023
    @oszlso 项目里面有 dockerfile ,你自己编译一个就行
    AutumnVerse
        25
    AutumnVerse  
    OP
       Jul 30, 2023
    @kebamt 添加图片了
    justincnn
        26
    justincnn  
       Jul 30, 2023
    gmail 保平安
    oIMOo
        27
    oIMOo  
       Jul 30, 2023
    @t41372 #12 本来想把个人邮箱换到这个平台,然而很多功能不齐全,提交给了官方,迟迟没有等来更新。
    - 邮件签名放在回复引用的原文之上 —— 目前还是在最下面
    - 收到日历邀请的邮件,没有任何选项、也不显示 ics 文件,前者必须去日历里操作,后者比如导出邮件才能看到
    等等
    Steaven
        28
    Steaven  
       Jul 30, 2023
    代码开源协议指定
    AutumnVerse
        29
    AutumnVerse  
    OP
       Jul 30, 2023 via Android
    @Steaven 指定了,使用 GPL 开源协议
    WhatTheBridgeSay
        30
    WhatTheBridgeSay  
       Jul 31, 2023   ❤️ 1
    虽然楼主造轮子的精神可嘉,但是有没有可能,现在你想要实现的收发信功能都是分离开的,IMAP 确实没有什么太好的 self-hosted 解决方案,但是你可以用转发服务啊,发信就更简单了,免费 SMTP/API 不要太多,self-hosted 主要还隔着一个固定 IP 信誉的问题,就单纯你这种用作账号注册用途的话直接用 simplelogin 最简单方便。
    AutumnVerse
        31
    AutumnVerse  
    OP
       Jul 31, 2023 via Android
    @WhatTheBridgeSay 我当然知道有转发,而且我用过很长一段时间的转发。真正用了以后会发现,破问题一堆
    mengzhuo
        32
    mengzhuo  
       Jul 31, 2023   ❤️ 1
    邮件服务最大的问题是个人架设的服务器可能是大邮件商的 ip 黑名单了
    AutumnVerse
        33
    AutumnVerse  
    OP
       Jul 31, 2023 via Android
    @mengzhuo 我自己有使用 7 年多的 ip ,所有服务商均正常收发,如果没干净 ip 的话,那确实没办法。
    julyclyde
        34
    julyclyde  
       Jul 31, 2023
    @jiangwei2222 首先,把 SMTP 四个字拼对
    其次,这玩意和邮件内容的 encoding 有啥关系?
    wushenlun
        35
    wushenlun  
       Aug 1, 2023 via Android
    加个读写邮件 api 吧,我想直接对接 chatgpt
    hong2351
        36
    hong2351  
       Aug 1, 2023
    看起来很不错啊!!
    AutumnVerse
        37
    AutumnVerse  
    OP
       Aug 6, 2023
    @wushenlun 为嘛要加 api 读,你直接读数据库不好吗
    nice2cu
        38
    nice2cu  
       Aug 28, 2023
    请问老哥,收邮件 你是咋弄的 定时去拉吗
    AutumnVerse
        39
    AutumnVerse  
    OP
       Sep 5, 2023 via Android
    @nice2cu 这是一个完整的邮箱服务器,拉什么拉?
    Gtristan
        40
    Gtristan  
       Sep 11, 2023
    忘记安装 nginx 了,重新配置 ip 访问的话,需要指向哪个目录?
    humbass
        41
    humbass  
       Jul 25, 2025
    最近有朋友要搭邮箱,过了两年看到这个帖子,这个项目有长期迭代吗?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5763 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 109ms · UTC 01:44 · PVG 09:44 · LAX 18:44 · JFK 21:44
    ♥ Do have faith in what you're doing.