疯狂老头版《CentOS 5.1下用源码编译安装ExtMail》的笔记订正(5)
2008-12-01 00:51:33 作者:龙飞 来源:龙飞网 浏览次数:0 网友评论 0 条
第四部分,也是我的笔记的最后一部分
安装 ExtMail 1.0.3 和 ExtMan 0.2.3
启动数据库 MySQL
# /etc/rc.d/init.d/mysql start [ OK ]
也可以写成 service mysqld start
然后使用 ps 命令来检查 mysqld 是否正常启动:
# ps ax|grep mysqld
正常情况下应出现如下的结果:
1702 ? S 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/usr/local/mysql/var --pid-file=/usr/local/mysql/var/mail.extmail.org.pid
1735 ? Sl 0:00 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --user=mysql --pid-file=/usr/local/mysql/var/mail.extmail.org.pid --skip-external-locking --port=3306 --socket=/var/lib/mysql/mysql.sock
1959 pts/0 S+ 0:00 grep mysqld
导入 ExtMail 和 ExtMan 所需要的数据库:(以下假设 ExtMail 1.0.3 和 ExtMan 0.2.3 的安装文件放置于 /tmp 目录下)
# mkdir /var/www/extsuite
# cd /var/www/extsuite
# tar zxvf /tmp/extman-0.2.3.tar.gz
# tar zxvf /tmp/extmail-1.0.3.tar.gz
# mv extman-0.2.3 extman
# mv extmail-1.0.3 extmail
# mysql -u root -p < /var/www/extsuite/extman/docs/extmail.sql
# mysql -u root -p < /var/www/extsuite/extman/docs/init.sql
链接基本库到 Extmail
由于 ExtMan 的体系与 ExtMail 比较类似,因此 ExtMan 需要使用 ExtMail 中几个基础 perl 模块,在extman 的源码包里,包含了一个叫buildpkg.sh的小脚本,该脚本完成了这些链接的工作,使用方法:
# cd /var/www/extsuite/extman/libs/Ext
# ./buildpkg.sh build /var/www/extsuite/extmail/libs/Ext
# mkdir /var/www/extsuite/extman/tmp
# chown -R vuser:vgroup /var/www/extsuite/extman/tmp
# cp /var/www/extsuite/extman/docs/mysql_virtual_*.cf /etc/postfix/
# vi /var/www/extsuite/extman/webman.cf
# sys_sess_dir, the session dir
SYS_SESS_DIR = /var/www/extsuite/extman/tmp
操作完毕后,需要建立刚才导入 mysql 的 test@extmail.org 帐户的 Maildir,请输入如下命令:
注:但实际导入的是postmaster@extmail.org
# cd /var/www/extsuite/extman/tools
# ./maildirmake.pl /home/domains/extmail.org/test/Maildir
# chown -R vuser:vgroup /home/domains/extmail.org
# chmod 700 /home
测试 maildrop:
# maildrop -V 10 -d test@extmail.org
这个时候,会出现“Invalid user specified”的错误,不要惊慌,这是正常的,因为Mysql数据库里只有postmaster@extmail.org,而你给的命令是test@extmail.org, 当然它会告诉你,你指定的是非法用户。注意,这个时候,/home/domains/extmail.org下面的是test目录。现在输入 /usr/local/mysql/bin/mysql -u root -p,然后回车,输入密码后,就进入了Mysql的命令行控制界面。以下如果没有说明,都是在Mysql提示符下面进行的操作
show databases; 这是检查目前已经建立的Mysql数据库,看见extmail就对了
use extmail; 你会看到database changed这样的提示,表示你已经选择了extmail数据库
show tables; 显示extmail数据库里面的所有表
select * from mailbox; 显示mailbox表里面所有的记录,当然目前只有一条
update mailbox set username="test@extmail.org";
update mailbox set uid="test";
update mailbox set name="test";
update mailbox set maildir="extmail.org/test/Maildir/";
update mailbox set homedir="extmail.org/test";
\q
以上语句均在Mysql提示符下进行操作,大家可以完全拷贝。经过这样操作之后,我们就把Mysql数据库里面的记录由Postmaster改成了test。 然后service courier-authlib restart;service courier-imapd restart;service mysqld restart;service postfix restart;或者你再不放心,干脆重启一次电脑。应该就可以了。
或者有朋友说,为什么你那么费劲要把postmaster改成test呢,你把 /home/domains/extmail.org下面那个test目录改成postmaster不就和数据库里的记录对上了吗?在maildrop的 测试时,把test@extmail.org改成postmaster@extmail.org,那样不就可以了吗?说实话,这个方法我当然想到过,并且也付诸实践过,问题是maildrop的测试通不过,一样会提示“Unable to change to home directory”;而我那样做就是可以通过,不知道为什么。
配置 ExtMail 和 ExtMan
因为之前我们已经安装好了 mod_fastcgi 和 FCGI 了,因此,现在我们只需要对 ExtMail 和 ExtMan 和 http 进行配置即可了:
# vi /etc/httpd/conf/httpd.conf
=========== 修改部分 =================
Listen 12.34.56.78:80
#Listen 80
=================================
这个改不改无所谓,如果你的机器没有多个IP提供多种服务的话。
=========== 新增加部分 =================
LoadModule fastcgi_module modules/mod_fastcgi.so
<IfModule mod_fastcgi.c>
FastCgiIpcDir /var/lib/fcgi
<IfModule> 这里疯狂老头笔误,应该是</IfModule>
NameVirtualHost 12.34.56.78
Include conf/mail.extmail.org.conf
=================================
注明:上面提及的 12.34.56.78 根据实际情况设置为服务器的 IP 地址。
# vi /etc/hosts //增加下面这行
12.34.56.78 mail.extmail.org mail
# vi /etc/httpd/conf/mail.extmail.org.conf
# VirtualHost for ExtMail Solution
# <VirtualHost *:80> 这里应该取消前面的井号
VirtualHost mail.extmail.org 这行可以注销
ServerName mail.extmail.org
DocumentRoot /var/www/extsuite/extmail/html/
ScriptAlias /extmail/cgi/ /var/www/extsuite/extmail/dispatch.fcgi/
Alias /extmail /var/www/extsuite/extmail/html
ScriptAlias /extman/cgi/ /var/www/extsuite/extmail/dispatch.fcgi/
Alias /extman /var/www/extsuite/extman/html
<Location "/extmail/cgi">
SetHandler fastcgi-script
</Location>
<Location "/extman/cgi">
SetHandler fastcgi-script
</Location>
</VirtualHost>
# cd /var/www/extsuite/extmail
# chmod 755 dispatch.fcgi
# chmod 755 dispatch-init
# chmod 755 dispatch_lig.sh
# chown -R vuser:vgroup cgi
# chmod -R 755 cgi
# cd /var/www/extsuite/extman
# chown -R vuser:vgroup cgi
# chmod -R 755 cgi
到此为止,ExtMail 和 ExtMan 的设置部分就结束了:
# /etc/rc.d/init.d/httpd restart
可以使用service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
最后访问 http://mail.extmail.org/extmail/,如无意外,将看到 webmail 的登陆页,不过此时还没有加正式的用户,所以不能登陆,包括 test@extmail.org 也不行。必须要登陆到 http://mail.extmail.org/extman/ 里增加一个新帐户才能登陆。
ExtMan 的默认超级管理员帐户是 root@extmail.org,密码是 extmail,登陆成功后,建议将密码修改,以确保安全。
密码是extmail*123*
注:如果要在Extman里面创建一个帐号之后,能够自动在/home/domain/下面创造目录,要不就 把Apache的属主和属组改成vuser vgroup,要不采用suExeC方法,我安装到这里已经身心俱疲,所以,索性把Apache的属主和属组改成vuser vgroup,这个问题就顺利得到解决。
Extman的验证码,需要另外安装两个RPM包,大家可以下载附件里的,大家下载后,把这两个RPM放在同一个文件夹里,并且只能有这两个文件,然后输 入:rpm -ivh *.rpm(这种安装方法尤其合适那种你需要我,我需要你,单独安装哪个也装不上的情况),然后输入 service httpd restart重启Apache服务器。刷新Extman的有关页面即可看到验证码。
Extman的配置文件webman.cf里面设置session目录为/var/www/extsuite/extman/tmp,请大家把这个目录设置为777权限,属主和属组,设定为vuser vgroup。
大家按照这个说明一路做下来的时候,可以发现,Extmail没有产生配置文件,大家可以进入/var/www/extsuite/extmail,输入 cp webmail.cf.default webmail.cf,然后查找里面有关Session目录的那个目录,把那个目录也设置成777权限,否则将因为没有权限Session无法写入,而无法登录Webmail系统。