将要实现的功能:

第一步:环境配置

导入软件包:

所需要软件包:

wps_clip_p_w_picpath-28445

wps_clip_p_w_picpath-8155

wps_clip_p_w_picpath-22299

配置地址:

# vim /etc/sysconfig/network-scripts/ifcfg-eth0

wps_clip_p_w_picpath-16928

配置DNS指向:

# vim /etc/resolv.conf

wps_clip_p_w_picpath-18229

改变主机名: 改变主机名后需要重新登录;

wps_clip_p_w_picpath-15412

wps_clip_p_w_picpath-3181

# hostname mail.sohu.com

wps_clip_p_w_picpath-6739

//更改过主机名后,需要重新登录或重启服务器;

去掉hosts文件的无效信息:

# vim /etc/hosts

wps_clip_p_w_picpath-4193

第二步:配置DNS服务器:

挂载光盘:

# mkdir /mnt/cdrom

# mount /dev/cdrom /mnt/cdrom/

配置本地yum:

# vim /etc/yum.repos.d/yum.repo

wps_clip_p_w_picpath-15527

安装DNS:

# yum install bind bind-chroot caching-nameserver

生成DNS主配置文档:

# cd /var/named/chroot/etc/

# cp -p named.caching-nameserver.conf named.conf

编辑DNS主配置文档:

# vim /var/named/chroot/etc/named.conf

wps_clip_p_w_picpath-884

配置区域声明:

# vim /var/named/chroot/etc/named.rfc1912.zones

wps_clip_p_w_picpath-10085

编辑区域数据库文件:

# cd /var/named/chroot/var/named/

# cp -p localhost.zone sohu.com.zone

# vim sohu.com.zone

wps_clip_p_w_picpath-246

启动DNS服务,并设置成开机启动:

# service named start

# chkconfig named on

关闭sendmail,避免与postfix冲突:

# service sendmail stop

# chkconfig sendmail off

第三步:安装必须的软件包

需要apache、mysql、php以及必要的库文件等等;

# yum install httpd php php-mysql mysql mysql-server mysql-devel \

openssl-devel dovecot perl-DBD-MySQL tcl tcl-devel libart_lgpl \

libart_lgpl-devel libtool-ltdl libtool-ltdl-devel expect

执行安装各种软件包:【四个组文件】

# yum grouplist

wps_clip_p_w_picpath-22722

不存在相应的组时,再安装组文件:

## yum groupinstall "FTP Server"

第四步:配置mysql数据库

启动mysql服务,并设置成开机自动启动:

# service mysqld start

# chkconfig mysqld on

//mysql是用来放置虚拟帐号和虚拟域使用的;

进入mysql,给mysql添加口令,Mysql默认是没有口令的:

# mysql

SET PASSWORD FOR root@'localhost'=PASSWORD('redhat');  //授权本地用户

SET PASSWORD FOR root@'127.0.0.1'=PASSWORD('redhat');  //授权本地用户

GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY 'redhat'; //授权远程用户

FLUSH PRIVILEGES;   //刷新数据库

第五步:源码安装postfix

拆解postfix源码:

wps_clip_p_w_picpath-17871

# tar -zxvf postfix-2.8.2.tar.gz -C /usr/local/src/

# cd /usr/local/src/postfix-2.8.2/

添加postfix组和postdrop组: 组id是2525 2526

//组postfix用于接受邮件服务

//组postdrop用于投递邮件服务

# 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

由于没有config文件,所以使用make makefile来配置源码,从而生成makefile文件:

#make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/include/mysql \

-DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl \

-DUSE_TLS ' 'AUXLIBS=-L/usr/lib/mysql -lmysqlclient -lz -lm \

-L/usr/lib/sasl2 -lsasl2 -lssl -lcrypto'

使用make编译,生成二进制文件,头文件,库文件和说明文件;

# make

使用make install安装,将make产生的文件放到相应的位置:

# make install

//会出现一些配置信息,我们再次使用默认值;

生成别名二进制文件,这个步骤如果忽略,会造成postfix效率极低:

# newaliases

启动postfix,由于postfix在环境变量中:

#postfix start

查看postfix是否关联mysql:

# postconf -m

wps_clip_p_w_picpath-31622

第六步:配置postfix主配置文件

配置postfix:

#vim /etc/postfix/main.cf

修改以下几项为您需要的配置:

指明mail服务器的主机名:

wps_clip_p_w_picpath-5433

指明mail服务器所属的域:

wps_clip_p_w_picpath-17226

是否做地址伪装:

wps_clip_p_w_picpath-1162

开启,监听所有端口:

wps_clip_p_w_picpath-26536

开启mailbox选项:

wps_clip_p_w_picpath-28194

重新加载postfix的配置文件:

#postfix stop   //关闭postfix服务

# postfix start  //启动postfix服务

说明:

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的文本行视为上一行的延续;

第七步:配置cyrus-sasl认证,为postfix开启基于cyrus-sasl的认证功能

查看postfix是否支持cyrus-sasl认证:

    使用以下命令验正postfix是否支持cyrus风格的sasl认证,如果您的输出为以下结果,则是支持的:

#postconf  -a

cyrus //表明支持cyrus-sasl认证

dovecot  //表明支持dovecot服务

在postfix配置文件中插入以下内容:

#vim /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

wps_clip_p_w_picpath-7653

将postfix与sasl验证服务进行关联:

首先,创建postfix与sasl的关联文件:

# cp -p /usr/lib/sasl2/Sendmail.conf /usr/lib/sasl2/smptd.conf

查看验证机制:

# cat /usr/lib/sasl2/smptd.conf

pwcheck_method:saslauthd  //验证方式是saslauthd

启动saslauthd服务,并将其加入到自动启动队列:

# service saslauthd start

# chkconfig saslauthd on

第八步:源码安装courier-authlib服务

拆解courier-authlib源代码:

# tar jxvf courier-authlib-0.63.1.20111230.tar.bz2 -C /usr/local/src/

# cd /usr/local/src/courier-authlib-0.63.1.20111230/

使用./configure配置courier-authlib源码:

#./configure \

--prefix=/usr/local/courier-authlib \

--sysconfdir=/etc \

--with-authmysql \

--with-mysql-libs=/usr/lib/mysql \

--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

使用make编译courier-authlib源码,生成四类文件:

# make

使用make install安装由make生成四类文件:

# make install

改变authdaemon文件的权限:

# chmod 755 /usr/local/courier-authlib/var/spool/authdaemon

生成authdaemonrc和authmysqlrc两个配置文件:

# cp /etc/authdaemonrc.dist  /etc/authdaemonrc

# cp /etc/authmysqlrc.dist  /etc/authmysqlrc

修改/etc/authdaemonrc 文件,courier-authlib采用的模块列表;

# vim /etc/authdaemonrc

wps_clip_p_w_picpath-3321

wps_clip_p_w_picpath-11478

编辑/etc/authmysqlrc 为以下内容,其中2525,2525 为postfix 用户的UID和GID。其中包含courier-authlib服务调用mysql的信息;

# vim /etc/authmysqlrc

wps_clip_p_w_picpath-3424

wps_clip_p_w_picpath-21782

    //(这时为后文要用的数据库的所有者的用户名)

wps_clip_p_w_picpath-1255

    //(密码)

wps_clip_p_w_picpath-22471

wps_clip_p_w_picpath-4764

wps_clip_p_w_picpath-30830

wps_clip_p_w_picpath-12785

wps_clip_p_w_picpath-31411

wps_clip_p_w_picpath-24066

wps_clip_p_w_picpath-25345

wps_clip_p_w_picpath-20524

wps_clip_p_w_picpath-14693

wps_clip_p_w_picpath-15358

wps_clip_p_w_picpath-18456

产生courier-authlib服务执行文件:

# cd /usr/local/src/courier-authlib-0.63.1.20111230/

# cp courier-authlib.sysvinit /etc/init.d/courier-authlib

改变courier-authlib服务执行文件的权限:

# chmod 755 /etc/init.d/courier-authlib

通过输出重定向,加载courier-authlib服务的非标准库文件:

#echo "/usr/local/courier-authlib/lib/courier-authlib" >> /etc/ld.so.conf.d/courier-authlib.conf

重新调用库文件:

# ldconfig -v

查看courier-authlib的库文件是否被夹在

# ldconfig -pv |grep courier

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

# mkdir -pv /var/mailbox

# chown -R postfix /var/mailbox

接下来重新配置SMTP 认证,编辑 postfix关联sasl的配置文件smtpd.conf :

# vim /usr/lib/sasl2/smtpd.conf

添加内容为:

pwcheck_method: authdaemond

log_level: 3

mech_list:PLAIN LOGIN

authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket

wps_clip_p_w_picpath-15374

启动courier-authlib服务服务:

# service courier-authlib start  

将courier-authlib服务设置成开机自动启动:

# chkconfig --add courier-authlib

# chkconfig courier-authlib on

第九步:使postfix服务支持虚拟域和虚拟用户

编辑/etc/postfix/main.cf,添加如下内容:

# vim /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

wps_clip_p_w_picpath-23442

##########################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

wps_clip_p_w_picpath-32323

重新加载postfix的配置文件:

# pkill -1 postfix

使用extman源码目录下docs目录中的extmail.sql和init.sql建立数据库:

    解压extman服务包,调出数据库批处理文件,用于生成extmail数据库;

# tar zxvf  extman-1.1.tar.gz

# cd extman-1.1/docs

将extmail.sql和init.sql文件导入数据库(需要进行数据库验证):

# mysql -u root -p <extmail.sql

# mysql -u root -p &lt;init.sql

将extman中虚拟邮箱的mysql映射文件复制到/etc/postfix/,提供main.cf的调用:

wps_clip_p_w_picpath-30757

# cp mysql_virtual_*  /etc/postfix/

进入mysql,授予用户extmail服务访问extmail数据库的权限:

# mysql -u root -p

GRANT all privileges on extmail.* TO extmail@localhost IDENTIFIED BY 'extmail';

GRANT all privileges on extmail.* TO extmail@127.0.0.1 IDENTIFIED BY 'extmail';

FLUSH PRIVILEGES;   让设置的内容生效

说明:启用虚拟域以后,需要取消中心域,即注释掉myhostname, mydestination, mydomain, myorigin几个指令;当然,你也可以把mydestionation的值改为你自己需要的。

第十步:配置dovecot服务

配置dovecot配置文档,编辑dovecot如何查找mysql:

# vim /etc/dovecot.conf

wps_clip_p_w_picpath-29579

wps_clip_p_w_picpath-22889

wps_clip_p_w_picpath-9746

wps_clip_p_w_picpath-29180

wps_clip_p_w_picpath-12926

wps_clip_p_w_picpath-5739

wps_clip_p_w_picpath-953

创建并配置dovecot查找数据库方式的文件:

# vim /etc/dovecot-mysql.conf

插入以下内容:             

driver = mysql

connect = host=localhost dbname=extmail user=extmail password=extmail

default_pass_scheme = CRYPT

password_query = SELECT username AS user,password AS password FROM mailbox WHERE username = '%u'

user_query = SELECT maildir, uidnumber AS uid, gidnumber AS gid FROM mailbox WHERE username = '%u'

wps_clip_p_w_picpath-5183

接下来启动dovecot服务:

# service dovecot start

# chkconfig dovecot on

第十一步:安装Extmail-1.2

拆包

# tar zxvf extmail-1.2.tar.gz

创建extmail所需的目录:

# mkdir -pv /var/www/extsuite

将extmail移动到创建的目录中:

# mv extmail-1.2 /var/www/extsuite/extmail

生成extmail的主配置文档:

# cd /var/www/extsuite/extmail/

# cp webmail.cf.default webmail.cf

修改主配置文件

#vim /var/www/extsuite/extmail/webmail.cf

默认语言:

wps_clip_p_w_picpath-15997

虚拟用户邮件的存放目录:

wps_clip_p_w_picpath-28506

设置连接数据库服务器所使用用户名、密码和邮件服务器用到的数据库:

wps_clip_p_w_picpath-794

指明authdaemo socket文件的位置:

wps_clip_p_w_picpath-13506

第十二步:安装Extman-1.1

移动到指定文件中:

# mv extman-1.1 /var/www/extsuite/extman

修改extman服务的配置文件:

# cd /var/www/extsuite/extman/

# cp webman.cf.default webman.cf

编辑extman的配置文档:

# vim /var/www/extsuite/extman/webman.cf

设置的用户邮件的存放目录:

wps_clip_p_w_picpath-31035

禁用验证选项:

wps_clip_p_w_picpath-32493

创建extman运行时所需的临时目录,并修改其相应的权限:

# mkdir  -pv  /tmp/extman

# chown postfix.postfix  /tmp/extman

第十三步:配置apache相关:

由于extmail要进行本地邮件的投递操作,故必须将运行apache服务器用户的身份修改为您的邮件投递代理的用户;本例中打开了apache服务器的suexec功能,故使用以下方法来实现虚拟主机运行身份的指定。此例中的MDA为postfix自带,因此将指定为postfix用户:

改变apache的运行身份和运行组为postfix:

# vim /etc/httpd/conf/httpd.conf

wps_clip_p_w_picpath-5681

创建extmail和extman的虚拟主机:

&lt;VirtualHost *:80>

ServerName mail.test.com

DocumentRoot /var/www/extsuite/extmail/html/

ScriptAlias /extmail/cgi /var/www/extsuite/extmail/cgi

Alias /extmail /var/www/extsuite/extmail/html

ScriptAlias /extman/cgi /var/www/extsuite/extman/cgi

Alias /extman /var/www/extsuite/extman/html

</VirtualHost>

wps_clip_p_w_picpath-12871

修改extmail服务cgi执行文件所属者和所属组为apache运行身份用户:

# chown -R postfix.postfix /var/www/extsuite/extmail/cgi/

修改extman服务cgi目录的所属者和所属组:

# chown -R postfix.postfix /var/www/extsuite/extman/cgi/

解决extmail依赖关系:

extmail将会用到perl的Unix::syslogd功能:

拆解:

# tar zxvf Unix-Syslog-1.1.tar.gz

# # cd Unix-Syslog-1.1

执行配置文件:

# perl Makefile.PL

编译:

# make

安装:

# make install

启动apache服务,并设置成开机自动启动:

# service httpd start

# chkconfig httpd on

配置完成!!!!

您的Webmail和Extman已经可以使用了,可以在浏览器中输入指定的虚拟主机的名称进行访问,如下:

http://mail.test.com

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

第十四步:验证测试

进入邮件管理extman,对邮件系统进行初步的配置:

wps_clip_p_w_picpath-26512

    //成功登录!!

创建一个新域:

wps_clip_p_w_picpath-23944

wps_clip_p_w_picpath-25303

登录extmail主页:

wps_clip_p_w_picpath-25392

//成功登录!!

注册test01和test02两个帐号:

wps_clip_p_w_picpath-8067

wps_clip_p_w_picpath-10206

wps_clip_p_w_picpath-13953

wps_clip_p_w_picpath-13423

wps_clip_p_w_picpath-6740

登录test01,并向test02发送邮件:

wps_clip_p_w_picpath-29191wps_clip_p_w_picpath-5498

wps_clip_p_w_picpath-6001

登录test02用户,收取邮件:

wps_clip_p_w_picpath-18632

wps_clip_p_w_picpath-23167

wps_clip_p_w_picpath-4568