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

只需一分钟,搭建一个自己的域名邮箱服务

  •  5
     
  •   jiangwei2222 · 2023-08-14 10:01:57 +08:00 · 7394 次点击
    这是一个创建于 499 天前的主题,其中的信息可能已经有所发展或是发生改变。

    两周前开源了PMail的第一版,第一版基本上只完成了核心逻辑。这两周花了几天,完成了 2.0 版本。新版本支持了 SQLite 数据库、支持了 ACME 协议(能够全自动处理 SSL 证书的获取与更新)、添加了配置引导页面。

    这个版本极大的优化了部署效率。因此,我给这个项目写了一个口号:

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

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

    演示视频:

    img

    项目地址:

    https://github.com/Jinnrry/PMail

    免责声明:

    我自己目前使用了两个多月了,收发国内外各种 app 的验证码,均没有任何问题。但是项目整体没有完整的测试用例,也没有经过严谨的测试,也没有大量用户验证。因此不建议立刻把自己的主邮箱迁过去。

    其他:

    欢迎各类 PR ,无论你是修复 bug 、新增功能、修改翻译。最后,征求一个 Logo !

    76 条回复    2023-08-27 15:26:46 +08:00
    CY4suncheng
        1
    CY4suncheng  
       2023-08-14 10:04:13 +08:00
    应该支持通过接口获取指定邮箱验证码的功能吧?
    shuxhan
        2
    shuxhan  
       2023-08-14 10:09:45 +08:00   ❤️ 7
    看着小巧精致,等一个 docker 版本
    wentx
        3
    wentx  
       2023-08-14 10:27:07 +08:00
    HunSiKing
        4
    HunSiKing  
       2023-08-14 10:27:51 +08:00
    支持一番!
    xmsumi
        5
    xmsumi  
       2023-08-14 10:47:20 +08:00
    支持并期待更新 API ,方便接入到其他项目使用。
    clooooo
        6
    clooooo  
       2023-08-14 10:51:38 +08:00
    panic: runtime error: invalid memory address or nil pointer dereference
    [signal SIGSEGV: segmentation violation code=0x1 addr=0x8 pc=0x990826]

    goroutine 1 [running]:
    main.main()
    /Users/didi/privatePjt/PMail/server/main.go:56 +0xa6

    启动是这个报错?
    WebKit
        7
    WebKit  
       2023-08-14 10:54:34 +08:00 via Android
    支持,等养肥了在用。😅
    eBMm8zIi0Zq3
        8
    eBMm8zIi0Zq3  
       2023-08-14 10:59:00 +08:00
    支持! 能不能支持多域名?
    maskerTUI
        9
    maskerTUI  
       2023-08-14 11:12:09 +08:00
    这个好,眼前一亮的个人产品。
    IDAEngine
        10
    IDAEngine  
       2023-08-14 11:13:36 +08:00
    太精简,喜欢😍
    BaseException
        11
    BaseException  
       2023-08-14 11:30:02 +08:00
    star 了
    shermie
        12
    shermie  
       2023-08-14 11:41:12 +08:00
    希望支持通过接口获取指定邮箱验证码的功能
    runningowl
        13
    runningowl  
       2023-08-14 11:46:13 +08:00
    leoskey
        14
    leoskey  
       2023-08-14 11:53:02 +08:00
    logo 就把 @ 顺时针旋转 90 度
    jiangwei2222
        15
    jiangwei2222  
    OP
       2023-08-14 11:53:27 +08:00
    @CY4suncheng
    @xmsumi
    只是读验证码的话,你直接读数据库就行吧?或者你写个插件获取也行,再或者你直接用前端的获取邮件列表接口也行
    jiangwei2222
        16
    jiangwei2222  
    OP
       2023-08-14 12:04:47 +08:00
    @clooooo 重新发了个版本,修复了
    jiangwei2222
        17
    jiangwei2222  
    OP
       2023-08-14 12:05:40 +08:00
    @eBMm8zIi0Zq3 这个暂时没考虑到
    jiangwei2222
        18
    jiangwei2222  
    OP
       2023-08-14 12:06:31 +08:00
    jiangwei2222
        19
    jiangwei2222  
    OP
       2023-08-14 12:07:01 +08:00
    @shermie 直接读数据库?
    jiangwei2222
        20
    jiangwei2222  
    OP
       2023-08-14 12:09:12 +08:00
    @runningowl 试了下,有点丑,只是简单把名字换个字体生成图片而已。
    deplivesb
        21
    deplivesb  
       2023-08-14 12:13:35 +08:00
    能支持命令行启动自定义端口么?
    willsun
        22
    willsun  
       2023-08-14 12:38:16 +08:00
    docker 版有吗,最好可以部署到自家 nas 上就好了。
    runningowl
        23
    runningowl  
       2023-08-14 12:55:37 +08:00
    要带图片的?那试试这个 https://logo-maker.freelogodesign.org/
    要不就找 dalle 来一个了
    runningowl
        24
    runningowl  
       2023-08-14 12:59:07 +08:00
    再来个 chat 给的 slogan
    One Server, One Domain, One Line of Code, One Minute – Unleash Your Own Domain Mailbox!
    Bssn
        25
    Bssn  
       2023-08-14 13:04:01 +08:00
    不知道为什么无法收到回信,发信正常
    MarlonFan
        26
    MarlonFan  
       2023-08-14 13:10:31 +08:00
    已经用上的兄弟们, 会不会被当成垃圾邮箱有人试过么
    hqwuzhaoyi
        27
    hqwuzhaoyi  
       2023-08-14 13:15:16 +08:00
    之前自己搭建的一直没用起来,关注了老哥
    shwnpol
        28
    shwnpol  
       2023-08-14 13:24:10 +08:00
    支持
    timothyye
        29
    timothyye  
       2023-08-14 13:30:31 +08:00
    不错,已 star
    sommer
        30
    sommer  
       2023-08-14 13:31:58 +08:00 via Android
    需要开 25 端口吗(不太懂自托管的邮箱)

    这个主要是给自己日常通信用的吗,如果大规模发是不是就要有相应的频率控制,来管理声誉
    cnit
        31
    cnit  
       2023-08-14 13:32:25 +08:00   ❤️ 1
    https://logo-maker.freelogodesign.org/

    document.getElementById('watermark').remove()
    Masoud2023
        32
    Masoud2023  
       2023-08-14 13:39:34 +08:00
    不能发?
    jiangwei2222
        33
    jiangwei2222  
    OP
       2023-08-14 13:55:45 +08:00 via Android
    @deplivesb 25 端口是不能改的,80 ,443 端口可以改
    Bssn
        34
    Bssn  
       2023-08-14 13:56:32 +08:00
    @MarlonFan 不知道其他人,反正我的会,测试了一下谷歌,直接给我丢垃圾邮箱了
    jiangwei2222
        35
    jiangwei2222  
    OP
       2023-08-14 13:57:46 +08:00 via Android
    @Bssn
    @sommer 需要开 25 端口,有些 vps 会默认 ban 掉 25 端口,收不到信的话检查下 25 端口是不是不通
    jiangwei2222
        36
    jiangwei2222  
    OP
       2023-08-14 14:00:51 +08:00 via Android
    @Bssn https://www.mail-tester.com/?lang=zh

    拿你的邮箱测试一下看看呢。如果有问题按他提示改改
    jiangwei2222
        37
    jiangwei2222  
    OP
       2023-08-14 14:02:46 +08:00 via Android   ❤️ 1
    @willsun 我今晚回去编译一个 docker
    ben5959
        38
    ben5959  
       2023-08-14 14:50:06 +08:00
    微信 push 的功能是指?
    jiangwei2222
        39
    jiangwei2222  
    OP
       2023-08-14 14:54:51 +08:00 via Android
    @ben5959 收到邮件以后,使用微信公用号消息接口推送给你。(微信接口需要你自己申请)
    o0
        40
    o0  
       2023-08-14 15:18:31 +08:00
    自己部署?好像国内的云厂商不是很欢迎?
    mianlaodie
        41
    mianlaodie  
       2023-08-14 15:51:28 +08:00
    同求一个 docker 版本
    cat9life
        42
    cat9life  
       2023-08-14 15:54:00 +08:00
    注意国内默认 block 25 端口,需要申请开通
    cheung
        43
    cheung  
       2023-08-14 16:21:30 +08:00
    正需要这么个轻量级的邮件应用,API 接口整起来。
    liuhai233
        44
    liuhai233  
       2023-08-14 17:09:38 +08:00
    不错
    dianso
        45
    dianso  
       2023-08-14 17:13:57 +08:00
    喜欢单文件二进制部署,问一下,我的网站每天回复别人留言自动发邮件,大概几万封,目前是内置了 13 个 163 的账号来完成。

    要是我服务器大量发送会不会被主流邮件商拉黑啊
    jiangwei2222
        46
    jiangwei2222  
    OP
       2023-08-14 18:08:44 +08:00 via Android
    @dianso 卧槽,几万封,这个就得看其他邮件服务器的策略了。这种我也不确定,现在最好别把核心业务迁过来,我也只用了几个月,可能有各种 bug
    ailaodao
        47
    ailaodao  
       2023-08-14 18:49:02 +08:00
    支持
    kebamt
        48
    kebamt  
       2023-08-14 19:29:26 +08:00
    骗人🤥,花了 21 分钟🤣
    dusu
        49
    dusu  
       2023-08-14 19:33:37 +08:00 via iPhone
    说说我们目前对自建邮局正在处理的一些深入需求,OP 也可以看看:

    1. 针对单机多 ip/多域名/多出口发信的问题
    2. 分布式,解决单点问题,mx 解析一条记录肯定是不够的,单节点去部署邮件就得一台一台去看,略麻烦
    3. 不接 rspamd 没法过滤垃圾邮件 后期垃圾邮件多了会很烦,同时支持 rule 的话可以解决转发、过滤、分流等问题

    另外可以参考一下这个项目
    https://github.com/jeboehm/docker-mailserver
    tyzandhr
        50
    tyzandhr  
       2023-08-14 19:52:00 +08:00 via Android
    能否通过 api 代理 gmail ?
    pigmen
        51
    pigmen  
       2023-08-14 20:41:59 +08:00
    还是 Cloudflare 更香 更便捷
    jiangwei2222
        52
    jiangwei2222  
    OP
       2023-08-14 20:49:04 +08:00
    @shuxhan
    @mianlaodie docker 有了
    jiangwei2222
        53
    jiangwei2222  
    OP
       2023-08-14 20:54:10 +08:00
    @dusu 啊,我如果早看到这个项目可能就不会自己手撸了。我下一步也计划支持 IMAP 、POP3 的,这个项目全都支持了

    垃圾过滤正准备加,我现在已经开始每天收一堆垃圾邮件了。

    多 ip 、多域名、分布式这些可能得等等了。目前我自用需求不是太高。
    jiangwei2222
        54
    jiangwei2222  
    OP
       2023-08-14 20:58:35 +08:00
    @tyzandhr 短期内可能不会支持。至少稳定性得达到 Gmail 那个级别才敢把 Gmail 的邮件代理过来吧。现在我都不保证稳定性,代理 GMail 作为主邮箱的话,万一程序 panic 导致丢信了,那影响就大了。

    就像#49 说的,目前项目都是单节点运行的,真做主邮箱用,风险太大了
    jiangwei2222
        55
    jiangwei2222  
    OP
       2023-08-14 21:05:14 +08:00
    @dusu 仔细想了想,其实多节点、多域名没多少改动,DNS 配上就行了。目前程序 session 是存数据库的,多节点配置同一个 MySQL 就行了。

    DNS 解析配上,现在多域名收信应该都可以用,发信的话只是前端没法操作,其实理论上也支持
    fmvp520
        56
    fmvp520  
       2023-08-14 22:30:38 +08:00
    支持一番!
    zololiu
        57
    zololiu  
       2023-08-14 23:57:19 +08:00
    支持一下,养肥再用。
    kljsandjb
        58
    kljsandjb  
       2023-08-15 03:47:21 +08:00 via iPhone
    等大家坑差不多踩完了我就把 docker-mailserver 换你这个😄
    shuxhan
        59
    shuxhan  
       2023-08-15 09:08:46 +08:00
    @pigmen 好用是好用,就是只能收,不能发
    huisunan
        60
    huisunan  
       2023-08-15 09:14:02 +08:00
    感觉可以做一个和苹果一样的隐私邮箱功能
    blackboxo
        61
    blackboxo  
       2023-08-15 09:34:36 +08:00
    虽然最近正好有需求,但是没有稳定性保证不太敢用。。
    hokori
        62
    hokori  
       2023-08-15 09:47:16 +08:00
    我使用的是 qq 企业邮箱自定义的

    之前是微软的,但是 E5 过期了
    shuxhan
        63
    shuxhan  
       2023-08-15 10:07:28 +08:00
    @jiangwei2222 #52 😂 抱歉没看到 docker 说明,可以麻烦发一下链接吗
    shuxhan
        64
    shuxhan  
       2023-08-15 10:08:17 +08:00
    @jiangwei2222 #52 看到了多谢
    1044523901
        65
    1044523901  
       2023-08-15 13:55:51 +08:00
    等一个 docker 版本
    shermie
        66
    shermie  
       2023-08-15 14:31:37 +08:00
    @jiangwei2222 是的 需要这个功能 直接读库 一个 GET 请求 传账号密码 返回文本
    jiangwei2222
        67
    jiangwei2222  
    OP
       2023-08-15 16:23:05 +08:00 via Android
    @xmsumi
    @shermie
    @cheung github 的项目 wiki 里面补充后端接口了。不过目前接口都是为浏览器设计的,所有请求需要先调 login 接口拿登陆 cookie ,拿到登录 cookie 后调用后续的接口
    qinfengge
        68
    qinfengge  
       2023-08-15 16:24:29 +08:00
    同等一个 docker 版本
    shermie
        69
    shermie  
       2023-08-15 17:38:50 +08:00
    @jiangwei2222 强啊 够了
    bitkuang8
        70
    bitkuang8  
       2023-08-16 13:45:27 +08:00
    star~
    good1uck
        71
    good1uck  
       2023-08-17 19:03:27 +08:00 via Android
    请问和 qq 邮箱相比优势在哪?
    baiduyixia
        72
    baiduyixia  
       2023-08-21 15:13:06 +08:00
    想问问 centos 系统怎么安装??能否出个教程?
    jiangwei2222
        73
    jiangwei2222  
    OP
       2023-08-22 11:59:12 +08:00
    @baiduyixia 3 行命令就运行起来了

    wget https://github.com/Jinnrry/PMail/releases/download/V2.0.2/pmail_linux_amd64
    chmod +x pmail_linux_amd64
    ./pmail_linux_amd64
    jiangwei2222
        74
    jiangwei2222  
    OP
       2023-08-22 12:01:05 +08:00
    @good1uck qq 域名邮箱、outlook 个人域名邮箱目前都停止服务了,写这个出来就是为了替代这两个的。至于优势的话,目前没有任何优势。非要说的话,可以自己定制开发、数据自己存储,就这点优势吧
    baiduyixia
        75
    baiduyixia  
       2023-08-22 14:09:30 +08:00
    @jiangwei2222 80 端口已经被占用了,如何修改使用别的端口?
    intermission
        76
    intermission  
       2023-08-27 15:26:46 +08:00
    我的话,是直接在飞书上创建了一个企业 [没有认证的那种] ,然后就可以初始化自己的域名邮箱了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3309 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 11:08 · PVG 19:08 · LAX 03:08 · JFK 06:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.