说明:此文引用至Pecker的博客,转载请著名出处。
原文地址(共三部分): http://www.peckers.cn/blog/u/1/archives/2007/3.html http://www.peckers.cn/blog/u/1/archives/2007/5.html http://www.peckers.cn/blog/u/1/archives/2007/7.html
WinWebMail是一种简单易用的邮件系统,经过不断的升级,现在最新的3.7版已经能够很好的支持各种常用的邮件服务功能。如:有比较完善的防垃圾邮件功能;与一些杀毒软件结合可以实现邮件防毒功能等。其中特别是邮件防毒功能非常实用,不像有些邮件系统使用防毒功能需要另外购买组件,还对杀毒软件的种类有较多限制。WinWebMail的邮件防毒功能可以方便的与许多常见的杀毒软件配合使用,也不需要单独增加组件,对于小型邮件系统不会额外增加成本。
目前WinWebMail可以与这些杀毒软件配合实现邮件防毒功能:McAfee 8.0和8.5、Symantec & Norton AntiVirus 8.x、BitDefender、KILL 安全胄甲、Panda Antivirus Platinum 熊猫卫士、Sophos Anti-Virus、F-Prot Antivirus for Windows、RAV AntiVirus Command Line、F-Secure Anti-Virus、金山毒霸 V, VI, 2000, .NET, 2001, 2002、Trend ServerProtect v5 中文企业版、Trend PC-Cillin 2004 简体中文版。可供选择的杀毒软件种类众多,基本上函盖了服务器常用的一些杀毒软件产品。关于WinWebMail可以支持的杀毒软件产品详情请访问WinWebMail网站中“邮件防毒功能”页面:http://www.winwebmail.com/antivirus.html。
下面我谈谈WinWebMail与Kill安全胄甲配合实现邮件防毒功能中的一个问题。 比较流行的Kill安全胄甲基本上都是一些个人版,常见的有6.0、7.1等。WinWebMail通过命令行方式调用Kill命令行引擎Inocmd32.exe实现邮件防毒功能。6.0版中此文件的默认路径是:C:\Program Files\KILL\ScanEngine,7.1版中此文件的默认路径是:C:\Program Files\CA\SharedComponents\ScanEngine。
使用Kill 6.0实现邮件防毒功能的设置方法是:在WinWebMail管理程序主菜单上选择“系统设置”,在弹出的系统设置窗口中选择“超期设置”标签,选中“启用邮件防毒功能”,然后点击后面的“设置”按钮。在弹出的防毒设置窗口中,“杀毒产品名称”项选择“Kill 安全胄甲”,执行程序路径选择Inocmd32.exe的路径。保存后即具备了邮件防毒功能。可以下载eicar(一个无害的病毒测试程序),将这个测试程序的不同形式文件添加到邮件附件中发送,发件人均会收到系统自动回复的“病毒警告”邮件(需要在防毒设置窗口中选中“发现病毒邮件时通知发件人”)。为防止Kill误删WinWebMail路径下的邮件数据文件和临时文件,还需要在Kill实时监控选项中将WinWebMail的目录设置为排除。
按照以上方法设置后,在使用Kill7.1作为杀毒引擎时却不会收到系统自动回复的“病毒警告”邮件,说明WinWebMail的邮件防毒功能没有正常工作。详细检查了WinWebMail的各项设置没有发现问题,Kill命令行引擎文件Inocmd32.exe的路径也没有错误。打开WinWebMail的防毒设置配置文件“WinWebMail\adminmsg\KILL 安全胄甲.eav”可以看到其内容为: Inocmd32.exe -ARC -NEX -SFI -NOS %s is infected by virus:
is infected by virus:
在命令行方式下运行6.0版的Inocmd32.exe文件,显示如下:
Usage:Inocmd32.exe [ -options ] file|directory|drive ... -options: : MOD <mod> Scan mode <mod> can be one of: Secure or Reviewer (default Secure) : ACT <action> Infected file action <action> can be one of: Cure, Rename, Delete or Move : EXE Specified files (based on the InoculateIT 'Specified' extension list) : EXC Exclude files (based on the InoculateIT 'Exclude' extension list) : ARC Scan archive files : NEX Detect compressed files by content, not file extension : NOS No subdirectory traverse : FIL:<pattern> Only scan files that match <pattern> (shell wildcard) : SCA <action> Special Cure Action (ACT must be set to Cure) <action> can be one of: CB (Copy Before), RF (Rename if cure fails) or MF (Move if cure fails) : MCA <action> Macro Cure Action <action> can be either: RA (remove all) or RI (remove infected) : SPM <mode> Special Mode <mode> can only be: H (heuristics) : SFI Stop at first infection in archive : SMF Scan migrated files : INC Incremental scan : SRF Skip regular file scanning of archives : BOO Boot sector scan : MEM Scan memory (currently running programs) : LIS:<file> Create scan report file <file> : APP:<file> Append scan report to file <file> : VER Verbose mode : QUI Count of scanned files rather than list : SIG Display signature version numbers : SIG:<dir> Display signature version numbers of engine located in <dir> : HEL or ? Display this help file|directory|drive ...: Specify at least one file, directory or drive to scan InoculateIT Signature version: vet.dat 30.07.3641 2007/05/18 Vet Signature version: vet.dat 30.07.3641 2007/05/18
在命令行方式下运行7.1版的Inocmd32.exe文件,显示如下:
InoculateIT 引擎版本: 30.07.00 2007-03-29 InoculateIT 特征码版本: vet.dat 30.07.3641 2007-05-18
Vet 引擎版本: 30.07.00 2007-03-29 Vet 特征码版本: vet.dat 30.07.3641 2007-05-18
用法:Inocmd32.exe [ -options ] file|directory||驱动器 ... -options: ENG <engine> <engine> 可以是以下之一: Ino 或 Vet MOD <mod> 扫描模式 <mod> 可以是以下之一: 安全或评论 (默认为安全模式) ACT <action> 对受感染文件的操作 <action> 可以是以下之一: 报告、修复、重命名、删除或移动 EXE 指定的文件 (基于 Local Scanner 的 '指定' 扩展名列表) EXC 排除的文件 (基于 Local Scanner 的 '排除' 扩展名列表) ARC 扫描存档文件 NEX 按内容而不是按文件扩展名删除压缩文件 NOS 不遍历子目录 FIL:<pattern> 仅扫描同 <pattern> (shell 通配符) 匹配的文件 SCA <action> 特殊修复操作 (ACT 必须被设为修复操作) <action> 可以是以下之一: CB (首先复制)、 RF (修复失败则重命名) 或 MF (修复失败则移动) MCA <action> 宏修复操作 <action> 可以是以下之一: RA (全部删除) 或 RI (删除被感染的宏) SPM <mode> 特殊模式 <mode> 可以是: H (启发式) SFI 在存档包中检测到首个感染文件时停止 SMF 扫描迁移的文件 SRF 跳过对存档包的常规文件扫描 ARF 将扩展名过滤器应用于存档内容 BOO 启动扇区扫描 MEM 扫描内存 (当前运行的程序) LIS:<file> 创建扫描报告文件 <file> APP:<file> 将扫描报告文件附加到 <file> 文件之后 SYS 启用系统修复功能 对找到的任何已感染的并且同系统修复关联的文件, 调用系统修复功能。有关特定病毒的详细信息, 请访问 www.ca.com 上的病毒百科全书 同系统修复的可行性有关。在某些时候请多加注意 系统修复需要重启才能生效。 VER 详细模式 COU:<n> 发送消息,每 <n> 个扫描的文件 COU 每扫描 1000 个文件给出一条消息 SIG 显示特征码版本号 SIG:<dir> 显示位于 <dir> 下的引擎的 特征码版本号 HEL 或 ? 显示本帮助 文件|目录|驱动器 ...: 请至少指定一个要扫描的文件、目录或驱动器
这两个版本中相应命令行开关项的解释完全一致,看来也不是配置文件的问题。这样看来应该是Kill的问题。上bbs.5dmail.net问了一下,WinWebMail是通过分析Kill命令行引擎的杀毒日志来识别邮件中的病毒。看来可能是Kill改变了杀毒日志的保存格式,导致WinWebMail无法正确工作了。
所以目前对于WinWebMail而言,只能和Kill6.0版配合实现邮件防毒功能,不能和Kill7.1版配合实现。 上次分析发现由于Kill6.0与7.1版命令行引擎杀毒日志的保存格式不一样造成WinWebMail无法正确识别,从而无法实现邮件防毒功能。但是仔细分析了这两个版本的所有日志文件,发现并没有命令行引擎的杀毒日志。那么有可能WinWebMail并不是分析日志文件,而是直接分析命令行引擎杀毒输出结果来实现邮件防毒功能。
下面是Kill6.0版命令行引擎杀毒结果: C:\Program Files\KILL\ScanEngine>Inocmd32.exe -ARC -NEX -SFI -NOS c:\temp\eicar.com.txt File c:\temp\eicar.com.txt is infected by virus: the EICAR test string Total Files Scanned: 1 Total Viruses Found: 1 Total Infected Files Found: 1 Scan Mode: Secure
*** End Of Summary *** 下面是Kill7.1版命令行引擎杀毒结果: C:\Program Files\CA\SharedComponents\ScanEngine>Inocmd32.exe -ARC -NEX -SFI -NOS c:\temp\eicar.com.txt 文件 c:\temp\eicar.com.txt 被以下病毒感染: the EICAR test string 扫描的文件总数: 1 找到的病毒总数: 1 找到的受感染文件总数: 1 扫描模式: 安全 *** 概要结束 *** 从这两个结果可以发现Kill的确修改了命令行杀毒引擎的输出结果信息,把Kill6.0版的英文结果改为了Kill7.1版的中文结果。
还记得WinWebMail的防毒设置配置文件“WinWebMail\adminmsg\KILL 安全胄甲.eav”中有一句“is infected by virus:”,这应该就是WinWebMail识别病毒的关键字。而Kill6.0杀毒输出结果信息中有一句“File c:\temp\eicar.com.txt is infected by virus: the EICAR test string”,里面就含有这个关键字。在Kill7.1中这一句改为“文件 c:\temp\eicar.com.txt 被以下病毒感染: the EICAR test string”。
停止WinWebMail的服务程序,把“KILL 安全胄甲.eav”中的关键字“is infected by virus:”都改为“被以下病毒感染:”。然后重启WinWebMail的服务程序,发送一封带有病毒附件的测试邮件,接收端的确没有收到刚才发送的测试邮件。在发送一份正常邮件,这次正常收到。
通过以上测试说明WinWebMail是通过分析Kill命令行杀毒引擎的输出结果信息来实现邮件防毒功能。直接修改WinWebMail的防毒设置配置文件就可以让WinWebMail支持Kill7.1版。不过这样修改之后WinWebMail不能在发现病毒邮件时通知发件人,这的确是一个小小的遗憾。
前面进行的所有测试都遗漏了一点,即使用的WinWebMail是3.6.2.1版。这是一个比较早的版本,当时的正式名称是EasyWebMail,从3.7版以后开始改名为WinWebMail。
前面测试中修改了WinWebMail的防毒配置文件后,已经可以正常过滤邮件中的病毒,但是无法将识别出的病毒信息反馈给发件人。将WinWebMail升级到最新的3.7.3.1版(2006年11月28日发布)后。再次发送带有病毒附件的测试邮件,这次发件人收到的WinWebMail返回的“病毒邮件警告”。
至此WinWebMail3.7.3.1版与Kill7.1版配合实现邮件防毒功能完全可以正常使用。
|