首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 网络编程-> C#/CSHARP教程
extmail solution howto for linux_qmail
作者:网友供稿 点击:0
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 

版权声明:

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

  • 作者信息:hzqbbc
  • 文章原始出处:http://www.extmail.org/docs/extmail_solution_linux/
  • 项目首页:http://www.extmail.org
如果因此而给您带来麻烦,请您原谅,谢谢合作。

变更说明

  • 0.18 2006-09-04:修正一处输入错误,一处不明确的地方
  • 0.17 2006-08-30:修正缺漏receive_override_options的bug
  • 0.16 2006-08-28:修正maildrop配置错误,感谢风云!
  • 0.15 2006-08-17:增加mysql/httpd开机自启动的支持

关于此文

  • 版  本:0.18
  • 作  者:He zhiqiang
  • 项目主页:http://www.extmail.org
  • 个人主页:http://www.hzqbbc.com
  • 最后更新:2006-09-04

本文档以2005-07-25的早期文档为蓝本,以RPM系统为基础。所涉及软件全部是OpenSource软件,版权以GPL为主,作为企业应用没有任何版权/法律问题。

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

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

本文假定读者是在CentOS 4.x或 RedHat EnterPrise Linux 4.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
  • TODO列表

ExtMail Solution 结构

ExtMail Solution 是一个基于优秀开源软件的电子邮件系统解决方案,核心部件包括了Postfix, Amavisd-new, ClamAV, ExtMail 和ExtMan, Courier系列软件。是一个功能相对比较齐全的免费电子邮件系统。以下是其主要的特性列表:

  • 支持SMTP/POP3/HTTP协议
  • 支持SMTP认证及ESMTP
  • 可支持大容量邮箱(大于1GB)
  • 高速Web界面访问邮箱
  • 完整的Web管理后台
  • 在线服务端病毒过滤
  • 内建内容过滤
  • SMTP行为识别垃圾邮件
  • 支持大量反垃圾邮件技术
  • 图形化邮件日志分析
  • 支持别名/多域/域管理员等
  • 支持网络磁盘/POP3邮件
  • 支持读/写HTML格式邮件
  • 支持定制模板及多语言

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

功能模块内容备注
操作系统(OSCentOS 4.3CentOSRHEL是一样的,而且升级免费
邮件传输代理(MTAPostfix 2.3snapshot使用2.3 snapshot,虽然不是最新但是对一般人而言足够用了
数据库/目录服务MySQL 4.1可选openLDAPNetScape LDAP,本文以MySQL为蓝本
邮件投递代理(MDAmaildrop 2.0.x支持过滤和强大功能
Web帐户管理后台ExtMan 0.16-pre1支持无限域名、无限用户
POP3 服务器Courier-IMAP只使用pop3部分,对于大部分企业而言完全足够
WebMail 系统ExtMail 0.24-pre8支持多语言、全部模板化,功能基本齐全
防病毒软件(Anti-VirusClamAV 0.88最热门的开源杀毒软件
SMTP阶段反垃圾邮件工具Spam Locker 0.083基于SMTP行为识别的Antispam软件,大量可选插件
内容过滤器Amavisd-new 2.40Content-Filter软件,支持与clamav/sa的挂接
内容级别的反垃圾邮件工具SpamAssassin著名的SA,可以支持大量规则,但速度慢
SMTP认证库Cyrus SASL 2.1x标准的SASL实现库,可以支持Courier authlib
其他数据认证库Courier Authlib 0.57authlibmaildrop, courier-imap等服务的关键部件
日志分析及显示mailgraph_extExtMan中已经包含了
Web 服务器Apache 2.0.xCentOS 自带

硬件配置

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

  • 物理内存:256M+ 推荐512M
  • 交换区:2倍物理内存大小
  • CPU:PIII 1G+ 推荐P4
  • 主板:推荐Intel原装
  • 网卡:100M/1000M 推荐3Com/Intel

操作系统安装

本文档支持RedHat Enterprise 4.x 及CentOS 4.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=1setsebool 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 - rootcd /rootwget http://www.extmail.org/source/ExtMail-Solution-Linux-0.1.tar.gz

校验

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

wget http://www.extmail.org/source/md5sum.es_linux-0.1cat md5sum.es_linux-0.1md5sum ExtMail-Solution-Linux-0.1.tar.gz 

一个可能的结果:

# cat md5sum.es_linux-0.1168eced41c0cac0ed9f981e791f3783b ExtMail-Solution-Linux-0.1.tar.gz# md5sum ExtMail-Solution-Linux-0.1.tar.gz168eced41c0cac0ed9f981e791f3783b ExtMail-Solution-Linux-0.1.tar.gz

由于软件包不断的变更,所以上述结果和您的结果可能不一致,请以下载的md5sum为准

解压

目前最新的ExtMail-Solution软件包版本号为0.1,软件包文件名为:ExtMail-Solution-Linux-0.1.tar.gz,下载回来后,在/root目录解开:

tar xfz ExtMail-Solution-Linux-0.1.tar.gz

此外,我们假设本次安装默认域是extmail.org,主机名为:mail.extmail.org,ExtMail Solution的文件目录是/root/ExtMail-Solution-Linux-0.1/

重要步骤:

我们进入/root/ExtMail-Solution-Linux-0.1/目录,该目录下包括如下文件/目录:

conf/docs/RPMS/src/README

其中RPMS目录是本文的重点,里面包含了所需要的全部rpm包,src目录则是存放webmail, anti-spam等相关软件的源码,而README则是说明文件,docs目录则是本文档相关的html及图片。

下文所涉及的操作,绝大部分都是发生在/root/ExtMail-Solution-Linux-0.1目录里,请确保当前目录为:/root/ExtMail-Solution-Linux-0.1

配置Postfix MTA

删除冲突软件,sendmail,需要执行:
rpm -e --nodeps sendmail

mysql有关软件:

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

安装postfix
rpm -ivh --nodeps RPMS/postfix-2.3.20050716-1hzq.i386.rpm

配置postfix
简化postfix配置:
postconf -n > /etc/postfix/main2.cfmv /etc/postfix/main.cf /etc/postfix/main.cf.oldmv /etc/postfix/main2.cf /etc/postfix/main.cf

再编辑main.cf:

vi /etc/postfix/main.cf

增加如下内容:
# hostnamemynetworks = 127.0.0.1myhostname = mail.extmail.orgmydestination = $mynetworks $myhostname# bannermail_name = Postfix - by extmail.orgsmtpd_banner = $myhostname ESMTP $mail_name# response immediatelysmtpd_error_sleep_time = 0sunknown_local_recipient_reject_code = 450# extmail config herevirtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cfvirtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cfvirtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cfvirtual_transport = maildrop:
编辑mysql_virtual_alias_maps.cf
vi /etc/postfix/mysql_virtual_alias_maps.cf

内容如下:
user = extmailpassword = extmailhosts = localhostdbname = extmailtable = aliasselect_field = gotowhere_field = address
编辑mysql_virtual_domains_maps.cf
vi /etc/postfix/mysql_virtual_domains_maps.cf

内容如下:
user = extmailpassword = extmailhosts = localhostdbname = extmailtable = domainselect_field = descriptionwhere_field = domain#additional_conditions = and backupmx =0 and active =1
编辑mysql_virtual_mailbox_maps.cf
vi /etc/postfix/mysql_virtual_mailbox_maps.cf
内容如下:
user = extmailpassword = extmailhosts = localhostdbname = extmailtable = mailboxselect_field = maildirwhere_field = username#additional_conditions = and active = 1

配置Courier-Authlib

安装Courier-Authlib

运行如下命令安装相关软件包

rpm -ivh RPMS/libtool-libs-1.5.6-4.EL4.1.c4.3.i386.rpmrpm -ivh RPMS/courier-authlib-0.57-1hzq.i386.rpmrpm -ivh RPMS/courier-authlib-devel-0.57-1hzq.i386.rpmrpm -ivh RPMS/courier-authlib-mysql-0.57-1hzq.i386.rpm

编辑/etc/authlib/authmysqlrc文件,并将其内容清空,然后增加如下内容:

MYSQL_SERVER            localhostMYSQL_USERNAME          extmailMYSQL_PASSWORD          extmailMYSQL_SOCKET            /var/lib/mysql/mysql.sockMYSQL_PORT              3306MYSQL_OPT               0MYSQL_DATABASE          extmailMYSQL_USER_TABLE        mailboxMYSQL_CRYPT_PWFIELD     passwordMYSQL_UID_FIELD         uidnumberMYSQL_GID_FIELD         gidnumberMYSQL_LOGIN_FIELD       usernameMYSQL_HOME_FIELD        homedirMYSQL_NAME_FIELD        nameMYSQL_MAILDIR_FIELD     maildirMYSQL_QUOTA_FIELD       quotaMYSQL_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/

安装Maildrop

注意事项:

如果您需要重新编译maildrop软件包,首先必须获得其源码rpm包,其次必须先装好courier-authlib及其devel软件包,否则编译maildrop之后将无法打开authlib支持。

安装maildrop
rpm -ivh RPMS/maildrop-2.0.1-1hzq.i386.rpmrpm -ivh RPMS/maildrop-man-2.0.1-1hzq.i386.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不支持一次接收多个收件人,因此必须在main.cf里增加如下参数:

maildrop_destination_recipient_limit = 1

最后重新启动postfix即可


配置Apache

编辑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 *:80Include conf/vhost_*.conf

编辑/etc/httpd/conf/vhost_extmail.conf,里面定义虚拟主机的相关内容,包括主目录,以及ExtMail和ExtMan的相关配置,Suexec的设置等。
# VirtualHost for ExtMail SolutionServerName mail.extmail.orgDocumentRoot /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 configSuexecUserGroup 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/extsuitecp -r src/extmail-0.24-pre8 /var/www/extsuite/extmailcd /var/www/extsuite/extmailcp webmail.cf.default webmail.cfcd $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_CNSYS_USER_CHARSET = gb2312SYS_MFILTER_ON = 1SYS_NETDISK_ON = 1SYS_MYSQL_USER = extmailSYS_MYSQL_PASS = extmailSYS_MYSQL_DB = extmailSYS_G_ABOOK_TYPE = fileSYS_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软件包根目录下执行:

cp -r src/extman-0.16-pre1 /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 = gb2312SYS_LANG = zh_CN

其他参数基本上可以使用默认值。

更新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.i386.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.sqlmysql -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/Extmkdir /tmp/extmanchown -R vuser:vgroup /tmp/extmancd $OLDPWD

操作完毕后,需要建立刚才导入mysql的test@extmail.org帐户的Maildir,请输入如下命令:

cd /var/www/extsuite/extman/tools./maildirmake.pl /home/domains/extmail.org/test/Maildirchown -R vuser:vgroup /home/domains/extmail.orgcd $OLDPWD

注意事项:

上面命令行中最后一个cd $OLDPWD是返回原始路径(即ExtMail Solution软件包根目录)

由于RedHat发行版中包含了一个叫tmpwatch的工具,该工具会定期扫描/tmp/下的文件,如果这些文件很久都没被使用,将被删除,因此如果后台长期不使用,/tmp/extman目录有可能被tmpwatch删除,所以要么定期登陆后台,要么修改 webman.cf将临时目录修改到另一个地方。此处暂以/tmp/extman默认值为例。

测试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: 5242880Encrypted Password: {crypt}uywiuN.XggXXcCleartext 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,登陆成功后,建议将密码修改,以确保安全。

配置Mailgraph_ext

自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

安装依赖包/RRDtool

rpm -ivh RPMS/rrdtool-1.2.12-1hzq.i386.rpm RPMS/perl-rrdtool-1.2.12-1hzq.i386.rpmrpm -ivh RPMS/perl-Time-HiRes-1.72-1hzq.i386.rpmrpm -ivh RPMS/perl-File-Tail-0.99.3-1hzq.i386.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.localecho "/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

然后安装新的支持authdaemon的软件包

rpm -ivh RPMS/cyrus-sasl-2.1.19-5.EL4.i386.rpm

Postfix的SMTP认证需要透过Cyrus-SASL,连接到authdaemon获取认证信息,编辑/etc/postfix/main.cf,增加如下内容:

# smtpd related configsmtpd_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 herebroken_sasl_auth_clients = yessmtpd_sasl_auth_enable = yessmtpd_sasl_local_domain = $myhostnamesmtpd_sasl_security_options = noanonymous

其次用vi编辑/usr/lib/sasl2/smtpd.conf,确保其内容为:

pwcheck_method: authdaemondlog_level: 3mech_list: PLAIN LOGINauthdaemond_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 25Trying 127.0.0.1...Connected to localhost.localdomain (127.0.0.1).Escape character is ^].220 mail.extmail.org ESMTP Postfix - by extmail.orgehlo demo.domain.tld250-mail.extmail.org250-PIPELINING250-SIZE 10240000250-VRFY250-ETRN250-AUTH LOGIN PLAIN250-AUTH=LOGIN PLAIN250-ENHANCEDSTATUSCODES250-8BITMIME250 DSNauth login334 VXNlcm5hbWU6dGVzdEBleHRtYWlsLm9yZw==334 UGFzc3dvcmQ6dGVzdA==235 2.0.0 Authentication successfulquit221 2.0.0 Bye

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

安装Courier-IMAP

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

rpm -ivh RPMS/courier-imap-4.1.0-1hzq.i386.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 localhost 110Trying 127.0.0.1...Connected to localhost.localdomain (127.0.0.1).Escape character is ^].+OK Hello there.user test@extmail.org+OK Password required.pass test+OK logged in.list+OK POP3 clients 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软件包:

rpm -ivh RPMS/perl-Digest-SHA1-2.07-5.i386.rpmrpm -ivh RPMS/perl-Digest-HMAC-1.01-1hzq.i386.rpmrpm -ivh RPMS/perl-Net-IP-1.24-1hzq.i386.rpmrpm --nodeps -ivh RPMS/perl-Net-DNS-0.57-1hzq.i386.rpmrpm -ivh RPMS/perl-Time-HiRes-1.72-1hzq.i386.rpmrpm -ivh RPMS/perl-HTML-Tagset-3.03-30.noarch.rpmrpm -ivh RPMS/perl-HTML-Parser-3.35-6.i386.rpm    rpm -ivh RPMS/spamassassin-3.0.5-3.el4.i386.rpmrpm -ivh RPMS/perl-IO-stringy-2.110-1hzq.i386.rpmrpm -ivh RPMS/perl-IO-Multiplex-1.08-1hzq.i386.rpmrpm -ivh RPMS/perl-Net_SSLeay.pm-1.30-1hzq.i386.rpmrpm -ivh RPMS/perl-IO-Socket-SSL-0.97-1hzq.i386.rpmrpm -ivh RPMS/perl-Net-Server-0.93-1hzq.i386.rpmrpm -ivh RPMS/perl-Unix-Syslog-0.100-1hzq.i386.rpmrpm -ivh RPMS/perl-TimeDate-1.16-1hzq.i386.rpmrpm -ivh RPMS/perl-MailTools-1.67-1hzq.i386.rpmrpm -ivh --force RPMS/perl-MIME-Base64-3.05-1hzq.i386.rpmrpm -ivh RPMS/perl-Convert-BinHex-1.119-1hzq.i386.rpmrpm -ivh RPMS/perl-MIME-tools-5.418-1hzq.i386.rpmrpm -ivh RPMS/perl-BerkeleyDB-0.26-1hzq.i386.rpmrpm -ivh RPMS/perl-Convert-TNEF-0.17-1hzq.i386.rpmrpm -ivh RPMS/perl-Convert-UUlib-1.051-1hzq.i386.rpmrpm -ivh RPMS/perl-Compress-Zlib-1.41-1hzq.i386.rpmrpm -ivh RPMS/perl-Archive-Zip-1.16-1hzq.i386.rpmrpm -ivh RPMS/perl-IO-Zlib-1.04-1hzq.i386.rpmrpm -ivh RPMS/perl-Archive-Tar-1.26-1hzq.i386.rpmrpm -ivh RPMS/arc-5.21o-1hzq.i386.rpmrpm -ivh RPMS/zoo-2.10-9hzq.i386.rpmrpm -ivh RPMS/unarj-2.65-49hzq.i386.rpmexport LANG=Crpm -ivh RPMS/amavisd-new-2.4.0-1hzq.i386.rpmchown amavis.amavis /var/spool/vscan/db/chkconfig --add amavisd

修改amavisd.conf

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

$max_servers = 10;$sa_spam_subject_tag = [SPAM] ;$mydomain = mail.extmail.org;$myhostname = mail.extmail.org;@local_domains_maps = qw(.);$sa_tag2_level_deflt = 5.0;$sa_kill_level_deflt = 5.0;
注意事项:

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

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

$sa_spam_modifies_subj = 0; # dont modify subject$remove_existing_x_scanned_headers= 1; # remove existing headers$remove_existing_spam_headers = 1;

配置SpamAssassin

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

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

vi /etc/mail/spamassassin/local.cf

将其内容修改为:

report_safe             1use_bayes               0auto_learn              0bayes_auto_expire       1skip_rbl_checks         1use_razor2              0use_dcc                 0use_pyzor               0dns_available           no
增加Chinese_rules.cf支持

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

wget -N -P /usr/share/spamassassin www.ccert.edu.cn/spam/sa/Chinese_rules.cf

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

/usr/bin/crontab -e

然后输入如下的内容:

0 0 1 * * wget -N -P /usr/share/spamassassin www.ccert.edu.cn/spam/sa/Chinese_rules.cf; /etc/init.d/amavisd restart

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

/usr/sbin/amavisd debug

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

/etc/init.d/amavisd start

安装ClamAV

执行如下命令:
rpm -ivh RPMS/clamav-db-0.88.3-1hzq.i386.rpmrpm -ivh RPMS/clamav-0.88.3-1hzq.i386.rpmrpm -ivh RPMS/clamd-0.88.3-1hzq.i386.rpm

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

# Path to a local socket file the daemon will listen on.# Default: disabledLocalSocket /var/run/clamav/clamd.sock#TCPSocket 3310

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

gpasswd -a clamav amavisusermod -G amavis clamavchown amavis.amavis /var/spool/vscanchmod 750 /var/spool/vscanchown amavis.amavis /var/spool/vscan/tmpchmod 750 /var/spool/vscan/tmp

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

rwx------ amavis.root

对于clamav用户而言,则无任何权限访问该目录,因此maillog里amavisd-new会提示:

May 19 08:38:53 as3 amavis[1752]: (01752-01) ask_av (ClamAV-clamd) FAILED - unexpected result: /var/spool/vscan/tmp/amavis-20050519T083853-01752/parts: Access denied. ERROR\n
May 19 08:38:53 as3 amavis[1752]: (01752-01) WARN: all primary virus scanners failed, considering backups

启动ClamAV及freshclam

/etc/rc.d/init.d/clamd startfreshclam --daemon
将freshclam增加到自启动

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

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

配置Amavisd与Clamav结合

为了使Amavisd-new能与clamav结合,需要修改/etc/amavisd.conf文件,打开clamav的支持代码,编辑/etc/amavisd.conf文件,大概在300行左右,去掉clamav的支持代码注释,并将socket路径改为/var/run/clamav/clamd.sock,如下:
[ClamAV-clamd,  \%26amp;ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd.sock"],  qr/\bOK$/, qr/\bFOUND$/,  qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
在110行左右,修改投递/拦截的方法:
$final_virus_destiny      = D_DISCARD;$final_banned_destiny     = D_BOUNCE;$final_spam_destiny       = D_PASS;$final_bad_header_destiny = D_PASS;

注意上述4个设置中,对spam(垃圾邮件)默认会直接反弹(BOUNCE),现在修改为继续投递(PASS)但在信头中增加相关X-Spam-Status信息等。这样可以很方便的在extmail中设置将被标记为垃圾邮件的mail投递到“垃圾邮件箱”中,便于用户翻查。

增加邮件别名

编辑/etc/postfix/aliases,增加如下信息,注意:默认的aliases数据库里已有一条virusalert的别名,所以请删除,再输入下面的别名记录,并确保所有记录都是唯一的:
virusalert:    rootspam.police:   rootpostfix:       test@extmail.org

保存并执行newaliases命令生成新的别名数据库,这样所有的重新启动amavisd:
/etc/rc.d/init.d/amavisd restart

配置Postfix 集成amavisd-new

vi /etc/postfix/master.cf
增加如下内容:
127.0.0.1:10025 inet    n       -       n       -       -       smtpd    -o content_filter=    -o local_recipient_maps=    -o relay_recipient_maps=    -o smtpd_restriction_classes=    -o smtpd_client_restrictions=    -o smtpd_helo_restrictions=    -o smtpd_sender_restrictions=    -o smtpd_recipient_restrictions=permit_mynetworks,reject    -o mynetworks=127.0.0.0/8    -o strict_rfc821_envelopes=yes    -o smtpd_error_sleep_time=0    -o smtpd_soft_error_limit=1001    -o smtpd_hard_error_limit=1000    -o receive_override_options=

编辑/etc/postfix/main.cf

# Content-Filtercontent_filter = smtp:[127.0.0.1]:10024receive_override_options = no_address_mappings

注意:receive_override_options 这里必须增加,禁止地址展开/影射,否则如果遇到别名的时候会引起冗余邮件的产生。

保存后/etc/init.d/postfix restart

测试Clamav

然后输入如下命令: 每输入一行后等待1秒左右:
telnet localhost 25Trying 127.0.0.1...Connected to localhost.localdomain (127.0.0.1).Escape character is ^].220 mail.extmail.org ESMTP Postfix - by extmail.orgmail from:250 2.1.0 Okrcpt to:250 2.1.5 Okdata354 End data with .X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*.250 2.0.0 Ok: queued as BC24E85260quit221 2.0.0 ByeConnection closed by foreign host.

在邮件日志里,应该有相应的信息出现:

May 19 10:11:44 as3 amavis[2770]: (02770-01) Blocked INFECTED (Eicar-Test-Signature), -> , quarantine: virus-20050519-101144-02770-01, Message-ID: <20050519141143.F224828AA8@mail.extmail.org>, Hits: -

如果看到类似这样的日志,表明Clamav+Amavisd-new工作正常。

Spam Locker配置与安装

安装需求

支持Linux / BSD或Solaris,HP-UX等操作系统Perl 5.6+,建议Perl 5.8.0以上Net::DNSPOSIXFcntlDigest::MD5Digest::SHA1Digest::HMACNet::IP

解包软件

cp -r src/slockd-0.083 /usr/local/slockd

安装相关Perl模块

由于slockd是以smtp特征检测为主的软件,因此很大程度依赖dns库,必须安装Net::DNS库才能正常工作。除此外还有诸如HMAC,MD5及SHA1, Net-IP等模块。

执行以下命令安装需要的模块,注意:这些模块在上文安装Amavisd-new时已经安装过,这里重复是为了强调slockd依赖这些软件包

rpm -ivh RPMS/perl-Digest-SHA1-2.07-5.i386.rpmrpm -ivh RPMS/perl-Digest-HMAC-1.01-1hzq.i386.rpmrpm -ivh RPMS/perl-Net-IP-1.24-1hzq.i386.rpmrpm -ivh --nodeps RPMS/perl-Net-DNS-0.57-1hzq.i386.rpm

配置resolv.conf

请确认/etc/resolv.conf里的dns服务器是离你的邮件服务器最近,速度最快的dns server,slockd很依赖dns的好坏,因此给系统配置一个快速的dns能大幅度提高处理速度。以下给出一个配置仅供参考:

nameserver 202.96.128.68

上述dns服务器是广东电信的DNS服务器,对于非广东朋友,请改为离你最近的dns 服务器ip

如果可能的话,请配置一个简单的bind9,成为本地的dns cache server,可以获得最高性能。这里略过这一步骤,但您必须确保dns的配置是正确并且可靠的,否则slockd将不能工作!

启动/测试

执行:
/usr/local/slockd/slockd-init start

此时slockd将启动,并进入非daemon方式的监听模式,接受来自10030端口的请求,命令行下将显示如下调试信息:

Starting spam locker daemon: slockdstarting child 2908starting child 290908-01 12:34:40 [2908]: Loading APF::Plugin::localctrl08-01 12:34:40 [2909]: Loading APF::Plugin::localctrl08-01 12:34:40 [2908]: Loading APF::Plugin::anvil08-01 12:34:40 [2908]: Loading APF::Plugin::fqdn08-01 12:34:40 [2909]: Loading APF::Plugin::anvil08-01 12:34:40 [2908]: Loading APF::Plugin::dnsbl08-01 12:34:40 [2909]: Loading APF::Plugin::fqdn08-01 12:34:40 [2909]: Loading APF::Plugin::dnsbl08-01 12:34:40 [2908]: Loading APF::Plugin::hostname08-01 12:34:40 [2909]: Loading APF::Plugin::hostname

打开另一个ssh/终端窗口,进入/usr/local/slockd/tools 目录,输入:

perl policy_sig -h localhost -p 10030 --helo FOOBAR \--ip 192.168.0.1 --from test@foo.com --to test@bar.com

此时,程序应该返回如下错误信息:

action=504 : rejected, see http://bl.extmail.org/cgi/why?fqdn

这表示slockd初步的正常工作了。

后台方式运行slockd

调试正确后,必须将slockd配置成后台服务进程(Daemon Process)。vi /usr/local/slockd/config/main.cf 将如下两个配置的注释去掉:

# uncomment the following line if you need to daemonizesetsid          1## logginglog_file        /var/log/slockd.log

然后在运行slockd的命令行窗口按ctrl+c,关闭刚才运行的slockd。或者在另一个命令行窗口输入如下命令以杀死slockd进程:

killall slockd

然后执行:

/usr/local/slockd/slockd-init start

自启动

输入如下的命令,将slockd启动加入到系统里,这样下一次服务器重新启动,就可以自动执行slockd了。

echo "/usr/local/slockd/slockd-init start" >> /etc/rc.d/rc.local

配置Postfix

slockd调试正常后,必须配置postfix以使其打开对slockd的支持,编辑/etc/postfix/main.cf,将 check_policy_service inet:127.0.0.1:10030 这一行记录增加到smtpd_recipient_restrictions 里,例如:

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,  check_policy_service inet:127.0.0.1:10030

最后,重新启动postfix以使配置生效

/etc/init.d/postfix restart
注意事项:

上述配置是将slockd的查询放到最后,这也是进一步提高资源利用律的办法,因为有部分功能postfix已实现了,所以就先由postfix检测,如果检测不到再由slockd完成。

最终测试

现在通过简单的email收发来确认系统是否正常。

发送测试邮件

输入以下命令,通过telnet方式给test@extmail.org发送一封测试信件

telnet localhost 25Trying 127.0.0.1...Connected to localhost.localdomain (127.0.0.1).Escape character is ^].220 mail.extmail.org ESMTP Postfix - by extmail.orghelo demo.extmail.org250 mail.extmail.orgmail from:250 2.1.0 Okrcpt to:250 2.1.5 Okdata354 End data with .Subject: Hello WorldHello World!.250 2.0.0 Ok: queued as 3E47685269quit221 2.0.0 ByeConnection closed by foreign host.

此时通过另一个命令行窗口,观察maillog,命令为:

tail -f /var/log/maillog

将看到如下信息:

Aug 1 12:51:06 centos postfix/qmgr[3017]: 041718526B: from=, size=833, nrcpt=1 (queue active)
Aug 1 12:51:06 centos postfix/smtpd[3032]: disconnect from centos[127.0.0.1]
Aug 1 12:51:06 centos amavis[2890]: (02890-01) Passed CLEAN, [127.0.0.1] -> , Message-ID: <20060801165039.3E47685269@mail.extmail.org>, mail_id: N8nxpoRn4Hlq, Hits: 0.107, 11561 ms
Aug 1 12:51:06 centos postfix/smtp[3043]: 3E47685269: to=, relay=127.0.0.1[127.0.0.1], delay=27, dsn=2.6.0, status=sent (250 2.6.0 Ok, id=02890-01, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 041718526B)
Aug 1 12:51:06 centos postfix/qmgr[3017]: 3E47685269: removed
Aug 1 12:51:06 centos postfix/pipe[3035]: 041718526B: to=, relay=maildrop, delay=0, dsn=2.0.0, status=sent (delivered via maildrop service)
Aug 1 12:51:06 centos postfix/qmgr[3017]: 041718526B: removed

上述日志表示邮件经过了amavisd-new的扫描,并且已经通过maildrop投递到用户的maildir了。至此,整个ExtMail Solution 的安装配置已经基本告一段落。对于需要进行高级调整的朋友,请留意本文附录的备注。备注的内容将不断更新,敬请留意。

补充配置

以下是补充的ExtMail Solution有关文档,主要是为希望进一步了解mail系统运行,并提高extmail效能的朋友准备,对于初学者而言,建议要先打好基础再进行测试。

增加FCGI支持

为extmail增加FCGI的支持,主要是为了获得优异的web效能,克服CGI不能应付大量访问及低效率的缺陷。根据我们的测试,CGI模式下的页面效率只有FCGI下的1/10~1/100,因此建议有条件的用户还是使用FCGI。日后ExtMail Solution的web CGI程序将全部都支持FCGI。

安装mod_fastcgi

mod_fastcgi 是针对Apache Web服务器的FCGI支持模块,下载地址: http://www.fastcgi.com/dist/mod_fastcgi-2.4.2.tar.gz

编译指令:

wget http://www.fastcgi.com/dist/mod_fastcgi-2.4.2.tar.gztar xfz mod_fastcgi-2.4.2.tar.gzcd mod_fastcgi-2.4.2cp Makefile.AP2 Makefilemake top_dir=/etc/httpd install
安装perl-FCGI

除了Apache需要FCGI的支持外,extmail也需要相应的perl-FCGI模块。用以下命令安装:

rpm -ivh RPMS/perl-FCGI-0.67-2hzq.i386.rpm

接下来将配置Apache,将如下的信息增加到/etc/httpd/conf/vhost_extmail.conf的虚拟主机配置之后:

LoadModule fastcgi_module modules/mod_fastcgi.soFastCgiExternalServer /usr/bin/dispatch.fcgi -host 127.0.0.1:8888

同时,去掉如下行:

ScriptAlias /extmail/cgi/ /var/www/extsuite/extmail/cgi/

改为:

Alias /extmail/cgi/ /usr/bin/dispatch.fcgi/SetHandler fastcgi-script

然后编辑/var/www/extsuite/extmail/dispatch-init文件,修改如下:

BASE=/var/www/extsuite/extmail

最后启动fastcgi server:

/var/www/extsuite/extmail/dispatch-init start

如果没有意外将启动10个dispatch.fcgi守护进程,可以通过以下命令将启动命令加到rc.local中,实现自启动:

echo "/var/www/extsuite/extmail/dispatch-init start" >> /etc/rc.d/rc.local

编译Courier-IMAP SRPM包

需要自己重新编译Courier-IMAP的朋友,可以通过如下方式完成。

下载软件包
wget http://jaist.dl.sourceforge.net/sourceforge/courier/courier-imap-4.1.0.tar.bz2
制作RPM包

由于courier-imap需要非root帐户进行编译,因此必须su到sysadmin这个非root用户,然后输入如下指令:

mkdir $HOME/rpmmkdir $HOME/rpm/SOURCESmkdir $HOME/rpm/SPECSmkdir $HOME/rpm/BUILDmkdir $HOME/rpm/SRPMSmkdir $HOME/rpm/RPMSmkdir $HOME/rpm/RPMS/i386echo "%_topdir $HOME/rpm" >> $HOME/.rpmmacros

解开courier-imap-4.1.0.tar.bz2,取出courier-imap.spec文件,复制到$HOME/rpm/SPECS里,然后再复制courier-imap-4.1.0.tar.bz2到$HOME/rpm/SOURCE里

注意事项:

此版本的courier-imap需要openldap等相关包,所以编译前务必安装好openldap-devel等包

rpmbuild --ba $HOME/rpm/SPECS/courier-imap.spec

编译完毕,在$HOME/rpm/RPMS/i386/下就有所有编译成功的rpm包了!

结束语

通过此文档,读者应该能够较容易地架设一个功能较齐全的电子邮件系统。当使用一段时间后,用户将发现这个系统还有很多比较粗糙的地方,不尽人意。日后,本文档将继续保持更新,逐步将一些高级的设置方法公布出来,争取ExtMail Solution更加完整,力求完美。

已知Bugs

整个ExtMail Solution尽力将Opensource软件的优点发挥到极至,但免不了还是有bug。以下是几个已知的问题:

WebMail
  • 删除/新增邮件时左帧数字不会变更
  • 不能处理少量违反RFC的邮件
  • 在某些版本Apache下偶尔出现会话失效问题
  • 还不支持IMAP创建的中文子目录
Amavisd-new
  • 退信模板还是英文的
  • 产生的汇报信息不够友好
Postfix
  • 本版本还不支持退信模板定制
  • 版本不是最新版
Spam Locker
  • 错误识别一些配置异常的mail服务器
  • 与内容过滤器结合不够紧密
  • hostname模块易造成较多误伤

TODO 列表

  • 支持SMTP 及 POP3/IMAP的TLS/SSL加密
  • HTTP及SMTP/POP3等CA证书的配置
  • 更精细的Anti-Spam策略及关键字过滤
  • 系统安全配置(基于iptables)
  • BSD平台的ExtMail Solution文档

文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·使用C#编写Windows Forms应用程序(转)-.NET教程,Windows开发
·C#学习杂记-.NET教程,C#语言
·将文本格式的文章转换为html/xml格式文本的功能封装到Javabean-JSP教程,Java技巧及代码
·用java小程序applet实现无限级树结构-JSP教程,Java技巧及代码
·《.net编程先锋C#》第一章 C#简介-.NET教程,C#语言
·企业人事信息管理系统1.0-ASP教程,数据库相关
·《.net编程先锋C#》第三章 第一个C#应用程序-.NET教程,C#语言
·《.net编程先锋C#》第二章 理论基础-公用语言 运行环境-.NET教程,C#语言
·Windows应用程序调试必备的--符号文件(Symbols)-.NET教程,评论及其它
·c#反编译微软msdn2003的帮助文档,并将反编译结果保存到一个sqlserver数据库中
最新文章
·vista的新特性:懒人的安全感_windows vista
·photoshop为情侣照片打造韩式梦幻相框_photoshop教程
·专访seobbs站长乐思蜀_站长访谈
·嘟嘟网络陈艺光:诚信是一种信仰_站长访谈
·俺自己黄修源:只问耕耘,不问收获_站长访谈
·李向华:如何提高论坛用户粘性_站长访谈
·给windows vista系统网络和共享中心“换脸”_windows vista
·胡宪东谈搜索优化的实战_站长心得
·网站快速成功的九个步骤_站长心得
·google pr数字背后的含意_google推广
相关主题
  • extmail solution howto for linux_qmail
  • extmail solution for freebsd_qmail
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭