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

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

  •  5
     
  •   jiangwei2222 · 257 天前 · 6692 次点击
    这是一个创建于 257 天前的主题,其中的信息可能已经有所发展或是发生改变。

    两周前开源了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  
       257 天前
    应该支持通过接口获取指定邮箱验证码的功能吧?
    shuxhan
        2
    shuxhan  
       257 天前   ❤️ 7
    看着小巧精致,等一个 docker 版本
    wentx
        3
    wentx  
       257 天前
    HunSiKing
        4
    HunSiKing  
       257 天前
    支持一番!
    xmsumi
        5
    xmsumi  
       257 天前
    支持并期待更新 API ,方便接入到其他项目使用。
    clooooo
        6
    clooooo  
       257 天前
    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  
       257 天前 via Android
    支持,等养肥了在用。😅
    eBMm8zIi0Zq3
        8
    eBMm8zIi0Zq3  
       257 天前
    支持! 能不能支持多域名?
    maskerTUI
        9
    maskerTUI  
       257 天前
    这个好,眼前一亮的个人产品。
    IDAEngine
        10
    IDAEngine  
       257 天前
    太精简,喜欢😍
    BaseException
        11
    BaseException  
       257 天前
    star 了
    shermie
        12
    shermie  
       257 天前
    希望支持通过接口获取指定邮箱验证码的功能
    runningowl
        13
    runningowl  
       257 天前
    leoskey
        14
    leoskey  
       257 天前
    logo 就把 @ 顺时针旋转 90 度
    jiangwei2222
        15
    jiangwei2222  
    OP
       257 天前
    @CY4suncheng
    @xmsumi
    只是读验证码的话,你直接读数据库就行吧?或者你写个插件获取也行,再或者你直接用前端的获取邮件列表接口也行
    jiangwei2222
        16
    jiangwei2222  
    OP
       257 天前
    @clooooo 重新发了个版本,修复了
    jiangwei2222
        17
    jiangwei2222  
    OP
       257 天前
    @eBMm8zIi0Zq3 这个暂时没考虑到
    jiangwei2222
        18
    jiangwei2222  
    OP
       257 天前
    jiangwei2222
        19
    jiangwei2222  
    OP
       257 天前
    @shermie 直接读数据库?
    jiangwei2222
        20
    jiangwei2222  
    OP
       257 天前
    @runningowl 试了下,有点丑,只是简单把名字换个字体生成图片而已。
    deplivesb
        21
    deplivesb  
       257 天前
    能支持命令行启动自定义端口么?
    willsun
        22
    willsun  
       257 天前
    docker 版有吗,最好可以部署到自家 nas 上就好了。
    runningowl
        23
    runningowl  
       257 天前
    要带图片的?那试试这个 https://logo-maker.freelogodesign.org/
    要不就找 dalle 来一个了
    runningowl
        24
    runningowl  
       257 天前
    再来个 chat 给的 slogan
    One Server, One Domain, One Line of Code, One Minute – Unleash Your Own Domain Mailbox!
    Bssn
        25
    Bssn  
       257 天前
    不知道为什么无法收到回信,发信正常
    MarlonFan
        26
    MarlonFan  
       257 天前
    已经用上的兄弟们, 会不会被当成垃圾邮箱有人试过么
    hqwuzhaoyi
        27
    hqwuzhaoyi  
       257 天前
    之前自己搭建的一直没用起来,关注了老哥
    shwnpol
        28
    shwnpol  
       257 天前
    支持
    timothyye
        29
    timothyye  
       257 天前
    不错,已 star
    sommer
        30
    sommer  
       257 天前 via Android
    需要开 25 端口吗(不太懂自托管的邮箱)

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

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

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

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

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

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

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

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

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

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

    之前是微软的,但是 E5 过期了
    shuxhan
        63
    shuxhan  
       256 天前
    @jiangwei2222 #52 😂 抱歉没看到 docker 说明,可以麻烦发一下链接吗
    shuxhan
        64
    shuxhan  
       256 天前
    @jiangwei2222 #52 看到了多谢
    1044523901
        65
    1044523901  
       256 天前
    等一个 docker 版本
    shermie
        66
    shermie  
       256 天前
    @jiangwei2222 是的 需要这个功能 直接读库 一个 GET 请求 传账号密码 返回文本
    jiangwei2222
        67
    jiangwei2222  
    OP
       255 天前 via Android
    @xmsumi
    @shermie
    @cheung github 的项目 wiki 里面补充后端接口了。不过目前接口都是为浏览器设计的,所有请求需要先调 login 接口拿登陆 cookie ,拿到登录 cookie 后调用后续的接口
    qinfengge
        68
    qinfengge  
       255 天前
    同等一个 docker 版本
    shermie
        69
    shermie  
       255 天前
    @jiangwei2222 强啊 够了
    bitkuang8
        70
    bitkuang8  
       255 天前
    star~
    good1uck
        71
    good1uck  
       253 天前 via Android
    请问和 qq 邮箱相比优势在哪?
    baiduyixia
        72
    baiduyixia  
       250 天前
    想问问 centos 系统怎么安装??能否出个教程?
    jiangwei2222
        73
    jiangwei2222  
    OP
       249 天前
    @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
       249 天前
    @good1uck qq 域名邮箱、outlook 个人域名邮箱目前都停止服务了,写这个出来就是为了替代这两个的。至于优势的话,目前没有任何优势。非要说的话,可以自己定制开发、数据自己存储,就这点优势吧
    baiduyixia
        75
    baiduyixia  
       249 天前
    @jiangwei2222 80 端口已经被占用了,如何修改使用别的端口?
    intermission
        76
    intermission  
       244 天前
    我的话,是直接在飞书上创建了一个企业 [没有认证的那种] ,然后就可以初始化自己的域名邮箱了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2950 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 08:02 · PVG 16:02 · LAX 01:02 · JFK 04:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.