extmail邮件服务器的搭建

因特网中我们访问126163邮件服务器时,该服务器都是以网页的形式展现给用户,使用户一目了然,容易操作,上一篇博客虽然给大家聊了使用poetfix+squirrelmail(小松鼠)可以实现该功能,但它还是存在很多缺陷的,我们访问163服务器时,它的首页展现给大家的画面你应该知道吧,当我们输入帐号后他会让你选择虚拟域,当然他的功能不只是这些,下面我们就搭建extmail来实现更多功能的邮件服务器吧

一:extmail的工作原理

主要使用postfix+extmail的结合,extmail提供网页的界面基于主程序的,以网页的形式当然也离不开apache了,extmail实现邮件的收发处理工作。我们使用的邮件帐号都是自己在服务器上动态注册的,使用extman组件实现注册和管理功能。动态注册的帐号不是本地帐号不会存在/etc/passwd,而是虚拟帐号存放在数据库中mysql,在邮件传输过程中也是比较安全的。下面的图就是我们今天要实的,以网页形式实现邮件的收发;动态注册帐号到mysql库中。

outlook(客户端)形式实现邮件的收发:从图中我们可以看到postfix是发送的服器,dovecot是接受的服务器,outlook是客户端软件当进行发送邮件时使用postfix发送服务器,postfix无验证能力借助sasl进行验证,如果只借助sasl验证只能是本地帐号,我们用户使用的帐号都是动态注册的存放在数据库中,sasl直接不能和数据库结合要通过courier-authlib库,mysql数据库中存放有虚拟域和帐号,这样就可以实现帐号的验证,如果发送的邮件是发往本域的,邮件将会存储在本域件mailbox,我们需要新建一个存放虚拟域和本地帐号的文件夹,而虚拟域和帐号都是动态存放到文件夹中,如果发往外地的邮件直接发送。Outlook在接受邮件时,对于本地帐号就存在身份验证能力,而帐号是存在数据库中我们怎样才能基于mysql的身份验证呢,需要修改dovecot的配置文件来调度mysql进行身份验证。

以网页(web)的形式实现邮件收发:extmail是基于动态主程序的,apache和主程序的结合是通过cgi(通用网关接口),通过extmail实现邮件的收发功能,通过extman实现帐号的注册,网页形式的邮件收发从图上很容易看出我就不唠叨了。

下面我们就来实现上面所说的功能吧,实现过程中我使用的是redhat5.4系统,需要安装的软件包apachedovecotmysql使用linux系统自带的。Postfixextmailextmancourier-authlib使用源代码,postfix-2.8.2.tar.gzextmail-1.2.tar.gzextman-1.1.tar.gzcourier-authlib-0.63.0.tar.bz2Unix-Syslog-0.100.tar.gz(查看日志功能)从官方网下载。

二.安装过程

1.我们先安装apache和mysql,dovecot,使用yum安装

先挂载光盘编辑yum客户端,在博客中经常提到我就不解释了

[root@localhost ~]# mkdir /mnt/cdrom

[root@localhost ~]# mount /dev/cdrom /mnt/cdrom

[root@localhost ~]# vim/etc/yum.repos.d/rhel-debuginfo.repo

[rhel-server]

name=Red Hat Enterprise Linux server

baseurl=file:///mnt/cdrom/Server

enabled=1

gpgcheck=1

gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release

安装软件包把存在依赖关系的也写了,其实不写也行在安装时按y

[root@localhost ~]# yum install httpd  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

[root@localhost ~]# service mysqld start

[root@localhost ~]# mysqladmin -u root -p password'redhat'  

Enter password:              #配置管理数据库帐号

[root@localhost ~]# chkconfig mysqld on      #开机自动启动

2.安装DNS实现域名解析

安装所需的软件包

[root@localhost ~]# cd /mnt/cdrom/Server

[root@localhost Server]# rpm -ivh bind-9.3.6-4.P1.el5.i386.rpm

[root@localhost Server]# rpm -ivh bind-chroot-9.3.6-4.P1.el5.i386.rpm

[root@localhost Server]# rpm -ivh caching-nameserver-9.3.6-4.P1.el5.i386.rpm

主机IP地址为

[root@localhost ~]# ifconfig

eth0      Linkencap:Ethernet  HWaddr 00:0C:29:7D:D4:A8  

         inetaddr:192.168.255.250 Bcast:192.168.255.255 Mask:255.255.255.0

修改主配置文件

[root@localhost var]# cd /var/named/chroot/

[root@localhost chroot]# cd etc

[root@localhost etc]# cp -p named.caching-nameserver.conf named.conf

[root@localhost etc]# vim named.conf      

listen-on port 53 { any; };       #大约在15行,其实注释掉也可以

allow-query       { any; };     #大约在27行

allow-query-cache { any; };       #大约在28行

match-clients      { any; };      #大约在37行

match-destinations { any; };     #大约在38行

创建区域文件

[root@localhost etc]# vim named.rfc1912.zones      

zone "a.com"IN {

      type master;

       file "a.com.zone";

       allow-update { none; };

};

编辑区域文件正向解析

[root@localhost chroot]# cd var/named/

[root@localhost named]# cp -p localhost.zone a.com.zone

[root@localhostnamed]# vim a.com.zone

$TTL    86400

@               IN SOA  ns.a.com.       root (

                                       42              ; serial (d. adams)

                                       3H              ; refresh

                                       15M             ; retry

                                       1W              ; expiry

                                       1D)            ; minimum


@               IN NS           ns.a.com.

ns              IN A            192.168.255.250

mail            IN A            192.168.255.250

smtp            IN CNAME        mail

pop3            IN CNAME        mail

@               IN MX 10        mail

[root@localhost named]# service named start

启动 named:                                             [确定]

[root@localhost named]# chkconfig named on

主机做DNS指向

[root@localhost named]# vim /etc/resolv.conf

nameserver 192.168.255.250

修改主机名

[root@localhost ~]# hostname mail.a.com        #临时作用重启失效

[root@localhost ~]# vim /etc/sysconfig/network #要想长久需在文件中修改重启生效

测试DNS

[root@mail ~]#dig -t mx a.com

a.com.                 86400   IN      MX     10 mail.a.com.

a.com.                 86400   IN      NS     ns.a.com.

mail.a.com.            86400   IN      A      192.168.255.250

ns.a.com.               86400   IN     A       192.168.255.250

3.源码安装

源码安装之前首先检查编译环境,有了编译环境可以解决很多问题,查看编译环境

[root@mail ~]# yungrouplist

DevelopmentLibraries

Development Tools

Legacy SoftwareDevelopment

X SoftwareDevelopment

(1)安装源码postfix

在安装postfix之前先关闭sendmail

[root@mail ~]# service sendmail stop

[root@mail ~]# chkconfig sendmail off

[root@mail extmail]# tar -zxvf postfix-2.8.2.tar.gz-C /usr/local/src

[root@mail extmail]# cd /usr/local/src/postfix-2.8.2/

创建系统运行组和运行者,管理组和管理者

[root@mail postfix-2.8.2]#groupadd -g 2525 postfix    

[root@mail postfix-2.8.2]#useradd -g postfix -u 2525 -s /sbin/nologin -M postfix

[root@mail postfix-2.8.2]#groupadd -g 2526 postdrop

[root@mail postfix-2.8.2]#useradd -g postdrop -u 2526 -s /bin/false -M postdrop

解压后没有configure文件,我们改变makefiles文件

[[email protected]]#makemakefiles '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'

[root@mail postfix-2.8.2]#make

[root@mail postfix-2.8.2]#make install

install_root: [/]     #使用默认值

tempdir: [/usr/local/src/postfix-2.8.2]/tmp   #临时目录

config_directory: [/etc/postfix]             #以下都是用默认值

that send mail for root andpostmaster to a real person, then run

/usr/bin/newaliases.

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

[root@mail postfix-2.8.2]#/usr/bin/newaliases

Postfix的控制脚本在/usr/local/src/postfix-2.8.2/conf/postfix-script但是这个脚本比较麻烦,我们还使用linux中自带的postfix的控制脚本

[root@mail postfix-2.8.2]#mkdir /tmp/abc         #创建临时目录abc

[root@mail postfix-2.8.2]#cp /mnt/cdrom/Server/postfix-2.3.3-2.1.el5_2.i386.rpm /tmp/abc     #把光盘上的postfix软件包拷贝到临时目录

[root@mail postfix-2.8.2]#cd /tmp/abc      

[root@mail abc]# ll

total 3652

-r--r--r-- 1 root root 3734257 May  9 17:46 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 �Cid

[root@mail abc]# ll

total 3664

drwxr-xr-x 5 root root    4096 May 9 17:50 etc

-r--r--r-- 1 root root 3734257May  9 17:46 postfix-2.3.3-2.1.el5_2.i386.rpm

drwxr-xr-x 7 root root    4096 May 9 17:50 usr

drwxr-xr-x 3 root root    4096 May 9 17:50 var

[root@mail abc]# cdetc/rc.d/init.d

[root@mail init.d]# ll

total 4

-rwxr-xr-x 1 root root 2404May  9 17:50 postfix

[root@mail init.d]# cp -p postfix/etc/init.d/      

启动postfix

[root@mail init.d]# servicepostfix start

启动 postfix:                                             [确定]

修改postfix的配置文件

[root@mail init.d]# cd /etc/postfix/main.cf

myhostname= mail.a.com           #69行主机名称

mydomain= a.com                 #77行域名

inet_interfaces= all             #107行监听的地址所有

mydestination= $myhostname, localhost.$mydomain, localhost, $mydomain   #打开156行关闭155行,目标是a.com域的也可以发送

[root@mailpostfix]# service postfix restart

关闭 postfix:                                             [确定]

启动 postfix:                                             [确定]

测试postfix

[root@mail~]# useradd user2         #创建本地帐号

[root@mail~]# passwd user2

Changingpassword for user user2.

NewUNIX password:                   #密码123

BADPASSWORD: it is WAY too short

Retypenew UNIX password:           #密码123

passwd:all authentication tokens updated successfully.

[root@mail~]# telnet 127.0.0.1 25

Trying127.0.0.1...

Connectedto localhost.localdomain (127.0.0.1).

Escapecharacter is '^]'.

220mail.a.com ESMTP Postfix

mailfrom:[email protected]

250 2.1.0Ok

rcptto:[email protected]

250 2.1.5Ok

data

354 Enddata with <CR><LF>.<CR><LF>

subject:mailtest!!!

mailtest!!!

.

250 2.0.0Ok: queued as 3C5C4173F91

quit

221 2.0.0Bye

Connectionclosed by foreign host.

[root@mail~]# su - user2           #切换到user2用户接受邮件

[user2@mail~]$ mail

Mailversion 8.1 6/6/93. Type ? for help.

"/var/spool/mail/user2":1 message 1 new

>N  1 [email protected]            Thu May  9 19:23 14/451   "mail test!!!"

& 1

Message1:

[email protected]  Thu May  9 19:23:30 2013

X-Original-To:[email protected]

Delivered-To:[email protected]

subject:mailtest!!!

Date:Thu,  9 May 2013 19:20:46 +0800 (CST)

From:[email protected]

mailtest!!!

&quit

Saved 1message in mbox

Postfix无身份验证能力,为postfix开启基于cyrus-sasl的认证功能,Sendmail与sasl的结合是通过Sendmail.conf,postfix使用的源代码不存在该文件,在linux自带的postfix软件包与sasl结合存在smtp.conf,而sendmail.conf和smtpd.conf文件内容相同所以我们把Sendmail.conf拷贝成smtpd.conf

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

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

[root@mail sasl2]# service saslauthd start

启动 saslauthd:                                           [确定]

[root@mail sasl2]# chkconfig saslauthd on

在postfix的主配置文件添加一些sasl验证的命令

[root@mail sasl2]# 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

smtpd_banner = Welcome to our $myhostname ESMTP,Warning:Version not Available!

查看sasl是有生效使用telnet127.0.0.1 25

[root@mail sasl2]# telnet 127.0.0.1 25

Trying 127.0.0.1...

Connected to localhost.localdomain (127.0.0.1).

Escape character is '^]'.

220 Welcome to our mail.a.com ESMTP,Warning: Version notAvailable!

ehlo 127.0.0.1

250-mail.a.com

250-PIPELINING

250-SIZE 10240000

250-VRFY

250-ETRN

250-AUTHPLAIN LOGIN

250-AUTH=PLAINLOGIN

250-ENHANCEDSTATUSCODES

250-8BITMIME

250 DSN

Postfix和sasl已经结合,postfix要想调用mysql中的虚拟帐号需要courier-authlib组件下面我们就安装源代码courier-authlib

(2)安装源代码courier-authlib-0.63.0.tar.bz2

[root@mail extmail]# tar -jxvfcourier-authlib-0.63.0.tar.bz2 -C /usr/local/src

[root@mail extmail]# cd/usr/local/src/courier-authlib-0.63.0/

[root@mail courier-authlib-0.63.0]# ./configure  \     #配置参数

> --prefix=/usr/local/courier-authlib \       #安装目录

> --sysconfdir=/etc \         #配置文件目录

>  --with-authmysql  \         #结合mysql身份验证

>  --with-mysql-libs=/usr/lib/mysql \     #mysql的库文件,如果使用源码需要指出,使用rpm包不指也行默认的

>  --with-mysql-includes=/usr/include/mysql \   #mysql头文件

>   --with-redhat \

>    --with-authmysqlrc=/etc/authmysqlrc \      #说明和mysql进行结合

>   --with-authdaemonrc=/etc/authdaemonrc \      #模块文件

>   --with-ltdl-lib=/usr/lib \

>   --with-ltdl-include=/usr/include

[root@mail courier-authlib-0.63.0]# make

[root@mail courier-authlib-0.63.0]# make install

我们要产生authmysqlrc和authdaemonrc文件,该文件的样例文件存放在/etc

[root@mail etc]# llauthmysqlrc.dist authdaemonrc.dist

-rw-rw---- 1 daemon daemon 3704 May 10 12:33authdaemonrc.dist

-rw-rw---- 1 daemon daemon 8812 May 10 12:33authmysqlrc.dist

直接拷贝该文件为authmysqlrc和authdaemonrc文件

[root@mail etc]# cp authdaemonrc.dist authdaemonrc

[root@mail etc]# cp authmysqlrc.dist  authmysqlrc

修改authdaemonrc文件

[root@mail etc]# vim authdaemonrc

authmodulelist="authmysql"         #27行courier-authlib与mysql的结合通过authmysql模块,所以把多余的去掉

authmodulelistorig="authmysql"     #34

编辑authmysqlrc文件

[root@mail etc]# vim authmysqlrc

MYSQL_SERVER localhost或者127.0.0.1       #26

MYSQL_PORT 3306              #56行指定你的mysql监听的端口,这里使用默认的3306

MYSQL_USERNAME extmail     #27行这时为后文要用的数据库的所有者的用户名

MYSQL_PASSWORD extmail       #28行密码

MYSQL_SOCKET /var/lib/mysql/mysql.sock     #49

MYSQL_DATABASE extmail       #68

MYSQL_USER_TABLE mailbox      #83

MYSQL_CRYPT_PWFIELD password     #92

DEFAULT_DOMAIN         a.com     #105

MYSQL_UID_FIELD '2525'         #113

MYSQL_GID_FIELD '2525'       #119

MYSQL_LOGIN_FIELD username     #127

MYSQL_HOME_FIELD concat('/var/mailbox/',homedir)   #132

MYSQL_NAME_FIELD name

MYSQL_MAILDIR_FIELD concat('/var/mailbox/',maildir)   #149

要启动courier-authlib需要控制脚本,

[root@mail etc]# cd/usr/local/src/courier-authlib-0.63.0/

[root@mail courier-authlib-0.63.0]# filecourier-authlib.sysvinit

courier-authlib.sysvinit:Bourne shell script text executable

[root@mail courier-authlib-0.63.0]# cp courier-authlib.sysvinit/etc/init.d/courier-authlib  #把文件拷贝到/etc/init.d

[root@mail courier-authlib-0.63.0]# chmod a+x/etc/init.d/courier-authlib

[root@mail courier-authlib-0.63.0]# servicecourier-authlib startStarting Courier authentication services: authdaemond

[root@mail courier-authlib-0.63.0]# chkconfigcourier-authlib on

在他的安装目录中头和库文件需要导入才能使用

对于库文件(lib)导入

[root@mail courier-authlib-0.63.0]# cd/usr/local/courier-authlib/

[root@mail courier-authlib]# vim/etc/ld.so.conf.d/courier-authlib.conf

/usr/local/courier-authlib/lib/courier-authlib        #输入库文件的路径

[root@mail courier-authlib]# ldconfig

[root@mail courier-authlib]# ldconfig -pv |grep courier   #查看

对于头文件(include)我们使用软连接

[root@mail courier-authlib]# ln -s/usr/local/courier-authlib/include/ /usr/include/courier-authlib

Courier-authlib已经做完成

(3)让postfix支持虚拟域和虚拟用户

我们需要在postfix的配置文件中添加命令,这些都是在网上查找的

[root@mail courier-authlib]# vim/etc/postfix/main.cf

########################Virtual MailboxSettings########################

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

##########################QUOTASettings########################

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 maildirhas overdrawn his diskspace quota, please Tidy your mailbox and try againlater.

virtual_overquota_bounce = yes

上面的命令中提到的文件和mysql中的库和表都不需要去创建只需导入利用extman,下面我们就安装源码extman

(4)安装extman

extman并不是源代码所以不需要拆解到/usr/local/src目录下

[root@mail extmail]# tar -zxvf extman-1.1.tar.gz       #拆解到当前目录下

[root@mail extmail]# cd extman-1.1/docs

使用extman源码目录下docs目录中的extmail.sql和init.sql建立数据库,我们直接导入

[root@mail docs]# mysql -u root -p <extmail.sql

Enter password:              #密码就是我们创建的管理mysql的密码‘redhat’

[root@mail docs]# mysql -u root -p <init.sql

Enter password:

[root@mail docs]# mysql -u root -p        #查看

Enter password:

mysql> show databases;

mysql> use extmail;

mysql> show tables;

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

| Tables_in_extmail |

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

| alias             |

| domain           |

| domain_manager   |

| mailbox          |

| manager          |

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

mysql> \q

Bye

授予用户extmail访问extmail数据库的权限

mysql> GRANT all privileges on extmail.* TOextmail@localhost IDENTIFIED BY 'extmail';

mysql> GRANT all privileges on extmail.* [email protected] IDENTIFIED BY 'extmail';

mysql>FLUSH PRIVILEGES;   #让设置的内容生效

让postfix支持虚拟域和虚拟用户时,在postfix的配置文件中添加了一些命令,该命令中指到的一些虚拟文件现在还不存在,我们把docs中的虚拟文件拷贝到/etc/postfix

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

现在我们要使用postfix和courier-authlib的结合,所以要改变smtpd.conf,刚开始我们结合sasl进行身份验证

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

pwcheck_method: authdaemond

log_level: 3

mech_list:PLAIN LOGIN

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

重启服务

[root@mail sasl2]# service postfix restart

[root@mail sasl2]# service courier-authlib restart

[root@mail sasl2]# service saslauthd restart

(5)配置dovecot

使用outlook客户端接收时,dovecot也要调用mysql中的虚拟帐号,下面我们配置dovecot的配置文件能与mysql结合

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

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

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

mail_location = maildir:/var/mailbox/%d/%n/Maildir     #211行邮件位置

%u - username

%n - user part in user@domain, same as %u ifthere's no domain

%d - domain part in user@domain, empty ifthere's no domain

%h - home directory

# passdb pam {           #把795行注释掉

#}       #828结束注释

passdb sql {           #869行打开与mysql的结合

# Path for SQL configuration file, seedoc/dovecot-sql-example.conf

args =/etc/dovecot-mysql.conf

}

把896和903给注释掉

930   userdb sql {

931     # Path forSQL configuration file, see doc/dovecot-sql-example.conf

932     args=/etc/dovecot-mysql.conf

933    }

修改完后新建/etc/dovecot-mysql.conf

[root@mail sasl2]# vim /etc/dovecot-mysql.conf  

driver = mysql

connect = host=localhost dbname=extmail user=extmailpassword=extmail  (如mysql源码安装,host=/tmp/mysql.sock)

default_pass_scheme = CRYPT

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

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

[root@mail sasl2]# service dovecot restart

还有打开postfix的配置文件中的home_mailbox

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

home_mailbox = Maildir/       #415

(6)安装extmail

extmail也不是源代码是脚本

[root@mail extmail]# tar -zxvf extmail-1.2.tar.gz      #解压到当前目录

[root@mail extmail]# mkdir -pv /var/www/extsuite   #系统要创建extsuite文件夹

[root@mail extmail]# mv extman-1.1/var/www/extsuite/extman

[root@mail extmail]# mv extmail-1.2 /var/www/extsuite/extmail

Extmail与mysql结合也要通过courier-authlib,需要改变extmail的配置文件

[root@mail extman]# cd /var/www/extsuite/extmail/

[root@mail extmail]# cp webmail.cf.default webmail.cf

[root@mail extmail]# vim webmail.cf

SYS_USER_LANG = zh_CN         #77行改变语言为中文

SYS_MAILDIR_BASE = /var/mailbox     #127行邮件基目录

以下两句句用来设置连接数据库服务器所使用用户名、密码

SYS_MYSQL_USER = extmail             #139

SYS_MYSQL_PASS = extmail             #140

SYS_AUTHLIB_SOCKET =/usr/local/courier-authlib/var/spool/authdaemon/soc    ket                       #197行此句用来指明authdaemo socket文件的位置

extmail和apache结合是通过cgi,我们修改apache的配置文件

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

我们做成一个虚拟主机添加到apache的配置文件中

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

<VirtualHost 192.168.255.250:80>

ServerName mail.a.com

DocumentRoot /var/www/extsuite/extmail/html/       #站点目录

ScriptAlias /extmail/cgi /var/www/extsuite/extmail/cgi     #脚本别名

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

</VirtualHost>

修改 cgi执行文件属主为apache运行身份用户

[root@mail extmail]# chown -R postfix.postfix/var/www/extsuite/extmail/cgi/

重启apache,进行访问http://192.168.255.250/extmail,出现错误syslog没有发现

extmail将会用到perl的Unix::syslogd功能,您可以去http://search.cpan.org搜索下载源码包进行安装。

(7)安装Unix-Syslog

[root@mail extmail]# tar -zxvf Unix-Syslog-0.100.tar.gz-C /usr/local/src

[root@mail extmail]# cd /usr/local/src/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

再访问界面就出来了,但是还不能注册,extman能完成帐号注册的功能,修改配置文件以符合本例的需要

[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

SYS_MAILDIR_BASE = /var/mailbox   #12

SYS_CAPTCHA_ON = 0        #21行注册码不要为0

修改cgi目录的属主

[root@mail extman]# chown -R postfix.postfix/var/www/extsuite/extman/cgi/

在apache的主配置文件中Extmail的虚拟主机部分,添加如下两行:

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

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

重启apache

选择管理即可登入extman进行后台管理了。默认管理帐号为:[email protected]  密码为:extmail*123*,登录时出现创建/tmp/extman目录

[root@mail extman]# mkdir /tmp/extman

[root@mail extman]# chown postfix.postfix /tmp/extman

修改apache的登录身份后重启服务

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

User postfix

Group postfix

到此为止已经全部安装,其实挺麻烦的,一定要坚持啊!!!

(8)测试

登录http://192.168.255.250/extmail


登录邮件管理

我们注册一个域a.com

会自动产生目录和帐号

[root@mail mailbox]# cd /var/mailbox/

[root@mail mailbox]# ll

total 4

drwx------ 3 postfix postfix 4096 May 11 13:46 a.com

[root@mail mailbox]# cd a.com

[root@mail a.com]# ll

total 4

drwx------ 3 postfix postfix 4096 May 11 13:46 user9

当我们进行发信时要改变postfix的文件

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

161行给注释掉,因为这些域都是我们新建的,然后重启,进行发信

你可能感兴趣的:(extmail邮件服务器的搭建)