procmailrc + hcode로 스팸메일을 막아보자!

지금 이글은 알맹이는 없고 방향만 제시해 주는 그런 영양가 없는 글입니다-_-a
제 서버는 sendmail + procmail기반의 메일 서버입니다.
vpopmail이나 qmail등을 알아서 잘-_-; 보시기 바랍니다.

우선 procmail이 설치되어있다는 조건하에 시작하겠습니다. hcode를 다운받습니다.
여러곳을 돌아다녀봤는데 몇가지 버그도 있고 제일 확실한 버젼을 올려둘테니 밑에서 다운받으시기 바랍니다.
이제 압축을 풀어 설치를 해봅시다.

[CODE][root@tomeii src]# ls
hcode2.1-mailpatch3-TABpatch.tar
[root@tomeii src]# tar -zxvf hcode2.1-mailpatch3-TABpatch.tar
[root@tomeii src]# cd hcode2.1-mailpatch3-TABpatch
[root@tomeii hcode2.1-mailpatch3-TABpatch]# make
[root@tomeii hcode2.1-mailpatch3-TABpatch]# cp hcode /usr/bin
[root@tomeii hcode2.1-mailpatch3-TABpatch]# [/HTML][/CODE]

저는 /usr/bin안에 실행파일을 두었는데 원하시는곳에 두시면 됩니다. 기왕이면 PATH잡혀있는곳으로 옮깁시다.
아니면 procmail설정시 절대경로로 설정을 하여도 되겠군요.
컴파일시 경고가 조금 뜨긴 하지만 무시합시다;

vi등의 자신에게 편한 에디터로 procmailrc를 열어봅시다. /etc 또는 /etc/mail 안에 있습니다.
예제로 euc-kr형식과 ks_c_5601-1987형식의 제목을 가진 메일의 헤더를 디코딩 해보겠습니다.
다음의 내용을 넣습니다.

[CODE]:0 Efhw
  *^(Subject|From|Cc):.*=\?EUC-KR\?(B|Q)\?
  |formail -c | hcode -dk -m


:0 Efhw
  *^(Subject|From|Cc):.*=\?ks_c_5601-1987\?(B|Q)\?
  |formail -c | hcode -dk -m[/HTML][/CODE]

이제 들어오는 메일의 제목이 디코딩 되어들어옵니다. 제목으로 필터링을 해봅시다.

[CODE]:0
*^Subject:.*(advert|광고)
/dev/null[/HTML][/CODE]

메일의 제목에 advert나 광고를 포함할 경우 /dev/null로 보내지게 됩니다.
정규식을 이용하여 무한한 확장을 할수 있겠죠. 위는 간단한 하나의 예제입니다. 본인의 서버에 맞게 설정하시면 됩니다.

hcode의 소스를 올립니다. 다른것들은 ks_c_5601-1987를 정상적으로 디코딩 못하는 버그가 있더군요.
이것을 쓰시기 바랍니다.

1064898209.tar