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

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 服务。

思考了好久才决定转化为开源产品,如果有负责过邮件的前辈,希望分享下曾经遇到过的其他问题,大家一起来打造一款更好的开源邮件服务。
14794 次点击
所在节点    程序员
73 条回复
roymax
2014-09-14 12:22:35 +08:00
@vincenting 对验证码感兴趣,要不先把这个开源
vincenting
2014-09-14 13:36:35 +08:00
@roymax 考虑下,不过这个部署可能会略麻烦,用到了 imagemagic 和 golang。
jecky15
2014-09-14 13:54:37 +08:00
可以参考哈mailerq的 ,用消息列队处理邮件。
jecky15
2014-09-14 13:56:44 +08:00
@vincenting可以参考哈mailerq的 ,用消息列队处理邮件。
vincenting
2014-09-14 14:04:35 +08:00
@jecky15 恩,好好研究下~
jecky15
2014-09-14 14:21:00 +08:00
@vincenting 虽然我没有看懂你想做什么?想做一个类似mailgun这种带服务带接口的服务商,还是只需要要一个cp,可以在cp里面设置N多家的key等,来实现邮件发送以及统计等(邮件营销方面)。
vincenting
2014-09-14 14:25:42 +08:00
@jecky15 现在的话,是准备做一个功能(特别是调用方式)于 mailgun 类似,可以在自己服务器上部署的邮件服务器,前期核心只有一个发件(强制绑定 SPF DKIM,并且自带队列控制投递频率,以及一些错误处理回调等等)。
其他的统计等等在后期自己实现/集成其他开源服务。
jecky15
2014-09-14 14:41:27 +08:00
@vincenting ok,明白了,谢谢
openroc
2014-09-14 15:15:43 +08:00
gogo
foursking
2014-09-14 16:34:39 +08:00
star一下
nilai
2014-09-15 19:10:15 +08:00
支持,期待.楼主加油.
woyao
2014-11-14 12:02:22 +08:00
@vincenting 打不开了,项目已停?
vincenting
2014-11-14 15:44:35 +08:00
@woyao yes,开源版多数已经放出来了,不过现在还在想下面怎么弄。

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

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

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

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

© 2021 V2EX