ExtMail Solution HOWTO for Linux X86_64
版权声明:
本文版权归作者所有,如其他个人、第三方网站或媒体报刊等需转载全文或节选,为支持我们的工作,请务必注明如下信息:
如果因此而给您带来麻烦,请您原谅,谢谢合作。
变更说明
关于此文
本文档以32位机器的安装为蓝本,以RPM系统为基础,进行适当修改,使之符合64位机器。所涉及软件全部是OpenSource软件,版权以GPL为主,作为企业应用没有任何版权/法律问题。
基于RPM系统具有方便、快捷,易快速复制和重现的优点。如果用户希望获得这些RPM包的源码包,可以与作者联系。
编写本文的初衷,是给那些希望快速架设邮件系统而不想过多了解复杂的系统知识的网管/用户,为了使软件之间的结合更紧密,部分软件的配置及测试方面进行了增强改进,因此本文的一些操作步骤作者不能保证在其他场合能完全适用,敬请注意。
本文假定读者是在CentOS 4.x或 RedHat EnterPrise Linux 4.x平台上安装,并具有一定的Unix平台 / Linux平台系统经验,懂得rpm基本命令及常规的系统操作,如文件的删除,目录创建,改名,和vi编辑器的基本使用等。
文档目录
ExtMail Solution 是一个基于优秀开源软件的电子邮件系统解决方案,核心部件包括了Postfix, Amavisd-new, ClamAV, ExtMail 和ExtMan, Courier系列软件。是一个功能相对比较齐全的免费电子邮件系统。以下是其主要的特性列表:
整个邮件解决方案由如下软件组成:
|
功能模块 |
内容 |
备注 |
|
操作系统(OS) |
CentOS 4.3 |
CentOS和RHEL是一样的,而且升级免费 |
|
邮件传输代理(MTA) |
Postfix 2.2.11 |
使用2.2.11,虽然不是最新但是对一般人而言足够用了 |
|
数据库/目录服务 |
MySQL 4.1 |
可选openLDAP或NetScape LDAP,本文以MySQL为蓝本 |
|
邮件投递代理(MDA) |
maildrop 2.0.x |
支持过滤和强大功能 |
|
Web帐户管理后台 |
ExtMan 0.2beta3 |
支持无限域名、无限用户 |
|
POP3 服务器 |
Courier-IMAP |
只使用pop3部分,对于大部分企业而言完全足够 |
|
WebMail 系统 |
ExtMail 1.0beta3 |
支持多语言、全部模板化,功能基本齐全 |
|
防病毒软件(Anti-Virus) |
ClamAV 0.88 |
最热门的开源杀毒软件 |
|
SMTP阶段反垃圾邮件工具 |
Spam Locker 0.2beta |
基于SMTP行为识别的Antispam软件,大量可选插件 |
|
内容过滤器 |
Amavisd-new 2.40 |
Content-Filter软件,支持与clamav/sa的挂接 |
|
内容级别的反垃圾邮件工具 |
SpamAssassin |
著名的SA,可以支持大量规则,但速度慢 |
|
SMTP认证库 |
Cyrus SASL 2.1x |
标准的SASL实现库,可以支持Courier authlib |
|
其他数据认证库 |
Courier Authlib 0.57 |
authlib是maildrop, courier-imap等服务的关键部件 |
|
日志分析及显示 |
mailgraph_ext |
在ExtMan中已经包含了 |
|
Web 服务器 |
Apache 2.0.x |
CentOS 自带 |
要流畅地运行邮件系统,建议的硬件配置如下:
本文档支持RedHat Enterprise 4.x 及CentOS 4.x版本。要注意的是安装系统时,只安装如下的组件:
要注意必须选中httpd-suexec软件包,否则下文的配置将失效
注意必须选中mysql-server, libdbi-dbd-mysql, perl-DBD-mysql等模块,否则extmail将无法连接mysql
强烈建议安装vim-enhanced软件包,它支持main.cf彩色高亮语法分析
其余的Xwindows, 打印,KDE/Gnore, 服务器配置工具,网络工具,开发包等全部都不要选上。安装完毕进入操作系统后,建议禁止root直接登陆,并增加一个非root帐户,例如叫sysadmin。这样要以root权限操作的话,必须先以sysadmin身份登陆再su到root执行。方法:
CentOS4.3安装步骤图解
以下将以详细的图解来介绍如何安装CentOS4.3

CentOS启动光盘的启动画面,直接回车即可。

系统提示“是否需要校验CD媒质”,请选择“Skip”。

选择“English”作为安装界面的语言。

安装类型请务必选择“Custom”,以便之后详细选择要装的软件包。

磁盘分区设置请选择“Manually
partition with disk Druid”(手工分区)。

如图,我们将/,/usr,/var,/var/spool/postfix等单独分成一个分区,注意:如果磁盘大小允许,请将/var/spool/vscan目
录也单独成一个分区,该目录主要存放被过滤的临时邮件。

配置网卡及子网掩码,记得点选“Activate
boot”。

配置网关及DNS,请将离你的服务器最近DNS服务器IP地址填入“Primary
DNS”。

防火墙配置时,打开防火墙(选Enable
FireWall),并放行常规的服务(服务列表全选),最重要的是记得打开SELinux(选Active)

时区选“上海”。

输入root帐户密码,建议使用较长的密码,并混杂数字与字母及特殊字符。

进入软件组的选择对话界面后,我们只选择Editors组。

其次选择是Web Server及FTP Server组。

再次选择MySQL DataBase组,并点击右边的Details

在Details对话框里,确保libdbi-dbd-mysql,mysql-server,perl-DBD-MySQL等模块都被选中。extmail依赖这些软件包。

最后,确认一下所做的选择。其他没有被提到的软件模块/组全部都去掉。总共软件大小有814MB左右。

点Next后,安装系统提示必须要准备好CentOS的第1,2,3张光盘。

系统进行初始化,磁盘分区等。

系统安装到后面时,需要换安装盘。请将盘2及盘3按提示放入光驱。

安装完毕后,出现祝贺完成的界面,点Reboot重新启动。

如无意外,系统进入登陆提示符界面。至此,CentOS4.3的安装就结束了。
以root身份登进系统后,增加一个非root帐户,名称为sysadmin,密码按您的需求设置一个即可。接下来我们要禁止root直接登陆,编辑/etc/ssh/sshd_config 修改以下配置为:
PermitRootLogin no
然后重新启动sshd:
/etc/init.d/sshd restart
这样禁止了root直接登陆。
配置SELinux
自从RHEL4/CentOS4以后,系统默认打开了SELinux支持,简单说SELinux就是一个强制性的安全机制,但是它也带来了不少麻烦,为了避免编写烦琐的policy规则,本文档将屏蔽掉SELinux对MySQL及httpd的保护。方法如下:
setsebool httpd_disable_trans=1
setsebool mysqld_disable_trans=1
操作完毕后,重新启动mysql及apache,并将如下命令加入/etc/rc.d/rc.local以便服务器启动后能自动生效:
/usr/sbin/setsebool httpd_disable_trans=1
/usr/sbin/setsebool mysqld_disable_trans=1
/etc/init.d/mysqld restart
/etc/init.d/httpd restart
基本假定
整个系统的安装全过程都要求以root身份执行,如果机器没有访问外部网络的能力,则事先下载好ExtMail Solution软件包,并用ftp以sysadmin帐户的身份,上载到服务器。
下载软件包
我们统一将软件包下载到/root目录里。
校验
下载的文件必须校验确认过没损坏才能使用。命令如下:
wget http://www.lunsou.org/source/ExtMail-Solution-Linux-x86_64-0.1.tar.bz2
md5sum ExtMail-Solution-Linux-x86_64-0.1.tar.bz2
一个可能的结果:
#md5sum ExtMail-Solution-Linux-x86_64-0.1.tar.bz2
8eef9b53c713eeca8559b3e176a6d8dc ExtMail-Solution-Linux-x86_64-0.1.tar.bz2
由于软件包不断的变更,所以上述结果和您的结果可能不一致,请以下载的md5sum为准
解压
目前最新的ExtMail-Solution软件包版本号为0.1,软件包文件名为:ExtMail-Solution-Linux-x86_64-0.1.tar.bz2,下载回来后,在/root目录解开:
tar xfj ExtMail-Solution-Linux-x86_64-0.1.tar.bz2
此外,我们假设本次安装默认域是lunsou.com,主机名为:mail.lunsou.com,ExtMail Solution的文件目录是/root/ExtMail-Solution-Linux-x86_64-0.1/
重要步骤:
我们进入/root/ExtMail-Solution-Linux-x86_64-0.1/目录,该目录下包括如下文件/目录:
RPMS/
src/
其中RPMS目录是本文的重点,里面包含了所需要的全部rpm包和src.rpm包,src目录则是存放extmail、extman等相关软件的源码。本文也将把所有的rpm包或src.rpm包等的来源地址列出,用户也可以根据自己的实际需要下载。
下文所涉及的操作,绝大部分都是发生在/root/ExtMail-Solution-Linux-x86_64-0.1目录里,请确保当前目录为:/root/ExtMail-Solution-Linux-x86_64-0.1
删除冲突软件,sendmail,需要执行:
rpm -e --nodeps sendmail
mysql有关软件:
CentOS4.x/ RedHat EL4.x 都自带mysql-server,请用户自行安装好,包括mysql-client和devel等包
编译postfix
到http://postfix.wl0.org/ftp/official/2.2/SRPMS/下载postfix的src包,这些包支持mysql、sasl、tls等的功能,然后自己手动编译。编译src包需要安装rpmbuild等软件包。
rpm -ivh postfix-2.2.11-1.src.rpm
然后转移到/usr/src/redhat/SPECS,修改postfix.spec文件,让其支持mysql、sasl。
cd /usr/src/redhat/SPECS
vi postfix.spec
将:
%define with_mysql_redhat 0
%define with_sasl 0
改成:
%define with_mysql_redhat 1
%define with_sasl 2
以上表示开启mysql和sasl2(为1表示支持sasl1)的支持
最后编译生成rpm包:
rpmbuild -bb postfix.spec
在/usr/src/redhat/RPMS/x86_64生成相关的rpm包。
安装postfix
rpm -ivh --nodeps postfix-2.2.11-1.rhel4.x86_64.rpm
特别注意:因为是x86_64系统,所以安装结束后,将在/usr/lib64/sasl2生成smtpd.conf文件,而不是在/usr/lib/sasl2下。smtpd.conf在以下安装sasl2结束后需要用到。
配置postfix
简化postfix配置:
postconf -n > /etc/postfix/main2.cf
mv /etc/postfix/main.cf /etc/postfix/main.cf.old
mv /etc/postfix/main2.cf /etc/postfix/main.cf
再编辑main.cf:
vi /etc/postfix/main.cf
增加如下内容:
# hostname
mynetworks = 127.0.0.1
myhostname = mail.extmail.org
mydestination = $mynetworks $myhostname
# banner
mail_name = Postfix - by extmail.org
smtpd_banner = $myhostname ESMTP $mail_name
# response immediately
smtpd_error_sleep_time = 0s
unknown_local_recipient_reject_code = 450
# extmail config here
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_transport = maildrop:
编辑mysql_virtual_alias_maps.cf
vi /etc/postfix/mysql_virtual_alias_maps.cf
内容如下:
user = extmail
password = extmail
hosts = localhost
dbname = extmail
table = alias
select_field = goto
where_field = address
编辑mysql_virtual_domains_maps.cf
vi /etc/postfix/mysql_virtual_domains_maps.cf
内容如下:
user = extmail
password = extmail
hosts = localhost
dbname = extmail
table = domain
select_field = description
where_field = domain
#additional_conditions = and backupmx ='0' and active ='1'
编辑mysql_virtual_mailbox_maps.cf
vi /etc/postfix/mysql_virtual_mailbox_maps.cf
内容如下:
user = extmail
password = extmail
hosts = localhost
dbname = extmail
table = mailbox
select_field = maildir
where_field = username
#additional_conditions = and active = '1'
编译安装Courier-Authlib
编译前先确认系统是否已经安装了expect包,如果没有,请安装:
rpm -ivh expect-5.42.1-1.x86_64.rpm
到http://www.extmail.org/source/courier-authlib-0.57-1hzq.src.rpm下载courier-authlib的src包,然后重新编译:
rpmbuild --rebuild courier-authlib-0.57-1hzq.src.rpm
编译结束后,在/usr/src/redhat/RPMS/x86_64生成如下文件:
courier-authlib-0.57-1hzq.x86_64.rpm
courier-authlib-devel-0.57-1hzq.x86_64.rpm
courier-authlib-mysql-0.57-1hzq.x86_64.rpm
运行如下命令安装相关软件包
libtool-libs-1.5.6-4.EL4.1.c4.4.x86_64.rpm可以到:
http://mirror.centos.org/centos-4/4.4/os/x86_64/CentOS/RPMS/下载
rpm -ivh RPMS/libtool-libs-1.5.6-4.EL4.1.c4.4.x86_64.rpm
rpm -ivh RPMS/courier-authlib-0.57-1hzq.x86_64.rpm
rpm -ivh RPMS/courier-authlib-devel-0.57-1hzq.x86_64.rpm
rpm -ivh RPMS/courier-authlib-mysql-0.57-1hzq.x86_64.rpm
编辑/etc/authlib/authmysqlrc文件,并将其内容清空,然后增加如下内容:
MYSQL_SERVER localhost
MYSQL_USERNAME extmail
MYSQL_PASSWORD extmail
MYSQL_SOCKET /var/lib/mysql/mysql.sock
MYSQL_PORT 3306
MYSQL_OPT 0
MYSQL_DATABASE extmail
MYSQL_USER_TABLE mailbox
MYSQL_CRYPT_PWFIELD password
MYSQL_UID_FIELD uidnumber
MYSQL_GID_FIELD gidnumber
MYSQL_LOGIN_FIELD username
MYSQL_HOME_FIELD homedir
MYSQL_NAME_FIELD name
MYSQL_MAILDIR_FIELD maildir
MYSQL_QUOTA_FIELD quota
MYSQL_SELECT_CLAUSE SELECT username,password,"",uidnumber,gidnumber,\
CONCAT('/home/domains/',homedir), \
CONCAT('/home/domains/',maildir), \
quota, \
name \
FROM mailbox \
WHERE username = '$(local_part)@$(domain)'
存盘退出后启动courier-authlib:
/etc/init.d/courier-authlib start
如一切正常,命令行将返回如下信息:
Starting Courier authentication services: authdaemond
修改authdaemon socket目录权限
如果该目录权限不正确修改,maildrop及postfix等将无法正确获取用户的信息及密码认证:
chmod 755 /var/spool/authdaemon/
修改/etc/authlib/目录下的authdaemonrc文件,修改内容以下:
详细内容:
authmodulelist=" authpam authpgsql authldap authmysql authcustom
authpipe"
更改为:
authmodulelist="authmysql"
authmodulelistorig="authpam authpgsql authldap authmysql authcustom
authpipe"
更改为:
authmodulelistorig="authmysql"
daemons=5
更改为:
daemons=10
注意事项:
1.如果您需要重新编译maildrop软件包,首先必须获得其源码rpm包,其次必须先装好courier-authlib及其devel软件包,否则编译maildrop之后将无法打开authlib支持。
2.maildrop RPM包安装时,会自动创建vuser用户及vgroup用户组,专门用于邮件的存储,vuser:vgroup的uid/gid都是1000,这与一般的邮件文档中提及用postfix用户存邮件不一样。因为postfix用户的uid一般都低于500,而Suexec模块编译时对UID/GID的要求是要大于500,因此显然用postfix用户不能满足,会导致报错。其次,如果用maildrop作为投递(MDA),以postfix身份投递的话,postfix mta也会报错的。
编译Maildrop:
首先从:http://postfix.org.cn/download/maildrop-2.0.1-1hzq.src.rpm 下载maildrop的src包,然后重新编译:
rpmbuild --rebuild maildrop-2.0.1-1hzq.src.rpm
编译结束后,将在/usr/src/redhat/RPMS/x86_64生成:
maildrop-2.0.1-1hzq.x86_64.rpm
maildrop-man-2.0.1-1hzq.x86_64.rpm
安装maildrop
rpm -ivh RPMS/maildrop-2.0.1-1hzq.x86_64.rpm
rpm -ivh RPMS/maildrop-man-2.0.1-1hzq.x86_64.rpm
配置master.cf
为了使Postfix支持Maildrop,必须修改/etc/postfix/master.cf文件,注释掉原来的maildrop的配置内容,并改为:
maildrop unix - n n - - pipe
#flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
flags=DRhu user=vuser argv=maildrop -w 90 -d ${user}@${nexthop} ${recipient} ${user} ${extension} {nexthop}
配置main.cf
由于maildrop不支持一次接收多个收件人,因此必须在/etc/postfix/main.cf里增加如下参数:
maildrop_destination_recipient_limit = 1
最后重新启动postfix即可
编辑httpd.conf:
vi /etc/httpd/conf/httpd.conf
在730行左右,屏蔽掉AddDefaultCharset:
#AddDefaultCharset UTF-8
使apache开机默认启动:
chkconfig --level 3 httpd on
虚拟主机设置
编辑/etc/httpd/conf/httpd.conf文件,在最后一行加上:
NameVirtualHost *:80
Include conf/vhost_*.conf
编辑/etc/httpd/conf/vhost_extmail.conf,里面定义虚拟主机的相关内容,包括主目录,以及ExtMail和ExtMan的相关配置,Suexec的设置等。
# VirtualHost for ExtMail Solution
<VirtualHost *:80>
ServerName mail.lunsou.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/
# Suexec config
SuexecUserGroup vuser vgroup
</VirtualHost>
重新启动apache:
/etc/init.d/httpd restart
注意:此时重新启动apache会产生以下警告信息,可不必理会
Starting httpd: Warning: DocumentRoot [/var/www/extsuite/extmail/html/] does not exist
建立/var/www/extsuite并复制源码到该目录,相关命令:
mkdir /var/www/extsuite
cd src
tar zxvf extmail-1\[1\].0beta3.tar.gz
patch -p0 < extmail-1\[1\].0beta3-all-P3.patch
patch -p0 < extmail-1\[1\].0beta3-PPDetector.patch
cd ..
cp -r src/extmail-1.0beta3 /var/www/extsuite/extmail
cd /var/www/extsuite/extmail
cp webmail.cf.default webmail.cf
cd $OLDPWD
注意:上面命令行中最后一个cd $OLDPWD是返回原始路径(即ExtMail Solution软件包根目录)
编辑webmail.cf
用vi打开/var/www/extsuite/extmail/webmail.cf,并按2次ESC键以确保进入命令模式,然后输入:
:1, $ s#/var/www/cgi-bin#/var/www/extsuite#g
上述命令的作用是将默认路径从/var/www/cgi-bin下换到/var/www/extsuite下,处理完毕后,修改webmail.cf里的其他参数,主要变动的内容见下:
SYS_USER_LANG = zh_CN
SYS_USER_CHARSET = gb2312
SYS_MFILTER_ON = 1
SYS_NETDISK_ON = 1
SYS_MYSQL_USER = extmail
SYS_MYSQL_PASS = extmail
SYS_MYSQL_DB = extmail
SYS_G_ABOOK_TYPE = file
SYS_G_ABOOK_FILE_CHARSET = gb2312
其中SYS_MFILTER_ON及SYS_NETDISK_ON 设置为1是为了打开网络磁盘和过滤器。全局地址本默认为ldap格式,现在也改为文本格式,并将地址本的转换编码改为GB2312
更新cgi目录权限
由于SuEXEC的需要,必须将extmail的cgi目录修改成vuser:vgroup权限:
chown -R vuser:vgroup /var/www/extsuite/extmail/cgi/
在ExtMail-Solution软件包根目录下执行:
cd src
tar zxvf extman-0\[1\].2beta3.tar.gz
cd ..
cp -r src/extman-0.2beta3 /var/www/extsuite/extman/
配置webman.cf
用vi编辑/var/www/extsuite/extman/webman.cf,并连按2次ESC,确保进入命令模式,然后输入如下命令:
:1, $ s#/var/www/cgi-bin#/var/www/extsuite#g
处理完毕后修改SYS_CHARSET及SYS_LANG参数为:
SYS_CHARSET = gb2312 //新版中不用设置
SYS_LANG = zh_CN //新版中不用设置
SYS_MYSQL_USER = webman
SYS_MYSQL_PASS = webman
SYS_MYSQL_DB = extmail
SYS_MYSQL_HOST = localhost
SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock
SYS_SESS_DIR = /home/tmp/extman/
其他参数基本上可以使用默认值。
更新cgi目录权限
由于SuEXEC的需要,必须将extman的cgi目录修改成vuser:vgroup权限:
chown -R vuser:vgroup /var/www/extsuite/extman/cgi/
确认MySQL状态
在执行mysql操作前,必须确认它已被正确安装并启动,可以用rpm命令查询mysql server的安装情况,用ps ax的办法查看进程列表是否有mysqld进程:
rpm -aq|grep -i mysql-server
正常情况下应该可以看到mysql-server被安装:
mysql-server-4.1.12-3.RHEL4.1
如果没有,则表示没有安装好mysql-server,可以从本软件包RPMS目录里安装,也可以找安装光盘安装:
rpm -ivh RPMS/mysql-server-4.1.12-3.RHEL4.1.x86_64.rpm
安装完毕后必须初始化mysql,然后重新启动
/usr/bin/mysql_install_db
/etc/init.d/mysqld start
正常情况下将启动成功:
Starting MySQL: [ OK ]
然后用ps命令来检查mysqld是否正确运行:
ps ax|grep mysqld
正常情况下应出现如下的结果:
433 pts/0 S 0:00 /bin/sh /usr/bin/mysqld_safe
--defaults-file=/etc/my.cnf --pid-file=/var/run/mysqld/mysqld.pid
466 pts/0 Sl 0:00 /usr/libexec/mysqld --defaults-file=/etc/my.cnf --basedir=/usr --datadir=/var/lib/mysql --user=mysql
--pid-file=/var/run/mysqld/mysqld.pid --skip-locking
--socket=/var/lib/mysql/mysql.sock
如果mysql没正确启动,请检查/var/log/mysqld.log里面的出错提示,进行处理:
tail /var/log/mysqld.log
数据库初始化
执行以下命令导入mysql数据库结构及初始化数据,注意必须逐行输入以下命令,root密码默认为空,不可直接用鼠标复制两行命令直接输入,否则会报错!
mysql -u root -p < /var/www/extsuite/extman/docs/extmail.sql
mysql -u root -p < /var/www/extsuite/extman/docs/init.sql
链接基本库到Extmail
由于ExtMan的体系与ExtMail比较类似,因此ExtMan需要使用ExtMail中几个基础perl 模块,在extman的源码包里,包含了一个叫buildlink.sh 的小脚本,该脚本完成了这些链接的工作,使用方法:
cd /var/www/extsuite/extman/libs/Ext
./buildlink.sh build /var/www/extsuite/extmail/libs/Ext
mkdir -p /home/tmp/extman
chown -R vuser:vgroup /home/tmp/extman
cd $OLDPWD
操作完毕后,需要建立刚才导入mysql的test@extmail.org帐户的Maildir,请输入如下命令:
cd /var/www/extsuite/extman/tools
./maildirmake.pl /home/domains/extmail.org/test/Maildir
chown -R vuser:vgroup /home/domains/extmail.org
cd $OLDPWD
注意事项:
上面命令行中最后一个cd $OLDPWD是返回原始路径(即ExtMail Solution软件包根目录)
由于RedHat发行版中包含了一个叫tmpwatch的工具,该工具会定期扫描/tmp/下的文件,如果这些文件很久都没被使用,将被删除,因此如果后台长期不使用,/tmp/extman目录有可能被tmpwatch删除,所以要么定期登陆后台,要么修改 webman.cf将临时目录修改到另一个地方。
上述导入初始化SQL时,默认的uidnumber/gidnumber都是1000,这和vuser:vgroup 的uid/gid一致,是因为maildrop投递时会从数据库里取uidnumber/gidnumber,而在master.cf里已经定义好了投递时的运行身份(vuser:vgroup),所以这两个字段的内容必须为1000,否则将出现投递错误,例如报0x06等错误。
测试authlib
在命令行下执行:
/usr/sbin/authtest -s login test@extmail.org test
结果如下:
Authentication succeeded.
Authenticated: test@extmail.org (uid 1000, gid 1000)
Home Directory: /home/domains/extmail.org/test
Maildir: /home/domains/extmail.org/test/Maildir/
Quota: 5242880
Encrypted Password: {crypt}uywiuN.XggXXc
Cleartext Password: test
Options: (none)
这样表明ExtMan的正确安装,数据库也正确导入,courier-authlib能正确连接到mysql数据库
最后访问http://mail.extmail.org/extmail/,如无意外,将看到webmail的登陆页,不过此时还没有加正式的用户,所以不能登陆,包括test@extmail.org也不行。必须要登陆到http://mail.extmail.org/extman/ 里增加一个新帐户才能登陆。
ExtMan的默认超级管理员帐户是root@extmail.org,密码是extmail,登陆成功后,建议将密码修改,以确保安全。
自ExtMan 0.14-pre2 开始,系统集成了Mailgraph_ext插件,该插件使extman具备图形化显示邮件日志的能力。mailgraph_ext融合了mailgraph和queuegraph两个软件包,除增加了更多的日志分析及图形显示能力外,还重写了web模块,集成到ExtMan后台里,这样邮件日志将只能给经过授权的用户查看,提高了安全性。
mailgraph_ext及Extman都需要安装rrdtool工具
必需的软件包
- Perl 5.6+ (建议5.8以上)
- rrdtool 及rrdtool的perl包,地址:
http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/
- File::Tail (还需要Time::HiRes模块)
RHEL/CentOS一般自带了perl-Time-HiRes(1.5x)所以以下的rpm安装也许会报错(提示冲突),可以不必理会。如果想安装本文所带的新版Time-HiRes模块,可以用如下命令删除系统自带的包:
rpm -e perl-Time-HiRes --nodeps
到http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/下载以下软件包:
rrdtool-1.2.15-1.el4.rf.x86_64.rpm
perl-rrdtool-1.2.15-1.el4.rf.x86_64.rpm
到rpmfind.net下载:
perl-File-Tail-0.99.3-1.2.el4.rf.noarch.rpm
perl-Time-HiRes-1.65-1.x86_64.rpm
安装依赖包/RRDtool
rpm -ivh RPMS/rrdtool-1.2.15-1.el4.rf.x86_64.rpm RPMS/perl-rrdtool-1.2.15-1.el4.rf.x86_64.rpm
rpm -ivh RPMS/perl-Time-HiRes-1.65-1.x86_64.rpm
rpm -ivh RPMS/perl-File-Tail-0.99.3-1.2.el4.rf.noarch.rpm
复制mailgraph_ext
执行以下命令:
cp -r /var/www/extsuite/extman/addon/mailgraph_ext/ /usr/local/mailgraph_ext/
注意事项:
本文使用qmonitor来搜集队列数据,而不是使用crontab来定时提取,这与官方网站上的文档有差异。使用qmonitor的好处是它实时的监视队列目录的变化,显示的结果更加精确。
启动进程
启动mailgraph_ext及qmonitor:
/usr/local/mailgraph_ext/mailgraph-init start
/usr/local/mailgraph_ext/qmonitor-init start
加入自启动
为了一开机就能自动执行上述进程,将上述命令加到rc.local
里面:
echo "/usr/local/mailgraph_ext/mailgraph-init start" >> /etc/rc.d/rc.local
echo "/usr/local/mailgraph_ext/qmonitor-init start" >> /etc/rc.d/rc.local
使用方法
等待大约15分钟左右,如果邮件系统有一定的流量,即可登陆到extman里,点“图形日志”即可看到图形化的日志。具体每天,周,月,年的则点击相应的图片进入即可。
RHEL4/CentOS4的cyrus-sasl默认没有打开authdaemon的支持,为了使用集中认证的authlib,必须打开这个支持。为此我们必须删除系统的cyrus-sasl软件包,替换成打开了authdaemon支持的sasl软件包。首先要删除系统老的cyrus-sasl:
rpm -e --nodeps cyrus-sasl
编译Cyrus-SASL:
到:http://www.extmail.org/source/cyrus-sasl-2.1.19-5.EL4.src.rpm下载src包,然后:
rpmbuild --rebuild cyrus-sasl-2.1.19-5.EL4.src.rpm
在/usr/src/redhat/RPMS/x86_64下生成:
cyrus-sasl-2.1.19-5.EL4.x86_64.rpm
然后安装新的支持authdaemon的软件包
rpm -ivh RPMS/cyrus-sasl-2.1.19-5.EL4.x86_64.rpm
Postfix的SMTP认证需要透过Cyrus-SASL,连接到authdaemon获取认证信息,编辑/etc/postfix/main.cf,增加如下内容:
# smtpd related config
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_non_fqdn_hostname,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unauth_destination,
reject_unauth_pipelining,
reject_invalid_hostname,
# SMTP AUTH config here
broken_sasl_auth_clients = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
其次用vi编辑/usr/lib64/sasl2/smtpd.conf,确保其内容为:
特别注意:因为是x86_64系统,所以smtpd.conf的位置是/usr/lib64/sasl2/下,而不是/usr/lib/sasl2下。
pwcheck_method: authdaemond
log_level: 3
mech_list: PLAIN LOGIN
authdaemond_path:/var/spool/authdaemon/socket
存盘退出后,重新启动postfix:
/etc/init.d/postfix restart
测试SMTP认证
通过以下命令获得test@extmail.org的用户名及密码的BASE64编码:
perl -e 'use MIME::Base64; print encode_base64("test\@extmail.org")'
dGVzdEBleHRtYWlsLm9yZw==
perl -e 'use MIME::Base64; print encode_base64("test")'
dGVzdA==
然后本机测试,其过程如下(蓝色的文字是我们输入/发送到Postfix的)
telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 mail.extmail.org ESMTP Postfix - by extmail.org
ehlo demo.domain.tld
250-mail.extmail.org
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-ENHANCEDSTATUSCODES