Chinaunix首页 | 论坛 | 博客
  • 博客访问: 18854504
  • 博文数量: 7460
  • 博客积分: 10434
  • 博客等级: 上将
  • 技术积分: 78178
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-02 22:54
文章分类

全部博文(7460)

文章存档

2011年(1)

2009年(669)

2008年(6790)

分类: BSD

2009-01-30 21:16:14

垃圾邮件无所不在,由早期文字形态的信件,进化到图文并貌的HTML格式。而由于anti-spam技术的进步,几乎可达到九成的拦阻率。但「道高一尺、魔高一丈」,spammer开始大量运用图片形态的方式来寄送邮件。图像式垃圾邮件在图片内容加入大量的噪声数据(noisy data),藉以回避扫描引擎的侦测。

以目前anti-spam市场所推出的产品,若是缺少扫描图像式垃圾邮件的功能,相信也无法在市场上生存,例如:IronPortSophos 等厂商皆推出具备相,关功能的产品。

当然,开放源码的SpamAssassin也不能在此一功能上缺席,也出现了不少相对应的solution,例如:OcrPlugin

而此篇文章所要介绍的 FuzzyOCR,是一套修改自OcrPluginSpamassassin plugin。同样是利用光学字符辨认(OCR)的方式,来识别图像式邮件所包含的「文字讯息」,并利用Fuzzy word matching算法判断辨识出来的文字。

主要具备了下列的功能:

  • Optical Character Recognition using different engines and settings
  • Fuzzy word matching algorithm applied to OCR results
  • Image hashing system to learn unique properties of known spam images
  • Dimension, size and integrity checking of images
  • Content-Type verification for the containing email

Matching and learning techniques

  1. 可弹性支持不同的OCR interface,并利用fuzzy word matching算法来处理辨识的结果。
  2. 支持DB,可将处理过的图片,以feature vectors的形态储存在数据库。因此相同或是类似的图片,便可以利用储存在DB的特征向量来处理。
  3. 能检测不同维度、size与整合性的测试。
  4. 邮件内容检测。

Resource saving techniques

  1. 仅扫描邮件,而非辨认该封信件是否为垃圾信件。信件的分类仍交由spamassassin所判别的分数高低来决定。
  2. 对于已达到spam分数门坎的邮件,FuzzyOCR在处理该封邮件时会忽略该封信件而不进行扫描,进而减轻系统负载。(3.5版之后提供)
  3. 藉由比对储存于DBfeature vectors(dimensions and file size)。若比对成功,则忽略该封信件,而不再进行OCR辨识与处理。

Safety measures

  1. 可设定扫描邮件timeout的时间,藉以避免Denial of Service的攻击。
  2. 使用word sets取代simple lists,避免FuzzyOCR错判的可能。

具体过程如下:

更新ports

# portsnap fetch update

通过ports安装

# cd /usr/ports/mail/p5-FuzzyOcr-devel
# make install clean

# cp /usr/local/share/examples/FuzzyOcr/FuzzyOcr.* /usr/local/etc/mail/spamassassin

# vi /usr/local/etc/mail/spamassassin/init.pre

加入如下内容:

# FuzzyOcr
loadplugin Mail::SpamAssassin::Plugin::FuzzyOcr

# vi /usr/local/etc/mail/spamassassin/FuzzyOcr.cf

确定focr_logfile设置为:

focr_logfile /var/log/FuzzyOcr.log

保存设置以后,重启反垃圾邮件网关引擎,例如:mailscanner

# /usr/local/etc/rc.d/mailscanner restart

如果没有用mailscanner,那么重启sa-spamd

# /usr/local/etc/rc.d/sa-spamd restart

测试是否正常工作:

# cd /tmp
# mkdir test;cd test
# fetch ~decoder/fuzzyocr/sample-mails.tar.gz
# unzip sample-mails.tar.gz
# spamassassin -t < ocr-gif.eml

或者查看日志文件:
# tail -f /var/log/FuzzyOcr.log
# tail -f /var/log/maillog

阅读(3639) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~