Mailbox Quarantine feature of Exchange 2010

 Introduction

특정 corrupted 된 메세지로 인하여 전체 Information Store를 다운시켜 서비스 지장을 초래하는 경우가 존재합니다. 2010의 Mailbox Quarantine 은 이러한 상황을 막는 데 도움이 될 수 있습니다.

 

What is Mailbox Quarantine ?

Mailbox Quarantine은 Exchange 2010 information Store의 Feature입니다. 레지스트리에 존재하는 값을 기본으로하여 Store를 crash하거나 그럴 가능성이 있는 mailbox 를 감지하고 특정 기간동안 그것을 Quarantine하게 됩니다. 그렇게 Store를 crash를 유발할 수 있는 mailbox를 "Poisoned" mailbox라고 합니다.

 

When does quarantine happen ?

다음의 두 경우에 quarantine이 발생합니다.

1. mailbox 안의 특정 mail thread 가 crash 된 경우

2. 하나의 mailbox 를 처리하는데 5개 이상의 thread가 할당되어 오랜시간 진행되지 못하는 경우

 

How does it work?

Store는 crash 조짐이 있는 mailbox에 tagging을 하게됩니다.

해당 Tag에는 store가 crash를 유발한 횟수와 time stamp를 포함합니다.

만약 mailbox에 의해 store가 crash 되었다면 다음 경로에 해당 레지스트리키가 생성됩니다.

HKLM\SYSTEM\CCS\Services\MSexchangeIS\Servername\Private-dbguid\Quarantined Mailboxes\ {Mailbox GUID}

CrashCount: The number of times the mailbox has crashed the store

LastCrashTime: The last time the mailbox crashed the store

· 최소 1번 이상 mailbox 에 의한 crash가 발생되어야 해당 레지스트리키가 생성됩니다.

 

Database가 mount될때마다 store는 해당 database에 tagging 처리된 mailbox가 있는지 확인하기 위해 레지스트리키를 체크하게 됩니다. 만약 레지스트리에 의해 특정 mailbox가 store를 crash한 경우가 확인되면 해당 mailbox는 quarantine 됩니다.

기본적으로 2시간 안에 3번의 위험요소가 인지되면 해당 mailbox는 6시간동안 quarantine됩니다. 이러한 기본 설정은 다음 레지스트리키를 생성하여 수정이 가능합니다.

HKLM\SYSTEM\CCS\Services\MSexchangeIS\ParameterSystem\Servername\Private-dbguid\Quarantined Mailboxes

MailboxQuarantineCrashThreshold: The number of times a mailbox can be identified before the store quarantines it.

MailboxQuarantineDurationInseconds: The number of seconds a mailbox remains in quarantine before the store releases it.

· 기본적으로는 위 두개의 레지스트리키는 존재하지 않습니다. 기본설정을 수정하기 위한 경우에만 생성하면 됩니다.

Store의 Background process는 각 마운트된 database에 대해 2시간 간격(수정불가)으로 레지스트리 값을 체크합니다. Store는 CrashCountLastCrashTime 값을 체크하고 다음 4가지 action을 처리합니다.

1. 모든 tag처리된 mailbox들이 최근 2시간이내에MailboxQuarantineThreshhold (기본값은 3) 보다 작은CrashCount값을 가질 경우HKLM\SYSTEM\CCS\Services\MSexchangeIS\Servername\Private-dbguid\Quarantined Mailboxes 에 위치한mailbox의 dbguid 키값이 삭제됩니다.

2. MailboxQuarantineThreshhold (기본값은 3) 보다 큰 CrashCount 를 가진 tag처리된 mailbox가 quarantine되지 않았다면 해당 mailbox는 즉시 quarantine 됩니다.

3. Mailbox 가 기본 6시간동안 혹은MailboxQuarantineDurationInSeconds 에 지정된 시간만큼 quarantine되어 있으면 해당 mailbox는 즉시 해제됩니다.

4. Mailbox 가 기본 6시간동안 혹은MailboxQuarantineDurationInSeconds 에 지정된 시간만큼 quarantine되어 있지 않은 상태라면 해당 mailbox는 여전히 quarantine되어 있는 상태로 남아있게 됩니다.

What happens when clients try to access a quarantined mailbox ?

클라이언트가 mailbox에 접근 시 다음 동작이 수행됩니다.

1. Store는 ecMailboxQuarantined error code를 리턴하게 되고 이를 바탕으로MapiExceptionMailboxQuarantined 의 일시적 exception을 transport 와 XSO client 에게 던져 줍니다.

2. 5분간격으로 transport 는 quarantine된 mailbox로 보내진 메세지의 배달을 시도하게 됩니다.

3. Outlook Client는 quarantined mailbox 접근을 시도시에 다음 팝업 메세지를 확인할 수 있게 됩니다.

4. OWA에서는 quarantined mailbox 접근을 시도시에 다음 error message를 확인할 수 있습니다.

오직 MFCMAPI(https://mfcmapi.codeplex.com/) 클라이언트만이 quarantine 상태의 mailbox에 access 할 수 있습니다. Content indexing 이나 mailbox assistants 와 같은 Exchange 프로세스조차도 해당 mailbox에 대한 접근은 허용되지 않습니다. 예를들어 다음과 같은 move mailbox 작업역시 error가 발생하게 됩니다.

               

Resetting a quarantined mailbox

 다음 위치에 있는 quarantine 레지스트리키를 삭제함으로써 quarantine mailbox 설정을 reset 할 수 있습니다.

HKLM\SYSTEM\CCS\Services\MSexchangeIS\Servername\Private-dbguid\Quarantined Mailboxes\ {Mailbox guid}.

 Database는 반드시 dismount 후 remount 되거나 IS 서비스를 재시작해야 정상적으로 적용이 됩니다.

Troubleshooting

Application log

Mailbox가 자동적으로 quarantine된 겨우 다음의 이벤트 로그를 확인할 수 있습니다.

Log Name: Application

Source: MSExchangeIS

Event ID: 10018

Task Category: General

Level: Error

Description:

The mailbox for user /o=AMERICAS/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=test1 has been quarantined. Access to this mailbox will be restricted to administrative logons for the next 6 hours.

Mailbox 가 자동적으로 quarantine으로부터 삭제된 경우 다음 이벤트 로그를 확인 가능합니다.

Log Name: Application

Source: MSExchangeIS

Event ID: 10019

Task Category: General

Level: Error

Description: The quarantine of the mailbox for user /o=AMERICAS/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=test1 has expired. Access to the mailbox has been restored.

Shell Command

Mailbox가 quarantine되었는지 확인하기 위해 다음 명령을 사용할 수 있습니다.

Get-MailboxStatistics –identity test1 | FL Isquarantined

Isquarantined : True

Performance Monitor

다음의 Performance monitor Count를 제공합니다.

MSExchangeIS Mailbox\Quarantined Mailbox Count.

이는 특정 서버의 quarantine된 mailbox의 개수를 나타냅니다.

EXTRA

Trace type 은 “Function” 선택 후 “Store” 컴포넌트 아래의 “tagQuarantineMailbox” 테그를 이용하면 됩니다.

by MG