O comando Get-MessageTrace do PowerShell pode ajudar os administradores do Office 365 a rastrear a entrega e o processamento de mensagens de email que podem não estar chegando às caixas de correio de seus 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 administradores analisarem e gerenciarem o tráfego de email dentro do 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 integra-se 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

Aí está, você 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 ‘StartDate’ é usado para especificar o período de tempo que você deseja pesquisar. Você pode inserir datas (até um máximo de 10 dias). No entanto, você também pode incluir horas. Certifique-se de colocar 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 PowerShell mais elaborado 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-mail 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 digito isso, enviei o e-mail por volta das 12:15 PM (CDT). No entanto, o UTC está 5 horas à frente. É por isso que a linha do e-mail relata a entrega às 5:16 PM (UTC). Por favor, leve em consideração essa diferença de horário!
Últimos x dias
Embora eu não tenha nenhum histórico de entrega de e-mail, ainda posso mostrar o comando. Se você deseja mostrar TODOS os e-mails processados pelo Exchange Online, pode simplesmente 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é 10 dias atrás. Se precisar explorar mais no passado, você 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 voltar até 90 dias.
Usando Get-MessageTrace para pesquisar por endereço de e-mail do remetente
Identificar mensagens enviadas por um remetente específico pode ser crucial para vários propósitos, como investigar padrões de comunicação ou abordar preocupações de segurança. O cmdlet Get-MessageTrace permite que você pesquise traços de mensagens de um determinado endereço de e-mail.
Aqui está como usar o parâmetro ‘-SenderAddress’ para pesquisar traços de mensagens de um remetente específico:
Get-MessageTrace -SenderAddress "[email protected]"

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

Usando Get-MessageTrace para pesquisar pelo endereço de e-mail do destinatário
Rastrear e-mails enviados para um destinatário específico é outra tarefa essencial para os administradores. Quer você esteja gerenciando a entrega de e-mails ou garantindo que informações sensíveis cheguem às pessoas certas, a capacidade de pesquisar pelo endereço de e-mail do destinatário é inestimável.
Vamos usar um exemplo, aqui vamos procurar por todos os e-mails entregues para… mim:
Get-MessageTrace -RecipientAddress "[email protected]"

Isso mostra 3 mensagens de e-mail enviadas para meu endereço de e-mail no locatário. E, a propósito, se você NÃO incluir parâmetros relacionados ao tempo, ele reportará as últimas 48 horas.
Você pode usar 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 busca 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 especialmente útil para diagnosticar problemas de entrega, identificar atividades suspeitas e entender o caminho que as mensagens percorrem pela sua infraestrutura de email.
Aqui, também podemos usar os parâmetros ‘-ToIP’ e ‘-FromIP’. Por exemplo, se quisermos buscar todos os emails provenientes do IP de origem 44.42.2.55 e o IP público do nosso 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 um conteúdo realmente legal aqui para mostrar a você, mas funciona. Realmente, funciona.
Como usar curingas e correspondências parciais
Você pode também usar caracteres já existentes para encolher os resultados de forma eficiente. Por exemplo, por questões de segurança ou cumprimento de regulamentos, digamos que o funcionário de conformidade deseja ver um registro de todos os e-mails processados do Gmail nos últimos 48 horas. Fácil!
Get-MessageTrace -SenderAddress *@gmail.com
Veja, é muito fácil de fazer. E você pode fazer o mesmo para os destinatários. Se você quiser ver todos os e-mails entregues para todas as pessoas com endereços de e-mail que começam com a letra “m”, tente o seguinte comando:
Get-MessageTrace -RecipientAddress m*@x3v6p.onmicrosoft.com
Novamente, é muito simples.
Como obter resultados mais detalhados com Get-MessageTraceDetail
Se você procurar expandir a saída do comando Get-MessageTrace, você será encantado ao saber que o cmdlet Get-MessageTraceDetail expande isso e mostra os eventos individuais de processamento e entrega de um e-mail de uma transação. Deixe-me mostrar-lhe.
Primeiro, eu vou executar o Get-MessageTrace 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 e-mail 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 e-mail 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 e-mail da Internet para a caixa de correio do Exchange real de Megan. Muito detalhe interessante aqui. Isso pode mostrar concebivelmente se uma mensagem foi entregue diretamente na pasta de e-mail indesejado de um usuário, ou se foi encaminhada automaticamente para outra caixa de correio interna (ou externa). No geral, essas são informações muito úteis 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 envie 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 nossa entrega de e-mail.
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 explico.
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 rastrear rastros de mensagens enviadas a um destinatário específico, o cmdlet Get-MessageTrace fornece a flexibilidade e o controle de 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. Ao dominar 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.