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

by ADMINPLAY posted Jun 04, 2009
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

출처 : http://linux.tini4u.net/write.php?sid=06/07/26/3839821

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 )

--> /var/qmail/bin/preline은 qmail관련 명령을 실행하여 들어오는 메일 메세지에서 From_ , Return-Path,
Delivered-To 라인을 해당 메세지 파일에 추가해 준다. 위의 경우는 /var/log/qmail/procmail에 추가됨

preline 맨페이지 http://qmail.kldp.org/man/man1/preline.html


--> vdelivermail은 메일 서버상에 존재하지 않는 계정으로 오는 메일에 대해 메일에 대해 어떤메일로 받을지
설정하는 명령어 

| /vpopmail-디렉토리/bin/vdelivermail '' bounce-no-mailbox


admin@test.com 으로 모두 받아보려면 다음과 같이 수정 한다.
| /vpopmail-디렉토리/bin/vdelivermail '' admin@test.com


존재하지 않는 계정으로 오는 메일을 삭제 하려면
~vpopmail/domains/virtual_domain/.qmail-default 파일을 다음과 같이 수정
| /vpopmail-디렉토리/bin/vdelivermail '' delete


존재하지 않는 계정으로 오는 메일을 다른 도메인으로 보내려면
~vpopmail/domains/virtual_domain/.qmail-default 파일을 다음과 같이 수정
| /vpopmail-디렉토리/bin/vdelivermail '' $EXT@newdomain.com