做这个项目的初衷很简单,很多人吐槽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 服务。
思考了好久才决定转化为开源产品,如果有负责过邮件的前辈,希望分享下曾经遇到过的其他问题,大家一起来打造一款更好的开源邮件服务。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/133221
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.