레이블이 mail인 게시물을 표시합니다. 모든 게시물 표시
레이블이 mail인 게시물을 표시합니다. 모든 게시물 표시

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는 문제 없이 잘 되더군요. 같은 팀에서 일 하고 계시는 대리님 한 분이 알려주셨습니다. ;-)

2004년 1월 11일 일요일

PopTray - 오픈 소스 메일 알림이

앞에 메일 관련 보안에 대한 내용의 글을 실었더랬습니다. (메일과 보안 참고) 이와 관련해서 유용하게 사용할 수 있는 응용프로그램을 소개해드리겠습니다. 서버가 SSL-POP 또는 SSL-IMAP을 지원한다는 가정 하에서 이러한 프로토콜을 사용해 안전하게 메일 체크를 할 수 있는 프로그램입니다. PopTray라는 놈인데, Source Forge에 등록되어 있는 오픈 소스 프로젝트입니다. 최근에 버전이 3.x대로 올라가면서 플러그인을 지원하게 되었는데, 기본적으로 제공되는 플러그인 중에 SSL-POPSSL-IMAP을 지원하는 것이 있습니다. 그외에 Hotmail을 지원하는 플러그인도 있더군요.

단순히 SSL을 지원한다는 것만으로 이 프로그램은 가치가 있겠지만, 기능이나 인터페이스 측면에서도 타 메일 체크 프로그램과 비교해서 절대로 떨어지지 않습니다. 공식 홈페이지의 내용을 잠깐 빌리자면,
    주 기능:
  • 무제한 계정 지원
  • 트레이 아이콘에 직접 메시지 개수를 표시(계정별로 번갈아 표시)
  • 빠른 미리보기
  • 메시지를 다운로드 하지 않고도 서버에서 바로 삭제 가능
  • 자신만의 규칙으로 메일을 확인하고 처리할 수 있는 방법 제공:
    • 각기 다른 사운드 재생
    • 서버에서 삭제
    • 특정 외부 EXE 파일 실행
    • 스팸으로 마크
    • 기타 ...
  • 거의 모든 기능에 대해 핫키/마우스 버튼/실행 옵션 등을 설정할 수 있음
  • 플러그인 지원:
    • 프로토콜 플러그인 (예. IMAP4, POP3SSL, Hotmail, 기타.)
    • 알림 플러그인 (예. 키보드의 scroll-lock 깜빡이기)
  • 화이트/블랙 리스트를 통한 스팸 관리
  • 다중 알림 (사운드 재생, 팝업, 기타)
  • 30개 이상의 언어로 번역(한국어 포함)
  • 완전한 설치 / 제거
  • 기타 등등 더 많은 기능들 ...
  • 그리고 무엇보다도 이 모든 것이 무료이며 오픈 소스라는 점!
공식 홈페이지는 다음과 같습니다.

http://www.poptray.org

이제 PopTray를 사용해서 안전하고 편리하게 메일을 체크하세요!

2004년 1월 10일 토요일

메일과 보안

POP3나 IMAP이 지원되는 메일 계정을 사용할 때, 메일이 왔나 체크하기 위해서 Outlook이나 Eudora와 같은 메일 클라이언트 프로그램을 실행하는 것은 꽤나 귀찮은 일입니다. 그래서 주기적으로 메일 체크를 해주는 프로그램을 많이 사용하게 되는데, 제각기 다양한 기능과 깜찍한 모양, 편리한 인터페이스를 자랑하지만, 그 많은 것들 중에 제 마음에 딱 드는 것이 없었습니다.

이유인 즉슨... 모두 SSL-POP 또는 SSL-IMAP 프로토콜을 지원하지 않는다는 것이었습니다. 요즘 들어서는 특히 packet sniffing 같은 것을 쉽게 할 수 있는 툴들도 많고 해서 자칫 잘못하면 계정과 패스워드가 고스란히 도난당할 위험이 큽니다. 그렇기 때문에 SSL을 통해 암호화된 통신을 할 수 있는 SSL-POP이나 SSL-IMAP 프로토콜의 지원이 중요한 관건이 되었다고 생각합니다.

많이 사용되고 있는 Outlook이나 Eudora, 혹은 Netscape 등은 이미 이 프로토콜들을 지원하고 있습니다. 하지만, 이것은 클라이언트측만의 노력으로 해결될 문제는 아닙니다. 메일 서버측에서도 이 프로토콜들을 지원해주어야 하기 때문이죠. 안타까운 것은 POP3 서비스를 제공하는 대형 메일 포탈들이 아직까지 이것들을 지원해주지 않고 있다는 것입니다.(야후를 포함한 몇몇은 HTTPS를 통한 웹메일 사이트 접근을 제공하고 있기는 합니다. 대신 안전한 메일 확인을 위해서는 메일 클라이언트가 아닌 웹브라우저에서 일일이 로그인 해야하는 번거로움이 있죠.)

그러나, 특정한 조직이나 개인, 단체, 혹은 학교에서 운영하는 메일 서버라면 약간의 수고로 지원이 가능하게 될 수도 있기 때문에 적극 건의를 통해서 지원이 되도록 하는 것이 좋을 것입니다.

메일의 보안에 대한 이슈는 여기서 그치지 않습니다. 근본적으로 메일이 SMTP를 거쳐서 전달되는 동안 암호화되지 않은 상태 그대로 전송이 된다는 것은 위에서 말씀드린 것과는 또 다른 문제입니다. 이것은 SMTP 기간 시스템을 수정하지 않으면 안되는 근본적인 문제입니다.

하지만, 대안으로 PGP, GnuPG 같은 메일 암호화 툴들을 생각해볼 수 있겠죠. 여기에 대한 것은 이미 많은 자료들이 인터넷에 존재합니다. 검색 엔진에서 'PGP' 혹는 'GnuPG'로 검색해보시면 많은 정보를 얻으실 수 있을 겁니다. 제 블로그에도 GnuPG에 대해 간략히 소개해 둔 것이 있습니다. (GnuPG + GPGshell for Windows 참고)

언젠가 '이제 몇 남지 않은 보안의 사각지대 중 가장 큰 것 두 가지는 MailFTP이다.'란 말을 본 적이 있습니다. 그만큼 많이 사용되고 있지만, 생각보다 보안에 허술한 것이 사실입니다. 이제부터라도 조금씩만 더 관심을 가지고 하나씩 보완해 나가야하지 않을까 생각해봅니다.