前段时间和朋友聊天时谈到Blog的内容,他说看了我的文档比不看前更迷糊,更惨的是会误导他人.主要原因是我写的东西向来只是写步骤;从来不加入自己的体会和感想;只知其然而不知其所以然......我汗然,我知道我写的东西有很多问题,但是却没想过这中间更深层的内涵。现实的情况是:好的文章会给人以美的享受,引导人走向至善,创造更多的社会价值;但是如果走向极端则会影响和波及更多的人,因为鲁莽的勇士即便再怎么历害也影响不了国家,但是高明谋士每做出一个决定都会左右整个社会.想想每个朝代更替时出谋划策的人员你就会明白了:李斯,诸葛亮,司马懿,希特勒.我成不了李斯但也不想做希特勒,所以以后的文章我会一点点改进.在这里,我真诚的感谢给我意见的 朋友,正是因为有了你们,这个世界才会越来越美好.希望大家多提意见,一起学习,一起进步.
软件的安装和配置是比较简单的,真正困难的部份在于管理和规划,好的规划是成功的一半。不管是人生还是网络或是程序设计。你可能想像不到一个400-500人的工厂在发展到1000-2000人的工厂时发现原来基于access的数据库不能用,更大一点的话,你发现Windows下的程序根本满足不了需求.所以,如果先前规划好架构:Linux+Oracal+Java,可能就不用做那么多的无用功.当然,有人会说这两者的成本(人力,资源)在初期很难满足,但是Windows下也有这类支持程序,你如果选了Java做规划,那么转到Linux上估计也比重新来过的要好.网络管理更是如此:部门越多的时候你还是用以前的管理方法,你将永远处于被动地位,每天就像救火队员一样到处跑,而且很难判断问题出在哪.所以从机房主干到用户终端你都要规划好,细节也是一个不容忽略的地方,800台的电脑你就不可能通过IP来给用户提供远程支持(用户不一定懂得看IP地址),好的办法是根据部门代码规划主机名称,并将标签贴于机器显眼处.这样是不是大家都方便.当然,这只是一部份,规划要做到可扩展,多兼容,管理维护方便,能快速定位问题.
maia mailguard是一款基于web管理邮件的防病毒和反垃圾功能的软件.它通过控制Amavisd和SpamAssassin来实现管理防病毒及防垃圾邮件功能.amavis是MTA与病毒扫描的一个中间程序,可以和多个病毒扫描引擎结合,这里用的是clamav.
软件完成后的界面如下:
我这里的测试环境是:Redhat AS 4+LDAP+Postfix.前期的搭建可以参考:http://waringid.blog.51cto.com/65148/79648.maia的功能比较多,这里简单描述一下:友好的面向用户自定义的管理功能;用户能自主管理自己邮件的过滤条件及方法;可以自主定义针对自己的黑白名单;可以定义垃圾邮件及病毒邮件的隔离区;友好的Web管理界面;可支持多种浏览器;图形化的表达方式;支持多模板,多语言(无中文);安全的邮件查看方式;灵活的验证模式;可使用LDAP(测试未通过,可能是设定问题);Mysql;IMAP;POP3等多种方式实现验证功能;高效的管理功能及强大的反垃圾邮件和防病毒功能(这个应和相应的引擎相关);可扩展的设计功能(估计对二次开发的适用).具体的结果只有体验了才明白.
下面是系统的要求:
* Two SMTP-based mail servers in a dual-MTA arrangement OR an SMTP server with re-injection capability (e.g. Postfix,这个就不用多说了,基本的)
* SpamAssassin 2.55-2.63, 3.00 or newer (if you want spam filtering)
* PHP 4.2.0 or newer(PHP也是重要的一个方面,有可能要重新编译)
* Perl 5.6 or newer
* Any PHP-compatible web server(apache)
* One or more virus scanners supported by amavisd-new (if you want virus scanning)
* One of the following SQL databases:(需要的数据库,选其中之一)
o MySQL 4.0.x or newer
o PostgreSQL 7.1 or newer
* Perl DBI database module 1.40 or newer
* Perl DBD-mysql database driver 2.9003 or newer (for MySQL)
* Perl DBD-pg database driver 1.31 or newer (for PostgreSQL)
* Smarty template engine 2.6.2 or newer(maia的模板引擎)
* PHP IMAP extensions 2002d or newer
* PEAR::DB library 1.3 or newer(PEAR支持)
* PEAR::DB_Pager library 0.7 or newer
* PEAR::Mail_Mime library 1.2.1 or newer
* PEAR::Image_Graph library 0.7.0 or newer (if you want graphical charts)
* MCrypt library 2.5.7 or newer (if you want database encryption)除了这些外,还需要file-4.12以上版本的支持,不然会出现"Jul 15 20:05:27 mail postfix/smtp[4443]: A907FD40DF: to=, orig_to=, relay=127.0.0.1[127.0.0.1]:10024, delay=8515, delays=8515/0.03/0.13/0.33, dsn=4.5.0, status=deferred (host 127.0.0.1[127.0.0.1] said: 451 4.5.0 Error in processing, id=04423-01, mime_decode-1 FAILED: Unix utility file(1) not available, but is needed at (eval 77) line 110. (in reply to end of DATA command))"这样的错误.
确认系统要求
对照上面的要求检测系统,如果有些软件没有安装请先安装,例如Mysql等,如果你和我一样是数据库管理方面的菜鸟,推荐通过phpMyadmin来管理Mysql.相关文件可以参考(http://waringid.blog.51cto.com/65148/58144).PHP是一个配置比较麻烦的组件,因为在这里它除了以前的支持外( http://waringid.blog.51cto.com/65148/79648)还需要支持PEAR,Mysql,WDDX及Mcrypt等.这篇文章的环境是针对于( http://waringid.blog.51cto.com/65148/79648)搭建完成后的后续操作,如果有差异的地方请先检查其环境是否符合上一篇的情况.
安装mcrypt库:
该库主要用于PHP对数据库的加密和解密使用,先前以为要安装Mcrypt相关的组件,折腾了半天后才发现其实很简单,只需安装libmcrypt就可以了.下载地址为:(ftp://mcrypt.hellug.gr/pub/crypto/mcrypt/).安装就更简单了.
tar zxvf libmcrypt-2.5.7.tar.gz
cd libmcrypt-2.5.7
./configure
make
make install
安装IMAP支持:
原以为安装了IMAP后(功能使用正常)重新编译对PHP的支持不会有太多问题,结果却一直卡在编译IMAP这个地方,老是提示"`U8T_CANONICAL' undeclared (first use in this function)".查资料后才发现要安装Clinet支持.软件的下载地址为:(http://ftp.pwr.wroc.pl/pub/software/mail/imap/)下载c-client.tar.Z后安装.
chmod -R a+rwx ./imap-2007b/ #加入可执行权限
cd imap-2007b
make lrh SSLTYPE=none
cd c-client/
cp /tmp/c-client/imap-2007b/c-client/c-client.a \
/usr/local/include/ #将相应库文件拷至系统路径下
cp *.h /usr/local/include/
cp /tmp/c-client/imap-2007b/c-client/c-client.a \
/usr/local/lib/libc-client.a
重新编译PHP:
因为以前的PHP在很多方面没有提供支持,所以需要重新编译加入新的功能组件.在操作之前建议先对PHP目录进行备份,当出现问题时可以及时更正.新的编译如下:
./configure --prefix=/usr/local/php --with-ldap=/usr \
--with-ldap-sasl=/usr/local/sasl2 \
--with-apxs2=/usr/local/httpd/bin/apxs \
--sysconfdir=/etc \ #php.ini存放位置
--with-libxml-dir=/usr/include/libxml2/libxml \
--with-gd=/usr/local/gd \ #GD库支持
--with-png=/usr/local/png/ \
--with-jpeg=/usr/local/jpeg/ \
--with-xpm \
--with-zlib --enable-debug \
--enable-magic-quotes --enable-libgcc \
--enable-ftp \
--enable-mbstring=all \
--enable-sockets --with-gnu-ld \
--with-gettext \
--with-mysql=/usr/local/mysql/ \ #Mysql支持
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--with-imap=/usr/local/imap \ #IMAP支持
--with-pear=/usr/local/pear \ #PEAR支持
--enable-bcmath --enable-wddx \ #数学库及日志支持
--with-mcrypt #加密支持
make
make install
rm -rf /root/.pearrc
编译PHP后进行PEAR的安装过程中费了我很多功夫,因为安装后的PEAR总是运行不正常(没有运行编译中的最后一条语句).我通过手动和自动的方式安装过,而且一直以为PEAR的安装是在编译PHP之前,测试了几次后发现按上述方法安装后升级就可以了.下图是安装完PHP后的提示页面:
升级和安装PEAR组件:
PEAR在这里的作用类似于Perl的功能,主要用来支持数据库的连接及相应文件在PHP下的解码(如MIME等).PEAR的组件安装方式也类似于Perl,可以通过下面的方式来进行升级:如果你的PHP编译选项中有关pear的路径有变化,请查找pear可执行文件的位置.
/usr/local/php/bin/pear upgrade-all #升级现在组件
/usr/local/php/bin/pear install Mail_Mime DB Pager Net_Socket \
Net_SMTP Auth_SASL Net_IMAP Net_POP3 \
Log Image_Color Image_Canvas \
Image_Graph Numbers_Roman Numbers_Words #新安装组件
通过上述指令能完成大部份组件的安装,但是也可能会出现个别安装不成功的现象,这里就需要通过手动的方式来下载安装不成功的组件进行手动安装.在下载地址的页面中查找安装不成功能组件然后下载到本地(http://pear.php.net/package/PEAR/download),通过下面的命令安装:
/usr/local/pear/bin/pear install /tmp/Image_Canvas-0.3.1.tgz
/usr/local/pear/bin/pear install /tmp/Numbers_Words-0.15.0.tgz
/usr/local/pear/bin/pear install /tmp/Image_Graph-0.7.2.tgz
这些完成之后别忘了在php.ini的设定中加入include_path = ".:/usr/local/pear"的设定路径.其实安装完PHP就有这样的提示了,不信,仔细看看上面的那张图中的提示.
PEAE也在完全手工的安装方式,但是我测试的情况是提示安装成功却在和组件PHP配合时却不能正常通过测试.如果哪位手工全新的方式安装并测试成功,还请指点一二.手动全新安装的方法如下:在安装过程中有相应的提示,按照相应的提示一步步完成安装.
wget O- http://pear.php.net/go-pear | php #下载相关文件
/usr/local/php/bin/php go-pear #安装过程
升级File文件:
为什么要升级的原因前面已经说明了.系统安装时默认会安装此软件,它的主要作用是用来识别文件的类型.先通过"rpm -e --nodepsfil file-4.10"这样的方式来卸载此软件.(http://www.filewatcher.com/m/file-4.21.tar.gz.549938.0.0.html)为新版本file的下载地址.安装方式也很简单. 要注意的是默认的情况下它的可执行文件位于/usr/local/bin下,如果你指定了相关的文件夹,请务必记得可执行文件的路径,因为后面在设定maia时会用到它.
tar zxvf file-4.21.tar.gz
cd file-4.21
./configure
make
make install
下载maia组件并设定相关路径和权限:
maia下载路径为:http://www.maiamailguard.com/download.php,里面有多个版本,选最新的吧.这里相关的路径可以根据自己的实际情况更改,只是在后面的设定文件中需指定设置好的路径.Mysql中需要新建maia数据库,你可以增加新的用户来控制新增的数据库.
cd /var/amavis
mkdir -pv ./maia
tar zxvf maia-1.0.2a.tar.gz
cd maia-1.0.2a
/usr/local/mysql/bin/mysql -u \
root -p maia < ./maia-mysql.sql #导入初始数据库
mv scripts/ /var/amavis/maia/ #maia的执行脚本
mv templates/ /var/amavis/maia/ #maia的模板程序
chown -R amavis /var/amavis/maia/
chgrp -R amavis /var/amavis/maia/
chmod 640 /var/amavis/maia/templates/*.tpl
chmod 750 /var/amavis/maia/scripts/*.pl
cp maia.conf.dist /etc/maia.conf #maia的配置文件
chown amavis /etc/maia.conf
chgrp amavis /etc/maia.conf
chmod 640 /etc/maia.conf
在完成这些后,Mysql会导入相关的数据,但是我们需要建立相应的用户来控制基本数据库;可以在phpmyadmin中选定maia数据库,然后在其中建立amavis@localhost用户;通过下面的SQL语句给amavis用户授权:"GRANT CREATE, DROP, ALTER, SELECT, INSERT, UPDATE, DELETE ON maia.* TO amavis@localhost IDENTIFIED BY 'amavis';";
maia.conf是maia的配置文件,它的主要作用是建立和maia数据库以及反垃圾组件的联接.其中有些参数需要根据系统的实际情况进行设定,例如:$script_path.下面是几个重要的地方:
$dsn = "DBI:mysql:maia:localhost:3306"; #和数据库关联设定.
$username = "amavis";
$password = "amavis";
完成这些后就可以进行初步的测试了,maia提供了一个测试的脚本来测试用户的关于maia的配置情况,如下所示:请注意图片中红色标记的有关file版本的地方.
/var/amavis/maia/scripts/configtest.pl
在这里说一下我碰到的情况,我在安装完mysql后更改了它的my.conf配置文件,将它原本是/tmp/mysql.sock改到了/var/mysql/mysql.sock;造成的后果是这里关于数据库的测试通不过,估计它的脚本有点问题,我想到一个比较笨的解决办法"ln -sv /var/mysql/mysql.sock /tmp/mysql.sock".
测试加载反垃圾邮件规则:
如果通过load-sa-rules.pl的方式加载规则,要注意当有新的规则更新时,需要使用指令重新启动amavisd服务.
/var/amavis/maia/scripts/load-sa-rules.pl --debug
安装maia针对PHP的相关文件:
除了maia的相关程序外另外还需要加入Smarty模板引擎,它主要作用是为maia提供模板的更新服务.下载地址为(http://www.smarty.net/).
cd maia-1.0.2a
mv ./php/ /var/www/maia
tar zxvf Smarty-2.6.19.tar.gz
cd Smarty-2.6.19
mkdir /usr/local/php/include/php/Smarty
cp -r ./libs/* /usr/local/php/include/php/Smarty/
mkdir /var/www/mail/libs/Smarty
cp -r ./libs/* /var/www/mail/libs/Smarty/
mv /var/www/maia/config.php.dist /var/www/maia/config.php #配置文件
chmod -R a+w ./themes
在完成基本的文件支持后,需要对maia针对PHP进行配置,配置文件是config.php.这个文件中指定了通过WEB页连接数据库的方式及用户端登录系统时的认证方式等.下表是针对邮件策略的设定,如果你需要更改,请参照修改.具体的内容可以查看mysql中maia数据库policy策略表. 认证方式有多种,我这里用的是pop3的方式.
Setting amavisd-new equivalent Value range
Pass viruses through? virus_lover 'Y' or 'N'
Pass spam through? spam_lover 'Y' or 'N'
Pass banned files through? banned_files_lover 'Y' or 'N'
Pass mail with invalid headers through? bad_header_lover 'Y' or 'N'
Disable virus scanning? bypass_virus_checks 'Y' or 'N'
Disable spam checking? bypass_spam_checks 'Y' or 'N'
Disable banned files checking? bypass_banned_checks 'Y' or 'N'
Disable invalid header checking? bypass_header_checks 'Y' or 'N'
Discard viruses? discard_viruses 'Y' or 'N'
Discard spam? discard_spam 'Y' or 'N'
Discard banned files? discard_banned_files 'Y' or 'N'
Discard invalid mail headers? discard_bad_headers 'Y' or 'N'
Add a prefix to spam subjects? spam_modifies_subj 'Y' or 'N'
Add spam score headers when score is >= spam_tag_level -999.9 to 999.9
Consider mail spam when score is >= spam_tag2_level -999.9 to 999.9
Quarantine or discard spam when score is >= spam_kill_level -999.9 to 999.9
$maia_sql_dsn = "mysql://amavis:amavis@tcp(localhost:3306)/maia"; #数据库连接
$default_charset = UTF-8 #编码
$auth_pop3_host = "localhost"; #认证方式
$auth_pop3_port = 110;
测试的方法为:主机地址/maia/admin/configtest.php
安装amavisd-maia:
cd /tmp/maia-1.02
cp amavisd-maia /usr/local/sbin/
chown root /usr/local/sbin/amavisd-maia
chmod 755 /usr/local/sbin/amavisd-maia
设定amavisd配置:
amavisd的配置存储在amavisd.conf文件中.因为现在更新使用amavisd-maia来启用amavisd服务,所以要先通过"/usr/local/sbin/amavisd stop"停用原有的服务并备份原有的"/etc/amavisd.conf"以便不时之需.当然,如果有必要也可以备份amavisd这个文件.然后执行以下命令并重新配置amavisd.conf文件.
cd /tmp/maia-1.02
cp amavisd.conf.dist /etc/amavisd.conf
以下是配置文件中需注意的地方,当然,如果你的配置有变化,请根据实际的情况来确定参数中的内容.
$daemon_user = 'amavis'; #运行用户
$daemon_group = 'amavis';
$mydomain = 'test.com'; #本机域名
$MYHOME = '/var/amavis'; # 路径
@lookup_sql_dsn = ( ['DBI:mysql:maia:localhost', 'amavis', 'amavis'] ); #数据库连接
$mailfrom_notify_admin = "postmaster\@$mydomain";#问题信件的投递地址
$mailfrom_notify_recip = "postmaster\@$mydomain";
$mailfrom_notify_spamadmin = "postmaster\@$mydomain";
$file = '/usr/local/bin/file'; #file文件的路径
$notify_method = 'smtp:[127.0.0.1]:10025'; #投递信件使用的端口
$forward_method = 'smtp:[127.0.0.1]:10025';
启动服务:
/usr/local/sbin/amavisd-maia start
/usr/local/httpd/bin/apachectl stop
/usr/local/httpd/bin/apachectl start
测试maia:
在浏览器中输入:http://主机名称/maia就会进入登陆界面,前面的图中已有登录图片,系统默认的设定是没有开启maia邮件过滤功能,所以登录后需手动完成初次设定,当然也可以通过全局设定来执行自动为每个用户启用过滤功能.如图示:
如果要进入全局设定,则需要将用户注删成管理员才能进行操作,注册的地址为http://主机名称/maia/login.php?super=register.当系统已注册一个管理员后,则不能再通过此方式注册.可以由maia管理员新建或是在maia数据库中更改maia_users表中用户的user_level等级为S.下图是全局管理选项.需注意的是图中有一项为mail limit size(邮件大小限制),它的默认大小是1M,如果你收发的邮件大于1M,需更改它的值.
后记:
LDAP在默认的情况下没有启用日志记录,需通过下列方式来启用它:必須先在/etc/syslog.conf裏加上一行: local4.* /var/log/ldap.log ;然後touch /var/log/ldap.log,重啟syslog,就有slapd的log可查了。不過要注意,loglevel預設值為256,只記錄狀態(stats only),若要記錄其他東西,必須設loglevel值。其中-1是記錄所有除錯信息,小心ldap.log變得太大。loglevel在slapd.conf中定义.
loglevel Logging description
-1 enable all debugging
0 no debugging
1 trace function calls
2 debug packet handling
4 heavy trace debugging
8 connection management
16 print out packets sent and received
32 search filter processing
64 configuration file processing
128 access control list processing
256 stats log connections/operations/results
512 stats log entries sent
1024 print communication with shell backends
2048 print entry parsing debugging
如果邮件日志中出现"534 5.3.4 Message larger than 1046528 bytes rejected, id=16947-01"之类的错误,请修改mysql的配置文件my.conf中max_allowed_packet = 10M或更大.
本文出自 “虚拟的现实” 博客,http://waringid.blog.51cto.com/
自由广告区 |
分类导航 |
邮件新闻资讯: IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮 电子邮箱 | 反垃圾邮件|邮件客户端|网络安全 行业数据 | 邮件人物 | 网站公告 | 行业法规 网络技术: 邮件原理 | 网络协议 | 网络管理 | 传输介质 线路接入 | 路由接口 | 邮件存储 | 华为3Com CISCO技术 | 网络与服务器硬件 操作系统: Windows 9X | Linux&Uinx | Windows NT Windows Vista | FreeBSD | 其它操作系统 邮件服务器: 程序与开发 | Exchange | Qmail | Postfix Sendmail | MDaemon | Domino | Foxmail KerioMail | JavaMail | Winwebmail |James Merak&VisNetic | CMailServer | WinMail 金笛邮件系统 | 其它 | 反垃圾邮件: 综述| 客户端反垃圾邮件|服务器端反垃圾邮件 邮件客户端软件: Outlook | Foxmail | DreamMail| KooMail The bat | 雷鸟 | Eudora |Becky! |Pegasus IncrediMail |其它 电子邮箱: 个人邮箱 | 企业邮箱 |Gmail 移动电子邮件:服务器 | 客户端 | 技术前沿 邮件网络安全: 软件漏洞 | 安全知识 | 病毒公告 |防火墙 攻防技术 | 病毒查杀| ISA | 数字签名 邮件营销: Email营销 | 网络营销 | 营销技巧 |营销案例 邮件人才:招聘 | 职场 | 培训 | 指南 | 职场 解决方案: 邮件系统|反垃圾邮件 |安全 |移动电邮 |招标 产品评测: 邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端 |