2008. 9. 18.

qmail + vpopmail 사용환경에서의 procmail 설정

메일서버를 운영하면서 골치아픈것 제 1순위를 뽑자면 역시 스팸메일 일것입니다.
물론 각종 스팸툴등을 사용하는 방법도 있습니다만 시스템에 부하를 많이 가져온다는 단점이 있죠
또한 최근 유행하는 reverse domain 체크라던지 SPF 적용도 한가지 방법일 수 있을것입니다.
그러나 최대한 안귀찮게(?) 스팸을 걸러내는 방법은 procmail이 좋을듯 합니다.

1. hcode 설치
hcode는 한글코드를 인/디코딩 하기 위해 필요한 바이너리 파일 입니다.
검색엔진에서 쉽게 구할 수 있으나, 제대로 작동하지 않는 소스가 상당수 차지하고 있죠
따라서 필자는 임은재님께서 올려주신 hcode 소스를 사용하도록 하겠습니다.
[root@localhost]# wget http://people.kldp.org/~eunjea/tmp/hcode2.1-mailpatch3-TABpatch.tgz
[root@localhost]# tar xfz hcode2.1-mailpatch3-TABpatch.tgz
[root@localhost]# cd hcode2.1-mailpatch3-TABpatch
[root@localhost]# make
[root@localhost]# cp -pf hcode /var/qmail/bin/


2. procmail 설정
레드헷 계열이라면 기본적으로 procmail이 rpm으로 설치되어 있을 것입니다.
만약 설치되지 않아있다면 yum등을 이용해 설치를 하시면 되겠습니다.
procmail의 설정 방법은 매우 간단합니다.
아마 이곳저곳 찾아보신 발빠른 분들이라면 필자의 필터링 설정과 약간 다르다는걸 눈치채신 분들도
있을거라 예상하지만 대부분의 문서는 vpopmail 로밍 환경이 아닌 mysql 환경을 타겟으로
제작된 문서가 상당수 입니다.

[root@localhost]# vi /etc/procmailrc
LOGFILE=/var/log/qmail/procmail.log

## Filtering Rules
# 인코드되어 날아오는 헤더를 디코드 하는 부분.
:0 Efhw
*^(Subject|From|Cc):.*=\?EUC-KR\?(B|Q)\?
|/usr/bin/formail -c | /var/qmail/bin/hcode -dk -m

:0 Efhw
*^(Subject|From|Cc):.*=\?ks_c_5601-1987\?(B|Q)\?
|/usr/bin/formail -c | /var/qmail/bin/hcode -dk -m

:0 Efhw
*^(Subject|From|Cc):.*=\?KSC5601\?(B|Q)\?
|/usr/bin/formail -c | /var/qmail/bin/hcode -dk -m

:0 Efhw
*^(Subject|From|Cc):.*=\?ISO-8859-1\?(b|B|Q)\?
|/usr/bin/formail -c | /var/qmail/bin/hcode -dk -m

# 영문
:0
* ^Subject:.*(advert|sex|porno|casino)
"/home/vpopmail/domains/foobar.com/spam/Maildir/"

# 한글
:0
* ^Subject:.*(광고|홍보|廣告|몰카|성인|광 고|홍 보|몰 카|성 인|포르노|광.고|홍.보|몰.카|성.인)
"/home/vpopmail/domains/foobar.com/spam/Maildir/"

# 괄호
:0
* ^Subject:.*(\[광고\]|\[홍보\]|\[몰카\]|\[성인\])
"/home/vpopmail/domains/foobar.com/spam/Maildir/"

※ 이 부분에서 유의해야 할 부분이 있습니다.
만약 실제계정(account)가 아닌 가상계정(vpopmail)을 사용하고 계신다면 반드시 필터링룰에 의해
걸러진 스팸메일이 어디로 보내져야 되는지 "절대경로"로 써주셔야 됩니다.
위 예제는 spam@foobar.com 이라는 계정을 생성해주고 필터링된 메일을 모두 spam 계정으로
전송되도록 설정 해놓은 것입니다.
만약 직접 삭제되도록 하고 싶다면 "/dev/null" 이런식으로 변경하시면 됩니다.

3. procmail log 파일 생성
걸러진 스팸메일의 목록을 확인하기 위해 로그 파일을 생성하도록 하겠습니다.
[root@localhost]# touch /var/log/qmail/procmail.log
[root@localhost]# chmod 666 /var/log/qmail/procmail.log


4. vpopmail과 procmail의 연동
모든 설정이 끝났으므로 vpopmail과 연동하도록 설정하면 됩니다.
vpopmail의 로밍 서비스를 이용하게 되면 전체 컨트롤 파일인 /var/qmail/rc 에서
반영되도록 할 수는 없고 모든 메일 도메인계정 아래에 있는 .qmail-default에서 연동해줘야 됩니다.
[root@localhost]# cd /home/vpopmail/domains/foobar.com
[root@localhost]# vi .qmail-default
| (/var/qmail/bin/preline /usr/bin/procmail -p -m /etc/procmailrc || /home/vpopmail/bin/vdelivermail '' bounce-no-mailbox )

댓글 없음: