V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
CupTools
V2EX  ›  Node.js

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

  •  1
     
  •   CupTools · 2016-04-29 13:09:10 +08:00 · 6735 次点击
    这是一个创建于 2919 天前的主题,其中的信息可能已经有所发展或是发生改变。

    然后下文就是,开源咯

    丑陋的 installation guide

    系统架构

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

    第 1 条附言  ·  2016-04-29 15:13:26 +08:00
    as of 04/29/2016 PDT ,我正在重构整个架构。先不要下来折腾,到时另行通知
    第 2 条附言  ·  2016-04-29 16:46:12 +08:00

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

    第 3 条附言  ·  2016-04-30 15:15:47 +08:00

    系统架构图:

    Dermail Architecture v2

    半完成的API文档

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

    回调只是我懒。到时我会在 web gui 加上自助加域名和帐号。
    CupTools
        10
    CupTools  
    OP
       2016-04-29 16:46:23 +08:00
    CupTools
        11
    CupTools  
    OP
       2016-04-29 16:46:47 +08:00
    @SharkIng 会的,太忙,有时间就写
    fds
        12
    fds  
       2016-04-29 17:09:05 +08:00   ❤️ 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
       2016-04-29 17:18:07 +08:00
    @fds 我是太懒写好看...那个文件只是临时抱佛脚写出来
    fds
        14
    fds  
       2016-04-29 17:27:10 +08:00
    @CupTools 理解。一般高产的人都不会太在意这些小地方 ;p
    CupTools
        15
    CupTools  
    OP
       2016-04-29 18:54:48 +08:00 via Android
    @newghost 这是你要自己搭的 邮件会不会被 block 得看你的 ip 和 spf
    miyuki
        16
    miyuki  
       2016-04-29 19:24:35 +08:00 via Android
    发 Gmail 不会被 spam 吗
    SlipStupig
        17
    SlipStupig  
       2016-04-29 20:28:39 +08:00
    我用 python 实现了完整的 edm 系统,只是没界面,关于怎么过 spam 检测,这个国内基本上能过,不知道有没兴趣一起玩
    CupTools
        18
    CupTools  
    OP
       2016-04-29 23:35:05 +08:00 via Android
    @miyuki 不会。 outlook 都没问题
    CupTools
        19
    CupTools  
    OP
       2016-04-30 01:00:32 +08:00 via Android
    @SlipStupig 只要 IP 没被黑名单 SPF 正确 基本不会被 Spam
    SlipStupig
        20
    SlipStupig  
       2016-04-30 05:12:59 +08:00
    @CupTools 太天真你一天出 100 万邮件看看,发一两封邮件没啥意义
    CupTools
        21
    CupTools  
    OP
       2016-04-30 05:30:31 +08:00
    @SlipStupig 要是一天 100 万邮件就不要自己搭了。 ManDill, MailGun, Amazon SES 等等都比自己搭发 marketing 好。非法的话除外
    CupTools
        22
    CupTools  
    OP
       2016-04-30 05:32:06 +08:00
    @SlipStupig 国外你想过 SPAM ,几个条件:
    1. IP 没黑名单
    2. SPF 要正确
    3. DKIM 最好也有

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

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

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

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

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

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

    其中还写过 SSH/VPN 的控制面板,当初 FreeRadius 还留行的时候,各种奸商卖梯子工具
    还有很多很多项目。唯一挣钱的还是帮一个 IDC 写个后台,直接模仿用户 Actions ,相当现在的 Phantom.js 之类。 4 年前哪有这么高级的东西,都是一行行码写出来的。
    SlipStupig
        32
    SlipStupig  
       2016-04-30 16:02:03 +08:00
    @CupTools l 留个联系方式一起交流呗
    kn007
        33
    kn007  
       2016-04-30 16:05:24 +08:00
    Star 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1255 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 23:54 · PVG 07:54 · LAX 16:54 · JFK 19:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.