procmail을 이용한 메일 필터링에 대한 내용을 정리했다.
위의 세가지 프로그램이 필요하다. 물론 sendmail이 설치되어 있고 잘 동작한다는 가정하에서 진행한다. sendmail이 procmail을 사용하는지 아닌지는 sendmail.cf 파일을 보면 알 수 있다.
sendmail.cf를 열어
Mlocal, P=/usr/bin/procmail, F=lsDFMAw5:/|@qSPfhn9, S=EnvFromL/HdrFromL, R=EnvToL/HdrToL, T=DNS/RFC822/X-Unix, A=procmail -t -Y -a $h -d $u
이런 부분이 있는지 확인하자. 있으면 사용하고 있는 것이다. 없으면 위와 같이 만들어준다. 무슨 뜻인지는 나도 잘 모른다. 해당 메뉴얼을 뒤져봐야 하겠다.
다음은 procmailrc의 내용을 세팅하는 과정이다. 시스템 전체에 걸쳐 적용하려면
/etc/procmailrc
라는 파일을 편집하면 되고 개인 유저별로 설정하려면 각 사용자의 홈디렉토리에
.procmailrc
을 편집하면 된다. 이 아래부터는 procmailrc 파일의 내용에 대한 설명이다.
=====================시 작=========================================
LOGFILE=/var/log/procmail
VERBOSE=no
PATH=/usr/bin:/usr/local/bin:/bin
SHELL=/bin/sh # 명시적으로 사용할 shell을 지정하는 것이 좋을 것임.
# 이 부분은 거부 리스트를 만들어 처리하는 부분
# SPAM MAIL LIST BLOCKING
:0
* ? formail -x"From" -x"From:" -x"Sender:" \
-x"Reply-To:" -x"Return-Path:" -x"To:" \
| egrep -is -f .black.lst
/var/spool/mail/spam
# 메일 헤더를 무조건 EUC-KR이라고 생각하고 디코딩한다.
# 좀 과격하지만 영문과 한글 메일만 받는 상황에서는 제일 확실히 필터링된다.
:0 Efhw
*^(Subject|From):.*=\?[a-zA-Z]+[0-9a-zA-Z\-]+\?(B|Q)\?
| formail -c | hcode -dk -m
# 스팸메일 필터링 파트
# 제목부분에 지정된 문자열이 걸리면, spam 계정으로 메일 전송
:0
* ^Subject: .*[sS][eE][xX]|.*[Pp][Oo][rR][Nn]|.*[Vv][Ii][aA][gG][rR][aA]|.*[Dd][rR][uU][gG]|.*[pP][eE][nN][Ii][sS]|.*[mM][oO][rR][tT][aA][gG][eE]
/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