Spam filter #1

불량 단어 목록을 만들고 procmail 을 통해 무식하게 matching 시키는 방법을 사용하고 있다보니, 첨부파일이 있는 경우 스팸이 아닌데도 불구하고 스팸으로 판단되는 경우가 너무 잦은 것 같습니다.

sex, viagra, … 등의 불량단어 목록을 대소문자 구별없이 매칭을 시켜서 거르고 있는데, 첨부파일이 BASE64 로 인코딩된 경우에 저런 단어들이 포함될 확률이 상당히 높나 봅니다. 보내는 사람 관련해서 white list 를 만들어서 어떻게든 피해나가고 있긴 하지만 이건 답이 아닌 거 같네요.

시험이 끝나고 나면 꼭!! 시간을 내서 스팸 필터를 조금 더 개선시켜야 겠습니다.

  1. 본문을 fetch

    multipart/alternative, multipart/mixed 인 경우 … text/html, text/plain 인 것들만 fetch

  2. %2digit 형식으로 된 것들을 디코드

    [php:urldecode] 를 이용

  3. utf-8 로 변환

    php 의 [php:iconv] function 들은 conversion 도중에 에러가 발생했는지 알기 힘드므로 다른 프로그램을 이용…

  4. &#digit; 형식으로 된 것들을 디코드

    [php:html_entity_decode]

  5. 불량단어 목록과 매칭

  6. 매칭 결과 리턴

대강 위와 같은 기능을 하는 filter 를 작성하고 procmail 과 연동해서 필터링을 해볼까 싶습니다. 다만 귀차니즘 때문에 언제나 구현할 지 모르겠군요. (백업 스크립트는 도대체 언제 짤건데!!)

Published by

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">