Contents

1 처방(recipes)의 형식
2 flag
3 정규식과 다른 의미의 flags
4 procmailrc 테스트
5 my procmail history
6 내 /etc/procmailrc
7 참조


procmail은 메일 처리 도구다. procmail은 메일 필터링을 도와준다. 메일을 발신자, 제목, 메시지 길이, 메시지의 주요 단어들 등에 따라 분류한다.

스팸차단 등에 활용가능하다.

mmencode를 이용하여 quoted-printable이나 base64등으로 encodeing된 메일을 디코딩할수 있으며 formail툴을 이용하여 메일헤더등의 메일형식을 바꿀 수 있다.


1 처방(recipes)의 형식 #

:0 [flag] [ : [locallockfile] ]
<zero or more conditions (one per line)>
<exactly one action line>


2 flag #

  • H : 헤더 검색(egrep) (디폴트)
  • B : 본문 검색(egrep)
  • D : egrep 정규식에서 대소문자 구분(디폴트=구분 안함)
  • A : 이전 처방이 참이 아니면 이 처방을 실행하지 않는다.
  • E : 이전 처방이 실행되지 않았을 경우 실행됨(= else if)
  • e : 이전 처방이 실패한 경우 실행됨
  • h : 헤더를 파이프나 파일, 메일로 보냄(디폴트)
  • b : 본문을 파이프나 파일, 메일로 보냄(디폴트)
  • f : 파이프를 필터로 간주
  • c : 현재 메일의 복사본(carbon copy)을 생성. 이 처방은 delivering 처방에서만 유효하다. non-deliverying모드에서 이 처방이 유효한 경우는 중첩된 블록(nesting block)상태이다.
  • w : 필터나 프로그램이 작업을 종료하고 그의 exitcode를 체크한다.(보통은 무시) 만일 필터가 실패로 끝나면 텍스트에 필터가 적용되지 않는다.
  • W : w 와 같으나 'Program failure'라는 메시지를 무시한다.
  • i : 쓰기에러(write errors)를 무시한다.
  • r : Raw mode로 작동하며 메일이 빈줄(empty line)으로 끝나는 것을 체크하지 않는다.


3 정규식과 다른 의미의 flags #


  • ! : 조건의 부정(not condition)
  • $ : 이 조건문뒤에 나오는 식을 따옴표(double quotes)안에 있는 sh(1) 방식으로 대체할지를 평가한다.
  • ? : 사용하는 프로그램의 exitcode를 사용한다.
  • < : 메일의 길이가 지정된 바이트 크기보다 작은지 검사한다.
  • > : 메일의 길이가 지정된 바이트 크기보다 큰지 검사한다.


4 procmailrc 테스트 #

# cat /etc/procmailrc

LOGFILE=/var/log/procmail
VERBOSE=no
#LOGABSTRACT=no
PATH=/usr/local/bin:/usr/bin:/bin
SHELL=/bin/sh


:0 H
* ^Subject:.*PROC_TEST
/var/log/procmail.spam

--> 이렇게 하면 procmail로그는 /var/log/procmail 에 쌓이고 제목에 PROC_TEST라는 단어가 들어간 경우 /var/log/procmail.spam에 쌓이게 된다.


ProcMailSample1 : procmailrc 파일 예제



5 my procmail history #

6 내 /etc/procmailrc #

LOGFILE=/XXX/log/XXX/procmail
VERBOSE=yes
#LOGABSTRACT=no
PATH=/usr/local/bin:/usr/bin:/bin
SHELL=/bin/sh

# for spamassassin
#DROPPRIVS=yes
#:0fw
#| /usr/bin/spamc


#test
#:0 EH:
#* !(^Subject: ..., ([0-9]| [0-9]|[0-9][0-9]) ... [0-9][0-9][0-9][0-9] ([0-9]| [0-9]|[0-9][0-9]):)
#/dev/null



# 날짜가 잘못된 건 걸러내기
:0 H:
#* !(^Date: ..., [0-9][0-9] ... [0-9][0-9][0-9][0-9] [0-9][0-9]:)
#* !(^Date: ..., [0-9]*[0-9] ... [0-9][0-9][0-9][0-9] [0-9][0-9]:)
#* !(^Date: ..., ([0-9]| [0-9]|[0-9][0-9]) ... [0-9][0-9][0-9][0-9] ([0-9]| [0-9]|[0-9][0-9]):)
* !(^Date: ..., ([0-9]| [0-9]|[0-9][0-9]) ... (20[0-2][0-9]|[0-2][0-9]) ([0-9]| [0-9]|[0-9][0-9]):)
/dev/null




# 제목이 없는 메일
:0 H:
* !(^Subject:.*)
/dev/null


:0 H:
* ^Subject:.*(비.*아.*그.*라|비.*그라|시.*리.*스)
/dev/null

:0 H
* ^Subject:.*흥.*분.*제
{
  :0 B:
  * myhome.naver
  /dev/null
}





#### 대출

:0 H:
* ^From:.*(하이론)
/dev/null

:0 H:
* ^Reply-To:.*(titash@freechal.com)
/var/log/procmail/procmail.spam

:0 H:
* ^From:.*((비즈|이지|인터|인포|카드|패스|해피)론|임철수|대.*출)
* ^Subject:.*(대.*출|한.*도|현.*금.*(써|서).*비.*스|금.*리|패.*스.*론|통.*장.*입.*금|최.*고.*천.*만)
/dev/null

:0 H:
* ^Subject:.*ㄷ.*ㅐ.*출
/dev/null

:0
* ^Subject:.*대.*츌
/dev/null


:0
* ^Subject:.*돈
* ^Subject:.*처리
{
	:0 B
	# 대출
	* =B4=EB=C3=E2
	# 신용
	* =BD=C5=BF=EB
  	/var/log/procmail/procmail.spam
} 


:0
* ^Subject:.*(대.*출|한.*도|상.*환|이.*율|이.*률|송.*금|천.*만|입.*금|금리|현.*금)
{
  :0 B:
  * (my.netian.com|(home|hompyfile).(paran|%70%61r%61%6e|%70%61%52%61%6e).com|onvbcxc.2v3.cn|%39%36%32%36%35.%6e%65%74)
  /dev/null
}

:0 B
* (woaldltek.w3ip.co.kr|h%6f%68om%61%4a%41.com|agzrichgky@naver.com)
/dev/null

:0
* ^Subject:.*(cre.*dit)
{
  :0 B:
  * colidemb.com
  /dev/null
}

:0
* (^Subject:.*송금|^From:.*(하영란|이민희))
{
	:0 B
	# 대출
	* =B4=EB=C3=E2
  	/var/log/procmail/procmail.spam
}

:0
* (^Subject:.*금리)
{
	:0 B
	# 대.*출
	* =B4=EB.*=C3=E2
	# 한도
	* =C7=D1=B5=B5
	# 신용
	* =BD=C5=BF=EB
  	/var/log/procmail/procmail.spam
}

:0
* ^Subject:.*론
{
	:0 B
	* 111n.com
	# 대.*출
	* =B4=EB.*=C3=E2
	# 신용
	* =BD=C5=BF=EB
}










:0 H:
* ^Subject: *(\(.*광.*고.*\)|\[.*광.*고.*\])
/dev/null


:0 H:
* ^Subject: *강.*간.*동.*영.*상
/dev/null

:0 H
* ^Subject:.*계.*좌.*입.*금
{
  :0 B:
  * .*(oeiwiow\.pr\.to)
  /var/log/procmail/procmail.spam
}

:0 H
* ^Subject:.*코털
{
  :0 B:
  * korjitee43.com
  /dev/null
}

:0 H
* ^Subject:.*현.*금
{
  :0 B:
  * wangjackpot.com
  /dev/null
}


:0 H:
* ^From:.*hypert211s@hanmail.net
/dev/null

:0 B
* (8282gogo@gmail.com|my\.%6e%45t%69%41%6e\.com/%7Ejungmeod9|my.%6e%45ti%61n.com/%7Enooknook|ahjetr.servehttp.com|chg.serveftp.com|%79%61%68%6f%6f.%6d%69%73%65%63%75%72%65.%63%6f%6d|kjhkk.redirectme.net|hompyfile.%70%61%52%61%6e.com|vita.kyed.com|www.%73%4fm%41%63%54%68.com|hompyfile.%50a%52%41%4e.com|defasuhekinmadin.com|greptimeloans.com|5656fy.com|ps-power.trickip.ORG|hompyfile.%50%41ra%4e.com/MINIHOME_138595|%50r%65%73%68%4f%4d%65.net|fjiasjedfs.com|hld114.com|misdfs.111n.com|대출)
/dev/null





#:0
#* ^Content-Type: *text/plain
#{
#	:0 fbw
#	* ^Content-Transfer-Encoding:.*quoted-printable
#	| mmencode -u -q
#
# 	:0 Afhw
#	| formail -I "Content-Transfer-Encoding: 8bit"
#
#	:0 fbw
#	* ^Content-Transfer-Encoding: *base64
#	| mmencode -u -b
#
#	:0 Afhw
#	| formail -I "Content-Transfer-Ecoding: 8bit"
#}




# 영문spam
:0
* ^From:.*01.com
{
	:0 B
	* Regenisis
	* HGH
	/var/log/procmail/procmail_eng.spam
}


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2008-08-27 17:32:32
Processing time 0.2006 sec