스팸때문에 고민하다가 sendmail.cf파일을 수정하여 필터링을
해보려고 했었지만, 대부분의 스팸메일이 헤더가 인코딩되서 들어오더군요.
방법이 없을까..하다가 procmailrc를 이용하기로 했습니다.
procmail을 사용하는 시스템에는 대부분 적용되리라 생각되고..
formail과 hcode바이너리가 필요합니다.
죄송스럽게도, formail과 hcode바이너리의 출처는 잘 모릅니다.
아시는 분이 계신다면 알려주세요. 반영하겠습니다.
원리는 헤더부분의 EUC-KR, ksc-5601-1987문자열이 있으면
hcode를 이용해 디코딩하고..
지정된 문자열을 통해 스팸매일계정으로 옮기는 작업입니다.
개인계정을 사용하시는분도 .procmailrc파일 편집을 통해 가능한 방법이라 생각됩니다.
물론, 해당 서버에 formail, hcode바이너리가 존재해야겠지요.
아래는 procmailrc파일의 소스입니다.
– – – – – – – – – – – – –
LOGFILE=/var/log/procmail
VERBOSE=no
PATH=/usr/bin:/usr/local/bin:/bin
SHELL=/bin/sh
#인코드되어 날아오는 헤더를 디코드 하는 부분.
: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
#제목부분에 지정된 문자열이 걸리면, spam계정으로 메일전송
:0
* ^Subject: .*(광고|홍보|광-고|목록입니다|리스트입니다|성인정보|몰카)
/var/spool/mail/spam
:0
* ^Subject: .*[광.*고]
/var/spool/mail/spam
:0
* ^Subject: .*[廣.*告]
/var/spool/mail/spam
:0
* ^Subject: .*[홍.*보]
/var/spool/mail/spam
:0
* ^Subject: .*(광.*고)
/var/spool/mail/spam
:0
* ^Subject: .*(홍.*보)
/var/spool/mail/spam
:0
* ^Subject: .*(廣.*告)
/var/spool/mail/spam
– – – – – – – – – – – –
procmailrc파일 편집과 정규식 표현이 익숙치않은데다
회사내에 다른 관리자들도 쉽게 편집이 가능하도록 하기 위해
소스를 좀 풀어헤쳐놓은 상태입니다. 이해는 금방 되실듯.
본문까지 디코딩해서 걸러내는 방법은 임은재님께서 사용한 metamail을 통해
디코딩을 하고 걸러내는 방법이 참고가 되리라 봅니다.
소스를 보시면 아시겠지만, 본문은 전혀 손대지 않습니다.
함부로 손댔다가 정상적인 메일까지 스팸으로 처리하면 곤란할것 같아서요 🙂
별 실력도 없는데 팁을 올리려니 겁부터 나는군요.
그래도 생각보다 효과가 괜찮아서 용기를 내봅니다.
(메일서버로 전송되는 스팸의 80%이상이 걸러지고 있습니다.
물론 이 글을 본 스패머들은 절대 제목에 [광고]라는 문구를 넣지 않겠지만요.