Chinaunix首页 | 论坛 | 博客
  • 博客访问: 885148
  • 博文数量: 254
  • 博客积分: 5350
  • 博客等级: 大校
  • 技术积分: 2045
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-27 13:27
文章分类

全部博文(254)

文章存档

2015年(1)

2014年(9)

2013年(17)

2012年(30)

2011年(150)

2010年(17)

2009年(28)

2008年(2)

分类: LINUX

2009-01-02 20:10:39

疯狂老头版《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: '>>/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 < /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 的 帐户的 Maildir,请输入如下命令:
注:但实际导入的是
# 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

这个时候,会出现“Invalid user specified”的错误,不要惊慌,这是正常的,因为Mysql数据库里只有,而你给的命令是,当然它会告诉你,你指定的是非法用户。注意,这个时候,/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的测试时,把改成,那样不就可以了吗?说实话,这个方法我当然想到过,并且也付诸实践过,问题是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 的登陆页,不过此时还没有加正式的用户,所以不能登陆,包括 也不行。必须要登陆到   里增加一个新帐户才能登陆。

ExtMan 的默认超级管理员帐户是 ,密码是 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系统。
 
 
阅读(2308) | 评论(0) | 转发(0) |
0

上一篇:rpm 包下載站點

下一篇:Linux下jdk1.6的安装

给主人留下些什么吧!~~