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

悼念斯诺登使用的加密电邮服务——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相继关闭,美国云安全已死?

在运行时修改DataEnvironment的连接字符串-VB资料 在抓取資料庫之資料前先計算資料總筆數 -VB资料 增加 MsFlexGrid 的编辑功能-VB资料 真正删除数据库的记录 -VB资料 用VB制作屏幕保护程序 VB多媒体程序设计 VB设计动画时钟 VB游戏写作技巧(1)秀图篇 VB游戏写作技巧(2)网络篇 VB中播放WAV文件 VB中播放三维动画编程一例 Visual Basic 5.0多媒体创作技巧 Visual Basic 5.0中实现视频画中画 Visual Basic 中制作流水灯 Visual Basic动画编程技术 Visual Basic环境下Video/ Audio压缩数据流播放技术 Visual Basic设计多媒体应用程序 Visual Basic影音控制 Web动画图像分解在VB动画设计中的应用 播放 .flc 动画 -VB资料 播放 AVI -VB资料 播放MP3文件 -VB资料 播放背景音乐 -VB资料 播放声音文件 -VB资料 播放资源文件文件中的声音-VB资料 不用ActiveX控件也能播放声音文件-VB资料 VB创建动态图标 电影结束画面的卷动效果-VB资料 二进制操作截取VCD片断 -VB资料 非常VB测声卡 关闭屏幕保护功能,改变屏保等待时间 -VB资料 求救!请教关于__cdecl的问题 近日开发一足球博彩性质网站,请各位推荐几个漂亮的前台页面参考参考,非常感谢! 有关WebService的问题,请高手指教!!!Up有分 我装上apache_2.0.43后,输入http://localhost:端口/不能运行(有人说是端口冲突,我改成别的端口还是不行),还有什么地方容易出错,请高手明 关于File的一个问题:如何基于已经存在的文件生成File对象? 郁闷呀!这两段程序有什么不一样的?送分 win98上两台机同时“装Internet连接工享”,却出现不允许,自动关掉了共享. 救命啊!!!!!!!!!!!!!!!!!!!!!!!!!!!11111 哪里能下在受信任的根证书? 高分相赠;控件问题,想实现既可以选择又可以输入的控件;如何做谢谢; 获取当前系统日期的函数是什么? 怎样写权限设置,通过用户权限控制菜单??? 救命!!!!!!!!!!!!!!!11 谁做过OA的安装盘?有没有办法用第三方工具配置OA系统? 一个简单的错误,请各位大哥帮助! 进入WIN98蓝屏,请高手赐教,谢谢 紧急求助,如何编写文本使得程序能读取网络上另一台机上的表 关于session的问题 如何用VC对麦克风编程哪? 为什么我的win2000的web服务器老是莫名其妙的停掉呢? 各位老大!能不能用DEPHI写一个程序创建NOTES表单???? 怎样把程序做成曲线图的样子? COMBOBOX查找问题? 很菜的,关于窗体的问题 怎么给jbuiler添加oracle驱动程序!!!!! 谁有手写签名和痕迹保存留的例子???能给我一个吗???一定重谢!! 哪有for win的gd库下载?谢谢 我得代码有错误吗!!在线紧急等待 如何用Java访问微软的DDE Server? 在windows xp中怎么建立虚拟服务器呀? 解决问题,马上结贴 xp風格的問題 请问如何让一个表格的边框的宽度和表格内部的线的宽度不一样? 请问wsad和eclipse哪里有下呢? 如何理解下面的程序段 调查:你(单位)愿意花钱买服务端控件吗? 为什么有些网页是繁体字! 我终于知道什么是英雄了! 关于快捷键。 一个丑人的自白(爆笑) 转载 如何实现信息反馈? 怎样使DataGrid固定显示8行??? 一个简单的问题,关于CListCtrl.. C++文件流的怪问题,竟然不能再次打开??? 怎样在win2000 专业版上使用PHP Linux下如何知道有哪些端口未被使用?? 共享上Internet网的另一台机为何一定要配上DNS服务器地址? 来共同研究开发 文件的变量名拼写错误的检查。。。 人生交叉点, 大家进来帮帮忙 在线等待急急!在超链中有的什怎么传不过去? 求由抛物线Yˇ2=8X(Y>0)与直线X+Y-6=0及Y=0所围成图形的面积微积分、 酱爆钉螺的做法 穿山甲 说了什么 抛物线y=x^2-1,直线x=2,x=0,y=0所围成的图形的面积? 这是英雄的中国人民坚强不屈的声音(缩句) 哪些动物是由蛋或卵孵化最好全一些 请问:穿山甲的磷片有何作用(药用价值)?是鳞片不是整只穿山甲+请注意啦是鳞片不是整只穿山甲 我家花盆有钉螺?怎么办?就是钉螺的形状,很小,估计是才长出来的,呈乳白色,有的附着花盆,那是钉螺吗?怎么清除?(我家住在长沙的小区里的6楼)请专业说明! 飞蛾为什么那么爱扑灯呀?烦死了 家里花坛里出现了大量的钉螺,如何能在不伤害植物的情况下杀灭它们,最好能用简单的方法 海水缸里的钉螺有没有吸血虫?吸血虫会不会生活在海里? 为什么飞蛾爱光 《通信》的英文怎么拼? 血吸虫寄生在钉螺里,人和猪等若进入有钉螺的水体中就可能感染血吸虫病.下列各组对应 关系错误的是A.人——易感人群 B.猪——传染源 C.血吸虫——病原体 D.钉螺——传播途径 冷漠的反义词无1无 他经常给我通信英语怎么说 蚯蚓在生态系统中属于什么成分?生态系统中的分解者有哪些 血吸虫幼虫在钉螺体内繁殖,为什么?生物课本上说的 王虫虫没家 看到你的回答了 她现在怎么样? 暴走漫画穿山甲说什么了 血吸虫毛蚴时期必须依附在钉螺中发育成尾蚴吗?老师的提问,必须收集又找不到,晕死の_の 王虫虫是谁 从生态系统的组成成分看,蚯蚓属于……?为什么……? 为什么夏天飞蛾要扑灯? 求由抛物线y=x^2-1,直线x=2,y=0所围成的图形的面积三分之八,还是三分之四. 王虫虫??、、、? 蜘蛛几只眼睛几条腿? 求由抛物线y=x^2-1; 直线y=0,x=2,x=0所围成的图形的面积 这个季节的昆虫有那些 冷酷的反义词是什么 可以用什么词来形容蟋蟀的劳动 这是什么昆虫 为什么在这个季节出现 如何消灭有毒没有 为什么这么多 冷漠和幸福的反义词分别是什么? 唐伯虎--《桃花庵》以前有看过一部电视剧是讲唐伯虎的.其中主题曲开始就是他的桃花庵歌:桃花坞里桃花庵,桃花庵下桃花仙; 桃花仙人种桃树,又摘桃花卖酒钱.酒醒只在花前坐,酒醉还来花 夏天蝈蝈怎么养 远古动物咬合力排行榜(按磅来算) 唐伯虎的《桃花庵记》谁会 魔兽大裂痕新增的异种虫后那俩虫后是就在地面上跑吧.不在洞里吧?我是问是在地面上还是在洞里 台阶 这样一位父亲,作者在他身上倾注了什么样的情感 长方体的体积是1620 立方厘米,长宽高都是自然数,他们的棱长和至少是多少厘米? 帮我解决问题(数学、英语)----------------------------------数学---------------------------------1.常用的体积单位有( )、( )、( );计量液体的体积常用( )和( )做单位.2.在括号里填上合适的体 穿山甲怎么杀 一个长方体的体积是1620立方厘米,它的长宽高均为自然数,它的棱长之和最少是( )厘米. 来个数学高手解决这英文题目~!~!~~~A plane is flying due north at 400km/h. A wind from due west is blowing at 40km/h, which blows the plane slightly off coures. what is the plane's new direction(angle)and new velocity? 顺便问下,vertica 请问谁知道这是什么虫子、一至两厘米长 棱长和是64厘米,且棱长都是自然数的长方体中,体积最大是多少立方厘米 write a word problem that can be evaluated by the algebraic expression y - 95,and evaluate it for y = 125给个例子好不好 你认为当今最值得发扬和提倡的传统美德是什么?写一篇简单的议论文 棱长的和是64厘米,且棱长都是自然数的长方体中,体积最大是多少立方厘米?急 1 M got an 8 percent cost-of living raise for 20$ per weeka M‘s new weekly salary b $2602 A the difference between 2 num bers,each of which is between 3 and 4B the sum of 2 numbers.each of which is between 1 and 2这两个题目中哪个一个比 穿山甲说了什么? 谢谢你们让我快乐过,用英语表达 1、英语字母“R”在中间的单词有哪些?(那单词一定只有3个字母)2、当你见到同学小明时,你向他问好,该如何说?(1)How are you?(2)Nice to meet you.(3)T'm fine.(4)Bye-bye!1、判断题一个等腰三角形的 穿山甲说了什么是什么意思 表达高兴用哪个英语应该是说人们高兴的时候会说那个英语 关于忘我的作文 议论文 想要了解龙至尊漆怎么样?油漆工给解答下 如何用英语表达不开心 写复数形式. 穿山甲说了什么? 杨澜提问郎朗被指语意不善 晒合影澄清伊拉克两起自杀式袭击致21人死亡日本称福岛核事故泄漏的放射性铯污染周韩国议员结束对开城园区考察回国 未与北京警方破获“10.28”暴力恐怖袭韩国议员赴开城考察 吁韩朝积极推动工李开复病后首露面:趁容颜美好时让大家韩国议员结束对开城园区考察回国 未与商务部敦促欧盟执行WTO中欧紧固件反玻利维亚计划大力发展核能等替代能源中国前三季度国际收支经常项目顺差13巨丰投顾:多板块出现井喷 市场方向渐父母秘密策划 6岁白血病童收全球百万世界主要城市10月31日天气预报新快报记者陈永洲因涉嫌损害商业信誉罪浙江省拿出百万元奖励一线杰出职工获评服役三十年的运河桥明起拆除 见证杭州浙江从明年开始开展无违建县创建活动杭州一大妈在城市空地种2000余株罂浙江临海休闲产业进入“双时代”打造“宁波红光集团等6企业涉税严重违法35NBA2000年状元秀马丁退役 曾率纽约华裔男子被认定虐待动物 遭警方逮英国网民晒搞笑照片调侃高温天气(组图李克强圆满结束欧洲之行抵京和硕县社区为30年党龄党员庆生裕民县资助贫困学生圆梦北京阿拉山口市卫计委召开第十七个党风廉政中外媒体走进裕民县采风玛纳斯县旱卡子滩乡利用沼液沼渣助力生男子捅死前女友及其新男友 在围捕中畏李克强考察空客总部 中法总理见证航空南沙礁盘上中国守军曝光 永暑礁上建炮工商总局:“三证合一”有利于降低投资新疆喀什消防地震救援队集结做好救援准纳达尔:我会更加努力改变现状 输球因中哈边境团场遭暴风雨袭击 灌浆小麦大张春贤批示皮山地震:最大限度保障群众李克强访问马赛推动中法经贸、人文、 埃尔南德斯友谊赛受伤 将缺席中北美洲新疆皮山6.5级地震余震20次 房屋南宁轿车失控撞死行人损毁7车 警方正
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘