« About Extmail - 关于Extmail的介绍 | Main | Configuration Document - Extmail配置方法 »
September 19, 2005
Installation Document - Extmail 安装文档
Pre-requisites
由于Extmail是纯perl语言编写的,而且Maildir标准只在Unix类平台上实现,因此不能在Win32平台下安装。 要安装并使用Extmail至少要满足如下的系统条件:- 操作系统(OS)
至少可以可靠工作的Unix类系统,如Linux, BSD, Solaris等。建议使用Linux或FreeBSD系统,在这些系统下,OpenSource/GNU软件运行配置成功的机会将大大提高。
- Email软件 一个支持Maildir/Maildir++的email系统,如Qmail或Postfix,或者Courier MTA,建议使用Postfix MTA。对于其他MTA,本文档暂不涉及,原则上支持Maildir的都将被支持。
- Web 服务器
一个工作正常,并至少支持CGI的web服务器,例如apache, lighttpd, thttpd等。强烈建议使用Apache,对于超大流量超大规模的ISP或特殊用户,可以考虑lighttpd+FCGI的方式,但需要对Extmail进行小量的改写以适应FCGI。
- Perl解析器
毫无疑问,没有了perl,就不能运行Extmail。为了减少麻烦和问题,请尽量使用最新的Perl解析器,建议使用Perl 5.8.0或以上版本。
- DB_File(可到CPAN下载
- Fcntl
- DBI
- Benchmark
必备Perl模块
通过如下命令校验这些模块在系统里是否有安装:
# perl -e 'use DBI'
如果DBI没有安装,则perl解析器将报错,可以到CPAN搜索下载。
如果不太熟悉命令行的,可以使用Extmail发行包里tools目录的pkg_stats.sh工具来检查模块的存在,检查结果将以彩色显示(但需要bash,如果在FreeBSD下,必须修改该脚本的第一行bash路径)。
首先进入发行包的根目录然后执行:
. ./tools/pkg_stats.sh
注意: 两个“.”号之间有空格
如果模块都没有问题,程序将打印出每个模块的检查结果,如果有个别模块找不到,也将打印出出错信息并提供一个建议的下载URL,一个可能的结果如下:
Benchmark found Carp found DB_File found DBI found Exporter found Fcntl found File::Spec found Net::LDAP not found! Try http://search.cpan.org/search?query=Net::LDAP&mode=module MIME::Base64 found MIME::QuotedPrint found POSIX found
可选Perl模块
- Net::LDAP
- BerkeleyDB
其中Net::LDAP模块在使用ldap认证时是必须安装的,同样也可以在CPAN下载。
开始进行安装
下载最新的Extmail 源码包,目前最新版本是0.13,下载的地址:http://extmail.org/cgi-bin/download.cgi
下载后,用tar命令解开源码包,并将解包后的extmail-0.13目录移动到安装的目录,例如/var/www/cgi-bin/下,
tar xfz extmail-0.13.tar.gz mv extmail-0.13 /var/www/cgi-bin/
Apache的配置
如果是新安装的Apache或Unix系统,则请增加一个虚拟主机配置,如果是在用系统,则请参考下面的虚拟主机配置进行更改。确保没有其他NameVirtual指令在httpd.conf中激活后,在httpd.conf中增加如下的内容:
NameVirtual *:80 <VirtualHost *:80> ServerName mail.example.com DocumentRoot /var/www/cgi-bin/extmail/html/ ScriptAlias /extmail/cgi/ /var/www/cgi-bin/extmail/cgi/ Alias /extmail/ /var/www/cgi-bin/extmail/html/ </VirtualHost>
保存httpd.conf,接下来请确认下一步的配置方式:
Apache + User/Group变更安装模式
该方法的最大特点是需要改变当前Apache的运行用户,即User/Group,使之和邮件存储的uid/gid一致,这样webmail才能对邮件有完全的读写权限。假设邮件的存取uid/gid是mail/mail,那么Apache运行时就以mail:mail来运行了。通过ps aux|grep httpd命令可以证实这一情况。# vi /etc/httpd/conf/httpd.conf 将User Group两条指令更改成当前邮件存储的uid/gid,例如: User mail Group mail
保存httpd.conf
这样做的主要优点是完全避免了setuid/gid的问题,但随之而来的是所有的web应用程序都将以mail/mail的uid/gid运行,包括创建的php的session文件等,某些特定软件将不能正常工作,而且也容易造成其他web程序的漏洞波及webmail甚至邮件数据本身!
Apache + Suexec 模式
有关Suexec的介绍请看这里,利用Suexec模块,可以只改变Extmail的运行Uid/gid,而不需要改变apache的主User/Group,这样的好处很明显,可以运行多种web程序,每个web程序都可以以自己的uid/gid运行,相互之间不会互相影响。要使用Suexec,首先要确定apache安装中是否编译了suexec的支持,最简单的办法是看看编译时的编译指令,或者Apache的libexec目录里是否有mod_suexec.so文件。
其次在上述的虚拟主机配置里,增加如下指令:
SuexecUserGroup vuser vgroup
保存httpd.conf后,重启Apache。
然后检查error_log或suexec的日志,如果出现Unknow Directive 或者Invalid command等错误,则说明suexec没有被安装正确或激活,请按Suexec的安装配置文档说明,重新安装并激活,本文将不再赘述。
建议使用发行版自带的Apache软件,通常都已激活suexec的支持,对于FreeBSD用户,可以安装/usr/ports/www/apache2,并在Makefile.modules里给默认的CATEGORY增加SUEXEC的标签即可,因为SUEXEC已定义好,但默认没被打开。
最后确认Suexec安装配置正确后,在上述的虚拟主机配置中增加如下信息:
SuexecUserGroup mail mail
然后将extmail中的cgi程序的拥有者和组(即uid/gid)改成mail/mail,即:
# chown -R mail.mail /var/www/cgi-bin/extmail/cgi/
Suexec 注意事项
如果使用操作系统带的Apache,Suexec有一定的限制,例如在RedHat 发行版中,Suexec的MIN_UID=500, MIN_GID=100,如果邮件系统的邮件存储uid/gid 比这个限制小则suexec拒绝执行。可能出现如下的错误:
[2005-07-21 15:50:34]: cannot run as forbidden uid (47/abook.cgi)
要获得suexec的限制,请运行:
/usr/sbin/suexec -V
例如在CentOS 4.1上的结果:
-D AP_DOC_ROOT="/var/www" -D AP_GID_MIN=100 -D AP_HTTPD_USER="apache" -D AP_LOG_EXEC="/var/log/httpd/suexec.log" -D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin" -D AP_UID_MIN=500 -D AP_USERDIR_SUFFIX="public_html"
一般的问题,多数集中在权限问题,或者uid/gid不够大等问题上。
此外,如果是从源码包安装的Apache,suexec默认没有激活,因此如果需要打开请仔细阅读Apache的suexec安装/配置文档。
配置Extmail
重新启动apache,接下进行Extmail的配置,如果没有正确配置extmail,Extmail将不能正确运行,甚至访问首页也不能成功。如下是没有正确配置webmail.cf文件导致的一个错误:Can't locate /en_US in @INC (@INC contains: /var/www/cgi-bin/extmail/ libs /etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/ 5.8 /usr/local/lib/site_perl .) at /var/www/cgi-bin/extmail/libs/ Ext/Lang.pm line 46.
详细请参阅Extmail配置
至于其他一些问题,请务必多查看Apache的error_log和suexec.log,日志文件的名称随安装配置的不同而略有不同,详细请检查Apache的安装/配置指令及httpd.conf
基于lighttpd的安装
Posted by hzqbbc at September 19, 2005 09:57 AM
Comments
hao hao
Posted by: jingning.zhao at November 15, 2006 10:55 PM