📄 1339.html
字号:
</SCRIPT>
<BODY text=#000000 bgColor=#ffffff leftMargin=0 topMargin=0 marginwidth="0"
marginheight="0">
<CENTER>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TR>
<TD vAlign=top>
<TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD><IMG height=1 src="images/spacer.gif" tppabs="http://www.linuxhero.com/docs/images/spacer.gif" width=296
border=0></TD>
<TD><IMG height=1 src="images/spacer.gif" tppabs="http://www.linuxhero.com/docs/images/spacer.gif" width=76
border=0></TD>
<TD><IMG height=1 src="images/spacer.gif" tppabs="http://www.linuxhero.com/docs/images/spacer.gif" width=100
border=0></TD>
<TD><IMG height=1 src="images/spacer.gif" tppabs="http://www.linuxhero.com/docs/images/spacer.gif" width=98
border=0></TD>
<TD><IMG height=1 src="images/spacer.gif" tppabs="http://www.linuxhero.com/docs/images/spacer.gif" width=79
border=0></TD>
<TD><IMG height=1 src="images/spacer.gif" tppabs="http://www.linuxhero.com/docs/images/spacer.gif" width=103
border=0></TD>
<TD><IMG height=1 src="images/spacer.gif" tppabs="http://www.linuxhero.com/docs/images/spacer.gif" width=26
border=0></TD>
<TD><IMG height=1 src="images/spacer.gif" tppabs="http://www.linuxhero.com/docs/images/spacer.gif" width=1
border=0></TD></TR>
<TR>
<TD colSpan=3><A title=linux知识宝库
href="index.html" tppabs="http://www.linuxhero.com/docs/index.html"><IMG height=83
src="images/header_r1_c1.gif" tppabs="http://www.linuxhero.com/docs/images/header_r1_c1.gif" width=472 border=0
name=header_r1_c1></A></TD>
<TD colSpan=3>
<form action="http://www.linuxhero.com/docs/search.html" method=get>
<table
style="BORDER-RIGHT: #c4c4c4 1px solid; BORDER-TOP: #c4c4c4 1px solid; BORDER-LEFT: #c4c4c4 1px solid; BORDER-BOTTOM: #c4c4c4 1px solid"
cellspacing=0 cellpadding=3 width="95%" border=0 align="center">
<tbody>
<tr>
<td noWrap background="images/bgline.gif" tppabs="http://www.linuxhero.com/docs/images/bgline.gif">
<div align=center><font class=normalfont>搜索文章:
<input type=hidden value=result name=action2>
<input type=radio checked value=title name=type>标题
<input type=radio value=content name=type>内容
<input type=image src="images/button_go.gif" tppabs="http://www.linuxhero.com/docs/images/button_go.gif" border=0 name=image2>
</font></div>
</td>
</tr>
<tr>
<td noWrap>
<div align="center">
<input maxlength=100 size=30 name=keyword2>
</div>
</td>
</tr></tbody>
</table>
</form>
</TD>
<TD rowSpan=2><IMG src="images/header_r1_c7.gif" tppabs="http://www.linuxhero.com/docs/images/header_r1_c7.gif" width=26 border=0 name=header_r1_c7></TD>
<TD><IMG height=83 src="images/spacer.gif" tppabs="http://www.linuxhero.com/docs/images/spacer.gif" width=1 border=0></TD></TR>
<TR>
<TD background="images/bgline.gif" tppabs="http://www.linuxhero.com/docs/images/bgline.gif"><IMG height=22
src="images/header_r2_c1.gif" tppabs="http://www.linuxhero.com/docs/images/header_r2_c1.gif" width=296 border=0
name=header_r2_c1></TD>
<TD background="images/bgline.gif" tppabs="http://www.linuxhero.com/docs/images/bgline.gif" colSpan=5>
<DIV align=right><FONT class=normalfont>当前位置:
<A href="index.html" tppabs="http://www.linuxhero.com/docs/index.html">本站首页</A>
<font color="#FF6699">>></font>
<A href="type19.html" tppabs="http://www.linuxhero.com/docs/type19.html">email</A> | <A href="copyright.html" tppabs="http://www.linuxhero.com/docs/copyright.html">版权说明</A></font></DIV>
</TD>
<TD><IMG height=22 src="images/spacer.gif" tppabs="http://www.linuxhero.com/docs/images/spacer.gif" width=1
border=0></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=10 cellPadding=0 width="100%" bgColor=#ffffff
border=0>
<TR>
<TD>
<TABLE cellSpacing=0 cellPadding=3 width="100%" border=0>
<TR>
<TD vAlign=top align=middle width="60%">
<TABLE cellSpacing=0 cellPadding=0 width="100%"
background="images/back.gif" tppabs="http://www.linuxhero.com/docs/images/back.gif" border=0>
<TBODY>
<TR>
<TD vAlign=top width="80%">
<DIV align=center>
<FORM action="search.html" tppabs="http://www.linuxhero.com/docs/search.html" method=get>
</FORM>
<TABLE cellSpacing=0 cellPadding=0 width="95%"
border=0><TBODY>
<TR>
<TD background="images/bgi.gif" tppabs="http://www.linuxhero.com/docs/images/bgi.gif"
height=30></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=3 width="95%"
align=center border=0>
<TBODY>
<TR>
<TD>
<TABLE cellSpacing=0 cellPadding=3 width="100%"
border=0>
<TBODY>
<TR>
<TD vAlign=top>
<p><FONT class=normalfont><B><font color=blue>建立高可扩展的web邮件系统</font></B></FONT><BR><FONT class=smallfont color=#ff9900>2004-04-23 15:18 pm</FONT><BR><FONT class=normalfont>作者:Ideal<br>来自:Linux知识宝库<br>联系方式:无名<br><br>1、简介<br>
<br>
近年来几种新的web邮件产品(如IMP)的出现使web设计者能利用这些产品很容易的实现基于web的邮件系统。然而随着使用这些产品的web邮件系统解决方案日趋流行,web邮件系统的可扩展性的矛盾就日益尖锐。大多数web邮件系统(不仅仅局限于开放资源的软件)都是在单邮件服务器单web服务器上实现的,从而出现了单个服务器的性能瓶颈。如果系统需要扩展到可以同时支持数以千记的用户时,往往就出现问题。所以需要一种有良好的可扩展性的web邮件解决方案。<br>
<br>
1.1、背景材料<br>
基于web的邮件系统的发展是速度非常迅猛的,随着bigfoot,hotmail,rocketmail等wen邮件系统的出现,web系统应用日益受欢迎。从而其他很多ICP也纷纷在自己的站点上添加WEB邮件服务。由此,诸如EmuMail及IMP的产品开始出现来实现WEB邮件系统。然而,随着基于这些产品的web邮件站点变的越来越受欢迎,逐渐增加了网络及服务器的负载。由于没有可定制的解决方案,如hotmail等直接使用现成的这些产品的web邮件系统逐渐出现了问题。所以,对寻找一种即相对容易实现又有良好的可扩展性,可以支持几千到百万级的用户的的web邮件的解决方案变的越来越重要。<br>
<br>
某ICP的web系统的的解决方案是:两台服务器,一台运行 Sendmail和UW IMAP,另外一台运行IMP(IMP的相关材料可以通过访问这里得到),其可以说是最棒的一个使用PHP开发的开放源代码web邮件系统。该系统非常容易实现,并且工作情况良好。然而,若干个月以后,随着申请用户的到达一定数量,可以明显的发现该系统的负载过大。所以需要寻求一种新的解决方案,同时由于该ICP已经有一定数量的用户,所以而且不能丢弃这些用户的信件。先前该ICP选择IMP是出于起优秀的性能及遵从开放源代码的特点(这样以来,就可以自己对IMP进行二次开发而不涉及版权问题)选择Sendmail和UW IMAP是因为它们都是标准的工具。但是这两个系统虽然功能完善强大但是过于庞大复杂,从而影响了其运行效率,所以寻找其他的替代工具。这里推荐一个名为postfix的工具来替代sendmail,因为它至少要比sendmail快三倍,而且其同样是免费软件;用cyrus来替代UW IMAP,是因为cyrus不需要使用系统的帐户而且不象UW IMAP那样消耗资源。这里仍然使用IMP是由于其易于配置,无须考虑版权问题而且可以保持用户以前的界面不变。同时,postfix也支持LDAP(LDAP可以在这里 这里 这里得到),可以使用LDAP作为其别名数据库(使用maildrop属性及mailacceptinggeneralid属性)。同样的,有一个Cyrus补丁可以使Cyrus使用LDAP服务器实现身份验证。将前述各种工具和对多台前端web/incoming邮件服务器的DNS查询实施轮转响应结合起来,就有了构造一个有良好的可扩展性的web邮件系统的解决方案所需要的全部构件。下面的问题就是如何配置安装了。<br>
<br>
将这些元素组成一个基于web的邮件系统也不是一个困难的事情。可扩展性来自于postfix基于LDAP服务器的maildrop特性可以将邮件转发到别的用户或者服务器的功能。只需要为maildrop特性提供一个完整的邮件地址,该完整的邮件地址指出了该用户的用户邮件所在的真正的服务器。例如:DNS的MX记录指向前端邮件服务器mail.dom.ain,并且LDAP指示发送到地址user@dom.ain的邮件实际上是发送往user@machine44.dom.ain,然后运行在前端邮件服务器的postfix将把该邮件转发给服务器machine44上的user用户。使用这个特性,管理员就可以在本地域没有限制地开邮件用户。在性能需要时,只需要增加后端邮件服务器即可。 这里面比较棘手的问题是如何从后端的邮件服务器中取得邮件,然后传递给IMP。由于IMP已经提供在不同的服务器上WEB服务器和邮件服务器的支持。所以需要解决的问题是如何从LDAP服务器上取邮件服务器名,而不是依赖于配置设置及单台邮件服务器。<br>
<br>
实践证明设置邮件服务器是非常容易实现的。只需要在一个文件中仅仅几行代码,并且IMP的缺省的配置文件中增添新的配置参数。这里使用postfix及IMP分别实现在多个邮件服务器发送(forwarding)读取邮件。<br>
<br>
然而,UW IMAP仍然是一个需要解决的问题,由于多个原因,它的效率对于大型web文件系统来说过于低下:它使用一个没有分层的文件,这种结构对于大量邮件消息可扩展性不够好,它使用linux主机自身的认证系统,而主机认证系统需要为用户建立主机系统帐户,而且每次认证都需要解析/etc/passwd文件,所以效率相对来说比较低下。故这里使用Cyrus来替代UW IMAP,Cyrus来作为系统的IMAP服务器不具有上面所述的缺陷。而且,通过Clayton Donely开发的Cyrus的LDAP补丁http://www.linc-dev.com/,这里可以使用与postfix相同的LDAP来实现认证。这样就使新的WEB邮件系统不但有良好的可扩展性,而且很轻便。系统里不需要保存多个口令拷贝,只需要在LDAP中保存一份就足够了。这就是LDAP的设计目标。<br>
<br>
这个系统具有若干个web/mail服务器,在客户(浏览器)对前端邮件服务器进行DNS查询时,DNS被配置为该域名在若干台web/mail服务器间轮转。这些web/mail服务器使用LDAP服务器选择一个合适的后端邮件服务器来转发和读取邮件,而后端的邮件服务器服务器同样借助LDAP服务器来进行用户认证。由于LDAP服务器也是可备份的。所以整个系统里任何一个节点的崩溃会导致系统的不可用。这正是可扩展性的实现目标。<br>
<br>
1.2 要求<br>
该文档提到了三种服务器:web服务器,imap服务器和LDAP服务器。这些服务器可以位于独立的主机上,或若干个独立的机器上(例如:23个web服务器,5个LDAP服务器和10个IMAP服务器),或单台服务器上。同时需要具有在linux环境下从源代码安装软件的基本知识<br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -