Sun Java System Messaging Server 6.3 관리 설명서

20.9 자동 메시지 제거(만료 및 제거) 기능 설정 방법

자동 메시지 제거 기능(만료 및 제거라고도 함)은 관리자가 정의한 일련의 기준을 기반으로 메시지 저장소에서 메시지를 자동으로 제거합니다. 이전 메시지가나 과도하게 큰 메시지, 보았거나 삭제한 메시지, 특정 Subject: 행을 가진 메시지 등을 자동으로 제거하는 데이 기능을 사용할 수 있습니다. 이 기능은 다음 제거 기준을 허용합니다.

이 기능은 메시지를 정리 및 제거하는 imexpire 유틸리티에 의해 수행됩니다. 메시지 제거 프로세스에 대한 자세한 내용은 20.3 메시지 저장소에서 메시지를 제거하는 방법을 참조하십시오.


주 –

서버는 경고 없이 메시지를 제거하므로 자동 메시지 제거 정책을 사용자에게 알리는 것이 중요합니다. 메시지가 갑작스럽게 제거되면 사용자와 관리자가 매우 당황할 수 있습니다.


20.9.1 imexpire 작동 원리

imexpire는 명령줄에서 호출하거나 imsched 데몬에 의해 자동으로 실행되도록 예약할 수 있습니다. 관리자는 store.expirerule 이라는 파일에 만료 규칙 집합을 지정합니다. 이 파일은 메시지 제거 기준을 지정합니다. 각각 규칙 범위와 관련된 디렉토리에 저장된 여러 개의 파일이 있을 수 있습니다. 즉, 전체 메시지 저장소에 전역적으로 적용되는 규칙과 특정 분할 영역에 적용되는 규칙, 그리고 사용자에 적용되는 규칙이 각각 다른 디렉토리에 저장됩니다.


주 –

configutil 명령과 store.expire.attribute 매개 변수를 사용하여 전역 만료 규칙을 지정할 수도 있지만 store.expirerule을 사용하여 규칙을 지정하는 것이 더 좋습니다. configutil을 사용하여 너무 많은 규칙을 만들면 성능 문제가 발생할 수 있습니다.


imexpire는 시작 시에 모든 만료 규칙을 로드합니다. 기본적으로 imexpire는 분할 영역 당 하나의 스레드를 만듭니다. 각 스레드는 할당된 분할 영역 아래의 사용자 폴더 목록을 거치는 과정에서 로컬 만료 규칙 파일을 로드합니다. 이 만료 기능은 각 폴더에 적용 가능한 만료 규칙에 대해 해당 폴더를 검사하고 필요에 따라 메시지를 정리합니다. 메일함 디렉토리에 store.exp 파일이 있고 store.cleanupage 구성 매개 변수에 지정된 시간보다 오래 정리/만료된 메시지가 있을 경우 제거 기능은 메시지 해시 디렉토리의 모든 메시지 파일을 영구적으로 제거하고 store.exp 파일에서 UID 레코드를 제거합니다.

또한 msg-svr-base/config/에 있는 expire_exclude_list라는 파일에 한 행씩 사용자 아이디를 추가하여 지정된 사용자를 만료 규칙에서 제외할 수 있습니다.

20.9.2 자동 메시지 제거 기능 배포

자동 메시지 제거는 다음 세 단계로 구성됩니다.

  1. 자동 메시지 제거 정책을 정의합니다. 자동으로 제거할 메시지는 무엇입니까? 메시지가 자동으로 제거될 사용자, 폴더, 도메인 및 분할 영역은 무엇입니까? 제거 기준을 정의하는 크기, 메시지 기간 및 헤더는 무엇입니까? 제거할 메시지 범위를 정의합니다. 20.9.2.1 자동 메시지 제거 정책 정의을 참조하십시오.

  2. 이 정책을 구현하기 위한 imexpire 규칙을 지정합니다. 20.9.2.2 자동 메시지 제거 정책을 구현하는 규칙 설정 방법을 참조하십시오.

  3. imexpire 일정을 지정합니다. 20.9.2.3 자동 메시지 제거 및 로깅 수준 예약을 참조하십시오.

20.9.2.1 자동 메시지 제거 정책 정의

제거 기준을 지정하여 자동 메시지 제거 정책을 정의합니다. imexpire에서는 다음 기준을 제거에 사용할 수 있습니다.

메시지 기간. X일보다 오래된 메시지를 자동으로 제거합니다(속성: messagedays).

메시지 수. X개의 메시지를 초과하는 폴더의 메시지를 자동으로 제거합니다(속성: messagecount).

크기를 초과하는 메시지의 기간.Y일의 유예 기간 후에 X바이트를 초과한 메시지를 자동으로 제거합니다(속성: messagesizemessagesizedays).

조회 삭제됨 메시지 플래그. 조회 또는 삭제됨 플래그가 설정된 메시지를 자동으로 제거합니다. 이 기준은 "and" "or"로 설정할 수 있습니다. or로 설정된 경우 메시지의 조회/삭제 플래그는 다른 기준에 상관 없이 메시지를 자동으로 삭제합니다. and로 설정된 경우 다른 모든 기준을 충족하면서 메시지의 조회/삭제 플래그를 설정해야 합니다. (속성: seendeleted).

메시지의 헤더 필드. 메시지 제거 기준으로 사용할 헤더와 문자열을 지정할 수 있습니다(예: "Subject: Work from Home!").

메시지 폴더. 메시지를 제거할 폴더를 지정할 수 있습니다(속성: folderpattern). 이 속성은 수정된 UTF-7 문자 세트만 사용합니다.


주 –

imexpire에서는 메시지를 읽은 후로 경과한 시간에 따라 메시지를 삭제하거나 보존하도록 허용하지 않습니다. 예를 들어, 200일 동안 읽지 않은 메시지를 제거하도록 지정할 수 없습니다.


자동 메시지 제거 정책의 예

예 1: 1,000개의 메시지를 초과하는 폴더에서 365일이 지난 모든 메시지를 제거합니다.

예 2: siroe.com 도메인에서 180일이 지난 메시지를 제거합니다.

예 3: 삭제됨으로 표시된 모든 메시지를 제거합니다.

예 4: 조회 표시가 있고 30일이 지났으며 100KB보다 크고 폴더의 메시지 수가 1,000개를 초과하며 X-spam 헤더가 있는 메시지를 sesta.com에서 제거합니다.

20.9.2.2 자동 메시지 제거 정책을 구현하는 규칙 설정 방법

이전 절에서 정의한 자동 메시지 제거 정책을 구현하려면 imexpire 규칙을 설정해야 합니다. store.expirerule 파일에 규칙을 포함하면 규칙이 설정됩니다. 다음은 두 개의 전역 store.expirerule 규칙을 보여 주는 예입니다.


Rule1.regexp: 1
Rule1.folderpattern: user/.*/trash
Rule1.messagedays: 2
Rule2:regexp: 1
Rule2.folderpattern: user/.*
Rule2.messagedays: 14

            

이 예에서 Rule 1은 휴지통 폴더의 모든 메시지가 2일 후에 제거되도록 지정합니다. Rule 2는 메시지 저장소의 모든 메시지가 14일 후에 제거되도록 지정합니다.

이 절은 다음과 같은 하위 절로 구성되어 있습니다.

만료 규칙 지침

이 절에서는 store.expirerule 파일 규칙에 대한 지침을 설정합니다.


주 –

이전의 Messaging Server 릴리스에서는 configutil 매개 변수 store.expirerule.attribute를 사용하여 만료 규칙을 설정할 수 있었습니다(Sun Java System Messaging Server 6.3 Administration Referenceconfigutil Parameters 참조).이는 여전히 유효하지만 헤더 제약 조건을 사용하는 만료 규칙(예: 특정 제목 줄을 가진 메시지를 만료하는 것)은 지원되지 않습니다. 어떤 경우에서든 store.expirerule을 사용하여 모든 만료 규칙을 지정하는 것이 가장 좋습니다.


표 20–8 imexpire 속성

속성 

설명(속성 값) 

action

만료 규칙에 걸린 메시지에서 수행할 작업을 지정합니다. 가능한 값은 다음과 같습니다. 

discard는 메시지를 삭제합니다. 기본값입니다.

report 작업은 메일함 이름과 uid-validity 및 uid를 stdout에 출력합니다.

archive는 Sun Compliance 및 Content Management System에 메시지를 아카이브로 보관한 다음 메시지를 삭제합니다.

fileinto: folder 작업은 메시지를 특정 폴더에 넣습니다. 공유 폴더 접두사를 사용하면 메시지를 다른 사용자가 소유한 폴더에 넣을 수 있습니다.

exclusive

해당 규칙이 배타적인지 여부를 지정합니다. exclusive로 지정된 경우 해당 규칙만 지정된 메일함에 적용되며 다른 모든 규칙은 무시됩니다. 둘 이상의 배타적인 규칙이 존재할 경우 마지막으로 로드된 규칙이 사용됩니다. 예를 들어, 전역 및 로컬 배타적인 규칙을 지정할 경우 로컬 규칙이 사용됩니다. 둘 이상의 배타적인 전역 규칙이 있을 경우 configutil에서 나열한 마지막 전역 규칙이 사용됩니다. (1/0)

folderpattern

해당 규칙의 영향을 받는 폴더를 지정합니다. 형식은 store_root /partition/*/ 디렉토리를 나타내는 user/로 시작해야 합니다. 표 20–9를 참조하십시오. (POSIX 정규 표현식).

messagecount

폴더의 최대 메시지 수입니다. 추가 메시지가 전달되면 가장 오래된 메시지가 정리됩니다. (정수) 

foldersize

추가 메시지가 전달되었을 때 가장 오래된 메시지가 정리되기 전까지의 최대 폴더 크기입니다. (바이트 단위 정수) 

messagedays

메시지가 정리되기 전까지의 메시지 기간(일)입니다. (정수) 

messagesize

메시지가 정리되는 것으로 표시되기 전까지의 메시지의 최대 크기(바이트)입니다. (정수) 

messagesizedays

유예 기간입니다. 크기를 초과한 메시지가 폴더에 남아 있어야 하는 일 수입니다. (정수) 

messageheader.header

제거할 메시지를 표시하는 헤더 필드와 문자열을 지정합니다. 값은 대소문자를 구분하지 않으며 정규 표현식은 인식되지 않습니다. 예: Rule1.messageheader.Subject: Get Rich Now!

ExpiresExpiry-Date 헤더의 경우 imexpire는 이러한 헤더 필드로 지정한 날짜 값이 messagedays 속성보다 오래 되었으면 메시지를 제거합니다. 여러 개의 만료 헤더 필드를 지정한 경우에는 가장 이른 만료 날짜가 사용됩니다. (문자열)

regexp

규칙 작성에 UNIX 정규 표현식을 사용 가능하게 합니다. (1 또는 0) 지정하지 않으면 IMAP 표현식이 사용됩니다. 

savedays

메시지가 정리될 때까지 폴더에 저장되는 시간(일 수)입니다. 

seen

seen은 사용자가 메시지를 열었을 때 시스템에 의해 설정되는 메시지 상태 플래그입니다. seen 속성이 and로 설정된 경우 메시지를 보는 것 외에도 다른 기준을 충족해야 규칙이 적용됩니다. seen 속성이 or로 설정된 경우 메시지를 보았거나 또는 다른 기준을 충족하면 규칙이 적용됩니다. (and/or)

sieve

메시지 선택 기준을 지정하는 시브(Sieve) 규칙입니다. 예: Rule17.sieve: header :contains “Subject” “Vigara”

deleted

deleted는 사용자가 메시지를 삭제했을 때 시스템에 의해 설정되는 메시지 상태 플래그입니다. deleted 속성이 and로 설정된 경우 메시지를 삭제한 것 외에도 다른 기준을 충족해야 규칙이 적용됩니다. deleted 속성이 or로 설정된 경우 메시지를 삭제했거나 또는 다른 기준을 충족하면 규칙이 적용됩니다. (and/or)

현지화된 메일함 이름

IMAP 프로토콜은 메일함 이름에 수정된 UTF-7 인코딩을 사용하도록 지정합니다. Messaging Server는 메일함 이름을 현지화할 수 있도록 외부 인터페이스에서 현지화된 문자 세트를 지원합니다. 하지만 내부에서 시스템은 현지화된 이름을 UTF-7로 변환합니다. 따라서 클라이언트에 현지화된 메일함 이름이 있는 폴더는 그에 해당되는 UTF-7로 된 메일함 파일 이름을 가집니다(IMAP 오류 메시지에서는 메일함 이름을 현지화된 문자 세트가 아닌 UTF-7로 출력)

일반적으로 메일함 이름이 필요한 대부분의 메시지 저장소 유틸리티는 현지화된 문제 세트로 된 이름을 사용하지만 다른 문자 세트를 사용할 수 있는 옵션 플래그가 있을 수도 있습니다. 이러한 유틸리티에는 reconstruct, mboxutil, imsbackup, imsrestorehashdir가 있습니다. 하지만 imexpirefolderpattern 속성으로 지정되는 메일함 이름이 UTF-7로 되어 있어야 합니다. 현지화된 이름은 사용할 수 없습니다.

imexpire에 적절한 folderpattern을 얻으려면 현지화된 메일함 이름을 수정된 UTF-7 이름으로 변환해야 할 수도 있습니다. mboxutil -E 명령을 사용하여 다음과 같이 수행하면 됩니다.

현지화된 파일 이름과 수정된 UTF-7 파일 이름을 보여 주는 mboxutil

첫 번째 mboxutil은 현지화된 파일 이름을 나타냅니다. 두 번째 mboxutil은 수정된 UTF-7의 파일 이름을 나타냅니다. IMAP list 명령을 사용할 수도 있습니다.

IMAP list 명령

텍스트 형식으로 imexpire 규칙 설정

자동 메시지 제거 규칙은 store.expirerule 파일에서 규칙을 지정하여 설정합니다. store.expirerule 파일에는 한 행에 하나씩 만료 기준이 있습니다. 전역 규칙 구성 파일(msg-svr-base/data/store/store.expirerule)의 만료 기준 형식은 다음과 같습니다.

rule_name.attribute: value

사용자 또는 메일함 규칙 구성 파일의 만료 규칙 형식은 다음과 같습니다.

attribute: value

예 20–4에서는 msg-svr-base/config/store.expirerule의 전역 만료 규칙 집합을 보여 줍니다.

Rule 1은 다음과 같이 전역 만료 정책(즉, 모든 메시지에 적용되는 정책)을 설정합니다.

Rule 2는 호스트된 도메인 siroe.com에서 사용자에 대한 자동 메시지 제거 정책을 설정합니다. 이 규칙은 메일함 크기를 1MB로 제한하고 삭제된 메시지를 제거하며 14일이 지난 메시지를 제거합니다.

Rule 3은 f.dostoevski 사용자의 inbox 폴더에 있는 메시지에 대한 자동 메시지 제거 정책을 설정합니다. 이 규칙은 제목 줄에 "On-line Casino" 라는 표현이 있는 메시지를 제거합니다.


예 20–4 imexpire 규칙 예


Rule1.regexp: 1
Rule1.folderpattern: user/.*
Rule1.messagesize: 100000
Rule1.messagesizedays: 3
Rule1.deleted: or
Rule1.Subject: Vigara Now!
Rule1.Subject: XXX Porn!
Rule1.messagecount: 1000
Rule1.messagedays: 365
Rule2.regexp: 1
Rule2.folderpattern: user/.*@siroe.com/.*Rule2.exclusive: 1
Rule2.deleted: or
Rule2.messagedays: 14
Rule2.messagecount: 1000
Rule3.folderpattern: user/f.dostoevski/inboxRule3.Subject: *On-line Casino*
                  

imexpire 폴더 패턴 설정

POSIX 정규 표현식을 사용하여 imexpire 속성 regex를 1로 설정함으로써 폴더 패턴을 지정할 수있습니다. 지정하지 않으면 IMAP 표현식이 사용됩니다. user/로 시작되고 뒤에 패턴이 나오는 형식이어야 합니다. 표 20–9에서는 다양한 폴더의 폴더 패턴을 보여 줍니다)

표 20–9 정규 표현식을 사용한 imexpire 폴더 패턴

폴더 패턴 

범위 

user/userid/.*

userid의 모든 폴더에 있는 모든 메시지에 적용됩니다.

user/userid/Sent

Sent 폴더에 있는 userid의 메시지에 규칙을 적용합니다.

user/.*

메시지 저장소 전체에 규칙을 적용합니다. 

user/.*/trash

모든 사용자의 trash 폴더에 규칙을 적용합니다.

user/.*@siroe.com/.*

호스트된 도메인 siroe.com의 폴더에 규칙을 적용합니다. 

user/[^@]*/.*

기본 도메인에 있는 폴더에 규칙을 적용합니다. 

20.9.2.3 자동 메시지 제거 및 로깅 수준 예약

자동 메시지 제거는 imsched 예약 데몬에 의해 활성화됩니다. 기본적으로 imsched는 매일 23시에 imexpire를 호출하여 메시지를 정리 및 제거합니다. 이 일정은 표 20–10에 설명된 configutil 매개 변수 local.schedule.expirestore.cleanupage를 설정하여 사용자 정의할 수 있습니다.

메시지 저장소가 큰 경우 만료와 제거를 완료하는 데 시간이 걸릴 수 있으므로 이러한 프로세스를 실행하는 빈도를 실험하여 결정하는 것이 필요할 수 있습니다. 예를 들어, 만료/제거 주기가 10시간일 경우 만료 및 제거를 하루에 한 번씩 실행하도록 기본 일정을 세우지는 않을 것입니다. 일정은 imexpire 명령 및 자동 작업 예약 매개 변수를 사용하여 만료 및 제거됩니다( 4.6 자동 작업 예약 참조). 예를 들면 다음과 같습니다.


configutil -o local.schedule.expire -v "0 1 * * 6 /opt/SUNWmsgsr/sbin/imexpire -e"
configutil -o local.schedule.mspurge -v "0 23 * * * /opt/SUNWmsgsr/sbin/imexpire -c"

이 예에서 메시지는 토요일 오전 1시에 만료되고 매일 밤 11시에 제거됩니다. 제거 일정이 설정되어 있지 않으면 imexpire에서 만료 후에 제거를 수행합니다.

표 20–10 만료 및 제거 configutil 로그 및 예약 매개 변수

매개 변수 

설명 

local.schedule.expire

imexpire를 실행하는 간격입니다. 다음 UNIX crontab 형식을 사용합니다. minute hour day-of-month month-of-year day-of-week

값은 공백이나 탭으로 구분하며 각각 0-59, 0-23, 1-31, 1-12 및 0-6(0=일요일)의 값을 사용할 수 있습니다. 각 시간 필드에는 별표(유효한 모든 값), 쉼표로 구분된 값 목록 또는 하이픈으로 구분된 두 값의 범위를 사용할 수 있습니다. 날짜는 일과 요일 모두를 사용하여 지정할 수 있지만 둘 다 일치하는 경우가 매우 드물기 때문에 일반적이지 않습니다. 일과 요일을 모두 지정한 경우에는 둘 다 필요합니다. 예를 들어, 17일과 화요일을 설정하면 두 값이 모두 true가 되어야 합니다. 

imexpire-e-c 플래그를 사용하여 각각 만료만 하도록 또는 제거만 하도록 할 수도 있습니다. Sun Java System Messaging Server 6.3 Administration Referenceimexpire를 참조하십시오.

간격 예:

1) 오전 12:30 , 8:30 및 오후 4:30에 imexpire를 실행합니다.

30 0,8,16 * * * /opt/SUNWmsgsr/sbin/imexpire

2) 주중 아침 3:15에 imexpire를 실행합니다.

15 3 * * 1-5 /opt/SUNWmsgsr/sbin/imexpire

3) 월요일에만 imexpire를 실행합니다.

0 0 * * 1 /opt/SUNWmsgsr/sbin/imexpire

기본값:  

0 23 * * * /opt/SUNWmsgsr/sbin/imexpire

비활성화하려면local.schedule.expire.enableNO로 설정합니다.

store.cleanupage

만료 또는 정리된 메시지가 purge에 의해 영구적으로 제거된 전까지의 기간(시간)입니다.

기본값: 없음 

local.store.expire.loglevel

다음과 같이 로그 수준을 지정합니다. 

1 = 전체 만료 세션의 요약을 기록합니다.  

2 = 만료된 메일함별로 하나씩 메시지를 기록합니다.  

3 = 만료된 메일별로 하나씩 메시지를 기록합니다. 

기본값: 1 

imexpire 로깅 수준 설정

imexpire는 완료 시에 기본 로그 파일에 대한 요약을 기록합니다. 명령줄에서 만료가 호출될 경우 -v(verbose) 및 -d(debug) 옵션을 사용하여 자세한 상태/디버그 메시지를 stderr에 기록하도록 imexpire에 지시할 수 있습니다. imexpireimsched에 의해 호출될 경우 configutil 매개 변수 local.store.expire.loglevel을 여러 다른 로깅 수준에 대해 1,2 또는 3으로 설정할 수 있습니다. Loglevel 1은 기본값으로 전체 만료 세션의 요약을 기록합니다. Loglevel 2는 만료된 메일함별로 하나씩의 메시지를 기록합니다. 마지막으로 Loglevel 3은 만료된 메시지별로 하나씩의 메시지를 기록합니다.

자동 메시지 제거에서 지정된 사용자 제외

msg-svr-base /config/에 있는 expire_exclude_list라는 파일에 한 행씩 사용자 아이디를 추가하여 지정된 사용자를 만료 규칙에서 제외할 수 있습니다. 또는 사용자의 메일함에 배타적인 더미 만료 규칙을 구성합니다.