Extmail 是一个以perl语言编写,面向大容量/ISP级应用,它是一款免费的高性能Webmail软件  满足用户多变的需求,能快速进行开发、改进和升级,支持Maildir,索引技术,速度超快。支持多国语言同屏显示,支持巨型邮箱(超过1GB)海量文件,支持无限尺寸附件,I/O能力强,模板化,多语言,修改非常容易。适应能力强的webmail系统  对于国内的电子邮件系统来说,无论是从系统功能、易用性还是中文化等方面,ExtMail 平台都是一个相当不错的选择。其工作原理如下图所示:

 

6758400_1370057259u59d

一.准备工作

1.准备工具

apr-1.4.6.tar.gz      apr-util-1.5.1.tar.gz

httpd-2.4.4.tar.bz2    courier-authlib-0.65.0.20130314.tar.bz2

mysql-5.5.15-linux2.6-i686.tar.gz

postfix-2.8.2.tar.gz    dovecot-2.0.16.tar

extmail-1.2.tar.gz     Unix-Syslog-1.1.tar.gz

extman-1.1.tar.gz

2.准备开发环境

[root@lly ~]# mkdir /mnt/cdrom    建立光盘挂载点

[root@lly ~]# mount /dev/cdrom  /mnt/cdrom   挂载光盘

[root@lly ~]# vim /etc/yum.repos.d/rhel-debuginfo.repo    编辑yum客户端构建一个repo  id

6758400_13700572819k2m

[root@lly ~]# yum grouplist   检查开发环境

6758400_1370057304rUwi

注:软件依赖这几个开发环境,如果预先没有安装开发环境的话,可以用yum进行安装。

二.软件包的安装

1.安装apache

[root@lly ~]# tar -zxvf apr-1.4.6.tar.gz -C /usr/local/src/   拆解apr软件包

[root@lly src]# cd /usr/local/src/apr-1.4.6/

[root@lly apr-1.4.6]# ./configure   –prefix=/usr/local/apr把apr安装到/usr/local/apr目录下

[root@lly apr-1.4.6]#make

[root@lly apr-1.4.6]#make install

[root@lly apr-1.4.6]# cd

[root@lly ~]# tar -zxvf apr-util-1.5.1.tar.gz -C /usr/local/src/  拆解apr-util软件包

[root@lly src]# cd apr-util-1.5.1/

[root@lly apr-util-1.5.1]# ./configure –with-apr=/usr/local/apr/bin/apr-1-config

[root@lly apr-util-1.5.1]# make

[root@lly apr-util-1.5.1]# make install

[root@lly apr-util-1.5.1]# cd

[root@lly ~]# tar -jxvf httpd-2.4.4.tar.bz2 -C /usr/local/src/     拆解httpd软件包

[root@lly ~]# cd /usr/local/src/httpd-2.4.4/    进入拆解的apache目录

[root@lly httpd-2.4.4]# ./configure –prefix=/usr/local/apache  –sysconfdir=/etc/httpd  –enable-so   –enable-ssl  –enable-rewrite  –with-apr=/usr/local/apr/bin/apr-1-config   –with-apr-util=/usr/local/apr/bin/apu-1-config –with-pcre  -with-z –enable-mpms-shared=all

[root@lly httpd-2.4.4]# make

[root@lly httpd-2.4.4]# make install

[root@lly httpd-2.4.4]#cd /usr/local/apache/man

[root@lly man]# vim /etc/man.config   把apache的man手册添加到man路径方便查看apache的man手册

[root@lly apache]# ln -s /usr/local/apache/include/   /usr/include/apache为apache的头文件做一个符号链接

[root@lly ~]# cd /etc/init.d/

[root@lly init.d]# vim httpd   编辑apache的启动脚本

脚本如下

#!/bin/sh

#set -x

HTTPD=’/usr/local/apache/bin/httpd’

CONFFILE=’/etc/httpd/httpd.conf’

#description: http server

#chkconfig: 2345 88 60

start(){

[ -f /var/lock/subsys/httpd ]&& echo “apache is started” && exit

echo -n  “starting apache……”

sleep  1

$HTTPD  -f $CONFFILE && RETVAL=0 ||RETVAL=1

[ $RETVAL -eq 0 ]&& touch /var/lock/subsys/httpd && echo “ok” || echo “fail”

}

stop(){

[ ! -f  /var/lock/subsys/httpd ] && echo “httpd is stoped…” && exit

echo -n “stoping httpd……..”

sleep  1

/bin/rm -rf /var/lock/subsys/httpd

$HTTPD -k  stop  && RETVAL=0 ||RETVAL=1

[ $RETVAL -eq 0 ] && rm -rf /var/lock/subsys/httpd && echo “ok” || echo “fail”

}

case $1 in

start)

start

;;

stop)

stop

;;

restart)

stop

start

;;

*)

echo “start|stop|restart”

;;

esac

[root@lly init.d]# chmod a+x /etc/init.d/httpd   为apache服务添加可执行权限

[root@lly init.d]# service httpd start   启动apache服务

[root@lly init.d]# netstat -tupln |grep http  查看80端口是否启动

6758400_1370059925OYiW

[root@lly init.d]# chkconfig –add httpd  添加自启动

[root@lly init.d]# chkconfig –list  |grep http   查看添加开机启动是否成功

6758400_13700599326cfN

2.安装cmake

安装mysql的时候需要用到cmake工具

[root@lly ~]# tar -zxvf cmake-2.8.10.2.tar.gz -C /usr/local/src/

[root@lly ~]# cd /usr/local/src/cmake-2.8.10.2/

[root@lly cmake-2.8.10.2]# ./configure –prefix=/usr/local/cmake

[root@lly cmake-2.8.10.2]# make && make install

Waiting…………………..

[root@lly cmake-2.8.10.2]# cd /usr/local/cmake/

为了日后能快速访问cmake下的bin,把cmke下的bin添加路径

[root@lly cmake]# vim /etc/profile

6758400_137005994666u1

注:只有下次进入之后路径才会添加成功。

3.安装mysql

[root@lly ~]# tar zxvf mysql-5.6.10.tar.gz -C /usr/local/src/

[root@lly ~]# cd /usr/local/src/mysql-5.6.10/

[root@lly mysql-5.6.10]# less INSTALL-SOURCE

mysql的使用说明,我们可以按照安装说明进行安装。

6758400_137006023557z6

 

[root@lly ~]# cd /usr/local/src/mysql-5.6.10/

[root@lly mysql-5.6.10]# cmake .

[root@lly mysql-5.6.10]# make  &&  make install

6758400_1370275195YmKT

这个是很耗时的。Please  waiting  for  a  long time。。。。。。。。。。。。。。。。。。。。。。。。。。

[root@lly ~]# cd /usr/local/src/mysql-5.6.10/

[root@lly mysql-5.6.10]# less INSTALL-SOURCE

Mysql安装说明中的配置的步骤

6758400_1370275243Gcj7

[root@lly mysql-5.6.10]# cd /usr/local/mysql/

创建帐号信息

[root@lly mysql]# groupadd mysql

[root@lly mysql]# useradd -r -g mysql mysql

[root@lly mysql]# chown -R mysql .

进行初始化

[root@lly mysql]# scripts/mysql_install_db  –user=mysql

[root@lly mysql]# chown -R root .

[root@lly mysql]# chown -R mysql data

[root@lly mysql]# cd support-files/

[root@lly support-files]# cp my-default.cnf   /etc/my.cnf

[root@lly support-files]# cp mysql.server   /etc/init.d/mysqld

[root@lly support-files]# chmod a+x  /etc/init.d/mysqld

[root@lly support-files]# service mysqld start

Starting MySQL…..                                        [  OK  ]

mysqld 服务成功启动

[root@lly support-files]# netstat -tupln |grep mysqld

6758400_1370275252k2Ji

[root@lly support-files]# cd ..

[root@lly mysql]# pwd

/usr/local/mysql

[root@lly mysql]# vim /etc/profile

6758400_1370275258BCM6

[root@lly bin]# . /etc/profile

[root@lly ~]# mysql

mysql> show databases;

+——————–+

| Database           |

+——————–+

| information_schema |

| mysql              |

| performance_schema |

| test               |

+——————–+

4 rows in set (0.00 sec)

[root@lly ~]# mysqladmin -u root -p password ‘123’设置一个管理员帐号密码123

[root@lly ~]# mysql -u root -p以后就可以以此帐号登陆了

6758400_1370275269Umpy

注:mysql生成的/usr/local/mysql/lib库文件不是标准路径系统无法识别(/lib 或者/usr/lib为标准路径)所以需做如下配置

[root@lly mysql]# vim /etc/ld.so.conf.d/mysql.conf

写入

/usr/local/mysql/lib

[root@lly mysql]# ldconfig

[root@lly mysql]# ln -s /usr/local/mysql/include/   /usr/include/mysql   对mysql的头文件include做一个连接

 

4.安装dns服务器

[root@lly ~]# yum install -y  bind  bind-chroot caching-nameserver

[root@lly ~]# service mysqld start

这里创建本地域126.com   邮件服务器域mail.126.com  本机地址192.168.126.129

[root@lly ~]# cd /var/named/chroot/etc/

[root@lly etc]# cp -p named.caching-nameserver.conf  named.conf

[root@lly etc]# vim named.conf  编辑dns配置

6758400_1370275281TxRV

[root@lly etc]# vim named.rfc1912.zones 编辑区域的声明文件

6758400_1370275308WBF4

[root@lly etc]# cd /var/named/chroot/var/named/

[root@lly named]# cp -p localhost.zone  126.com.zone  生成区域文件

[root@lly named]# vim 126.com.zone  编辑区域文件

6758400_1370275317VfO0

[root@lly named]# service named start  启动dns

[root@lly named]# chkconfig named on  添加自启动

[root@lly named]# vim /etc/resolv.conf    dns指向

6758400_1370275321MAxk

[root@lly named]# vim /etc/sysconfig/network   修改主机名(邮件服务器)

6758400_1370275324k2ri

[root@lly named]# vim /etc/hosts   修改hosts文件

6758400_1370275328JcmI

[root@lly named]# hostname mail.126.com   重新启动,或者修改下主机名

[root@mail ~]# nslookup mail.126.com   查看dns解析

6758400_1370275334MOIE

[root@mail ~]# dig -t mx 126.com   测试126.com区域的邮局

6758400_13702753444Mk0

一切正常。。。

5.安装postfix

[root@mail ~]# service sendmil stop

[root@mail ~]# chkconfig sendmail off   如果安装了sendmail,要先把sendmail服务关闭

[root@mail ~]# tar -zxvf postfix-2.8.2.tar.gz -C /usr/local/src/

[root@mail ~]# cd /usr/local/src/postfix-2.8.2/

没有configure文件可以改变makefile文件来代替configure

注:Postfix是一种服务,需要为其添加帐号。

[root@mail postfix-2.8.2]# groupadd -g 2121  postfix 添加postfix组,组id 2121

[root@mail postfix-2.8.2]# useradd -u 2121 -g postfix -s /sbin/nologin  -M postfix   创建账号 用户名postfix 组的名字postfix

[root@mail postfix-2.8.2]# groupadd -g 2122  postdrop

[root@mail postfix-2.8.2]# useradd -u 2122 -g postfix -s /sbin/nologin  -M postdrop   为队列管理服务创建帐号

[root@mail postfix-2.8.2]# make makefiles ‘CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl  -DUSE_TLS ‘ ‘AUXLIBS=-L/usr/local/mysql/lib -lmysqlclient -lz -lm -L/usr/lib/sasl2 -lsasl2   -lssl –lcrypto’

注:(没有configure文件可以改变makefile文件来代替configure  这条命令相当于./configure)

[root@lly postfix-2.8.2]# make

[root@lly postfix-2.8.2]# make install

6758400_1370275372sUfi

其他的都可以直接回车默认值就行

6758400_1370275376T1Yo

注:之后会生成etc目录下aliases,这个文件是和sendmail结合的,为了让其与postfix结合,执行一下

[root@mail postfix-2.8.2]# /usr/bin/newaliases 执行

说明:这里调用redhat系统自带的启动脚本。由于postfix安装的时候基本都是默认安装,路径都是默认路径,所以使用系统自带的脚本没问题,基本不用修改就能用。

[root@mail postfix-2.8.2]# mkdir /tmp/abc

[root@mail postfix-2.8.2]# cd /tmp/abc/

[root@mail abc]# cp /mnt/cdrom/Server/postfix-2.3.3-2.1.el5_2.i386.rpm ./   把光盘上的拷贝过来

[root@mail abc]# rpm2cpio  postfix-2.3.3-2.1.el5_2.i386.rpm |cpio -id拆解postfix包

[root@mail abc]# cd etc

[root@mail etc]# cd rc.d

[root@mail rc.d]# cd init.d

[root@mail init.d]# cp -p postfix  /etc/init.d/   拷贝配置文件

[root@mail init.d]# service postfix start   启动postfix服务

6758400_1370275380B9As

[root@mail ~]# netstat -tupln |grep 25

6758400_1370275383hX75

[root@mail ~]# vim /etc/postfix/main.cf

6758400_1370275387AB9D

6758400_137027538866Qk

6758400_1370275390FLr8

6758400_1370275392xrum

6758400_1370275396WbAb

[root@mail ~]# service postfix restart  重启服务

[root@mail sbin]# useradd user1  添加user1用户

[root@mail sbin]# passwd user1  为user1用户添加密码123

[root@mail ~]# telnet 127.0.0.1 25   向user1发送一封测试邮件

6758400_1370275403lunB

查看user1是否收到邮件了

[root@mail ~]# su – user1   以user1用户登录查看邮件

[user1@mail ~]$ mail

6758400_1370275416ybz6

注:Postfix身份验证功能需要结合sasl

[root@mail ~]# cd /usr/lib/sasl2/

6758400_1370275419LgNh

[root@mail sasl2]# cp -p Sendmail.conf smtpd.conf

[root@mail sasl2]# vim smtpd.conf    编辑其配置文件

6758400_13702754220vb4

[root@mail sasl2]# service saslauthd start  启动sasl

[root@mail sasl2]# chkconfig saslauthd on  设置为开机启动

[root@mail ~]# vim /etc/postfix/main.cf 要想sasl对smtp生效,需要添加sasl的一些验证语句

6758400_1370275429MLpw

[root@mail sasl2]# service postfix restart重启postfix服务

6758400_1370275441KCkF

 

6.安装courier-authlib

[root@mail ~]# tar -jxvf courier-authlib-0.63.1.20111230.tar.bz2 -C /usr/local/src/

[root@mail ~]# cd /usr/local/src/courier-authlib-0.63.1.20111230/

[root@mail courier-authlib-0.63.1.20111230]# ./configure  –prefix=/usr/local/courier-authlib  –sysconfdir=/etc   –with-authmysql    –with-mysql-libs=/usr/local/mysql/lib/   –with-mysql-includes=/usr/include/mysql    –with-redhat    –with-authmysqlrc=/etc/authmysqlrc    –with-authdaemonrc=/etc/authdaemonrc    –with-ltdl-lib=/usr/lib    –with-ltdl-include=/usr/include

[root@mail courier-authlib-0.63.1.20111230]# make

[root@mail courier-authlib-0.63.1.20111230]# make install

[root@mail courier-authlib-0.63.1.20111230]# service postfix restart

[root@mail etc]# cp authdaemonrc.dist    authdaemonrc  验证时使用的模块

[root@mail etc]# cp authmysqlrc.dist    authmysqlrc

[root@mail etc]# vim authdaemonrc

6758400_1370275450h9F0

[root@mail etc]# vim authmysqlrc

6758400_1370275454icki

6758400_1370275457jyKX

6758400_13702754585r7q

6758400_1370275459NHEU

6758400_1370275481OHAd

6758400_1370275483nMNt

6758400_1370275486CXXq

6758400_1370275488PyCT

6758400_1370275489BIeE

6758400_1370275491MUgt

6758400_1370275498ZnTE

6758400_1370275502oPCw

[root@mail src]# cd /usr/local/src/courier-authlib-0.63.1.20111230/

[root@mai courier-authlib-0.63.1.20111230]#cp courier-authlib.sysvinit  /etc/init.d/courier-authlib 拷贝启动脚本

[root@mail courier-authlib-0.63.1.20111230]# chmod a+x /etc/init.d/courier-authlib 修改权限可执行

[root@mail courier-authlib-0.63.1.20111230]# chkconfig courier-authlib on添加开机启动

[root@mail courier-authlib-0.63.1.20111230]# service courier-authlib start启动courier-authlib

[root@mail courier-authlib-0.63.1.20111230]# cd /usr/local/courier-authlib/

[root@mail courier-authlib]# vim /etc/ld.so.conf.d/courier-authlib.conf导入库文件

6758400_13702755068b8z

[root@mail lib]# ldconfig

[root@mail lib]# ldconfig -pv |grep courie

6758400_1370275512YedU

[root@mail lib]# cd ..

[root@mail courier-authlib]# ln -s /usr/local/courier-authlib/include/   /usr/include/courier-authlib对头文件做一个符号链接

[root@mail courier-authlib]# vim /etc/postfix/main.cf

添加如下内容以便让postfix支持虚拟域和虚拟账号

6758400_1370275525cS0p

新建虚拟用户邮箱所在的目录,并将其权限赋予postfix用户

[root@mail ~]# mkdir -pv /var/mailbox

[root@mail ~]# chown -R postfix /var/mailbox

重新配置SMTP 认证

[root@mail postfix]# vim /usr/lib/sasl2/smtpd.conf

6758400_1370275537cRIH

7.安装extman

[root@mail ~]# tar -zxvf extman-1.1.tar.gz

[root@mail ~]# cd extman-1.1

[root@mail extman-1.1]# cd docs/

[root@mail docs]# mysql -u root -p <extmail.sql    导入数据库

[root@mail docs]# mysql -u root -p <init.sql

[root@mail docs]# mysql -u root -p 登陆数据库进行账号授权

mysql>  GRANT all privileges on extmail.* TO extmail@localhost IDENTIFIED BY ‘extmail’;

mysql>  GRANT all privileges on extmail.* TO extmail@127.0.0.1 IDENTIFIED BY ‘extmail’;

mysql> FLUSH PRIVILEGES;刷新授权

[root@mail docs]# cp mysql_virtual_*  /etc/postfix/

[root@mail postfix]# service postfix restart重启postfix服务

8.安装dovecot

[root@mail ~]# useradd  -M  -s  /sbin/nologin  dovecot   创建账号

[root@mail ~]# cd /usr/local/src/dovecot-2.0.16/

[root@mail dovecot-2.0.16]# ./configure –sysconfdir=/etc  –with-mysql

[root@mail dovecot-2.0.16]#make

[root@mail dovecot-2.0.16]#make install

[root@mail dovecot-2.0.16]#cd /usr/local/share/doc/dovecot/

[root@mail dovecot]# cp example-config/dovecot.conf  /etc/dovecot/dovecot.conf

6758400_1370275545DI6t

6758400_1370275554M3Hi

6758400_1370275558p307

 

[root@mail ~]# vim /etc/dovecot-mysql.conf   创建mysql.conf文件,让dovecot与mysql进行结合

6758400_13702755631yUl

[root@mail ~]# vim  /etc/postfix/main.cf

6758400_1370275565MAx3

9.安装extmail

[root@mail ~]# tar -zxvf extmail-1.2.tar.gz

[root@mail ~]# mkdir -pv /var/www/extsuite

[root@mail ~]# mv extman-1.1  /var/www/extsuite/extman

[root@mail ~]#mv extmail-1.2  /var/www/extsuite/extmail

[root@mail ~]# cd /var/www/extsuite/extmail/

[root@mail extmail]# cp webmail.cf.default webmail.cf

[root@mail extmail]# vim webmail.cf

6758400_1370275567hpLf

6758400_1370275570JPj9

6758400_13711953300egy

6758400_1371195335wHxU

注:Apache和extmail的结合是靠cgi进行的

[root@mail extmail]# vim /etc/httpd/conf/httpd.conf    修改apache配置虚拟主机

6758400_1371195351SKKA

[root@mail extmail]# chown -R postfix.postfix /var/www/extsuite/extmail/cgi/修改 cgi执行文件属主为apache运行身份用户

[root@mail extmail]# service httpd restart

extmail将会用到perl的Unix::syslogd功能,把补丁打上去

[root@mail ~]# tar zxvf Unix-Syslog-0.100.tar.gz  -C /usr /local/src/ Unix-Syslog-0.100

[root@mail ~]# cd Unix-Syslog-0.100

[root@mail Unix-Syslog-0.100]# perl Makefile.PL

[root@mail Unix-Syslog-0.100]# make

[root@mail Unix-Syslog-0.100]# make install

[root@mail Unix-Syslog-0.100]# cd /var/www/extsuite/extman/

[root@mail extman]#cp webman.cf.default   webman.cf

[root@mail extman]#vim webman.cf

6758400_1371195361zqmq

6758400_1371195366UT3N

[root@mail extman]# chown -R postfix.postfix /var/www/extsuite/extman/cgi/   修改cgi目录的属主

[root@mail extman]# vim /etc/httpd/conf/httpd.conf

6758400_1371195374iftN

[root@mail extman]# service httpd restart

三、登录管理

启动各种服务

地址栏输入http://192.168.126.129/extmail

6758400_1371195389BPZF

选择管理即可登入extman进行后台管理了。默认管理帐号为:root@extmail.org  密码为:extmail*123*

6758400_1371195405eQkw

之后就可以进行管理了。