CuộcchiếnthưrácvớiFuzzyOCRvàSpamAssassintrênFedora12
Trong bài viết sau, TàiLiệu sẽ giới thiệu với các bạn cách thức quét
email để phát hiện ảnh spam với công cụ
FuzzyOCR trênFedora12
server.
FuzzyOCR là 1 plugin dành cho SpamAssassin, được trang bị để nhằm vào
số lượng lớn thưrác có chứa ảnh nội dung (không phải hoặc ít nội dung dưới
dạng text). Sử dụng phương pháp phân tích tiên tiến, chương trình tự động
thu thập nội dung, thuộc tính của hình ảnh để phân biệt giữa 2 loại thư bình
thường vàthư rác. FuzzyOCR sẽ cố gắng sử dụng ít tài nguyên hệ thống ở
mức có thể bằng cách scan những email không được phân loại bằng
SpamAssassin, qua đó tránh được những việc làm không cần thiết.
1. Lưu ý sơ bộ
Hệ thống sử dụng ở đây là Fedora12. Giả sử rằng SpamAssassin đã cài đặt
và hoạt động ổn định với
/etc/mail/spamassassin/ là thư mục thiết lập mặc
định. Nếu thư mục của bạn có khác biệt (chẳng hạn có cài đặt
ISPConfig 2
thì thư mục đó sẽ là
/home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin/),
hoàn toàn không có vấn đề gì cả.
2. Cài đặt thành phần cần thiết của FuzzyOCR
FuzzyOCR có yêu cầu 1 số thành phần như ocrad và gocr, do đó ta phải cài
đặt trước:
yum install netpbm gifsicle giflib giflib-utils
gocr ocrad ImageMagick tesseract perl-String-Approx
perl-MLDBM perl-CPAN
Bên cạnh đó, chúng ta cũng phải cài đặt module MLDBM::Sync của Perl,
nhưng lại không có sẵn như gói RPM thông thường. Mở
Perl shell…:
perl -MCPAN -e shell
Và cài đặt theo câu lệnh sau:
install MLDBM::Sync
Sau đó gõ q để thoát khỏi Perl shell.
3. Cài đặt FuzzyOCR
Tiếp theo chúng ta cần tảivà cài đặt FuzzyOCRtại đây. Lưu ý rằng nên
chọn bản mới nhất ổn định theo khuyến cáo từ các nhà phát triển
FuzzyOCR:
Khuyến cáo hiện nay dành cho phiên bản phát triển bởi vì bản ổn định thiếu
khá nhiều chức năng.
cd /usr/src/
wget http://users.own-
hero.net/~decoder/fuzzyocr/fuzzyocr-3.5.1-
devel.tar.gz
Sau đó giải nén gói FuzzyOCR, đồng thời di chuyển toàn bộ file FuzzyOcr*
và thư mục FuzzyOcr (vốn ở trong thư mục FuzzyOcr-3.5.1/) tới
/etc/mail/spamassassin
:
tar xvfz fuzzyocr-3.5.1-devel.tar.gz
cd FuzzyOcr-3.5.1/
mv FuzzyOcr* /etc/mail/spamassassin/
Nếu thư mục SpamAssassin khác biệt (ví dụ
/home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin/)
thì phải thay thế dòng lệnh cuối cùng bên trên bằng:
mv FuzzyOcr*
/home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin/
Đừng vội xóa thư mục /usr/src/FuzzyOcr-3.5.1/ vì trong đó có chứa thưrác
mẫu để kiểm tra liệuFuzzyOCR có hoạt động hay không. Việc tiếp theo là
thiết lập và tùy chỉnh FuzzyOCR.
4. Thiết lập FuzzyOCR
File tùy chỉnh này nằm ở thư mục /etc/mail/spamassassin/FuzzyOcr.cf. Mở
file đó và chỉnh 1 số chi tiết sau:
vi /etc/mail/spamassassin/FuzzyOcr.cf
Đặt dòng sau vào vị trí xác định từ ngữ nhận dạng spam của FuzzyOCR:
[ ]
focr_global_wordlist
/etc/mail/spamassassin/FuzzyOcr.words
[ ]
/etc/mail/spamassassin/FuzzyOcr.words thực chất là danh sách từ đã được
định nghĩa trước đi kèm với FuzzyOCR. Các bạn có thể chỉnh sửa file này
nếu muốn.
Thay đổi tiếp theo:
[ ]
# Include additional scanner/preprocessor commands
here:
#
focr_bin_helper pnmnorm, pnminvert, pamthreshold,
ppmtopgm, pamtopnm
focr_bin_helper tesseract
[ ]
thành:
[ ]
# Include additional scanner/preprocessor commands
here:
#
focr_bin_helper pnmnorm, pnminvert, convert,
ppmtopgm, tesseract
[ ]
Cuối cùng thêm tiếp dòng lệnh sau:
[ ]
# Search path for locating helper applications
focr_path_bin
/usr/local/netpbm/bin:/usr/local/bin:/usr/bin
focr_preprocessor_file
/etc/mail/spamassassin/FuzzyOcr.preps
focr_scanset_file
/etc/mail/spamassassin/FuzzyOcr.scansets
focr_enable_image_hashing 2
focr_digest_db
/etc/mail/spamassassin/FuzzyOcr.hashdb
focr_db_hash /etc/mail/spamassassin/FuzzyOcr.db
focr_db_safe
/etc/mail/spamassassin/FuzzyOcr.safe.db
[ ]
Với 4 dòng mã cuối chúng ta có thể kích hoạt cơ chế ảnh hash. Và đây là
những gì nhà phát triển FuzzyOCR nói về cơ chế này:
Cơ sở dữ liệu của cơ chế ảnh hash cho phép các plugin lưu trữ vector của
ảnh tới cơ sở dữ liệu, vì vậy dễ dàng nhận ra khi những bức ảnh này khi nó
đến lần thứ 2 (do vậy không cần phải tiến hành scan lại). Điểm đặc biệt
trong chức năng này là cũng vẫn có thể nhận dạng được những bức ảnh
tương tự, hoặc đã được chỉnh sửa chút ít (được làm bởi những kẻ spam).
Nếu bạn dùng
/home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin
thay vì /etc/mail/spamassassin, file thiết lập của FuzzyOCR là
/home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin/Fu
zzyOcr.cf
thay vì /etc/mail/spamassassin/FuzzyOcr.cf, hãy chỉnh lại file này.
Trong file tùy chỉnh, bạn sẽ phải thay thế tất cả
/etc/mail/spamassassin với
/home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin,
hoặc bỏ lại như dưới đây trước khi tạo 1 symlink từ
/etc/mail/spamassassin
thành
/home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin
như sau:
mkdir /etc/mail/
ln -s
/home/admispconfig/ispconfig/tools/spamassassin/etc
/mail/spamassassin/ /etc/mail/spamassassin
Vậy là đã kết thúc bước thiết lập và tùy chỉnh FuzzyOCR. Tiếp theo hãy chờ
xem liệu có hoạt động như mong đợi hay không.
5. Kiểm tra FuzzyOCR
Ở phía trên, chúng ta đã đề cập rằng FuzzyOCR đi kèm với mẫu thư ảnh
spam (trong thư mục
samples/):
ls -l /usr/src/FuzzyOcr-3.5.1/samples/
Và kết quả thu được sẽ có dạng như sau:
total 156
-rw-r r 1 1000 users 13633 2007-01-07 12:55 ocr-
animated.eml
-rw-r r 1 1000 users 16108 2007-01-07 12:55 ocr-
gif.eml
-rw-r r 1 1000 users 27506 2007-01-07 12:55 ocr-
jpg.eml
-rw-r r 1 1000 users 27842 2007-01-07 12:59 ocr-
multi.eml
-rw-r r 1 1000 users 24657 2007-01-07 12:55 ocr-
obfuscated.eml
-rw-r r 1 1000 users 18236 2007-01-07 12:55 ocr-
png.eml
-rw-r r 1 1000 users 16113 2007-01-07 12:55 ocr-
wrongext.eml
-rw-r r 1 1000 users 3576 2007-01-
07 12:55 README
Chúng ta có thể feed mỗi email tới SpamAssassin để thấy rằng nếu
FuzzyOCR liên kết đúng tới SpamAssassin. Tìm xem file thực thi
spamassassin ở đâu (trong đường dẫn đầy đủ) bằng cách chạy lệnh sau:
which spamassassin
Nếu có hiển thị kết quả, spamassassin có ở trong PATH và bạn không cần
phải chỉ định đường dẫn đầy đủ tới spamassassin để chạy ứng dụng.
Nếu bạn không biết spamassassin ở đâu, có thể tìm ra bằng cách chạy lệnh
sau:
updatedb
locate spamassassin
Nếu bạn đang sử dụng ISPConfig 2 thì spamassassin ở đây:
/home/admispconfig/ispconfig/tools/spamassassin/usr/bin/spamassassin.
Bây giờ bạn đã biết spamassassin ở đâu, thì có thể feed ảnh spam mẫu tới
spamassassin như sau:
/path/to/spamassassin debug FuzzyOcr <
/usr/src/FuzzyOcr-3.5.1/samples/ocr-gif.eml >
/dev/null
Ví dụ:
/home/admispconfig/ispconfig/tools/spamassassin/usr
/bin/spamassassin debug FuzzyOcr <
/usr/src/FuzzyOcr-3.5.1/samples/ocr-gif.eml >
/dev/null
Hoặc nếu spamassassin có ở trong PATH của bạn:
spamassassin debug FuzzyOcr < /usr/src/FuzzyOcr-
3.5.1/samples/ocr-gif.eml > /dev/null
Và sẽ thấy rất nhiều kết quả hiển thị, đoạn cuối sẽ trông như thế này:
[ ]
[10025] dbg: FuzzyOcr:
[10025] dbg: FuzzyOcr: Friday Augurt 4, 4:01 pm ET
[10025] dbg: FuzzyOcr: LAS VEGAS, NEVADA (MARKET
WIRE) Aug 4, 2006 auantum Energy, lnc. (OTC
[10025] dbg: FuzzyOcr: BB:aEGY.oB-_-
[10025] dbg: FuzzyOcr: auantum Energy, lnc. is
pleased to announce that it has applied to have its
shares listed for
[10025] dbg: FuzzyOcr: trading on the Frankfurt
Stock Exchange. The company has retained the
services ofBaltic
[10025] dbg: FuzzyOcr: lnvestment Group of Hamburg,
Germany to assist with the application.
[10025] dbg: FuzzyOcr:
[10025] dbg: FuzzyOcr: _ qEGY,OB "
[10025] dbg: FuzzyOcr:
[10025] dbg: FuzzyOcr: <<=end
[10025] info: FuzzyOcr: Scanset "ocrad" found word
"target" with fuzz of 0.0000
[10025] info: FuzzyOcr: line: "short term price
target oo"
[10025] info: FuzzyOcr: Scanset "ocrad" found word
"service" with fuzz of 0.0000
[10025] info: FuzzyOcr: line: "trading on the
frankfurt stock exchange the company has retained
the services ofbaltic"
[10025] info: FuzzyOcr: Scanset "ocrad" found word
"stock" with fuzz of 0.0000
[10025] info: FuzzyOcr: line: "hot energy stocki"
[10025] info: FuzzyOcr: Scanset "ocrad" found word
"stock" with fuzz of 0.0000
[10025] info: FuzzyOcr: line: "trading on the
frankfurt stock exchange the company has retained
the services ofbaltic"
[10025] info: FuzzyOcr: Scanset "ocrad" found word
"price" with fuzz of 0.0000
[10025] info: FuzzyOcr: line: "current price o"
[10025] info: FuzzyOcr: Scanset "ocrad" found word
"price" with fuzz of 0.0000
[10025] info: FuzzyOcr: line: "short term price
target oo"
[10025] info: FuzzyOcr: Scanset "ocrad" found word
"company" with fuzz of 0.0000
[10025] info: FuzzyOcr: line: "trading on the
frankfurt stock exchange the company has retained
the services ofbaltic"
[10025] info: FuzzyOcr: Scanset "ocrad" found word
"recommendation" with fuzz of 0.0000
[10025] info: FuzzyOcr: line: "sboog bup
recommendation"
[10025] dbg: FuzzyOcr: Enough OCR Hits without
space stripping, skipping second matching pass
[10025] info: FuzzyOcr: Scanset "ocrad" generates
enough hits (8), skipping further scansets
[10025] info: FuzzyOcr: Message is spam, score =
15.000
[10025] info: FuzzyOcr: Adding Hash to
"/etc/mail/spamassassin/FuzzyOcr.db" with score
"15.000"
[10025] dbg: FuzzyOcr: Digest:
538584:327:549:7::255:255:255:255:168580::0:0:0:0:9
098::0:128:0:75:1086::0:0:128:15:395::128:0:128:53:
213::0:0:255:29:115
[10025] info: FuzzyOcr: Words found:
[10025] info: FuzzyOcr: "target" in 1 lines
[10025] info: FuzzyOcr: "service" in 1 lines
[10025] info: FuzzyOcr: "stock" in 2 lines
[10025] info: FuzzyOcr: "price" in 2 lines
[10025] info: FuzzyOcr: "company" in 1 lines
[10025] info: FuzzyOcr: "recommendation" in 1 lines
[10025] info: FuzzyOcr: (12 word occurrences found)
[10025] dbg: FuzzyOcr: Remove DIR:
/tmp/.spamassassin10025QnPTq8tmp
[10025] dbg: FuzzyOcr: FuzzyOcr ending
successfully
[10025] dbg: FuzzyOcr: Processed in 2.191381 sec.
Bạn có thể thấy /usr/src/FuzzyOcr-3.5.1/samples/ocr-gif.eml đã được phân
loại spam với số điểm 15, có nghĩa là FuzzyOCR đã hoạt động.
Chúc các bạn thành công!
Các đường dẫn tham khảo:
FuzzyOCR, SpamAssassinvà Fedora.
. Cuộc chiến thư rác với FuzzyOCR và SpamAssassin trên Fedora 12
Trong bài viết sau, Tài Liệu sẽ giới thiệu với các bạn cách thức. ảnh spam với công cụ
FuzzyOCR trên Fedora 12
server.
FuzzyOCR là 1 plugin dành cho SpamAssassin, được trang bị để nhằm vào
số lượng lớn thư rác có chứa