Redes 12 min de leitura

Anatomia de um Servidor Microsoft Exchange On-Premises: Do Motor ESE e Pipeline de Transporte a Clusters DAG e Active Directory

Guilherme Nascimento 0 comentários

Anatomia de um Servidor Microsoft Exchange On-Premises: Do Motor ESE e Pipeline de Transporte a Clusters DAG e Active Directory

Anatomia de um Servidor Microsoft Exchange On-Premises

Engenharia On-Premises: Estrutura Interna, Motor ESE, Pipeline de Transporte e Resiliência em DAG
HORA NERD // SISTEMAS & SERVIDORES 2026

Destaque Operacional
Manual de Baixo Nível para SysAdmins, Engenheiros de Mensageria e Arquitetos Windows

O Microsoft Exchange Server é, sem dúvida, o produto corporativo mais complexo e simbiótico já construído para o ecossistema Windows Server. Administrá-lo exige compreender desde a mecânica de escrita de páginas no disco pelo motor ESE (Extensible Storage Engine) e a jornada de um e-mail através das três camadas do pipeline de transporte, até o gerenciamento de clusters DAG (Database Availability Group) e a amarração umbilical de sua topologia nas partições do Active Directory.

🛠️ Laboratório Prático Disponível: Quer montar este ambiente passo a passo com scripts PowerShell automatizados?
Abrir Lab Exchange no Localhost →
✓
Motor ESE (Jet Blue): Como funcionam as páginas de 32 KB e o Write-Ahead Logging (WAL).
✓
Transport Pipeline: Frontend Transport, Categorizer no Hub e entrega no Mailbox Store.
✓
Clusters DAG: Replicação contínua TCP 64327, quórum com Witness Server e failover PAM.
✓
Simbiose com o AD: Por que a topologia do Exchange reside na partição de Configuração.

—

1. A Evolução da Arquitetura de Funções (Roles)

Historicamente, o Microsoft Exchange passou por uma das transformações arquiteturais mais radicais do mundo do software corporativo:

TERMINAL / bashUTF-8
+---------------------------------------------------------------------------------------------------+
|               A CONSOLIDAÇÃO HISTÓRICA DAS ROLES DO EXCHANGE SERVER                               |
+---------------------------------------------------------------------------------------------------+

  [ EXCHANGE 2007 / 2010 ] ──► 5 Funções Fragmentadas:
                                • Client Access Server (CAS)
                                • Hub Transport Server (HUB)
                                • Mailbox Server (MBX)
                                • Unified Messaging Server (UM)
                                • Edge Transport Server (EDGE)
                                (Gargalo de I/O, alta complexidade de balanceamento e RPC local)
                                          │
                                          ▼
  [ EXCHANGE 2013 ] ─────────► Redução para 2 Funções:
                                • Client Access Server (CAS - Proxy Stateless L7)
                                • Mailbox Server (MBX)
                                          │
                                          ▼
  [ EXCHANGE 2016 / 2019 / SE ] ──► ARQUITETURA UNIFICADA (Role Única):
                                • MAILBOX SERVER ROLE (Executa Tudo: Proxy, Transporte, Armazenamento)
                                • EDGE TRANSPORT ROLE (Opcional, isolado na DMZ para SMTP de Borda)
+---------------------------------------------------------------------------------------------------+

Por que a Microsoft eliminou o papel CAS dedicado?

Nas versões antigas (Exchange 2010), o CAS era responsável por renderizar o protocolo MAPI/RPC e manter afinidade de sessão com o cliente Outlook (o temido Session Affinity ou Sticky Sessions). Se um nó CAS caísse, o usuário era desconectado do Outlook e obrigado a reiniciar a aplicação.

A partir do Exchange 2016 e consolidado no 2019 e na edição Subscription Edition (SE):

  • Proxy de Camada 7 Totalmente Stateless: O tráfego de entrada (HTTPS 443) é recebido pelo serviço Frontend Client Access no próprio servidor Mailbox. Ele não decodifica o pacote e nem processa a lógica de negócio; apenas consulta o Active Directory, identifica em qual banco e servidor Mailbox a caixa postal do usuário está montada, e atua como um proxy reverso transparente em direção aos serviços de backend.
  • Eliminação de Afinidade de Sessão: Qualquer balanceador de carga (seja um F5 BIG-IP, HAProxy, KEMP LoadMaster ou IIS ARR) pode direcionar conexões para qualquer servidor da farm sem se preocupar com sessões presas.

—

2. O Motor de Armazenamento: ESE (Extensible Storage Engine / “Jet Blue”)

Ao contrário da crença comum entre profissionais iniciantes, o Exchange Server não usa o Microsoft SQL Server para armazenar e-mails.

Ele utiliza um motor proprietário de altíssimo desempenho chamado Extensible Storage Engine (ESE), historicamente conhecido pelo codinome Jet Blue (uma tecnologia que também é a base do banco de dados do Active Directory ntds.dit).

TERMINAL / bashUTF-8
+---------------------------------------------------------------------------------------------------+
|               O FLUXO DE ESCRITA TRANSACIONAL (WRITE-AHEAD LOGGING - WAL) NO ESE                  |
+---------------------------------------------------------------------------------------------------+

  [ MENSAGEM RECEBIDA PELO STORE SERVICE ]
                     │
                     ▼
  [ BUFFER DE MEMÓRIA RAM (Database Cache) ] ──► A página de 32 KB é alterada na RAM ("Dirty Page")
                     │
                     ▼ (ETAPA 1: OBRIGATÓRIA ANTES DO COMMIT)
  [ LOG BUFFER / TRANSACTION LOGS (Disco Rápido) ] ──► Gravação sequencial síncrona em blocos de 1 MB
  (E0000000001.log, E0000000002.log...)                Latência < 5ms (Write-Ahead Logging)
                     │
                     ▼ (ETAPA 2: ASSÍNCRONA EM SEGUNDO PLANO)
  [ CHECKPOINT FILE (E00.chk) ] ──────────────► Aponta a fronteira entre dados gravados e pendentes
                     │
                     ▼
  [ ARQUIVO DE BANCO DE DADOS (.EDB) ] ────────► "Lazy Writer" descarrega a página suja no disco
  (Árvore B+ de Páginas de 32 KB)               Leitura e Escrita Aleatória
+---------------------------------------------------------------------------------------------------+

A Estrutura do Arquivo .edb e a Árvore B+

O arquivo .edb (Exchange Database) é internamente organizado como uma coleção massiva de Árvores B+ (B-Trees) divididas em páginas rígidas:

  • Tamanho de Página: No Exchange 2019/2016, as páginas possuem 32 KB (contra 8 KB do Exchange 2010 e 4 KB do Exchange 2003). Esse aumento quadruplicou a eficiência de I/O em discos rígidos e SSDs, reduzindo drasticamente o consumo de IOPS por caixa postal.
  • Tabelas Internas: Cada pasta de usuário (Caixa de Entrada, Enviados, Calendário) é uma tabela dentro da estrutura B-Tree.

O Mecanismo Write-Ahead Logging (WAL)

Para garantir integridade absoluta em conformidade com o padrão ACID (Atomicidade, Consistência, Isolamento e Durabilidade), o ESE nunca grava uma alteração diretamente no arquivo .edb:

1. A transação altera os dados diretamente no cache de memória RAM do servidor (Microsoft.Exchange.Store.Worker.exe). A página alterada passa a ser classificada como Dirty Page (Página Suja).
2. Antes de confirmar a gravação ao cliente, o ESE grava a instrução de alteração sequencialmente no Transaction Log (Log de Transação) ativo (ex.: E00.log).
3. Como a escrita em log é puramente sequencial, ela é extremamente rápida e consome frações de milissegundo no disco.
4. O processo Lazy Writer transfere assincronamente as páginas sujas da memória para o arquivo .edb sem pressa, otimizando o fluxo de I/O aleatório.
5. O arquivo de Checkpoint (E00.chk) mantém o ponteiro exato indicando qual foi o último registro de log que já foi definitivamente descarregado dentro do arquivo .edb.

Dirty Shutdown vs. Clean Shutdown: O Pânico dos SysAdmins

Se o servidor Exchange for desligado de forma abrupta (queda de energia ou travamento de hardware):

  • O arquivo .edb fica no estado Dirty Shutdown: existem transações registradas nos arquivos de log que ainda não foram gravadas na base .edb.
  • Como o ESE se recupera: Na próxima inicialização, o motor lê o arquivo .chk, localiza os logs pendentes e executa o Soft Recovery (eseutil /r), reaplicando as transações e colocando o banco em Clean Shutdown antes de montá-lo.
  • Se os arquivos de log forem deletados manualmente por um administrador inexperiente enquanto o banco estiver em Dirty Shutdown, o banco não monta de forma alguma, exigindo o destrutivo Hard Repair (eseutil /p), que descarta páginas corrompidas e gera perda irreversível de e-mails.

—

3. O Pipeline de Transporte de Mensagens (Transport Architecture)

O roteamento e trânsito de mensagens no Exchange Server moderno opera através de uma esteira rigorosamente dividida em três serviços independentes:

TERMINAL / bashUTF-8
+---------------------------------------------------------------------------------------------------+
|               O PIPELINE COMPLETO DE TRANSPORTE SMTP DO EXCHANGE SERVER                           |
+---------------------------------------------------------------------------------------------------+

   [ REMETENTE EXTERNO (INTERNET) ]
                 │
                 ▼ (Porta TCP 25)
   [ FRONTEND TRANSPORT SERVICE (MSExchangeFrontEndTransport) ]
         │ • Escuta na porta 25 (Default Frontend Connector)
         │ • Proxy Stateless L7 (Sem enfileiramento em disco)
         │ • Filtragem básica de conexão e inspeção de cabeçalhos
                 │
                 ▼ (Porta TCP 2525)
   [ HUB TRANSPORT SERVICE (MSExchangeTransport) ]
         │ ┌────────────────────────────────────────────────────────────────────────┐
         │ │ CATEGORIZER (O Coração do Roteamento):                                 │
         │ │ • Resolução de Destinatários (Consulta Active Directory via LDAP)       │
         │ │ • Bifurcação (Separação de múltiplos destinatários em cópias únicas)    │
         │ │ • Roteamento de Conectores e Avaliação de Diretivas de Transporte      │
         │ └────────────────────────────────────────────────────────────────────────┘
         │ • Enfileiramento Temporário na Base ESE Local: `mail.queues`
                 │
                 ▼ (Porta TCP 475)
   [ MAILBOX TRANSPORT DELIVERY SERVICE (MSExchangeMailboxTransportDelivery) ]
         │ • Recebe a mensagem do Hub Transport
         │ • Faz a chamada RPC/MAPI local
                 │
                 ▼
   [ MAILBOX DATABASE (.EDB) / CAIXA DE ENTRADA DO USUÁRIO ]
+---------------------------------------------------------------------------------------------------+

1. Frontend Transport Service (FET)

Opera em modo Stateless. Ele escuta na porta padrão SMTP (25). Sua única função é receber a conexão do mundo externo, validar se o servidor de envio não está em listas de bloqueio e atuar como um proxy reverso SMTP encaminhando o fluxo para o Hub Transport na porta interna 2525. O FET não possui filas de mensagens em disco.

2. Hub Transport Service: O Categorizer

É o cérebro do servidor. Ele gerencia o banco de filas local (mail.queues, também formatado em ESE). Dentro do Hub Transport opera o Categorizer:

  • Interroga o Active Directory via chamadas LDAP para validar se o e-mail de destino existe.
  • Expande grupos de distribuição.
  • Verifica limites de tamanho de anexo e regras de conformidade (Transport Rules).
  • Se a mensagem for destinada a um usuário local, despacha para o Mailbox Transport; se for para a internet, despacha para um Send Connector via DNS MX.

3. Mailbox Transport Service

Composto por dois subprocessos que nunca comunicam entre si:

  • Mailbox Transport Delivery: Escuta na porta interna 475 e entrega mensagens diretamente na base .edb do usuário.
  • Mailbox Transport Submission: Monitora as pastas Outbox (Caixa de Saída) dos usuários e coleta novos e-mails submetidos pelo Outlook, entregando-os ao Hub Transport na porta 2525.

—

4. Alta Disponibilidade com DAG (Database Availability Group)

O Database Availability Group (DAG) é o alicerce de tolerância a falhas do Exchange Server. Introduzido no Exchange 2010 e aperfeiçoado até as versões atuais, ele permite agrupar até 16 servidores Mailbox em um único cluster resiliente.

TERMINAL / bashUTF-8
+---------------------------------------------------------------------------------------------------+
|               ARQUITETURA DE CLUSTER DAG COM SERVIDOR DE WITNESS                                  |
+---------------------------------------------------------------------------------------------------+

   +───────────────────────────────────+             +───────────────────────────────────+
   |        EXCHANGE NODE 01           |             |        EXCHANGE NODE 02           |
   |  [ Banco DB01: CÓPIA ATIVA ]      |             |  [ Banco DB01: CÓPIA PASSIVA ]    |
   |  (Lendo e gravando requisições)   |             |  (Logs sendo replicados e lidos)  |
   +───────────────────────────────────+             +───────────────────────────────────+
                     │                                                 │
                     └───► [ REPLICAÇÃO CONTÍNUA VIA TCP 64327 ] ──────┘
                           (Logs transacionais enviados em tempo real)
                                             │
                                             ▼
                      [ WITNESS SERVER (Servidor Testemunha) ]
                      Compartilhamento de Arquivos SMB para Voto de Desempate
                      (Quórum: Node and File Share Majority)
+---------------------------------------------------------------------------------------------------+

Arquitetura “Shared Nothing” e WSFC

Diferente de clusters tradicionais de banco de dados que exigem discos compartilhados caros (SAN / Fibre Channel / iSCSI), o DAG opera no modelo Shared Nothing (Nada Compartilhado):

  • Cada servidor possui seus próprios discos locais autônomos (DAS ou SSDs NVMe).
  • O Exchange utiliza o Windows Server Failover Clustering (WSFC) apenas para a lógica de batimentos cardíacos (heartbeats) e arbitragem de quórum, mas não utiliza os recursos de disco do cluster do Windows.

Continuous Replication: O Envio de Logs via TCP 64327

Quando a cópia ativa do banco processa um e-mail no Nó 01:
1. O log de transação é fechado e imediatamente transmitido pela rede através da porta dedicada TCP 64327 para todos os nós que possuem cópias passivas daquele banco.
2. No Nó 02 (cópia passiva), o serviço de replicação verifica a integridade do log recebido (Log Inspector).
3. O processo Log Replay aplica as alterações no arquivo .edb secundário em segundo plano.
4. Lagged Database Copies: O DAG permite criar cópias atrasadas (por exemplo, com atraso de replicação programado de 7 dias). Se um usuário ou ransomware deletar uma caixa inteira na cópia ativa, o administrador pode interromper a cópia passiva atrasada antes que os logs maliciosos sejam aplicados, salvando os dados sem restaurar fitas de backup!

O Active Manager e o Voto do Witness Server

Em clusters com número par de nós (ex.: 2 servidores Exchange), o empate de comunicação pode gerar o cenário de divisão cerebral (Split-Brain).

  • Para desempatar, o DAG utiliza um terceiro servidor na rede (geralmente um servidor de arquivos comum) atuando como File Share Witness (FSW).
  • Dentro de cada nó do Exchange roda o Active Manager:

* O nó que detém o quórum elege o Primary Active Manager (PAM).
Se o Nó 01 travar, o PAM detecta a ausência de batimento cardíaco, avalia qual nó secundário possui a menor defasagem de logs (Best Copy and Server Selection – BCSS*) e monta o banco passivo automaticamente em menos de 15 segundos, com zero interrupção para o usuário.

—

5. A Relação Simbiótica com o Active Directory

O Exchange Server não existe sem o Active Directory. Ele não possui um arquivo de configuração XML local e nem armazena sua lista de caixas postais em um registro isolado. Toda a topologia, conectores, regras de transporte e permissões de usuários são gravados diretamente nas partições do Active Directory Domain Services (AD DS).

TERMINAL / bashUTF-8
+---------------------------------------------------------------------------------------------------+
|               COMO O EXCHANGE SE ENTRELAÇA NAS PARTIÇÕES DO ACTIVE DIRECTORY                      |
+---------------------------------------------------------------------------------------------------+

  [ ACTIVE DIRECTORY DATABASE: NTDS.DIT ]
                     │
                     ├─► [ 1. SCHEMA PARTITION ] ── (Estendida pelo setup /PrepareSchema)
                     │   Acrescenta centenas de classes e atributos: `msExchMailboxGuid`,
                     │   `homeMDB`, `proxyAddresses`, `targetAddress`...
                     │
                     ├─► [ 2. CONFIGURATION PARTITION ] ── (setup /PrepareAD)
                     │   Grava a topologia física e lógica universal da floresta:
                     │   `CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=corp,DC=local`
                     │   • Conectores de Envio e Recebimento
                     │   • Todos os Servidores Exchange instalados e seus Certificados
                     │   • Grupos de Disponibilidade de Banco (DAGs)
                     │
                     └─► [ 3. DOMAIN PARTITION ] ── (setup /PrepareDomain)
                         Grava os usuários e grupos:
                         • Um usuário vira uma caixa postal quando recebe o atributo `homeMDB`
+---------------------------------------------------------------------------------------------------+

As Fases Obrigatórias de Preparação do Domínio

Para instalar o primeiro servidor Exchange em uma floresta Windows, o instalador exige permissões de Schema Admin e Enterprise Admin:
1. Setup.exe /PrepareSchema: Altera irreversivelmente o arquivo ntds.dit do Active Directory, adicionando atributos cruciais como proxyAddresses (usado para roteamento SMTP e aliases).
2. Setup.exe /PrepareAD: Cria o contêiner corporativo CN=Microsoft Exchange na partição de Configuração e cria os grupos globais de segurança (como o poderoso Exchange Trusted Subsystem).
3. Setup.exe /PrepareDomain: Configura as permissões de gravação de propriedades de correio nas Unidades Organizacionais (OUs).

—

6. Comandos Práticos no Exchange Management Shell (EMS)

O gerenciamento de baixo nível de um servidor Exchange é executado via PowerShell nativo estendido com os cmdlets do Exchange Management Shell:

TERMINAL / powershellUTF-8
# 1. Diagnóstico de Integridade e Status de Cópias do Cluster DAG
Get-MailboxDatabaseCopyStatus * | Select-Object Name, Status, CopyQueueLength, ReplayQueueLength, ContentIndexState

# 2. Monitoramento em Tempo Real das Filas de Mensagens do Hub Transport
Get-Queue | Where-Object {$_.MessageCount -gt 0} | Format-Table Identity, DeliveryType, Status, MessageCount -AutoSize

# 3. Teste de Roteamento de Fluxo de Correio Interno de Ponta a Ponta
Test-Mailflow -TargetEmailAddress "[email protected]"

# 4. Verificação de Saúde Geral dos Componentes e Protocolos do Servidor
Get-ServerComponentState -Identity SRV-EXCH01 | Format-Table Component, State -AutoSize

—


Especialistas em Microsoft Exchange & Mensageria
Exchange On-Premises•Migração M365•Hardening•Recuperação de Desastres

Seu servidor Exchange precisa de manutenção crítica, migração para a nuvem ou recuperação de base corrompida?

A equipe técnica da Hora Nerd atua no resgate emergencial de bancos de dados ESE corrompidos, configuração de alta disponibilidade com clusters DAG, expurgo seguro de logs e migrações transparentes de ambientes on-premises legados para o Microsoft 365 Exchange Online com zero perda de mensagens.

Guilherme Nascimento ✓

Guilherme Nascimento

Especialista & Fundador

Especialista em Infraestrutura, Cloud/DevOps e Cibersegurança | +10 anos de experiência prática

Profissional com mais de uma década atuando no campo de batalha da tecnologia corporativa. Especialista em arquiteturas resilientes, automação com Docker/Kubernetes, Hardening de Active Directory, Linux avançado e observabilidade SRE. Criador do ecossistema Hora Nerd, dedicado a desmistificar a tecnologia para profissionais e estudantes.

Cloud & DevOps Active Directory Hardening Linux SysAdmin Docker & CI/CD Observabilidade SRE
HORA NERD EMPRESAS · DIAGNÓSTICO TÉCNICO

Sua empresa enfrenta desafios com este tema ou precisa destravar a infraestrutura?

Elimine gargalos de rede, problemas de lentidão em servidores, custos descontrolados de nuvem e riscos de segurança. Atuamos como especialista freelance emergencial ou consultoria técnica contínua.

Deixe seu comentário

Seu e-mail não será publicado. Campos obrigatórios estão marcados com *