레이블이 anti-spam인 게시물을 표시합니다. 모든 게시물 표시
레이블이 anti-spam인 게시물을 표시합니다. 모든 게시물 표시

2007년 1월 23일 화요일

POPFile - 자동화된 메일 분류 도구




POPFile
은 일종의 POP3 Proxy입니다. POP3 서버와 메일 클라이언트 사이에 위치하면서 메일을 자동으로 분류해주는 기능을 하게 됩니다. 얼마 전에 소개해드린 SpamBayes가 Outlook Add-in 방식을 지원하는 것과 비교하면 POPFile이 설치 및 사용에 있어 조금 더 귀찮은 것이 사실입니다. 그러나 POPFile만의 장점도 있으니 계속 읽어보시기 바랍니다. ;-)



POPFile은 Perl로 만들어졌는데, Python을 사용하여 만들어진 SpamBayes와 기본적으로 거의 동일한 알고리즘을 사용하는 것이기 때문에 성능에 대해서는 따로 말씀을 드릴 필요가 없으리라 생각됩니다. 대신, POPFile만의 특징이 있는데 차근히 하나씩 살펴보도록 하죠.

1. 단순히 스팸 메일만 분류해주는 것이 아니라 다양한 bucket('양동이'란 말로 POPFile에서는 분류 기준이 되는 단위를 지칭합니다.)을 두고 여러 가지로 분류를 해주는 것이 가능합니다.

2. SpamBayes처럼 메일을 직접 특정폴더로 이동하는 것이 아니라 메일의 제목에 특정 문자열을 붙여준다거나 혹은 메일 헤더에 특정 문자열을 삽입하는 방식을 이용하기 때문에 이것을 사용해서 실제 메일 클라이언트의 분류 규칙을 따로 설정해야 합니다. 얼핏보면 오히려 불편해보일 수 있겠지만, POP3 Proxy로서는 이것이 최선일 겁니다. 대신 분류 기준을 만드는 것이 훨씬 수월해지는 것은 사실이니 그것만 해도 충분하지 않을까요?

3. POPFile은 Perl로 만들어졌기 때문에 Perl을 사용할 수 있는 거의 모든 플랫폼에서 사용할 수 있습니다. Windows용으로는 친절하게도 초보자를 위해 설치 프로그램도 제공이 됩니다. Perl을 따로 설치할 필요도 없고 Perl에 대해서 아무 것도 몰라도 됩니다.

4. POPFile은 아직 별도의 GUI 프로그램은 제공하지 않고 있으며, localhost의 8080 포트로 웹페이지 형태의 인터페이스를 제공합니다. (설정을 바꾸면 8080 대신 다른 포트를 사용할 수 있습니다.)그렇기 때문에 설정이나 분류 오류에 대한 정정 등은 브라우저를 사용해서 웹 인터페이스에 접속한 후 이용 가능합니다.

5. 다국어를 지원합니다. 당연히 한국어도 지원합니다. :)



단순히 spam과 ham(spam이 아닌 'good' 메일을 지칭)만을 구분하기 위한 용도라면 SpamBayes가 오히려 더 편리할 수 있으니 굳이 POPFile에 목숨 걸지 않으셔도 됩니다. POPFile의 진정한 힘은 다양한 종류의 메일을 적절히 구분하기 위해서 Outlook(혹은 다른 어떤 메일 클라이언트라도)의 분류 규칙과 씨름하시는 분들만 느낄 수 있는 것입니다.

처음 설치를 하게 되면 POPFile 역시 '바부팅이 문어 대가리(POPFile 홈페이지에 문어가 등장합니다.)'에 불과합니다. 아무 것도 모르죠. 그래서 하나씩 차근차근 가르쳐야 합니다. Bucket을 많이 만들수록 가르치는 과정도 더 오래 걸릴 것입니다. 하지만, 잘 가르친 문어는 복잡한 메일의 분류를 정말 손쉽게 처리할 수 있도록 해줍니다. 문어실수(잘못 분류하는 일)를 하게 되면 웹인터페이스의 분류 히스토리 페이지로 가서 정정해주시면 됩니다. 가르치는 방법은 단지 그것뿐입니다.

저는 업무 상 받는 메일들이 꽤 다양해서 업무 관련 bucket만 6 개가 됩니다. 그리고, 기타 개인 메일들을 위한 bucket이 3 개, 스팸 메일용 bucket 1 개, 합이 10 개입니다. 문어를 가르치기 시작한지 이틀째인데, 처음 서너번 정도 실수한 것을 교정해주었더니 이제는 제법 척척 잘 가려주는군요. 스팸 메일은 가차 없습니다. 현재까지 필터율 98% 입니다. 어찌보면 SpamBayes보다 더 잘 가려주는 것 같은 느낌도 들 정도네요.

POPFile 공식 홈페이지는 다음과 같습니다.

LINK: http://popfile.sourceforge.net/

소개글을 쓰는 제가 굳이 설치나 사용법에 대해 언급하지 않아도 될 만큼 공식 홈페이지에서 설치부터 사용법까지 매우 친절하고 상세하게 잘 설명해줍니다.

복잡한 메일을 자동으로 분류하기 위해서 Outlook 분류 규칙에 목숨 걸지 마세요. 메일 클라이언트가 바뀌기라도 하면 어쩌시려구요? 설마 분류 기준을 처음부터 다시 만들 생각은 아니겠죠? 문어(POPFile) 한 마리 키워보세요. ;-)

2007년 1월 20일 토요일

SpamBayes - 학습 가능한 스팸 메일 필터

연말연시에는 스팸 메일이 특히 극성을 부린다는 기사를 본 적이 있습니다.(비단 e-mail에만 해당되는 것은 아닐 겁니다. 우리 집 현관문 앞과 우편함에 날마다 끊임 없이 쌓이는 광고 전단들과 우편물들을 보면 말이죠. ㅡㅡ) 그래서 그런지 요즘 부쩍 스팸 메일이 많이 오는 것 같은데, 회사에서 업무 상 사용하고 있는 Outlook이 감당을 못하더군요. 자체 정크 메일 필터도 꽤 성능이 좋은 편이긴 하지만, 점점 더 교활해지고 점점 더 대량화 되고 있는 스팸메일들을 상대하다 보니 아무래도 한계가 있는 모양입니다.

궁하면 통한다고, 이런 상황이 반복되던 어느 날 웹서핑 중 우연찮게 알게 된 SpamBayes라는 놈이 어째 물건인 것 같은 느낌을 받아 한번 사용해보게 되었습니다. Python으로 만들어졌다는 점과 Source Forge에 등록된 open source project라는 점, Outlook Add-in 형식을 지원한다는 점, 이 세 가지 특징이 저를 붙든 주 요인이었습니다.

공식 홈페이지는 다음과 같습니다.

LINK: http://spambayes.sourceforge.net

공식 홈페이지에서 대강의 설명을 보니, Paul GrahamA Plan for Spam에서 소개된 Bayesian spam filtering 알고리즘을 바탕으로 Gary Robinson개선 사항을 반영하여 만들었다고 합니다.

알고리즘에 대한 설명 역시 날림으로 살펴본 바로는, 메일 내용을 token으로 쪼개어서 통계적 방법으로 점수를 매기고 이에 근거하여 spamham(spam mail이 아닌 good mail을 의미하는데, 언어 유희인가요?), unsure 등을 구분하는 방식인 것 같습니다.

그러면 그 통계적 방법의 근거는? 여기서 훈련(training)이라는 말이 나옵니다. 처음에는 spam과 ham을 구분할 수 없다는 것입니다. 속된 표현으로 똥인지 된장인지 먹어봐야 안다는 것이죠. 사용자의 판단으로 미리 구분해 놓은 spam과 ham을 가지고 훈련을 시켜주면 그 자료를 토대로 새로운 메일에 대해 점수를 매기게 되는 것입니다. 또한 훈련 부족으로 오판을 하게 되는 경우 사용자가 이것을 정정해주는 기능이 있습니다. 이것 역시 훈련의 한 부분이 됩니다. 아무 것도 모르는 아이를 하나 둘 가르쳐서 사리분별 할 수 있는 '사람'으로 만드는 과정에 비유한다면 좀 비약이 심한 것일까요? :)

뭐, 이론상 이 방법 역시도 100% 완벽할 수는 없겠지만, 'mistake-based training'이란 말에서 알 수 있는 것처럼 실수라는 중요한 경험을 통해서 학습하게 되고 점점 더 똑똑한 필터가 되어가기 때문에 훈련 회수를 거듭할수록 점점 완벽에 가까워지는 것입니다. 그리고, 사용자의 기준에 부합하는 스팸 필터를 만들 수 있다는 장점도 있습니다. 사용자마다 스팸을 구분하는 기준이 다를 수도 있는데, 훈련 과정에 이것을 충분히 반영해줄 수 있기 때문입니다.

SpamBayes는 Outlook Add-in 형식 외에도 POP3 Proxy, IMAP filter, procmail embedded filter 형식을 지원합니다. Outlook이 아닌 다른 메일 클라이언트를 사용하시는 분들도 좀 번거롭긴 하지만 사용할 수 있다는 말이죠.

자, 여러분들도 더 이상 스팸 메일 때문에 골치 아파하지 마시고, SpamBayes 한 마리 키워보세요. 얼마 지나지 않아서 필터를 뚫을 수 있는 대단한(?) 스팸 메일이 오기만을 학수 고대하는 자신을 발견할 수 있을 겁니다. ;-)


주의) 현재 alpha 버전인 1.1.3aHOMEPATH 내에 한글 문자가 있을 경우 초기화 오류가 발생하는 버그가 있습니다.(HOMEPATH 내에 한글 문자가 있다는 것은 Windows 로그인 계정을 만들 때 한글을 사용했다는 것을 의미합니다.) 안정 버전인 1.0.4는 문제 없이 잘 되더군요. 같은 팀에서 일 하고 계시는 대리님 한 분이 알려주셨습니다. ;-)