本人一开始对邮件系统完全不了解,因需要使用邮件系统,所以参考了很多文档与视频,最后把全部安装过程记录下来,分享出来,为其他没有接触过但是需要的同学提供参考,交流学习,如果发现此文档有错误,欢迎指正,也欢迎大家完善它,高手勿批。

风险

1本文全程使用yum安装,请考虑是否会对以后维护产生影响。

2本文未使用apachesuexec功能,所以使用postfix用户运行apache子进程,请考虑是否对要部署的环境有所影响。

3本文未成功添加fcgi模块,cgi性能可能无法到达用户数量非常高的要求(待确定)

4本文只实现了同一个域内的用户相互发送接收邮件的功能,本文环境为内网环境,非公网。

5 未按照本文档的操作步骤和方式进行操作的,请勿完全参考此文档,以免操作方式不同,产生其他错误。

6其他。

7请参考以上风险是否会对您造成影响。

 

环境参数

服务系统:    

          [root@localhost ~]# cat/etc/issue

Red Hat Enterprise Linux Server release 6.3 (Santiago)

Kernel \r on an \m

[root@localhost ~]# arch

x86_64


服务器ip192.168.88.88

 

客户端系统:win7

客户端测试用MUAfoxmail网易闪电邮

 

前期准备

下载EMOS1.6,因为本文全程使用RPM包安装,所以需下载        EMOS1.6_86_64.iso,下载extmail-1.2.tar.gz,下载extman-1.1.tar.gz,  同时,大部分RPM选定从系统对应的稳定的RPM安装,所以需要系统中自带的rpm或者镜像,此处使用RHEL6.3的镜像文件中的RPM包。

 

搭建环境

1.环境设置

1设置防火墙和selinux,本文直接关闭防火墙和selinux

[root@localhost ~]# service iptables status

iptables: Firewall is not running.

[root@localhost ~]# chkconfig | grepiptables

iptables             0:off1:off2:off3:off4:off5:off6:off

[root@localhost ~]# setenforce 0

[root@localhost ~]# getenforce

Permissive

 

2 hostname(客户端系统如果要连接服务器也要记得修改DNS或者host文件)

 

3设置yum源,将系统镜像中的包设置为localyum,将EMOS镜像中的包设置为emosyum

[root@localhost ~]#createrepo -g/opt/localyum/repodata/省略··· -comps-rhel6-Server.xml -v /opt/localyum/

[root@localhost ~]# yum clean all

 

Emosyum设置同上,可不加-g参数,可以只将需要的rpm包复制过来,可只复制如下的包到emosyum

RHEL6.3下安装配置ExtMail(postfix+cyrus+courier+dovecot+mysql+httpd+extmail)_第1张图片


 

4检查是否安装了Developmenttools组,这个组中的包会在安装过程中被依赖,如果未安装,yum groupinstall Development tools

 

5检查以下包是否已安装,因为他们可能会被依赖

[root@ localhost ~]# yum list | grep -E'tcl-devel|libart_lgpl-devel|libtool-ltdl-devel|expect'

Unable to read consumer identity

expect.x86_64                         5.44.1.15-4.el6                  @localyum

libart_lgpl-devel.x86_64              2.3.20-5.1.el6                   @localyum

libtool-ltdl-devel.x86_64             2.2.6-15.5.el6                   @localyum

tcl-devel.x86_64                      1:8.5.7-6.el6                    @localyum

在我的系统里面上面的命令查不出libtool-ltdl-devel这个包,但是它在系统自带的package中是存在的,所以配置yum源的时候,最好自己再createrepo一遍,然后clean,最后在试用上面的命令检查。

 

6检查系统是否自带postfix,自动安装的postfix是否支持mysqlcyrus

查看是否支持mysql

[root@cp-rdsrv00 Packages]# postconf–m  

btree

cidr

environ

hash

ldap

mysql

nis

pcre

proxy

regexp

static

unix

查看是否支持cyrus

[root@cp-rdsrv00 Packages]# postconf–a 

cyrus

dovecot

 

2.配置DNS(域名)

[root@cp-rdsrv00 ~]# yum install bind

[root@cp-rdsrv00 ~]# yum installbind-chroot

Unable to read consumer identity

PackageKit-device-rebind.x86_64    0.5.8-20.el6                        @ localyum bind.x86_64                       32:9.8.2-0.10.rc1.el6              @localyum

bind-chroot.x86_64                 32:9.8.2-0.10.rc1.el6               @localyum

bind-libs.x86_64                   32:9.8.2-0.10.rc1.el6               @ localyum bind-utils.x86_64                  32:9.8.2-0.10.rc1.el6               @ localyum

 

[root@cp-rdsrv00 ~]# service named start

Starting named:                                           [  OK  ]

 

[root@cp-rdsrv00 etc]# cd/var/named/chroot/etc/

[root@cp-rdsrv00 etc]# cp named.confnamed.conf.back

[root@cp-rdsrv00 etc]# vim named.conf

更改如下两项

listen-on port 53 { 192.168.88.88; };

allow-query     { any; };

 

 

然后更改如下文件

[root@cp-rdsrv00 etc]# vimnamed.rfc1912.zones

在最下面添加如下内容,根据实际情况进行更改,这里为了方便,只配置正向解析

zone "test.com" IN {

       type master;

       file "test.com.zone";

       allow-update { none; };

};

 

 

然后去相应路径创建正向解析文件

[root@cp-rdsrv00 etc]# cd/var/named/chroot/var/named/

[root@cp-rdsrv00 named]# cp named.localhosttest.com.zone

[root@cp-rdsrv00 named]# chmod -R 777 test.com.zone

[root@cp-rdsrv00 named]# vim test.com.zone

更改信息如下

$TTL 600

@      IN SOA  @ rname.invalid. (

                                        0       ; serial

                                        1D      ; refresh

                                        1H      ; retry

                                        1W      ; expire

                                        3H)    ; minimum

       NS      @

       A       192.168.88.88

       AAAA    ::1

                IN      mx     10      cp-rdsrv00.test.com.

cp-rdsrv00      IN     A               192.168.88.88

mail            IN      CNAME           cp-rdsrv00

 

 



 

然后我们要修改服务器的默认的DNS 服务器,但是因为服务器本身可能安装了NetworkManager服务,它有可能托管网络配置,所以如果大家直接用setup去配置dns,可能服务器重启以后,先前配置的DNS配置会清空,所以,我们使用以下方法更改相应网卡的DNS配置

 

为防止重启机器后自动清空dns设置,所以需要进行相应的设置

进入网卡配置的路径

[root@cp-rdsrv00 network-scripts]# pwd

/etc/sysconfig/network-scripts

 

找到相应网卡进行编辑

[root@cp-rdsrv00 network-scripts]# vimifcfg-有线连接_1

添加如下内容,DNS2没有可以不加

DNS1=X.X.X.X

DNS2=X.X.X.X

 

然后重启网络服务

[root@cp-rdsrv00 network-scripts]#/etc/init.d/network restart

fgrep: ifcfg-ifcfg-有线连接_1: Nosuch file or directory

fgrep: ifcfg-ifcfg-有线连接_1: Nosuch file or directory

/etc/init.d/network: line 206:./ifcfg-ifcfg-有线连接_1: No such file or directory

Shutting down loopback interface:                          [  OK  ]

Bringing up loopback interface:                            [  OK  ]

fgrep: ifcfg-ifcfg-有线连接_1: Nosuch file or directory

fgrep: ifcfg-ifcfg-有线连接_1: Nosuch file or directory

fgrep: ifcfg-ifcfg-有线连接_1: Nosuch file or directory

egrep: ifcfg-ifcfg-有线连接_1: Nosuch file or directory

Bringing up interface ifcfg-有线连接_1:  Active connection state: activated

Active connection path:/org/freedesktop/NetworkManager/ActiveConnection/2

                                                          [  OK  ]

按照上述方法更改的DNS配置后,重启后应该不会回复,网上还有的朋友说停止NetworkManager,千万不要这样(停止此服务后,网卡可能会被禁用,如果不小心停止了,从服务内重新启动该服务即可),使用setup配置,或者直接更改resolv.conf,重启后都有可能会还原DNS设置,所以请按照上述方法进行

 

 

重启域名服务

[root@cp-rdsrv00 named]# service namedrestart

Stopping named: .umount:/var/named/chroot/var/named: device is busy.

       (In some cases useful info about processes that use

        the device is found by lsof(8) or fuser(1))

                                                          [  OK  ]

Starting named:                                           [  OK  ]

设置开机启动

[root@cp-rdsrv00 ~]# chkconfig named on

 

 

本机ping测试

远程客户端修改dns后,进行ping 测试

 

3.配置postfix(发邮件)

本系统在安装的时候自带安装了系统的postfix,如果没有安装,请手动安装postfix,并且保证postfix支持mysqlcyrus

postfix用户id和用户组id默认为89postdrop用户组id默认为90

因为默认的postfix用户id较小,大家一般都是用id号大于1000的,因为如果id较小,以后认证的时候可能会报一些错误,所以更改postfix默认id,使用大家常用的2525

更改系统用户id,将系统自带postfix用户id改为2525,将系统自带postfixid改为2525,将系统自带postdropid改为2526

[root@localhost ~]# id postfix

uid=89(postfix) gid=89(postfix)groups=89(postfix),12(mail)

[root@localhost ~]# usermod -u 2525 postfix

usermod: user postfix is currently loggedin

[root@localhost ~]# service postfix stop

Shutting down postfix:                                     [  OK  ]

[root@localhost ~]# usermod -u 2525 postfix

[root@localhost ~]# groupmod -g 2525postfix

[root@localhost ~]# groupmod -g 2526postdrop

[root@localhost ~]# id postfix

uid=2525(postfix) gid=2525(postfix)groups=2525(postfix),12(mail)

 

 

[root@localhost ~]# service postfix restart

Shutting down postfix:                                     [FAILED]

Starting postfix:                                         [  OK  ]

更改id,重启有问题,或者发邮件收不到,是因为更改id后权限有问题,查看日志/var/log/maillog 报错如下

Sep 2 01:20:07 localhost postfix/postfix-script[1316]: starting the Postfixmail system

Sep 2 01:20:07 localhost postfix/master[1317]: fatal: open lock file/var/lib/postfix/master.lock: cannot open file: Permission denied

Sep 2 01:20:13 localhost postfix/postfix-script[1337]: fatal: the Postfixmail system is not running

Sep 2 01:20:13 localhost postfix/postfix-script[1395]: warning: not owned bypostfix: /var/lib/postfix/.

Sep 2 01:20:13 localhost postfix/postfix-script[1396]: warning: not owned bypostfix: /var/lib/postfix/./master.lock

Sep 2 01:20:13 localhost postfix/postfix-script[1402]: warning: not owned bygroup postdrop: /usr/sbin/postqueue

Sep 2 01:20:13 localhost postfix/postfix-script[1403]: warning: not owned bygroup postdrop: /usr/sbin/postdrop

Sep 2 01:20:13 localhost postfix/postfix-script[1404]: warning: not owned bygroup postdrop: /var/spool/postfix/public

Sep 2 01:20:13 localhost postfix/postfix-script[1405]: warning: not owned bygroup postdrop: /var/spool/postfix/maildrop

Sep 2 01:20:13 localhost postfix/postfix-script[1413]: starting the Postfixmail system

Sep 2 01:20:13 localhost postfix/master[1414]: fatal: open lock file/var/lib/postfix/master.lock: cannot open file: Permission denied

 

可见更改id后对部分路径和文件的访问权限有影响,所以执行以下命令更改用户和用户组

[root@localhost postfix]# chown -Rpostfix:postfix /var/lib/postfix/

[root@localhost postfix]# chgrp -R postdrop/usr/sbin/postqueue

[root@localhost postfix]# chgrp -R postdrop/usr/sbin/postdrop

[root@localhost postfix]# chgrp -R postdrop/var/spool/postfix/public

[root@localhost postfix]# chgrp -R postdrop/var/spool/postfix/maildrop

 

 

然后restart两次,成功

[root@localhost postfix]# service postfixrestart

Shutting down postfix:                                     [FAILED]

Starting postfix:                                         [  OK  ]

[root@localhost postfix]# service postfixrestart

Shutting down postfix:                                     [  OK  ]

Starting postfix:                                          [  OK  ]

 

 

 

 

修改postfix主配置文件

[root@localhost postfix]# pwd

/etc/postfix

[root@localhost postfix]# cp main.cfmain.cf.back

[root@localhost postfix]# postconf -e'inet_interfaces = all'

[root@localhost postfix]# postconf -e'mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain'

[root@localhost postfix]# postconf -e'mynetworks = 127.0.0.0/8,192.168.0.0/16' (注:不要把127.0.0.0写成127.0.0.1)

[root@localhost postfix]# postconf -e'myhostname = mail.test.com'

[root@localhost postfix]# postconf -e'mydomain = test.com'

[root@localhost postfix]# postconf -e'myorigin = $mydomain'

 

修改后重启

[root@localhost postfix]# service postfixrestart

Shutting down postfix:                                     [  OK  ]

Starting postfix:                                         [  OK  ]

 

使用telnet命令测试

[root@localhost postfix]# telnet mail.test.com25

Trying 192.168.88.88...

Connected to mail.test.com.

Escape character is '^]'.

Connection closed by foreign host.

 

查看日志

Sep 2 01:38:20 localhost postfix/master[1887]: warning:/usr/libexec/postfix/smtpd: bad command startup -- throttling

Sep 2 01:39:33 localhost postfix/smtpd[1979]: connect fromcp-rdsrv00[192.168.88.88]

Sep 2 01:39:33 localhost postfix/smtpd[1979]: fatal: non-null host addressbits in "127.0.0.1/8", perhaps you should use "127.0.0.0/8"instead

 

根据提示,发现配置错误了127.0.0.1/8应该改成127.0.0.0/8

[root@localhost postfix]# postconf -e'mynetworks = 127.0.0.1/8,192.168.0.0/16'

 

 

从服务器本地进行telnet测试,然后查看对应账户是否收到邮件

[root@cp-rdsrv00 ~]# telnet mail.test.com25

Trying 192.168.88.88...

Connected to mail.test.com.

Escape character is '^]'.

220 mail.test.com ESMTP Postfix

helo mail.test.com

250 mail.test.com

mail from:[email protected]

250 2.1.0 Ok

rcpt to:[email protected]

250 2.1.5 Ok

data    

354 End data with.

Subject:test

test

.

250 2.0.0 Ok: queued as 46763C0913

quit

221 2.0.0 Bye

Connection closed by foreign host.

You have new mail in /var/spool/mail/root

 

 

 

windos客户端进行telnet测试,然后查看服务器对应账户是否收到邮件

C:\Users\zz6547>telnet mail.test.com 25

220 mail.test.com ESMTP Postfix

helo mail.test.com

250 mail.test.com

mail from:[email protected]

250 2.1.0 Ok

rcpt to:[email protected]

250 2.1.5 Ok

data

354 End data with.

Subject:test of windows

test of windows

.

250 2.0.0 Ok: queued as 3D34EC0914

quit

221 2.0.0 Bye

 

如果上面两个测试都没有问题,postfix的基本配置就完成了,到此,我们只实现了一些最基本的功能,如下

1在服务器上或远程客户端上通过一些基础的命令向服务器上面的本地域上的用户发邮件

2服务器上的用户相互发邮件

 

因此我们需要的功能还远远未实现,现在我们继续向下配置,现在发邮件没有验证用户信息,为了实现简单的认证功能,我们需要配置cyrus-sasl

 

 

4.配置cyrus-sasl(认证)

请确定以下cyrus-sasl相关包已经安装

[root@cp-rdsrv00 ~]# yum list installed |grep cyrus

Unable to read consumer identity

cyrus-sasl.x86_64                2.1.23-13.el6                      @anaconda

cyrus-sasl-devel.x86_64           2.1.23-13.el6                      @localyum

cyrus-sasl-lib.x86_64              2.1.23-13.el6                       @anaconda-

cyrus-sasl-plain.x86_64            2.1.23-13.el6                       @anaconda-

 

为了对比cyrus配置前后效果,达到只有认证通过的用户才能发邮件的效果,所以先修改postfix配置,使postfix认为只有本机的127.0.0.1的网段的邮件为非中继邮件,同时127.0.0.0/8的网段为允许中继的网段,其他所有网段的用户都需要认证以后才能发邮件。

更改后如下

[root@cp-rdsrv00Packages]# vim /etc/postfix/main.cf

mydestination =localhost

mynetworks=127.0.0.0/8

更改后重启postfix

[root@cp-rdsrv00Packages]# service postfix restart

Shutting downpostfix:                                    [  OK  ]

Startingpostfix:                                         [  OK  ]

 

 

重启完成后,我们再次使用windows客户端对服务器发邮件

220 mail.test.comESMTP Postfix

mailfrom:[email protected]

250 2.1.0 Ok

rcpt to:[email protected]

554 5.7.1: Relay access denied

 

提示Relay accessdenied(目的效果已达成),如果想要telnet成功,除非在服务器上telnet 127.0.0.1 25 可以成功。

 

我们现在已经无法在windows客户端中继邮件了,所以等我们配置完cyrus以后,如果通过认证的用户可以发邮件,那么就证明了我们的cyrus配置是正确的,当然,我们现在还没有配置cyrus,我们继续

 

 

下面启动cyrus-sasl的服务,并进行配置

[root@cp-rdsrv00Packages]# service saslauthd start

Startingsaslauthd:                                        [  OK  ]

[root@cp-rdsrv00Packages]# chkconfig saslauthd on

[root@cp-rdsrv00Packages]# chkconfig | grep saslauthd

saslauthd           0:off1:off2:on3:on4:on5:on6:off

 

使用testsaslauthd –u username –p password命令可以测试saslauthd服务是否正常,记住不要使用root用户进行测试,创建一个新用户进行测试,测试完成后删除该用户

[root@cp-rdsrv00sasl2]# testsaslauthd -u testuser -p 123

0:NO "authentication failed"

 

提示验证失败

因为系统默认认证机制是使用pam认证,我们改为shadow认证

 

[root@cp-rdsrv00sasl2]# vim /etc/sysconfig/saslauthd

Pam改为shadow

#MECH=pam

MECH=shadow

 

更改完成过后重启服务

[root@cp-rdsrv00sasl2]# service saslauthd restart

Stoppingsaslauthd:                                        [  OK  ]

Startingsaslauthd:                                        [  OK  ]

 

再次使用testsaslauthd命令测试saslauthd服务是否正常

[root@cp-rdsrv00sasl2]# testsaslauthd -u testuser -p 123

0:OK "Success."

验证成功,服务正常

然后开始配置

 

 

首先确认smtp能够使用sasl进行认证

查看/etc/sasl2/smtpd.conf配置文件中是否有如下配置

[root@cp-rdsrv00sasl2]# cat /etc/sasl2/smtpd.conf

pwcheck_method:saslauthd

mech_list:plain login

 

配置postfix使用cyrus-sasl进行认证

[root@cp-rdsrv00~]# vim /etc/postfix/main.cf

在最底部添加如下内容

#################postfix中跟cyrus-sasl相关的配置################################

smtpd_sasl_auth_enable= yes

smtpd_sasl_local_domain= $myhostname

#broken_sasl_auth_clients定义是否支持向outlookfoxmail等非标准认证协议

broken_sasl_auth_clients= yes

#定义允许哪些限制,拒绝哪些限制,哪些规则不认证也是接受的或者拒绝的smtpd_recipient_restrictions= permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination

#telnet时不显示smtp软件信息

smtpd_banner= welcome to our mailsystem

 

 

配置完成后重启postfix服务

[root@cp-rdsrv00~]# service postfix restart

Shuttingdown postfix:                                        [ OK  ]

Startingpostfix:                                              [ OK  ]

 

 

再次在从windows客户端使用telnet命令向服务器发送邮件进行测试,但是这次我们使用telnet时,我们先登录认证一下,认证时需要输入的用户名和密码,但是我们输入的用户名和密码一定要转换成base64的编码形式才行,例如我的用户名是testuser 我的密码是123,我们需要在服务器端将用户名和密码转换编码后复制,然后再需要输入的时候粘贴

 

例如,现在服务器将用户名和密码转换编码格式,记住一定要加 –n 参数哦,否则测死你你也测不出来,切记啊,骚年,我就是吃了这个亏的,白测了一个星期

[root@cp-rdsrv00~]# echo -n 'testuser' | openssl base64

dGVzdHVzZXI=

[root@cp-rdsrv00~]# echo -n '123' | openssl base64

MTIz

然后再在windows客户端中使用telnet命令

220mail.test.com ESMTP Postfix

authlogin

334VXNlcm5hbWU6

dHR1c2Vy

334UGFzc3dvcmQ6

dHR1c2Vy

2352.7.0 Authentication successful

mailfrom:[email protected]

2502.1.0 Ok

rcptto:[email protected]

2502.1.5 Ok

data

354End data with .

Subject:testsasl111

testsasl111

.

2502.0.0 Ok: queued as 0AB2DE0100

quit

2212.0.0 Bye

 

测试后未收到邮件

查看日志

Sep10 00:27:33 cp-rdsrv00 postfix/smtp[17521]: 44E96E00A6: to=,relay=none, delay=27, delays=27/0.01/0/0, dsn=5.4.6, status=bounced (mail formail.test.com loops back to myself)

更改了postfix 中的  mydestination选项

mydestination= localhost,$myhostname

重启postfix

再次测试,auth login 验证通过后发邮件,服务器端收到刚才发的邮件,证明sasl验证没有问题了

 

 

5.配置dovecot(收邮件)

[root@cp-rdsrv00 log]# yum install dovecot

Dovecot安装以后修改配置文件,在rhel6中,dovecot的配置文件已经模块化,不同功能的配置在相对应的配置文件中,首先,更改dovecot的主配置文件

[root@cp-rdsrv00 ~]# cd /etc/dovecot/

[root@cp-rdsrv00 ~]# cp dovecot.conf dovecot.conf.back

[root@cp-rdsrv00 ~]# vim/etc/dovecot/dovecot.conf

#protocols = imap pop3 lmtp的注释去掉,因为这里只是用pop3的服务,所以配置如下

protocols = pop3

 

同时找到#login_trusted_networks = 将注释去掉,同时制定允许登陆的网段地址,为了方便,我们设置为0.0.0.0/0,更具自己的情况进行设定。

login_trusted_networks = 0.0.0.0/0

 

在主配置文件的最下方,我们可以看到!include conf.d/*.conf,所以,其他配置,我们进入对应的配置文件配置

 

[root@cp-rdsrv00 dovecot]# cp -R conf.d/conf.d.back

[root@cp-rdsrv00 dovecot]# cd conf.d

[root@cp-rdsrv00 conf.d]# vim 10-mail.conf

找到#   mail_location =mbox:~/mail:INBOX=/var/mail/%u

将注释去掉,如下

mail_location =mbox:~/mail:INBOX=/var/mail/%u

 

重启dovecot服务

[root@cp-rdsrv00 conf.d]# service dovecotrestart

Stopping Dovecot Imap:                                     [  OK  ]

Starting Dovecot Imap:                                     [  OK  ]

 

开始测试

测试步骤,向测试用户发邮件,确定发送成功后,使用收邮件用户的身份telnet查看收到的邮件

 

为了测试方便,让postfix发邮件进行测试的时候不会status=bounced,所以更改postfixmydestination设置调整为如下

mydestination =localhost,$myhostname,localhost.$mydomain,$mydomain

重启postfix

然后向测试用户发送一封邮件

[root@cp-rdsrv00 ~]# mail -vs 'testtest' ttuser

 

 

然后在服务器端或者windows客户端使用telnet命令进行测试

telnet mail.test.com 110

 

Looking up host 'mail.test.com'...

Host 'mail.test.com' resolved to 192.168.88.88.

Connecting to 192.168.88.88:110...

Connection established.

Escape character is '^@]'.

+OK Dovecot ready.

user ttuser

+OK

pass ttuser

+OK Logged in.

stat

+OK 1 491

LIST (注:LIST大写)

+OK 1 messages:  (注:可以看到有一封邮件)

1 491

.

RETR 1 (注:使用RETR 加序号 查看对应邮件)

 

查看完成,quit退出

测试成功

 

[root@cp-rdsrv00 yum.repos.d]# chkconfigdovecot on

 

6.过渡

现在我们可以使用postfix发件,发件时可以使用cyrus-sasl进行简单的认证,可以使用dovecot收件了,基本的邮件功能我们已经实现,但是,现实的邮件系统中,我们不可能为每个用户创建一个服务器上面的系统用户,这样非常不安全,而且维护麻烦,所以我们要使用虚拟用户,因为我们要使用虚拟用户,所以我们需要安装一个数据库(这里使用mysql),数据库中存放虚拟用户的信息,例如:每个用户的用户名,密码,邮箱目录,邮件信息等,但是postfix没有认证功能,虽然我们已经配置了cyrus-sasl进行简单认证,但是如果要对虚拟用户进行认证,还远远不够,为了达到目的,我们还需要依赖一个认证库(这里使用courier-authlib),让postfix同时使用cyrus-saslcourier-authlibmysql数据库中的虚拟用户进行认证,这样我们就能够达到在发件时对虚拟用户进行认证的目的,同时,我们在收件时也需要进行认证,但是因为dovecot天生就有基于mysql的认证功能,所以,我们不用再安装别的软件,只需要对dovecot进行相应的配置,还有,因为我们需要使用虚拟用户,所以我们需要在数据库中创建一个我们邮件系统使用的数据库,数据库中需要创建一些表,一些字段,来存放我们的数据,但是这些表之间的关系字段之间的关系我们可不了解,怎么办,不用怕,extmail已经为我们准备好了一些模板,和一些命令,我们只要执行相对应的命令,就可以创建一个我们需要的库,然后就可以使用extmailweb页面进行收发邮件了,同时,我们可以使用extman对我们的邮件系统进行配置和管理,这样,我们就有了一个非常好用的web端的MUA了,这段话只是为了理清思路,我们继续向下进行。

 

 

7安装mysql(数据库)

因为courier-authlib会需要mysql的一些配置路径,所以,为了保险起见,我们先安装mysql

 

[root@cp-rdsrv00 yum.repos.d]# yum listinstalled | grep mysql

Unable to read consumer identity

mysql.x86_64                       5.1.61-4.el6                        @localyum

mysql-devel.x86_64                 5.1.61-4.el6                        @localyum

mysql-libs.x86_64                  5.1.61-4.el6                        @anaconda-*

mysql-server.x86_64                5.1.61-4.el6                        @localyum

 

[root@cp-rdsrv00 lib]# cd /usr/bin/

[root@cp-rdsrv00 bin]# ./mysql_install_db

 

然后执行如下命令(注:命令后面有&

[root@cp-rdsrv00 bin]# mysqld_safe &

 

启动mysql服务

[root@cp-rdsrv00 bin]# /etc/init.d/mysqldstart

Starting mysqld:                                          [  OK  ]

 

测试

[root@cp-rdsrv00 bin]# mysql

 

添加自动启动

[root@cp-rdsrv00 bin]# chkconfig mysqld on

8配置courier-authlib(认证库)

因为我们已经配置过EMOS的本地的yum源,所以我们我们直接yum安装courier-authlib

[root@cp-rdsrv00 yum.repos.d]# yum list |grep emosyum | grep courier

Unable to read consumer identity

courier-authlib.x86_64                0.62.4-1.el6.FT                  emosyum 

courier-authlib-devel.x86_64          0.62.4-1.el6.FT                  emosyum 

courier-authlib-mysql.x86_64          0.62.4-1.el6.FT                  emosyum 

 

[root@cp-rdsrv00 yum.repos.d]# yum installcourier-authlib courier-authlib-devel courier-authlib-mysql

 

设置authdaemon目录权限为755

[root@cp-rdsrv00 authdaemon]# chmod -R 755/var/spool/authdaemon/

 

[root@cp-rdsrv00 authlib]# pwd

/etc/authlib

[root@cp-rdsrv00 authlib]# cp authmysqlrcauthmysqlrc.back

[root@cp-rdsrv00 authlib]# cp authdaemonrcauthdaemonrc.back

 

首先,配置authdaemonrc文件,此文件是一些认证的配置

[root@cp-rdsrv00 authlib]# vim authdaemonrc

找到authmodulelist参数,这个选项表示courier-authlib支持使用哪些模块进行认证,我们可以把不用的模块删除,只剩下mysql

authmodulelist="authmysql"

 

authmodulelistorig参数同理

authmodulelistorig="authmysql"

 

daemons=5 此参数表示一共启动几个进程

 

authdaemonvar目录为我们刚才权限改为755的目录

authdaemonvar=/var/spool/authdaemon

 

DEBUG_LOGIN=0  表示是否打开调试日志 1打开,0关闭,2打开并记录密码,2可在测试的时候使用,正常使用最好选01

 

 

 

然后编辑authmysqlrc文件,此文件为一些mysql认证相关配置

[root@cp-rdsrv00 authlib]# vim authmysqlrc

使用如下配置

MYSQL_SERVER            localhost   此配置表示mysql服务地址

MYSQL_USERNAME          extmail   表示使用哪个数据库用户到数据库中进行认证

MYSQL_PASSWORD          extmail   数据库用户对应的密码

 

MYSQL_SOCKET            /var/lib/mysql/mysql.sock

此选项制定mysql的套接字文件路径,我是用的是rpm包安装的,所以路径应该为上述路径,如果不确定,请使用find命令进行查找

[root@cp-rdsrv00 ~]# find / -namemysql.sock

/var/lib/mysql/mysql.sock

 

MYSQL_PORT              3306    设置mysql对应的端口号

MYSQL_OPT               0        保持默认即可

MYSQL_DATABASE          extmail    指定连接哪个库进行认证

MYSQL_USER_TABLE        mailbox    指定去哪张表获取用户账号信息,因为extmail脚本生成的数据库中在mailbox这张表中存放用户信息,所以更改之,下面的密码和用户名同理。

MYSQL_CRYPT_PWFIELD     password   制定去哪个字段获取用户密码进行认证

MYSQL_UID_FIELD          2525             需要与postfix用户id保持一致

MYSQL_GID_FIELD          2525               需要与postfix属组保持一致

MYSQL_LOGIN_FIELD        username   虚拟用户使用哪个字段作为登陆的用户名

MYSQL_HOME_FIELD        concat('/var/mailbox/',homedir)   如此配置表示将两个路径连接起来,/var/mailbox这个路径目前还没有,我们会在后面创建,注意mailbox路径后需要加/

MYSQL_NAME_FIELD        name 保持默认

MYSQL_MAILDIR_FIELD     concat('/var/mailbox/',maildir)   将注释去掉并更改,制定邮件目录配置

 

保存退出

 

启动服务

[root@cp-rdsrv00 authlib]# servicecourier-authlib start

Starting Courier authentication services:authdaemond

 

确定服务是否启动争取

[root@cp-rdsrv00 authlib]# cd/var/spool/authdaemon/

到此目录下,查看是否存在socket文件,这个目录的配置文件只有courier服务启动时才会存在

[root@cp-rdsrv00 authdaemon]# ll

total 4

-rw-r--r-- 1 root root 5 Sep 10 22:42 pid

-rw------- 1 root root 0 Sep 10 22:42pid.lock

srwxrwxrwx 1 root root 0 Sep 10 22:42socket

 

配置自动启动

[root@cp-rdsrv00 authlib]# chkconfigcourier-authlib on

 

到此为止,courier-authlib的配置暂时截止,虽然配置完成,也启动了服务,但是我们还没有办法使用,因为我们还没有初始化数据库,所以那些表和字段都还不存在,我们继续

 

 

9整合postfixcourier

新建虚拟用户邮箱所在目录,并对postfix用户授权

[root@cp-rdsrv00 authdaemon]# mkdir -pv/var/mailbox  

(注:此目录为我们在courier中配置的目录)

mkdir: created directory `/var/mailbox'

[root@cp-rdsrv00 mailbox]# chown -R postfix/var/mailbox/

 

重新配置smtp认证,因为我们一开始为了配置简单认证,使用的认证方式是saslauthd,现在要结合courier进行认证,所以更改为authdaemond的认证方式

[root@cp-rdsrv00 mailbox]# vim/etc/sasl2/smtpd.conf

更改如下

pwcheck_method: authdaemond

mech_list: PLAIN LOGIN

log_level:3  

#注:日志级别3,为调试级别,运行正常后可将此项注释

authdaemond_path:/var/spool/authdaemon/socket 

#注:此路径为courier-authlibsocket路径

 

10配置postfix使之支持虚拟域和虚拟用户

[root@cp-rdsrv00 docs]# vim/etc/postfix/main.cf

在最下方加入如下内容

#####################virtualmailbox##########################

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

 

配置完成后保存退出,目前不需要重启postfix,因为目前这些mysql的虚拟用户的相关配置文件我们还没有(例如/etc/postfix/mysql_virtual_mailbox_maps.cf),我们先把配置文件的路径写入,这些配置文件在extman的包中已经包含,我们会在以后复制过去就可以直接使用,而且我们现在也没有初始化数据库,所以不要重启postfix

 

注:

virtual_mailbox_base  虚拟用户邮箱位置(跟courier保持一致)

virtual_mailbox_maps  虚拟用户邮箱的映射,哪个用户访问哪个邮箱等等相关信息

virtual_mailbox_domains 主要为哪些域收发邮件,虚拟域配置

virtual_alias_domains 虚拟域别名配置

virtual_alias_maps 虚拟用户别名配置

virtual_uid_maps = static:2525 每个虚拟用户都映射为哪个系统用户

virtual_gid_maps = static:2525

virtual_transport = virtual  虚拟投递代理使用哪个代理

 

 

继续配置,启用虚拟域以后,需要取消中心域,即注释掉myhostnamemydestination,mydomain,myorign几个参数,当然,你也可以吧mydestination的值改为自己需要的

[root@cp-rdsrv00 docs]# vim/etc/postfix/main.cf

注释掉以下几项

#mydestination = localhost,$myhostname,localhost.$mydomain,$mydomain

#myhostname = mail.test.com

#mydomain = test.com

#myorigin = $mydomain

 

保存退出,不要重启,等我们初始化数据库后再重启

 

11初始化数据库

先将extman包解压

[root@cp-rdsrv00 ~]# cd/opt/softtoinstall/extmail/

[root@cp-rdsrv00 extmail]# tar -xvf extman-1.1.tar.gz

 

[root@cp-rdsrv00 docs]# pwd

/opt/softtoinstall/extmail/extman-1.1/docs

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

将所有mysql_virtual开头的文件复制到postfix目录下,这些文件都是postfix会用到的配置文件,这样,我们刚才配置postfix支持虚拟域和虚拟用户的配置文件才会存在,否则,postfix将找不到对应的配置文件

 

 

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

但是,这两个sql脚本中的关键字和当前版本的mysql支持的关键字不一样,我们还需要小小更改一下

 

找到extmail.sqlinit.sql , 执行如下命令替换这两个配置文件中的关键字

[root@cp-rdsrv00 docs]# pwd

/opt/softtoinstall/extmail/extman-1.1/docs

[root@cp-rdsrv00 docs]# sed -i 's@TYPE=MyISAM@Engine=MyISAM@g'extmail.sql

[root@cp-rdsrv00 docs]# sed -i's@TYPE=MyISAM@Engine=MyISAM@g' init.sql

 

然后执行这两个脚本,初始化数据库,执行次序:先执行extmail.sql 后执行init.sql,使用如下命令执行脚本

注:目前使用root登陆mysql没有密码,如果提示输入密码,直接回车即可,如果设置了密码,请输入对应密码。

[root@cp-rdsrv00 docs]# mysql -uroot -p< extmail.sql 

Enter password:

[root@cp-rdsrv00 docs]# mysql -uroot -p< init.sql

Enter password:

 

进入mysql查看是否初始化成功

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| extmail           |

| mysql              |

| test               |

+--------------------+

4 rows in set (0.00 sec)

 

 

然后创建数据库用户,因为我们在courier-authlib中配置的数据库用户名和密码是都是extmail,所以这里一定要对应。

mysql> grant all privileges on extmail.*to extmail@localhost identified  by  'extmail';

Query OK, 0 rows affected (0.00 sec)

 

mysql> grant all privileges on extmail.*to [email protected] identified  by  'extmail';

Query OK, 0 rows affected (0.00 sec)

 

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

 

mysql> quit

Bye

 

 

数据库初始化完成,重启postfix

[root@cp-rdsrv00 docs]# service postfixrestart

Shutting down postfix:                                     [  OK  ]

Starting postfix:                                         [  OK  ]

 

重启成功,postfix配置告一段落,我们继续

12配置dovecot基于mysql进行认证

Postfix配置完了,我们开始配置dovecot

[root@cp-rdsrv00 docs]# vim/etc/dovecot/conf.d/10-mail.conf

将我们原先的配置注释掉

#mail_location =mbox:~/mail:INBOX=/var/mail/%u

改成

mail_location =maildir:/var/mailbox/%d/%n/Maildir

注:%d表示对应的虚拟域,%n表示对应的虚拟用户名

 

 

[root@cp-rdsrv00 docs]# vim /etc/dovecot/conf.d/10-auth.conf

auth_mechanisms = plain  保持不变

 

在配置文件的最下方,应该可以看到默认包含使用哪个认证配置

!includeauth-system.conf.ext

#!includeauth-sql.conf.ext

#!include auth-ldap.conf.ext

#!include auth-passwdfile.conf.ext

#!include auth-checkpassword.conf.ext

#!include auth-vpopmail.conf.ext

#!include auth-static.conf.ext

 

改为使用sql的认证的配置文件

#!includeauth-system.conf.ext

!includeauth-sql.conf.ext

#!include auth-ldap.conf.ext

#!include auth-passwdfile.conf.ext

#!include auth-checkpassword.conf.ext

#!include auth-vpopmail.conf.ext

#!include auth-static.conf.ext

 

 

[root@cp-rdsrv00 docs]# vim/etc/dovecot/conf.d/auth-sql.conf.ext

passdb改为如下

passdb {

 driver = sql

 

  #Path for SQL configuration file, see example-config/dovecot-sql.conf.ext

 #args = /etc/dovecot/dovecot-sql.conf.ext

 args = /etc/dovecot/dovecot-mysql.conf

}

 

同理userdb改为如下

userdb {

 driver = sql

 #args = /etc/dovecot/dovecot-sql.conf.ext

 args = /etc/dovecot/dovecot-mysql.conf

}

 

但是dovecot-mysql.conf目前还不存在,我们需要手动创建,当然,也可以把dovecot-sql.conf.ext复制一下,然后更改

[root@cp-rdsrv00 conf.d]# find / -namedovecot-sql.conf.ext

find: File system loop detected;`/var/named/chroot/var/named' is part of the same file system loop as`/var/named'.

/usr/share/doc/dovecot-2.0.9/example-config/dovecot-sql.conf.ext

 

[root@cp-rdsrv00 conf.d]# cp/usr/share/doc/dovecot-2.0.9/example-config/dovecot-sql.conf.ext/etc/dovecot/dovecot-mysql.conf

 

[root@cp-rdsrv00 docs]# vim/etc/dovecot/dovecot-mysql.conf

更改如下

driver = mysql

connect = host=/var/lib/mysql/mysql.sockdbname=extmail user=extmail password=extmail

 

default_pass_scheme = CRYPT

 

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

 

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

 

注释:

driver = mysql  表示使用mysql驱动连接

connect = host=/var/lib/mysql/mysql.sockdbname=extmail user=extmail password=extmail

表示怎样连接数据库,因为我们的数据库在本机,所以直接使用本机的mysql套接字连接,

可以使用find命令查找mysql.sock的位置,加以更改

default_pass_scheme = CRYPT   表示我们的密码为加密存放

password_query =   定义的语句表示已哪个用户登录就以用户名为条件查询。

user_query = 同上为sql语句

 

因为我们使用了driver=mysql参数,所以我们需要安装dovecot-mysql,否则dovecot无法使用mysql驱动

[root@cp-rdsrv00 extmail]# yum installdovecot-mysql

 

重启dovecot服务

[root@cp-rdsrv00 docs]# service dovecotrestart

Stopping Dovecot Imap:                                     [  OK  ]

Starting Dovecot Imap:                                     [  OK  ]

 

Dovecot配置完成了

 

 

13配置httpd服务与extmail

因为我们的目标是使用extmail这个webmail,所以我们需要web服务器

安装httpd

[root@cp-rdsrv00 Packages]# yum listinstalled | grep httpd

Unable to read consumer identity

httpd.x86_64                       2.2.15-15.el6_2.1                   @anaconda-

httpd-tools.x86_64                 2.2.15-15.el6_2.1                   @anaconda-

 

 

extmail配置

extmail默认目录为/var/www/extsuite,所以创建此目录

然后将extmailextman的网页复制到此目录并重命名即可

 

首先,找到extmailextman的包,解压包

复制这两个文件夹及文件夹下所有内容到extsuite文件夹下,并命名为extmailextman

[root@cp-rdsrv00 extmail]# cp -rextmail-1.2 /var/www/extsuite/extmail

[root@cp-rdsrv00 extmail]# cp -r extman-1.1/var/www/extsuite/extman

 

更改extmail相关配置文件

[root@cp-rdsrv00 extmail]# cd/var/www/extsuite/extmail/

[root@cp-rdsrv00 extmail]# cpwebmail.cf.default webmail.cf

 

如果你一直按照文档操作,默认路径什么的都不用改,更改一下默认语言

SYS_USER_LANG = zh_CN

 

确认认证方式是mysql

SYS_AUTH_TYPE = mysql

 

更改SYS_MAILDIR_BASE选项,需要对应我们之前的邮件路径

SYS_MAILDIR_BASE = /var/mailbox

 

然后更改mysql相关设置

SYS_MYSQL_USER = extmail

SYS_MYSQL_PASS = extmail

SYS_MYSQL_DB = extmail

SYS_MYSQL_HOST = localhost

SYS_MYSQL_SOCKET =/var/lib/mysql/mysql.sock

 

数据库用户名密码要与之前的对应,我们使用默认

mysql.sock的套接字文件路径可使用find命令确认

 

找到SYS_AUTHLIB_SOCKET配置选项,确认courier-authlib的套接字文件路径

SYS_AUTHLIB_SOCKET =/var/spool/authdaemon/socket

因为yum安装默认路基为上述路径,保持默认即可

 

其他保持默认即可

保存退出

 

extman配置

更改extman相关配置文件

[root@cp-rdsrv00 extmail]# cd/var/www/extsuite/extman/

[root@cp-rdsrv00 extman]# cpwebman.cf.default webman.cf

[root@cp-rdsrv00 extman]# vim/var/www/extsuite/extman/webman.cf

extmail一样,将SYS_MAILDIR_BASE 改为如下,与以前对应

SYS_MAILDIR_BASE = /var/mailbox

 

确认,SYS_SESS_DIR 目录如下,但是/tmp/extman/此运行时临时目录不存在,我们需要手动创建

SYS_SESS_DIR = /tmp/extman/

 

[root@cp-rdsrv00 authdaemon]# mkdir/tmp/extman

[root@cp-rdsrv00 authdaemon]# chown -Rpostfix.postfix /tmp/extman/

 

继续修改,SYS_CAPTCHA_ON = 1表示用户注册时需要填写验证码,改为0,如果改为1

需要安装perl-GD模块才能使用验证码功能,否则验证码无法正常显示。

SYS_CAPTCHA_ON = 0

 

下面这两个id一定要与邮件投递用户保持一致,所以,跟我们postfix保持一致

SYS_DEFAULT_UID = 2525

SYS_DEFAULT_GID = 2525

 

下面为一些默认磁盘配置,可保持默认

# maxquota, alias, users and netdisk quotafor domain

SYS_DEFAULT_MAXQUOTA = 500

SYS_DEFAULT_MAXALIAS = 100

SYS_DEFAULT_MAXUSERS = 100

SYS_DEFAULT_MAXNDQUOTA = 500

 

# per user default quota, netdisk quota andexpire

SYS_USER_DEFAULT_QUOTA = 5

SYS_USER_DEFAULT_NDQUOTA = 5

SYS_USER_DEFAULT_EXPIRE = 1y

 

 

找到mysql数据库相关配置,确认如下,当然,我们还没有创建webman这个数据库用户,一会儿创建,mysql.sock路径仍然要与以前保持一致,这里默认就行。

SYS_MYSQL_USER = webman

SYS_MYSQL_PASS = webman

SYS_MYSQL_DB = extmail

SYS_MYSQL_HOST = localhost

SYS_MYSQL_SOCKET =/var/lib/mysql/mysql.sock

 

其他保持默认即可

保存退出

 

为了保持默认,我们还需要在mysql数据库中创建一个webman数据库用户

mysql> grant all privileges on extmail.*to webman@localhost identified  by  'webman';

Query OK, 0 rows affected (0.00 sec)

 

mysql> grant all privileges on extmail.*to [email protected] identified  by  'webman';

Query OK, 0 rows affected (0.00 sec)

 

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

 

 

更改extmailextman两个目录下cgi目录的属主

[root@cp-rdsrv00 /]# chown -Rpostfix.postfix /var/www/extsuite/extmail/cgi/

[root@cp-rdsrv00 /]# chown -Rpostfix.postfix /var/www/extsuite/extman/cgi/

 

 

httpd配置

配置httpd,创建虚拟主机

[root@cp-rdsrv00 extmail]# cp/etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.back

[root@cp-rdsrv00 extmail]# vim/etc/httpd/conf/httpd.conf

启用NameVirtualHost 选项,将前面的注释去掉

NameVirtualHost *: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

#suexecUserGroup postfix postfix

 

注:

ServerName 虚拟主机名

DocumentRoot  对应刚才extmailhtml路径

ScriptAlias 脚本路径别名

Alias   路径别名

#suexecUserGroup postfix postfix  由于/var/mailbox需要用postfix用户访问,但是运行web进程的用户默认为apache用户,所以为了让apache在运行extmailwebmail的时候使用的用户为postfix,可以使用suexecUserGroup参数,suexecUserGroup参数表示为运行extmail这个程序的时候,httpd进程的用户任然为apache,但是一旦当程序访问到DocumentRoot/var/www/extsuite/extmail/html/这些路径的时候,就临时的切换到postfix用户和用户组里面,但是需要注意,如果需要使用suexecUserGroup参数,需要httpd支持suexec的功能,

但是我们没有添加suexec模块,所以我们注释掉此参数,使用另一种方法达到目的,直接把运行httpd进程的用户和组直接改为postfix,如果使用suexec,不用修改用户和用户组配置。

 

将默认使用apache用户直接改为使用postfix用户

#User apache

#Group apache

User postfix

Group postfix

 

 

因为我们建立了虚拟主机,所以取消中心主机

注释掉DocumentRoot

#DocumentRoot "/var/www/html"

 

保存退出

 

检查语法

[root@cp-rdsrv00 extmail]# service httpdconfigtest

Syntax OK

 

[root@cp-rdsrv00 emosyum]# service httpdstart

Starting httpd:                                           [  OK  ]

 

[root@cp-rdsrv00 ~]# chkconfig httpd on

 

因为extmail是基于Perl写成的,所以需要依赖一些Perl的模块,我们才能够正常访问所

[root@cp-rdsrv00 emosyum]# yum installperl-Unix-Syslog

 

 

14访问及设置

检查需要的服务是否都已经开机启动

[root@cp-rdsrv00 ~]# chkconfig | grep -E'named|postfix|saslauthd|courier-authlib|dovecot|httpd|mysqld'

courier-authlib0:off1:off2:on3:on4:on5:on6:off

dovecot            0:off1:off2:on3:on4:on5:on6:off

httpd              0:off1:off2:on3:on4:on5:on6:off

mysqld            0:off1:off2:on3:on4:on5:on6:off

named          0:off1:off2:on3:on4:on5:on6:off

postfix              0:off1:off2:on3:on4:on5:on6:off

saslauthd           0:off1:off2:on3:on4:on5:on6:off

 

 

我们现在从windows客户端进行访问测试

添加网络中的dns服务器或者修改host文件,是本地客户端可以访问mail.test.com

在浏览器中输入http://mail.test.com

 

选择登陆邮箱管理,可进入extmanextmail邮件系统进行配置

系统默认超管[email protected]

超管默认密码extmail*123*

 

登陆到extman管理后台,点击  域列表 --- 添加域

添加test.com

其他的按需配置



欢迎访问个人博客地址:http://www.zsythink.net/