Exchange에서 사용자의 사서함을 실수로 삭제했다면, PowerShell(PoSh)을 활용해 대부분 복원할 수 있습니다. 핵심은 사서함이 삭제되었음을 인지한 즉시 빠르게 조치하는 것입니다.
사서함을 실수로 삭제했음을 깨달았을 때 심장이 내려앉는 순간이 찾아오죠. 만약 몇 개의 이메일 메시지만 삭제한 것이라면, Office 365에서 삭제된 이메일을 복구하는 방법도 함께 참고하시기 바랍니다.
본격적으로 시작하기 전에, 이 가이드는 Office 365 환경의 Exchange Online과 Exchange 2010에서 삭제된 사서함을 복원하는 방법을 다룹니다. 또한 설명된 방법들을 사용할 수 있는 관리자 권한을 보유하고 있고, 기본적인 PowerShell 스크립팅 경험이 있다고 가정합니다.
사서함이 삭제되면 어떻게 되나요?
사서함이 삭제되면 Exchange Online에서는 Azure Active Directory(AD) 휴지통으로, Exchange 2010에서는 연결 끊긴 사서함(Disconnected Mailboxes) 디렉터리로 이동됩니다.
설정된 보존 정책에 따라 최대 30일까지 그곳에 보관됩니다. 덕분에 실수를 인지하고 복구할 수 있는 유예 기간이 생기는 셈입니다.
Exchange Online에서 삭제된 사서함 복원하기
PowerShell로 Exchange Online에 연결
로컬 세션에서 PowerShell 콘솔을 열고 다음 명령어로 로그인 자격 증명을 변수에 저장합니다.
$userCredential = Get-Credential
이렇게 하면 이후 다른 스크립트를 작업할 때 훨씬 편리합니다. 명령어를 실행하면 Exchange Online 관리용 사용자 이름과 비밀번호를 입력할 수 있는 창이 열립니다.
다음으로 세션에서 실제 작업을 수행할 수 있도록 실행 정책 수준을 설정합니다. 이렇게 하면 서명되지 않은 명령어도 실행할 수 있습니다. 다만 PowerShell 스크립트 서명 모범 사례도 함께 학습해 두는 것이 좋습니다.
Set-ExecutionPolicy Unrestricted
확인 메시지가 표시되면 Y(Yes)를 누릅니다.
이제 로컬 컴퓨터와 Exchange Online 간의 연결을 여는 데 사용할 $session 변수를 생성합니다.
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $userCredential -Authentication Basic -AllowRedirection
Powershell-liveid는 Office 사이트의 ID입니다. 일반적으로 회사 이름을 변형한 형태입니다.
다음 명령어로 Exchange Online에서 PoSh 세션을 엽니다.
Import-PSSession $Session -DisableNameChecking
이제 자신의 컴퓨터에 앉아 있으면서도 Exchange Online에서 직접 PowerShell을 사용할 수 있습니다.
PowerShell로 삭제된 사서함 복원
다음 단계는 매우 간단합니다. 오히려 연결 설정이 더 오래 걸릴 정도입니다.
아래 cmdlet만 실행하면 됩니다.
Undo-SoftDeletedMailbox user@mycompany.com -WindowsLiveID user@mycompany.com -Password (ConvertTo-SecureString -String 'newpassword' -AsPlainText -Force)
user@mycompany.com 부분 두 곳을 복원하려는 사서함의 이름과 Windows LiveID로 변경하세요. 두 값이 반드시 동일하지 않을 수 있다는 점에 유의해야 합니다.
또한 사서함에 새 비밀번호를 설정해야 합니다. 스크립트의 newpassword를 원하는 비밀번호로 변경하세요. 이후 해당 비밀번호를 사용자에게 전달하고, 다음 로그인 시 비밀번호를 변경하도록 안내해야 합니다.
마지막으로 다음 cmdlet을 사용해 복원이 제대로 되었는지 확인합니다.
Get-Mailbox user@mycompany.com
복원이 성공했다면 cmdlet이 복원된 사서함에 대한 정보를 반환합니다. 오류가 반환된다면 명령어를 다시 실행하고 올바른 사서함 이름과 Windows LiveID를 사용했는지 확인하세요.
그래도 작동하지 않는다면 시스템 백업에서 사서함을 복원해야 합니다. 시스템 백업에는 여러 종류가 있으므로 이는 오늘 다루는 범위를 벗어납니다.
작업이 끝나면 반드시 PoSh 세션을 닫아야 합니다. 동시에 실행할 수 있는 PoSh 세션 수에는 제한이 있으며, 세션을 열어두면 그중 하나를 계속 점유하게 됩니다. 세션을 닫지 않으면 새 세션을 시작하기 전에 기존 세션이 시간 초과될 때까지 기다려야 합니다.
Remove-PSSession $Session
이것으로 끝입니다. 같은 상황이 다시 발생할 경우를 대비해 이 과정을 PowerShell 모듈로 스크립트화해 두면 편리하게 재사용할 수 있습니다.
Exchange 2010에서 삭제된 사서함 복원하기
이 방법은 Office 365나 하이브리드 환경에서는 작동하지 않으며, 온프레미스 Exchange 2010 전용입니다.
메일 서버에서 Exchange Management Console(EMC)을 엽니다.
Recipient Configuration > Disconnected Mailbox로 이동하면 해당 사용자의 사서함이 표시되어야 합니다.
만약 목록에 없다면 사서함 데이터베이스 정리 프로세스가 아직 실행되지 않은 것입니다. 괜찮습니다. 강제로 실행할 수 있습니다.
- 관리자 권한으로 Exchange Management Shell(EMS)을 엽니다. Exchange 관련 PowerShell 작업은 여기서 수행합니다.
- 다음 cmdlet을 입력합니다.
Get-MailboxDatabase | Clean-MailboxDatabase
- 완료되면 EMC로 돌아가 Disconnected Mailbox를 마우스 오른쪽 버튼으로 클릭한 후 Refresh를 클릭합니다.
- 이제 해당 사서함이 목록에 나타날 것입니다. 실제로 최근에 삭제된 다른 사서함과 함께 표시됩니다.
- EMS로 돌아가 다음 cmdlet을 입력합니다.
Connect-Mailbox -Identity "username" -Database "Mailbox Database" -User "username"
- Username은 해당 사용자의 Windows 계정 이름(예: Test User)이며, Mailbox Database는 EMC의 Disconnected Mailbox 창에서 사용자 이름 옆에 표시된 데이터베이스 이름입니다.
- Disconnected Mailbox를 새로 고치면 해당 사서함이 더 이상 표시되지 않을 것입니다. Recipient Configuration > Mailbox로 이동하여 사용자의 사서함이 있는지 확인하세요.
이메일 주소와 별칭(alias) 등 모든 설정이 올바른지 확인합니다. 문제가 없다면 사용자가 다음에 Outlook을 열 때 모든 데이터가 이전과 그대로 있는 것을 확인할 수 있습니다.
사서함 복원 완료
지금까지 PowerShell을 사용해 Exchange Online과 Exchange 2010에서 사서함을 복원하는 방법을 알아보았습니다. 하이브리드 환경이라면 절차가 다소 복잡하지만 역시 가능합니다.
이러한 다양한 cmdlet의 존재를 알고 있는 것만으로도 어떤 버전이나 구성의 Exchange든 능숙하게 다룰 준비가 된 것입니다.