这是我在参考疯狂老头撰写的《CentOS 5.1 下用源码编译安装 ExtMail》进行安装Extmail邮件服务器时发现的一些心得和纰漏,在此发布出来,供大家一同参考。顺便说明一下,我的笔记订正,只到疯狂老头撰写的第四部分,第五部分目前还没有研究过。红字部分是我的批注
第一部分
修改系统的默认语言。上面步骤安装完 CentOS 5.1 后,默认的系统语言是 zh_CN.UTF-8,为了下面的安装,我们将其更改为 en.UTF-8,如下:
#vi /etc/sysconfig/i18n
LANG="en.UTF-8"
#LANG="zh_CN.UTF-8"
以前不明白为什么非要改不可,后来在安装中发现,一些Perl写的小程序遇到LANG="zh_CN.UTF-8"的时候无法继续执行下去,所以必须改。
第二部分
安装 MySQL
# /usr/sbin/groupadd -g 27 mysql
# /usr/sbin/useradd -c "MySQL Server" -u 27 -d /usr/local/mysql -g mysql -s /bin/bash -M mysql
# tar zxvf mysql-5.0.51.tar.gz
# cd mysql-5.0.51
# ./configure \
--prefix=/usr/local/mysql \
--sysconfdir=/etc \
--enable-thread-safe-client \
--enable-local-infile \
--with-unix-socket-path=/var/lib/mysql/mysql.sock \
--with-charset=utf8 \ 我根据自己的需要改成了utf8,注意不是utf-8,否则将无法执行
--with-extra-charset=all \
--with-low-memory
# make
# make install
# cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
# cd /usr/local/mysql
# chown -R mysql .
# chgrp -R mysql .
# bin/mysql_install_db --user=mysql
# chown -R root .
# chown -R mysql var
# bin/mysqld_safe --user=mysql &
# cd /dl/mysql-5.0.45 (这里的目录指的是原压缩包解压后的目录) 我直接回到我自己建立的/dl目录下,那里存放着我所有的有关安装这个系统的安装文件
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
# chmod 755 /etc/rc.d/init.d/mysqld
加入自动启动服务队列:
# echo "/etc/rc.d/init.d/mysqld start" >> /etc/rc.local
也可以写成chkconfig --add mysqld
添加 mysql-root 密码:
# /usr/local/mysql/bin/mysqladmin -uroot password 新密码
配置库文件搜索路径:
# echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf
# ldconfig (这一步骤,千万不要忘记了哦)
# ldconfig -v
添加 /usr/local/mysql/bin 到环境变量 PATH 中:
# export PATH=$PATH:/usr/local/mysql/bin
这个写法,只能临时使用路径,电脑一旦重启就没有了。如何可以永久保存,我还在研究。
检查下 PATH 中是否写入了 /usr/local/mysql/bin 路径:
# echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/mysql/bin
测试 MySQL :
# /etc/rc.d/init.d/mysqld start
也可以写成service mysqld start
Starting MySQL [ OK ]
(注意:以上方式安装好 MySQL 后,其 mysql.sock 文件位于 /var/lib/mysql 目录下。)
(二)安装 perl-DBI ,DBD::Mysql 和 Unix::syslogd
ExtMail 将会用到 perl 的 DBD::Mysql 和 Unix::syslogd 功能,您可以去 http://search.cpan.org 搜索下载原码包进行安装。
# tar zxvf Unix-Syslog-1.0.tar.gz
# cd Unix-Syslog-1.0
# perl Makefile.PL
# make
# make install
# tar zxvf DBI-1.58.tar.gz
# cd DBI-1.58
# perl Makefile.PL
# make
# make install
DBD-Mysql 目前最新版本为 4.005,但它和系统中的 perl 结合使用时会造成 extmail 无法正常使用,因此我们采用 3 的版本:
# tar zxvf DBD-mysql-3.0002_4.tar.gz
# cd DBD-mysql-3.0002_4
# perl Makefile.PL
(此步骤中如果出现类同 Can't exec "mysql_config": No such file or directory at Makefile.PL line 76. 的错误是因为您的 mysql 的 bin 目录没有输出至 $PATH 环境变量中)
# make
# make install
(三)安装 rrdtool 所需的软件包
# rpm -ivh freetype-2.2.1-19.el5.i386.rpm
# rpm -ivh freetype-demos-2.2.1-19.el5.i386.rpm
# rpm -ivh freetype-devel-2.2.1-19.el5.i386.rpm
可以简写成rpm -ivh freetype-*.rpm
这里作者写的有问题,CentOS5.1安装完毕之后,已经有freetype安装在内,而且和这些文件有冲突,不能通过Uvh的方式进行升级,必须先用rpm -e --nodeps freetype进行删除,然后再进行安装。如果是5.0就没有这个问题。
# rpm -ivh libart_lgpl-devel-2.3.17-4.i386.rpm
# rpm -Uvh libpng-1.2.10-7.1.el5_0.1.i386.rpm
# rpm -Uvh libpng-devel-1.2.10-7.1.el5_0.1.i386.rpm
可以简写成rpm -Uvh libpng-*.rpm
(四)安装 Time::HiRes 和 File::Tail 和 rrdtool-1.2.26
安装 Time::HiRes
# tar zxvf Time-HiRes-1.9711.tar.gz
# cd Time-HiRes-1.9711
# perl Makefile.PL
# make
# make install
安装 File::Tail
# tar zxvf File-Tail-0.99.3.tar.gz
# cd File-Tail-0.99.3
# perl Makefile.PL
# make
# make install
安装 rrdtool-1.2.26
(建议使用下面 rpm 包方式来安装 rrdtool)
# rpm -ivh rrdtool-1.2.23-3.el5.i386.rpm
# rpm -ivh rrdtool-perl-1.2.23-3.el5.i386.rpm
可以简写成rpm -ivh rrdtool-*.rpm
(五)安装 httpd 所需的软件包
# rpm -ivh apr-devel-1.2.7-11.i386.rpm
# rpm -ivh apr-docs-1.2.7-11.i386.rpm
# rpm -ivh apr-util-devel-1.2.7-6.i386.rpm
# rpm -ivh apr-util-docs-1.2.7-6.i386.rpm
可以简写成rpm -ivh apr-*.rpm
(六)安装 httpd
# rpm -ivh httpd-2.2.3-11.el5.centos.i386.rpm
# rpm -ivh httpd-manual-2.2.3-11.el5.centos.i386.rpm
# rpm -ivh httpd-devel-2.2.3-11.el5.centos.i386.rpm
可以简写成rpm -ivh httpd-*.rpm
加入自动启动服务队列:
# echo "/etc/rc.d/init.d/httpd start" >> /etc/rc.local
也可以写成chkconfig -add httpd
(七)安装 mod_fastcgi 和 FCGI
# tar xzvf mod_fastcgi-2.4.6.tar.gz
# cd mod_fastcgi-2.4.6
# cp Makefile.AP2 Makefile
# make top_dir=/usr/lib/httpd install
检查下 mod_fastcgi 模块有没有安装到 http 中:
# ls -l /etc/httpd/modules/mod_fastcgi.so
# mkdir /var/lib/fcgi
# mkdir /var/lib/fcgi/dynamic
# chmod 777 /var/lib/fcgi
# chmod 777 /var/lib/fcgi/dynamic
# tar zxvf FCGI-0.67.tar.gz
# cd FCGI-0.67
# perl Makefile.PL
# make
# make install
(八)安装 courier-authlib
# tar jxvf courier-authlib-0.60.2.tar.bz2
# cd courier-authlib-0.60.2
# /usr/sbin/groupadd -g 1000 vgroup
# /usr/sbin/useradd -g 1000 -u 1000 -M -s /bin/false vuser
# ./configure \
--prefix=/usr/local/courier-authlib \
--without-stdheaderdir \
--without-authuserdb \
--without-authpam \
--without-authldap \
--without-authpwd \
--without-authshadow \
--without-authvchkpw \
--without-authpgsql \
--without-authcustom \
--with-authmysql \
--with-mysql-libs=/usr/local/mysql/lib/mysql \
--with-mysql-includes=/usr/local/mysql/include/mysql \
--with-redhat \
--with-mailuser=vuser \
--with-mailgroup=vgroup
(因为改变了 courier-authlib 的安装位置,所以需要加选项 --without-stdheaderdir)
(编译 courier-authlib 必须要加入--with-mailuser,--with-mailgroup 这两项;否则在 postfix 收取邮件的时候就会出现错误,在 /var/log/maillog 日志文件中可以看到这个错误提示:
temporary failure. Command output: ERR: authdaemon: s_connect() failed: Permission denied maildrop: Temporary authentication failure. )
(如果是用 RPM 安装的话,就必须敲这条命令 chmod 755 /usr/local/courier-authlib/var/spool/authdaemon
该目录权限不正确修改,maildrop及postfix等将无法正确获取用户的信息及密码认证。)
# make
# make install
# make install-migrate
# make install-configure
# echo "/usr/local/courier-authlib/lib/courier-authlib" >> /etc/ld.so.conf
# ldconfig
# ldconfig -v
(备注:如果没有运行 ldconfig 命令,则在安装完 maildrop,运行 maildrop -v 时会出现错误:maildrop:error while loading shared libraries: libcourierauth.so.0)
# cp courier-authlib.sysvinit /etc/rc.d/init.d/courier-authlib
# chmod 755 /etc/rc.d/init.d/courier-authlib
加入自动启动服务队列:
# echo "/etc/rc.d/init.d/courier-authlib start" >> /etc/rc.local
也可以写成chkconfig --add courier-authlib
# cd /usr/local/courier-authlib/etc/authlib
编辑 authdaemonrc 文件:
authmodulelist="authmysql"
authmodulelistorig="authmysql"
daemons=10
编辑 authmysqlrc 文件:
MYSQL_SERVER localhost
MYSQL_USERNAME extmail
MYSQL_PASSWORD extmail
MYSQL_SOCKET /tmp/mysql.sock (注意这里哦!) 原作如此,我还是改成/var/lib/mysql/mysql.sock
MYSQL_PORT 3306
MYSQL_OPT 0
MYSQL_DATABASE extmail
MYSQL_USER_TABLE mailbox
MYSQL_CRYPT_PWFIELD password
MYSQL_UID_FIELD uidnumber
MYSQL_GID_FIELD gidnumber
MYSQL_LOGIN_FIELD username
MYSQL_HOME_FIELD homedir
MYSQL_NAME_FIELD name
MYSQL_MAILDIR_FIELD maildir
MYSQL_QUOTA_FIELD quota
MYSQL_SELECT_CLAUSE SELECT username,"",password,uidnumber,gidnumber, \
CONCAT('/home/domains/',homedir), \
CONCAT('/home/domains/',maildir), \
quota, \
name, \
CONCAT("disableimap=",disableimap,",disablepop3=", \
disablepop3,",disablewebmail=",disablewebmail, \
",disablesmtpd=",disablesmtpd,",disablesmtp=", \
disablesmtp,",disablenetdisk=",disablenetdisk, \
",netdiskquota=",netdiskquota) \
FROM mailbox \
WHERE username = '$(local_part)@$(domain)'
# /etc/rc.d/init.d/courier-authlib start (启动服务)
也可以写成service courier-authlib start
# chmod 755 /usr/local/courier-authlib/var/spool/authdaemon
(九)安装 cyrus-sasl-2.1.22
# rpm -qa|grep cyrus-sasl (把查找出来的包都删除了)
# rpm -e --nodeps cyrus-sasl-2.1.22-4 cyrus-sasl-plain-2.1.22-4 cyrus-sasl-devel-2.1.22-4 cyrus-sasl-lib-2.1.22-4
# rm -rf /usr/lib/sasl
# rm -rf /usr/lib/sasl2
# tar xzvf cyrus-sasl-2.1.22.tar.gz
# cd cyrus-sasl-2.1.22
# ./configure \
--enable-plain \
--enable-cram \
--enable-digest \
--enable-login \
--enable-sql \
--disable-anon \
--disable-ntlm \
--disable-gssapi \
--disable-krb4 \
--disable-otp \
--disable-srp \
--disable-srp-setpass \
--with-authdaemond=/usr/local/courier-authlib/var/spool/authdaemon/socket \
--with-mysql \
--with-mysql-includes=/usr/local/mysql/include/mysql \
--with-mysql-libs=/usr/local/mysql/lib/mysql
# make
# make install
# ln -s /usr/local/lib/sasl2 /usr/lib/sasl2
# echo "/usr/local/lib" >> /etc/ld.so.conf
# ldconfig
# ldconfig -v
# vi /usr/local/lib/sasl2/smtpd.conf
pwcheck_method: authdaemond
log_level: 3
mech_list: PLAIN LOGIN
authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket
[ 本帖最后由 ryuhi 于 2008-2-1 17:17 编辑 ] |