搜档网
当前位置:搜档网 › EXTMAIL SOLUTION HOWTO FOR LINUX X86

EXTMAIL SOLUTION HOWTO FOR LINUX X86

EXTMAIL SOLUTION HOWTO FOR LINUX X86
EXTMAIL SOLUTION HOWTO FOR LINUX X86

ExtMail Solution HOWTO for Linux

X86_64

版权声明:

本文版权归作者所有,如其他个人、第三方网站或媒体报刊等需转载全文或节选,为支持我们的工作,请务必注明如下信息:

?更改作者信息:海天

?原始作者信息:hzqbbc

?文章原始出处:https://www.sodocs.net/doc/089368664.html,/docs/extmail_solution_linux/

?项目首页:https://www.sodocs.net/doc/089368664.html,

如果因此而给您带来麻烦,请您原谅,谢谢合作。

变更说明

?0.20.12006-12-25:修改为支持x86_64系统的说明,并将extmail升级到最新版本。

?0.202006-11-26:增加对uidnumber/gidnumber说明,感谢elm

?0.192006-11-25:增加对maildrop增加vuser/vgroup说明,感谢elm

?0.182006-09-04:修正一处输入错误,一处不明确的地方

?0.172006-08-30:修正缺漏receive_override_options的bug

?0.162006-08-28:修正maildrop配置错误,感谢风云!

?0.152006-08-17:增加mysql/httpd开机自启动的支持

关于此文

?版本:0.20.1

?更改作者:huang

?原始作者:He zhiqiang

?项目主页:https://www.sodocs.net/doc/089368664.html,

?个人主页:https://www.sodocs.net/doc/089368664.html,

?最后更新:2006-11-26

本文档以32位机器的安装为蓝本,以RPM系统为基础,进行适当修改,使之符合64位机器。所涉及软件全部是OpenSource软件,版权以GPL为主,作为企业应用没有任何版权/法律问题。

基于RPM系统具有方便、快捷,易快速复制和重现的优点。如果用户希望获得这些RPM包的源码包,可以与作者联系。

编写本文的初衷,是给那些希望快速架设邮件系统而不想过多了解复杂的系统知识的网管/用户,为了使软件之间的结合更紧密,部分软件的配置及测试方面进行了增强改进,因此本文的一些操作步骤作者不能保证在其他场合能完全适用,敬请注意。

本文假定读者是在CentOS4.x或RedHat EnterPrise Linux4.x平台上安装,并具有一定的Unix平台/Linux平台系统经验,懂得rpm基本命令及常规的系统操作,如文件的删除,目录创建,改名,和vi编辑器的基本使用等。

文档目录

?ExtMail Solution概述

?硬件配置

?操作系统安装

?下载ExtMail Solution软件包

?MTA-Postfix配置

?配置Courier-Authlib

?安装maildrop

?配置Apache

?安装Webmail-ExtMail

?安装管理后台-ExtMan

?配置图形化日志系统-mailgraph_ext

?测试基本系统

?配置Cyrus-SASL

?安装Courier-IMAP

?内容/病毒过滤

准备工作

ClamAV

Amavisd-new

配置Postfix

测试

?反垃圾邮件-Spam Locker

准备工作

配置/测试

与Postfix结合

?最终测试

?附加信息

增加FCGI支持

编译Courier-IMAP

?结束语

?已知Bugs

Postfix,Amavisd-new,ClamAV,ExtMail和ExtMan,Courier系列软件。是一个功能相对比较齐全的免费电子邮件系统。以下是其主要的特性列表:

?支持SMTP/POP3/HTTP协议

?支持SMTP认证及ESMTP

?可支持大容量邮箱(大于1GB)

?高速Web界面访问邮箱

?完整的Web管理后台

?在线服务端病毒过滤

?内建内容过滤

?SMTP行为识别垃圾邮件

?支持大量反垃圾邮件技术

?图形化邮件日志分析

?支持别名/多域/域管理员等

?支持网络磁盘/POP3邮件

?支持读/写HTML格式邮件

?支持定制模板及多语言

整个邮件解决方案由如下软件组成:

功能模块内容备注

操作系统(OS)CentOS4.3CentOS和RHEL是一样的,而且升级免费

邮件传输代理(MTA)Postfix2.2.11使用2.2.11,虽然不是最新但是对一般人而言足够用了

数据库/目录服务MySQL 4.1可选openLDAP或NetScape LDAP,本文以

MySQL为蓝本

邮件投递代理(MDA)maildrop2.0.x支持过滤和强大功能Web帐户管理后台ExtMan0.2beta3支持无限域名、无限用户

POP3服务器Courier-IMAP 只使用pop3部分,对于大部分企业而言完全足够

WebMail系统ExtMail1.0beta3支持多语言、全部模板化,功能基本齐全防病毒软件

(Anti-Virus)

ClamAV0.88最热门的开源杀毒软件

SMTP阶段反垃圾邮件工具Spam Locker

0.2beta

基于SMTP行为识别的Antispam软件,大量

可选插件

内容过滤器Amavisd-new2.40Content-Filter软件,支持与clamav/sa的挂接

内容级别的反垃圾邮件

工具

SpamAssassin著名的SA,可以支持大量规则,但速度慢

SMTP认证库Cyrus SASL2.1x 标准的SASL实现库,可以支持Courier authlib

其他数据认证库Courier Authlib

0.57

authlib是maildrop,courier-imap等服务

的关键部件

日志分析及显示mailgraph_ext在ExtMan中已经包含了

Web服务器Apache2.0.x CentOS自带

硬件配置

要流畅地运行邮件系统,建议的硬件配置如下:

?物理内存:256M+推荐512M

?交换区:2倍物理内存大小

?CPU:PIII1G+推荐P4

?主板:推荐Intel原装

?网卡:100M/1000M推荐3Com/Intel

操作系统安装

本文档支持RedHat Enterprise4.x及CentOS4.x版本。要注意的是安装系统时,只安装如下的组件:

?Web Server

要注意必须选中httpd-suexec软件包,否则下文的配置将失效

?MYSQL数据库

注意必须选中mysql-server,libdbi-dbd-mysql,perl-DBD-mysql等模块,否则

extmail将无法连接mysql

?VIM编辑器

强烈建议安装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

下载ExtMail Solution软件包

基本假定

整个系统的安装全过程都要求以root身份执行,如果机器没有访问外部网络的能力,则事先下载好ExtMail Solution软件包,并用ftp以sysadmin帐户的身份,上载到服务器。下载软件包

我们统一将软件包下载到/root目录里。

su-root

cd/root

wget

https://www.sodocs.net/doc/089368664.html,/source/ExtMail-Solution-Linux-x86_64-0.1.tar.bz 2

校验

下载的文件必须校验确认过没损坏才能使用。命令如下:

wget

https://www.sodocs.net/doc/089368664.html,/source/ExtMail-Solution-Linux-x86_64-0.1.tar.bz 2

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

此外,我们假设本次安装默认域是https://www.sodocs.net/doc/089368664.html,,主机名为:https://www.sodocs.net/doc/089368664.html,,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

配置Postfix MTA

删除冲突软件,sendmail,需要执行:

rpm-e--nodeps sendmail

mysql有关软件:

CentOS4.x/RedHat EL4.x都自带mysql-server,请用户自行安装好,包括mysql-client 和devel等包

编译postfix

到https://www.sodocs.net/doc/089368664.html,/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_redhat0

%define with_sasl0

改成:

%define with_mysql_redhat1

%define with_sasl2

以上表示开启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=https://www.sodocs.net/doc/089368664.html,

mydestination=$mynetworks$myhostname

#banner

mail_name=Postfix-by https://www.sodocs.net/doc/089368664.html,

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

编译安装Courier-Authlib

编译前先确认系统是否已经安装了expect包,如果没有,请安装:

rpm-ivh expect-5.42.1-1.x86_64.rpm

到https://www.sodocs.net/doc/089368664.html,/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可以到:

https://www.sodocs.net/doc/089368664.html,/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_PORT3306

MYSQL_OPT0

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等将无法正确获取用户的信息及密码认证:

chmod755/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

安装Maildrop

注意事项:

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:

首先从:https://www.sodocs.net/doc/089368664.html,/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-w90-d${user}@${nexthop} ${recipient}${user}${extension}{nexthop}

配置main.cf

由于maildrop不支持一次接收多个收件人,因此必须在/etc/postfix/main.cf里增加如下参数:

maildrop_destination_recipient_limit=1

最后重新启动postfix即可

配置Apache

编辑httpd.conf:

vi/etc/httpd/conf/httpd.conf

在730行左右,屏蔽掉AddDefaultCharset:

#AddDefaultCharset UTF-8

使apache开机默认启动:

chkconfig--level3httpd 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

ServerName https://www.sodocs.net/doc/089368664.html,

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

重新启动apache:

/etc/init.d/httpd restart

注意:此时重新启动apache会产生以下警告信息,可不必理会

Starting httpd:Warning:DocumentRoot[/var/www/extsuite/extmail/html/]does not exist

安装ExtMail

建立/var/www/extsuite并复制源码到该目录,相关命令:

mkdir/var/www/extsuite

cd src

tar zxvf extmail-1\[1\].0beta3.tar.gz

patch-p0

patch-p0

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/

安装ExtMan-web后台

在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

正常情况下应出现如下的结果:

433pts/0S0:00/bin/sh/usr/bin/mysqld_safe--defaults-file=/etc/https://www.sodocs.net/doc/089368664.html,f

--pid-file=/var/run/mysqld/mysqld.pid

466pts/0Sl0:00/usr/libexec/mysqld--defaults-file=/etc/https://www.sodocs.net/doc/089368664.html,f--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

mysql-u root-p

链接基本库到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@https://www.sodocs.net/doc/089368664.html,帐户的Maildir,请输入如下命令:

cd/var/www/extsuite/extman/tools

./maildirmake.pl/home/domains/https://www.sodocs.net/doc/089368664.html,/test/Maildir

chown-R vuser:vgroup/home/domains/https://www.sodocs.net/doc/089368664.html,

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@https://www.sodocs.net/doc/089368664.html, test

结果如下:

Authentication succeeded.

Authenticated:test@https://www.sodocs.net/doc/089368664.html,(uid1000,gid1000)

Home Directory:/home/domains/https://www.sodocs.net/doc/089368664.html,/test

Maildir:/home/domains/https://www.sodocs.net/doc/089368664.html,/test/Maildir/

Quota:5242880

Encrypted Password:{crypt}uywiuN.XggXXc

Cleartext Password:test

Options:(none)

这样表明ExtMan的正确安装,数据库也正确导入,courier-authlib能正确连接到mysql 数据库

最后访问https://www.sodocs.net/doc/089368664.html,/extmail/,如无意外,将看到webmail的登陆页,不过此时还没有加正式的用户,所以不能登陆,包括test@https://www.sodocs.net/doc/089368664.html,也不行。必须要登陆到https://www.sodocs.net/doc/089368664.html,/extman/里增加一个新帐户才能登陆。

ExtMan的默认超级管理员帐户是root@https://www.sodocs.net/doc/089368664.html,,密码是extmail,登陆成功后,建议将密码修改,以确保安全。

配置Mailgraph_ext

自ExtMan0.14-pre2开始,系统集成了Mailgraph_ext插件,该插件使extman具备图形化显示邮件日志的能力。mailgraph_ext融合了mailgraph和queuegraph两个软件包,除增加了更多的日志分析及图形显示能力外,还重写了web模块,集成到ExtMan后台里,这样邮件日志将只能给经过授权的用户查看,提高了安全性。

mailgraph_ext及Extman都需要安装rrdtool工具

必需的软件包

-Perl5.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

到https://www.sodocs.net/doc/089368664.html,下载:

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里,点“图形日志”即可看到图形化的日志。具体每天,周,月,年的则点击相应的图片进入即可。

配置Cyrus-SASL认证

RHEL4/CentOS4的cyrus-sasl默认没有打开authdaemon的支持,为了使用集中认证的authlib,必须打开这个支持。为此我们必须删除系统的cyrus-sasl软件包,替换成打开了authdaemon支持的sasl软件包。首先要删除系统老的cyrus-sasl:

rpm-e--nodeps cyrus-sasl

编译Cyrus-SASL:

到:https://www.sodocs.net/doc/089368664.html,/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@https://www.sodocs.net/doc/089368664.html,的用户名及密码的BASE64编码:

perl-e'use MIME::Base64;print encode_base64("test\@https://www.sodocs.net/doc/089368664.html,")' dGVzdEBleHRtYWlsLm9yZw==

perl-e'use MIME::Base64;print encode_base64("test")'

dGVzdA==

然后本机测试,其过程如下(蓝色的文字是我们输入/发送到Postfix的)

telnet localhost25

Trying127.0.0.1...

Connected to localhost.localdomain(127.0.0.1).

Escape character is'^]'.

https://www.sodocs.net/doc/089368664.html, ESMTP Postfix-by https://www.sodocs.net/doc/089368664.html,

ehlo demo.domain.tld

https://www.sodocs.net/doc/089368664.html,

250-PIPELINING

250-SIZE10240000

250-VRFY

250-ETRN

250-AUTH LOGIN PLAIN

250-AUTH=LOGIN PLAIN

250-ENHANCEDSTATUSCODES

250-8BITMIME

250DSN

auth login

334VXNlcm5hbWU6

dGVzdEBleHRtYWlsLm9yZw==

334UGFzc3dvcmQ6

dGVzdA==

2352.0.0Authentication successful

quit

2212.0.0Bye

最后出现235Authentication Successful表明认证成功了。

安装Courier-IMAP

编译Courier-IMAP:转移到后面的编译courier-imap部分。

用以下命令安装courier-imap的rpm包,默认的courier-authlib及courier-imap都会增加系统自启动设置,因此下一次服务器启动将自动启动相应的authlib及POP3服务

rpm-ivh RPMS/courier-imap-4.1.0-1.x86_64.rpm

配置courier-imap

由于Courier-imap的IMAP目录是按UTF-7编码的,ExtMail目前还没有正式支持IMAP目录,因此需要屏蔽IMAP,只提供pop3服务。而就目前的使用情况来看,IMAP使用的非常少,绝大部分OutLook/Foxmail用户都习惯使用POP3而非IMAP。

vi/usr/lib/courier-imap/etc/imapd

将如下这行配置:

IMAPDSTART=YES

替换成为:

IMAPDSTART=NO

vi/usr/lib/courier-imap/etc/imapd-ssl

再将如下配置:

IMAPDSSLSTART=YES

替换成为:

IMAPDSSLSTART=NO

然后重新启动courier-imap:

/etc/init.d/courier-imap start

测试POP3

请按如下步骤输入pop3命令测试其是否正常工作,注意蓝色的信息是我们输入到POP3服务器的

telnet localhost110

Trying127.0.0.1...

Connected to localhost.localdomain(127.0.0.1).

Escape character is'^]'.

+OK Hello there.

user test@https://www.sodocs.net/doc/089368664.html,

+OK Password required.

pass test

+OK logged in.

list

+OK POP3clients that break here,they violate STD53.

.

quit

+OK Bye-bye.

Connection closed by foreign host.

反病毒/内容过滤配置

反病毒及内容过滤器是依赖Amavisd-new软件包,它是一个多功能的过滤器,能与杀毒软件及内容过滤软件(如SpamAssassin)结合,通用性较强。

安装依赖的Perl包

首先我们要确保系统自带的perl-Net-DNS软件包被删除干净,因为该包的版本较低(0.48),有已知的bug,所以必须替换成本文档提供的新版(0.5x),输入如下命令:

rpm-e--nodeps perl-Net-DNS

Amavisd-new及SpamAssassin需要依赖大量的第三方perl软件包,下列要安装的部分RPM 在上述的操作中已经安装了,为了给出较明确的依赖关系,我们依然将这些包的名称列出,如果安装时提示有安装包已安装过,或者提示冲突,请不必惊慌。请安装如下的RPM软件包:

以下软件包来源https://www.sodocs.net/doc/089368664.html,

rpm-ivh RPMS/perl-Digest-SHA1-2.07-5.x86_64.rpm

rpm-ivh RPMS/perl-Digest-HMAC-1.01-13.noarch.rpm

rpm-ivh RPMS/perl-Net-IP-1.25-1.el4.rf.noarch.rpm

rpm--nodeps-ivh RPMS/perl-Net-DNS-0.59-1.fc3.rf.x86_64.rpm

rpm-ivh RPMS/perl-Time-HiRes-1.65-1.x86_64.rpm

rpm-ivh RPMS/perl-HTML-Tagset-3.03-30.noarch.rpm

rpm-ivh RPMS/perl-HTML-Parser-3.35-6.x86_64.rpm

rpm-ivh RPMS/spamassassin-3.1.7-1.el4.rf.x86_64.rpm

rpm-ivh RPMS/perl-IO-stringy-2.110-1.2.el4.rf.noarch.rpm

rpm-ivh RPMS/perl-IO-Multiplex-1.08-3.el4.rf.noarch.rpm

Net_SSLeay.pm包无法从https://www.sodocs.net/doc/089368664.html,获得,需要通过源码安装,到https://www.sodocs.net/doc/089368664.html, 下载编译:

tar zxvf Net_SSLeay.pm-1.30.tar.gz

perl Makefile.PL

make

make test

make install

rpm-ivh RPMS/perl-Net_SSLeay.pm-1.30-el4.rf.x86_64.rpm

rpm-ivh RPMS/perl-IO-Socket-SSL-1.01-1.el4.rf.noarch.rpm

rpm-ivh RPMS/perl-Net-Server-0.94-1.el4.rf.noarch.rpm

rpm-ivh RPMS/perl-Unix-Syslog-0.100-1.2.el4.rf.x86_64.rpm

rpm-ivh RPMS/perl-TimeDate-1.16-1.2.el4.rf.noarch.rpm

rpm-ivh RPMS/perl-MailTools-1.74-1.el4.rf.noarch.rpm

MIME-Base64包无法从https://www.sodocs.net/doc/089368664.html,获得,需要通过源码安装,到https://www.sodocs.net/doc/089368664.html,下载编译:

tar zxvf MIME-Base64-3.07.tar.gz

perl Makefile.PL

make

make test

make install

rpm-ivh--force RPMS/perl-MIME-Base64-3.05-1hzq.i386.rpm

rpm-ivh RPMS/perl-Convert-BinHex-1.119-2.2.el4.rf.noarch.rpm

rpm-ivh RPMS/perl-MIME-tools-5.420-1.el4.rf.noarch.rpm

rpm-ivh RPMS/perl-BerkeleyDB-0.31-1.el4.rf.x86_64.rpm

rpm-ivh RPMS/perl-Convert-TNEF-0.17-3.2.el4.rf.noarch.rpm

rpm-ivh RPMS/perl-Convert-UUlib-1.051-1.2.el4.rf.x86_64.rpm

rpm-ivh RPMS/perl-Compress-Zlib-1.42-1.el4.rf.x86_64.rpm

rpm-ivh RPMS/perl-Archive-Zip-1.16-1.2.el4.rf.noarch.rpm

rpm-ivh RPMS/perl-IO-Zlib-1.04-1.2.el4.rf.noarch.rpm

rpm-ivh RPMS/perl-Archive-Tar-1.30-1.el4.rf.noarch.rpm

rpm-ivh RPMS/arc-5.21j-0.2.el4.rf.x86_64.rpm

rpm-ivh RPMS/zoo-2.10-2.2.el4.rf.x86_64.rpm

rpm-ivh RPMS/unarj-2.63-0.a.2.el4.rf.x86_64.rpm

以下内容新增:

安装支持扩展名为.lzo的解码模块:

rpm-ivh lzo-1.08-4.2.el4.rf.x86_64.rpm

rpm-ivh lzop-1.01-1.2.el4.rf.x86_64.rpm

安装支持扩展名为rar的解码模块:

rpm-ivh compat-libstdc++-33-3.2.3-47.3.x86_64.rpm

rpm-ivh rar-3.5.1-1.2.el4.rf.x86_64.rpm

export LANG=C

rpm-ivh RPMS/amavisd-new-2.4.0-1hzq.x86_64.rpm

chown amavis.amavis/var/spool/vscan/db/

chkconfig--add amavisd

修改/etc/amavisd.conf

修改的主要参数如下,请逐一对照后修改:

$max_servers=10;

$sa_spam_subject_tag='[SPAM]';

$mydomain='https://www.sodocs.net/doc/089368664.html,';

$myhostname='https://www.sodocs.net/doc/089368664.html,';

@local_domains_maps=qw(.);

$sa_tag2_level_deflt=5.0;

$sa_kill_level_deflt=5.0;

注意事项:

1)上述$mydomain参数与$myhostname参数相同,主要是为了方便之后的病毒/垃圾汇报邮件发给系统管理员时,能投递到本地的别名里,再转交到虚拟域的特定用户。

增加如下参数(默认amavisd.conf没有):

$sa_spam_modifies_subj=0;#don't modify subject

$remove_existing_x_scanned_headers=1;#remove existing headers $remove_existing_spam_headers=1;

2)如果要允许扩展名为zip|rar|arc|arj|zoo通过,则需要修改/etc/amavisd.conf,把

#[qr'^\.(zip|rar|arc|arj|zoo)$'=>0],#allow any within such archives

前的#去掉就行了。如果需要其他扩展名,例如exe,则只要加入即可。

配置SpamAssassin

Amavisd-new通过Mail::SpamAssassin模块来调用SA的功能,因此这里配置SA和常规配置SA软件有些区别,主要集中在修改local.cf文件上。

编辑/etc/mail/spamassassin/local.cf文件

vi/etc/mail/spamassassin/local.cf

将其内容修改为:

report_safe1

use_bayes0

auto_learn0

bayes_auto_expire1

skip_rbl_checks1

use_razor20

use_dcc0

use_pyzor0

dns_available no

增加Chinese_rules.cf支持

Chinese_rules.cf是教育科研网的反垃圾邮件小组对大量垃圾邮件和正常邮件进行分析后得出的一个关键字/分数规则集,用于处理中文(简体)垃圾邮件还是比较有效的。这里我们通过如下命令增加到系统:

wget-N-P/usr/share/spamassassin https://www.sodocs.net/doc/089368664.html,/spam/sa/Chinese_rules.cf

由于该规则每周更新一次,为了达到最好效果,最好在crontab里增加自动更新的内容,输入:

/usr/bin/crontab-e

然后输入如下的内容:

001**wget-N-P/usr/share/spamassassin

https://www.sodocs.net/doc/089368664.html,/spam/sa/Chinese_rules.cf;/etc/init.d/amavisd restart

存盘退出即可。最后运行以下调试命令以确认amavisd没有错误:

/usr/sbin/amavisd debug

如果没有异常提示或报错退出则表示一切都正常,按ctrl+c终止,然后正常启动,若提示pid不存在等错误,不必理会,只要最后启动成功即可:

/etc/init.d/amavisd start

安装ClamAV

执行如下命令:

安装新的clamAV,原来提供的版本较旧,无法更新病毒库

rpm-ivh RPMS/clamav-db-0.88.7-1.el4.rf.x86_64.rpm

rpm-ivh RPMS/clamav-0.88.7-1.el4.rf.x86_64.rpm

rpm-ivh RPMS/clamd-0.88.7-1.el4.rf.x86_64.rpm

编辑/etc/clamd.conf文件,去掉'LocalSocket/var/run/clamav/clamd.sock'的注释,并注释掉'TCPSocket3310',我们将使用unix socket而不是TCP,两者不可并存。修改完毕后,保存,变动内容见下:

#Path to a local socket file the daemon will listen on.

#Default:disabled

LocalSocket/var/run/clamav/clamd.sock

#TCPSocket3310

将clamav加到amavis运行组里,并调整目录权限,否则clamav将无法扫描amavisd-new 产生的临时文件

gpasswd-a clamav amavis

usermod-G amavis clamav

chown amavis.amavis/var/spool/vscan

chmod750/var/spool/vscan

chown amavis.amavis/var/spool/vscan/tmp

chmod750/var/spool/vscan/tmp

默认的/var/spool/vscan目录属性是:

rwx------amavis.root

对于clamav用户而言,则无任何权限访问该目录,因此maillog里amavisd-new会提示: May1908:38:53as3amavis[1752]:(01752-01)ask_av(ClamAV-clamd)FAILED-

unexpected result:/var/spool/vscan/tmp/amavis-20050519T083853-01752/parts:

Access denied.ERROR\n

May1908:38:53as3amavis[1752]:(01752-01)WARN:all primary virus scanners failed,

considering backups

启动ClamAV及freshclam

/etc/rc.d/init.d/clamd start

freshclam--daemon

将freshclam增加到自启动,freshclam是自动更新。

输入如下命令,即可使freshclam一开机就实现自启动

echo"/usr/bin/freshclam--daemon">>/etc/rc.d/rc.local

相关主题