Получение восстанавливаемых элементов в почтовом ящике

 (Пример сценария для этой статьи можно найти здесь https://github.com/gscales/Powershell-Scripts/blob/master/Graph101/Dumpster.ps1 )

В Exchange Online восстановление одного элемента включено по умолчанию, что означает, что когда пользователь (или фрагмент кода) удаляет сообщение, расположенное в папке почтового ящика, или опустошает удаленные элементы, эти элементы затем перемещаются в одну из папок восстанавливаемых элементов. Папки восстанавливаемых элементов - это папки, расположенные под деревом NON_IPM_Subtree почтового ящика (хорошо известный корень папки), то есть невидимые пользователю. Например:


Папки удаления и очистки-это те папки, с которыми вы будете работать чаще всего, так как именно здесь вы можете восстановить (или найти сообщения), которые, возможно, были удалены случайно (или плохими актерами и т. д.).

Типы удалений

При удалении элемента обычно существует 3 режима удаления

  • Переместить в папку Deleteitems: здесь элемент только что перемещен в папку DeleteItems, что означает, что он все еще виден
  • SoftDelete: обычно это происходит, когда кто-то опустошает папку DeleteItems или делает Shift Delete. Электронные письма, которые были мягко удалены, перемещаются в папку удаления, где они хранятся до истечения срока хранения. Эти элементы все еще можно восстановить с помощью функции мусорного контейнера в Outlook, OWA и т. д
  • HardDelete: это может быть сделано с помощью приложения, такого как MFCMapi или с помощью кода в EWS. Когда элементы жестко удаляются, они перемещаются в папку Purges, где они будут находиться до следующего цикла помощника по управляемым папкам (MFA)

Чтобы получить элементы из мягко удаленных элементов в почтовом ящике с помощью Microsoft Graph API вы можете сделать запрос типа

https://graph.microsoft.com/v1.0/users('user@domain.com')/MailFolders('RecoverableItemsDeletions')/messages?$Top=10

Использование примера сценария

Get-RecoverableItemsDeletions -MailboxName user@domain.com -MessageCount 100

Чтобы получить элементы из папки purges с помощью API Microsoft Graph, вы можете сделать запрос типа

https://graph.microsoft.com/v1.0/users('user@domain.com')/MailFolders('RecoverableItemsPurges')/messages?$Top=10

Использование примера сценария

Get-RecoverableItemsPurges -Mailbox user@domain.com -MessageCount 100

Фильтрация результатов

Поскольку эти папки могут содержать большое количество элементов, обычно требуется отфильтровать возвращаемые результаты. Для этого в API Microsoft Graph можно использовать фильтры (или поиск). Например если у вас есть InternetMessageId сообщения которое вы должны были исследовать но уже было удалено пользователем вы можете использовать следующий поиск чтобы найти это сообщение

https://graph.microsoft.com/v1.0/users('user@domain.com')/MailFolders('RecoverableItemsDeletions')/messages?$filter=internetMessageId eq '<SIXPR04MB07943FE6A08A363FD78084F3C81B0@SIXPR04MB0794.apcprd04.prod.outlook.com>'

Использование примера сценария

Get-RecoverableItemsDeletions -Mailbox user@domain.com -filter "internetMessageId eq '<SIXPR04MB07943FE6A08A363FD78084F3C81B0@SIXPR04MB0794.apcprd04.prod.outlook.com>'"

Более простой пример-поиск по отправителю

https://graph.microsoft.com/v1.0/users('user@domain.com')/MailFolders('RecoverableItemsDeletions')/messages?$filter=from/emailAddress/address eq 'gscales@domain.com'

Использование примера сценария

Get-RecoverableItemsDeletions -Mailbox user@domain.com -filter "from/emailAddress/address eq 'gscales@datarumble.com'"

Экспорт удаленного сообщения

В том случае, когда вам нужно экспортировать сообщение, которое вы нашли на приведенном выше шаге, чтобы сделать дальнейший анализ, вы можете сделать это в Microsoft Graph, используя следующий запрос, который вернет содержимое MIME сообщения. Затем вы можете сохранить этот контент как a .EML-файл, который сделает его доступным с помощью клиента почтовых ящиков, такого как Outlook, Thunderbird и т. д.

https://graph.microsoft.com/v1.0/users('gscales@datarumble.com')/messages/AAMkAD../$value

Использование примера сценария

$Item = Get-RecoverableItemsDeletions -Mailbox gscales@datarumble.com -filter "internetMessageId eq '<SIXPR04MB07943FE6A08A363FD78084F3C81B0@SIXPR04MB0794.apcprd04.prod.outlook.com>'"
Invoke-ExportItem -MailboxName gscales@datarumble.com -item $Item | Out-File -FilePath c:\temp\exportmail.eml

(Пример сценария для этой статьи можно найти здесь https://github.com/gscales/Powershell-Scripts/blob/master/Graph101/Dumpster.ps1 )