Linux下源码搭建extmail邮件服务器

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

 

wps_clip_image-29354

一.准备工作

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

wps_clip_image-25833

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

wps_clip_image-25434

注:软件依赖这几个开发环境,如果预先没有安装开发环境的话,可以用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手册

wps_clip_image-10406

[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端口是否启动

wps_clip_image-6487

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

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

wps_clip_image-15921

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 

wps_clip_image-9131

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

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的使用说明,我们可以按照安装说明进行安装。

wps_clip_image-206

 

[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

wps_clip_image-16491

这个是很耗时的。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安装说明中的配置的步骤

wps_clip_image-18898

[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

wps_clip_image-32664

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

[root@lly mysql]# pwd

/usr/local/mysql

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

wps_clip_image-21895

[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以后就可以以此帐号登陆了

wps_clip_image-26209

注: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配置

wps_clip_image-3814

wps_clip_image-10530

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

wps_clip_image-1702

[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  编辑区域文件

wps_clip_image-16802

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

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

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

wps_clip_image-19848

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

wps_clip_image-3318

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

wps_clip_image-6204

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

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

wps_clip_image-235

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

wps_clip_image-12749

一切正常。。。

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

wps_clip_image-32516

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

wps_clip_image-21939

注:之后会生成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服务

wps_clip_image-15580

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

wps_clip_image-4916

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

wps_clip_image-17508

wps_clip_image-19735

wps_clip_image-29540

wps_clip_image-16317

wps_clip_image-23459

[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发送一封测试邮件

wps_clip_image-2320

查看user1是否收到邮件了

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

[user1@mail ~]$ mail

wps_clip_image-12700

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

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

wps_clip_image-18672

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

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

wps_clip_image-9656

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

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

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

wps_clip_image-26118

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

wps_clip_image-9304

 

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

wps_clip_image-8736

[root@mail etc]# vim authmysqlrc

wps_clip_image-6970

wps_clip_image-17032

wps_clip_image-5885

wps_clip_image-29681

wps_clip_image-25040

wps_clip_image-3823

wps_clip_image-21650

wps_clip_image-18712

wps_clip_image-21992

wps_clip_image-62

wps_clip_image-7961

wps_clip_image-30818

[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导入库文件

wps_clip_image-23724

[root@mail lib]# ldconfig

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

wps_clip_image-27213

[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支持虚拟域和虚拟账号

wps_clip_image-12575

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

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

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

重新配置SMTP 认证

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

wps_clip_image-28664

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

wps_clip_image-4657

wps_clip_image-1319

wps_clip_image-32146

 

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

wps_clip_image-17889

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

wps_clip_image-10226

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

wps_clip_image-8624

wps_clip_image-8659

wps_clip_image-12744

wps_clip_image-1918

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

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

wps_clip_image-4491

[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

wps_clip_image-15884

wps_clip_image-21504

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

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

wps_clip_image-3437

[root@mail extman]# service httpd restart

三、登录管理

启动各种服务

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

wps_clip_image-17978

选择管理即可登入extman进行后台管理了。默认管理帐号为:[email protected]  密码为:extmail*123*

wps_clip_image-14825

之后就可以进行管理了。

你可能感兴趣的:(源码,linux,工作原理,邮件服务器,邮件系统)