CupTools
V2EX  ›  Node.js

上次说到用 nodejs 重写一个邮件系统

  •  1
     
  •   CupTools · Apr 29, 2016 · 7665 views
    This topic created in 3682 days ago, the information mentioned may be changed or developed.

    然后下文就是,开源咯

    丑陋的 installation guide

    系统架构

    现在已经跑了三个月,目前感觉良好,可以继续考虑逐步淘汰 Gmail

    Supplement 1  ·  Apr 29, 2016
    as of 04/29/2016 PDT ,我正在重构整个架构。先不要下来折腾,到时另行通知
    Supplement 2  ·  Apr 29, 2016

    好了,重构完毕。RX,Misc,和Webmail的后端整合到了一个API。Updated Guide

    Supplement 3  ·  Apr 30, 2016

    系统架构图:

    Dermail Architecture v2

    半完成的API文档

    33 replies    2016-04-30 16:05:24 +08:00
    newghost
        1
    newghost  
       Apr 29, 2016
    不错呀…… 所有邮箱都能收到吗?
    信发多了会不会被新浪、网易、 QQ Block?
    emptyhua
        2
    emptyhua  
       Apr 29, 2016
    撸主好有毅力!
    qihboy
        3
    qihboy  
       Apr 29, 2016
    域名无法访问
    shellcodecow
        4
    shellcodecow  
       Apr 29, 2016
    awesome
    lizheming
        5
    lizheming  
       Apr 29, 2016
    心疼这回调…→_→ 不过页面真的很赞诶~
    domty
        6
    domty  
       Apr 29, 2016
    calllback hell...
    mufeng
        7
    mufeng  
       Apr 29, 2016
    @lizheming 回调感人
    SharkIng
        8
    SharkIng  
       Apr 29, 2016 via iPhone
    我一直很想知道有么打算把整个 sdapi.net 的构架和简单搭建情况写一些我们可以学习下的
    CupTools
        9
    CupTools  
    OP
       Apr 29, 2016
    @lizheming
    @mufeng

    回调只是我懒。到时我会在 web gui 加上自助加域名和帐号。
    CupTools
        10
    CupTools  
    OP
       Apr 29, 2016
    CupTools
        11
    CupTools  
    OP
       Apr 29, 2016
    @SharkIng 会的,太忙,有时间就写
    fds
        12
    fds  
       Apr 29, 2016   ❤️ 1
    哦,虽然楼主可能知道,但我还是想说,回调那里建议写成

    function tableRemove(name) {
    return function() {
    return r.table(name).delete.run(conn)
    }
    }
    tableRemove('users')()
    .then(tableRemove('domains'))
    .then(tableRemove('accounts'))
    ...
    .then(function(){
    actual(conn)
    })
    CupTools
        13
    CupTools  
    OP
       Apr 29, 2016
    @fds 我是太懒写好看...那个文件只是临时抱佛脚写出来
    fds
        14
    fds  
       Apr 29, 2016
    @CupTools 理解。一般高产的人都不会太在意这些小地方 ;p
    CupTools
        15
    CupTools  
    OP
       Apr 29, 2016 via Android
    @newghost 这是你要自己搭的 邮件会不会被 block 得看你的 ip 和 spf
    miyuki
        16
    miyuki  
       Apr 29, 2016 via Android
    发 Gmail 不会被 spam 吗
    SlipStupig
        17
    SlipStupig  
       Apr 29, 2016
    我用 python 实现了完整的 edm 系统,只是没界面,关于怎么过 spam 检测,这个国内基本上能过,不知道有没兴趣一起玩
    CupTools
        18
    CupTools  
    OP
       Apr 29, 2016 via Android
    @miyuki 不会。 outlook 都没问题
    CupTools
        19
    CupTools  
    OP
       Apr 30, 2016 via Android
    @SlipStupig 只要 IP 没被黑名单 SPF 正确 基本不会被 Spam
    SlipStupig
        20
    SlipStupig  
       Apr 30, 2016
    @CupTools 太天真你一天出 100 万邮件看看,发一两封邮件没啥意义
    CupTools
        21
    CupTools  
    OP
       Apr 30, 2016
    @SlipStupig 要是一天 100 万邮件就不要自己搭了。 ManDill, MailGun, Amazon SES 等等都比自己搭发 marketing 好。非法的话除外
    CupTools
        22
    CupTools  
    OP
       Apr 30, 2016
    @SlipStupig 国外你想过 SPAM ,几个条件:
    1. IP 没黑名单
    2. SPF 要正确
    3. DKIM 最好也有

    IP 不能是完全清白,之前要有发邮件成功的记录,那么 Outlook 就不会卡掉。 Gmail 反而不管
    SlipStupig
        23
    SlipStupig  
       Apr 30, 2016
    @CupTools 这个还是有一些方法的,这些没啥用,成本高,自己建设这块, spam 绕过我研究了很久基本上套路都摸清楚, dkim 什么 spf 这些都是找抓,你发不了太多, edm 嘛成本尽可能低,速度尽量要快,靠别人平台你一定亏,除非你是暴利,否则你这么做本都收不回来
    owt5008137
        24
    owt5008137  
       Apr 30, 2016 via Android
    相当不错啊,不知道垃圾邮件过滤怎么样?因为我发现自建 mail 服务器似乎很容易收到垃圾邮件,而且 gmail 和 outlook 这方面都做得不错
    firefox12
        25
    firefox12  
       Apr 30, 2016 via iPhone
    不太懂 不知道 pop3 smtp imap 这些协议支持吗? 这些协议是自己重新实行的吗?还是 调用别人的核心模块 有点类似使用 ie 内核开放了一个浏览器。

    如果是完全自己开发的核心模块,是否在安全性 性能上有过比较?

    只是为做了一个很炫的 UI ?我觉得作为现在邮件系统的插件系统可以让更多的人受惠。
    CupTools
        26
    CupTools  
    OP
       Apr 30, 2016 via Android
    @firefox12 SMTP 用的是 https://github.com/andris9/smtp-server 基于这个模块而写出来的一整个邮件系统。 UI 只是其中一个部件 通过 API 调用资源,浏览器渲染。

    IMAP 还在研究中 RFC 实在太复杂
    CupTools
        27
    CupTools  
    OP
       Apr 30, 2016 via Android
    @owt5008137 垃圾过滤还没有 SpamAssasin 这些是渣 不打算用他们。本来想用 nodejs 写一个 machine learning ,耗时太长,写了一半,还没成型。

    现在是靠 filter 去拦截 spam
    cchange
        28
    cchange  
       Apr 30, 2016
    经验比项目本身可能更重要
    SharkIng
        29
    SharkIng  
       Apr 30, 2016
    @CupTools 太感谢了,已经受益匪浅了 如果能有一个相对比较详细的构架解释的话就更好了
    CupTools
        30
    CupTools  
    OP
       Apr 30, 2016
    @SlipStupig :doge: 没考虑到这么多 望请多多指教
    CupTools
        31
    CupTools  
    OP
       Apr 30, 2016
    @cchange 是的。这是我第四个大型项目。

    第一个是 PHP 写的 DNS 。 4 年前写的东西,很久没维护了。
    第二个是 sdapi.net 的整个架构。从 选硬件 买硬件 拼硬件 到 拉线 装系统 装软件 跑私有云 各种服务
    第三个是 HostMyNUC 的整个管理和销售系统
    第四个是 Dermail

    其中还写过 SSH/VPN 的控制面板,当初 FreeRadius 还留行的时候,各种奸商卖梯子工具
    还有很多很多项目。唯一挣钱的还是帮一个 IDC 写个后台,直接模仿用户 Actions ,相当现在的 Phantom.js 之类。 4 年前哪有这么高级的东西,都是一行行码写出来的。
    SlipStupig
        32
    SlipStupig  
       Apr 30, 2016
    @CupTools l 留个联系方式一起交流呗
    kn007
        33
    kn007  
       Apr 30, 2016
    Star 。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   839 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 155ms · UTC 21:17 · PVG 05:17 · LAX 14:17 · JFK 17:17
    ♥ Do have faith in what you're doing.