Como Usar o Comando Get-MessageTrace do PowerShell no Office 365

O comando Get-MessageTrace do PowerShell pode ajudar os administradores do Office 365 a rastrear a entrega e processamento de mensagens de email que podem não estar chegando às caixas de correio dos usuários. Neste artigo, vou mostrar como usar o comando Get-MessageTrace para gerenciar e analisar rastreamentos de mensagens de email no Office 365.

Usando o PowerShell Get-MessageTrace com o Exchange Online

O cmdlet Get-MessageTrace é o método padrão para os administradores analisarem e gerenciarem o tráfego de email no Exchange Online. No entanto, este comando do PowerShell está disponível apenas em ambientes do Exchange Online (parte do Office 365).

Anúncio

Em um ambiente local do Exchange, o comando PowerShell Get-MessageTrace não está disponível, e sua alternativa é o cmdlet Get-MessageTrackingLog. O comando PowerShell Get-MessageTrace fornece funcionalidade semelhante ao seu equivalente local, mas novamente, este cmdlet é especificamente projetado para ambientes baseados em nuvem do Office 365.

Rastreamento de mensagens do Exchange local versus Exchange Online: Diferenças chave

  1. Ambiente: O Exchange local lida com os servidores da própria organização, enquanto o Exchange Online é um serviço baseado em nuvem fornecido pela Microsoft.
  2. Integração: No Exchange Online, o comando Get-MessageTrace se integra perfeitamente com os recursos de segurança e conformidade do Office 365, enquanto em ambientes locais, o cmdlet Get-MessageTrackingLog deve ser usado.
  3. Autenticação: Os métodos de autenticação e sessões do PowerShell são gerenciados de forma diferente devido à natureza baseada em nuvem do Exchange Online.
  4. Escala: A escalabilidade do Exchange Online é projetada para lidar com grandes cargas de trabalho de e-mail sem a necessidade de atualizações de hardware locais.

Conectando ao Exchange Online

Aqui está um lembrete rápido: para usar qualquer cmdlet do Exchange Online, você precisa estabelecer uma sessão remota do PowerShell com seu ambiente do Office 365. Abra o Windows PowerShell e execute o seguinte comando.

Connect-ExchangeOnline
Using Connect-ExchangeOnline to get connected to your tenant (Image credit: Petri/Michael Reinders)

Já está acostumado, certo? Se precisar de um pouco mais de ajuda com os pré-requisitos necessários para se conectar, por favor, leia meu post anterior sobre como se conectar ao Exchange Online.

Usando Get-MessageTrace com um intervalo de datas específico

Analisar o tráfego de e-mails dentro de um intervalo de datas específico é uma tarefa administrativa comum. O cmdlet Get-MessageTrace permite que você filtre e revise mensagens de e-mail com base em sua data de criação ou entrega. Por favor, esteja ciente de que há um máximo de 10 dias de histórico que este comando do PowerShell pode acessar. Se precisar investigar o fluxo de e-mails de mais de 10 dias atrás, você precisará usar o site do Exchange Admin Center e executar uma busca de mensagens por um período de tempo mais longo.

Publicidade

Aqui está um guia passo a passo sobre como usar o cmdlet Get-MessageTrace para buscar mensagens dentro de um intervalo de datas específico.

Últimos x minutos

O parâmetro ‘Data de Início’ é usado para especificar o intervalo de tempo que deseja pesquisar. Você pode inserir datas (até um máximo de 10 dias). No entanto, também pode incluir horários. Certifique-se de incluir seus intervalos de data/hora entre aspas (“”).

Vamos tentar usar o cmdlet Get-MessageTrace para pesquisar e-mails nos últimos 90 minutos:

Get-MessageTrace -StartDate "08/15/2023 10:45 AM" -EndDate "08/15/2023 12:15 PM"
Using the Get-MessageTrace cmdlet to trace email message flow (Image credit: Petri/Michael Reinders)

I’ll remind you that I am using my Microsoft 365 Developer tenant, so there’s not a lot of email activity occurring. If you get no output, it simply means that no email traffic records were returned. This can be completely normal.

Publicidade

Você também pode usar um comando do PowerShell mais sofisticado para retroceder 45 minutos desta forma:

Get-MessageTrace -StartDate (Get-Date).AddMinutes(-45) -EndDate (Get-Date)

Deixe-me enviar alguns e-mails para que você possa ver como a saída funcionará em seu ambiente.

Últimas x horas

Agora, isso é importante – o Exchange Online quase certamente estará registrando os horários de entrega de e-mails em UTC! Portanto, preciso ajustar os horários de término e vou mostrar como fazer isso.

Vamos pesquisar até as últimas 8 ou 9 horas:

Get-MessageTrace -StartDate "08/15/2023 10:45 AM" -EndDate "08/15/2023 7:00 PM"
We need to use UTC times when computing our search window! (Image credit: Petri/Michael Reinders)

Aqui está! Isso mostra um e-mail de outra conta para minha conta principal de Administrador Global. Enquanto escrevo isso, enviei o e-mail por volta das 12:15 PM (CDT). No entanto, o UTC está 5 horas à frente. Por isso, a linha do e-mail relata a entrega às 5:16 PM (UTC). Por favor, tenha essa diferença de horário em mente!

Últimos x dias

Embora eu não tenha nenhum histórico de entrega de e-mails, ainda posso mostrar o comando. Se deseja mostrar TODOS os e-mails processados pelo Exchange Online, basta incluir as datas.

Get-MessageTrace -StartDate 08/05/2023 -EndDate 08/15/2023
We can go back a maximum of 10 days with PowerShell! (Image credit: Petri/Michael Reinders)

Lá vamos nós. Porque tenho o Azure AD Connect Cloud Sync configurado neste locatário, recebo um e-mail semanal com atualizações de status. O e-mail foi enviado em 8/8/2023.

Novamente, lembre-se, você só pode pesquisar até no máximo 10 dias. Se precisar explorar mais no passado, precisará usar o recurso de Rastreamento de Mensagens no site do Centro de Administração do Exchange. Lá, você pode criar uma solicitação para retroceder até 90 dias.

Usando o Get-MessageTrace para pesquisar por endereço de e-mail do remetente

Identificar mensagens enviadas por um remetente específico pode ser crucial para diversos fins, como investigar padrões de comunicação ou abordar preocupações de segurança. O cmdlet Get-MessageTrace permite que você pesquise por rastros de mensagens de um determinado endereço de e-mail.

Aqui está como usar o parâmetro ‘-SenderAddress’ para pesquisar rastros de mensagens de um remetente específico:

Get-MessageTrace -SenderAddress "[email protected]"
We can use ‘SenderAddress’ to narrow things down (Image credit: Petri/Michael Reinders)

Legal, há mais um. Bom e intuitivo. E, uma excelente dica – se você redirecionar os resultados para o cmdlet Format-List, você obterá um excelente resumo dos resultados, incluindo o status de entrega, o ID da mensagem, o ID de rastreamento da mensagem, o endereço do remetente, o endereço do destinatário e muito mais.

We can use Format-List to get even more details (Image credit: Petri/Michael Reinders)

Usando o Get-MessageTrace para pesquisar por endereço de e-mail do destinatário

Rastrear e-mails enviados para um destinatário específico é outra tarefa essencial para os administradores. Seja para gerenciar a entrega de e-mails ou garantir que informações sensíveis cheguem às pessoas certas, a capacidade de pesquisar por endereço de e-mail do destinatário é inestimável.

Vamos usar um exemplo, aqui vamos pesquisar todos os e-mails entregues para… mim:

Get-MessageTrace -RecipientAddress "[email protected]"
We can also narrow things down by recipients of email (Image credit: Petri/Michael Reinders)

Isso mostra 3 mensagens de e-mail enviadas para o meu endereço de e-mail no locatário. E, a propósito, se você NÃO incluir quaisquer parâmetros relacionados ao tempo, ele relatará as últimas 48 horas.

Você pode usar o Get-MessageTrace para pesquisar por assunto de e-mail?

Infelizmente, não é possível usar o comando Get-MessageTrace para pesquisar por assunto. Para essa necessidade, você vai querer utilizar o Microsoft Purview e criar uma pesquisa de eDiscovery (conteúdo). Você pode encontrar mais informações sobre isso em nosso artigo anterior sobre eDiscovery.

Usando o Get-MessageTrace para pesquisar por endereço IP de origem e destino

Você também pode usar o comando Get-MessageTrace para pesquisar por endereços IP de origem e destino. Isso permite rastrear mensagens de email com base nos endereços IP dos servidores de envio e recebimento. Isso pode ser particularmente útil para diagnosticar problemas de entrega, identificar atividades suspeitas e entender o caminho que as mensagens percorrem em sua infraestrutura de email.

Aqui, também podemos usar os parâmetros ‘-ToIP’ e ‘-FromIP’. Por exemplo, se quisermos pesquisar todos os emails provenientes do endereço IP de origem 44.42.2.55 e o IP público do firewall de borda para receber emails, 101.3.2.88, poderíamos usar o seguinte comando como exemplo.

Get-MessageTrace -ToIP "4.42.2.55" -FromIP "101.3.2.88"
You can also search by IP addresses amongst the SMTP servers in question (Image credit: Petri/Michael Reinders)

Novamente, não tenho conteúdo realmente legal para mostrar a você, mas funciona. Realmente, funciona.

Como usar curingas e correspondências parciais

Você também pode usar caracteres curinga para reduzir eficientemente os resultados. Por exemplo, por motivos de segurança ou conformidade, digamos que seu oficial de conformidade queira ver um registro de todos os emails processados do Gmail nas últimas 48 horas. Pedaço de bolo!

Get-MessageTrace -SenderAddress *@gmail.com

Veja, isso é bastante fácil de fazer. E você pode fazer o mesmo para destinatários. Se você deseja ver todos os emails entregues a todos com um endereço de email começando com a letra “m”, tente o seguinte comando:

Get-MessageTrace -RecipientAddress m*@x3v6p.onmicrosoft.com

Novamente, isso é muito direto.

Como obter resultados mais detalhados com Get-MessageTraceDetail

Se você está procurando expandir a saída do Get-MessageTrace comando, ficará encantado em saber que o Get-MessageTraceDetail cmdlet expande isso e mostra os eventos individuais de processamento e entrega de uma transação de email. Deixe-me mostrar.

Primeiro, vou executar o Get-MessageTrace cmdlet e encaminhá-lo para o comando ‘Format-List’ (fl) para obter alguns detalhes.

Get-MessageTrace | fl
We can get more detail with the ‘Format-List’ (fl) cmdlet (Image credit: Petri/Michael Reinders)

Aqui, podemos ver mais detalhes sobre 4 mensagens de email nas últimas 48 horas. Então, o que podemos fazer é pegar o ID de Rastreamento da Mensagem e o Endereço do Destinatário do segundo email e usar o seguinte comando:

Get-MessageTraceDetail -MessageTraceID e4f33ded-b67f-49b8-9a00-08db9dbb953a -RecipientAddress [email protected]
Using Get-MessageTraceDetail to get line-by-line detail for specific email messages (Image credit: Petri/Michael Reinders)

Aqui, podemos ver os 3 eventos que compõem a recepção e entrega da mensagem de email da Internet para a caixa de correio Exchange real da Megan. Muito detalhe aqui. Isso pode mostrar concebivelmente se uma mensagem foi entregue diretamente na pasta de Emails Indesejados de um usuário, ou se foi encaminhada automaticamente para outra caixa de correio interna (ou externa). No geral, essa é uma informação muito útil para profissionais de TI e administradores do Exchange.

Como exportar resultados para um arquivo CSV

Mais frequentemente do que não, você estará executando pesquisas que relatarão MUITOS registros. Certamente você vai querer usar o Excel para analisar e filtrar os resultados. Para fazer isso, simplesmente encaminhe seus resultados via o comando Export-CSV, assim:

Get-MessageTrace | Export-CSV AllEmailsInLast48Hours.csv
Exporting output to a CSV file (Image credit: Petri/Michael Reinders)

Isso só levou alguns segundos. Muito bom!

Como realizar pesquisas avançadas com Group-Object

Você pode usar o cmdlet Group-Object para obter uma visão mais abrangente da entrega de e-mails.

Remetentes de e-mail mais ativos

Você pode usar o seguinte comando para encontrar usuários que enviaram a maioria dos e-mails nos últimos 7 dias. Deixe-me mostrar o comando e depois eu explicarei.

Get-MessageTrace -StartDate (Get-Date).AddDays(-10) -EndDate (Get-Date) | Group-Object -Property SenderAddress | Select Name,Count | Sort Count -Descending
We can find the most active senders with some more PowerShell piping! (Image credit: Petri/Michael Reinders)

Aqui, primeiro reunimos a lista completa de e-mails processados nos últimos 10 dias. Em seguida, pegamos essa saída e usamos o comando Group-Object, usamos a propriedade ‘SenderAddress’, obtemos a contagem (número de e-mails) e classificamos pelo maior valor primeiro.

Destinatários que recebem mais e-mails

De maneira semelhante, podemos rapidamente reunir os usuários que receberam a maioria dos e-mails nos últimos 10 dias executando o mesmo comando e substituindo a propriedade ‘SenderAddress’ por ‘RecipientAddress’. Vamos ver o que acontece:

Get-MessageTrace -StartDate (Get-Date).AddDays(-10) -EndDate (Get-Date) | Group-Object -Property RecipientAddress | Select Name,Count | Sort Count -Descending
Similarly, we can find the users receiving the most email (Image credit: Petri/Michael Reinders)

I do love how powerful and simple PowerShell can be. Now, we have the information. Again, the data in this tenant is VERY low. You will undoubtedly see more robust results when you run these commands in your tenant.

O cmdlet Get-MessageTrace oferece flexibilidade e controle

Se você precisa pesquisar dentro de um intervalo de datas específico, identificar rastros de mensagens de um remetente específico ou acompanhar rastros de mensagens enviadas para um destinatário específico, o cmdlet Get-MessageTrace oferece a flexibilidade e controle que você precisa. Além disso, a capacidade de exportar resultados para um arquivo CSV aprimora sua capacidade de analisar e documentar padrões de comunicação por e-mail. Dominando o uso do cmdlet Get-MessageTrace, você pode gerenciar efetivamente o tráfego de e-mail e obter insights valiosos sobre as atividades de comunicação de sua organização.

Source:
https://petri.com/powershell-get-messagetrace/