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.准备开发环境 [iyunv@lly ~]# mkdir /mnt/cdrom 建立光盘挂载点 [iyunv@lly ~]# mount /dev/cdrom /mnt/cdrom 挂载光盘 [iyunv@lly ~]# vim /etc/yum.repos.d/rhel-debuginfo.repo 编辑yum客户端构建一个repo id
[iyunv@lly ~]# yum grouplist 检查开发环境
注:软件依赖这几个开发环境,如果预先没有安装开发环境的话,可以用yum进行安装。 二.软件包的安装 1.安装apache [iyunv@lly ~]# tar -zxvf apr-1.4.6.tar.gz -C /usr/local/src/ 拆解apr软件包 [iyunv@lly src]# cd /usr/local/src/apr-1.4.6/ [iyunv@lly apr-1.4.6]# ./configure --prefix=/usr/local/apr把apr安装到/usr/local/apr目录下 [iyunv@lly apr-1.4.6]#make [iyunv@lly apr-1.4.6]#make install [iyunv@lly apr-1.4.6]# cd [iyunv@lly ~]# tar -zxvf apr-util-1.5.1.tar.gz -C /usr/local/src/ 拆解apr-util软件包 [iyunv@lly src]# cd apr-util-1.5.1/ [iyunv@lly apr-util-1.5.1]# ./configure --with-apr=/usr/local/apr/bin/apr-1-config [iyunv@lly apr-util-1.5.1]# make [iyunv@lly apr-util-1.5.1]# make install [iyunv@lly apr-util-1.5.1]# cd [iyunv@lly ~]# tar -jxvf httpd-2.4.4.tar.bz2 -C /usr/local/src/ 拆解httpd软件包 [iyunv@lly ~]# cd /usr/local/src/httpd-2.4.4/ 进入拆解的apache目录 [iyunv@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 [iyunv@lly httpd-2.4.4]# make [iyunv@lly httpd-2.4.4]# make install [iyunv@lly httpd-2.4.4]#cd /usr/local/apache/man [iyunv@lly man]# vim /etc/man.config 把apache的man手册添加到man路径方便查看apache的man手册
[iyunv@lly apache]# ln -s /usr/local/apache/include/ /usr/include/apache为apache的头文件做一个符号链接 [iyunv@lly ~]# cd /etc/init.d/ [iyunv@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 [iyunv@lly init.d]# chmod a+x /etc/init.d/httpd 为apache服务添加可执行权限 [iyunv@lly init.d]# service httpd start 启动apache服务 [iyunv@lly init.d]# netstat -tupln |grep http 查看80端口是否启动
[iyunv@lly init.d]# chkconfig --add httpd 添加自启动 [iyunv@lly init.d]# chkconfig --list |grep http 查看添加开机启动是否成功
2.安装cmake 安装mysql的时候需要用到cmake工具 [iyunv@lly ~]# tar -zxvf cmake-2.8.10.2.tar.gz -C /usr/local/src/ [iyunv@lly ~]# cd /usr/local/src/cmake-2.8.10.2/ [iyunv@lly cmake-2.8.10.2]# ./configure --prefix=/usr/local/cmake [iyunv@lly cmake-2.8.10.2]# make && make install Waiting....................... [iyunv@lly cmake-2.8.10.2]# cd /usr/local/cmake/ 为了日后能快速访问cmake下的bin,把cmke下的bin添加路径 [iyunv@lly cmake]# vim /etc/profile
注:只有下次进入之后路径才会添加成功。 3.安装mysql [iyunv@lly ~]# tar zxvf mysql-5.6.10.tar.gz -C /usr/local/src/ [iyunv@lly ~]# cd /usr/local/src/mysql-5.6.10/ [iyunv@lly mysql-5.6.10]# less INSTALL-SOURCE mysql的使用说明,我们可以按照安装说明进行安装。
[iyunv@lly ~]# cd /usr/local/src/mysql-5.6.10/ [iyunv@lly mysql-5.6.10]# cmake . [iyunv@lly mysql-5.6.10]# make && make install
这个是很耗时的。Please waiting for a long time。。。。。。。。。。。。。。。。。。。。。。。。。。 [iyunv@lly ~]# cd /usr/local/src/mysql-5.6.10/ [iyunv@lly mysql-5.6.10]# less INSTALL-SOURCE Mysql安装说明中的配置的步骤
[iyunv@lly mysql-5.6.10]# cd /usr/local/mysql/ 创建帐号信息 [iyunv@lly mysql]# groupadd mysql [iyunv@lly mysql]# useradd -r -g mysql mysql [iyunv@lly mysql]# chown -R mysql . 进行初始化 [iyunv@lly mysql]# scripts/mysql_install_db --user=mysql [iyunv@lly mysql]# chown -R root . [iyunv@lly mysql]# chown -R mysql data [iyunv@lly mysql]# cd support-files/ [iyunv@lly support-files]# cp my-default.cnf /etc/my.cnf [iyunv@lly support-files]# cp mysql.server /etc/init.d/mysqld [iyunv@lly support-files]# chmod a+x /etc/init.d/mysqld [iyunv@lly support-files]# service mysqld start Starting MySQL..... [ OK ] mysqld 服务成功启动 [iyunv@lly support-files]# netstat -tupln |grep mysqld
[iyunv@lly support-files]# cd .. [iyunv@lly mysql]# pwd /usr/local/mysql [iyunv@lly mysql]# vim /etc/profile
[iyunv@lly bin]# . /etc/profile [iyunv@lly ~]# mysql mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ 4 rows in set (0.00 sec) [iyunv@lly ~]# mysqladmin -u root -p password '123'设置一个管理员帐号密码123 [iyunv@lly ~]# mysql -u root -p以后就可以以此帐号登陆了
注:mysql生成的/usr/local/mysql/lib库文件不是标准路径系统无法识别(/lib 或者/usr/lib为标准路径)所以需做如下配置 [iyunv@lly mysql]# vim /etc/ld.so.conf.d/mysql.conf 写入 /usr/local/mysql/lib [iyunv@lly mysql]# ldconfig [iyunv@lly mysql]# ln -s /usr/local/mysql/include/ /usr/include/mysql 对mysql的头文件include做一个连接
4.安装dns服务器 [iyunv@lly ~]# yum install -y bind bind-chroot caching-nameserver [iyunv@lly ~]# service mysqld start 这里创建本地域126.com 邮件服务器域mail.126.com 本机地址192.168.126.129 [iyunv@lly ~]# cd /var/named/chroot/etc/ [iyunv@lly etc]# cp -p named.caching-nameserver.conf named.conf [iyunv@lly etc]# vim named.conf 编辑dns配置
[iyunv@lly etc]# vim named.rfc1912.zones 编辑区域的声明文件
[iyunv@lly etc]# cd /var/named/chroot/var/named/ [iyunv@lly named]# cp -p localhost.zone 126.com.zone 生成区域文件 [iyunv@lly named]# vim 126.com.zone 编辑区域文件
[iyunv@lly named]# service named start 启动dns [iyunv@lly named]# chkconfig named on 添加自启动 [iyunv@lly named]# vim /etc/resolv.conf dns指向
[iyunv@lly named]# vim /etc/sysconfig/network 修改主机名(邮件服务器)
[iyunv@lly named]# vim /etc/hosts 修改hosts文件
[iyunv@lly named]# hostname mail.126.com 重新启动,或者修改下主机名 [iyunv@mail ~]# nslookup mail.126.com 查看dns解析
[iyunv@mail ~]# dig -t mx 126.com 测试126.com区域的邮局
一切正常。。。 5.安装postfix [iyunv@mail ~]# service sendmil stop [iyunv@mail ~]# chkconfig sendmail off 如果安装了sendmail,要先把sendmail服务关闭 [iyunv@mail ~]# tar -zxvf postfix-2.8.2.tar.gz -C /usr/local/src/ [iyunv@mail ~]# cd /usr/local/src/postfix-2.8.2/ 没有configure文件可以改变makefile文件来代替configure 注:Postfix是一种服务,需要为其添加帐号。 [iyunv@mail postfix-2.8.2]# groupadd -g 2121 postfix 添加postfix组,组id 2121 [iyunv@mail postfix-2.8.2]# useradd -u 2121 -g postfix -s /sbin/nologin -M postfix 创建账号 用户名postfix 组的名字postfix [iyunv@mail postfix-2.8.2]# groupadd -g 2122 postdrop [iyunv@mail postfix-2.8.2]# useradd -u 2122 -g postfix -s /sbin/nologin -M postdrop 为队列管理服务创建帐号 [iyunv@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) [iyunv@lly postfix-2.8.2]# make [iyunv@lly postfix-2.8.2]# make install
其他的都可以直接回车默认值就行
注:之后会生成etc目录下aliases,这个文件是和sendmail结合的,为了让其与postfix结合,执行一下 [iyunv@mail postfix-2.8.2]# /usr/bin/newaliases 执行 说明:这里调用redhat系统自带的启动脚本。由于postfix安装的时候基本都是默认安装,路径都是默认路径,所以使用系统自带的脚本没问题,基本不用修改就能用。 [iyunv@mail postfix-2.8.2]# mkdir /tmp/abc [iyunv@mail postfix-2.8.2]# cd /tmp/abc/ [iyunv@mail abc]# cp /mnt/cdrom/Server/postfix-2.3.3-2.1.el5_2.i386.rpm ./ 把光盘上的拷贝过来 [iyunv@mail abc]# rpm2cpio postfix-2.3.3-2.1.el5_2.i386.rpm |cpio -id拆解postfix包 [iyunv@mail abc]# cd etc [iyunv@mail etc]# cd rc.d [iyunv@mail rc.d]# cd init.d [iyunv@mail init.d]# cp -p postfix /etc/init.d/ 拷贝配置文件 [iyunv@mail init.d]# service postfix start 启动postfix服务
[iyunv@mail ~]# netstat -tupln |grep 25
[iyunv@mail ~]# vim /etc/postfix/main.cf
[iyunv@mail ~]# service postfix restart 重启服务 [iyunv@mail sbin]# useradd user1 添加user1用户 [iyunv@mail sbin]# passwd user1 为user1用户添加密码123 [iyunv@mail ~]# telnet 127.0.0.1 25 向user1发送一封测试邮件
查看user1是否收到邮件了 [iyunv@mail ~]# su – user1 以user1用户登录查看邮件 [user1@mail ~]$ mail
注:Postfix身份验证功能需要结合sasl [iyunv@mail ~]# cd /usr/lib/sasl2/
[iyunv@mail sasl2]# cp -p Sendmail.conf smtpd.conf [iyunv@mail sasl2]# vim smtpd.conf 编辑其配置文件
[iyunv@mail sasl2]# service saslauthd start 启动sasl [iyunv@mail sasl2]# chkconfig saslauthd on 设置为开机启动 [iyunv@mail ~]# vim /etc/postfix/main.cf 要想sasl对smtp生效,需要添加sasl的一些验证语句
[iyunv@mail sasl2]# service postfix restart重启postfix服务
6.安装courier-authlib [iyunv@mail ~]# tar -jxvf courier-authlib-0.63.1.20111230.tar.bz2 -C /usr/local/src/ [iyunv@mail ~]# cd /usr/local/src/courier-authlib-0.63.1.20111230/ [iyunv@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 [iyunv@mail courier-authlib-0.63.1.20111230]# make [iyunv@mail courier-authlib-0.63.1.20111230]# make install [iyunv@mail courier-authlib-0.63.1.20111230]# service postfix restart [iyunv@mail etc]# cp authdaemonrc.dist authdaemonrc 验证时使用的模块 [iyunv@mail etc]# cp authmysqlrc.dist authmysqlrc [iyunv@mail etc]# vim authdaemonrc
[iyunv@mail etc]# vim authmysqlrc
http://img1./attachment/201306/3/6758400_1370275457hlbq.png
http://img1./attachment/201306/3/6758400_1370275488F8lT.png http://img1./attachment/201306/3/6758400_1370275489p4va.png
http://img1./attachment/201306/3/6758400_1370275494MUS1.png
[iyunv@mail src]# cd /usr/local/src/courier-authlib-0.63.1.20111230/ [iyunv@mai courier-authlib-0.63.1.20111230]#cp courier-authlib.sysvinit /etc/init.d/courier-authlib 拷贝启动脚本 [iyunv@mail courier-authlib-0.63.1.20111230]# chmod a+x /etc/init.d/courier-authlib 修改权限可执行 [iyunv@mail courier-authlib-0.63.1.20111230]# chkconfig courier-authlib on添加开机启动 [iyunv@mail courier-authlib-0.63.1.20111230]# service courier-authlib start启动courier-authlib [iyunv@mail courier-authlib-0.63.1.20111230]# cd /usr/local/courier-authlib/ [iyunv@mail courier-authlib]# vim /etc/ld.so.conf.d/courier-authlib.conf导入库文件
[iyunv@mail lib]# ldconfig [iyunv@mail lib]# ldconfig -pv |grep courie
[iyunv@mail lib]# cd .. [iyunv@mail courier-authlib]# ln -s /usr/local/courier-authlib/include/ /usr/include/courier-authlib对头文件做一个符号链接 [iyunv@mail courier-authlib]# vim /etc/postfix/main.cf 添加如下内容以便让postfix支持虚拟域和虚拟账号
新建虚拟用户邮箱所在的目录,并将其权限赋予postfix用户 [iyunv@mail ~]# mkdir -pv /var/mailbox [iyunv@mail ~]# chown -R postfix /var/mailbox 重新配置SMTP 认证 [iyunv@mail postfix]# vim /usr/lib/sasl2/smtpd.conf
7.安装extman [iyunv@mail ~]# tar -zxvf extman-1.1.tar.gz [iyunv@mail ~]# cd extman-1.1 [iyunv@mail extman-1.1]# cd docs/ [iyunv@mail docs]# mysql -u root -p <extmail.sql 导入数据库 [iyunv@mail docs]# mysql -u root -p <init.sql [iyunv@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;刷新授权 [iyunv@mail docs]# cp mysql_virtual_* /etc/postfix/ [iyunv@mail postfix]# service postfix restart重启postfix服务 8.安装dovecot [iyunv@mail ~]# useradd -M -s /sbin/nologin dovecot 创建账号 [iyunv@mail ~]# cd /usr/local/src/dovecot-2.0.16/ [iyunv@mail dovecot-2.0.16]# ./configure --sysconfdir=/etc --with-mysql [iyunv@mail dovecot-2.0.16]#make [iyunv@mail dovecot-2.0.16]#make install [iyunv@mail dovecot-2.0.16]#cd /usr/local/share/doc/dovecot/ [iyunv@mail dovecot]# cp example-config/dovecot.conf /etc/dovecot/dovecot.conf
[iyunv@mail ~]# vim /etc/dovecot-mysql.conf 创建mysql.conf文件,让dovecot与mysql进行结合
[iyunv@mail ~]# vim /etc/postfix/main.cf http://img1./attachment/201306/3/6758400_1370275566A6SS.png 9.安装extmail [iyunv@mail ~]# tar -zxvf extmail-1.2.tar.gz [iyunv@mail ~]# mkdir -pv /var/www/extsuite [iyunv@mail ~]# mv extman-1.1 /var/www/extsuite/extman [iyunv@mail ~]#mv extmail-1.2 /var/www/extsuite/extmail [iyunv@mail ~]# cd /var/www/extsuite/extmail/ [iyunv@mail extmail]# cp webmail.cf.default webmail.cf [iyunv@mail extmail]# vim webmail.cf
注:Apache和extmail的结合是靠cgi进行的 [iyunv@mail extmail]# vim /etc/httpd/conf/httpd.conf 修改apache配置虚拟主机
[iyunv@mail extmail]# chown -R postfix.postfix /var/www/extsuite/extmail/cgi/修改 cgi执行文件属主为apache运行身份用户 [iyunv@mail extmail]# service httpd restart extmail将会用到perl的Unix::syslogd功能,把补丁打上去 [iyunv@mail ~]# tar zxvf Unix-Syslog-0.100.tar.gz -C /usr /local/src/ Unix-Syslog-0.100 [iyunv@mail ~]# cd Unix-Syslog-0.100 [iyunv@mail Unix-Syslog-0.100]# perl Makefile.PL [iyunv@mail Unix-Syslog-0.100]# make [iyunv@mail Unix-Syslog-0.100]# make install [iyunv@mail Unix-Syslog-0.100]# cd /var/www/extsuite/extman/ [iyunv@mail extman]#cp webman.cf.default webman.cf [iyunv@mail extman]#vim webman.cf
[iyunv@mail extman]# chown -R postfix.postfix /var/www/extsuite/extman/cgi/ 修改cgi目录的属主 [iyunv@mail extman]# vim /etc/httpd/conf/httpd.conf
[iyunv@mail extman]# service httpd restart 三、登录管理 启动各种服务 地址栏输入http://192.168.126.129/extmail
选择管理即可登入extman进行后台管理了。默认管理帐号为:root@extmail.org 密码为:extmail*123*
之后就可以进行管理了。
|