Search-Mailbox: Cómo buscar y eliminar correo electrónico de los buzones de correo de los usuarios de Exchange

Un servidor de Exchange permite a un administrador buscar en los buzones de correo de los usuarios en las bases de datos y eliminar ciertos correos electrónicos (u otros elementos) de los buzones de correo. Por ejemplo, un usuario ha enviado accidentalmente datos privados a otros usuarios de una empresa y no pudo recordar este correo electrónico en Outlook a tiempo. El departamento de seguridad de la información requiere que usted, como administrador de Exchange, elimine este correo electrónico de los buzones de correo de todos los usuarios de su organización de Exchange. En este artículo, mostraremos cómo usar PowerShell para buscar en los buzones de correo de los usuarios de Exchange (según diferentes criterios) y eliminar ciertos correos electrónicos del buzón del usuario específico o de todos los usuarios de Exchange. Las técnicas que se describen a continuación son aplicables a Exchange 2016, 2013 y 2010.

¿Cómo asignar permisos para buscar a través de los buzones de correo de Exchange?

Los siguientes roles deben asignarse a la cuenta de administrador que busca y elimina elementos del buzón:

  • Exportación de importación de buzón
  • Búsqueda de buzón

Puede asignar los roles mediante EAC o estos comandos de PowerShell:

New-ManagementRoleAssignment -User j.anderson -Role "Mailbox Import Export"
New-ManagementRoleAssignment -User j.anderson -Role "Mailbox Search”

roles de intercambio: Importación de buzones de correo, Exportación de buzones de correo, Búsqueda de buzones de correo

Una vez asignados los roles, reinicie la consola del Shell de administración de Exchange.

Uso del buzón de búsqueda para buscar y eliminar mensajes de los buzones de correo de los usuarios de Exchange

También puede buscar elementos de correo electrónico en los buzones de correo de los usuarios mediante el Panel de control de Exchange o el Centro de administración de Exchange, pero este método de búsqueda es bastante lento y no le permite eliminar mensajes de correo electrónico. Es mucho más fácil buscar con PowerShell.

Para buscar elementos de correo electrónico en los buzones de correo de los usuarios, puede utilizar el Buzón de búsqueda cmdlet que le permite buscar elementos que cumplan con ciertos criterios en todos o en buzones de correo específicos, copiar los elementos encontrados en otro buzón o eliminarlos.

En primer lugar, consideremos cómo encontrar algo utilizando el cmdlet Search-Mailbox.
Para buscar en un buzón elementos con un asunto específico, ejecute este comando:
Search-Mailbox -Identity k.peterson -SearchQuery 'Subject:"Annual Report"'
Para buscar en todos los buzones de correo de la organización de Exchange, use el siguiente comando:
Get-Mailbox -ResultSize unlimited | Search-Mailbox -SearchQuery 'Subject:"Annual Report"'

Para copiar los resultados de la búsqueda en un buzón y carpeta determinados, utilice los parámetros TargetMailbox o TargetFolder. Por lo tanto, una vez completada la búsqueda, puede ver los elementos encontrados manualmente utilizando Outlook u OWA. Suponga que necesita buscar mensajes de correo electrónico en la lista de usuarios (proporcionada en users.txt) y copiar los elementos encontrados en la carpeta del buzón específico. Para hacerlo, ejecute este comando:

get-content users.txt | Get-Mailbox -ResultSize unlimited | Search-Mailbox -SearchQuery 'Subject:"Annual Report"' -TargetMailbox sec_dept -TargetFolder "ExchSearchResult”

los -Sólo registro El parámetro significa que los resultados de la búsqueda solo deben estimarse sin copiar elementos a un buzón de correo de destino o eliminar los mensajes. Si se utiliza este argumento, se enviará un informe con los resultados de la búsqueda al buzón de correo de destino especificado. Un informe es un archivo CSV archivado que enumera los buzones de correo que cumplen los criterios de búsqueda.

Puede estimar los resultados de la búsqueda utilizando el –EstimateResultOnly parámetro. Tenga en cuenta que al utilizar este argumento no es necesario especificar un buzón o carpeta de destino.

Para eliminar los elementos de correo electrónico encontrados, utilice el –DeleteContent parámetro, y para omitir las solicitudes de confirmación para eliminar elementos, agregue el -Fuerza parámetro.

Eliminemos todos los mensajes de correo electrónico del remitente [email protected] en todos los buzones de correo del servidor Exchange específico:

Get-Mailbox –Server berl-ex1 –ResultSize unlimited | Search-Mailbox -SearchQuery 'from:"[email protected]"' –DeleteContent –Force

Antes de eliminar mensajes de los buzones de correo con el parámetro -DeleteContent, recomendamos encarecidamente revisar los correos electrónicos encontrados con los argumentos -EstimateResultOnly o –LogOnly.

Get-Mailbox: parámetro DeleteContent

Para buscar solo entre los elementos eliminados, agregue el –SearchDumpsterOnly parámetro (para excluir la búsqueda entre los elementos eliminados, agregue el -SearchDumpster:$false argumento). Si necesita excluir del resultado de la búsqueda un buzón de archivo, utilice el –DoNotIncludeArchive parámetro.

Buzón de búsqueda: ejemplos de consultas de búsqueda

Consideremos los ejemplos de consultas de búsqueda para encontrar mensajes de correo electrónico utilizando el parámetro SearchQuery. La clave SearchQuery procesa consultas en el KQL (Lenguaje de consulta de palabras clave) – https://docs.microsoft.com/ru-ru/sharepoint/dev/general-development/keyword-query-language-kql-syntax-reference.

Para eliminar todos los mensajes de correo electrónico que contienen la palabra clave «Secreto» en el asunto de los correos electrónicos de todos los usuarios que no pertenecen a su dominio:

Search-Mailbox -Identity k.peterson -SearchQuery 'Subject:"Secret" and from<>”woshub.com”' -DeleteContent

Busque y elimine todos los correos electrónicos con archivos adjuntos que superen los 20 MB:

Search-Mailbox -Identity k.peterson -SearchQuery 'hasattachment:true AND Size >20971520' –DeleteContent

Propina. El tamaño de los elementos del correo electrónico se especifica en bytes y se cuenta el tamaño de todo el mensaje, no solo los archivos adjuntos. También puede especificar el tamaño en megabytes, y en este caso se utiliza la siguiente sintaxis: -SearchQuery {Size -gt 30MB}.

Puede buscar simultáneamente el texto en el asunto y el cuerpo del correo electrónico. Por ejemplo, busquemos y eliminemos todos los mensajes que contengan «Año Nuevo» en el asunto o «brandy» en el cuerpo del correo electrónico.

Search-Mailbox k.peterson -SearchQuery {Subject:"RE:New Year" OR body:"brandy"} -DeleteContent -Force

Puede buscar en los buzones de correo determinados elementos utilizando Amable argumento, por ejemplo:

Reuniones: -SearchQuery "Kind:meetings"
Contactos: -SearchQuery "Kind:contacts"

U otros elementos de Outlook:

  • Correo electrónico
  • Reuniones
  • Tareas
  • Notas
  • Docs
  • Revistas
  • Contactos
  • SOY

Búsqueda de correos electrónicos por destinatario o remitente específico:

-SearchQuery 'from:"[email protected]" AND to:"[email protected]"'

Puede buscar mensajes con el archivo específico como archivo adjunto:

-SearchQuery 'attachment:"annual_report2018.pdf"'

O por tipo de archivo:

-SearchQuery 'attachment -like:"*.docx"'

Puede buscar por fecha de envío / recepción, pero hay algunos matices. Cuando utilice una fecha como criterio de búsqueda, debe considerar la configuración regional de su servidor Exchange. Por ejemplo, 10 de abril de 2019 puede especificarse de una de las siguientes formas:

  • 04/10/2019
  • 10/04/2019
  • 10-abr-2019
  • 10 / abril / 2019

Y si ves el error «The KQL parser threw an exception…”Al ejecutar el comando Search-Mailbox, significa que está utilizando el formato de fecha incorrecto.

Para buscar correos electrónicos enviados en un día específico, use esta consulta:

-SearchQuery sent:04/10/2019

Si necesita especificar el rango de fechas (está buscando los mensajes recibidos en el período de tiempo especificado):

-SearchQuery {Received:04/01/2019..04/11/2019}

He aquí otro ejemplo. Busquemos los correos electrónicos recibidos antes del 9 de mayo:

-SearchQuery {Received:> $('05/09/2018')}

Restricciones de cmdlet de buzón de búsqueda

El cmdlet Search-Mailbox tiene una limitación significativa: solo puede devolver 10,000 elementos. Si se excede este límite, devolverá el error:

Sending data to a remote command failed with the following error message: The total data received from the remote client exceeded allowed maximum. Allowed maximum is 524288000.

Search-Mailbox El total de datos recibidos del cliente remoto excedió el máximo permitido

Para eliminar más elementos de correo electrónico, deberá ejecutar Buzón de búsqueda cmdlet varias veces o divida los buzones de correo en grupos por bases de datos de buzones de correo o servidores de Exchange.

Get-Mailbox -Database berl-ex1 | Search-Mailbox –SearchQuery 'from:[email protected]' -DeleteContent –Force

Otro problema de Search-Mailbox es su bajo rendimiento. En el caso de una gran empresa, la búsqueda puede durar varios días.

¿Cómo buscar y eliminar correos electrónicos rápidamente en Exchange 2016 con New-ComplianceSearch?

En Exchange 2016, apareció una nueva forma que le permite buscar y eliminar rápidamente mensajes de correo electrónico en los buzones de correo de los usuarios.

Con estos comandos, puede reducir significativamente el área de búsqueda:

New-ComplianceSearch -Name FastSearch1 -ExchangeLocation all -ContentMatchQuery 'from:"[email protected]"'
Start-ComplianceSearch -Identity FastSearch1

Estos comandos buscan en varios miles de buzones de correo durante algunos minutos.

A continuación, debe obtener la lista de buzones de correo que cumplen con los criterios de búsqueda:

$search = Get-ComplianceSearch –Identity FastSearch1
$results = $search.SuccessResults
$mbxs = @()
$lines = $results -split '[rn]+'
foreach ($line in $lines)
{
if ($line -match 'Location: (S+),.+Item count: (d+)' -and $matches[2] -gt 0)
{
$mbxs += $matches[1]
}
}

Ahora puede eliminar correos electrónicos usando el cmdlet Search-Mailbox solo en los buzones de correo encontrados:

$mbxs | Get-Mailbox| Search-Mailbox -SearchQuery 'from:"[email protected]"' -DeleteContent –Force

El tiempo total de búsqueda y eliminación se reduce varias veces, especialmente en las grandes empresas.

Ahora puede eliminar los resultados de la búsqueda:

Remove-ComplianceSearch –Identity FastSearch1

Artículos Interesantes