1. 介绍
很感谢几个新的web mail产品(比如像IMP),使得web设计者可以通过这些产品来在他们的网站上提供基于web的邮件服务.尽管采用采用这些产品来实现web方式邮件服务的解决方案已经越来越流行,但是邮件服务可扩展性这个问题已经被提出来.很多web mail系统(包括免费的)都是设计在单个mail和web服务器上,所有的限制都取决于一台服务器上面.在这种情况下再扩展几千个用户是简单但不容易实现,这就是我为什么开始设计一个在实际应用中可以无限扩展而且实现简单的系统.
1.1 背景
基于Web的电子邮件系统就像野花一样迷人,以至于像hotmail和bigfoot这样的站点变得如此流行,其他的站点看来也是把提供基于web的邮件服务添加到了他们的服务项目表中.事实上,很多像EmuMail和IMP这样地产品已经被开发出来以帮助人们向他们的客户提供这项服务.不管怎么样,基于这些产品之上的站点变得流行起来,同时也在加重了网络和机器的资源负担.如果没有一个可定制的解决方案,就像Hotmail一样,很多使用了off-the-shelf(我想可能是没有自己开发或者定制性差那种意思,就靠各位去理解了) webmail系统的站点已经开始感到发展期的困难了.正以为如此,找到一个能够相对简单地实现而且可以扩展到数千甚至是数百万用户的解决方案的需求变的越来越紧迫.
我是DigitalNation的一名开发人员,现在在为Worldcities工程工作. Worldcities不仅提供世界各地的本地新闻和信息,而且还提供基于web的邮件服务.因为很多非美国的ISP没有给他们的客户提供电子邮件服务,Webmail在美国以外的地区是很流行的.正因为 Worldcities不是以美国为中心,所以我们很快意识到邮件服务的可扩展性是很必要的.
我们以前的邮件服务系统是采用两种服务器,一种是运行Sendmail和UW IMAP,另外一种是运行 IMP, 它是一个使用PHP编写的开放代码的webmail系统(应该说是最好的,我认为).这种邮件服务系统很容易实现而且工作得很好.但是,经过两三个月后,发现我们的邮件系统明显负载过重,所以我们必须要很快找到一个新的解决方案.而且我们有很多正在使用本系统的用户,新的方案不能够遗失他们已经存在的电子邮件.
以前我们选择IMP是因为它是免费的(比如说我可以在它的基础上进行一些必要的修改),选择 Sendmail和UW IMAP是因为它们是标准的工具.很明显,Sendmail和UW IMAP对我们的用户来说是太慢了,因此我开始研究其他的MATs和IMAP服务器软件.
我最后决定采用postfix作为MTA, 因为它至少比Sendmail要快三倍, 采用cyrus是因为它既不需要主机的系统帐号也不需要像UW IMAP那样消耗很多系统资源.我们保留了IMP,因为它不单是免费的,而且很容易配置.我们也不想用户受制于新的界面. 在研究的过程中我发现 postfix能够使用LDAP目录服务来作为它的别名数据库(使用maildrop和mailacceptinggeneralid属性),而且有一个补丁程序可以让Cyrus使用LDAP来进行用户认证.配合DNS循环解析(译者注:DNS循环解析是为同一个名字分配多个IP地址,它在Yahoo等相当大的站点应用,实际效果相当不错),把web请求和发送进来的邮件分散给不同的服务器进行处理,这样做就是一个具备了高可扩展性的解决方案.剩下的问题是怎么把这些功能集成在一起来.
这个方案的可扩展性主要是postfix能够根据LDAP中对应用户目录项的maildrop属性值来把邮件转发到其他的用户信箱或者别的邮件服务器上.我们要做的只是赋给属性maildrop一个完整有效的邮件地址作为它的属性值.例如,如果DNS的MX记录指定了一组邮件服务器并且从LDAP中检索的结果是把发送给user@dom.ain的邮件转到user@machine44.dom.ain,postfix就会把发送给该用户的邮件转发到machine44这台邮件服务器上.有了这个功能,你就可以在你的域内设置无限个邮件帐号.