java

位置:IT落伍者 >> java >> 浏览文章

用Java设计防病毒的电子邮件程序


发布日期:2019年11月11日
 
用Java设计防病毒的电子邮件程序
你双击来自朋友的email但是在能够阅读它之前病毒程序弹出对话框告诉你消息中含有病毒它不能够清除文件中的病毒因此它隔离了那个文件使你不能访问它

你有些不满打电话告诉你的朋友他发送了一个带病毒的消息给你 你的朋友可能并非有意地给你发送病毒很可能的情况是你的朋友的计算机已经被病毒感染了该病毒通过给电子邮件地址薄中的每个人发送病毒消息来复制自己即使来自最可信的朋友的消息也是不可信的

很多电子邮件客户端显示消息的方式看起来好像是磁盘上的目录包含文件的显示方式这些电子邮件允许你通过把消息存储在文件夹(其中一个叫收件箱)中来组织消息形象地说每个消息是单独的文件磁盘上的文件夹或目录中包含了一组相关的文件

但是很多电子邮件客户端的表象可能使人误解很多电子邮件客户端程序把几组相关的消息合并到一个文件中例如 Netscape Communicator在磁盘上就没有叫收件箱的文件夹其实它只有一个叫做收件箱的文件而你的收件箱中的所有消息都放在那个文件中

在配置病毒检测程序的文件系统实时保护的时候它有下面一些的选项

当检测到病毒时的主要操作

· 清除文件中的病毒

· 隔离被感染的文件

· 删除被感染文件

· 不处理(仅仅记录)

如果主要操作失败

· 隔离被感染的文件

· 删除被感染的文件

· 不处理(仅仅记录)

在两种情形中我都把病毒检测程序设置为第一种选择(这是默认的配置)因此如果病毒检测程序不能清除我的收件箱文件中的病毒它就使用自己的权限隔离整个文件不幸的是这引起了收件箱中当前所有的消息都不能访问

假设不知何故你在收到包含病毒的消息的时候禁止病毒检测程序把收件箱文件放入隔离区(也许在这个时候关闭了它)你已经知道不应该打开不熟悉的附件了在查看收件箱中的消息主题的时候你注意到了带有病毒的可疑消息你没有打开它只是简单地删除了该消息

至少对于Netscape Communicator(可能还有其它产品)的用户来说当你删除消息的时候它并没有被真正地从系统中删除其实它只是被移动到另一个文件夹(文件)中了典型的情况下它叫做垃圾箱(Trash)

如果你把增量备份文件副本放在磁盘上那么下次执行整个磁盘扫描的时候可能发现该备份文件中包含病毒根据几种因素这样的增量备份文件可能会也可能不会被认为对于恢复目的是没有价值的如果某个增量备份文件被认为是没有价值的那么整个备份计划的实施都没有价值

你很幸运可以消除这种情形其解决方法就是清除电子邮件客户端中的垃圾箱并启动一个全新的完整备份序列

我告诉你这些信息是为了得到一个结论电子邮件病毒可能更麻烦它不仅会引起你丢失重要的业务电子邮件消息还可能在从备份文件中恢复业务数据的过程中引起你丢失大范围的多种业务信息(由于这个原因我从来不做增量备份即使它的速度快得多每次备份的时候我保存自从上次完全备份后的改变过的全部文件因此为了完全恢复系统只需要最先的和最后的完全备份此外我经常扫描备份文件以消除病毒如果我发现最后的备份文件中包含了病毒我就从磁盘上删除该病毒然后再进行一次完全备份)

上面谈到不允许带有病毒的电子邮件进入你的电子邮件数据结构中是极其重要的本文的目的是为你演示一种实现该目标的方法

我将要描述的计划将非常简单并且很便宜它所需要的资源由三个计算机程序和两个电子邮件帐号(一个公共的一个私有的)组成

(私有帐号的意思是只有你知道的电子邮件帐号你不能把该电子邮件地址洩漏给任何人包括最好的朋友你的秘密的电子邮件地址没有出现在世界上的任何计算机的任何地址薄中是极其重要的这对于你喜欢阅读电子邮件消息的受信任的朋友的地址薄也是正确的)

操作计划

操作过程是非常简单的现在让我们把这两个程序叫做程序A和程序B你一定不要使用电子邮件客户端从公共电子邮件帐户中下载电子邮件消息你应该运行程序A下载消息

每个消息一个文件

当你运行程序A的时候它将下载服务器上所有的消息并把每个消息写入磁盘上的特定文件夹中的不同的文件中我们需要注意的是消息彼此还是分开的某个消息中的病毒不会破坏其它的消息

扫描消息文件

下一步使用病毒检测程序扫描文件夹中的所有消息文件清除或移走包含病毒的消息

转发剩余的清洁的消息

下一步是运行程序B它把剩余的消息转发到秘密的电子邮件帐号如果执行了病毒检测所有消息都应该是不含病毒的这个过程比上面两个过程的时间长一些

无需等待

但是你不需要等待上述的第三步完成才能阅读消息简单地打开电子邮件客户端程序并开始从秘密电子邮件帐号下载并阅读消息只要第一个消息被转发到了秘密的电子邮件帐号就可以下载并阅读了在接下来的几分钟内消息被转发到秘密电子邮件帐号速度比你阅读的速度快得多

上一篇:Java多线程之Atomic:原子变量与原子类

下一篇:Java包含一个非常简单的享元模式