下软件包都将在/duyunlong中存放
Postfix-2.4.5
 Mysql-5.0.45
 Sasl-2.1.22
 DB-4.5.20
 Openssl-0.98e
 httpd-2.2.4
 Php-5.2.3
 courier-authlib-0.59.3
 courier-imap-4.1.3
 Extmail-1.0.2
 Extman-0.2.2
 maildrop-2.0.4
 clamav-0.91.2
 amavisd-new
 SpamAssassin-3.2.3
前提:开始前请确保您已经配置好指向此邮件服务器MX记录及其它DNS设置;本示例中的域名为benet.org,邮件服务器FQDN为mail.benet.org,IP地址为192.168.1.6;同时,如果您的服务器事先已经安装了sendmail,请卸载之;
一、安装mysql-5.0.45
 #groupadd mysql
 #useradd -g mysql -s /bin/false -M mysql
 #tar zxvf mysql-5.0.45.tar.gz
 #cd mysql-5.0.45
 
 #./configure
--prefix=/usr/local/mysql
--enable-thread-safe-client
--enable-local-infile
--with-charset=gbk
--with-extra-charset=all
--with-low-memory
 #make
 #make install
 #cp support-files/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  /usr/local/src/mysql-5.0.45     (这里的目录指的是原压缩包解压后的目录)
 #cp  support-files/mysql.server  /etc/rc.d/init.d/mysqld
 #chmod  700  /etc/rc.d/init.d/mysqld
 加入自动启动服务队列:
 #chkconfig --add mysqld
 #chkconfig  --level  345  mysqld  on 
测试
 #/usr/local/mysql/bin/mysqladmin  ping
 #/usr/local/mysql/bin/mysqladmin  version
 #/usr/local/mysql/bin/mysql 
添加root密码
 #/usr/local/mysql/bin/mysqladmin -uroot -p 旧密码 password 新密码
 说明:此时mysql的root用户的密码为空
配置库文件搜索路径
 # echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf
 # ldconfig -v
添加/usr/local/mysql/bin到环境变量PATH中
 #export PATH=$PATH:/usr/local/mysql/bin 

二、安装openssl-0.9.8e 
# tar zxvf openssl-0.9.8e.tar.gz
 # cd openssl-0.9.8e
 # ./config shared zlib
 # make
# make test
 # make install
 # mv /usr/bin/openssl /usr/bin/openssl.OFF
 # mv /usr/include/openssl /usr/include/openssl.OFF
 # rm /usr/lib/libssl.so
 # ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
 # ln -s /usr/local/ssl/include/openssl /usr/include/openssl
 # ln -sv /usr/local/ssl/lib/libssl.so.0.9.8  /usr/lib/libssl.so

 配置库文件搜索路径
 # echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
 # ldconfig -v
 
检测安装结果
 # openssl version
 OpenSSL 0.9.8e 23 Feb 2007

三、安装sasl-2.1.22 
#tar zxvf cyrus-sasl-2.1.22.tar.gz
 #cd cyrus-sasl-2.1.22
 #./configure --prefix=/usr/local/sasl2            (注意使用续行符)
 --disable-gssapi
--disable-anon
--disable-sample
--disable-digest
--enable-plain
--enable-login
--enable-sql
--with-mysql=/usr/local/mysql
--with-mysql-includes=/usr/local/mysql/include/mysql --with-mysql-libs=/usr/local/mysql/lib/mysql  --with-authdaemond=/usr/local/courier-authlib/var/spool/authdaemon/socket
 #make
 #make install 


关闭原有的sasl:
 # mv /usr/lib/libsasl2.a  /usr/lib/libsasl2.a.OFF
 # mv /usr/lib/libsasl2.la  /usr/lib/libsasl2.la.OFF
 # mv /usr/lib/libsasl2.so.2.0.19  /usr/lib/libsasl2.so.2.0.19.OFF
 # mv /usr/lib/sasl2  /usr/lib/sasl2.OFF
 # rm /usr/lib/libsasl2.so
 # rm /usr/lib/libsasl2.so.2
 # ln -sv /usr/local/sasl2/lib/*  /usr/lib
 postfix 2.3以后的版本会分别在/usr/local/lib和/usr/local/include中搜索sasl库文件及头文件,故还须将其链接至此目录中:
 # ln -sv /usr/local/sasl2/lib/*  /usr/local/lib
 # ln -sv /usr/local/sasl2/include/sasl/*  /usr/local/include
 
创建运行时需要的目录并调试启动
 # mkdir -pv /var/state/saslauthd     
 # /usr/local/sasl2/sbin/saslauthd  -a  shadow  pam  -d
 
启动并测试
 # /usr/local/sasl2/sbin/saslauthd -a shadow pam
# /usr/local/sasl2/sbin/testsaslauthd -u root -p root用户密码
 
配置库文件搜索路径
 # echo "/usr/local/sasl2/lib" >> /etc/ld.so.conf
 # echo "/usr/local/sasl2/lib/sasl2" >> /etc/ld.so.conf
 # ldconfig -v
 
开机自动启动
 # echo "/usr/local/sasl2/sbin/saslauthd -a shadow pam">>/etc/rc.local


 四、安装BerkeleyDB
#tar zxvf db-4.5.20.tar.gz
 #cd db-4.5.20/build_unix
 #../dist/configure --prefix=/usr/local/BerkeleyDB
 #make
 #make install
 
修改相应的头文件指向
 # mv  /usr/include/db4  /usr/inculde/db4.OFF
 # rm  /usr/include/db_cxx.h
# rm  /usr/include/db.h
 # rm  /usr/include/db_185.h
# ln -sv /usr/local/BerkeleyDB/include  /usr/include/db4
 # ln -sv /usr/local/BerkeleyDB/include/db.h  /usr/include/db.h
 # ln -sv /usr/local/BerkeleyDB/include/db_cxx.h  /usr/include/db_cxx.h
 
配置库文件搜索路径
# echo "/usr/local/BerkeleyDB/lib" >> /etc/ld.so.conf
 # ldconfig –v
 
五、安装httpd-2.2.4 
#tar jxvf httpd-2.2.4.tar.bz2
 #cd httpd-2.2.4
 #./configure
--prefix=/usr/local/apache
--sysconfdir=/etc/httpd
--enable-so
--enable-ssl
--with-ssl=/usr/local/ssl
--enable-track-vars
--enable-rewrite
--with-zlib
--enable-mods-shared=most 
 --enable-suexec                      (后面extmail切换”运行时用户”时要用到)
 --with-suexec-caller=daemon 
  #make
  #make install

  #echo "/usr/local/apache/bin/apachectl start" >> /etc/rc.local(系统启动时服务自动启动)
 
六、安装php-5.2.3
# tar -zvxf php-5.2.3.tar.gz
 # mkdir -p /usr/local/php
 # cd php-5.2.3
 # ./configure --prefix=/usr/local/php             
   --with-apxs2=/usr/local/apache/bin/apxs
   --with-mysql=/usr/local/mysql
   --with-mysqli=/usr/local/mysql/bin/mysql_config
   --with-xml
   --with-png
   --with-jpeg
   --with-zlib
   --with-freetype
  --with-gd 
   --enable-track-vars 
   --enable-mbstring=all
 # make
 # make install
 # cp php.ini-dist  /usr/local/php/lib/php.ini

注:编辑apache配置文件httpd.conf,以apache支持php
 # vi /etc/httpd/httpd.conf
 1、添加如下二行
   AddType application/x-httpd-php  .php
   AddType application/x-httpd-php-source  .phps
 
2、定位至DirectoryIndex index.html
  修改为:
    DirectoryIndex  index.php  index.html
 
3、按照使用习惯,这里将网站根目录指定到/var/www:
 找到DocumentRoot “/usr/local/apache/htdocs”
 修改为:DocumentRoot “/var/www”(后文中我们还会注释掉此行,以启用虚拟主机)
 
找到<Directory &ldquo;/usr/local/apache/htdocs&rdquo;>
 修改为:<Directory &ldquo;/var/www&rdquo;>
 
说明:这个对本文来说并非是不可少的。
 
七、安装Postfix-2.4.5 
1.安装
 #groupadd -g 2525 postfix
 #useradd -g postfix -u 2525 -s /sbin/nologin -M postfix
 #groupadd -g 2526 postdrop
 #useradd -g postdrop -u 2526 -s /bin/false -M postdrop
 
#tar zxvf postfix-2.4.5.tar.gz
 #cd postfix-2.4.5
 #make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/local/sasl2/include/sasl -I/usr/local/BerkeleyDB/include  -DUSE_TLS -I/usr/local/ssl/include/openssl ' 'AUXLIBS=-L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lm -L/usr/local/sasl2/lib -lsasl2 -L/usr/local/BerkeleyDB/lib -L/usr/local/ssl/lib -lssl -lcrypto'
 #make
 #make install
 
按照以下的提示输入相关的路径([]号中的是缺省值,&rdquo;]&rdquo;后的是输入值) 
  install_root: [/] /
   tempdir: [/usr/local/src/ postfix-2.4.5] /tmp
   config_directory: [/etc/postfix] /etc/postfix
   daemon_directory: [/usr/libexec/postfix] /usr/local/postfix/libexec
   command_directory: [/usr/sbin] /usr/local/postfix/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]  
     html_directory: [no] /var/www/postfix_html
     manpages: [/usr/local/man] /usr/local/postfix/man  
     readme_directory: [no] 
说明:这里的postfix将安装在独立的目录/usr/local/postfix中,目的是为了方便管理;您亦可以采用默认安装的方式,可能这样使用起来会更为方便些; 
生成别名二进制文件,这个步骤如果忽略,会造成postfix效率极低:
 #  newaliases
 
2.进行一些基本配置,测试启动postfix并进行发信
 #vi /etc/postfix/main.cf
 修改以下几项为您需要的配置
 myhostname = mail.benet.org
 myorigin = benet.org
 mydomain = benet.org
 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
 mynetworks = 192.168.1.0/24, 127.0.0.0/8
 
说明:
 myorigin参数用来指明发件人所在的域名;
 mydestination参数指定postfix接收邮件时收件人的域名,即您的postfix系统要接收到哪个域名的邮件;
 myhostname 参数指定运行postfix邮件系统的主机的主机名,默认情况下,其值被设定为本地机器名;
 mydomain参数指定您的域名,默认情况下,postfix将myhostname的第一部分删除而作为mydomain的值;
 mynetworks 参数指定你所在的网络的网络地址,postfix系统根据其值来区别用户是远程的还是本地的,如果是本地网络用户则允许其访问;
 inet_interfaces 参数指定postfix系统监听的网络接口;
 
注意:
 1、在postfix的配置文件中,参数行和注释行是不能处在同一行中的;
 2、任何一个参数的值都不需要加引号,否则,引号将会被当作参数值的一部分来使用;
 3、每修改参数及其值后执行 postfix reload 即可令其生效;但若修改了inet_interfaces,则需重新启动postfix;
 4、如果一个参数的值有多个,可以将它们放在不同的行中,只需要在其后的每个行前多置一个空格即可;postfix会把第一个字符为空格或tab的文本行视为上一行的延续;
启动postfix
 /usr/local/postfix/sbin/postfix  start
 
连接postfix,验正服务启动状况:
 # telnet localhost 25
 Trying 127.0.0.1...
 Connected to localhost.localdomain (127.0.0.1).
 Escape character is '^]'.
 220 mail.benet.org ESMTP Postfix
 ehlo mail.benet.org
 250-mail.benet.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN
 mail from:root@benet.org
 250 2.1.0 Ok
 rcpt to:redhat@benet.org
 250 2.1.5 Ok
 data
 354 End data with <CR><LF>.<CR><LF>
 subject:Mail test!
 Mail test!!!
 .
 250 2.0.0 Ok: queued as AB94A1A561
 quit
 221 2.0.0 Bye
 Connection closed by foreign host.
 
切换到redhat用户进行收信:
 # su - redhat
 $ mail
 Mail version 8.1 6/6/93.  Type ? for help.
 "/var/spool/mail/redhat": 1 message 1 new
 >N  1 root@benet.org        Wed Sep  5 10:59  15/488   "Mail test!"
 &
 
八、为postfix开启基于cyrus-sasl的认证功能
 
使用以下命令验正postfix是否支持cyrus风格的sasl认证,如果您的输出为以下结果,则是支持的:
 # /usr/local/postfix/sbin/postconf  -a
 cyrus
 dovecot
 
#vi /etc/postfix/main.cf
 添加以下内容:
 ############################CYRUS-SASL############################
 broken_sasl_auth_clients = yes
 smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_invalid_hostname,reject_non_fqdn_hostname,reject_unknown_sender_domain,reject_non_fqdn_sender,reject_non_fqdn_recipient,reject_unknown_recipient_domain,reject_unauth_pipelining,reject_unauth_destination
 smtpd_sasl_auth_enable = yes
 smtpd_sasl_local_domain = $myhostname
 smtpd_sasl_security_options = noanonymous
 smtpd_sasl_application_name = smtpd
 smtpd_banner = Welcome to our $myhostname ESMTP,Warning: Version not Available!
 
#vi /usr/local/lib/sasl2/smtpd.conf
 添加如下内容:
 pwcheck_method: saslauthd
 mech_list: PLAIN LOGIN
 
让postfix重新加载配置文件
 #/usr/local/postfix/sbin/postfix reload
 
# telnet localhost 25
 Trying 127.0.0.1...
 Connected to localhost.localdomain (127.0.0.1).
 Escape character is '^]'.
 220 Welcome to our mail.benet.org ESMTP,Warning: Version not Available!
 ehlo mail.benet.org
 250-mail.benet.org
 250-PIPELINING
 250-SIZE 10240000
 250-VRFY
 250-ETRN
 250-AUTH PLAIN LOGIN
 250-AUTH=PLAIN LOGIN               (请确保您的输出以类似两行)
 250-ENHANCEDSTATUSCODES
 250-8BITMIME
 250 DSN
 

九、让postfix支持虚拟域和虚拟用户
 
1、编辑/etc/postfix/main.cf,添加如下内容:
 ########################Virtual Mailbox Settings########################
 virtual_mailbox_base = /var/mailbox
 virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
 virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
 virtual_alias_domains =
 virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
 virtual_uid_maps = static:2525
 virtual_gid_maps = static:2525
 virtual_transport = virtual
 maildrop_destination_recipient_limit = 1
 maildrop_destination_concurrency_limit = 1
 ##########################QUOTA Settings########################
 message_size_limit = 14336000
 virtual_mailbox_limit = 20971520
 virtual_create_maildirsize = yes
 virtual_mailbox_extended = yes
 virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
 virtual_mailbox_limit_override = yes
 virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please Tidy your mailbox and try again later.
 virtual_overquota_bounce = yes
 
2、添加为支持虚拟域和虚拟用户所用到的配置文件
 
编辑/etc/postfix/mysql_virtual_alias_maps.cf ,添加如下内容:
 user = extmail
 password = extmail
 hosts = localhost
 dbname = extmail
 table = alias
 select_field = goto
 where_field = address
 
编辑/etc/postfix/mysql_virtual_domains_maps.cf ,添加如下内容:
 user = extmail
 password = extmail
 hosts = localhost
 dbname = extmail
 table = domain
 select_field = description
 where_field = domain
 
编辑/etc/postfix/mysql_virtual_mailbox_limit_maps.cf ,添加如下内容:
 user = extmail
 password = extmail
 hosts = localhost
 dbname = extmail
 table = mailbox
 select_field = quota
 where_field = username
 
编辑/etc/postfix/mysql_virtual_mailbox_maps.cf ,添加如下内容:
 user = extmail
 password = extmail
 hosts = localhost
 dbname = extmail
 table = mailbox
 select_field = maildir
 where_field = username
 

说明:
 1、这里用到的数据库及用户的建立可以后文中的extmail说明部分来实现,您可以参照那一部分来理解这里指定的数据库及其用户名等;
 2、以上新建文件亦可以从extman安装文件中获得,您也可以由此不用手动输入;
 3、虚拟用户邮箱目录我这里沿用了/var/mailbox,你可以指定为别的目录,比如常见到的/var/spool/mail,或者/home/domains等;但如果这里做了修改,请在后文中用到时作了相应的修改;
 
十、安装Courier authentication library
 
# tar jxvf courier-authlib-0.59.3.tar.bz2
 # cd courier-authlib-0.59.3
 #./configure
    --prefix=/usr/local/courier-authlib
    --sysconfdir=/etc
    --without-authpam
    --without-authldap
    --without-authpwd
    --without-authshadow
    --without-authvchkpw
    --without-authpgsql
    --with-authmysql
    --with-mysql-libs=/usr/local/mysql/lib/mysql
    --with-mysql-includes=/usr/local/mysql/include/mysql
    --with-redhat
    --with-authmysqlrc=/etc/authmysqlrc
    --with-authdaemonrc=/etc/authdaemonrc
    CFLAGS="-march=i686 -O2 -fexpensive-optimizations" 
     CXXFLAGS="-march=i686 -O2 -fexpensive-optimizations"
 # make
 # make install
 
# chmod 755 /usr/local/courier-authlib/var/spool/authdaemon
 # cp /etc/authdaemonrc.dist  /etc/authdaemonrc
 # cp /etc/authmysqlrc.dist  /etc/authmysqlrc
 
修改/etc/authdaemonrc 文件
 authmodulelist="authmysql"
 authmodulelistorig="authmysql"
 daemons=10
 
编辑/etc/authmysqlrc 为以下内容,其中2525,2525 为postfix 用户的UID和GID。
 MYSQL_SERVER localhost
 MYSQL_PORT 3306                   (指定你的mysql监听的端口,这里使用默认的3306)
 MYSQL_USERNAME  extmail      (这时为后文要用的数据库的所有者的用户名)
 MYSQL_PASSWORD extmail        (密码)
 MYSQL_SOCKET  /tmp/mysql.sock
 MYSQL_DATABASE  extmail
 MYSQL_USER_TABLE  mailbox
 MYSQL_CRYPT_PWFIELD  password
 MYSQL_UID_FIELD  '2525'
 MYSQL_GID_FIELD  '2525'
 MYSQL_LOGIN_FIELD  username
 MYSQL_HOME_FIELD  concat('/var/mailbox/',homedir)
 MYSQL_NAME_FIELD  name
 MYSQL_MAILDIR_FIELD  concat('/var/mailbox/',maildir)
 
# cp courier-authlib.sysvinit /etc/init.d/courier-authlib
 # chmod 755 /etc/init.d/courier-authlib
 # chkconfig --add courier-authlib
 # chkconfig --level 2345 courier-authlib on
 
#echo "/usr/local/courier-authlib/lib/courier-authlib" >> /etc/ld.so.conf
 # ldconfig -v
 # service courier-authlib start   (启动服务)
十一、安装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
  CPPFLAGS='-I/usr/local/ssl/include/openssl  -I/usr/local/courier-authlib/include'  
   LDFLAGS='-L/usr/local/courier-authlib/lib/courier-authlib' 
   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
 
配置Courier-IMAP,为用户提供pop3服务:
 vi /usr/local/courier-imap/etc/pop3d
 POP3DSTART=YES
 
注:如果你想为用户提供IMAP服务,则需在"/usr/local/courier-imap/etc/imapd"文件中设置"IMAPDSTART=yes";其它类同;
 
新建虚拟用户邮箱所在的目录,并将其权限赋予postfix用户:
 #mkdir &ndash;pv /var/mailbox
 #chown &ndash;R postfix /var/mailbox
 
#cp courier-imap.sysvinit /etc/rc.d/init.d/courier-imapd
 #chmod 755 /etc/rc.d/init.d/courier-imapd
 #chkconfig --add courier-imapd
 #chkconfig --level 2345 courier-imapd on
 #service courier-imapd start
 
接下来重新配置SMTP 认证,编辑 /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
十二、安装Extmail-1.0.2
 
1、安装
 # tar zxvf extmail-1.0.2.tar.gz
 # mkdir -pv /var/www/extsuite
 # mv extmail-1.0.2 /var/www/extsuite/extmail
 # cp /var/www/extsuite/extmail/webmail.cf.default  /var/www/extsuite/extmail/webmail.cf
 
2、修改主配置文件
 #vi /var/www/extsuite/extmail/webmail.cf
 
部分修改选项的说明:
 
SYS_MESSAGE_SIZE_LIMIT = 5242880
 用户可以发送的最大邮件
 
SYS_USER_LANG = en_US
 语言选项,可改作:
 SYS_USER_LANG = zh_CN
 
SYS_MAILDIR_BASE = /home/domains
 此处即为您在前文所设置的用户邮件的存放目录,可改作:
 SYS_MAILDIR_BASE = /var/mailbox
 
SYS_MYSQL_USER = db_user
 SYS_MYSQL_PASS = db_pass
 以上两句句用来设置连接数据库服务器所使用用户名、密码和邮件服务器用到的数据库,这里修改为:
 SYS_MYSQL_USER = extmail
 SYS_MYSQL_PASS = extmail
 

SYS_MYSQL_HOST = localhost
 指明数据库服务器主机名,这里默认即可
 
SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock
 连接数据库的sock文件位置,这里修改为:
 SYS_MYSQL_SOCKET = /tmp/mysql.sock
 

SYS_MYSQL_TABLE = mailbox
 SYS_MYSQL_ATTR_USERNAME = username
 SYS_MYSQL_ATTR_DOMAIN = domain
 SYS_MYSQL_ATTR_PASSWD = password
 以上用来指定验正用户登录里所用到的表,以及用户名、域名和用户密码分别对应的表中列的名称;这里默认即可
 
SYS_AUTHLIB_SOCKET = /var/spool/authdaemon/socket
 此句用来指明authdaemo socket文件的位置,这里修改为:
 SYS_AUTHLIB_SOCKET = /usr/local/courier-authlib/var/spool/authdaemon/socket
 

3、apache相关配置
 
由于extmail要进行本地邮件的投递操作,故必须将运行apache服务器用户的身份修改为您的邮件投递代理的用户;本例中打开了apache服务器的suexec功能,故使用以下方法来实现虚拟主机运行身份的指定。此例中的MDA为postfix自带,因此将指定为postfix用户:
 <VirtualHost *:80>
 ServerName mail.benet.org
 DocumentRoot /var/www/extsuite/extmail/html/
 ScriptAlias /extmail/cgi /var/www/extsuite/extmail/cgi
 Alias /extmail /var/www/extsuite/extmail/html
 SuexecUserGroup postfix postfix
 </VirtualHost>
 
修改 cgi执行文件属主为apache运行身份用户:
 # chown -R postfix.postfix /var/www/extsuite/extmail/cgi/
 
如果您没有打开apache服务器的suexec功能,也可以使用以下方法解决:
 # vi /etc/httpd/httpd.conf
 User postfix
 Group postfix
 
<VirtualHost *:80>
 ServerName mail.benet.org
 DocumentRoot /var/www/extsuite/extmail/html/
 ScriptAlias /extmail/cgi /var/www/extsuite/extmail/cgi
 Alias /extmail /var/www/extsuite/extmail/html
 </VirtualHost>
 
4、依赖关系的解决
 
extmail将会用到perl的DBD::Mysql和Unix::syslogd功能,您可以去http://search.cpan.org搜索下载原码包进行安装。
 # tar zxvf Unix-Syslog-0.100.tar.gz
 # cd Unix-Syslog-0.100
 # perl Makefile.PL
 # make
 # make install
 
DBD-Mysql目前最新的版本为DBD-mysql-4.005,但它和系统中的perl结合使用时会造成extmail无法正常使用,因此我们采用3的版本:
 # tar zxvf DBD-mysql-3.0002_4.tar.gz 
 # cd 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

 十三、安装Extman-0.2.2
 
1、安装及基本配置
 
#tar zxvf  extman-0.2.2.tar.gz
 # mv extman-0.2.2 /var/www/extsuite/extman
 
修改配置文件以符合本例的需要:
 # vi /var/www/extsuite/extman/webman.cf
 
SYS_MAILDIR_BASE = /home/domains
 此处即为您在前文所设置的用户邮件的存放目录,可改作:
 SYS_MAILDIR_BASE = /var/mailbox
 
SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock
 此处修改为:
 SYS_MYSQL_SOCKET = /tmp/mysql.sock
 
使用extman源码目录下docs目录中的extmail.sql和init.sql建立数据库:
 
# cd /var/www/extsuite/extman/docs
 # mysql -u root -p <extmail.sql
 # mysql -u root -p <init.sql
 
修改cgi目录的属主:
 # chown -R postfix.postfix /var/www/extsuite/extman/cgi/
 
如果extman访问数据库权限不足的话,可采用以下命令将新生成的数据库赋予webman用户具有所有权限:
 mysql> GRANT all privileges on extmail.* TO webman@localhost IDENTIFIED BY 'webman';
 mysql> GRANT all privileges on extmail.* TO webman@127.0.0.1 IDENTIFIED BY 'webman';
 
在apache的主配置文件中Extmail的虚拟主机部分,添加如下两行:
 ScriptAlias /extman/cgi /var/www/extsuite/extman/cgi
 Alias /extman /var/www/extsuite/extman/html
 
创建其运行时所需的临时目录,并修改其相应的权限:
 #mkdir  -pv  /tmp/extman
 #chown postfix.postfix  /tmp/extman
 完毕!!!

还可以参考:http://bbs.winos.cn/thread-20878-1-1.html