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).
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
- 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.
- 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.
- 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.
- 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

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.
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"

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.
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"

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

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]"

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.

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]"

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"

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

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]

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

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

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

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.