디지문닷넷 - sendmail + procmail + hcode 설치
BLOG main image
242061 Visitors up to today!
Today 133 hit, Yesterday 359 hit
전체 (281)
일상 (54)
유희 (21)
견문록 (26)
PC 탐구 (141)
축구 (28)
애니메이션 (10)

디지문 호스팅

태터툴즈

이올린

올블로그

리눅스포털

SULinux

DNS Powered by DNSEver.com

너나우리

Serverchk.com

MRTG

Superuser Server Utility

rss

[디지문, 2009/02/08 17:36, PC 탐구/리눅스]
참고링크:
http://procmail.episode.co.kr/



테스트 환경: SULinux 1.5

procmail은 센드메일이 설치되어 있는 서버라면 거의 대부분 함께 설치되어 있으니 그대로 사용하면 됨
[root@digimoon ~]# rpm -qa | grep procmail
procmail-3.22-14.1.el4
[root@digimoon ~]# rpm -qa | grep sendmail
sendmail-cf-8.13.1-3.2.el4
sendmail-8.13.1-3.2.el4
[root@digimoon ~]#

sendmail, procmail이 제대로 설치/연동되었지 확인
[root@digimoon ~]# cat /etc/mail/sendmail.mc | grep procmail
define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl
FEATURE(local_procmail,`',`procmail -t -Y -a $h -d $u')dnl
MAILER(procmail)dnl
[root@digimoon ~]#


procmail로 한글 스팸메일을 걸러내려면 hcode와 같은 디코딩 프로그램이 필요(sendmail과 같은 MTA는 영어권 바이트 문자열로 메일을 송수신하기 때문에 한글 메일은 procmail과 같은 MDA로 디코딩을 해서 한글로 변환한 뒤 검사하여 필터링해야 하며 이를 위해 hcode가 필요)

아래 링크의 게시물에 첨부된 hcode_2.1m3_tab_ksc_qp.zip 파일을 받아 압축 푼 뒤 설명을 보며 source rpm으로 설치해도 되고 hcode-2.1m3-tab_ksc_qp.i686.rpm 파일로 간편하게 설치해도 됨
http://procmail.episode.co.kr/bbs/view.php?id=data&page=2&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=1
[root@digimoon ~]# rpm -Uvh hcode-2.1m3-tab_ksc_qp.i686.rpm
준비 중...                  ########################################### [100%]
   1:hcode                  ########################################### [100%]
[root@digimoon ~]#



hcode가 제대로 설치되어 있는지 확인하기 위해 아래와 같이 디코딩 테스트 실시

아래와 같이 A.txt, B.txt, C.txt, E.txt 파일을 준비하고...
[root@digimoon ~]# cat A.txt
=?ks_c_5601-1987?B?saSw7Q==?=
[root@digimoon ~]# cat B.txt
Subject: =?ks_c_5601-1987?B?waa48cDMILHmsNQgwaa48cDMILHmsNQgwaa48cDMILHm?=
        =?ks_c_5601-1987?B?sNQgwaa48cDMILHmsNQgwaa48cDMILHmsNQgwaa48cDMILHmsNQg?=
        =?ks_c_5601-1987?B?waa48cDMILHmsNQgwaa48cDMILHmsNQgwaa48cDMILHm?=
        =?ks_c_5601-1987?B?sNQgwaa48cDMILHmsNQg?=

[root@digimoon ~]# cat C.txt
Subject: =?ks_c_5601-1987?B?xde9usauxde9usauxde9usauxde9usauxde9usauxde9ug==?=
        =?ks_c_5601-1987?B?xq7F1726xq7F1726xq7F1726xq7F1726xq7F1726xq7F1w==?=
        =?ks_c_5601-1987?B?vbrGrsXXvbrGrg==?=

[root@digimoon ~]# cat E.txt
Subject: =?ks_c_5601-1987?B?xde9usauxde9usauxde9usauxde9usauxde9usauxde9usauxde9?=
=?ks_c_5601-1987?B?usauxde9usauxde9usauxde9usauxde9usauxde9usauxde9usau?=

[root@digimoon ~]#

디코딩 테스트
[root@digimoon ~]# hcode -dk -m A.txt
광고
[root@digimoon ~]# hcode -dk -m B.txt
Subject: 제목이 길게 제목이 길게 제목이 길
        게 제목이 길게 제목이 길게 제목이 길게
        제목이 길게 제목이 길게 제목이 길
        게 제목이 길게
[root@digimoon ~]# hcode -dk -m C.txt
Subject: 테스트테스트테스트테스트테스트테스
        트테스트테스트테스트테스트테스트테
        스트테스트
[root@digimoon ~]# hcode -dk -m E.txt
Subject: 테스트테스트테스트테스트테스트테스트테싱?욈??
뵈?謬뵈?謬뵈?謬뵈?謬뵈?謬뵈?謬뵈??욈??
[root@digimoon ~]#


마지막으로 필터링 레시피 작성해야 하나 레시피 문법을 당장 공부해서 적용하기가 곤란하다면 아래 링크에서 procmailrc 샘플 파일을 받아다 /etc/procmailrc 파일로 저장하고 sendmail 리스타트하면 끝
http://procmail.episode.co.kr/bbs/view.php?id=procmailrc&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=18

위 샘플은 스팸메일을 무조건 /dev/null로 보내버리는 것이라 반송 처리를 하고 싶거나 스팸 표시 머릿말 등을 달아 주려면 몇 가지의 수정이 더 필요함.

레시피 문법 자료는 아래 링크에서 구할 것.
http://procmail.episode.co.kr/


작동 테스트는 /var/log/procmail 에 로그가 남는지 확인(로그파일이 없으면 만들어주고 sendmail 리스타트).
메일제목을 '직장인 9급 공무원'으로 하고 메일을 보내보면 아래와 같이 로그가 남는데 붉은색으로 굵게 표시된 부분이 블록코드(필터링사유)이다.
참고로 /var/log/procmail 로그파일의 퍼미션은 other에게 쓰기 권한이 있어야 하므로 606 퍼미션을 부여한다.
[root@digimoon etc]# tail -f /var/log/procmail
[2009-02-08 17:32] [Blk202] /var/mail/digimoon           직장인 9급 공무원


2009/02/08 17:36 2009/02/08 17:36
Trackback Address :: http://www.digimoon.net/blog/trackback/324
[로그인][오픈아이디란?]
Name
Password
Homepage

Secret