Extmail 是一个以perl语言编写,面向大容量/ISP级应用,它是一款免费的高性能Webmail软件 满足用户多变的需求,能快速进行开发、改进和升级,支持Maildir,索引技术,速度超快。支持多国语言同屏显示,支持巨型邮箱(超过1GB)海量文件,支持无限尺寸附件,I/O能力强,模板化,多语言,修改非常容易。适应能力强的webmail系统 对于国内的电子邮件系统来说,无论是从系统功能、易用性还是中文化等方面,ExtMail 平台都是一个相当不错的选择。其工作原理如下图所示:
一.准备工作
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
[root@lly ~]# yum grouplist 检查开发环境
注:软件依赖这几个开发环境,如果预先没有安装开发环境的话,可以用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端口是否启动
[root@lly init.d]# chkconfig --add httpd 添加自启动
[root@lly init.d]# chkconfig --list |grep http 查看添加开机启动是否成功
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
注:只有下次进入之后路径才会添加成功。
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的使用说明,我们可以按照安装说明进行安装。
[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
这个是很耗时的。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安装说明中的配置的步骤
[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
[root@lly support-files]# cd ..
[root@lly mysql]# pwd
/usr/local/mysql
[root@lly mysql]# vim /etc/profile
[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以后就可以以此帐号登陆了
注: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配置
[root@lly etc]# vim named.rfc1912.zones 编辑区域的声明文件
[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 编辑区域文件
[root@lly named]# service named start 启动dns
[root@lly named]# chkconfig named on 添加自启动
[root@lly named]# vim /etc/resolv.conf dns指向
[root@lly named]# vim /etc/sysconfig/network 修改主机名(邮件服务器)
[root@lly named]# vim /etc/hosts 修改hosts文件
[root@lly named]# hostname mail.126.com 重新启动,或者修改下主机名
[root@mail ~]# nslookup mail.126.com 查看dns解析
[root@mail ~]# dig -t mx 126.com 测试126.com区域的邮局
一切正常。。。
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 �Clcrypto'
注:(没有configure文件可以改变makefile文件来代替configure 这条命令相当于./configure)
[root@lly postfix-2.8.2]# make
[root@lly postfix-2.8.2]# make install
其他的都可以直接回车默认值就行
注:之后会生成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服务
[root@mail ~]# netstat -tupln |grep 25
[root@mail ~]# vim /etc/postfix/main.cf
[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发送一封测试邮件
查看user1是否收到邮件了
[root@mail ~]# su �C user1 以user1用户登录查看邮件
[user1@mail ~]$ mail
注:Postfix身份验证功能需要结合sasl
[root@mail ~]# cd /usr/lib/sasl2/
[root@mail sasl2]# cp -p Sendmail.conf smtpd.conf
[root@mail sasl2]# vim smtpd.conf 编辑其配置文件
[root@mail sasl2]# service saslauthd start 启动sasl
[root@mail sasl2]# chkconfig saslauthd on 设置为开机启动
[root@mail ~]# vim /etc/postfix/main.cf 要想sasl对smtp生效,需要添加sasl的一些验证语句
[root@mail sasl2]# service postfix restart重启postfix服务
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
[root@mail etc]# vim authmysqlrc
[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导入库文件
[root@mail lib]# ldconfig
[root@mail lib]# ldconfig -pv |grep courie
[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支持虚拟域和虚拟账号
新建虚拟用户邮箱所在的目录,并将其权限赋予postfix用户
[root@mail ~]# mkdir -pv /var/mailbox
[root@mail ~]# chown -R postfix /var/mailbox
重新配置SMTP 认证
[root@mail postfix]# vim /usr/lib/sasl2/smtpd.conf
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 [email protected] 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
[root@mail ~]# vim /etc/dovecot-mysql.conf 创建mysql.conf文件,让dovecot与mysql进行结合
[root@mail ~]# vim /etc/postfix/main.cf
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
注:Apache和extmail的结合是靠cgi进行的
[root@mail extmail]# vim /etc/httpd/conf/httpd.conf 修改apache配置虚拟主机
[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
[root@mail extman]# chown -R postfix.postfix /var/www/extsuite/extman/cgi/ 修改cgi目录的属主
[root@mail extman]# vim /etc/httpd/conf/httpd.conf
[root@mail extman]# service httpd restart
三、登录管理
启动各种服务
地址栏输入http://192.168.126.129/extmail
选择管理即可登入extman进行后台管理了。默认管理帐号为:[email protected] 密码为:extmail*123*
之后就可以进行管理了。