说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

悼念斯诺登使用的加密电邮服务——Lavabit架构解析

HTML文档下载 WORD文档下载 PDF文档下载
Lavabit也是“棱镜”情报监控项目曝光者爱德华·斯诺登一直使用的加密电邮服务,不过在今年8月8日遭到了关闭。Lavabit的架构可称得上是一个经典之作,HighScalability分享了这个可扩展的邮件系统架构,也是为了纪念。

2013年8月8日,美国加密邮件服务网站Lavabit的所有者和经营者Ladar Levison,在官方网站中发表声明称:“我被迫要做出一个艰难的决定:是成为对美国人民犯罪的同谋,还是关闭凝聚了我10年心血的Lavabit。经过慎重考虑,我决定暂停Lavabit的服务。” Lavabit也是“棱镜”情报监控项目曝光者爱德华·斯诺登(Edward Snowden)一直使用的加密电邮服务。

虽然Lavabit关闭了,不过Lavabit的架构也称得上是一个经典之作,文中的信息基本上都出自于2009年,但是仍然是一篇好博文,其中一些技术或者信息已经过时了,但是其中的一些思想仍值得大家学习。HighScalability的记者Todd Hoff 分享了这个可扩展的邮件系统架构,CSDN摘译如下:

Lavabit邮件系统

Lavabit是一个中等规模的电子邮件服务提供商,构建这个系统是为了抗衡其他大型的免费邮箱提供商,侧重服务于那些隐私意识比较强和精通技术的用户。Lavabit是第一批提供免费电子邮件服务的公司,开始是使用POP协议,再后来使用的就是IMAP协议。

Lavabit的系统架构


SMTP,POP和IMAP连接

Lavabit使用了一个两层的架构,包括一个应用层(运行自定义的邮件守护程序)和一个支持层(由NFS和MySQL服务器组成)。一个基于硬件的负载均衡器(Alteon AD4)将传入的SMTP、POP和IMAP连接分配到8个应用程序服务器(戴尔1650,拥有4GB的RAM)。

应用程序服务器被用于处理大量的进程负载,守护进程本身是一个使用C语言编写的单进程、多线程应用程序,每个守护进程配置512个线程用以处理传入的连接。另外8个线程负责异步pull广告(来自广告合作伙伴的HTTP API),并执行维护功能。其中维护功能包括更新内存表、过期会话以及日志文件,同时保持ClamAV(主要应用于邮件服务器,采用多线程后台操作,可以自动升级病毒库)的更新。

从架构的角度来看,每个传入的连接都能得到一个独有的线程,这就可以使用Blocking IO的模式来进行控制。目前,Lavabit依赖于Linux内核来均分这些处理器。

Lavabit称自己的邮件守护进程为“lavad”,它可以流畅地处理SMTP、POP和IMAP连接。守护进程还负责应用所有的业务逻辑,并且连接不同的开源库。

当通过SMTP协议来接受外部消息时,守护程序将进行下列检查:

  • 收件人是否有效
  • 传入IP是否被列入RBL
  • 返回的路径是否被验证使用了SPF(libspf2)
  • 账户是否有大小或者速率限制
  • 是否针对灰名单
  • 是否含有病毒(libclamav)
  • 是否是合法的域密钥签名(libdomainkeys)
  • 该消息是否看起来像垃圾邮件,根据统计令牌数据(libdspam)
  • 是否使用任何过滤器和正则表达式行排序或删除邮件
  • 取决用户的参数及计划,查看是否有特定的检查。例如,垃圾邮件过滤器仅限于付费用户

根据不同的检查的结果,用户可以选择标记消息,或者拒绝收取,甚至在某些情况下静静地删除它。如果消息需要被退回,退回邮件只会在这两种情况下发送:返回路径可以验证使用SPF;如果发件人使用了域密钥进行验证,并且发件人匹配该返回路径。

最后一个步骤,消息使用使用ECC(如果适用)进行加密,使用LZO进行压缩,然后存储在NFS服务器上。

对于POP连接,这个过程就相对简单多了。用户首先进行认证,然后请求消息,守护进程加载此消息,检查哈希表,以确保日期还没有被损坏,解压缩数据,然后在发送到客户端之前对其进行解密(如果适用)。

因为这需要纯文本密码来解密用户的私人密钥,所以Lavabit并不支持安全密码的身份验证,转而支持SSL(可以对一切进行加密,而不仅限于密码)。Lavabit处理SSL的加密是在应用层而不是在负载均衡器上,这是因为他们觉得应用层更容易扩展。

对于IMAP连接来说,守护进程也可以呈现文件夹中的信息,并且允许服务器端的消息搜索。当下,搜索通过读取磁盘上的所有信息实现;如果文件夹很大的话,这将严重影响性能。连接将共享信箱状态的集中副本,这也创造了锁争用问题。搜索肯定是一个需要改进的地方。

对于传出消息而言,该守护程序将通过数据库来验证用户的证书,并对该账户设置发送限制(防止滥用),并检查电子邮件地址是否与认证信息匹配(以防止欺骗),最后守护进程还要检查邮件是否包含病毒。当所有的检查都通过之后,该消息就会被清理,使用域密钥进行标记,然后通过内部网络转发到Postfix服务器,再将其转发到最终目的地。

守护进程使用池来共享所有的东西,包括MySQL连接、ClamAV实例、cURL实例(pull广告)、Memcached实例、libspf2实例等等,来保持简单的部署。Lavabit编译了所有依赖的开源库,并把它们进行统一的归档,然后在运行时才进行动态的加载。不过他们并没有将这些库直接链接到应用程序之上,如果这样的话,就需要在GPL的情况下,释放守护进程。Lavabit不依赖于动态链接,因为他们不希望在未知的情况下,任何关键库会被操作系统控制,进行自动的更新。

HTTP的连接

就像入站邮件连接一样,HTTP连接通过负载均衡器被分配在两个服务器之间,Apache被用于处理请求。虽然大部分的网站是静态的XHTML文件,但是Lavabit的注册引擎是用C编写的,并且所有的C应用程序都依赖于Apache的CGI接口。

门户网站是使用Perl语言编写的,而webmail系统是基于一个流行的开源客户端(PHP)。目前webmail客户端连接到邮件系统时候通过IMAP协议,每个Web服务器都会得到一个专用的IMAP服务器。

存在的问题


虽然设置一个能够可靠地为几千个用户进行服务的邮件系统并非难事,但是超越单一的服务器,扩展同一个邮件系统绝对是非常之难。这是因为大多数电子邮件服务器最初都是被设计成在单一的服务器之上进行使用。如果想在超越单一服务器的情况下移植这些相同的系统,通常需要使用一个数据库和/或NFS服务器,然后把所有不同节点之间的数据进行同步。当然建立大型数据库和NFS实例是可能的,但是价格同样非常昂贵,并且效率也不高。

如果想避免单一的数据库或NFS服务器的问题,也可以这样做,不过加入了很多复杂性。例如,如果想实现一个非常大的Cyrus系统,典型解决方案就是使用LDAP进行身份验证,然后使用IMAP/POP的反向代理以中断传入连接,并把它们转发到特定的Cyrus服务器之上。不过管理这样一个系统,关键部分很容易出现问题。(完整的设计,请参阅 Building a Scalable High-Availability E-Mail System with Active Directory and More  )


按这种方式设计的系统,问题在于大量的关键性服务。如果Cyrus服务器关闭,则托管在该系统上的所有用户都会处于脱机状态,虽然可以减轻这种风险,比如提供一个切换系统,定期的进行备份和同步,或者用SAN,但这些选项都很低效,而且费用昂贵。

实现大型的邮件系统很难,但是实现小型的邮件系统相对容易得多,正因为如此,每年都会有成百上千个免费电子邮件公司开始创业,然后慢慢走向消亡。当然如果系统非常受欢迎,公司却没有简单的方法来扩展规模,所以也只能被迫停止免费帐户,或者不得不关闭系统。只有少数公司有资金和技术资源,重新构建一个系统来以支持庞大的用户群。这也是为什么Lavabit效法大型的供应商,实现一个完全自定义的平台,这也是唯一的办法。Lavabit可以支持10万以上的用户,并且提供一个足够低的成本基础,使企业有利可图。

其实保证所有大型系统管理和成本效益的关键就是要保持简单,系统的关键故障点越少,系统的运行越稳定。(文/王鹏,审校/仲浩)

阅读更多:Lavabit Architecture - Creating A Scalable Email Service

良心企业Lavabit、Slient Mail相继关闭,美国云安全已死?

从Social到Big Data,移动App蚂蜂窝转型推新品 《近匠》nice曹大鹏,从男装导购到潮人社区的心路历程 DevOps扼杀的不是开发者,而是开发生产力! 利用Docker构建开发环境 Netflix公布Cassandra新性能:基于AWS的百万次写入每秒 一周消息树:谷歌Android遭遇“颠覆”危机 微软发布新应用Snipp3t,iOS平台首发且无Windows Phone版 TOP10优秀微信开发商随后揭晓 2014微信开发者大会开幕在即 8月12日:PC鼻祖IBM 5150迎来33周年 平板创作3D展现:蒙特利尔大学发明Hyve-3D设计系统 Quick Charge技术解析:关于手机快速充电的那些事儿 性能分析十八招,你用哪一招? 流程在企业内的作用及成熟度 Gartner:至2017年Chromebook销量将增2倍 后稀缺时代思考:机器横行下的人类夹缝求生 TIOBE 2014年8月编程语言排行榜:Swift跌出Top 20 精华回顾!历届MDCC大会精彩演讲与议程汇总 《近匠》Fancy3D:亿级游戏背后的轻量级引擎 假如李小龙是程序员…… Docker已扎根新一代PaaS 三星或发布首款头戴式VR设备Project Moonlight 英特尔亚太研发总经理何京翔:数据化时代背后的智慧 云络网络科技CEO Steve Mushero:游戏行业的云运维 腾讯游戏运营管理中心总监刘栖铜:腾讯游戏云的理想与实践 一号专车产品总监曹景辉:LBS应用仍有无限的创新空间 昆仑游戏总裁张益豪:做好中国游戏的海外代理 游族首席运营官陈礼标:重点打造全球化IP 我是怎么利用微信月收入三万以上的! 我的Y Combinator黑客马拉松之感! 最炫HTML5 JavaScript框架Famo.us融资2500万美元 看板先驱David J. Anderson:看板方法拉动互联网时代敏捷变革 高分求救:在QT下,我已经实现了对一个XML的解析,但是对DTD的解析如何实现,谁给我讲讲,或者给我源代码更好。 关于ImportFile()执行后数据窗口update()的问题 有人参加过软件测试工程师的认证吗? 寄存器分段。。。 请问哪里有数据库设计规范方面的资料 关于使用inet控件对ftp操作的问题 一个设计方面的问题,各位高手请进!! 急急!清VB.net高手帮助.如何实现利用扬声器发生程序? 对象参数问题 如何得到文件路径 关于窗体的管理 JAVA代码操作数据库备份MYSQL? 我要将TEST01下所有的表授权有没有更简便的方法??? 数据库面试题,大家看看(给分无商量) 存储过程问题拉!帮忙看看吧! 关于ExportMap输出图片的问题? Image控件的问题? sql server 连接 请问无组建上传的详细代码解释。 怪问题! 对文件操作总报I/O error 32,请教???? 网上邻居的问题。 有一个比较基础的问题想同大家共同探讨。 急需各位高手帮忙 数据库冷备份脚本 在网页里如何检测IP地址? 调用其它程序问题! 谁能给我一个进销存的库结构啊 ▲▲▲ 有个"矩阵加括号"的通用程序,如何把它改得更好!!! "link"是什么意思? VB控件的问题 到这里放松一下吧:) 水晶报表报登录失败有什么原因? windows advanced server 2000 的雙網卡問題? SQL SERVER 在ASP 中的分页技术 socket数据传输中网络断开,如何处理? <<黑客II>>人物分析搞怪版 简单问题请教!!急!! 请问MSSQLServer7可以直接通过COPY数据库达到备份的目的吗? 各位大鸟们:帮兄弟拿个主意? 怎样改变webform的caption阿 怎样在程序中实现关闭或开启触发器? 如何把CListCtrl的滚动条移到最底端? TPageControl怎么动态生成一个TabSheet? vb6的工具菜单下有一个添加控件集工具,可以添加按钮列表框,树状视图列表视图拆分条,移动钮列表框3种,请问还可以找到更多的控件集吗? 请问为何cup周围有两个电容鼓起来? 上传文件时,出现Access to the path "c:\inetpub\wwwroot\upload\abcrar" is denied. TPageControl怎么动态生成一个TabSheet? treeview控件,如何能删除被选的节点的相邻两层?? 图像缩略图的问题,在线等待,急,我就只剩这些分了,倾囊相送,不要嫌少,谢谢了 指针,变量声明的问题,急,在线等待 三角形中的π是什么东西? 地缘战略位置是什么意思? 如果没有任何保护措施,老虎将在何时灭绝?A 据专家估计,将在2022年灭绝B 据专家估计,将在2032年灭绝C 据专家估计,将在2042年灭绝 草履虫游向食物和海豚顶球表演,哪个是反射? 英语翻译这首歌是披头士约翰列侬的!Motheryou had mebut I never had youI wanted youyou didn't want meSo II just got to tell youGoodbyegoodbyeFatheryou left mebut I never left youI needed youyou didn't need meSo II just got to tell youGoo 以党为主体做某事的意义 结合自身条件谈谈对对课外体育运动的看法 英语翻译John Winston Ono Lennon,was born October 9th 1940 in Liverpool England.He was killed December 8th,1980 in New York.His parents seperated when he was four years old.After that he moved in with his aunt Mimi.His father was a commercial seam 為什么男人是女人的依靠,為什么女人不可以是男人的依靠?為什么男人娶女人囬傢,而不是女人娶男人囬傢?為什么男人負勒女人,教負心漢;女人揹叛勒男人叫濫貨? 国际体育的重要意义,结合事件体育概论,论述题, 高中阶段需要用多少倍的显微镜 生男生女到底取决于谁?是女人还是男人? 有谁知道"Press of Northeast University of Technology"是什么意思啊?应该是出版社或报刊一类的. 备注和批注这两个词中的注什么意思 目前,已有97个世贸组织成员承认中国的完全市场经济地位.而美国、日本、欧盟等发达国家均拒绝承认中国的市场经济地位,并以完全市场经济地位来压制中国,这一情况表明( )A.经济全球 现在是什么天气 判断一个点是否在一个三角形面内. 新经济自由主义和极端自由经济主义的名词解释. 尽收眼底的意思是什么 怎样判断一个点是否在三角形内或者外我需要 的 我用来编程的啊 用方程的方法啊下面的大哥 你说的 方程 我还是没搞懂啊 你用 普通的方式给我写出来好嘛 就是X+Y=0 这样的形式 降压型DC-DC电源转换器怎样提高带负载能力模电课设要求的,12转5伏,用555做的,现在带上5Ω电阻后电压降至1.7伏,是为什么呢?因为电流过大吗?怎么解决呢? 如何提高孩子集中力?多做体育运动 如何判断一个点在三角形内要通过计算。 知道三角形六个边角元素的其中哪几个可以确定一个三角形? 辩论:举国家之力办体育应该终止辩论赛题目,我邮箱是2009101626@hstc.edu.cn C#判断一个点是否在三角形内?在Form窗体中,指定三个坐标点A(ax,ay),B(bx,by),C(cx,cy),怎么判断一个任意点P(px,py)在点A,B,C所组成的三角形区域内? 什么是三角形6个边、角元素今天做一道数学判断题,“三角形6个边、角元素,有5个元素分别相等的两个三角形是否全等”不懂是哪“6个边、角元素”谁能告诉我? 地缘与区位区域有何不同 c++ 怎么判断一个点在三角形内已知三角形3点(x1,y1),(x2,y2),(x3,y3)和任意1点(x,y),怎么用程序判断点(x,y)在三角形内 在Rt三角形中共有几个元素 什么是公共政策制定过程的社会化 收入的初次分配和再分配有什么区别? y=sinx+3/cosx-4求函数的值域提示:先把分母乘到左边,然后整理为sin(x+θ)=f(y) 然后 f(y)的绝对值小于等于一,解出不等式.计算量可能用点大,只需要把函数整理为sin(x+θ)=f(y) 社会化社区卫生服务体系的特点有哪些 财政收入是再分配还是初次分配? 三角形的6要素是什么 台湾现在还属于中国管吗?可是台湾无论财政缴纳,都和中央没有关系.虽然1945时回归了中国,可那是国民政府,自新中国成立,台湾就与中国分裂.到现在我也没有听说中国收复台湾主权的问题,也 谁把谁的明媚尽收眼底意思 含有l,y,y或y,u,y,u的英文单词就是同时含有l、y、u其中两个或三个字母的英文单词 五六十年代,苏联(加加林卫星)有优势的时候,美国怎样理解集体所有制制?(共产主义) 为什么不会有人能和你感同身受?好伤心…… 到底是方的还是圆的? 英文Technology的音标是什么? 物理隔离法中是不是所有整体受到的力每个个体都会受到请不要复制百科= = 高中物理受力分析什么时候可以用整体法?我指的是满足什... acadmic / enthusiastic /information / brilliant / 都怎么念 ,音标也写上,也要翻译, 批注的注意思是什么 整体法做受力分析的题目该如何做? 孟子.荀子 .孙子.三国志 哪个不是先秦时代的happywanghaoyi 一个长方形被分成了四个不同的小三角形,其中①号三角形的面积是6平方厘米,②号三角形的面积是长方形的6分之1.长方形的面积是多少平方厘米? 三角形中有哪些元素? Information Technology Management里面出现Quality Information Technology Plan和Information Technology Quality Plan 两句话好像这是调换了一下次序,应该怎么翻译啊 国家干预主义取代经济自由主义能否消除经济危机 三角形有几要素 像一个海豚顶球的汽车标志是什么 MATLAB里如何计算带有未知量的积分?如 f(x,t) 是有关x和t的函数,要计算 ∫ f(x,t) dx其中x的上下限为确定的两个数,计算出来的积分结果应为t的表达式,如何用int实现?或者用其他积分函数实现也可 长方形ADEF的面积是16平方厘米,三角形ADB的面积是3平方厘米,三角形ACF的面积是4平方厘米求三角形ABC的面 谁知道和 秋水相关的两个成语跟庄子的 秋水有关两个成语是啥?【原文】秋水时至(1),百川灌河(2);泾流之大(3),两涘渚崖之间不辩牛马(4).于是焉河伯欣然自喜(5),以天下之美为尽在己(6).顺流 备注和批注这两个注什么意思 什么是经济自由主义,什么是国家干预主义,它们对公共政策有何影响? 天津狗不理与新加坡企业合作拓展亚太市意总理会见美国务卿 要求解释监听意通租客伪造房产证卖房 新\"房东\"不菲总统再称菲政府不会就香港人质事件致意总理会见美国务卿 要求解释监听意通韩国政府敦促日方删除主张争议岛屿主权中方对苏丹总统访问南苏丹并达成多项共王晨会见日本日中友协代表团韩国要求日本删除主张独岛主权视频亚太地区主要股市多数下跌浙江再增1例人感染H7N9禽流感病例杭州“越野哥”当街救人勇退三劫匪 民中国确认544种外来生物入侵 已成最狗追捕兔子摔断腿 滞留高山上三周奇迹加拿大卡尔加里市长胜选连任 笃信伊斯韩国政府敦促日方删除主张争议岛屿主权世界主要城市10月24日天气预报浙江丽水文化精品展亮相天津 市民可动中国卫星“驰援”澳大利亚林火救灾北京大学新闻发言人就不续聘夏业良一事西安东郊一建筑发生爆炸 消防已赶赴现手指脱节被辞 男子欲跳楼男子因口角打瞎女友右眼故宫研究院正式成立下周可上网查信用报告中国记协已介入调查北京新推出自住商品房周末到大鹏享受“沙滩嘉年华”庆广佛地铁3周岁我们邀你睇电影啦个股门诊AEMBA蝉联亚太地区在职MBA榜首精明主妇北京新推出自住商品房台山警方两次设伏擒盗贼华南首家产权式汽车产业园起航重点项目完成投资近6亿元CBA新赛季首轮“大鲨鱼”宝山亮相探索建立建设工程“工联网”金隅股份(601992)爱大鱼大肉但缺蔬果肥胖者更易营养缺乏小伙在公司宿舍楼坠亡failed: 下班回家路线变化,能
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘