做了四个月的邮件系统,准备修改为开源版本,收集意见中~

2014-09-13 11:29:28 +08:00
 vincenting
做这个项目的初衷很简单,很多人吐槽mailgun、sendcloud的独立IP价格略贵,同时mailgun不能有效的去兼容特别是QQ的发送规则,目前的产品形态参加 http://jianxin.io/ (应该会在下面的某天关闭),简单介绍下现在的设计以及准备修改并且开源的版本。

当前功能(忽略各种用户体系):

1. 自动生成 dkim 的记录值,并检测 dns 情况。
2. 邮件分为普通邮件和紧急邮件,其中普通邮件为根据队列发送的邮件,紧急邮件为立刻发送的邮件。
3. 发送中遇到错误,分析是否为用户不存在,否则暂停发送一段时间后继续发送。
4. 支持 SMTP 协议以及 HTTP 协议的接口调用,并可选使用长连接直接返回邮件发送结果。

目前想到的开源版的功能:

1. 去除目前的用户体系,将域名添加变成域名和发送IP添加(可以使用自己的VPS进行发送,并且可以绑定反向域名解析)。
2. 增加针对收件域(例如 QQ)的发件频率控制。
3. 更丰富的日志。

如果想了解邮件发送的原理,可以参考我之前写的帖子 : http://blog.segmentfault.com/vincent/1190000000661065

当前的代码结构:

1. 发送器(golang实现),postfix 或者 nodemail 同等级的服务。负责邮件任务的处理(邮件队列、邮件的投递、以及邮件返回错误的初步处理(判断是否为收件人不存在))。
2. 服务分发(golang实现),目前主要负责和发送器间的通讯,以及发送器健康状况的检测。
3. API 服务(Ruby的cramp实现),HTTP 调用方式的请求服务,包括发邮件、获取发送列表、当前用户状态等等的接口。
4. 业务服务(Ruby的sinatra实现),就是你可以看到的网站自身。
5. MTA(Nodejs实现),负责将SMTP协议的请求转发给 API 服务。

思考了好久才决定转化为开源产品,如果有负责过邮件的前辈,希望分享下曾经遇到过的其他问题,大家一起来打造一款更好的开源邮件服务。
14341 次点击
所在节点    程序员
73 条回复
jaylong
2014-09-13 11:49:48 +08:00
Cool 很赞的页面
Sukizen
2014-09-13 11:53:06 +08:00
good! 赞一个
shiny
2014-09-13 12:03:21 +08:00
http://jianxin.io/captcha?t=1410580975965
Internal Server Error

用了这么多语言,安装会不会很麻烦。
kslr
2014-09-13 12:08:31 +08:00
顶楼上,总共使用了3种语言,安装配置将是个麻烦。
选好主要开发语言和框架统一开发,要不共享的代码也是乱七八糟的。
kindlepaper
2014-09-13 12:09:00 +08:00
Daizong
2014-09-13 12:09:02 +08:00
Cool,期待开源
hardywu
2014-09-13 12:14:09 +08:00
可以和iredmail 的作者聊聊。
kmvan
2014-09-13 12:14:38 +08:00
回答下面的问题,那个图片显示不到啊~
coolicer
2014-09-13 12:22:46 +08:00
期待开源++
oott123
2014-09-13 12:25:15 +08:00
很漂亮~
不过技术栈真是…好多…
dbbbit
2014-09-13 12:26:44 +08:00
@vincenting 如何解决发送量大被 block 的问题(正常邮件)?
guotie
2014-09-13 12:32:15 +08:00
赞!
vincenting
2014-09-13 12:54:08 +08:00
@kmvan 已经修复,验证码服务莫名挂掉,没有做守护进程。。
vincenting
2014-09-13 12:55:58 +08:00
@shiny 这个是个问题,下面研究研究怎么通过 shell 脚本一键安装~
vincenting
2014-09-13 12:57:46 +08:00
@dbbbit 这个在QQ邮箱比较常见,参见 http://weibo.com/p/1001603727504811684569http://park.jobdeer.com/discussion/19/%E9%82%AE%E4%BB%B6%E5%8F%91%E9%80%81%E9%82%A3%E7%82%B9%E4%BA%8B 。建议是使用 nodejs 的 mailin 这样的服务进行收件,对 block 邮件进行处理,并且使用 QQ 的开发服务,可以试试接受反馈。通过反馈调整发送频率(我开源版里面准备增加的)。我目前的想法。
vincenting
2014-09-13 12:58:41 +08:00
@dbbbit 改正=》QQ的开放服务 http://open.mail.qq.com/
vincenting
2014-09-13 13:00:03 +08:00
@kslr 存在这个问题,而且主要是 ruby 和 nodejs(服务还用到了 mongo),golang可以通过使用对应系统下的可执行文件来解决部署问题。
nilai
2014-09-13 13:11:54 +08:00
首先, 期待开源。
其次, 支持楼主精神。
最后, 支持
startover
2014-09-13 13:19:29 +08:00
很nice的设计~~赞一个!!
longquanwo
2014-09-13 13:37:10 +08:00
发表一下个人看法:定位微型企业,提供定制化、内容化邮件服务。qq企业邮箱已经开始想收费模式转移,这玩意迟早要全部变成收费模式。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/133221

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX