스팸 방지 · 5 min read · Nov 18, 2025

페도라 12에서 FuzzyOCR과 SpamAssassin으로 이미지 스팸 방지하기

페도라 12에서 FuzzyOCR과 SpamAssassin으로 이미지 스팸 방지하기

버전 1.0
저자: Falko Timme
트위터에서 나를 팔로우하세요

이 튜토리얼은 페도라 12 서버에서 FuzzyOCR을 사용하여 이메일의 이미지 스팸을 스캔하는 방법을 설명합니다. FuzzyOCR은 이미지가 주요 콘텐츠 운반체인 원치 않는 대량 메일을 대상으로 하는 SpamAssassin의 플러그인입니다. 다양한 방법을 사용하여 이미지의 내용과 속성을 분석하여 정상 메일(햄)과 스팸 메일을 구별합니다. FuzzyOCR은 SpamAssassin에 의해 이미 스팸으로 분류되지 않은 메일만 스캔하여 시스템 부하를 낮추려고 하며, 불필요한 작업을 피합니다.

이것이 당신에게 효과가 있을 것이라는 보장은 하지 않습니다!

1 사전 노트

이 기사에서는 기본 시스템으로 페도라 12를 사용할 것입니다.

SpamAssassin이 이미 설치되어 있고 작동 중이며, /etc/mail/spamassassin/가 주요 구성 디렉토리라고 가정합니다. 만약 당신의 디렉토리가 다르다면(예: ISPConfig 2가 설치되어 있다면, 디렉토리는 /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin/입니다), 문제 없습니다. 무엇을 변경해야 하는지 주석을 달겠습니다.

SpamAssassin 버전이 FuzzyOCR과 호환되는지 확인하십시오. 예를 들어, 제가 여기서 설치할 FuzzyOCR 버전(fuzzyocr-3.5.1-devel.tar.gz)은 SpamAssassin 3.1.4 이상이 필요합니다.

2 FuzzyOCR의 필수 구성 요소 설치

FuzzyOCR에는 ocrad와 gocr와 같은 몇 가지 필수 구성 요소가 있으며, 다음과 같이 설치할 수 있습니다:

yum install netpbm gifsicle giflib giflib-utils gocr ocrad ImageMagick tesseract perl-String-Approx perl-MLDBM perl-CPAN

또한 RPM 패키지로는 사용할 수 없는 MLDBM::Sync Perl 모듈을 설치해야 합니다. Perl 셸을 엽니다….

perl -MCPAN -e shell

… 그리고 다음과 같이 모듈을 설치합니다:

install MLDBM::Sync

그 후 Perl 셸을 종료하려면

q

를 입력합니다.

3 FuzzyOCR 설치

다음으로 http://fuzzyocr.own-hero.net/wiki/Downloads에서 최신 FuzzyOCR 개발 버전을 다운로드하고 설치합니다. 안정적인 버전 대신 개발 버전을 다운로드하는 이유는 FuzzyOCR 개발자들이 다음과 같이 말하기 때문입니다:

“현재 권장되는 것은 개발 버전입니다. 안정적인 버전은 기능이 부족하고 매우 오래되었습니다.”

cd /usr/src/  
wget http://users.own-hero.net/~decoder/fuzzyocr/fuzzyocr-3.5.1-devel.tar.gz

그런 다음 FuzzyOCR을 압축 해제하고 모든 FuzzyOcr* 파일과 FuzzyOcr 디렉토리(모두 FuzzyOcr-3.5.1/ 디렉토리에 있음)를 /etc/mail/spamassassin으로 이동합니다:

tar xvfz fuzzyocr-3.5.1-devel.tar.gz  
cd FuzzyOcr-3.5.1/  
mv FuzzyOcr* /etc/mail/spamassassin/

SpamAssassin 디렉토리가 다르다면, 예를 들어 /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin/이라면 마지막 명령은 다음으로 교체해야 합니다:

mv FuzzyOcr* /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin/

아직 /usr/src/FuzzyOcr-3.5.1/ 디렉토리를 삭제하지 마십시오. 그 안에는 나중에 FuzzyOCR이 예상대로 작동하는지 테스트하는 데 필요한 샘플 이미지 스팸 이메일이 들어 있는 디렉토리(samples/)가 있습니다.

이제 FuzzyOCR이 설치되었으니, 이제 구성해야 합니다.

4 FuzzyOCR 구성

FuzzyOCR의 구성 파일은 /etc/mail/spamassassin/FuzzyOcr.cf입니다. 그 파일의 거의 모든 것이 주석 처리되어 있습니다. 이제 그 파일을 열고 몇 가지 수정을 합니다:

vi /etc/mail/spamassassin/FuzzyOcr.cf

다음 줄을 추가하여 FuzzyOCR의 스팸 단어 파일의 위치를 정의합니다:

| [...] focr_global_wordlist /etc/mail/spamassassin/FuzzyOcr.words [...] |

/etc/mail/spamassassin/FuzzyOcr.words는 FuzzyOCR과 함께 제공되는 미리 정의된 단어 목록입니다. 필요에 따라 조정할 수 있습니다.

다음으로 변경합니다:

| [...] # Include additional scanner/preprocessor commands here: # focr_bin_helper pnmnorm, pnminvert, pamthreshold, ppmtopgm, pamtopnm focr_bin_helper tesseract [...] |

다음과 같이:

| [...] # Include additional scanner/preprocessor commands here: # focr_bin_helper pnmnorm, pnminvert, convert, ppmtopgm, tesseract [...] |

마지막으로 다음 줄을 추가/활성화합니다:

| [...] # 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 [...] |

마지막 네 줄로 이미지 해싱을 활성화합니다. FuzzyOCR 개발자들이 이미지 해싱에 대해 말하는 것은 다음과 같습니다:

“이미지 해싱 데이터베이스 기능은 플러그인이 이미지 기능의 벡터를 데이터베이스에 저장할 수 있게 하여, 이 이미지가 두 번째로 도착할 때 이를 인식할 수 있도록 합니다(따라서 다시 스캔할 필요가 없습니다). 이 기능의 특별한 점은 스팸 발송자들이 약간 변경한 경우에도 이미지를 다시 인식할 수 있다는 것입니다.”

/home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin 대신 /etc/mail/spamassassin를 사용하는 경우, FuzzyOCR의 구성 파일은 /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin/FuzzyOcr.cf가 되므로 그 파일을 편집해야 합니다. 구성 파일에서 /etc/mail/spamassassin의 모든 항목을 /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin으로 교체하거나, 이전에 보여준 대로 두고 /etc/mail/spamassassin에서 /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin으로 심볼릭 링크를 생성할 수 있습니다:

mkdir /etc/mail/  
ln -s /home/admispconfig/ispconfig/tools/spamassassin/etc/mail/spamassassin/ /etc/mail/spamassassin

이것으로 FuzzyOCR 구성은 완료되었습니다. 이제 예상대로 작동하는지 확인해 보겠습니다.

5 FuzzyOCR 테스트

이전에 FuzzyOCR이 샘플 이미지 스팸 메일(샘플 디렉토리)에 포함되어 있다고 언급했습니다:

ls -l /usr/src/FuzzyOcr-3.5.1/samples/

출력은 다음과 같아야 합니다:

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

이제 각 이메일을 SpamAssassin에 제공하여 FuzzyOCR이 SpamAssassin에 올바르게 연결되었는지 확인할 수 있습니다. spamassassin 실행 파일이 어디에 있는지 찾습니다(보통 PATH에 있습니다 - 다음을 실행하여 확인할 수 있습니다:

which spamassassin

결과가 표시되면 spamassassin이 PATH에 있으며, 실행할 때 전체 경로를 지정할 필요가 없습니다.)

spamassassin이 어디에 있는지 모르는 경우 다음을 실행하여 찾을 수 있습니다:

updatedb  
locate spamassassin

ISPConfig 2를 사용하는 경우 spamassassin은 다음 위치에 있습니다: /home/admispconfig/ispconfig/tools/spamassassin/usr/bin/spamassassin

이제 spamassassin이 어디에 있는지 알았으니, 샘플 이미지 스팸 메일을 spamassassin에 다음과 같이 제공할 수 있습니다:

/path/to/spamassassin --debug FuzzyOcr < /usr/src/FuzzyOcr-3.5.1/samples/ocr-gif.eml > /dev/null

예를 들어:

/home/admispconfig/ispconfig/tools/spamassassin/usr/bin/spamassassin --debug FuzzyOcr < /usr/src/FuzzyOcr-3.5.1/samples/ocr-gif.eml > /dev/null

또는 spamassassin이 PATH에 있는 경우:

spamassassin --debug FuzzyOcr < /usr/src/FuzzyOcr-3.5.1/samples/ocr-gif.eml > /dev/null

이제 많은 출력이 표시되어야 하며, 마지막 부분은 다음과 같아야 합니다:

[...]  
[10025] dbg: FuzzyOcr:  
[10025] dbg: FuzzyOcr: 금요일 8월 4일, 오후 4:01 ET  
[10025] dbg: FuzzyOcr: 라스베가스, 네바다--(마켓 와이어)--2006년 8월 4일 -- auantum Energy, lnc. (OTC  
[10025] dbg: FuzzyOcr: BB:aEGY.oB-_-  
[10025] dbg: FuzzyOcr: auantum Energy, lnc.는 프랑크푸르트 증권 거래소에 상장하기 위해 신청했다고 발표했습니다. 이 회사는 신청을 지원하기 위해 독일 함부르크의 Baltic Investment Group의 서비스를 유지했습니다.  
[10025] dbg: FuzzyOcr:  
[10025] dbg: FuzzyOcr: _ qEGY,OB "  
[10025] dbg: FuzzyOcr:  
[10025] dbg: FuzzyOcr: <<=end  
[10025] info: FuzzyOcr: Scanset "ocrad"에서 단어 "target"을 0.0000의 퍼지로 찾았습니다.  
[10025] info: FuzzyOcr: line: "short term price target oo"  
[10025] info: FuzzyOcr: Scanset "ocrad"에서 단어 "service"을 0.0000의 퍼지로 찾았습니다.  
[10025] info: FuzzyOcr: line: "trading on the frankfurt stock exchange the company has retained the services ofbaltic"  
[10025] info: FuzzyOcr: Scanset "ocrad"에서 단어 "stock"을 0.0000의 퍼지로 찾았습니다.  
[10025] info: FuzzyOcr: line: "hot energy stocki"  
[10025] info: FuzzyOcr: Scanset "ocrad"에서 단어 "stock"을 0.0000의 퍼지로 찾았습니다.  
[10025] info: FuzzyOcr: line: "trading on the frankfurt stock exchange the company has retained the services ofbaltic"  
[10025] info: FuzzyOcr: Scanset "ocrad"에서 단어 "price"을 0.0000의 퍼지로 찾았습니다.  
[10025] info: FuzzyOcr: line: "current price o"  
[10025] info: FuzzyOcr: Scanset "ocrad"에서 단어 "price"을 0.0000의 퍼지로 찾았습니다.  
[10025] info: FuzzyOcr: line: "short term price target oo"  
[10025] info: FuzzyOcr: Scanset "ocrad"에서 단어 "company"을 0.0000의 퍼지로 찾았습니다.  
[10025] info: FuzzyOcr: line: "trading on the frankfurt stock exchange the company has retained the services ofbaltic"  
[10025] info: FuzzyOcr: Scanset "ocrad"에서 단어 "recommendation"을 0.0000의 퍼지로 찾았습니다.  
[10025] info: FuzzyOcr: line: "sboog bup recommendation"  
[10025] dbg: FuzzyOcr: 공간 제거 없이 충분한 OCR 히트, 두 번째 일치 패스를 건너뜁니다...  
[10025] info: FuzzyOcr: Scanset "ocrad"에서 충분한 히트(8)를 생성하여 추가 스캔 세트를 건너뜁니다...  
[10025] info: FuzzyOcr: 메시지는 스팸이며, 점수 = 15.000  
[10025] info: FuzzyOcr: 점수 "15.000"으로 "/etc/mail/spamassassin/FuzzyOcr.db"에 해시 추가  
[10025] dbg: FuzzyOcr: 다이제스트: 538584:327:549:7::255:255:255:255:168580::0:0:0:0:9098::0:128:0:75:1086::0:0:128:15:395::128:0:128:53:213::0:0:255:29:115  
[10025] info: FuzzyOcr: 발견된 단어:  
[10025] info: FuzzyOcr: "target"이 1줄에  
[10025] info: FuzzyOcr: "service"이 1줄에  
[10025] info: FuzzyOcr: "stock"이 2줄에  
[10025] info: FuzzyOcr: "price"이 2줄에  
[10025] info: FuzzyOcr: "company"이 1줄에  
[10025] info: FuzzyOcr: "recommendation"이 1줄에  
[10025] info: FuzzyOcr: (12개의 단어 발생이 발견됨)  
[10025] dbg: FuzzyOcr: DIR 제거: /tmp/.spamassassin10025QnPTq8tmp  
[10025] dbg: FuzzyOcr: FuzzyOcr이 성공적으로 종료되었습니다...  
[10025] dbg: FuzzyOcr: 2.191381초에 처리되었습니다.

보시다시피 /usr/src/FuzzyOcr-3.5.1/samples/ocr-gif.eml은 15점으로 스팸으로 분류되었습니다. 따라서 FuzzyOCR이 작동하고 있습니다.

이제 SpamAssassin은 FuzzyOCR 덕분에 이미지 스팸을 인식할 수 있습니다.

6 링크

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.