本文总结了主要的企业级电子邮件解决方案的要点。针对一般用者对邮件核心构架运作原理不明了清晰,重点讲述各个方案的架构运作,以及成功安装的要点。本文提供了各个方案的对比和特点,供系统分析员选项方案时参考。
前言;
本文总结了主要的企业级电子邮件解决方案的要点。针对一般用者对邮件核心构架运作原理不明了清晰,重点讲述各个方案的架构运作,以及成功安装的要点。本文提供了各个方案的对比和特点,供系统分析员选项方案时参考。
本文假设读者是具有相当经验的linux服务器使用者,能够熟练地进行configure,make-makeinstall及patch的操作,并能从README和INSTALL以及配置文件说明上获取基本的操作过程指导。本文不是傻瓜式的一步步的操作指导,仅提供标准文档不足和错误的更正。是标准操作文档的加强和补充。在可能的时侯,本文提供获取额外操作指导文档的路径。
本文最终目的是评估所有可行的解决方案,为开发产品级的邮件服务器提供基础的解决可行性评估、试验的总结。并提供简单的市埸分析和产品策划。只要有可能,当在一个月内可以推出硬件成本。
目录:
1、 基础知识;
1) MTA、MDA、MUA
2) Linux Email的一般形式
3) DNS域名解析
4) Linux Email的一般实现形式
5) IMAP的实现
6) ESMTP
2、 Linux Mail解决方案的要求;
1) 对收发信性能的要求;
2) 可扩展性和安全性
3) 提供集成度
4) 开发量要少
5) TLS
6) 虚拟主机
3、 Linux Mail解决方案详解;
1) qmail方案(qmail+vpopmail+mysql);
a) 简述;
b) 功能指标;
c) 所需软件;
d) 系统架构;
e) 安装;
f) 系统管理及工具;
g) LDAP;
h) IMAP
i) TLS
j) 缺陷和改进余地
2) postftx方案;
a) 概念说明:
i. Cyrus SASL;
ii. PAM;
iii. Berkerley DB;
b) 简述;
c) 功能指标;
d) 需要软件;
e) 架构;
f) 安装;
g) LDAP实现;
h) IMAP实现;
i) 缺陷和改进余地
3) courier方案(courier-mta +imap +mysql + mailadm)
a) 功能指标
b) 需要软件;
c) 架构;
d) 安装;
e) LDAP;
f) 缺陷;
4、 其他的可能方案;
a) 其他部分Linux商业方案
b) 跨平台JAMES 方案;
c) Lotus Mail方案;
d) WINDOWS方案;
i. 普通Mail邮件;
ii. Exchange server
对于普通的EMAIL用户来说,电子邮件也就是所面对的就是一个收发邮件的终端界面,也就是OUTLOOK,EUDORA,FOXMAIL之类,实际上,只是一个邮件客户端中的一种,(另一种是电子邮局软件),也就是我们所说的MUA。MUA是依靠MTA,邮件传输入代理,进行工作的,在收信时,则通过电子邮局软件,MDA,用POP或IMAP协议收取邮件。
一、基础知识:
1) MTA、MDA、MUA
对于普通的EMAIL用户来说,电子邮件也就是所面对的就是一个收发邮件的终端界面,也就是OUTLOOK,EUDORA,FOXMAIL之类,实际上,只是一个邮件客户端中的一种,(另一种是电子邮局软件),也就是我们所说的MUA。MUA是依靠MTA,邮件传输入代理,进行工作的,在收信时,则通过电子邮局软件,MDA,用POP或IMAP协议收取邮件。
在一般印象中,邮件是典型的异步传输方式,邮件传递时接收方无需在线。但实际上,这只是一种假象,邮件传送其实是一种实时的信息交换,完成这种交换的是MTA,邮件传送代理,使用的是SMTP协议。在一般的传送过程中,用户的MUA,象FOXMAIL,与邮件服务器的MTA程序实时传递信息,与FOXMAIL通过MTA完成实时的信息传送的是MDA,另一个SMTP的客户,它代替用户随时随刻地收取发来的邮件。正是通过MDA,也就是我们通常所说的电子邮局软件,才把实时的信息传送转变为异步邮件通讯。
因此,电子邮件是由三种软件完成的,MUA,MDA,MTA。
MTA一般有sendmail,qmail,postfix;
MDA一般如uw imapd, cyrus imapd, vpopmail, qpopmail等;
组合式的如JAMES, courier mail server;
2) Linux Email的一般形式;
Linux 邮件的一般形式大致可以分为三个级别:
a) 主机级邮件:主要为配合多用户环境的通信,如登录时看到的你有什么邮件之类的就是这种邮件。Sendmail及mail这类邮件软件最初就是为了这种方式而设计的,这也是令生于互联网而开始接触linux邮件的人所易困惑的。
b) 工作组级邮件:类似于主机级邮件,换言之是几台主机级的邮件。由于linux与网络的天然集成,因此,主机级的邮件与工作组级邮件是天然集成的。
c) 工作群组邮件:针对局域网多个工作组(群)的邮件方案,有时又称群件。是工作组级邮件的升级。微软的ExchangeServer及IBMdomino 本质上都属于这一级邮件。Linux普通邮件也天然具备工作群组的工作能力。但默认功能也到此为止;
d) 企业级群件:与前者相比,主要体现为多个局域网,及漫游客户,并要求具备如IMAP这样的高级功能。要求提供TLS安全,在客户端可能要求PGP加密。ExchangeServer及IBMdomino最新版本接近这一要求,不过并不能完全达到。
e) ISP企业级邮件:个体要求低于企业级群件,但要求可以提供给多个客户,特点是虚拟主机;
f) ASP企业级群件:是d与e的合并。ExchangeServer及IBMdomino均不具备达到这一级邮件的能力,但高极的linux方案可以提供这一解决可能。
g) ISP个人共享邮件:特点是用户多,功能简单。
Linux继承Unix的传统,在系统中直接提供邮件收发的功能,换言之,在系统中完全包含了MTA,MDA,MUA,典型的配置是MTA:sendmail, MDA: uw imap; MUA:mailx,kmail. 从前直接在Linux/UNIX上通过mail命令收发信件,其实是使用了自带的MUA,mail(mailx)命令,其实是MUA的操作命令,而不是真正的邮件(SMTP)命令。
Linux的原有的邮件系统是针对a,b,c三种应用设计的,对性能和用户管理要求都不高,作为专用的Mail服务器会有几个缺点:一是管理麻烦,二是要使用系统用户,三是对大量用户的使用性能不佳,四是系统是针对局域网邮件设计的,用于互联网重新设置麻烦透顶。因此,必须使用更新的邮件方案,才可以令Linux承担邮件服务器的工作。
3) DNS域名解析
MTA是依靠DNS域名解析获得接收方的MTA的邮件地址的,因此,有效的DNS解析是邮件服务器运作的前提。作为默认的,MTA以mail.domainname作为目标域邮件服务器。因此,">当一个客户机向请求服务时,实质是向mail.example.com服务器请求服务。
4) Email的一般实现方式和简介;
以MTA作为基本分类,在Linux上主要有sendmail,qmail,postfix三种基本方案。而在非UNIX平台上,主要有domino server和 ms exchanager.
Sendmail作为基本MTA,在一般的unix系统中是最广泛的,据说每天有三亿封邮件通过sendmail发送,占了70%以上的通信量。但sendmail在大型和正式商业系统中的使用却是最少的,原因在于它的配置和使用的确麻烦。因此,snedmail的使用,主要是在小型工作组平台领域,这与WINDOW2000的使用环境是一样的。两者都是适用于a,b,c三种环境,且用户数不能多。
Qmail是作为sendmail的升级版本设计的,重点考虑了安全、性能、使用简便性这些问题,是目前sendmail替代品中最广泛的方案。Qmail是一个成熟的软件,有大量的配套软件与之配合,理论上可以完成邮件服务器的任何功能。但是Qmail最大的问题是它采用GPL版权原则,换言之,别人是不能改它的代码,或者改了也必须完全发布。这就造成了Qmail的配套软件五花八门,给人一种非常混乱的感觉。对于配置出一台较完善的服务器,使用Qmail还真不是一件容易事,我没有觉得它比sendmail更容易配置。当达到企业级或群件时,非常困难。但Qmail是ISP共享邮件的理想解决方案。
Postfix是近一两年来开发的另一种sendmail的替代软件,就安全和性能而言不亚于qmail,而且它的使用与sendmail完全兼容,本身也相当方便。仅从MTA的角度看,postifx较qmail更优秀。
Unix/Linux基础上的电子邮件毫无疑问占据了绝大部分的份额,特别是在大型系统上几乎是一统天下,但除此外仍有一些非Unix的电子邮件在一些特殊的场合发挥着关键性的作用。其典型代表就是IBM的Domino和微软的Exchange server. 这两款服务器互为强劲的竞争对手,前者是IBM的群件产品Domino的基础交换协议,与DOMINO的OA功能高度集成;而微软的Exchange server则与outlook客户端配合紧密,有公共地址本。这两类邮件都是在小范围内邮件服务器,优点是使用简单,缺点是功能单一(基本上就是邮件和一些相关的功能),并且都缺乏与其他系统集成的能力。
5) IMAP的实现
IMAP本质上是加强了客户端阅读邮件标题的能力,并把邮件服务器作为文件服务器使用。对于ISP的邮件服务来说,最大的好处就是可以到处去而不必担心邮件在不到的客户端的同等访问,缺点就是需要更大量的服务器投资。而对于用户数量更有限而客户机可能偏于弱小的情况下,IMAP是一种更合意的选择。
但是IMAP的实现较之POP3要复杂很多。如果仅仅是在系统基本帐号上生成,倒还好办,使用uw IMAP就可以了,但如果要使用如数据库或LDAP存储帐号,并且登录帐号与POP3认证、SMTP认证一致,那么问题就要复杂得多。到目前为止,按本人的试用结果,除了uw IMAP外,只有Cyrus IMAP是可用并具有可轻易集成的。使用Courier IMAP也可以完成类似的工作,仅仅是集成SMTP认证比较困难。
在客户端而言,目前支持IMAP的客户端工具不算太多,outlook Express是支持的,但直到outlook 2000版本,仍仅是支持POP3,最后,对于相当数量的用户来说,集成管理IMAP服务器(如文件夹)以客户端访问不容易。
总的来说,IMAP是一种思路新颖而先进的新的邮件协议,但应用上还不成熟,短期内不会给用户带来太明显的效益,而实现成本较高。最终是否可以取代POP3也难说得很,因此,目前在系统上推得IMAP应该仔细衡量得失。
6) ESMTP(SMTP AUTH)
ESMTP即扩展SMTP,说穿了就是SMTP认证,也就是发信时也要出示用户名和密码。由于垃圾邮件猖狂,没有ESMTP功能,邮件系统根本就工作不了。但邮件系统大多数是SMTP和POP3分别工作的(参看第一节MTA和MDA,MUA),要令SMTP与POP3甚至IMAP共用一套帐号,意味着大量的程序修改工作,甚至是邮件系统的重写,而这些帐号如果还不能是系统账号,则问题更加复杂了。
邮件系统为何复杂而具有相当难度,这是一个很重要的因素。
这里指的主要是软件配合上的要求,正常情况下,邮件服务器对性能要求并不算高。
二、Linux Mail服务器要求;
1、 一般概念中的Linux邮件服务器要求和不适用;
如此所言,主要针对a,b,c及ISP免费邮件的类型,目前国内几乎所有的解决方案都是指这几种。
另一方面,无论是UNIX还是WINDOWS2000默认支持的SMTP和POP3服务都不适合于专用服务器,这类服务器的一个共同特点就是针对工作组服务的,甚至是针对主机级别的收发信的,这种应用,在现实生活中基本上是不存在的。把它用到企业互联网邮件上,要么被垃圾邮件摧毁,要么就是只能几个IP使用,要么就是配置复杂得不得了,而性能差到极点。
这两种服务器方案都不适用,偏偏能够找到的资料绝大部分是针对这两类应用的。
2、 服务于企业应用系统的邮件服务的技术要求;
对于以企业应用的邮件系统来说,每天收发百万封信,基本上已是绰绰有余,充其量是数百万封,超过这个数目,其实是没有多少必要的。对linux中的几种mail服务器,基本上可以以PII达到这个要求的十倍以上。而无论是domino还是Exchange,就需要相对强大得多的机器,及专用的操作系统,通常成本就达10万元以上。
应该使用非系统帐号,并且系统帐号与其他应用系统应能使用同一账号登录,并共享同一用户信息;换言之,帐号资料(包括密码)应该存放在公共的数据系统中,象数据库或LDAP等;
企业涉及的用户数一般不足万人,但要求用户可以自已修改个人密码,为防止垃圾邮件,要求能够提供SMTP认证,且最好是与POP共用密码认证。且应支持TLS传输加密。
最后是使用相对方便。
本文主要讲述使用mysql作为用户数据载体。
为什么不使用LDAP?
这是一个很好的问题。作为未来,email账号使用ldap很可能是一个标准,但今天,客户机使用ldap还很不成熟悉,导致配置复杂、错误太多、缺乏广泛的访问工具,反而是画虎不成反类犬;相反,mysql速度快、性能可靠,访问工具丰富,移植也相当方便。在mail服务器上,以读为主,mysql缺乏事务处理和兼容ansySQL的弱点没有太大的影响。这是首选mysql的原因。
使用ldap通常需要另外开发相应的管理程序,如允许用户修改密码之类。因此,使用LDAP存储帐号,需要考虑如何使用象SQL那样简便的工具查询帐号的问题。
3、 应用软件尽可能由同一项目组开发,提供集成度;
对于可选方案来说,优先选用高集成度,特别是单一项目的产品,如:使用Courier mail时尽可能使用courier IMAP,使用Cyrus SASL就尽可能选用Cyrus IMAP,等等。
4、 自已的开发量要少;
选用开源邮件方案不是为于演示自已的能力,而是在开发时间和成本上获得利益,如果变成是自已大量开发,目的是炫耀开发了一个邮件服务器的话,那么这个天才的脑袋是用猪油灌的。
5、TLS(传输安全层)
TLS并不等同于SSL,准确的说,SSL是TLS的一种实现形式。在网络上公开传递密码和敏感资料是相当危险的,比较可靠的方式,是使用TLS加密。
Smtp Auth比较复杂,原因是大量邮件必须使用无加密TLS,而Smtp Auth又必须传递密码。在最新的ESMTP中,直接约定了smtp auth、smtp、TLS的集成方式。当指定需要TLS的,只需STARTTLS就可以进入TLS会话。遗憾的是,我最喜欢用的foxmail不支持TLS(也不支持IMAP),看来张小龙的团队是江郎才尽了。
对于POP3和IMAP,实现方式相对简单一些,除了象Cyrus, Courier这样的软件已经直接可以提供TLS外,还可以使用Stunnel外接使用SSL,这也是大多数Mail解决方案供应商的主要实现方式,尽管可靠性远不及集成到各自软件之中。
另一方面,POP3和IMAP的实现也并不上smtp auth先进,没有兼顾明文和TLS,系统必须另开新的端口,象995提供pop3s这样的功能。
6、虚拟主机;
近来ISP生意难做,一台大主机维护几个企业邮件域不但成本不菲,而且收费无多,竞争激烈,其实没有什么赚头。一个企业内维护几域,大致以于企业集团是有效的。主要的几种邮件系统均支持虚拟主机。
同理,以一个服务器能够处理多少多少千万邮件客户,也是没有什么意义的。
qmail是目前使用最广泛的一种,基本上各种要求的功能都会有相应的软件配套支持。它的缺点是太散乱,缺乏集成,用项目的话来说就是不干净,缺乏归档集成。对于大型
ICP,
ISP等有固定的管理人员或者不算是一个缺点,但对于一般的公司客户,它的日常管理配置工作就显得太夸张了。另一方面,对于大型的高级应用,
Qmail的功能和发展余地都有所欠缺。
二、 Linux mail解决方案详解;
1、qmail方案;(Qmail+vpopmail+mysql+ucspi-tcp)
a) 简述:
qmail是目前使用最广泛的一种,基本上各种要求的功能都会有相应的软件配套支持。它的缺点是太散乱,缺乏集成,用项目的话来说就是不干净,缺乏归档集成。对于大型ICP,ISP等有固定的管理人员或者不算是一个缺点,但对于一般的公司客户,它的日常管理配置工作就显得太夸张了。另一方面,对于大型的高级应用,Qmail的功能和发展余地都有所欠缺。
Qmail是否易于配置使用,分歧颇大。实际情况是,如果要求相当简单、单一,qmail的使用相当简单,网上基本上有成功的例子供你照搬,但如果要求复杂起来,象需要使用mysql或ldap,需要imap,需要smtp auth,需要虚拟域,需要web界面等等,以上任一两个功能都不难实现,但全部要实现,就会发现实际成功的例子很少,一般是没有。原因就在于qmail的散乱和缺乏集成,各个软件以qmail为蓝本打补丁,互不配合,等到必须互相配合才能形成功能时,难度便突然加大,以至成功的案例却不算太多。事实上,由于多个补丁来自各自截然不同的开发组团,以至于经常出现指定补丁的基础版本不一,连编译也过不去,程序语法出现严重的错误的并不少见。
Qmail本身集成了pop3d,但只提供了使用其本身的cdb存储帐号的方法,而没有提供使用其他的方法。其次,qmail本身不提供网络监听,所以所有的服务,包括pop3d必须通过tcpserver才能启动。这种启动的复杂性,导致了五花八门的辅助工具,进一步加大了使用Qmail的复杂性。
因此,使用QMAIL很难满足在提供smtp auth\pop3\imap的工作条件,同时不能使用系统帐号。已有的声称可以使用courier IMAP提供在qmail+vpopmail基础上提供IMAP服务的的方法,许多其实作者自已都没有弄出来,事实上,它必须修改courier IMAP的代码。要求的额外性能,其实是新的公共协议的要求,Qmail所要求的补丁就越多,问题就越显得复杂。
Qmail方案最大的毛病就是特定功能的补丁太多,加上补丁自已有版本,打上几重补丁,到底谱系继承谁是谁非,怕是谁都说不清,加上各个补丁本身带有版本,不同的版本相互间基本上是无效的,复杂性也就呈级数增加。所以对Qmail系统的性能要求一高,Qmail的可用性就越差。
最根本的原因就是Qmail的作者的设计目标仅是提供主机级的邮件服务,也就是在小组网内专用于维护的那种mail,因此,当Qmail用于更高级的互联网通信时,立刻就不合用了;其次,Qmail奇怪的版权模式限制了对Qmail的有效改进,其他人只能以打补丁的模式增加功能;最后,qmail开发时就是仅为了系统级代替sendmail而设计的,居然连tcp监听也没有考虑,(换言之,作者开始很可能没有考虑到要把mail发到主机以外),qmail要工作,必须另外一个辅助软件ucspi-tcp提供网络监听,更不用提smtp-auth了。
优点:
应用案例和参考文章都比较多;
使用时间较长,功能较全、较稳定
缺点:
文档方面偏向于简单的多,复杂可用的方案文档很少(变相反映出成功的案例不多);
新的先进的标准和协议支持不够;
缺乏坚实的系统机制支持;
架构散乱,本质上是一大堆补丁程序补出来的产物;
极度缺乏集成;
对ESMTP严重缺乏支持。
总结:适合中小型的简单应用,但与sendmail相比是50步笑100步而已。建议大型应用或产品方案,坚决避免使用qmail作为基本解决方案。
适用:a,b,c,g四种类型;
b) 基本功能指标;
i. POP3,STMP服务;
ii. POP3及SMTP使用同一帐号进行认证;
iii. 支持SMTP认证功能;
iv. 使用mysql存贮邮件帐号;
v. 支持虚拟主机;
vi. 提供命令行维护工具;
vii. 提供简易Web界面维护工具;
viii. 提供用户自我维护工具;
ix. 提供Webmail工具;
c) 需要软件:
Qmail-1.03 MTA工具;
Vpopmail5.0 邮件域、账号、密码管理工具;
Mysql 存贮用户帐号资料;
Ucspi-tcp 提供网络监听;
Chekpassword 提供访问认证;
可选:
daemontools, 提供Daemon维持性能;
sqsignup, 提供用户自行申请帐号功能,对免费Email有用;
webadmin, 提供用户自我管理,如修改密码功能;
passwordmd5; 支持MD5密码;
重要的工具和概念——patch:
由Larry Wall提供的diff:patch工具,被Larry Wall本人认为较发明Perl更重要的作品。实际上patch也确实是Linux成长过程中最重要的因素之一。Diff 用于对比文件和目录(含包含的文件)的不同,并把输出存为patch格式;而patch命令是diff的反向命令,使用patch可以使用文件及目录回复到原来的模样。
#diff -c -r dir1 dir2 > 1.2.patch
将生成一个1.2.patch的文件;在与dir2一样的目录中运行
#patch < 1.2.patch
将获得dir1一模一样的目录和文件。通过这一工具,可以令系统不停的升级,这也是Linux升级内核而不是重装的重要途径。
Patch的成功,最重要的因素是保证dir1,dir2目录的一致,如果两者基础不一致,patch是没有意义的。这也是目前网上补丁程序失败的重要原因,关键就是版本不一致,缺乏版本的管理。
d) 系统架构;
i. vpopmail
Vpopmail提供域管理,帐号管理,用户认证,负责使用外置存贮工具存贮用户帐号的功能实现。它不是必须的,但却是繁杂的Qmail方案的有效简化工具,因为减少了补丁的使用,而提供了可靠性。类似的软件还有vMailMgr。
ii. ucspi-tcp;
UCSPI-TCP是一个非常重要的工具,它令Qmail能在主机以外真正提供邮件服务。Qmail本身不带网络监听,如果要把信发到主机以外,需要补丁软件,一般是ucspi-tcp,也就是tcpserver命令。象命令:
#tcpserver /var/qmail/bin/qmail-popup xxx.com /var/qmail/bin/auth_pop /var/qmail/bin/qmail-pop3d "Maildir" &2<1
如此长长的一串,说的是tcpserver通知qmail-popup向xxx.com提供pop应听服务,由auth_pop进行口令验证,pop服务由qmail-pop3d提供。理论上,也可以让tcpserver让其他进程也提供网络服务。如果有其他方法提供用户口令认证,就把auth_pop更替,象checkpassword,vchkpw之类。启动smtp也是如此类推。
iii. checkpassword;
checkpassword是必须的,但最终只要它的一个程序,它作为一个补丁存在,不用它,无法提供smtp auth功能,打完补丁后,又要把主要功能让给如vpopmail的vhkpw进行。由此可见Qmail体系的混乱。
使用checkpassword和相应的patch,令qmail使用系统帐号实现pop3和smtp认证;然后再使用vpopmail的vchkpw作为checkpassword的补丁令qmail不使用系统帐号。最后,由vchkpw完成与外置数据库存储的帐号的存取和认证工作。理论上可以使用其他数据库,包括oracle和ldap,oracle估计是可以的,但必要性不大,而vchkpw使用ldap根本上是一个失败的项目。连作者自已也承认,这东西动不了。
由于
qmail的安装是多个补丁的次序替补,所以顺序是非常重要的。
安装:
由于qmail的安装是多个补丁的次序替补,所以顺序是非常重要的。
首先是安装qmail。Qmail安装前必须生成两个指定组nofile及qmail,以及七个用户,分别是alias,qmailr,qmaild,qmails,qmailq,......我也忘了,看INSTALL!
#make setup check后
#./config
在配置时需要配置默认的传递域和主机rcphost,(记得第一节第2点说到的主机和工作组邮件吗?),这时Qmail会通过DNS正向和逆向查询域名和IP,填入配置文件中。实际上,都于打算用于因特网的使用者来说,这一步是不必要的,(你说DJB是不是闲着没事干?多此一举),但少了它Qmail还干脆罢工。在此前,甚至连BIND8也不能满足它的要求。如果不配的话会如何?那么当你在客户端发信时,就很可能得到550 error, you do not in rcphost list这样的错误。要跳过去的话也可以,可以手工生成rcphost,me, defaultdomain, hostname这样几个文件。
不过,DJB这样干也是有道理,众所周知,垃圾邮件是一大公害,如果不这样,邮件服务器就变成openrelay,开放传递,不但你的IP被列进黑名单,而且垃圾邮件会塞得你的邮件服务器不能工作。但只有劣等管理员才不能防垃圾邮件,一个简单有限的办法就是使用smtp auth。
使用smtp auth的办法是打checkpassword补丁。这里要注意,有两种方法进行补丁,但只有一种是支持多域名的。请参考有关文档。由于smtp auth和pop auth均由checkpassword提供,所以实现了pop和smtp使用同一密码的功能。 必须安装Ucspi-tcp才可以提供网络服务,在启动服务时指定必须使用smtp auth,及popauth。
安装vpopmail时注意:安装程序会检测vpopmail用户,并把vpopmail安装在vpopmail的HOME目录。Vpopmail在安装时自动在数据库中生成数据表格,但需要在安装前在vmysql.h中指明数据库的地址、名称、用户、密码。
Sqsighup、sqwebadmin、sqwebmail都是PHP或CGI程序,修改并不困难,其中sqwebadmin是专门配合vpopmail的mysql方案的。
c) 系统管理:
系统管理由三级组成:
i. qmail命令行工具:典型如makemaildir,生成maildir的目录;还有如qmail-ldaplookup,在使用ldap方案时是非常重要的工具。但在使用vpopmail时,这些工具被全面取代。
ii. vpopmail命令行工具:如vadddomain,vadduser,vpasswd等,几乎是最重要的管理工具之一。
iii. sqsignup,sqwebmail,是用户自我管理和webmail,除sqwebmail中的修改密码功能,其它不是必须的。用户也可以自已开发修改密码的程序,不算太高。
d) LDAP实现:
有三种方法,一是直接使用qmail+ldap方案,这在lifewithqmail/ldap中有详尽的说明,但不精确;二是使用qmail+vpopmail+ldap方案,简单不少,但程序有问题;三;使用Curier IMAP的LDAP功能,但这样没有必要,因为Courier IMAP与Coureir MTA配合更佳,而且没有补丁,功能齐全。
方法一:qmail+ldap;
需要软件:
qmail-1.03
qmail-ldap-patch
ucspi-tcp
checkpassword
qmail-ldap-control-patch
qmail-ldap-smtp-auth-patch
基本同前者,只是ldap代替了mysql,而弃置了vpopmail。
这套方案最关键的一条是使用qmail-ldap-patch。但这套补丁2000年以后的版本有很大的BUG,最基本的一条就是auth-pop.c 调用commands.c调用qldap-lookup错误。或者作者自已机上是可以用的,但它用于对比的版本不知是何年何月的,总之得出的patch是狗屁不通,要用者,自已顺藤摸瓜改程序吧。粗略估计一下,大约要改几百行程序。
过了这一关,也是问题,安装时可以改程序,总不能每次系统管理也要程序吧?lifewithqmail/ldap建议使用qmail-ldap-control补丁,不过要使用这个补丁,又要再改一次程序,又是几百行。而且,这个补丁不但难打,而且打完后,象一些核心如qldap-lib.c程序,语法错得惨不忍睹,这一关,我过不了。如此下去,就算侥幸装上了,升级换代也是困难,还不如我自已开发一套算了。
这样使用LDAP上,是十分不划算的。
方法二:使用vpopmail+ldap;
另一种方案是qmail+ldap+couire IMAP,该文的参考文档
这种方案避免了使用tcpserver启动pop3,从而避免了前文所述的错误。是唯一可行的方案。但没有太大的价值,因为主要的工作完全由Courier IMAP完成,Courier MTA本身就不差,没有必要另用qmail。
b) IMAP实现:
要完成courier IMAP合成qmail、vpopmail,需要修改程序代码,但几乎所有的中文文档,都仅是说make,make install,所以我觉得他们就算是报成功安装,也不可能运行的。
针对我们使用MYSQL进行认证的方案,可以配置Courier IMAP使用同一个mysql记录表,通过定义修改字段让它访问vpopmail的Maildir目录,可以较易实现coureir IMAP集成的目的。
但如前所说,既然用到Courier IMAP,就没有必要再用Qmail自讨若吃了。
c) TLS实现;
无法使用TLS,就算可以,无非是再加一重补丁,一个软件要打上四五重补丁,然后digbug,叫DJB自已来干好了。建议不必再考虑TLS。
d) 缺陷和开发余地;
qmail最大的问题,就是越来越多的核心功能不是通过集成,而是通过补丁来实现,关键可能就在于DJB制定的版权标准不太合乎逻辑。除着技术标准的进步,这个缺陷会越来越致命,相信,很快,整个qmail体系都会不得得被抛弃。
与
qmail相比,
postfix显得规范许多,而且它与
Cyrus sasl配合紧密,不象
qmail那样的乱七八糟的程序堆在一起。但
postfix体系的缺点是周边软件不成熟,缺乏严格的集成测试,甚至连安装程序都存在低级错误,要修改过才行。而且,
postfix大量使用一些较新的
linux技术,如
sasl, pam, cyrus imap,
Berkeley DB等,偏偏这些技术合在一起使用的先例极少,升级版本差距太大,相互间集成不便,要把它们集成在一起形成一个整体可用的,符合要求的系统,简直就是一场地狱旅行。但一般说来,如果组合成功,效果优于
qmail。
2、 postfix方案详解;(postfix+cyrus sasl + mysql+cyrus IMAP);
a) 简述:与
qmail相比,
postfix显得规范许多,而且它与
Cyrus sasl配合紧密,不象
qmail那样的乱七八糟的程序堆在一起。但
postfix体系的缺点是周边软件不成熟,缺乏严格的集成测试,甚至连安装程序都存在低级错误,要修改过才行。而且,
postfix大量使用一些较新的
linux技术,如
sasl, pam, cyrus imap,
Berkeley DB等,偏偏这些技术合在一起使用的先例极少,升级版本差距太大,相互间集成不便,要把它们集成在一起形成一个整体可用的,符合要求的系统,简直就是一场地狱旅行。但一般说来,如果组合成功,效果优于
qmail。
Postfix方案采用的方案远较
qmail规范,与
linux的系统架构较
qmail要密切得多,其认证的核心
pam-sasl,不但是
linux内核框架标准,同时也已经是
UNIX网络通讯的认证标准。
作为
MTA,
postfix本身没有什么问题,但能够与
postfix集成提供所需功能的
Cyrus软件就有一个大毛病,各版本间没有遵循新版本向下兼容旧版本的原则。这个会造成初学者非常困惑的结果。
优点:
技术先进,集成度高,与系统底层机制高度集成;
缺点:
缺乏文档,不同历史版本间兼容性差。
总结:技术上较
Qmail先进一代,基本解决方案具备,也较成熟,缺点是方案较单一,而配套的管理工具不多。总的来看,无论是大型还是小型应用,
postfix都较
qmail优秀、方便。
适用:适用所有类型。
与
qmail不一样,
postfix缺乏充分的配套方案,象
qmail本身包括了
pop3甚至
CDB存储用户信息,而
postfix就什么也没有。因此,尽管
postfix本身就
MTA而言要比
qmail更完善,但是作为商业级的解决方案,仍未十分成熟。
Postfix目前大致两种选择方案可以提供
IMAP服务,一种是通过
Courier,另一种是通过
Cyrus imap。前者没有找到可以提供有效的
smtp auth的方法,后者是通过
Cyrus SASL(简单网络认证层)实现认证,这一认证与
IMAP一同是卡内基
-梅浓大学的产品,本身是完全兼容吻合的。
德国的
Patrick Koetter先生完成的安装文档
How to use smtp auth in combination with TLS in Postfix, (