{"id":25241358,"url":"https://github.com/mathewsbuzetti/exchange-2016-2019-migration","last_synced_at":"2026-02-28T19:01:12.419Z","repository":{"id":276511824,"uuid":"929498999","full_name":"mathewsbuzetti/exchange-2016-2019-migration","owner":"mathewsbuzetti","description":"Este repositório contém um guia completo e detalhado para migração do Microsoft Exchange Server 2016 para o Exchange Server 2019. O guia inclui procedimentos passo a passo, scripts de automação, checklists de validação e soluções para problemas comuns encontrados durante o processo de migração.","archived":false,"fork":false,"pushed_at":"2025-03-21T18:34:34.000Z","size":328,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-08T02:03:58.867Z","etag":null,"topics":["active-directory","email-migration","exchange-server","exchange-server-2016","exchange-server-2019","windows-server"],"latest_commit_sha":null,"homepage":"https://github.com/mathewsbuzetti/exchange-2016-2019-migration/blob/main/README.md","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mathewsbuzetti.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-02-08T17:30:36.000Z","updated_at":"2025-09-09T10:24:57.000Z","dependencies_parsed_at":null,"dependency_job_id":"b109664b-bf80-4749-a10c-279bb6cbf465","html_url":"https://github.com/mathewsbuzetti/exchange-2016-2019-migration","commit_stats":null,"previous_names":["mathewsbuzetti/exchange-2016-2019-migration"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mathewsbuzetti/exchange-2016-2019-migration","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mathewsbuzetti%2Fexchange-2016-2019-migration","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mathewsbuzetti%2Fexchange-2016-2019-migration/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mathewsbuzetti%2Fexchange-2016-2019-migration/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mathewsbuzetti%2Fexchange-2016-2019-migration/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mathewsbuzetti","download_url":"https://codeload.github.com/mathewsbuzetti/exchange-2016-2019-migration/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mathewsbuzetti%2Fexchange-2016-2019-migration/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29948228,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-28T18:42:55.706Z","status":"ssl_error","status_checked_at":"2026-02-28T18:42:48.811Z","response_time":90,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["active-directory","email-migration","exchange-server","exchange-server-2016","exchange-server-2019","windows-server"],"created_at":"2025-02-11T21:04:47.155Z","updated_at":"2026-02-28T19:01:12.386Z","avatar_url":"https://github.com/mathewsbuzetti.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🔄 Migração do Exchange Server 2016 para Exchange Server 2019\n[![LinkedIn](https://img.shields.io/badge/LinkedIn-Mathews_Buzetti-blue)](https://www.linkedin.com/in/mathewsbuzetti)\n![Exchange](https://img.shields.io/badge/Exchange-2019-orange?style=flat-square)\n[![Status](https://img.shields.io/badge/Status-Production-green)]()\n![Documentation](https://img.shields.io/badge/Documentation-Technical-blue?style=flat-square)\n\n## 📋 Metadados\nMetadado | Descrição\n---------|------------\n| **Título** | Migração do Exchange Server 2016 para Exchange Server 2019\n| **Assunto** | Microsoft Exchange Server\n| **Versão** | 1.0.0 |\n| **Data** | 21/03/2025\n| **Autor** | Mathews Buzetti\n| **Tags** | `exchange-server`, `email-migration`, `windows-server`, `active-directory`, `infrastructure-migration`\n\n## 📋 Índice\n\n1. [Metadados](#-metadados)\n2. [Objetivo](#-objetivo)\n3. [Avisos Importantes Antes de Iniciar](#-avisos-importantes-antes-de-iniciar)\n4. [Pré-requisitos](#-pré-requisitos)\n5. [Instalação de Recursos no Windows Server](#-instalação-de-recursos-no-windows-server)\n6. [Download do Exchange](#-download-do-exchange)\n7. [Preparação do Active Directory](#-preparação-do-active-directory)\n8. [Instalação do Exchange](#-instalação-do-exchange)\n9. [Verificação de Avisos MAPI](#-verificação-de-avisos-mapi)\n10. [Configuração de URLs](#-configuração-de-urls)\n11. [Certificados SSL](#-certificados-ssl)\n12. [Configuração de Armazenamento](#-configuração-de-armazenamento)\n13. [Configuração DNS](#-configuração-dns)\n14. [Migração de Caixas de Correio Exchange](#-migração-de-caixas-de-correio-exchange)\n15. [Configuração de Conectore](#-configuração-de-conectores)\n16. [Configuração do NAT no Firewall](#-configuração-do-nat-no-firewall)\n17. [Testes de Conectores via PowerShell](#-Testes-de-Conectores-via-PowerShell)\n19. [Verificação de Filas de Email](#-Verificação-de-Filas-de-Email)\n20. [Desinstalação do Exchange Server](#️-desinstalação-do-exchange-server)\n21. [Versionamento](#-versionamento)\n\n## 🎯 Objetivo\nEste guia fornece um roteiro detalhado para migração do Microsoft Exchange Server 2016 para o Exchange Server 2019. O processo de migração é crítico e requer planejamento cuidadoso para garantir:\n- Mínima interrupção dos serviços de email\n- Preservação integral dos dados dos usuários\n- Transição suave entre versões do Exchange\n\n## 🚨 Avisos Importantes Antes de Iniciar\n\u003e [!WARNING]\n\u003e - Sempre faça backup completo de todo o ambiente antes de iniciar\n\u003e - Realize a migração em horário de baixo impacto\n\u003e - Tenha um plano de rollback detalhado\n\u003e - Comunique antecipadamente todos os usuários sobre a migração\n\n## 💻 Pré-requisitos\n\n### 📥 1.1. Instalação do .NET Framework 4.8\n**Descrição**: O .NET Framework 4.8 é um requisito fundamental para o Exchange Server 2019. Ele fornece a base de runtime necessária para execução do Exchange.\n\n**Procedimento**:\n1. Download: [.NET Framework 4.8](https://dotnet.microsoft.com/pt-br/download/dotnet-framework/thank-you/net48-web-installer)\n2. Execute o instalador com privilégios administrativos\n3. Siga as instruções na tela\n4. Reinicie o servidor após a instalação\n\n**Verificação**:\n- Abra o PowerShell e execute: `Get-WindowsFeature Net-Framework-45-Features`\n- Confirme se está instalado e habilitado\n\n### 📥 1.2. Visual C++ 2012 Redistributable\n**Descrição**: Este componente fornece bibliotecas runtime necessárias para aplicações compiladas com Visual Studio 2012.\n\n**Procedimento**:\n1. Download: [VC++ 2012](https://www.microsoft.com/en-us/download/details.aspx?id=30679)\n2. Execute o instalador\n3. Aceite os termos e continue a instalação\n4. Aguarde a conclusão\n\n### 📥 1.3. Visual C++ 2013 Redistributable\n**Descrição**: Similar ao anterior, este componente fornece bibliotecas runtime para aplicações mais recentes.\n\n**Procedimento**:\n1. Download: [VC++ 2013](https://aka.ms/highdpimfc2013x64ptb)\n2. Execute o instalador\n3. Siga o processo de instalação\n4. Aguarde a conclusão\n\n### 📥 1.4. Unified Communications Managed API 4.0\n**Descrição**: O UCMA 4.0 é necessário para funcionalidades de comunicação unificada do Exchange.\n\n**Procedimento**:\n1. Download: [UCMA 4.0](https://www.microsoft.com/en-us/download/details.aspx?id=34992)\n2. Execute o instalador como administrador\n3. Siga as instruções de instalação\n4. Verifique a conclusão no Painel de Controle\n\n### 📥 1.5. IIS URL Rewrite Module\n**Descrição**: Este módulo é crucial para o funcionamento do Exchange Server 2019, permitindo o redirecionamento correto de URLs.\n\n**Procedimento**:\n1. Download: [IIS URL Rewrite](https://www.iis.net/downloads/microsoft/url-rewrite)\n2. Execute a instalação como administrador\n3. Aguarde a conclusão\n\n\u003e [!WARNING]\n\u003e Reinicie o servidor após a instalação\n\n## 🛠️ Instalação de Recursos no Windows Server\n\n### 🔧 2.1. Instalar RSAT-ADDS\n**Descrição**: As Remote Server Administration Tools (RSAT) são necessárias para gerenciar o Active Directory.\n\n**Procedimento**:\n```powershell\nInstall-WindowsFeature RSAT-ADDS\n```\n\n**Verificação**:\n```powershell\nGet-WindowsFeature RSAT-ADDS | Select Name, Installed\n```\n\n### 🔧 2.2. Instalar Recursos Necessários\n**Descrição**: Estes são os componentes fundamentais do Windows Server necessários para o Exchange.\n\n**Procedimento**:\n```powershell\nInstall-WindowsFeature NET-Framework-45-Features, RPC-over-HTTP-proxy, RSAT-Clustering, RSAT-Clustering-CmdInterface, RSAT-Clustering-Mgmt, RSAT-Clustering-PowerShell, Web-Mgmt-Console, WAS-Process-Model, Web-Asp-Net45, Web-Basic-Auth, Web-Client-Auth, Web-Digest-Auth, Web-Dir-Browsing, Web-Dyn-Compression, Web-Http-Errors, Web-Http-Logging, Web-Http-Redirect, Web-Http-Tracing, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Lgcy-Mgmt-Console, Web-Metabase, Web-Mgmt-Console, Web-Mgmt-Service, Web-Net-Ext45, Web-Request-Monitor, Web-Server, Web-Stat-Compression, Web-Static-Content, Web-Windows-Auth, Web-WMI, Windows-Identity-Foundation\n```\n\n**Verificação**:\n```powershell\nGet-WindowsFeature | Where-Object {$_.Installed -eq $true} | Format-Table Name,InstallState\n```\n## 📦 Download do Exchange\n**Descrição**: O Exchange Server 2019 CU15 é a versão que será utilizada nesta instalação.\n\n**Procedimento**:\n1. Download: [Exchange 2019 CU15](https://www.microsoft.com/en-us/download/details.aspx?id=106402)\n2. Extraia o arquivo ISO baixado\n3. Mantenha os arquivos em um local de fácil acesso\n\n\u003e [!WARNING]\\\n\u003e Certifique-se de baixar a versão mais recente disponível no momento da instalação.\n\n## 🔄 Preparação do Active Directory\n\n### 🛠️ 4.1. Preparar Schema\n**Descrição**: Esta etapa estende o schema do Active Directory para incluir os atributos necessários para o Exchange 2019.\n\n**Procedimento**:\n```cmd\nSetup.exe /IAcceptExchangeServerLicenseTerms_DiagnosticDataON /PrepareSchema\n```\n\n**Verificação**:\n- Verifique os logs em: `%ExchangeInstallPath%\\Logging\\ExchangeSetup`\n- Confirme que não há erros no Event Viewer\n\n### 🛠️ 4.2. Preparar Active Directory\n**Descrição**: Esta etapa prepara o Active Directory para o Exchange 2019, criando os containers e grupos necessários.\n\n**Para primeira instalação**:\n```cmd\nSetup.exe /IAcceptExchangeServerLicenseTerms_DiagnosticDataON /PrepareAD /OrganizationName:\"SuaOrganizacao\"\n```\n\n**Para ambiente existente**:\n```cmd\nSetup.exe /IAcceptExchangeServerLicenseTerms_DiagnosticDataON /PrepareAD\n```\n\n\u003e [!WARNING]\n\u003e - O nome da organização não pode ser alterado depois de definido\n\u003e - Use um nome sem espaços\n\n### 🛠️ 4.3. Preparar Todos os Domínios\n**Descrição**: Prepara todos os domínios da floresta para o Exchange 2019.\n\n**Procedimento**:\n```cmd\nSetup.exe /IAcceptExchangeServerLicenseTerms_DiagnosticDataON /PrepareAllDomains\n```\n\n\u003e [!NOTE]\n\u003e **Verificação**:\n\u003e - Aguarde a replicação do AD (pode levar várias horas)\n\u003e - Verifique os logs de instalação\n\u003e - Confirme as alterações no AD Sites and Services\n\n## 📝 Instalação do Exchange\n\n### 🔧 5.1. Instalação Inicial\n**Descrição**: Instalação do Exchange Server 2019 no novo servidor.\n\n**Procedimento**:\n1. Execute Setup.exe como administrador\n2. Selecione \"Next\" na tela inicial\n3. Aceite os termos de licença\n4. Escolha se deseja participar do programa de experiência do cliente\n5. Selecione a instalação recomendada\n6. Especifique o local de instalação\n7. Aguarde a conclusão da instalação\n\n\u003e [!NOTE]\n\u003e **Verificações Pós-Instalação**:\n\u003e - Verifique o Event Viewer\n\u003e - Teste o acesso ao ECP (Exchange Control Panel)\n\u003e - Verifique os serviços do Exchange\n\n## 🔧  Verificação de Avisos MAPI\nSe você encontrar avisos relacionados ao MAPI over HTTP durante a instalação, siga estas etapas no servidor Exchange antigo 2016:\n\n### 1.1. Preparação\nAbra o Exchange Management Shell com privilégios de administrador no servidor Exchange antigo (por exemplo, Exchange 2016).\n\n### 1.2. Verificação do Ambiente\nExecute os seguintes comandos na ordem especificada:\n\n**Mostrar informações de configuração do ambiente**:\n```powershell\nGet-OutlookAnywhere | Format-List\n```\n\n**Verificar se o MAPI está habilitado**:\n```powershell\nGet-OrganizationConfig | Format-List *mapihttpenabled\n```\n\n### 1.3. Configuração do Diretório Virtual\nPor padrão, o Exchange cria um diretório virtual para MAPI sobre HTTP. Use o cmdlet Set-MapiVirtualDirectory para configurá-lo:\n\n```powershell\nSet-MapiVirtualDirectory -Identity \"\u003cNomeDoSeuServidor\u003e\\mapi (Default Web Site)\" -InternalUrl https://\u003cSeuDominio.com\u003e/mapi -IISAuthenticationMethods Negotiate\n```\n\n**Observações sobre o comando**:\n- Substitua `\u003cNomeDoSeuServidor\u003e` pelo nome do seu servidor Exchange\n- Substitua `\u003cSeuDominio.com\u003e` pelo nome de domínio completo (FQDN) do seu servidor\n\n### 1.4. Habilitação do MAPI\nExecute o comando para habilitar conexões MAPI sobre HTTP para toda a organização:\n\n```powershell\nSet-OrganizationConfig -MapiHttpEnabled $true\n```\n\n### 1.5. Verificação Final\nConfirme se o MAPI foi ativado corretamente:\n\n```powershell\nGet-OrganizationConfig | Format-List *mapihttpenabled\n```\n\n## 2. Próximos Passos\nApós realizar todas as configurações no servidor Exchange antigo:\n1. Retorne ao novo servidor\n2. Continue com a instalação do Exchange Server 2019\n3. Monitore os logs de instalação\n\n## 🌐 Configuração de URLs\n\n### 🔗 6.1. Configurar URLs Internas e Externas\n**Descrição**: Configuração dos endpoints de acesso para os diferentes serviços do Exchange.\n\n\u003e [!WARNING]\n\u003e - Substitua \"EX01\" pelo nome real do seu servidor\n\u003e - Substitua \"mail.techijack.live\" pelo FQDN real do seu ambiente\n\u003e - Certifique-se de que o certificado SSL cobre todos os FQDNs configurados\n\n**Procedimento**:\n```powershell\n$Server_name = \"EX01\"\n$FQDN = \"mail.techijack.live\"\n\n# Configurar OWA (Outlook Web App)\nGet-OWAVirtualDirectory -Server $Server_name | Set-OWAVirtualDirectory -InternalURL \"https://$($FQDN)/owa\" -ExternalURL \"https://$($FQDN)/owa\"\n\n# Configurar ECP (Exchange Control Panel)\nGet-ECPVirtualDirectory -Server $Server_name | Set-ECPVirtualDirectory -InternalURL \"https://$($FQDN)/ecp\" -ExternalURL \"https://$($FQDN)/ecp\"\n\n# Configurar OAB (Offline Address Book)\nGet-OABVirtualDirectory -Server $Server_name | Set-OABVirtualDirectory -InternalURL \"https://$($FQDN)/oab\" -ExternalURL \"https://$($FQDN)/oab\"\n\n# Configurar ActiveSync\nGet-ActiveSyncVirtualDirectory -Server $Server_name | Set-ActiveSyncVirtualDirectory -InternalURL \"https://$($FQDN)/Microsoft-Server-ActiveSync\" -ExternalURL \"https://$($FQDN)/Microsoft-Server-ActiveSync\"\n\n# Configurar EWS (Exchange Web Services)\nGet-WebServicesVirtualDirectory -Server $Server_name | Set-WebServicesVirtualDirectory -InternalURL \"https://$($FQDN)/EWS/Exchange.asmx\" -ExternalURL \"https://$($FQDN)/EWS/Exchange.asmx\"\n\n# Configurar MAPI\nGet-MapiVirtualDirectory -Server $Server_name | Set-MapiVirtualDirectory -InternalURL \"https://$($FQDN)/mapi\" -ExternalURL \"https://$($FQDN)/mapi\"\n\n# Configurar Autodiscover\nSet-ClientAccessService -Identity $Server_name -AutodiscoverServiceInternalURI \"https://$FQDN/Autodiscover/Autodiscover.xml\"\n```\n\n**Verificação**:\n```powershell\n# Verificar todas as configurações\n$OWA = Get-OWAVirtualDirectory -Server $Server_name -AdPropertiesOnly | Select InternalURL,ExternalURL\n$ECP = Get-ECPVirtualDirectory -Server $Server_name -AdPropertiesOnly | Select InternalURL,ExternalURL\n$OAB = Get-OABVirtualDirectory -Server $Server_name -AdPropertiesOnly | Select InternalURL,ExternalURL\n$EAS = Get-ActiveSyncVirtualDirectory -Server $Server_name -AdPropertiesOnly | Select InternalURL,ExternalURL\n$MAPI = Get-MAPIVirtualDirectory -Server $Server_name -AdPropertiesOnly | Select InternalURL,ExternalURL\n$Auto_Discover = Get-ClientAccessServer $Server_name | Select AutoDiscoverServiceInternalUri\n\n$OWA,$ECP,$OAB,$EAS,$MAPI | Format-Table\n$Auto_Discover\n```\n\n## 🔒 Certificados SSL\n\n### 📜 7.1. Exportar Certificado\n**Descrição**: Processo de exportação do certificado SSL do servidor Exchange antigo.\n\n**Procedimento**:\n1. Abra o Exchange Admin Center (EAC)\n2. Navegue até Servidores \u003e Certificados\n3. Selecione o certificado em uso\n4. Clique em \"...\" e escolha \"Exportar\"\n5. Escolha um local seguro e defina uma senha forte\n6. Salve o arquivo .pfx\n\n\u003e [!WARNING]\n\u003e - Mantenha a senha em local seguro\n\u003e - Certifique-se de que o certificado não está expirado\n\n### 📜 7.2. Importar Certificado\n**Descrição**: Processo de importação do certificado no novo servidor Exchange 2019.\n\n**Procedimento**:\n1. Copie o arquivo .pfx para o novo servidor\n2. Abra o EAC no Exchange 2019\n3. Navegue até Servidores \u003e Certificados\n4. Clique em \"+\" para adicionar\n5. Escolha \"Importar certificado\"\n6. Selecione o arquivo .pfx\n7. Digite a senha de exportação\n8. Atribua os serviços:\n   - IIS (para OWA, ECP, ActiveSync, etc.)\n   - SMTP (para envio/recebimento de emails)\n   - IMAP (se utilizado)\n   - POP (se utilizado)\n\n\u003e [!NOTE]\n\u003e **Verificação**:\n\u003e - Teste o acesso HTTPS aos serviços\n\u003e - Verifique o certificado no navegador\n\u003e - Confirme que não há alertas de certificado\n\n## 💾 Configuração de Armazenamento\n\n### 📊 8.1. Verificar Bancos de Dados\n**Descrição**: Levantamento dos bancos de dados existentes e suas configurações.\n\n**Procedimento**:\n```powershell\n# Abrir o PowerShell do Exchange e Importar esse Módulo\nAdd-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn\n\n# Verificar bancos atuais\nGet-MailboxDatabase | Format-List Name, EdbFilePath, LogFolderPath\n```\n### 📊 8.2. Renomear Banco de Dados\n**Descrição**: Padronização do nome do banco de dados para melhor gerenciamento.\n\n**Procedimento**:\n```powershell\n# Exemplo de renomeação para cada banco\nSet-MailboxDatabase \"DB-EX16-01\" –Name \"DB-EX19-PROD\"\nSet-MailboxDatabase \"DB-EX16-RH\" –Name \"DB-EX19-RH\"\nSet-MailboxDatabase \"DB-EX16-ADM\" –Name \"DB-EX19-ADM\"\n```\n\n\u003e [!WARNING]\n\u003e - Substitua \"DB-EX16-01\", \"DB-EX16-RH\", \"DB-EX16-ADM\" pelos nomes reais dos seus bancos\n\u003e - O novo padrão de nomenclatura usa:\n\u003e     - DB: Database\n\u003e     - EX19: Exchange 2019\n\u003e     - PROD/RH/ADM: Identificador do ambiente/departamento\n\n### 📊 8.3. Mover Caminhos\n**Descrição**: Configuração dos caminhos para arquivos de banco de dados e logs.\n\n**Procedimento**:\n```powershell\n# Exemplo para cada banco\nMove-DatabasePath DB-EX19-PROD -EdbFilePath E:\\DB-EX19-PROD\\DB-EX19-PROD.edb –LogFolderPath F:\\LOGS\\DB-EX19-PROD\nMove-DatabasePath DB-EX19-RH -EdbFilePath E:\\DB-EX19-RH\\DB-EX19-RH.edb –LogFolderPath F:\\LOGS\\DB-EX19-RH\nMove-DatabasePath DB-EX19-ADM -EdbFilePath E:\\DB-EX19-ADM\\DB-EX19-ADM.edb –LogFolderPath F:\\LOGS\\DB-EX19-ADM\n```\n\n\u003e [!WARNING]\n\u003e 1. Estrutura dos diretórios:\n\u003e      - Arquivos .edb:\n\u003e        - `E:\\DB-EX19-PROD\\DB-EX19-PROD.edb`\n\u003e        - `E:\\DB-EX19-RH\\DB-EX19-RH.edb`\n\u003e        - `E:\\DB-EX19-ADM\\DB-EX19-ADM.edb`\n\u003e      - Arquivos de Log:\n\u003e        - `F:\\LOGS\\DB-EX19-PROD`\n\u003e        - `F:\\LOGS\\DB-EX19-RH`\n\u003e        - `F:\\LOGS\\DB-EX19-ADM`\n\u003e 2. Requisitos:\n\u003e      - Use discos dedicados para .edb\n\u003e      - Mantenha logs em disco separado\n\u003e      - Monitore espaço em ambos volumes\n\n### 📊 8.4. Verificar Alterações\n**Descrição**: Confirmação das alterações realizadas.\n\n**Procedimento**:\n```powershell\nGet-MailboxDatabase | Format-List Name, EdbFilePath, LogFolderPath\n```\n\n## 🌐 Configuração DNS\n\n**Descrição**: Configuração dos registros DNS necessários para o funcionamento do Exchange 2019.\n\n**Procedimento**:\n1. Abra o DNS Manager\n2. Adicione registros Host A:\n   - \"Mail\" apontando para o IP do servidor EX2019\n   - \"Autodiscover\" apontando para o IP do servidor EX2019\n   - \"Outlook\" apontando para o IP do servidor EX2019\n3. Verifique/Atualize TTL dos registros\n\n**Verificação**:\n- Use nslookup para testar os registros\n- Verifique propagação do DNS\n\n## 📦 Migração de Caixas de Correio Exchange\n\n\u003e [!NOTE]\n\u003e **Exemplo de Bancos de Dados**\n\u003e  - No exemplo abaixo, estamos migrando de:\n\u003e    - `DB-EX16-01` (Banco 1 do Exchange 2016)\n\u003e    - `DB-EX16-RH` (Banco 2 do Exchange 2016)\n\u003e    - `DB-EX16-ADM` (Banco 3 do Exchange 2016)\n\u003e  - Para:\n\u003e    - `DB-EX19-PROD` (Novo banco no Exchange 2019)\n\u003e    - `DB-EX19-RH` (Novo banco RH no Exchange 2019)\n\u003e    - `DB-EX19-ADM` (Novo banco ADM no Exchange 2019)\n\n### 📋 Processo de Migração\n\n#### 1️⃣ Migração das Caixas de Correio do Sistema\n\n##### 1.1. Verificação Inicial\n```powershell\n# Verificar caixas de arbitragem em cada banco\nGet-Mailbox -Database \"DB-EX16-01\" -Arbitration     # Banco Principal\nGet-Mailbox -Database \"DB-EX16-RH\" -Arbitration     # Banco RH\nGet-Mailbox -Database \"DB-EX16-ADM\" -Arbitration    # Banco Administrativo\n```\n\n##### 1.2. Migração de Arbitragem\n```powershell\n# Mover caixas de arbitragem para novos bancos\nGet-Mailbox -Database \"DB-EX16-01\" -Arbitration | \n    New-MoveRequest -TargetDatabase \"DB-EX19-PROD\" -BatchName \"Migração Arbitragem PROD\"\n\nGet-Mailbox -Database \"DB-EX16-RH\" -Arbitration | \n    New-MoveRequest -TargetDatabase \"DB-EX19-RH\" -BatchName \"Migração Arbitragem RH\"\n\nGet-Mailbox -Database \"DB-EX16-ADM\" -Arbitration | \n    New-MoveRequest -TargetDatabase \"DB-EX19-ADM\" -BatchName \"Migração Arbitragem ADM\"\n```\n\n#### 2️⃣ Migração das Caixas de Correio de Usuários\n\n\u003e [!WARNING]\n\u003e 1. **Ordem de Migração**:\n\u003e      - Primeiro: Caixas de arbitragem\n\u003e      - Segundo: Caixas de usuários em lotes\n\u003e      - Terceiro: Caixas com problemas (usando BadItemLimit)\n\n##### 2.1. Migração Padrão\n```powershell\n# Migrar caixas de usuários\nGet-Mailbox -Database \"DB-EX16-01\" -RecipientTypeDetails UserMailbox | \n    New-MoveRequest -TargetDatabase \"DB-EX19-PROD\" -BatchName \"Migração Usuários PROD\"\n\nGet-Mailbox -Database \"DB-EX16-RH\" -RecipientTypeDetails UserMailbox | \n    New-MoveRequest -TargetDatabase \"DB-EX19-RH\" -BatchName \"Migração Usuários RH\"\n\nGet-Mailbox -Database \"DB-EX16-ADM\" -RecipientTypeDetails UserMailbox | \n    New-MoveRequest -TargetDatabase \"DB-EX19-ADM\" -BatchName \"Migração Usuários ADM\"\n```\n\n##### 2.2. Migração com BadItemLimit\n```powershell\n# Para caixas com itens corrompidos\nGet-Mailbox -Database \"DB-EX16-01\" -RecipientTypeDetails UserMailbox | \n    New-MoveRequest -TargetDatabase \"DB-EX19-PROD\" -BatchName \"Migração Usuários PROD BadItem\" -BadItemLimit 50\n\nGet-Mailbox -Database \"DB-EX16-RH\" -RecipientTypeDetails UserMailbox | \n    New-MoveRequest -TargetDatabase \"DB-EX19-RH\" -BatchName \"Migração Usuários RH BadItem\" -BadItemLimit 50\n\nGet-Mailbox -Database \"DB-EX16-ADM\" -RecipientTypeDetails UserMailbox | \n    New-MoveRequest -TargetDatabase \"DB-EX19-ADM\" -BatchName \"Migração Usuários ADM BadItem\" -BadItemLimit 50\n```\n\n#### 3️⃣ Monitoramento e Verificação\n\n##### 3.1. Status das Migrações\n```powershell\n# Verificar progresso\nGet-MoveRequest | Get-MoveRequestStatistics\n\n# Limpar solicitações concluídas\nGet-MoveRequest | Where-Object {$_.Status -eq \"Completed\"} | Remove-MoveRequest\n```\n\n##### 3.2. Verificação Final\n```powershell\n# Verificar bancos originais\nGet-Mailbox -Database \"DB-EX16-01\"\nGet-Mailbox -Database \"DB-EX16-RH\"\nGet-Mailbox -Database \"DB-EX16-ADM\"\n\n# Verificar novos bancos\nGet-MailboxDatabase \"DB-EX19-PROD\" | Format-List Name, ServerName, EdbFilePath, LogFolderPath\nGet-MailboxDatabase \"DB-EX19-RH\" | Format-List Name, ServerName, EdbFilePath, LogFolderPath\nGet-MailboxDatabase \"DB-EX19-ADM\" | Format-List Name, ServerName, EdbFilePath, LogFolderPath\n```\n\n## 🔄 Configuração de Conectores\n\n### 📨 Migração de Conectores de Envio\n1. Acessar Exchange Admin Center (EAC)\n2. Navegar até Fluxo de Email \u003e Conectores de Envio\n3. Para cada conector:\n   - Editar o conector existente\n   - Adicionar novo servidor Exchange 2019\n   - Remover servidor Exchange 2016\n   - Salvar alterações\n4. Testar fluxo de email após cada alteração\n\n### 📥 Configuração de Conectores de Recebimento\n\n#### 1. Identificar Conectores no Exchange 2016\n```powershell\n# Listar conectores existentes\nGet-ReceiveConnector | Format-List Identity, Name, Bindings, RemoteIPRanges, AuthMechanism\n\n# Exportar configurações\nGet-ReceiveConnector | Export-CliXml C:\\ConnectorSettings.xml\n```\n\n#### 2. Criar Conectores no Exchange 2019\n\n1. **Criar Conector Anônimo**:\n```powershell\nNew-ReceiveConnector -Name \"Anonymous Connector\" -Usage Custom -Bindings '0.0.0.0:25' -Server EX19-SERVER -RemoteIPRanges \"0.0.0.0-255.255.255.255\"\n```\n\n\u003e [!WARNING]\n\u003e **Substituições necessárias:**\n\u003e - `\"Anonymous Connector\"` → Nome desejado para o conector (Ex: \"Conector Anônimo SMTP\")\n\u003e - `'0.0.0.0:25'` → IP e porta do seu servidor\n\u003e - `EX19-SERVER` → Nome do seu servidor Exchange 2019\n\u003e - `\"0.0.0.0-255.255.255.255\"` → Range de IPs da sua rede\n\n2. **Configurar Permissões Anônimas**:\n```powershell\nSet-ReceiveConnector \"Anonymous Connector\" -PermissionGroups AnonymousUsers\n```\n\n\u003e [!WARNING]\n\u003e **Substituição necessária:**\n\u003e - `\"Anonymous Connector\"` → Use o mesmo nome definido no comando anterior\n\n3. **Criar Conector Autenticado**:\n```powershell\nNew-ReceiveConnector -Name \"Authenticated Connector\" -Usage Custom -Bindings '0.0.0.0:587' -Server EX19-SERVER -RemoteIPRanges \"0.0.0.0-255.255.255.255\"\n```\n\n\u003e [!WARNING]\n\u003e **Substituições necessárias:**\n\u003e - `\"Authenticated Connector\"` → Nome desejado para o conector (Ex: \"Conector Autenticado SMTP\")\n\u003e - `'0.0.0.0:587'` → IP e porta do seu servidor\n\u003e - `EX19-SERVER` → Nome do seu servidor Exchange 2019\n\u003e - `\"0.0.0.0-255.255.255.255\"` → Range de IPs da sua rede\n\n4. **Configurar Autenticação**:\n```powershell\nSet-ReceiveConnector \"Authenticated Connector\" -AuthMechanism Tls,Basic,Integrated -PermissionGroups ExchangeUsers\n```\n\n\u003e [!WARNING]\n\u003e **Substituição necessária:**\n\u003e - `\"Authenticated Connector\"` → Use o mesmo nome definido no comando anterior\n\n5. **Adicionar Servidor Confiável**:\n```powershell\nGet-ExchangeServer | Add-ADPermission -User \"NT AUTHORITY\\ANONYMOUS LOGON\" -ExtendedRights MS-Exc-Store-Admin\n```\n\n6. **Configurar Permissões de Conector**:\n```powershell\nGet-ReceiveConnector | Add-ADPermission -User \"NT AUTHORITY\\ANONYMOUS LOGON\" -ExtendedRights MS-Exc-Accept-Headers-Routing,MS-Exc-Accept-Headers-Forest,MS-Exc-Accept-Headers-Organization\n```\n\n7. **Estabelecer Confiança**:\n```powershell\nSet-ADSiteLink -Identity \"Default-First-Site-Link\" -ReplicationInterval 15\n```\n\n\u003e [!WARNING]\n\u003e **Substituição necessária:**\n\u003e - `\"Default-First-Site-Link\"` → Nome do seu Site Link do Active Directory\n\n8. **Reiniciar Serviço**:\n```powershell\nRestart-Service MSExchangeTransport\n```\n\n9. **Verificar Status**:\n```powershell\nGet-Service MSExchangeTransport | Format-List Name, Status, DisplayName\n```\n\n## 🌐 Configuração do NAT no Firewall\n\n**Descrição**: Alteração das regras de NAT no firewall para direcionar o tráfego externo para o novo servidor Exchange 2019.\n\n\u003e [!WARNING]\n\u003e Esta etapa deve ser planejada com cuidado pois causa interrupção temporária do acesso externo ao Exchange. \n\u003e Recomenda-se executar durante janela de manutenção programada.\n\n**Procedimento**:\n1. Faça backup das configurações atuais do firewall\n2. Identifique todas as regras NAT relacionadas ao Exchange 2016\n3. Para cada regra, altere o IP de destino:\n   - De: [IP do servidor Exchange 2016]\n   - Para: [IP do servidor Exchange 2019]\n4. Atualize as políticas de segurança se necessário\n\n### 📩 Testes de Conectores via PowerShell\n\n1. **Teste com Autenticação**:\n```powershell\nSend-MailMessage -From 'remetente@seudominio.com.br' -To 'destinatario@seudominio.com.br' -Subject 'Teste Auth' -smtpserver IP-DO-SERVIDOR -port 25 -usessl -credential pscredential\n```\n\n\u003e [!WARNING]\n\u003e **Substituições necessárias:**\n\u003e - `remetente@seudominio.com.br` → Email do remetente em seu domínio\n\u003e - `destinatario@seudominio.com.br` → Email do destinatário\n\u003e - `IP-DO-SERVIDOR` → IP do seu servidor Exchange\n\u003e - `port 25` → Porta configurada (25 ou 587)\n\u003e\n\u003e **Configurações importantes:**\n\u003e - Use endereços de email válidos no seu domínio\n\u003e - Configure credenciais antes do teste autenticado:\n\u003e   - `$cred = Get-Credential`\n\n2. **Teste sem Autenticação**:\n```powershell\nSend-MailMessage -From 'relay@seudominio.com.br' -To 'destinatario@seudominio.com.br' -Subject 'Teste Relay' -body 'Mensagem de Teste - Favor desconsiderar' -smtpserver IP-DO-SERVIDOR\n```\n\n\u003e [!WARNING]\n\u003e **Substituições necessárias:**\n\u003e - `relay@seudominio.com.br` → Email usado para relay\n\u003e - `destinatario@seudominio.com.br` → Email do destinatário\n\u003e - `IP-DO-SERVIDOR` → IP do seu servidor Exchange\n\n3. **Teste com SMTP Test Tool (Opcional)**:\n```\nPara testes mais completos e interface gráfica, utilize a ferramenta SMTP Test Tool\n```\n\n\u003e [!NOTE]\n\u003e **SMTP Test Tool:**\n\u003e - Ferramenta gráfica para testes SMTP completos\n\u003e - Permite compor, enviar e reenviar mensagens rapidamente\n\u003e - Facilita a comunicação direta com servidores SMTP\n\u003e - Download: [github.com/georgjf/SMTPtool](https://github.com/georgjf/SMTPtool)\n\u003e - Útil para testes avançados de conectores e diagnóstico de problemas\n\n### 📧 Verificação de Filas de Email\n\n#### 1️⃣ Verificar Todas as Filas\n```powershell\n# Listar todas as filas\nGet-Queue\n\n# Verificar filas com detalhes\nGet-Queue | Format-List Name,MessageCount,Status,NextHopDomain\n```\n\n#### 3️⃣ Verificar Filas com Problemas\n```powershell\n# Verificar filas com status de erro\nGet-Queue | Where {$_.Status -eq \"Retry\"} | Format-List\n\n# Verificar filas paradas\nGet-Queue | Where {$_.Status -eq \"Suspended\"}\n```\n\n## 🗑️ Desinstalação do Exchange Server\n\nApós a migração completa para o Exchange 2019 e a verificação adequada de todas as filas de email, o próximo passo é a remoção segura do Exchange Server antigo.\n\n\u003e [!WARNING]\n\u003e - Certifique-se de que todas as caixas de correio foram migradas\n\u003e - Verifique se não há dependências no servidor antigo\n\n### 📋 1. Verificação Inicial de Bancos de Dados\n\n#### 1.1. Listar Bancos de Dados\n**Descrição**: Identificar todos os bancos de dados existentes no servidor Exchange antigo.\n\n**Procedimento**:\n```powershell\n# Listar todos os bancos de dados\nGet-MailboxDatabase | Format-Table Name, Server, MountStatus\n```\n\n### 💾 2. Desmontagem e Remoção de Bancos de Dados\n\n#### 2.1. Desmontar Bancos de Dados\n**Descrição**: Desmontar todos os bancos de dados antes da remoção.\n\n**Procedimento**:\n```powershell\n# Desmontar banco de dados específico\nDismount-Database \"NomeDoBanco\" -Confirm:$false\n\n# Desmontar todos os bancos de dados do servidor\nGet-MailboxDatabase -Server \"NomeDoServidor\" | Dismount-Database -Confirm:$false\n```\n\n#### 2.2. Remover Bancos de Dados\n**Descrição**: Remover os bancos de dados do servidor Exchange.\n\n**Procedimento**:\n```powershell\n# Remover banco de dados específico\nRemove-MailboxDatabase \"NomeDoBanco\" -Confirm:$false\n\n# Remover todos os bancos de dados do servidor\nGet-MailboxDatabase -Server \"NomeDoServidor\" | Remove-MailboxDatabase -Confirm:$false\n```\n\n\u003e [!WARNING]\n\u003e Em caso de erros na remoção de bancos de dados:\n\u003e - Verifique se não há caixas de correio ativas\n\u003e - Verifique se o banco está realmente desmontado\n\u003e - Como último recurso, use o ADSIEdit para remover referências a bancos de dados problemáticos\n\n### 🧹 3. Remover Banco Manual usando ADSIEdit (se necessário)\n\nSe houver problemas na desinstalação ou referências remanescentes no Active Directory, pode ser necessário usar o ADSIEdit para limpeza manual.\n\n#### 3.1. Remover Manualmente Bancos de Dados Problemáticos\n**Descrição**: Usar o ADSIEdit para remover referências a bancos de dados que não podem ser excluídos pelos comandos normais.\n\n**Procedimento**:\n1. Abra o ADSIEdit:\n   - Pressione `Windows + R` para abrir a caixa de diálogo Executar\n   - Digite `adsiedit.msc` e pressione Enter\n2. Conecte-se a \"Configuração\"\n3. Navegue para: \n   ```\n   CN=Configuration \u003e CN=Services \u003e CN=Microsoft Exchange \u003e CN=SuaOrganização \u003e CN=Databases\n   ```\n4. Localize o objeto CN=Mailbox Database (ex: CN=DB01)\n5. Clique com o botão direito e selecione Excluir\n\n### 🖥️ 4. Desinstalar o Exchange Server\n**Descrição**: Desinstalar o software Exchange Server através do Painel de Controle.\n\n**Procedimento**:\n1. Abra o Painel de Controle \u003e Programas e Recursos\n2. Localize \"Microsoft Exchange Server 2016\"\n3. Selecione e clique em \"Desinstalar\"\n4. Siga as instruções do assistente de desinstalação\n5. Reinicie o servidor após a conclusão\n\n![Desinstalação do Exchange Server via Painel de Controle](https://github.com/user-attachments/assets/15462d67-2b43-425d-80ce-885df00017a0)\n\n\u003e [!NOTE]\n\u003e A imagem acima mostra a tela de desinstalação do Exchange Server 2016 através do Painel de Controle do Windows.\n\n### 🔄 5. Remover o Servidor do Domínio\n**Descrição**: Após a desinstalação do Exchange 2016, remover o servidor do domínio para completar a limpeza.\n\n**Procedimento**:\n1. Abra as Propriedades do Sistema:\n   - Clique com o botão direito em \"Este Computador\"\n   - Selecione \"Propriedades\"\n   - Clique em \"Alterar configurações\" na seção de nome do computador\n   \n2. Na janela de Propriedades do Sistema:\n   - Clique na aba \"Nome do Computador\"\n   - Clique no botão \"Alterar...\"\n\n3. Na janela \"Alterações de Nome/Domínio do Computador\":\n   - Na seção \"Membro de\", selecione a opção \"Grupo de Trabalho\"\n   - Digite um nome para o grupo de trabalho (exemplo: \"WORKGROUP\")\n   - Clique em \"OK\"\n\n4. Forneça as credenciais de administrador do domínio quando solicitado\n\n5. Confirme a remoção do domínio e reinicie o servidor quando solicitado\n\n## 🔄 Versionamento\n\n- Versão: 1.0.0\n- Última atualização: 21/03/2025\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmathewsbuzetti%2Fexchange-2016-2019-migration","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmathewsbuzetti%2Fexchange-2016-2019-migration","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmathewsbuzetti%2Fexchange-2016-2019-migration/lists"}