Exchange Online · Microsoft 365 · EOP · Defender for Office 365 · PowerShell · Compliance · DMARC

Exchange Online em 2026: Como Configurar, Proteger e Diagnosticar Correio para PME?

Duarte Spínola  |  2026-07-14

O Exchange Online é o serviço de email hospedado da Microsoft que faz parte do Microsoft 365. Para uma PME portuguesa com algumas dezenas ou centenas de utilizadores, o Exchange Online elimina a necessidade de manter servidores on-premises, mas introduz um conjunto alargado de configurações de protecção, fluxo de correio, retenção e delegação que um administrador precisa de dominar. Este artigo é o Dia 3 de uma série de seis destinada a dotar um recurso técnico com as capacidades de administração M365 necessárias para gerir um tenant com confiança.

O artigo cobre a ligação ao Exchange Online via PowerShell, a configuração de connectors e regras de transporte, a protecção anti-spam e anti-malware com Exchange Online Protection (EOP) e Defender for Office 365, as políticas anti-phishing com Safe Links e Safe Attachments, a autenticação de email com SPF, DKIM e DMARC, as retention policies e o In-Place Archive, os tipos de caixa de correio e quotas, a delegação de acesso, o message trace e o troubleshooting de entrega, e o journaling para compliance. Todos os comandos PowerShell apresentados usam o módulo ExchangeOnlineManagement v3, que é o módulo actualizado para 2026 (documentação oficial em learn.microsoft.com/en-us/exchange/exchange-online).

1. Conexão ao Exchange Online via PowerShell

A administração eficiente do Exchange Online faz-se através do PowerShell com o módulo ExchangeOnlineManagement. A interface gráfica do Exchange admin center (EAC) cobre as operações mais comuns, mas operações em massa, auditoria, automatização e configurações avançadas exigem PowerShell.

Instalação do módulo

# Verificar se o módulo já está instalado
Get-Module -ListAvailable -Name ExchangeOnlineManagement

# Instalar ou actualizar o módulo (requer PowerShell 5.1+ ou PowerShell 7)
Install-Module -Name ExchangeOnlineManagement -Force -AllowClobber

Estabelecer a conexão

# Conexão standard com autenticação moderna
Connect-ExchangeOnline -UserPrincipalName [email protected]

# Conexão com delegação de permissões (sem UI interativa, para scripts)
Connect-ExchangeOnline -UserPrincipalName [email protected] -DelegateManagement

# Desligar a sessão explicitamente (recomendado)
Disconnect-ExchangeOnline

O parâmetro -ShowProgress $true pode ser usado para ver o progresso da importação da sessão. Em ambientes com Conditional Access configurado, a conexão pode exigir MFA interativa, o que é o comportamento esperado e recomendado.

Cmdlets fundamentais para inventário

# Listar todas as caixas de correio do tenant
Get-Mailbox -ResultSize Unlimited | Select-Object DisplayName, PrimarySmtpAddress, RecipientTypeDetails

# Listar apenas caixas partilhadas (shared mailboxes)
Get-Mailbox -RecipientTypeDetails SharedMailbox -ResultSize Unlimited

# Ver configuração de uma mailbox específica
Get-Mailbox -Identity “[email protected]” | Format-List

# Ver estatísticas de uma mailbox (tamanho, itens, última actividade)
Get-MailboxStatistics -Identity “[email protected]

Conexão a tenants específicos

Para administradores MSP (Managed Service Provider) ou consultores que gerem múltiplos tenants, o parâmetro -DelegatedOrganization permite conectar a um tenant cliente específico:

Connect-ExchangeOnline -DelegatedOrganization “cliente.onmicrosoft.com” -UserPrincipalName [email protected]

2. Fluxo de Email: Connectors e Regras de Transporte

O fluxo de email no Exchange Online é controlado por duas entidades principais: os connectors, que definem como o correio entra e sai do tenant, e as transport rules (regras de transporte), que aplicam lógica condicional às mensagens em trânsito.

Connectors de entrada e saída

Num cenário típico de PME, o Exchange Online envia e recebe correio directamente da Internet sem connectors adicionais. No entanto, existem cenários onde os connectors são necessários:

  • Connector de entrada para receber correio de um appliance SMTP terceiro (por exemplo, um serviço de newsletter ou um sistema de facturação electrónica).
  • Connector de saída para encaminhar correio para um servidor on-premises em cenários híbridos (Exchange hybrid).
  • Connector parceiro para restringir comunicação a organizações específicas.
# Ver todos os connectors configurados
Get-InboundConnector | Format-Table Name, Enabled, SenderDomains
Get-OutboundConnector | Format-Table Name, Enabled, RecipientDomains

# Criar um connector de entrada para um parceiro específico
New-InboundConnector -Name “Parceiro Contoso” -SenderDomains contoso-parceiro.pt -RestrictDomainsToIPAddresses $true -SenderIPAddresses “192.168.1.100” -Enabled $true

Regras de transporte (Transport Rules)

As transport rules permitem aplicar acções baseadas em condições. São o equivalente das transport rules do Exchange on-premises e suportam centenas de predicados e acções.

# Listar todas as regras de transporte
Get-TransportRule | Select-Object Name, State, Priority, Mode

# Ver detalhes de uma regra específica
Get-TransportRule -Identity “Aviso Confidencial” | Format-List

# Criar uma regra que adiciona um aviso a emails enviados para o exterior
New-TransportRule -Name “Aviso Email Externo” `
-FromScope NotInOrganization `
-SentToScope InOrganization `
-ApplyHtmlDisclaimer “<p><strong>Aviso:</strong> Este email provém de fora da organização. Verifique o remetente antes de clicar em ligações ou abrir anexos.</p>” `
-Enabled $true

Exemplos práticos de transport rules para PME

Cenário Condição Acção
Aviso em emails externos recebidos FromScope: NotInOrganization ApplyHtmlDisclaimer com texto de aviso
Bloquear envio de ficheiros grandes AttachmentSizeOver: 25MB RejectMessageReasonText
Cópia (BCC) de emails do administrador From: [email protected] AddRecipientCcTo para auditoria
Prefixo no assunto de emails para um domínio específico SentTo: @parceiro.pt PrependSubject: "[EXTERNOS] "

As transport rules são processadas por ordem de prioridade (0 é a mais alta). Quando uma regra tem StopRuleProcessing activado, nenhuma regra posterior é avaliada para essa mensagem.

3. Protecção Anti-Spam e Anti-Malware com EOP e Defender for Office 365

O Exchange Online Protection (EOP) está incluído em todas as subscrições Exchange Online e fornece protecção anti-spam e anti-malware na camada de rede. O Microsoft Defender for Office 365 Plano 1 e 2 adiciona capacidades avançadas como Safe Links, Safe Attachments, anti-phishing com inteligência de representação (impersonation), e investigação automatizada.

Diferenças entre EOP e Defender for Office 365

Funcionalidade EOP (incluído) Defender for O365 P1 Defender for O365 P2
Anti-spam base Sim Sim Sim
Anti-malware Sim Sim Sim
Safe Links Não Sim Sim
Safe Attachments Não Sim Sim
Anti-phishing com impersonation Não Sim Sim
Threat Explorer / Real-time detections Não Limitado Sim
Investigação e resposta automatizada (AIR) Não Não Sim

Configuração da política anti-spam

A política anti-spam padrão (Default) aplica-se a todos os destinatários. Recomenda-se criar políticas adicionais para grupos específicos, como utilizadores de alto risco (executivos, financeiro).

# Ver as políticas anti-spam configuradas
Get-HostedContentFilterPolicy | Format-Table Name, HighConfidenceSpamAction, SpamAction

# Ver as regras anti-spam (que associam políticas a destinatários)
Get-HostedContentFilterRule | Format-Table Name, HostedContentFilterPolicy, State

# Configurar a política padrão para mover spam de alta confiança para quarentena
Set-HostedContentFilterPolicy -Identity “Default” `
-HighConfidenceSpamAction Quarantine `
-SpamAction MoveToJmf `
-BulkSpamAction MoveToJmf `
-MarkAsSpamBulkMail $true

Configuração da política anti-malware

# Ver políticas anti-malware
Get-MalwareFilterPolicy | Format-Table Name, EnableFileFilter, Action

# Configurar a política padrão para bloquear ficheiros executáveis e notificar o administrador
Set-MalwareFilterPolicy -Identity “Default” `
-EnableFileFilter $true `
-FileTypes “exe,dll,js,vbs,ps1,bat,cmd,scr,com,hta” `
-EnableExternalSenderNotifications $true `
-EnableInternalSenderNotifications $false `
-ExternalSenderAdminAddress “[email protected]

Verificação e quarentena

As mensagens em quarentena podem ser geridas via EAC ou PowerShell. Por defeito, as mensagens ficam em quarentena durante 30 dias (configurável até 30 dias no máximo).

# Ver mensagens em quarentena
Get-QuarantineMessage | Select-Object MessageId, SenderAddress, Subject, ReceivedTime, QuarantineReason

# Libertar uma mensagem da quarentena
Get-QuarantineMessage -Identity <MessageIdentity> | Release-QuarantineMessage

As políticas anti-phishing, Safe Links e Safe Attachments são funcionalidades do Defender for Office 365. Sem esta licença, estas configurações não estão disponíveis. Para uma PME, o Plano 1 é o mínimo recomendado para protecção contra phishing com base em representação (impersonation).

Política anti-phishing

A política anti-phishing do Defender for Office 365 distingue-se da anti-spam do EOP por incluir detecção de impersonation de domínios e utilizadores, bem como intelligence de caixas de correio (mailbox intelligence).

# Ver as políticas anti-phishing
Get-AntiPhishPolicy | Format-Table Name, Enabled, EnableTargetedUserProtection, EnableTargetedDomainProtection

# Criar uma política anti-phishing para utilizadores sensíveis
New-AntiPhishPolicy -Name “Executivos – Anti-Phishing” `
-Enabled $true `
-EnableTargetedUserProtection $true `
-TargetedUsersToProtect “[email protected],[email protected]” `
-EnableTargetedDomainProtection $true `
-TargetedDomainsToProtect “contoso.pt” `
-EnableMailboxIntelligence $true `
-EnableMailboxIntelligenceProtection $true `
-EnableOrganizationDomainsProtection $true `
-TargetedUserProtectionAction Quarantine `
-TargetedDomainProtectionAction Quarantine `
-MailboxIntelligenceProtectionAction MoveToJmf

# Criar a regra que associa a política ao grupo de executivos
New-AntiPhishRule -Name “Regra Executivos” `
-AntiPhishPolicy “Executivos – Anti-Phishing” `
-SentToMemberOf “[email protected]

Safe Links

O Safe Links reescreve os URLs das mensagens para que o tráfego passe pelos servidores da Microsoft, que verificam a reputação do destino em tempo real.

# Ver as políticas de Safe Links
Get-SafeLinksPolicy | Format-Table Name, IsEnabled, ScanUrls, DeliverMessageIfScanComplete

# Criar política Safe Links para toda a organização
New-SafeLinksPolicy -Name “Safe Links – Global” `
-IsEnabled $true `
-ScanUrls $true `
-EnableForInternalSenders $true `
-DeliverMessageIfScanComplete $true `
-DoNotRewriteUrls “contoso.pt/*,intranet.contoso.pt/*”

# Criar a regra que aplica a política a todos os destinatários
New-SafeLinksRule -Name “Safe Links Global” `
-SafeLinksPolicy “Safe Links – Global” `
-RecipientDomainIs “contoso.pt”

O parâmetro -DoNotRewriteUrls permite excluir URLs internos da reescrita, o que é importante para evitar problemas com aplicações internas.

Safe Attachments

O Safe Attachments abre anexos em ambiente virtual (sandbox) para detectar comportamento malicioso antes de entregar a mensagem.

# Ver as políticas de Safe Attachments
Get-SafeAttachmentPolicy | Format-Table Name, Enable, Action

# Criar política Safe Attachments com modo dinâmico
New-SafeAttachmentPolicy -Name “Safe Attachments – Global” `
-Enable $true `
-Action DynamicDelivery `
-Redirect $false

# Criar a regra correspondente
New-SafeAttachmentRule -Name “Safe Attachments Global” `
-SafeAttachmentPolicy “Safe Attachments – Global” `
-RecipientDomainIs “contoso.pt”

O DynamicDelivery entrega a mensagem imediatamente, mantendo o anexo em análise, e substitui-o por um marcador. Assim que a análise termina, o anexo é entregue ou removido conforme o resultado. Esta abordagem evita atrasos perceptíveis na entrega de email.

5. Autenticação de Email: SPF, DKIM e DMARC

A autenticação de email é fundamental para garantir que as mensagens enviadas do domínio da organização são reconhecidas como legítimas pelos servidores de destino e para impedir que terceiros enviem email fraudulento em nome da organização (spoofing). Os três protocolos — SPF, DKIM e DMARC — trabalham em conjunto.

SPF (Sender Policy Framework)

O SPF é um registo TXT no DNS que indica quais os endereços IP autorizados a enviar email em nome do domínio.

contoso.pt. IN TXT “v=spf1 include:spf.protection.outlook.com -all”

O -all indica falha dura (hard fail). Recomenda-se começar com ~all (soft fail) durante a fase de validação e mudar para -all após confirmar que nenhuma fonte legítima de email está a ser bloqueada.

DKIM (DomainKeys Identified Mail)

O DKIM assina criptograficamente as mensagens enviadas, permitindo ao destinatário verificar a integridade e autenticidade. No Exchange Online, o DKIM é activado por domínio.

# Verificar a configuração DKIM de um domínio
Get-DkimSigningConfig -Identity contoso.pt | Format-List

# Activar DKIM para um domínio
Set-DkimSigningConfig -Identity contoso.pt -Enabled $true

# Rotar as chaves DKIM (recomendado periodicamente)
Rotate-DkimSigningConfig -Identity contoso.pt -KeySize 2048

Antes de activar o DKIM, é necessário publicar os registos CNAME indicados no EAC (Exchange admin center > Protection > DKIM) no DNS do domínio. A Microsoft fornece os valores exactos dos registos CNAME no portal.

DMARC (Domain-based Message Authentication, Reporting, and Conformance)

O DMARC unifica SPF e DKIM e especifica a política a aplicar quando a autenticação falha. O registo DMARC deve ser publicado no DNS e alinhado com o domínio de envio.

_dmarc.contoso.pt. IN TXT “v=DMARC1; p=quarantine; rua=mailto:[email protected]; ruf=mailto:[email protected]; pct=100; adkim=s; aspf=s”

Fases recomendadas de implementação do DMARC:

  1. p=none — Modo de monitorização. Recolher relatórios RUA sem afectar a entrega. Manter durante 2-4 semanas.
  2. p=quarantine — As mensagens que falham a autenticação são enviadas para a pasta de spam do destinatário. Manter durante 2-4 semanas após confirmar que p=none não revelou fontes legítimas.
  3. p=reject — As mensagens que falham a autenticação são rejeitadas. É o modo final e recomendado.

O endereço rua recebe relatórios agregados (diários) e o ruf recebe relatórios forenses (por mensagem). Os relatórios RUA são essenciais para identificar fontes de email legítimas que ainda não estão cobertas pelo SPF ou DKIM antes de avançar para p=reject.

6. Retention Policies, MRM e In-Place Archive

O Exchange Online oferece dois mecanismos distintos para retenção e arquivo: as retention policies (geridas via Microsoft Purview compliance portal) e o Messaging Records Management (MRM) (gerido via Exchange Online PowerShell ou EAC).

Retention policies (Microsoft Purview)

As retention policies do Purview aplicam-se a caixas de correio Exchange, mas também a SharePoint, OneDrive e Teams. São o mecanismo recomendado para 2026, especialmente se a organização precisa de cumprir requisitos regulatórios (RGPD, retention legal).

# Ver as retention policies aplicadas a uma mailbox (via PowerShell do Purview)
Get-RetentionCompliancePolicy | Format-Table Name, ExchangeLocation

# Aplicar uma retention policy a uma mailbox específica
Set-RetentionCompliancePolicy -Identity “Retenção 7 Anos – Financeiro” -AddExchangeLocation “[email protected]

A activação de In-Place Archive é necessária para que as retention tags que movem itens para o arquivo funcionem. A documentação oficial está em learn.microsoft.com/en-us/purview/enable-archive-mailboxes.

In-Place Archive e auto-expanding archive

O In-Place Archive é uma caixa de correio adicional associada à mailbox principal do utilizador. Permite mover itens antigos para o arquivo, libertando espaço na caixa principal.

# Verificar se o arquivo está activo para uma mailbox
Get-Mailbox -Identity “[email protected]” | Select-Object DisplayName, ArchiveStatus, ArchiveDatabase

# Activar o In-Place Archive
Enable-Mailbox -Identity “[email protected]” -Archive

# Activar auto-expanding archive para todo o tenant
Set-OrganizationConfig -AutoExpandingArchive

# Activar auto-expanding archive para um utilizador específico
Enable-Mailbox -Identity “[email protected]” -AutoExpandingArchive

O auto-expanding archive permite que o arquivo cresça automaticamente além do limite inicial de 50 GB (para licenças Exchange Online Plan 2), adicionando até 1,5 TB de armazenamento de arquivo. Esta funcionalidade está incluída em Exchange Online Plan 2 e Exchange Online Archiving.

MRM (Messaging Records Management)

O MRM utiliza retention tags aplicadas a pastas e itens individuais. É gerido via PowerShell do Exchange Online.

# Ver as retention policies de MRM
Get-RetentionPolicy | Format-Table Name, RetentionPolicyTag

# Ver as retention tags disponíveis
Get-RetentionPolicyTag | Format-Table Name, Type, AgeLimitForRetention, RetentionAction

# Aplicar uma retention policy de MRM a uma mailbox
Set-Mailbox -Identity “[email protected]” -RetentionPolicy “Default MRM Policy”

# Forçar o processamento do MRM (Managed Folder Assistant) numa mailbox
Start-ManagedFolderAssistant -Identity “[email protected]

O Start-ManagedFolderAssistant força a aplicação imediata das retention tags. Sem este comando, o Managed Folder Assistant processa as mailboxes automaticamente num ciclo de 7 dias. A documentação oficial está em learn.microsoft.com/en-us/powershell/module/exchange/start-managedfolderassistant.

Diferenças entre Retention Policies (Purview) e MRM

Aspecto Retention Policies (Purview) MRM (Exchange Online)
Portal de gestão Microsoft Purview Exchange admin center / PowerShell
Âmbito Exchange + SharePoint + OneDrive + Teams Apenas Exchange
Retenção legal (litigation hold) Sim Não
Aplicação automática baseada em condições Sim (sensitive info types, queries) Não (baseada em pastas/tags)
Recomendação 2026 Preferencial para novos deployments Legado, ainda suportado

7. Tipos de Mailbox, Quotas e Delegação de Acesso

O Exchange Online suporta vários tipos de caixa de correio, cada um com quotas e casos de uso distintos. Compreender as diferenças é essencial para arquitectar correctamente o ambiente.

Tipos de caixa de correio

Tipo Descrição Licença necessária Quota padrão (2026)
User Mailbox Caixa de correio individual atribuída a um utilizador Exchange Online Plan 1 ou Plan 2 50 GB (Plan 1) / 100 GB (Plan 2)
Shared Mailbox Caixa partilhada acedida por múltiplos utilizadores Sem licença se < 50 GB 50 GB (sem licença) / 100 GB (com Plan 2)
Resource Mailbox (Room) Caixa para salas de reunião Sem licença 50 GB
Resource Mailbox (Equipment) Caixa para equipamento (viaturas, projectores) Sem licença 50 GB

Criação e configuração de mailboxes

# Criar uma shared mailbox
New-Mailbox -Shared -Name “Suporte Geral” -DisplayName “Suporte Geral” -Alias “suporte” -PrimarySmtpAddress “[email protected]

# Atribuir acesso a uma shared mailbox
Add-MailboxPermission -Identity “[email protected]” -User “[email protected]” -AccessRights FullAccess -InheritanceType All

# Atribar permissão Send As
Add-RecipientPermission -Identity “[email protected]” -Trustee “[email protected]” -AccessRights SendAs -Confirm:$false

# Criar uma resource mailbox (sala de reunião)
New-Mailbox -Room -Name “Sala de Reunioes 1” -DisplayName “Sala de Reuniões 1” -PrimarySmtpAddress “[email protected]

# Configurar uma sala para aceitar pedidos automaticamente e processar reuniões recorrentes
Set-CalendarProcessing -Identity “[email protected]” -AutomateProcessing AutoAccept -ProcessExternalMeetingMessages $true

Delegação de acesso: Full Access, Send As, Send on Behalf

Existem três níveis de delegação de acesso, cada um com um comportamento distinto:

Tipo de permissão Efeito Cmdlet
Full Access O delegado acede a toda a mailbox (ler, apagar, mover) Add-MailboxPermission
Send As O delegado envia como se fosse o dono da mailbox (o destinatário não vê diferença) Add-RecipientPermission
Send on Behalf O delegado envia em nome do dono (o destinatário vê “De: João em nome de Maria”) Set-Mailbox -GrantSendOnBehalfTo
# Full Access (aceder à mailbox completa)
Add-MailboxPermission -Identity “[email protected]” -User “[email protected]” -AccessRights FullAccess -InheritanceType All

# Send As (enviar como se fosse o dono)
Add-RecipientPermission -Identity “[email protected]” -Trustee “[email protected]” -AccessRights SendAs -Confirm:$false

# Send on Behalf (enviar em nome de)
Set-Mailbox -Identity “[email protected]” -GrantSendOnBehalfTo “[email protected]

# Remover permissões
Remove-MailboxPermission -Identity “[email protected]” -User “[email protected]” -AccessRights FullAccess -InheritanceType All
Remove-RecipientPermission -Identity “[email protected]” -Trustee “[email protected]” -AccessRights SendAs -Confirm:$false

Quando se atribui Full Access, o Outlook pode configurar automaticamente a mailbox adicional via AutoMapping. Para desactivar o AutoMapping (útil quando há muitas shared mailboxes e o Outlook fica lento), adicionar -AutoMapping $false:

Add-MailboxPermission -Identity “[email protected]” -User “[email protected]” -AccessRights FullAccess -InheritanceType All -AutoMapping $false

Configuração de quotas

Nas shared mailboxes sem licença, a quota é de 50 GB. Quando se aproxima do limite, é necessário licenciar a mailbox com Exchange Online Plan 2 ou aplicar uma licença Exchange Online Archiving para activar o In-Place Archive.

# Verificar o tamanho e quota de uma mailbox
Get-MailboxStatistics -Identity “[email protected]” | Select-Object TotalItemSize, StorageLimitStatus, DatabaseProhibitSendReceiveQuota

# Ver a quota de envio/receba configurada
Get-Mailbox -Identity “[email protected]” | Select-Object ProhibitSendQuota, ProhibitSendReceiveQuota, IssueWarningQuota

O StorageLimitStatus indica o estado actual: UnderLimit, IssueWarning, ProhibitSend, ou MailboxDisabled.

8. Message Trace e Troubleshooting de Entrega

O message trace é a ferramenta principal para diagnosticar problemas de entrega de email no Exchange Online. Permite rastrear mensagens enviadas e recebidas nos últimos 10 dias (90 dias com o relatório histórico estendido).

Message trace via PowerShell

# Rastrear mensagens enviadas por um utilizador específico nas últimas 24 horas
Get-MessageTrace -SenderAddress “[email protected]” -StartDate (Get-Date).AddHours(-24) -EndDate (Get-Date) | Select-Object MessageId, RecipientAddress, Subject, Status, EventTime

# Rastrear mensagens recebidas por um destinatário específico
Get-MessageTrace -RecipientAddress “[email protected]” -StartDate (Get-Date).AddHours(-24) -EndDate (Get-Date)

# Rastrear uma mensagem específica pelo Message-ID
Get-MessageTrace -MessageId “<[email protected]>” -StartDate (Get-Date).AddDays(-7) -EndDate (Get-Date)

Interpretar os resultados do message trace

O campo Status do Get-MessageTrace pode apresentar os seguintes valores:

Status Significado Acção
Delivered A mensagem foi entregue com sucesso na mailbox do destinatário Nenhuma acção necessária
FilteredAsSpam A mensagem foi filtrada como spam pelo EOP Verificar a política anti-spam ou libertar da quarentena
Quarantined A mensagem foi colocada em quarentena Usar Get-QuarantineMessage para revisão
Failed A entrega falhou (rejeição do destinatário, erro de conector) Verificar o NDR (Non-Delivery Report)
Pending A mensagem está em processo de entrega Aguardar; verificar novamente em alguns minutos
Expanded A mensagem foi expandida para um grupo de distribuição Verificar os membros do grupo

Tabela de NDRs comuns

Código NDR Causa Resolução
5.1.1 Endereço de destinatário inválido ou inexistente Verificar a ortografia do endereço
5.1.7 Remetente com endereço mal formatado Verificar o endereço SMTP do remetente
5.2.2 Caixa de correio do destinatário cheia Aumentar quota ou arquivar itens
5.4.1 Loop de encaminhamento detectado Verificar connectors e regras de transporte
5.7.1 Autenticação SMTP falhou ou acesso negado Verificar conectores e SPF/DKIM/DMARC do remetente
5.7.133 Tenant não permite envio externo Verificar política de outbound spam

Troubleshooting de entrega passo a passo

# 1. Verificar se a mensagem chegou ao tenant
Get-MessageTrace -RecipientAddress “[email protected]” -StartDate (Get-Date).AddHours(-48) -EndDate (Get-Date)

# 2. Obter detalhes do evento de entrega (relatório estendido)
$trace = Get-MessageTrace -RecipientAddress “[email protected]” -StartDate (Get-Date).AddHours(-48) -EndDate (Get-Date)
$trace | ForEach-Object { Get-MessageTraceDetail -MessageTraceId $_.MessageTraceId -RecipientAddress $_.RecipientAddress -SenderAddress $_.SenderAddress }

# 3. Verificar se a mensagem está em quarentena
Get-QuarantineMessage -SenderAddress “[email protected]” | Select-Object Subject, ReceivedTime, QuarantineReason

# 4. Verificar as regras de transporte que possam ter afectado a mensagem
Get-TransportRule | Where-Object { $_.State -eq “Enabled” } | Format-Table Name, Priority

O Get-MessageTraceDetail fornece um registo granular de cada passo que a mensagem percorreu dentro do Exchange Online, incluindo os agentes de transporte que processaram a mensagem.

9. Journaling e Compliance

O journaling é o processo de encaminhar cópias de mensagens (em formato envelope) para uma mailbox de arquivo dedicada, com o objectivo de cumprir requisitos regulatórios ou de retenção legal. No Exchange Online, o journaling é configurado via regras de journaling.

Configuração de journaling

# Verificar a configuração de journaling do tenant
Get-JournalRule | Format-Table Name, Enabled, JournalEmailAddress, Scope

# Criar uma regra de journaling para todo o correio interno e externo
New-JournalRule -Name “Compliance – Todos” -JournalEmailAddress “[email protected]” -Scope Global -Enabled $true

# Criar uma regra de journaling apenas para um destinatário específico
New-JournalRule -Name “Compliance – Financeiro” -Recipient “[email protected]” -JournalEmailAddress “[email protected]” -Enabled $true

Considerações sobre a journal mailbox

A journal mailbox deve ser uma mailbox dedicada, exclusivamente para receber os relatórios de journaling. Recomendações:

  • A journal mailbox não deve ser acedida por utilizadores finais.
  • Deve ter quota suficiente para o volume de mensagens ou ser arquivada regularmente.
  • Para volumes elevados, a Microsoft recomenda o uso de um Journaling Premium (requer licença Exchange Online Archiving) ou um serviço de journaling terceiro.
  • Em PME com requisitos de compliance moderados, uma mailbox dedicada com In-Place Archive e auto-expanding archive é geralmente suficiente.

Litigation hold e In-Place hold

Para preservar todo o conteúdo de uma mailbox (incluindo itens eliminados) para fins legais, o litigation hold é a opção mais directa.

# Activar litigation hold numa mailbox
Set-Mailbox -Identity “[email protected]” -LitigationHoldEnabled $true -LitigationHoldDuration 2555

# Verificar o estado do litigation hold
Get-Mailbox -Identity “[email protected]” | Select-Object DisplayName, LitigationHoldEnabled, LitigationHoldDuration

O LitigationHoldDuration é expresso em dias. O valor 2555 corresponde a aproximadamente 7 anos, que é o período de retenção comum para requisitos de compliance financeiro. Quando o litigation hold está activo, os itens eliminados pelos utilizadores são preservados na pasta Recoverable Items e não são removidos mesmo que o período de retenção da deleted item retention expire.

Compliance search e export

Para auditorias ou investigações, o Microsoft Purview compliance portal oferece ferramentas de content search que permitem pesquisar em todas as mailboxes do tenant.

# (Executado via PowerShell do Purview, não do Exchange Online)
# Criar uma pesquisa de compliance
New-ComplianceSearch -Name “Auditoria Financeiro 2026” -ExchangeLocation All -ContentMatchQuery ‘(contabilidade OR factura) AND (2026-01-01..2026-12-31)’

# Iniciar a pesquisa
Start-ComplianceSearch -Identity “Auditoria Financeiro 2026”

# Verificar o estado
Get-ComplianceSearch -Identity “Auditoria Financeiro 2026” | Format-List Name, Status, Items, Size

Checklist Pré-Produção

Antes de considerar o Exchange Online configurado e pronto para produção, verifique todos os pontos abaixo:

  • [ ] Módulo ExchangeOnlineManagement instalado e actualizado (Get-Module -ListAvailable ExchangeOnlineManagement)
  • [ ] Conexão testada com Connect-ExchangeOnline e MFA funcional
  • [ ] Connectors revistos — nenhum connector órfão ou inactivo (Get-InboundConnector, Get-OutboundConnector)
  • [ ] Transport rules testadas com mensagens de prova (Get-TransportRule)
  • [ ] Política anti-spam configurada com quarentena para spam de alta confiança (Get-HostedContentFilterPolicy)
  • [ ] Política anti-malware com filtro de ficheiros activado (Get-MalwareFilterPolicy)
  • [ ] Defender for Office 365 — Safe Links e Safe Attachments activados se a licença existir (Get-SafeLinksPolicy, Get-SafeAttachmentPolicy)
  • [ ] Política anti-phishing com impersonation configurada para executivos e domínios da organização (Get-AntiPhishPolicy)
  • [ ] SPF publicado no DNS com include:spf.protection.outlook.com
  • [ ] DKIM activado para todos os domínios verificados (Get-DkimSigningConfig)
  • [ ] DMARC publicado com p=quarantine no mínimo (após fase de p=none)
  • [ ] In-Place Archive activado para utilizadores com licença Plan 2 ou Archiving (Get-Mailbox | Select-Object DisplayName, ArchiveStatus)
  • [ ] Auto-expanding archive activado ao nível do tenant se aplicável (Set-OrganizationConfig -AutoExpandingArchive)
  • [ ] Retention policies do Purview aplicadas conforme requisitos de compliance
  • [ ] Tipos de mailbox correctos — shared mailboxes sem licença abaixo de 50 GB
  • [ ] Delegações de acesso documentadas e revistas (Full Access, Send As, Send on Behalf)
  • [ ] Journaling configurado se exigido por requisitos regulatórios (Get-JournalRule)
  • [ ] Message trace testado para confirmar rastreabilidade (Get-MessageTrace)
  • [ ] Litigation hold aplicado a mailboxes que requerem preservação legal
  • [ ] Alertas de quarentena configurados para notificar administradores (Get-QuarantineTag)
  • [ ] Backup de configuração — exportar todas as políticas, regras e connectors para documentação

Artigos Relacionados

Este artigo foi útil?

Duarte Spínola

Deixe um Comentário