首页 | 邮件资讯 | 技术教程 | 解决方案 | 产品评测 | 邮件人才 | 邮件博客 | 邮件系统论坛 | 软件下载 | 邮件周刊 | 热点专题 | 工具
网络技术 | 操作系统 | 邮件系统 | 客户端 | 电子邮箱 | 反垃圾邮件 | 邮件安全 | 邮件营销 | 移动电邮 | 邮件软件下载 | 电子书下载

邮件服务器

技术前沿 | Qmail | IMail | MDaemon | Exchange | Domino | 其它 | Foxmail | James | Kerio | JavaMail | WinMail | Sendmail | Postfix | Winwebmail | Merak | CMailServer | 邮件与开发 | 金笛 |
首页 > 邮件服务器 > Qmail > Linux下基于web的邮件服务IMP的简介与安装 > 正文

Linux下基于web的邮件服务IMP的简介与安装

出处:未知 作者:未知 时间:2005-8-25 12:14:00

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这台邮件服务器上.有了这个功能,你就可以在你的域内设置无限个邮件帐号.

我想最棘手的就是通过IMP从后台邮件服务器中读取邮件.既然IMP已经支持把web服务器和mail服务器分开,现在要做的就是用从LDAP中检索邮件服务器名来取代在配置文件中指定邮件服务器的方式,在配置文件中只能够指定在一台邮件服务器上收发邮件.这样就使得设置邮件服务器变得很简单,只需要在一个文件中添加几行代码和在IMP的默认配置文件中添加一个新的配置参数就行了.现在我们可以使用postfix来转发邮件、通过IMP从多个邮件服务器中检索邮件.

但是,UW IMAP依然是个问题.有下面几个理由:1、使用平面文件格式.2、对大量的邮件信息不具有可扩展性.3、需要使用主机系统的认证方式和系统帐号,用户每次登录都要读取一次/etc/passwd文件.4、比我们所期望的速度要慢.所以我们决定采用Cyrus, 一个没有上面那些限制的imap服务器.更值得可喜的是,有了Clayton Donely的LDAP patch for Cyrus,我们就可以利用postfix所使用的LDAP目录服务来进行用户认证.这样就使得我们的整个mail系统除了可扩展性好外,还有轻便性,因为不需要做多份password的拷贝.毕竟这也是LDAP的设计目的之一.

最后,我们需要的是一个采用DNS循环解析的web/mail系统结构.在LDAP目录服务的基础上进行邮件的转发和从相应的后台邮件服务器上检索邮件,同时也利用LDAP目录服务进行用户认证. 由于LDAP的可复制性,在这个系统结构中,我们就可以利用多台LDAP来进行互相备份(假设这些服务器间都是高速连接的),如果系统结构中一台或者某几台LDAP服务器down掉后,其他的LDAP服务器能够及时提供后备服务,不影响整个mail系统的正常运行.

1.2 假设
这份文档中提到了三种服务器:web服务器、imap服务器和LDAP服务器.这些服务可以安装在不同的机器上(比如,23台web服务器,5台LDAP服务器,10台imap服务器),或者是单台机器上.假设你了解在Unix或者Linux环境下进行源代码软件安装的知识.

1.3 需要用到的软件
下面是在这份文档中要用到的软件列表.

Apache 1.3.6
PHP 3.0.12 (需要把IMAP和LDAP编译进去)
OpenLDAP 1.2
Cyrus 1.5.19 (注意: 不要用1.6版本)
postfix 19990627
pwcheck_ldap patch for cyrus 1.5
IMP (2.0.4, 2.0.10, 2.1.3-dev也测试过)
UW IMAP (提供c-client库)
注意: cyrys 1.6使用了一种新的认证方式,名为SASL.pwcheck_ldap这个补丁没有针对这种认证方式进行开发.有人说一个针对SASL的LDAP补丁程序已经在开发了,但那个补丁什么时候能够应用,现在讨论这个问题是没有意义的.

1.4 特别注意
这份文档中提出的解决方案中有一点还没有能够做到高可扩展性,那就是SQL server.IMP使用SQL server来保存session数据、邮箱配置和地址簿.IMP的作者现在在设计一种让SQL Server也能够做到容易扩展的方法.

2. 软件安装

2.1 Web服务
在web服务器上,你需要安装Apache, PHP, postfix, OpenLDAP, UW IMAP, 和 IMP.

安装Apache和PHP是很快的,安装的具体步骤在PHP的安装文档中有说明.你必须把LDAP和IMAP 的支持模块编译到PHP中.

按照postfix附带的文档来安装postfix,特别是LDAP_README这个说明文件.

2.2 LDAP服务
在LDAP服务器上,你需要安装OpenLDAP,而且需要确定一个root dn(比如:cn=root,dc=rayesmail,dc=com)并且把它添加到LDAP的目录中.(译者注:在slapd.conf中指定)

2.3 IMAP服务
在IMAP服务器上,你需要安装LDAP, postfix, Cyrus, 和专为cyrus开发的pwcheck_ldap补丁程序. 按照postfix的文档安装支持LDAP的postfix. 按照Cyrus的文档来安装Cyrus和按照pwcheck_ldap的文档来添加pwdcheck_ldap.c.不要忘记了要更改pwcheck_ldap.c文件中的设置使得与你的LDAP目录服务器主机和base dn(译者注:目录的一部分,比如说是o=mailgroup,dc=rayesmail,dc=com)相符.最后,需要在pwcheck_ldap.c中添加下面的一行:

#include

如果你是使用Linux来作为IMAP服务器,你可能需要在pwcheck_ldap.c中做一些语法更正(我现在忘记了哪是正确的),以保证正常编译.使用下面的命令来配置cyrus:

./configure --with-login=unix_pwcheck --with-pwcheck=ldap

在pwcheck_ldap的文档中漏掉了--with-login这个配置参数.编译,然后按照cyrus的文档来安装.

3. 服务配置

3.1 LDAP服务
除了你用到的其他属性,每一个mail用户在LDAP目录中的目录项必须要有下面的属性(假设你的basedn是 o=someorg,c=US):

dn: uid=someuser, o=someorg, c=us
uid: someuser
userpassword: somepassword
maildrop: fulladdress@machine.dom.ain
mailacceptinggeneralid: someuser

(你也可以使用别名,如下所示)

mailacceptinggeneralid: somealias

同时,你需要为cyrus指定一个具有管理员权限的帐号.除非你在imap服务器上配置cyrus,否则你没有必要担心这个问题.但是你心里要清楚这一点.另外一点就是不要指定一个已经存在的帐号来作为管理员,问题可能会 出现安全漏洞或者造成该用户无法收邮件.

3.2 imap服务
配置imap服务器上的postfix,使得它使用LDAP目录来作为它的别名映射.配置的说明可以在 postfix文档中的LDAP_README文件中找到.Cyrus的安装说明已经包含在它的软件包里面.同时,不要忘了使pwcheck生效和在imap.conf中添加你的管理员帐号.

3.3 web服务
在这一步中,要把web服务器配置成收发邮件的终端.配置postfix,使得它使用LDAP目录来作为它的别名数据库.postfix所做的工作就是在LDAP目录中检索对应邮件用户目录项的maildrop属性值,并且把邮件转发到maildrop属性值所指定的邮件地址中,因此在maildrop属性中必须指定完整的邮件服务器名称.

你可能有700,000个用户分布到不同的服务器上.发送给user1@dom.ain的电子邮件将转发到maildrop地址user1@mail05@dom.ain,而发送给user657@dom.ain的电子邮件将转发到user657@mail34上.另外,maildrop属性也可以指定一个其他的转发地址.比如说user302的maildrop属性值为someuser@somewhereelse.com,那么发送给user302的电子邮件就会转发到someuser@somewhereelse.com这个邮件地址中.

按照IMP的文档把IMP配置好,然后做下面的更改工作:

在config/defaults.php3添加下面几行:

/* LDAP/IMAP Server Default */
$default->LDAP_server = ldap.dom.ain;
$default->LDAP_dn = o=someorg,c=US;
$default->LDAP_search_field = uid;
$default->ldap_choose_server = true;

对mailbox.php3打一个下面的补丁:
Index: mailbox.php3
===================================================================
RCS file: /home/cvs/imp/mailbox.php3,v
retrieving revision 2.29
diff -c -r2.29 mailbox.php3
*** mailbox.php3 1999/07/29 07:20:00 2.29
--- mailbox.php3 1999/08/04 18:04:10
***************
*** 29,34 ****
--- 29,51 ----
require ./lib/mimetypes.lib;
require ./config/defaults.php3;

+ /************LDAP**************/
+
+ if ($default->ldap_choose_server) {
+ $ldapconnect = ldap_connect($default->LDAP_server);
+ if ($ldapconnect) {
+ print("YES!
");
+ $ldapbind = ldap_bind($ldapconnect);
+ $ldapsearch = ldap_search($ldapconnect, $default->LDAP_dn,
+ $default->LDAP_search_field."=".$imapuser, array("maildrop"));
+ $ldapget = ldap_get_entries($ldapconnect, $ldapsearch);
+ $ldapspl = explode("@", $ldapget[0]["maildrop"][0]);
+ $server = $ldapspl[1];
+ $port = $default->port;
+ }
+ }
+ /**********end ldap************/
+
+
/* Html styles configuration */
require ./config/html.php3;
/* Mailbox configuration */

这些做完后,你已经有了高可扩展性的web mail解决方案了.
注意: 在1999年8月5日后,IMP的开发版本已经包括了这些补丁,因此上面的这些修改就没有必要进行了.

4. 其他

4.1 添加用户
下面是一段程序,可以用来在LDAP目录中添加一个用户和在cyrus中添加一个mailbox.这是为单个imap服务器设计的,但可以很容易地改变成为应用多台服务器的方式.


注意:因为还存在一个BUG,所以没有能够可靠地支持encrypted密码,现在是用明文密码来代替.

,
相关文章 热门文章
  • 自定义 Outlook Web App (OWA) 2010的登录和注销页
  • 我们如何才能防止用户对Web应用程序和共享文件夹使用保存密码的功能呢?
  • 263新版webmail定义“专业”企业邮箱网页邮箱新标准
  • iPhone/Android版 TurboMail Web功能正式发布
  • 263企业邮箱Webmail全新升级,誓做网上的移动办公桌
  • 263企业邮箱重磅推出融资融券定制化Webmail产品
  • Web邮件系统SquirrelMail 1.4.21 发布
  • Microsoft Outlook Web Access认证请求跨站请求伪造漏洞
  • Microsoft Outlook Web Access id参数跨站脚本漏洞
  • 使用 Microsoft Forefront TMG 2010 作为安全 Web 网关
  • 263企业邮箱持续发力,新版Webmail全新上线
  • Websense发布全球安全管理供应商计划
  • Linux邮件服务器软件比较
  • 域名和邮件服务器FAQ
  • Qmail自动安装包Qmail_setup-v1.5.3发布
  • freebsd+qmail+mysql+vpopmail之完全ports安装
  • qmail+vpopmail+MySQL+igenus+RedHat 7下建立邮件系统
  • QMAIL终极安装指南
  • 配置你的第一台e-mail服务器
  • qmail+webmail on Linux9 安装全过程
  • 分布式的Qmail邮件系统
  • qmail+vpopmail+mysql+qmailadmin+ezmlm+igenus构建企..
  • qmail+webmail on Linux9 安装全过程
  • Qmail Server Howto
  • 自由广告区
     
    最新软件下载
  • SharePoint Server 2010 部署文档
  • Exchange 2010 RTM升级至SP1 教程
  • Exchange 2010 OWA下RBAC实现的组功能...
  • Lync Server 2010 Standard Edition 标..
  • Lync Server 2010 Enterprise Edition...
  • Forefront Endpoint Protection 2010 ...
  • Lync Server 2010 Edge 服务器部署文档
  • 《Exchange 2003专家指南》
  • Mastering Hyper-V Deployment
  • Windows Server 2008 R2 Hyper-V
  • Microsoft Lync Server 2010 Unleashed
  • Windows Server 2008 R2 Unleashed
  • 今日邮件技术文章
  • 腾讯,在创新中演绎互联网“进化论”
  • 华科人 张小龙 (中国第二代程序员 QQ...
  • 微软推出新功能 提高Hotmail密码安全性
  • 快压技巧分享:秒传邮件超大附件
  • 不容忽视的邮件营销数据分析过程中的算..
  • 国内手机邮箱的现状与未来发展——访尚..
  • 易观数据:2011Q2中国手机邮箱市场收入..
  • 穿越时空的爱恋 QQ邮箱音视频及贺卡邮件
  • Hotmail新功能:“我的朋友可能被黑了”
  • 入侵邻居网络发骚扰邮件 美国男子被重..
  • 网易邮箱莫子睿:《非你莫属》招聘多过..
  • 中国电信推广189邮箱绿色账单
  • 最新专题
  • 鸟哥的Linux私房菜之Mail服务器
  • Exchange Server 2010技术专题
  • Windows 7 技术专题
  • Sendmail 邮件系统配置
  • 组建Exchange 2003邮件系统
  • Windows Server 2008 专题
  • ORF 反垃圾邮件系统
  • Exchange Server 2007 专题
  • ISA Server 2006 教程专题
  • Windows Vista 技术专题
  • “黑莓”(BlackBerry)专题
  • Apache James 专题
  • 分类导航
    邮件新闻资讯:
    IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮
    电子邮箱 | 反垃圾邮件|邮件客户端|网络安全
    行业数据 | 邮件人物 | 网站公告 | 行业法规
    网络技术:
    邮件原理 | 网络协议 | 网络管理 | 传输介质
    线路接入 | 路由接口 | 邮件存储 | 华为3Com
    CISCO技术 | 网络与服务器硬件
    操作系统:
    Windows 9X | Linux&Uinx | Windows NT
    Windows Vista | FreeBSD | 其它操作系统
    邮件服务器:
    程序与开发 | Exchange | Qmail | Postfix
    Sendmail | MDaemon | Domino | Foxmail
    KerioMail | JavaMail | Winwebmail |James
    Merak&VisNetic | CMailServer | WinMail
    金笛邮件系统 | 其它 |
    反垃圾邮件:
    综述| 客户端反垃圾邮件|服务器端反垃圾邮件
    邮件客户端软件:
    Outlook | Foxmail | DreamMail| KooMail
    The bat | 雷鸟 | Eudora |Becky! |Pegasus
    IncrediMail |其它
    电子邮箱: 个人邮箱 | 企业邮箱 |Gmail
    移动电子邮件:服务器 | 客户端 | 技术前沿
    邮件网络安全:
    软件漏洞 | 安全知识 | 病毒公告 |防火墙
    攻防技术 | 病毒查杀| ISA | 数字签名
    邮件营销:
    Email营销 | 网络营销 | 营销技巧 |营销案例
    邮件人才:招聘 | 职场 | 培训 | 指南 | 职场
    解决方案:
    邮件系统|反垃圾邮件 |安全 |移动电邮 |招标
    产品评测:
    邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端
    广告联系 | 合作联系 | 关于我们 | 联系我们 | 繁體中文
    版权所有:邮件技术资讯网©2003-2010 www.5dmail.net, All Rights Reserved
    www.5Dmail.net Web Team   粤ICP备05009143号