본문 바로가기
소프트웨어/서버관련

Spamwall을 이용한 머큐리(Mercury/32) 스팸방지

by 씨디맨 2007. 11. 16.
320x100

설치 과정은 아래 내용을 참조하면 된다.
spamwall은 머큐리 메일 서버의 daemon 형태로 동작한다.

아래 설치 문서에 나오지만 spamwall은 설치후 스팸인 메일과 아닌 메일을 학습시켜줘야 한다..
스팸 메일들을 spam 계정으로 전달하면 분석해서 word4.db3 파일에 스팸 단어들을 등록한다..
반대로 nospam 계정으로 보내면 분석해서 white4.db3 에 스팸이 아닌 메일에 관해 등록한다.. spamwall은 word4.db3와 white4.db3 파일을 분석해서 스팸인지 아닌지를 결정한다.

메일이 들어오면 spamwall 에서 이를 검사하여 스팸인지 아닌지를 판별하고,
메일 헤더에 그 정보를 추가한다.

X-SPAMWALL: Passed through antiSPAM test by SpamWall 4.1.0 on localhost (1062)
X-SPAMWALL: probability - 100.0%
X-SPAMWALL: SPAM detected!

따라서 머큐리 메일 서버의 필터에서 헤더 중 위와 같이 "SPAM detected!".. 문장이 있을 경우 이를 스팸으로 간주해서 걸르면 된다.
하지만 문제는... 스팸이 아닌 메일이 스팸으로 될 수 있기 때문에, 서버에서 걸르기 보단 각 사용자에게 필터링하도록(아웃룩의 규칙 이용) 하는 것이 안전하다..

스팸이 아닌 메일이 계속해서 스팸으로 등록되어 필터링 될 경우에는..
해당 메일에 관한 정보를 words4.db3에서 직접 삭제하여도 된다. 방법은..
우선 Mercury/spamwall 디렉토리에서..
1. command#> sqlite3.exe words4.db3 .dump > words4.txt
  이 명령은 word4 디비 파일을 텍스트 파일로 바꿔준다..
2. words4.txt 파일을 열어 스팸메일이 아닌 메일에 있는 단어들(제목,보낸이,내용 에서)..을 삭제한다.. txt 파일은 "INSERT INTO "words" VALUES(1277, 'su*무보증', 354, 0, 20060906, 0.5);" 이런 형식으로 되어 있으니 찾아서 그 줄을 삭제하면 된다..
3. words4.txt 파일을 편집 후, word4.db3를 백업하고 다음 명령을 실행한다.. (words4.db3 삭제)
  command#> sqlite3.exe words4.db3 < words4.txt
  이 명령은 words4.txt 파일의 쿼리문을 실행해서 다시 스팸 디비를 생성하는 것이다.

white4.db3 도 마찬가지로 수정할 수 있다..

자세한 설정 내용은 spamwall 설치하면 spamwall.rtf 파일이 있으니 이를 참조하면 되겠다.

----------------------------------------------------------------------------------
Mercury/32+Spamwall 연동
# 작성자 : 송태한
# 작성일 : 2005-10-28

1. Mercury/32 설치 및 셋팅
2. Spamwall 다운로드
- http://www.ararat.cz/eng/show.php?spamwall
  Spamwall 설치 파일, 단어 DB, 메뉴얼을 다운 받는다.
3. Mercury/32가 실행되고 있으면 종료 시킨다.
4. Spamwall을 설치 한다.
- 설치시 설치 디렉토리는 Mercury/32가 설치되어 있는 디렉토리에 설치한다.
5. 설치가 끝난 후 Spamwall 폴더에 다운받은 단어 DB를 압축을 풀어서 넣는다.
6. spamwall.ini 파일의 설정을 한다.
- 다운 받은 메뉴얼을 보고 ini파일 설정을 한다.
7. local mail 계정을 3개를 만든다.
- spam, nospam, spamcheck
  (spam과 nospam은 ini파일에서 설정한 것과 동일해야 한다. 계정명은 변경가능한다.)
- spam => 스팸메일로 구분되지 않은 메일을 다음부터 스팸메일로 구분하도록 처리하기 위한 계정
- nospam => 스팸메일이 아닌되 스팸메일로 구분된 메일을 정정하기 위한 계정
- spamcheck => Mercury에서 필터링 규칙을 정하여 들어오는 메일을 spamcheck로 복사하여
               수동으로 스팸과 정상메일을 체크하여 분류하기 위한 계정
8. Mercury/32를 실행시킨다.
9. 스팸메일과 정상메일을 전달시켜서 베이시안 필터를 학습시킨다.
- 스팸메일은 spam 계정으로 전달
- 정상메일은 nospam 계정으로 전달
※ 전달시 주의할 점
- 첨부파일로 메일을 전달 해야 함
- 메일 전달시 이왕이면 하나씩 첨부파일로 전달하는 것이 좋음
10. 베이시안 필터 학습기간
- 처음부터 필터링이 제대로 이루어 지지 않는다. 베이시안 필터는 메일을 검색하여
  단어와 메일주소 목록을 스스로 작성하여 스팸과 정상메일을 구분하는 DB로 사용한다.
  그러기 때문에 어느정도의 학습기간이 필요하다.

반응형

댓글