疯狂老头版《CentOS 5.1 下用源码编译安装 ExtMail》的笔记订正
这是我在参考疯狂老头撰写的《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 功能,您可以去
搜索下载原码包进行安装。
# 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
第三部分
(十)安装 DB 库文件
# rpm -ivh giflib-4.1.3-7.1.el5.1.i386.rpm
# rpm -ivh libgdiplus-1.2.5-1.el5.centos.i386.rpm
# rpm -ivh mono-core-1.2.4-2.el5.centos.i386.rpm
# rpm -ivh dbus-sharp-0.63-8.el5.centos.i386.rpm
# rpm -ivh dbus-sharp-devel-0.63-8.el5.centos.i386.rpm
可以简写成rpm -ivh dbus-sharp-*.rpm,这样可以一次性安装两个包
# rpm -ivh dbh-1.0.24-5.el5.centos.i386.rpm
# rpm -ivh dbh-devel-1.0.24-5.el5.centos.i386.rpm
可以简写成rpm -ivh dbh-*.rpm
# rpm -ivh dbus-glib-devel-0.70-5.i386.rpm
(十一)安装 postfix
postfix 需要使用到 pcre 软件包,因此我们需要先安装下面这两个软件包:
# rpm -Uvh pcre-6.6-2.el5_1.7.i386.rpm
# rpm -Uvh pcre-devel-6.6-2.el5_1.7.i386.rpm
可以简写成rpm -Uvh pcre-*.rpm
# /etc/init.d/sendmail stop
# chkconfig --level 0123456 sendmail off
# tar zxvf postfix-2.4.6.tar.gz
# cd postfix-2.4.6
# make tidy
# /usr/sbin/groupadd postdrop -g 101
# /usr/sbin/groupadd postfix -g 102 (如果原来系统中有该用户则不需要再建)
# /usr/sbin/useradd -d /var/spool/postfix -s /bin/true -u 100 -g postfix -G postdrop postfix
# make makefiles CCARGS="-DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/local/include/sasl" AUXLIBS="-L/usr/local/lib -lsasl2"
# make -f Makefile.init makefiles \
'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include/mysql' \
'AUXLIBS=-L/usr/local/mysql/lib/mysql -R/usr/local/mysql/lib/mysql \
-lmysqlclient -lz -lm'
# make
# make install
按照疯狂老头的写法,不知道为什么,命令无法执行,我参考了Postfix官方网站的写法,将原作者一个整句拆成两个句子,分别执行,就可以顺利往下继续。
===================================
install_root: [/]
tempdir: [/mnt/softs/postfix-2.4.6] /tmp
config_directory: [/etc/postfix]
daemon_directory: [/usr/libexec/postfix]
command_directory: [/usr/sbin]
queue_directory: [/var/spool/postfix]
sendmail_path: [/usr/sbin/sendmail]
newaliases_path: [/usr/bin/newaliases]
mailq_path: [/usr/bin/mailq]
mail_owner: [postfix]
setgid_group: [postdrop]
manpage_directory: [/usr/local/man]
===================================
中间有两个步骤,是问要不要安装一些文档文件的,疯狂老头忽略了,不过没有关系,这两个步骤不论选是还是选否都不影响安装,只是大家安装的时候必须要仔细对照看,切不可一路回车到底
# mv /etc/aliases /etc/aliases.old
# ln -s /etc/postfix/aliases /etc/aliases
生成别名二进制文件,这个步骤如果忽略,会造成 postfix 效率极低:
# echo 'root:
admin@example.com
'>>/etc/postfix/aliases
# /usr/bin/newaliases
# postconf -n > /etc/postfix/main2.cf
# mv /etc/postfix/main.cf /etc/postfix/main.cf.old
# mv /etc/postfix/main2.cf /etc/postfix/main.cf
# chown root.root /var/spool/postfix
# chmod 755 /var/spool/postfix
# vi /etc/postfix/main.cf
# hostname
mynetworks = 127.0.0.1
myhostname = mail.extmail.org
mydomain = extmai.com
myorigin = $mydomain
mydestination = $mynetworks $myhostname
# banner
mail_name = Postfix - by extmail.org
smtpd_banner = $myhostname ESMTP $mail_name
# response immediately
smtpd_error_sleep_time = 3s
unknown_local_recipient_reject_code = 550
# extmail config here
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_transport = maildrop:
# cp /var/www/extsuite/extman/docs/mysql_* /etc/postfix/
(需要将 ExtMail extman 包解压,见下文“CentOS 5.1 下用源码编译安装 ExtMail (第四部分)”;当然亦可以参照下面步骤创建)
编辑 mysql_virtual_alias_maps.cf
# vi /etc/postfix/mysql_virtual_alias_maps.cf
内容如下:
user = extmail
password = extmail
hosts = localhost
dbname = extmail
table = alias
select_field = goto
where_field = address
编辑 mysql_virtual_domains_maps.cf
# vi /etc/postfix/mysql_virtual_domains_maps.cf
内容如下:
user = extmail
password = extmail
hosts = localhost
dbname = extmail
table = domain
select_field = description
where_field = domain
#additional_conditions = and backupmx ='0' and active ='1'
编辑 mysql_virtual_mailbox_maps.cf
# vi /etc/postfix/mysql_virtual_mailbox_maps.cf
内容如下:
user = extmail
password = extmail
hosts = localhost
dbname = extmail
table = mailbox
select_field = maildir
where_field = username
#additional_conditions = and active = '1'
SMTP 认证需要透过 Cyrus-SASL,连接到 authdaemon 获取认证信息,编辑 /etc/postfix/main.cf,增加如下内容:
# vi /etc/postfix/main.cf
# smtpd related config
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_non_fqdn_hostname,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unauth_destination,
reject_unauth_pipelining,
reject_invalid_hostname,
# SMTP AUTH config here
broken_sasl_auth_clients = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
编辑 postfix 的启动脚本:
# vi /etc/rc.d/init.d/postfix
内容如下:
===============================================================
#!/bin/sh
#
# postfix Postfix Mail Transfer Agent
#
# chkconfig: 2345 80 30
# description: Postfix is a Mail Transport Agent, which is the program \
# that moves mail from one machine to another.
# processname: master
# pidfile: /var/spool/postfix/pid/master.pid
# config: /etc/postfix/main.cf
# config: /etc/postfix/master.cf
#
# $Revision: 2.4 $
#
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -x /usr/sbin/postfix ] || exit 0
[ -d /etc/postfix ] || exit 0
[ -d /var/spool/postfix ] || exit 0
RETVAL=0
start() {
# Start daemons.
echo -n "Starting postfix: "
/usr/sbin/postfix start 2>/dev/null 1>&2 && success || failure
RETVAL=$?
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/postfix
echo
return $RETVAL
}
stop() {
# Stop daemons.
echo -n "Shutting down postfix: "
/usr/sbin/postfix stop 2>/dev/null 1>&2 && success || failure
RETVAL=$?
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/postfix
echo
return $RETVAL
}
reload() {
echo -n "Reloading postfix: "
/usr/sbin/postfix reload 2>/dev/null 1>&2 && success || failure
RETVAL=$?
echo
return $RETVAL
}
restart() {
stop
start
}
abort() {
/usr/sbin/postfix abort 2>/dev/null 1>&2 && success || failure
return $?
}
flush() {
/usr/sbin/postfix flush 2>/dev/null 1>&2 && success || failure
return $?
}
check() {
/usr/sbin/postfix check 2>/dev/null 1>&2 && success || failure
return $?
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
reload)
reload
;;
abort)
abort
;;
flush)
flush
;;
check)
check
;;
status)
status master
;;
condrestart)
# don't use /var/lock/subsys/postfix, check for postfix running directly
daemon_directory=$(postconf -h daemon_directory)
$daemon_directory/master -t 2>/dev/null && : || restart
;;
*)
echo "Usage: postfix {start|stop|restart|reload|abort|flush|check|status|condrestart}"
exit 1
esac
exit $?
===============================================================
# chmod 755 /etc/rc.d/init.d/postfix
也可以用chkconfig --add postfix将其加入服务行列
启动 postfix 服务:
#/etc/rc.d/init.d/postfix start
也可以写成service postfix start
(十二)安装 maildrop
# tar jxvf maildrop-2.0.4.tar.bz2
# cd maildrop-2.0.4
# ln -s /usr/local/courier-authlib/bin/courierauthconfig /usr/bin/courierauthconfig
# ./configure \
--enable-sendmail=/usr/sbin/sendmail \
--enable-trusted-users='root vuser' \
--enable-syslog=1 \
--enable-maildirquota \
--enable-maildrop-uid=1000 \
--enable-maildrop-gid=1000 \
--with-trashquota \
--with-dirsync
# make
# make install
# cp /usr/local/bin/maildrop /usr/bin
# chmod a+rx /usr/bin/maildrop
# maildrop -v (检查信息,如果有 courier-authlib 则表示安装成功)
maildrop 2.0.4 Copyright 1998-2005 Double Precision, Inc.
GDBM extensions enabled.
Courier Authentication Library extension enabled.
Maildir quota extension enabled.
This program is distributed under the terms of the GNU General Public
License. See COPYING for additional information.
新建其配置文件 /etc/maildroprc 文件,首先指定 maildrop 的日志记录位置:
# vi /etc/maildroprc
logfile "/var/log/maildrop.log"
# touch /var/log/maildrop.log
# chown vuser.vgroup /var/log/maildrop.log
# chmod a+r /etc/maildroprc
(十三)安装 courier-imap
# tar jxvf courier-imap-4.1.3.tar.bz2
# cd courier-imap-4.1.3
# ./configure \
--prefix=/usr/local/courier-imap \
--with-redhat \
--enable-unicode \
--disable-root-check \
--with-trashquota \
--without-ipv6 COURIERAUTHCONFIG='/usr/local/courier-authlib/bin/courierauthconfig'
# make
# make install
# cp /usr/local/courier-imap/etc/imapd.dist /usr/local/courier-imap/etc/imapd
# cp /usr/local/courier-imap/etc/imapd-ssl.dist /usr/local/courier-imap/etc/imapd-ssl
# cp /usr/local/courier-imap/etc/pop3d.dist /usr/local/courier-imap/etc/pop3d
# cp /usr/local/courier-imap/etc/pop3d-ssl.dist /usr/local/courier-imap/etc/pop3d-ssl
# vi /usr/local/courier-imap/etc/pop3d
POP3DSTART=yes
注:如果你想为用户提供 IMAP 服务,可以在 /usr/local/courier-imap/etc/imapd 文件中设置 " IMAPDSTART=YES "。
# cp courier-imap.sysvinit /etc/rc.d/init.d/courier-imapd
# chmod 755 /etc/rc.d/init.d/courier-imapd
加入自动启动服务队列:
# echo "/etc/rc.d/init.d/courier-imapd start" >> /etc/rc.local
也可以写成chkconfig --add courier-imapd
启动服务:
# /etc/rc.d/init.d/courier-imapd start
也可以写成 service courier-imapd start
第四部分,也是我的笔记的最后一部分
安装 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 注:但实际导入的是
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
FastCgiIpcDir /var/lib/fcgi
这里疯狂老头笔误,应该是
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 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
SetHandler fastcgi-script
SetHandler fastcgi-script
# 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 ]
最后访问
,如无意外,将看到 webmail 的登陆页,不过此时还没有加正式的用户,所以不能登陆,包括
test@extmail.org
也不行。必须要登陆到
里增加一个新帐户才能登陆。
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系统。
阅读(1847) | 评论(0) | 转发(0) |