외부 및 내부 수신자에 게 전송 하는 항목에서에서 찾을 수 없습니다 "없는 받는 사람"으로 eDiscovery 하 여 Exchange 2013

Microsoft 365를 사용하여 어디에서나 모든 장치에서 작업 가능

Microsoft 365으로 업그레이드하여 최신 기능 및 업데이트를 통해 어디서나 작업하세요.

지금 업그레이드

증상

가정 만드는 위치 eDiscovery 검색에서 Exchange 관리 센터 (EAC) 지정 하 여 외부 받는 사람에 게 전송 되는 항목을 반환 하는 아니라 받는 사람: "internalDomain" 검색에서 조건. 이 경우 검색 구문 외부 받는 사람에 게 전송 되는 항목을 반환 하지만 내부 및 외부 받는 사람에 없는 항목을 제외.

원인

EDiscovery를 사용 하 여 키워드 쿼리 언어 (KQL) 부울 논리를 사용 하 여이 문제가 발생 합니다. 따라서의 없는 받는 사람: "internalDomain" 는 내부 받는 사람을 포함, 심지어는 외부 받는 사람 항목에 있는 모든 항목을 제외 합니다.

참고: 현재 디자인 EAC 통해 보다 정교한 기능을 제공 하지 않습니다.

해결 방법

이 문제를 해결 하려면 다음 방법 중 하나를 사용할 수 있습니다.

방법 1: 사용 EWSEditor

자유 웨어 응용 프로그램은이 문제를 해결 하려면 사용할 수 있는. 않는 eDiscovery 창이 항목에 대 한 검색을 사용할 수 있습니다.

참고: 이러한 검색을 수행 하려면 감사 RBAC 역할을 사용 하 고 계정을 설정 해야 합니다.

방법 2: 다른 API를 사용 합니다.

KQL에 의존 하지 않는 다른 API를 사용 합니다. Exchange 웹 서비스 (EWS)와 같은 다른 프로그램을 사용 하 여 사용자 지정 솔루션을 구축 해야 합니다. 솔루션 (더 큰 데이터 집합) 데이터의 일부를 검색할 수 있습니다. 솔루션 외부 논리를 사용 하 여 일치 하는 메시지의 원하는 세트에 도착 하 여 받은 결과 더 처리할 수 있는 없는 받는 사람: "internalDomain" 기준으로 해석 합니다.
또한 앞으로 이러한 메시지의 확인에 대 한 더 나은 솔루션 수 감사 사서함에 항목 (내부 및 외부 받는 사람)의 복사본을 보낼 수 있는 전송 규칙을 사용 하도록 합니다.

다음은 EWS 관리 되는 API를 사용 하 여이 문제를 해결 하려면 샘플 코드를.

참고: 이 코드 예제에서는 InternalDomain1.com, InternalDomain2.com, InternalDomain3.com 내부 도메인 이름으로 대체 합니다. 코드의 세 가지 위치에이 개체 틀이 표시 됩니다.


방법 3: 예방 모니터링

내부 및 외부 받는 사람에 게에 있는 항목의 id에 대 한 감사 사서함에 해당 항목의 복사본을 보낼 수 있는 전송 규칙을 만듭니다.


<#AQS search using EWS Managed API
USAGE: .\Search-Mailbox.ps1 -MailboxName mbx@domain.com -AqsString "(""Test"")"
#>

[CmdletBinding()]
param (
[Parameter(Position=0,Mandatory=$True,HelpMessage="Mailbox SMTP format")]
[ValidateNotNullOrEmpty()]
[string]$MailboxName,

[Parameter(Position=1,Mandatory=$True,HelpMessage="AQS QueryString")]
[ValidateNotNullOrEmpty()]
[string]$AqsString
)
#######################################################################
# Update EWS DLL Folder,$domain, $account, $pwd and $exserver Values
########################################################################
$resultFL = "C:\Scripts\Result"
$domain = "SEARCH"
$account = "MailboxSearch@domain.com";$pwd = '123'
$exServer = "exch01search.net"
$EWSManagedApiPath = "C:\scripts\Microsoft.Exchange.WebServices.dll"
########################################################################
$LogFile_All = "$($resultFL)\$($Mailboxname)_All.txt"
$LogFile_Filtr = "$($resultFL)\$($Mailboxname)_Filtered.txt"
$LogFile_Itype = "$($resultFL)\$($Mailboxname)_ItemTypes.txt"
$StopWatch = New-Object system.Diagnostics.Stopwatch
$StopWatch.Start()
Add-Type -Path $EWSManagedApiPath
$service = New-Object Microsoft.Exchange.WebServices.Data.ExchangeService([Microsoft.Exchange.WebServices.Data.ExchangeVersion]::Exchange2010_SP2)
$service.Credentials= new-object Microsoft.Exchange.WebServices.Data.WebCredentials($account,$pwd,$domain)
$service.UseDefaultCredentials = $false
$UseAutoDiscover = $false
$service.Url = new-object uri("https://domain.com/EWS/Exchange.asmx")
$ImpersonatedUserId = new-object Microsoft.Exchange.WebServices.Data.ImpersonatedUserId([Microsoft.Exchange.WebServices.Data.ConnectingIdType]::SmtpAddress,$MailboxName);
$service.ImpersonatedUserId = $ImpersonatedUserId
#Define Extended properties
$PR_Folder_Path= new-object Microsoft.Exchange.WebServices.Data.ExtendedPropertyDefinition(26293, [Microsoft.Exchange.WebServices.Data.MapiPropertyType]::String);
$PR_FOLDER_TYPE = new-object Microsoft.Exchange.WebServices.Data.ExtendedPropertyDefinition(13825,[Microsoft.Exchange.WebServices.Data.MapiPropertyType]::Integer);
$folderidcnt = new-object Microsoft.Exchange.WebServices.Data.FolderId([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::MsgFolderRoot,$MailboxName)
#Define the FolderView used for Export should not be any larger then 1000 folders due to throttling
$fvFolderView = New-Object Microsoft.Exchange.WebServices.Data.FolderView(1000)
#Deep Transval will ensure all folders in the search path are returned
$fvFolderView.Traversal = [Microsoft.Exchange.WebServices.Data.FolderTraversal]::Deep;
$pSchPropSet= new-object Microsoft.Exchange.WebServices.Data.PropertySet([Microsoft.Exchange.WebServices.Data.BasePropertySet]::FirstClassProperties)
$pSchPropSet.Add($PR_Folder_Path)
$fvFolderView.PropertySet = $pSchPropSet
#The Search filter will exclude any Search Folders
$sfSearchFilter = new-object Microsoft.Exchange.WebServices.Data.SearchFilter+IsEqualTo($PR_FOLDER_TYPE,"1")
$fiResult = $null
$MsgPropSet = New-Object Microsoft.Exchange.WebServices.Data.PropertySet
$MsgPropSet.Add([Microsoft.Exchange.WebServices.Data.ItemSchema]::Id)
$MsgPropSet.Add([Microsoft.Exchange.WebServices.Data.ItemSchema]::ParentFolderId)
$MsgPropSet.Add([Microsoft.Exchange.WebServices.Data.ItemSchema]::ItemClass)
$MsgPropSet.Add([Microsoft.Exchange.WebServices.Data.ItemSchema]::Subject)
$MsgPropSet.Add([Microsoft.Exchange.WebServices.Data.ItemSchema]::DateTimeSent)
$MsgPropSet.Add([Microsoft.Exchange.WebServices.Data.EmailMessageSchema]::Sender)
$MsgPropSet.Add([Microsoft.Exchange.WebServices.Data.EmailMessageSchema]::ToRecipients)
$MsgPropSet.Add([Microsoft.Exchange.WebServices.Data.EmailMessageSchema]::ccRecipients)
$MsgPropSet.Add([Microsoft.Exchange.WebServices.Data.EmailMessageSchema]::BccRecipients)
$AptPropSet = New-Object Microsoft.Exchange.WebServices.Data.PropertySet
$AptPropSet.Add([Microsoft.Exchange.WebServices.Data.ItemSchema]::Id)
$AptPropSet.Add([Microsoft.Exchange.WebServices.Data.ItemSchema]::ParentFolderId)
$AptPropSet.Add([Microsoft.Exchange.WebServices.Data.ItemSchema]::ItemClass)
$AptPropSet.Add([Microsoft.Exchange.WebServices.Data.ItemSchema]::Subject)
$AptPropSet.Add([Microsoft.Exchange.WebServices.Data.ItemSchema]::DateTimeSent)
$AptPropSet.Add([Microsoft.Exchange.WebServices.Data.AppointmentSchema]::Organizer)
$AptPropSet.Add([Microsoft.Exchange.WebServices.Data.AppointmentSchema]::RequiredAttendees)
$AptPropSet.Add([Microsoft.Exchange.WebServices.Data.AppointmentSchema]::OptionalAttendees)
$SchPropSet = New-Object Microsoft.Exchange.WebServices.Data.PropertySet
$SchPropSet.Add([Microsoft.Exchange.WebServices.Data.ItemSchema]::Id)
$SchPropSet.Add([Microsoft.Exchange.WebServices.Data.ItemSchema]::ParentFolderId)
$SchPropSet.Add([Microsoft.Exchange.WebServices.Data.ItemSchema]::ItemClass)
$SchPropSet.Add([Microsoft.Exchange.WebServices.Data.ItemSchema]::Subject)
$SchPropSet.Add([Microsoft.Exchange.WebServices.Data.ItemSchema]::DateTimeSent)
$SchPropSet.Add([Microsoft.Exchange.WebServices.Data.MeetingRequestSchema]::Organizer)
$SchPropSet.Add([Microsoft.Exchange.WebServices.Data.MeetingRequestSchema]::RequiredAttendees)
$SchPropSet.Add([Microsoft.Exchange.WebServices.Data.MeetingRequestSchema]::OptionalAttendees)
#Write-host "Checking Mailbox: $($MailboxName)"
#Write-host "Searching QueryString: $($AqsString)"
#The Do loop will handle any paging that is required if there are more the 1000 folders in a mailbox
$ic=0
$fic=0
do {
$fiResult = $Service.FindFolders($folderidcnt,$sfSearchFilter,$fvFolderView)
#$fiResult.Folders.Count
foreach($ffFolder in $fiResult.Folders){
# "Processing : " + $ffFolder.displayName
$fpath = $ffFolder.ExtendedProperties[0].Value
$fic++
$fiItems = $null
$ItemView = New-Object Microsoft.Exchange.WebServices.Data.ItemView(1000)
do{
Write-Progress -Activity "Processing $($MailboxName) - QueryString $($AqsString)" -Status $ffFolder.DisplayName -PercentComplete ($fic/$fiResult.Folders.Count*100)
$fiItems = $ffFolder.findItems($AqsString,$ItemView)
$ic = $ic + $fiItems.items.count
$ItemView.offset += $fiItems.Items.Count
foreach($Item in $fiItems.Items){
$itype = "$($item.ItemClass)`t$($Item.id.UniqueId)"
Add-content -Value $itype -Path $LogFile_Itype
$result=""
switch ($item.ItemClass)
{
"IPM.Note" {
$Item.Load($MsgPropSet)
$MT = @() # Create a MAPITABLE to filter external Domains
$eRecipients=""
$result = "$($mailboxname)`t$($fpath)`t$($Item.Sender.Name)`t$($Item.DateTimeSent)`t$($Item.Subject)`t$($Item.id.UniqueId)`t$($item.ItemClass)"
Add-content -Value $result -Path $LogFile_All
$item.ToRecipients | %{If($_.RoutingType -ne "EX"){$mt+=$_.Address
}} $item.ccRecipients | %{If($_.RoutingType -ne "EX"){$mt+=$_.Address}} $item.BccRecipients | %{If($_.RoutingType -ne "EX"){$mt+=$_.Address}} $er=@()<#Replace InternalDomain1.com, InternalDomain2.com, InternalDomain3.com with your internal domain name.#>
$mt | %{if($_ -notmatch 'InternalDomain1.com|InternalDomain2.com|InternalDomain3.com'){
$eRecipients = $true
$er +=$_
}
}
}

"IPM.Appointment" {
$Item.Load($AptPropSet)
$MT = @() # Create a MAPITABLE to filter external Domains
$eRecipients=""
$result = "$($mailboxname)`t$($fpath)`t$($Item.Organizer.Name)`t$($Item.DateTimeSent)`t$($Item.Subject)`t$($Item.id.UniqueId)`t$($item.ItemClass)"
Add-content -Value $result -Path $LogFile_All
$item.RequiredAttendees | %{If($_.RoutingType -ne "EX"){$mt+=$_.Address
}} $item.OptionalAttendees | %{If($_.RoutingType -ne "EX"){$mt+=$_.Address}} $er=@() <#Replace InternalDomain1.com, InternalDomain2.com, and InternalDomain3.com with your internal domain name.#>
$mt | %{if($_ -notmatch 'InternalDomain1.com|InternalDomain2.com|InternalDomain3.com'){
$eRecipients = $true
$er +=$_
}
}
}

"IPM.Schedule.Meeting.Request" {
$Item.Load($SchPropSet)
$MT = @() # Create a MAPITABLE to filter external Domains
$eRecipients=""
$result = "$($mailboxname)`t$($fpath)`t$($Item.Organizer.Name)`t$($Item.DateTimeSent)`t$($Item.Subject)`t$($Item.id.UniqueId)`t$($item.ItemClass)"
Add-content -Value $result -Path $LogFile_All
$item.RequiredAttendees | %{If($_.RoutingType -ne "EX"){$mt+=$_.Address
}} $item.OptionalAttendees | %{If($_.RoutingType -ne "EX"){$mt+=$_.Address}} $er=@()<#Replace InternalDomain1.com, InternalDomain2.com, InternalDomain3.com with your internal domain.#>
$mt | %{if($_ -notmatch 'InternalDomain1.com|InternalDomain2.com|InternalDomain3.com'){
$eRecipients = $true
$er +=$_
}
}
}
Default {$eRecipients="";$result=""}
} #END Switch
If($eRecipients){
$er = $er -join ";"
$result="$($result)`t$($er)"
Add-content -Value $result -Path $LogFile_Filtr
}

} #End Foreach Items
}while($fiItems.MoreAvailable -eq $true)
} #End Foreach Folders
$fvFolderView.Offset += $fiResult.Folders.Count
}while($fiResult.MoreAvailable -eq $true)
$StopWatch.Stop()
write-host "Completed $($Mailboxname) in Seconds:" $StopWatch.Elapsed.TotalSeconds -ForegroundColor Green
Write-Host "Total Items found:" $ic
$StopWatch = $null



상태

Microsoft는 디자인 임을 확인 했습니다.

자세한 내용

EDiscovery 내부에 대 한 자세한 내용은 다음 Microsoft 웹 사이트로 이동.

KQL에 대 한 자세한 내용은 다음 Microsoft 웹 사이트로 이동:

추가 도움이 필요하신가요?

기술 향상
교육 살펴보기
새로운 기능 우선 가져오기
Microsoft Insider 참가

이 정보가 유용한가요?

소중한 의견에 감사드립니다.

피드백을 주셔서 감사합니다. Office 지원 에이전트와 연락하는 것이 도움이 될 것 같습니다.

×