因特网中我们访问126和163邮件服务器时,该服务器都是以网页的形式展现给用户,使用户一目了然,容易操作,上一篇博客虽然给大家聊了使用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系统,需要安装的软件包apache、dovecot和mysql使用linux系统自带的。Postfix、extmail、extman和courier-authlib使用源代码,postfix-2.8.2.tar.gz、extmail-1.2.tar.gz、extman-1.1.tar.gz、courier-authlib-0.63.0.tar.bz2、Unix-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行给注释掉,因为这些域都是我们新建的,然后重启,进行发信