- Posibles usos de los registros de seguimiento de mensajes
- Ubicación y estructura de los registros de seguimiento de mensajes
- Configuración del seguimiento de mensajes
- Qué hay en los registros de seguimiento de mensajes
- Utilización del cmdlet Get-.MessageTrackingLog cmdlet
Los registros de seguimiento de mensajes son una valiosa fuente de información para cualquier administrador de Exchange. Mientras que Office 365 tiene su rastreo de mensajes, que funciona muy bien, Exchange local almacena muchos más datos en los registros, que pueden servir para muchos propósitos.
- Posibles usos de los registros de seguimiento de mensajes
- Ubicación y estructura de los registros de seguimiento de mensajes
- Configurar el seguimiento de mensajes
- Qué hay en los registros de seguimiento de mensajes
- Los campos más importantes en los registros de seguimiento de mensajes
- Utilizar el cmdlet Get-MessageTrackingLog
- Cómo obtener información general sobre el flujo de correo en Exchange Server
- Cómo recopilar estadísticas mediante Get-MessageTracking Log
- Cómo rastrear mensajes específicos utilizando Get-MessageTrackingLog
Posibles usos de los registros de seguimiento de mensajes
Los viejos registros de seguimiento de mensajes pueden servir para muchos propósitos diferentes:
- Resolver problemas de entrega – Si sabe lo que busca, los registros de seguimiento de mensajes pueden decirle por qué un mensaje no fue entregado, si su entrega se retrasó y más (vea lo que hay en los registros de seguimiento de mensajes)
- Estadísticas – Los registros de seguimiento de mensajes guardan rastros de cada uno de los mensajes que pasaron por sus servidores. Hay una manera bastante fácil de obtener algunos datos para el análisis – cuántos mensajes fueron procesados, o quién envió la mayoría de los mensajes en la empresa.
- Forense – Digamos que alguien borra un correo electrónico y usted no tenía una copia de seguridad del correo electrónico. Lo que es peor, el correo electrónico contenía información confidencial y fue enviado a su empresa de la competencia. Ahí es donde los registros de seguimiento de mensajes pueden salvarle proporcionando alguna información valiosa sobre los correos electrónicos.
- Litigios – Similar a la situación anterior. Los registros de seguimiento de mensajes pueden y suelen utilizarse cuando se necesitan pruebas para los litigios.
- Prueba de las reglas de transporte – Especialmente útil cuando ha configurado varias reglas de transporte en su organización. Cada vez que se aplica una regla de transporte, deja un rastro, y puede utilizar el Get-MessageTrackingLog para ver cuándo se activó una regla de transporte o una política de DLP.
Ubicación y estructura de los registros de seguimiento de mensajes
¿Qué son los registros de seguimiento de mensajes? Los registros de seguimiento de mensajes son simples archivos CSV (con una extensión LOG) almacenados en su servidor Exchange. La ruta predeterminada para su ubicación física es %ExchangeInstallPath%TransportRoles\Logs\MessageTracking. Los registros tienen una convención de nomenclatura establecida. Tenga en cuenta que, aunque puede cambiar los nombres de los archivos en los registros, hacerlo le impedirá buscarlos mediante el cmdlet Get-MessageTrackingLog. Además, los archivos con nombres cambiados no se contarán para el límite de tamaño de la carpeta. Esto puede hacer que se superen los límites que haya configurado.
Para gestionar el espacio y la cantidad de datos almacenados en los servidores, Exchange emplea el registro circular. En otras palabras, los archivos más antiguos se sobrescriben cada vez que una carpeta supera su tamaño máximo o un archivo de registro alcanza su edad máxima. Si se mantiene la configuración por defecto, la edad máxima de un archivo de registro es de 30 días, y el tamaño máximo de un solo archivo es de 10 MB. Por defecto, todos los registros de seguimiento de mensajes en el directorio por defecto no pueden superar 1 GB. Puede cambiar todos esos límites mediante PowerShell (consulte configurar el seguimiento de mensajes para obtener más detalles)
Cada día se crea un nuevo archivo de registro de seguimiento de mensajes. La convención de nomenclatura es:
MSGTRKServiceyyymmdd-nnnn.log donde:
- El servicio depende de qué servicio creó un registro. MSGTRK apunta a los registros creados por el servicio de Transporte; las letras adicionales especifican qué otros servicios generaron el registro. MA representa la aprobación de mensajes, MD el servicio de entrega de transporte de buzones, MS el servicio de envío de transporte de buzones.
- yyyymmdd especifica la fecha de creación del registro de mensajes.
- nnnn es el número del archivo de registro. Cada vez que un archivo de registro alcanza su límite de tamaño máximo, se crea una nueva copia. El valor es incremental, y cada día comienza a partir de (lógicamente) 1.
He mencionado algunos valores por defecto. Como puede sospechar, esos valores se pueden cambiar fácilmente.
Configurar el seguimiento de mensajes
Antes de empezar a cambiar los valores por defecto de los registros de seguimiento de mensajes, asegúrese de que sabe lo que está haciendo. Los registros de seguimiento de mensajes pueden llegar a ser bastante engorrosos, en cuanto a su tamaño. Es más, si decide recopilar datos durante un periodo indefinido, cada búsqueda a gran escala en los registros de seguimiento de mensajes le llevará una cantidad de tiempo considerable. Sobre todo si no se limitan los criterios de búsqueda. Si planea recopilar información sobre su flujo de correo durante un período indefinido, considere exportar el contenido de los registros de seguimiento de mensajes a archivos. Entonces, puede almacenar datos sobre todos los correos electrónicos, excluyendo los que apuntan, por ejemplo, a Buzones de salud.
Puede configurar los registros de seguimiento de mensajes mediante el cmdlet Set-TransportService. Con este cmdlet, puede:
- Habilitar o deshabilitar el seguimiento de mensajes,
- Cambiar la ubicación de almacenamiento de los registros de seguimiento de mensajes,
- Modificar los límites de tamaño y antigüedad de los registros de seguimiento de mensajes
- Y habilitar o deshabilitar el registro de asuntos. Una explicación: por defecto, los registros de seguimiento de mensajes no almacenan ningún contenido de los correos electrónicos, excepto la línea de asunto. Aunque tener la línea de asunto en los registros mejora en gran medida la experiencia de seguimiento, algunas organizaciones requieren deshabilitar esta característica por razones de seguridad o privacidad.
Aquí hay un ejemplo que cambia todos los parámetros a la vez:
Set-TransportService Mailbox_Server -MessageTrackingLogEnabled $true -MessageTrackingLogPath "M:\logs" -MessageTrackingLogMaxFileSize 30MB -MessageTrackingLogMaxDirectorySize 2.5GB -MessageTrackingLogMaxAge 365.00:00:00
El cmdlet anterior activa el seguimiento de mensajes para Mailbox_Server y establece el almacenamiento del registro en M:\logs. El límite de tamaño para un solo archivo de registro se cambia a 30 MB. Es principalmente un cambio cosmético, que controla el número de archivos de registro – cuanto mayor sea el límite, menos csv se crean cada día. El tamaño máximo del directorio (antes de que se sobrescriban los archivos más antiguos) se establece en 2,5 GB, y los archivos de registro se mantienen durante 365 días. Si establece la opción -MessageTrackingLogMaxAge a 00:00:00 podrá mantener los registros de seguimiento de mensajes durante un periodo indefinido. O al menos antes de que se alcance el tamaño del directorio. Pero ¿quién necesita ahorrar espacio en Exchange, no?
Qué hay en los registros de seguimiento de mensajes
Hay algunas cosas que debe saber sobre cómo los registros de seguimiento de mensajes almacenan sus entradas.
- Cada mensaje suele generar más de una sola entrada en el registro de seguimiento de mensajes.
- Los encabezados de los registros no son los mismos que sus correspondientes atributos de PowerShell. Por ejemplo, Event-id en los archivos de registro es EventId en PowerShell. La dirección del destinatario en los registros es igual a los destinatarios en PowerShell. Cuando tenga dudas sobre cómo buscar utilizando un atributo concreto, utilice
Get-MessageTrackingLog –ResultSize 1 | FL * or Get-MessageTrackingLog | Get-Member
. Esos cmdlets le darán una lista completa de atributos. - Algunos campos suelen estar vacíos en los registros de seguimiento de mensajes. Algunos pueden no incluir información que usted puede encontrar importante o relevante.
Los campos más importantes en los registros de seguimiento de mensajes
- Remitente, Destinatario, Asunto del mensaje – se explica por sí mismo, muestra quién envió un mensaje a quién y cuál era el asunto
- TotalBytes – muestra el tamaño de un mensaje
- Sello de tiempo – da información sobre cuándo tuvo lugar el evento
- EventID – uno de los campos más importantes en los registros de seguimiento de mensajes. Es la principal fuente de información sobre lo que ocurrió con el mensaje. Los valores más comunes son Receive, Send, Submit y Fail (Esta documentación de Microsoft describe todos los tipos de eventos de mensajes.)
- MessageInfo y RecipientStatus dan la información detallada sobre lo que ha sucedido con el mensaje.
- MessageLatency muestra cuánto tiempo necesitó el servidor para procesar el correo electrónico.
La parte más importante es cómo utilizar PowerShell para obtener los datos correctos de los registros.
Utilizar el cmdlet Get-MessageTrackingLog
Get-MessageTrackingLog le permite buscar en todos los registros de seguimiento de mensajes. Si utiliza el cmdlet sin ningún atributo adicional, devolverá hasta 1000 entradas, la mayoría de las cuales probablemente estarán relacionadas con la actividad Buzones de salud. Si desea incluir más de 1000 entradas con un solo cmdlet Get-MessageTrackingLog, añada el atributo -ResultSize unlimited. No obstante, estoy seguro de que no tiene previsto utilizar el cmdlet para supervisar la actividad de los buzones de salud. El filtrado correcto es la clave del éxito. A continuación, le presento algunas técnicas que puede utilizar para filtrar los resultados.
Cómo obtener información general sobre el flujo de correo en Exchange Server
Si su objetivo es obtener una idea muy general del flujo de correo reciente en su organización, utilice la sintaxis descrita a continuación:
Get-MessageTrackingLog -Start (Get-Date).AddDays(-14) -ResultSize Unlimited | Where -Property Recipients -NotLike "*HealthMailbox*" | ConvertTo-Html > "C:\mtl.html"
El cmdlet anterior recorre los últimos 14 días de los registros de seguimiento de mensajes. Quizá se pregunte por qué utilizar la parte Where-Object -Property Recipients -NotLike «HealthMailbox*». Este filtro elimina todas las entradas dedicadas a los buzones de salud. Si tiene curiosidad, puede comparar los resultados con y sin el filtro Where-Object. Finalmente, el último cmdlet del pipeline exporta los resultados al archivo mtl.html. También puede exportar los resultados a un archivo CSV, utilizando el cmdlet ConvertTo-Csv.
El problema es que, al convertir los resultados a un archivo HTML o CSV, los campos que contienen información sobre los destinatarios no se muestran correctamente. En lugar de los valores correctos, los campos contendrán expresiones System.String. Para solucionar esto, es posible que tenga que canalizar los resultados a un cmdlet Select-Object adicional. De paso, ¿por qué no limitar la salida para que contenga sólo los campos más importantes?
Get-MessageTrackingLog -Start (Get-Date).AddDays(-7) -ResultSize Unlimited | Where -Property Recipients -NotLike "*HealthMailbox*" | Select-Object sender,@{Name="Recipients";Expression={$_.recipients}},@{Name="RecipientStatus";Expression={$_.recipientstatus}},messagesubject,totalbytes,eventid,messageinfo,messagelatency | ConvertTo-Html > "C:\mtlx.html"
Si desea registrar todas las entregas fallidas y registrarlas en un archivo, utilice el cmdlet siguiente.
Get-MessageTrackingLog -Start (Get-Date).AddHours(-24) -ResultSize Unlimited –EventId Fail | Where -Property Recipients -NotLike "HealthMailbox*" >> "C:\failed deliveries.csv"
La mejor parte es que el signo >> añade nuevos valores al archivo failed.deliveries.csv, de modo que puede ejecutar el cmdlet periódicamente para registrar todos los eventos de fallo.
Cómo recopilar estadísticas mediante Get-MessageTracking Log
Si desea realizar algunas operaciones más complicadas en sus operaciones de registro de seguimiento de mensajes, guárdelas en una variable.
$mtl Get-MessageTrackingLog -Start (Get-Date).AddDays(-2) –eventId Send -ResultSize Unlimited | Where -Property Recipients -NotLike "*HealthMailbox*"
El cmdlet anterior almacena información sobre todos los mensajes enviados en los últimos dos días. Para medir cuántos correos electrónicos han enviado sus usuarios en general, simplemente escriba:
$mtl | measure
Para obtener información más detallada, puede utilizar algunos cmdlets adicionales para agrupar, ordenar y mostrar los resultados. Por ejemplo, puede mostrar el recuento de correos electrónicos de usuarios específicos, ordenados de forma descendente:
$mtl | group-object -property sender | Select-Object name,count | Sort-Object count -desc
El uso del trío Group-Object, Select-Object y Sort-Object, junto con el cmdlet Get-MessageTrackingLog le permite obtener fácilmente cualquier estadística de flujo de correo que desee.
Cómo rastrear mensajes específicos utilizando Get-MessageTrackingLog
Por último, si desea comprobar qué ha ocurrido con un mensaje concreto no entregado, puede mostrar rápidamente toda la información más importante bombeando su búsqueda a un cmdlet Format-List:
… | FL –Property Sender, Recipients, MessageSubject, RecipientStatus
En el ejemplo anterior, puede ver fácilmente que el mensaje no se entregó debido a una regla de transporte. Aquí, resultó que en algún momento, alguien ha lanzado una regla de flujo de correo que bloquea todos los mensajes que tienen un archivo adjunto y la palabra clave Gatito en el asunto.
Supongamos que algunos datos clasificados se han filtrado fuera de la empresa. Los registros de seguimiento de mensajes pueden ayudarle a localizar a los usuarios que han enviado correos electrónicos fuera de su empresa, por ejemplo, a una determinada empresa de la competencia.
Get-MessageTrackingLog –ResultSize Unlimited | Where -Property Recipients -Like "*@competitive-company.com"
La búsqueda le permite encontrar a los sospechosos. Por supuesto, es posible que tenga que ampliar o restringir los criterios de búsqueda, pero depende de la cantidad de datos que tenga. Lo que hagas con los resultados no es una discusión para el blog del administrador.
Más lecturas:
- Seguimiento de mensajes en Office 365 (Exchange Online)
- Copia de seguridad de buzones de Exchange 2019, 2016, 2013, 2010 mediante exportación a PST (PowerShell)