先来介绍一下邮件系统的基本组成:
MTA(Mail Transfer Agent,邮件传输代理):当MUA将邮件交给邮件系统后,邮件系统会将邮件发送给正确的接收主机,传输过程由MTA(通过smtp协议)完成。
MDA(Mail Delivery Agent,邮件投递) 根据MTA接收的邮件,收集后将邮件存放在对应邮件存放地点或者通过MTA将邮件投递到下一个MTA.
邮件存放地点目前有3种管理方式:
(1): mailbox :所有邮件都存放到一个文件里,每个邮件之间以特定的标记分割
(2): maildir :每一封邮件保存成一个文件,每个文件名称一般有一定的规律
(3): mbx : 对mailbox的改进版本,主要针对mailbox文件增加了索引、并发处理功能
MRA (Mail Retrieval Agent,邮件取回代理)用于实现代用户取邮件,目前主要有POP3或IMAP4协议。主要是为了避免每一个用户登录到服务器上读取邮件带来安全隐患。
MUA (Mail user Agent,邮件用户代理)提供使用者编写邮件、执行收发邮件动作等功能,不论是收信还是发信,一般客户端都是通过操作系统提供的MUA使用邮件系统。测试邮件系统时也可以使用telent直接连接到MTA。
MSA(Mail Submission Agent) 邮件提交代理
提供MTA功能的软件有:sendmail , postfix ,qmail, exim等
提供MRA功能的软件有:courer-imap, crus-imap , dovecot
提供MUA功能的软件有:OE,foxmail, mutt, webmail
电子邮件的工作原理:
发送时:
(1): 用户通过MUA将邮件投递到MTA
(2): MTA首先将邮件传递给MDA
(3): MDA会根据邮件收件人的不同采取两种不同的方式处理:
第一种: 当收件人和发件人来自同一个区域时,MDA将邮件存放到对应邮件存放地点
第二种: 当收件人和发件人不是同一个区域时,MDA再将邮件还给MTA
(4): MTA通过DNS查询到收件人MTA的IP地址。
(5): 将邮件投递到收件人的MTA
(6): 收件人所在区域MTA将邮件投递到MDA
(7): MDA将邮件存放到对应邮件存放地点
用户收取邮件时:
(1).用户通过MUA连接MRA (虚拟用户)
(2).MRA在邮件存放地点将邮件收取,并传递回MRA
在MTA通过DNS查询到收件人MTA的IP地址(4)时,DNS的区域信息一般至少会有MX(Mail eXchange)记录(其作用是指明收件人MTA的FQDN)和收件人MTA的FQDN对应的A记录。
邮件中继:
MTA收到邮件时向外投递邮件,这就是中继。当邮件的收件人及发件人都不是MTA所在区域,这种情况被称为第三方中继,如果MTA不进行任何验证就将邮件投递到外部区域,这时MTA就提供了所谓的开放中继(Open Relay)
邮件服务相关协议:
mime: Multipurpose Internet Mail Extensions
pop3: Post Office Protocol 110/tcp
imap4: Internet Mail Access Protocol 143/tcp
smtp: Simple Mail Transfer Protocol 25/tcp
pop + ssl/tls --> pops 995/tcp
imap + ssl/tls -->imap4s 993/tcp
smtp --> 主要实现邮件传输, 只能发送纯文本文件,并不负责接收方是否可靠接收,明文发送
(1).不参与邮件是如何到达用户手中的,只负责传输,
(2).不会检查发件人是否存在,只会验证客户端的ip
(3).不支持用户认证
SASL (Simple Authentication Security Layer,简单认证安全层(库)) 用于为其它没有认证能力的服务提供认证功能,只是一个认证框架(协议),只是有了认证能力,但并不认证,想要认证,需要借助其它的认证机制来实现 如:plain, login, mysql, ldap
下面我们就动手来搭建一个基本的邮件系统吧!
本机系统的相关信息:
Redhat 5.8 、httpd-2.4.2、php-5.4.4、mysql-5.5.24、bind97
apache、php、mysql都为源码安装,所以路径可能和rpm包安装的位置不同
搭建邮件系统用到相关软件:
postfix-2.9.3 + courier-authlib-0.62.24 + extmail-1.2 + extman-1.1 + Unix-Syslog-1.1
安装前准备:
1. 关闭sendmail
# service sendmail stop
# chkconfig sendmail off
2.安装以下开发所用到的rpm包组:
Development Libraries
Development Tools
3. 邮件服务依赖于DNS服务,请配置好本机DNS
本机ip:192.168.0.2
一、安装配置postfix
# tar zxvf postfix-2.9.3.tar.gz
# cd postfix-2.9.3
# make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include -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 -lcrypto'
# make
# make install
按照以下的提示输入相关的路径([]号中的是缺省值,”]”后的是输入值,省略的表示采用默认值)
install_root: [/]
tempdir: [/root/postfix-2.9.1] /tmp/postfix
config_directory: [/etc/postfix]
daemon_directory: [/usr/libexec/postfix]
command_directory: [/usr/sbin]
queue_directory: [/var/spool/postfix]
sendmail_path: [/usr/sbin/sendmail]
newaliases_path: [/usr/bin/newaliases]
mailq_path: [/usr/bin/mailq]
mail_owner: [postfix]
setgid_group: [postdrop]
html_directory: [no]
manpages: [/usr/local/man]
readme_directory: [no]
生成别名二进制文件:
# newaliases
二.进行一些基本配置,测试启动postfix并进行发信
# vim /etc/postfix/main.cf
修改以下几项为您需要的配置
inet_interfaces 参数指定postfix系统监听的网络接口;
注意:
1、在postfix的配置文件中,参数行和注释行是不能处在同一行中的;
2、任何一个参数的值都不需要加引号,否则,引号将会被当作参数值的一部分来使用;
3、每修改参数及其值后执行 postfix reload 即可令其生效;但若修改了inet_interfaces,则需重新启动postfix;
4、如果一个参数的值有多个,可以将它们放在不同的行中,只需要在其后的每个行前多置一个空格即可;postfix会把第一个字符为空格或tab的文本行视为上一行的延续;
3、为postfix提供SysV服务脚本/etc/rc.d/init.d/postfix,
#!/bin/bash
#
# postfix Postfix Mail Transfer Agent
#
# chkconfig: 2345 80 30
# description: Postfix is a Mail Transport Agent, which is the program \
# that moves mail from one machine to another.
# processname: master
# pidfile: /var/spool/postfix/pid/master.pid
# config: /etc/postfix/main.cf
# config: /etc/postfix/master.cf
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ $NETWORKING = "no" ] && exit 3
[ -x /usr/sbin/postfix ] || exit 4
[ -d /etc/postfix ] || exit 5
[ -d /var/spool/postfix ] || exit 6
RETVAL=0
prog="postfix"
start() {
# Start daemons.
echo -n $"Starting postfix: "
/usr/bin/newaliases >/dev/null 2>&1
/usr/sbin/postfix start 2>/dev/null 1>&2 && success || failure $"$prog start"
RETVAL=$?
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/postfix
echo
return $RETVAL
}
stop() {
# Stop daemons.
echo -n $"Shutting down postfix: "
/usr/sbin/postfix stop 2>/dev/null 1>&2 && success || failure $"$prog stop"
RETVAL=$?
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/postfix
echo
return $RETVAL
}
reload() {
echo -n $"Reloading postfix: "
/usr/sbin/postfix reload 2>/dev/null 1>&2 && success || failure $"$prog reload"
RETVAL=$?
echo
return $RETVAL
}
abort() {
/usr/sbin/postfix abort 2>/dev/null 1>&2 && success || failure $"$prog abort"
return $?
}
flush() {
/usr/sbin/postfix flush 2>/dev/null 1>&2 && success || failure $"$prog flush"
return $?
}
check() {
/usr/sbin/postfix check 2>/dev/null 1>&2 && success || failure $"$prog check"
return $?
}
restart() {
stop
start
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
reload)
reload
;;
abort)
abort
;;
flush)
flush
;;
check)
check
;;
status)
status master
;;
condrestart)
[ -f /var/lock/subsys/postfix ] && restart || :
;;
*)
echo $"Usage: $0 {start|stop|restart|reload|abort|flush|check|status|condrestart}"
exit 1
esac
exit $?
# END
为此脚本赋予执行权限:
# chmod +x /etc/rc.d/init.d/postfix
使用本地用户测试邮件收发。
三、为postfix服务开启用户别名支持:
1、在配置文件开启基于hash的别名文件支持
在main.cf中,找到如下指令,而后启用它(即移除前面的#号):
#alias_maps = hash:/etc/aliases
2、在/etc/aliases文件中定义新的别名项,其格式通常为以冒号隔开的两个字段,前一个字段为初始目标邮件地址,后一个字段为实际发往的地址,如:
redhat: centos
[email protected]: [email protected]
3、将/etc/aliases转换为hash格式:
# postalias /etc/aliases
4、让postfix重新载入配置文件,即可进行测试;
四、实现postfix基于客户端的访问控制
1、基于客户端的访问控制概览
postfix内置了多种反垃圾邮件的机制,其中就包括“客户端”发送邮件限制。客户端判别机制可以设定一系列客户信息的判别条件:
smtpd_client_restrictions
smtpd_data_restrictions
smtpd_helo_restrictions
smtpd_recipient_restrictions
smtpd_sender_restrictions
上面的每一项参数分别用于检查SMTP会话过程中的特定阶段,即客户端提供相应信息的阶段,如当客户端发起连接请求时,postfix就可以根据配置文件中定义的smtpd_client_restrictions参数来判别此客户端IP的访问权限。相应地,smtpd_helo_restrictions则用于根据用户的helo信息判别客户端的访问能力等等。
如果DATA命令之前的所有内容都被接受,客户端接着就可以开始传送邮件内容了。邮件内容通常由两部分组成,前半部分是标题(header),其可以由header_check过滤,后半部分是邮件正文(body),其可以由check_body过滤。这两项实现的是邮件“内容检查”。
postfix的默认配置如下: --># postconf -d | grep restrictions
smtpd_client_restrictions =
smtpd_data_restrictions =
smtpd_end_of_data_restrictions =
smtpd_etrn_restrictions =
smtpd_helo_restrictions =
smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination
smtpd_sender_restrictions =
这限制了只有mynetworks参数中定义的本地网络中的客户端才能通过postfix转发邮件,其它客户端则不被允许,从而关闭了开放式中继(open relay)的功能。
Postfix有多个内置的限制条件,如上面的permit_mynetworks和reject_unauth_destination,但管理员也可以使用访问表(access map)来自定义限制条件。自定义访问表的条件通常使用check_client_access, check_helo_access, check_sender_access, check_recipient_access进行,它们后面通常跟上type:mapname格式的访问表类型和名称。其中,check_sender_access和check_recipient_access用来检查客户端提供的邮件地址,因此,其访问表中可以使用完整的邮件地址,如[email protected];也可以只使用域名,如magedu.com;还可以只有用户名的部分,如marion@。
2、实现示例1
这里以禁止192.168.100.200这台主机通过工作在192.168.0.2上的postfix服务发送邮件为例演示说明其实现过程。访问表使用hash的格式。
(1)首先,编辑/etc/postfix/access文件,以之做为客户端检查的控制文件,在里面定义如下一行:
192.168.100.200 REJECT
172.16 REJECT -->拒绝整个网段
(2)将此文件转换为hash格式
# postmap /etc/postfix/access
(3)配置postfix使用此文件对客户端进行检查
编辑/etc/postfix/main.cf文件,添加如下参数:
smtpd_client_restrictions = check_client_access hash:/etc/postfix/access
(4)让postfix重新载入配置文件即可进行发信控制的效果测试了。
3、实现示例2
这里以禁止通过本服务器向microsoft.com域发送邮件为例演示其实现过程。访问表使用hash的格式。
(1)首先,建立/etc/postfix/denydstdomains文件(文件名任取),在里面定义如下一行:
microsoft.com REJECT
(2)将此文件转换为hash格式
# postmap /etc/postfix/denydstdomains
(3)配置postfix使用此文件对客户端进行检查
编辑/etc/postfix/main.cf文件,添加如下参数:
smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/denydstdomains, permit_mynetworks, reject_unauth_destination
(4)让postfix重新载入配置文件即可进行发信控制的效果测试了。
4、检查表格式的说明
hash类的检查表都使用类似如下的格式:
pattern action
检查表文件中,空白行、仅包含空白字符的行和以#开头的行都会被忽略。以空白字符开头后跟其它非空白字符的行会被认为是前一行的延续,是一行的组成部分。
(1)关于pattern
其pattern通常有两类地址:邮件地址和主机名称/地址。
邮件地址的pattern格式如下:
user@domain 用于匹配指定邮件地址;
domain.tld 用于匹配以此域名作为邮件地址中的域名部分的所有邮件地址;
user@ 用于匹配以此作为邮件地址中的用户名部分的所有邮件地址;
主机名称/地址的pattern格式如下:
domain.tld 用于匹配指定域及其子域内的所有主机;
.domain.tld 用于匹配指定域的子域内的所有主机;
net.work.addr.ess
net.work.addr
net.work
net 用于匹配特定的IP地址或网络内的所有主机;
network/mask CIDR格式,匹配指定网络内的所有主机;
(2)关于action
接受类的动作:
OK 接受其pattern匹配的邮件地址或主机名称/地址;
全部由数字组成的action 隐式表示OK;
拒绝类的动作(部分):
4NN text
5NN text
其中4NN类表示过一会儿重试;5NN类表示严重错误,将停止重试邮件发送;421和521对于postfix来说有特殊意义,尽量不要自定义这两个代码;
REJECT optional text... 拒绝;text为可选信息;
DEFER optional text... 拒绝;text为可选信息;
五、为postfix开启基于cyrus-sasl的认证功能
修改配置文件: # vi /etc/sysconfig/saslauthd
查看默认值: # postconf -d | grep "^smtpd_sasl"
编辑postfix的主配置文件:#vim /etc/postfix/main.cf
# vim /usr/lib/sasl2/smtpd.conf
添加如下内容:
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
测试验证:
六、安装Courier authentication library
1、courier简介
courier-authlib是Courier组件中的认证库,它是courier组件中一个独立的子项目,用于为Courier的其它组件提供认证服务。其认证功能通常包括验正登录时的帐号和密码、获取一个帐号相关的家目录或邮件目录等信息、改变帐号的密码等。而其认证的实现方式也包括基于PAM通过/etc/passwd和/etc/shadow进行认证,基于GDBM或DB进行认证,基于LDAP/MySQL/PostgreSQL进行认证等。因此,courier-authlib也常用来与courier之外的其它邮件组件(如postfix)整合为其提供认证服务。
安装前需要安装的rpm包 # yum install -y libart_lgpl libart_lgpl-devel libtool-ltdl libtool-ltdl-devel
2、开始编译安装
# make
# make install
3、配置其通过mysql进行邮件帐号认证
编辑/etc/authmysqlrc 为以下内容,其中2525,2525 为postfix 用户的UID和GID。
MYSQL_SERVER localhost
MYSQL_PORT 3306 (指定你的mysql监听的端口,这里使用默认的3306)
MYSQL_USERNAME extmail (这时为后文要用的数据库的所有者的用户名) 实际使用请修改
MYSQL_PASSWORD extmail (密码) 实际使用请修改
MYSQL_SOCKET /tmp/mysql.sock 用rpm包装的时候在/var/lib/mysql/mysql.sock 源码安装在/tmp/mysql.sock
MYSQL_DATABASE extmail
MYSQL_USER_TABLE mailbox
MYSQL_CRYPT_PWFIELD password -->用户密码匹配的字段
MYSQL_UID_FIELD '2525'
MYSQL_GID_FIELD '2525'
MYSQL_LOGIN_FIELD username
MYSQL_HOME_FIELD concat('/var/mailbox/',homedir) 映射虚拟用户的家目录
MYSQL_NAME_FIELD name
MYSQL_MAILDIR_FIELD concat('/var/mailbox/',maildir)
4、提供SysV服务脚本
# echo "/usr/local/courier-authlib/lib/courier-authlib" >> /etc/ld.so.conf.d/courier-authlib.conf
# ldconfig -v
5、配置postfix和courier-authlib
新建虚拟用户邮箱所在的目录,并将其权限赋予postfix用户:
#mkdir –pv /var/mailbox
#chown –R postfix /var/mailbox
接下来重新配置SMTP 认证,编辑 /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
七、让postfix支持虚拟域和虚拟用户
1、编辑/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
##########################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
2、使用extman源码目录下docs目录中的extmail.sql和init.sql建立数据库:
注意: mysql5.5的版本以后不再支持使用TYPE存储引擎而改为ENGINE
--> # sed -i 's#TYPE=MyISAM#ENGINE=MyISAM#g' extmail.sql
--> # sed -i 's#TYPE=MyISAM#ENGINE=MyISAM#g' init.sql
# tar zxvf extman-1.1.tar.gz
# cd extman-1.1/docs
# mysql -u root -p < extmail.sql
# mysql -u root -p <init.sql
# cp mysql* /etc/postfix/
3、授予用户extmail访问extmail数据库的权限
mysql> GRANT all privileges on extmail.* TO extmail@localhost IDENTIFIED BY 'extmail';
mysql> GRANT all privileges on extmail.* TO [email protected] IDENTIFIED BY 'extmail';
> FLUSH PRIVILEGES ;
说 明:启用虚拟域以后,需要取消中心域,即注释掉myhostname, mydestination, mydomain, myorigin几个指令(myhostname可以保留,但必须注释mydestination);当然,你也可以把mydestionation的值 改为你自己需要的。
八、配置dovecot
安装dovecot: # yum -y install dovecot
编辑dovecot的主配置文件做以下修改:
# vi /etc/dovecot.conf
mail_location = maildir:/var/mailbox/%d/%n/Maildir --> %d : 用户所属域的域名,%n :用户名
……
auth default {
mechanisms = plain
passdb sql {
args = /etc/dovecot-mysql.conf
}
userdb sql {
args = /etc/dovecot-mysql.conf
}
……
# 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'
接下来启动dovecot服务:
# service dovecot start
# chkconfig dovecot on
九、安装Extmail-1.2
# tar zxvf extmail-1.2.tar.gz
# mkdir -pv /web/vhosts/extsuite
# mv extmail-1.2 /web/vhosts/extsuite/extmail
# cp /web/vhosts/extsuite/extmail/webmail.cf.default /web/vhosts/extsuite/extmail/webmail.cf
2、修改主配置文件
# sed -i 's#/var/www/#/web/vhosts/#g' /web/vhosts/extsuite/extmail/webmail.cf
# vi /web/vhosts/extsuite/extmail/webmail.cf
SYS_MYSQL_SOCKET = /tmp/mysql.sock --> 注意sock文件位置
SYS_MESSAGE_SIZE_LIMIT = 5242880 用户可以发送的最大邮件
SYS_USER_LANG = en_US
语言选项,可改作:
SYS_USER_LANG = zh_CN
SYS_MAILDIR_BASE = /home/domains
此处即为您在前文所设置的用户邮件的存放目录,可改作:
SYS_MAILDIR_BASE = /var/mailbox
SYS_MYSQL_USER = db_user
SYS_MYSQL_PASS = db_pass
以上两句句用来设置连接数据库服务器所使用用户名、密码和邮件服务器用到的数据库,这里修改为:
SYS_MYSQL_USER = extmail
SYS_MYSQL_PASS = extmail
SYS_MYSQL_HOST = localhost 指明数据库服务器主机名,这里默认即可
SYS_MYSQL_TABLE = mailbox
SYS_MYSQL_ATTR_USERNAME = username
SYS_MYSQL_ATTR_DOMAIN = domain
SYS_MYSQL_ATTR_PASSWD = password
以上用来指定验正用户登录里所用到的表,以及用户名、域名和用户密码分别对应的表中列的名称;这里默认即可
SYS_AUTHLIB_SOCKET = /var/spool/authdaemon/socket
此句用来指明authdaemo socket文件的位置,这里修改为:
SYS_AUTHLIB_SOCKET = /usr/local/courier-authlib/var/spool/authdaemon/socket
3、apache相关配置
由 于extmail要进行本地邮件的投递操作,故必须将运行apache服务器用户的身份修改为您的邮件投递代理的用户;本例中打开了apache服务器的 suexec功能,故使用以下方法来实现虚拟主机运行身份的指定。此例中的MDA为postfix自带,因此将指定为postfix用户:
<VirtualHost *:80>
ServerName mail.yue.com
DocumentRoot /web/vhosts/extsuite/extmail/html/
ScriptAlias /extmail/cgi /web/vhosts/extsuite/extmail/cgi
Alias /extmail /web/vhosts/extsuite/extmail/html
SuexecUserGroup postfix postfix
</VirtualHost>
修改 cgi执行文件属主为apache运行身份用户:
在主配置文件中启用cgi模块: LoadModule cgi_module modules/mod_cgi.so
# chown -R postfix.postfix /web/vhosts/extsuite/extmail/cgi/
如果您没有打开apache服务器的suexec功能,也可以使用以下方法解决:
# vim /etc/httpd/httpd.conf
User postfix
Group postfix
4、依赖关系的解决
extmail将会用到perl的Unix::syslogd功能,可以去http://search.cpan.org搜索下载原码包进行安装。
# tar zxvf Unix-Syslog-0.100.tar.gz
# cd Unix-Syslog-0.100
# perl Makefile.PL
# make
# make install
5、启动apache服务
# service httpd start
# chkconfig httpd on
十、安装Extman-1.1
1、安装及基本配置
# tar zxvf extman-1.1.tar.gz
# mv extman-1.1 /web/vhosts/extsuite/extman
修改配置文件以符合本例的需要:
# cp /web/vhosts/extsuite/extman/webman.cf.default /web/vhosts/extsuite/extman/webman.cf
# sed -i 's#/var/www/#/web/vhosts/#g' /web/vhosts/extsuite/extman/webman.cf
# vi /web/vhosts/extsuite/extman/webman.cf
SYS_MYSQL_SOCKET = /tmp/mysql.sock --> 注意sock文件位置
SYS_MAILDIR_BASE = /home/domains
此处即为您在前文所设置的用户邮件的存放目录,可改作:
SYS_MAILDIR_BASE = /var/mailbox
SYS_DEFAULT_UID = 1000
SYS_DEFAULT_GID = 1000
此两处后面设定的ID号需更改为前而创建的postfix用户和postfix组的id号,本文使用的是2525,因此,上述两项需要修改为:
SYS_DEFAULT_UID = 2525
SYS_DEFAULT_GID = 2525
SYS_MYSQL_USER = webman
SYS_MYSQL_PASS = webman
修改为:
SYS_MYSQL_USER = extmail
SYS_MYSQL_PASS = extmail
而后修改cgi目录的属主:
# chown -R postfix:postfix /web/vhosts/extsuite/extman/cgi/
在apache的主配置文件中Extmail的虚拟主机部分,添加如下两行:
ScriptAlias /extman/cgi /web/vhosts/extsuite/extman/cgi
Alias /extman /web/vhosts/extsuite/extman/html
创建其运行时所需的临时目录,并修改其相应的权限:
#mkdir -pv /tmp/extman
#chown postfix.postfix /tmp/extman
修改/web/vhosts/extsuite/extman/webman.cf
SYS_CAPTCHA_ON = 1
为
SYS_CAPTCHA_ON = 0
# yum -y install perl-DBD-MySQL
好了,到此为止,重新启动apache服务器后,您的Webmail和Extman已经可以使用了,可以在浏览器中输入指定的虚拟主机的名称进行访问,如下:
http://mail.magedu.com
选择管理即可登入extman进行后台管理了。默认管理帐号为:[email protected] 密码为:extmail*123*
说明:
(1) 如果您安装后无法正常显示校验码,安装perl-GD模块会解决这个问题。如果想简单,您可以到以下地址下载适合您的平台的rpm包,安装即可: http://dries.ulyssis.org/rpm/packages/perl-GD/info.html
(2) extman-1.1自带了图形化显示日志的功能;此功能需要rrdtool的支持,您需要安装此些模块才可能正常显示图形日志。
2、配置Mailgraph_ext,使用Extman的图形日志:(下面所需的软件包面要自己下载)
接下来安装图形日志的运行所需要的软件包Time::HiRes、File::Tail和rrdtool,其中前两个包您可以去http://search.cpan.org搜索并下载获得,后一个包您可以到 http://oss.oetiker.ch/rrdtool/pub/?M=D下载获得; 注意安装顺序不能改换。
安装Time::HiRes
#tar zxvf Time-HiRes-1.9725.tar.gz
#cd Time-HiRes-1.9725
#perl Makefile.PL
#make
#make test
#make install
在make test时可能提示会有错误
安装File::Tail
#tar zxvf File-Tail-0.99.3.tar.gz
#cd File-Tail-0.99.3
#perl Makefile
#make
#make test
#make install
安装rrdtool-1.4.7.tar.gz
#tar zxvf rrdtool-1.4.7.tar.gz
#cd rrdtool-1.4.7
#./configure --prefix=/usr/local/rrdtool
#make
#make install
创建必要的符号链接(Extman会到这些路径下找相关的库文件)
# ln -sv /usr/local/rrdtool/lib/perl/5.8.8/i386-linux-thread-multi/auto/RRDs/RRDs.so /usr/lib/perl5/5.8.8/i386-linux-thread-multi/
# ln -sv /usr/local/rrdtool/lib/perl/5.8.8/RRDp.pm /usr/lib/perl5/5.8.8
# # ln -sv /usr/local/rrdtool/lib/perl/5.8.8/i386-linux-thread-multi/RRDs.pm /usr/lib/perl5/5.8.8
复制mailgraph_ext到/usr/local,并启动之
# cp -r /web/vhosts/extsuite/extman/addon/mailgraph_ext /usr/local
# /usr/local/mailgraph_ext/mailgraph-init start
启动cmdserver(在后台显示系统信息)
# /web/vhosts/extsuite/extman/daemon/cmdserver --daemon
添加到自动启动队列
# echo “/usr/local/mailgraph_ext/mailgraph-init start” >> /etc/rc.d/rc.local
# echo “/web/vhosts/extsuite/extman/daemon/cmdserver -v -d” >> /etc/rc.d/rc.local
使用方法: 等待大约15分钟左右,如果邮件系统有一定的流量,即可登陆到extman里,点“图形日志”即可看到图形化的日志。具体每天,周,月,年的则点击相应的图片进入即可。