스팸 방지 · 5 min read · Nov 17, 2025
FuzzyOCR 및 SpamAssassin으로 이미지 스팸 방지하기 (Debian Lenny)
FuzzyOCR 및 SpamAssassin으로 이미지 스팸 방지하기 (Debian Lenny)
버전 1.0
저자: Falko Timme
Twitter에서 나를 팔로우하세요
이 튜토리얼에서는 Debian Lenny 서버에서 FuzzyOCR을 사용하여 이메일에서 이미지 스팸을 스캔하는 방법을 설명합니다. FuzzyOCR은 이미지가 주요 콘텐츠 운반체인 원치 않는 대량 메일을 목표로 하는 SpamAssassin의 플러그인입니다. 다양한 방법을 사용하여 콘텐츠와 이미지의 속성을 분석하여 정상 메일(햄)과 스팸 메일을 구별합니다. FuzzyOCR은 SpamAssassin에 의해 이미 스팸으로 분류되지 않은 메일만 스캔하여 시스템 부하를 낮추려고 하며, 불필요한 작업을 피합니다.
이것이 당신에게 작동할 것이라는 보장은 하지 않습니다!
1 사전 참고
이 기사에서는 기본 시스템으로 Debian Lenny를 사용할 것입니다.
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와 같은 몇 가지 필수 구성 요소가 있으며, 다음과 같이 설치할 수 있습니다:
aptitude install netpbm gifsicle libungif-bin gocr ocrad libstring-approx-perl libmldbm-sync-perl imagemagick tesseract-ocr3 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 개발자들이 이미지 해싱에 대해 다음과 같이 말합니다:
“이미지 해싱 데이터베이스 기능은 플러그인이 이미지 특징 벡터를 데이터베이스에 저장할 수 있게 하여, 이 이미지가 두 번째로 도착할 때 이를 인식할 수 있게 합니다(따라서 다시 스캔할 필요가 없습니다). 이 기능의 특별한 점은 스팸 발송자가 약간 변경한 경우에도 이미지를 다시 인식할 수 있다는 것입니다.”
/etc/mail/spamassassin 대신 /home/admispconfig/ispconfig/tools/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 administrator users 13633 2007-01-07 12:55 ocr-animated.eml
-rw-r--r-- 1 administrator users 16108 2007-01-07 12:55 ocr-gif.eml
-rw-r--r-- 1 administrator users 27506 2007-01-07 12:55 ocr-jpg.eml
-rw-r--r-- 1 administrator users 27842 2007-01-07 12:59 ocr-multi.eml
-rw-r--r-- 1 administrator users 24657 2007-01-07 12:55 ocr-obfuscated.eml
-rw-r--r-- 1 administrator users 18236 2007-01-07 12:55 ocr-png.eml
-rw-r--r-- 1 administrator users 16113 2007-01-07 12:55 ocr-wrongext.eml
-rw-r--r-- 1 administrator users 3576 2007-01-07 12:55 README이제 이러한 이메일을 SpamAssassin에 공급하여 FuzzyOCR이 SpamAssassin에 올바르게 연결되었는지 확인할 수 있습니다. spamassassin 실행 파일이 어디에 있는지 찾으세요(보통 PATH에 있습니다 - 다음을 실행하여 확인할 수 있습니다:
which spamassassin결과가 표시되면 spamassassin이 PATH에 있으며, 실행하기 위해 spamassassin의 전체 경로를 지정할 필요가 없습니다.)
spamassassin이 어디에 있는지 모르는 경우 다음을 실행하여 찾을 수 있습니다:
updatedb
locate spamassassinISPConfig 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: 줄: "short term price target oo"
[10025] info: FuzzyOcr: Scanset "ocrad"에서 단어 "service"을 찾았습니다. 퍼지 값은 0.0000입니다.
[10025] info: FuzzyOcr: 줄: "trading on the frankfurt stock exchange the company has retained the services ofbaltic"
[10025] info: FuzzyOcr: Scanset "ocrad"에서 단어 "stock"을 찾았습니다. 퍼지 값은 0.0000입니다.
[10025] info: FuzzyOcr: 줄: "hot energy stocki"
[10025] info: FuzzyOcr: Scanset "ocrad"에서 단어 "stock"을 찾았습니다. 퍼지 값은 0.0000입니다.
[10025] info: FuzzyOcr: 줄: "trading on the frankfurt stock exchange the company has retained the services ofbaltic"
[10025] info: FuzzyOcr: Scanset "ocrad"에서 단어 "price"을 찾았습니다. 퍼지 값은 0.0000입니다.
[10025] info: FuzzyOcr: 줄: "current price o"
[10025] info: FuzzyOcr: Scanset "ocrad"에서 단어 "price"을 찾았습니다. 퍼지 값은 0.0000입니다.
[10025] info: FuzzyOcr: 줄: "short term price target oo"
[10025] info: FuzzyOcr: Scanset "ocrad"에서 단어 "company"을 찾았습니다. 퍼지 값은 0.0000입니다.
[10025] info: FuzzyOcr: 줄: "trading on the frankfurt stock exchange the company has retained the services ofbaltic"
[10025] info: FuzzyOcr: Scanset "ocrad"에서 단어 "recommendation"을 찾았습니다. 퍼지 값은 0.0000입니다.
[10025] info: FuzzyOcr: 줄: "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 링크
- FuzzyOCR: http://www.fuzzyocr.net/
- SpamAssassin: http://spamassassin.apache.org/
- Debian: http://www.debian.org/
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.