Exchange Server 2019 Adım Adım Kurulum Rehberi

Yıllar önce bir müşterimizin ofisinde Exchange kurulumu yaparken “bu kadar mı karmaşık olması gerekiyor?” diye sormuştu IT müdürü. Haklıydı aslında, Exchange kurulumu gerçekten dikkat isteyen bir süreç. Ama doğru sırayla gidersen, her adımı anlayarak yaparsan, sonunda karşına sağlam çalışan bir mail altyapısı çıkıyor. Bu yazıda Exchange Server 2019’u sıfırdan kuracağız, hem ön gereksinimleri hem de kurulum sonrası yapılandırmayı ele alacağız.

Ön Gereksinimler ve Ortam Hazırlığı

Exchange 2019, Windows Server 2019 üzerinde çalışıyor. Windows Server 2022 desteği de geldi ancak production ortamlarda hala 2019 tercih edilen platform. Donanım tarafında minimum değerlere bakma, bunlar gerçek hayatta işe yaramaz. Şunu söyleyeyim: 100 kullanıcılı bir ortam için en az 16 GB RAM, 4 vCPU ve sistem diski dışında ayrı bir veri diski şart. Log dosyaları ve mailbox veritabanları ayrı disklerde olsun, bunu sonradan düzeltmeye çalışmak gereksiz iş yükü çıkarıyor.

Sunucunun domain’e join edilmiş olması gerekiyor ve kurulumu yapan hesabın Schema Admins, Enterprise Admins ve Domain Admins gruplarının üyesi olması lazım. Bunu atlayan arkadaşlar kurulum ortasında hata alıyor.

DNS tarafını da önceden düzelt. Sunucunun FQDN’si düzgün resolve edilmeli, reverse DNS kaydı oluşturulmalı. Mail akışında sorun çıkmaması için bu adım kritik.

Windows Rollerini ve Özelliklerini Yükleme

Exchange kurulmadan önce bir dizi Windows rol ve özelliğinin sisteme eklenmesi gerekiyor. Bunu PowerShell ile yapmak en temiz yol.

Install-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, RSAT-ADDS

Bu komutu çalıştırdıktan sonra sunucuyu yeniden başlatman gerekiyor. Yeniden başlatmayı atlarsan sonraki adımlarda garip hatalar alabilirsin, bunu tecrübeyle söylüyorum.

Yeniden başlatma sonrası .NET Framework sürümünü kontrol et:

Get-ChildItem 'HKLM:SOFTWAREMicrosoftNET Framework SetupNDP' -Recurse | Get-ItemProperty -Name version -EA 0 | Where { $_.PSChildName -Match '^(?!S)p{L}'} | Select PSChildName, version

.NET 4.8 kurulu olmalı. Yoksa Microsoft’tan indirip kuruyorsun, ardından tekrar yeniden başlatma.

Visual C++ ve UCMA Kurulumu

Exchange 2019, Microsoft Unified Communications Managed API 4.0’a ihtiyaç duyuyor. Bunu Exchange kurulum medyasının içinden kurabilirsin.

D:UCMARedistSetup.exe

Visual C++ 2013 Redistributable de gerekli. Kurulum medyasında yok, Microsoft’un sitesinden ayrıca indirmek gerekiyor. Bu adımı atlayan arkadaşlar kurulum sırasında “prerequisite check failed” hatası alıyor ve neden olduğunu bulmak için zaman harcıyor.

Active Directory Schema’yı Hazırlama

Schema genişletme işlemi one-time bir operasyon, dikkatli yapmak lazım. Schema Master’ın hangi DC olduğunu önce öğren:

Get-ADForest | Select-Object SchemaMaster

Schema genişletmeyi Exchange kurulum medyasından yapıyoruz. Bu komutu Schema Master DC’ye erişimi olan bir makinede çalıştırman gerekiyor:

Setup.exe /PrepareSchema /IAcceptExchangeServerLicenseTerms_DiagnosticDataOFF

Schema hazırlama tamamlandıktan sonra Active Directory’yi hazırlama:

Setup.exe /PrepareAD /OrganizationName:"SirketAdi" /IAcceptExchangeServerLicenseTerms_DiagnosticDataOFF

OrganizationName parametresini dikkatli seç, sonradan değiştiremiyorsun. Türkçe karakter ve boşluk kullanma bu isimde, daha sonra kafa karıştırıcı sorunlara yol açıyor.

Birden fazla domain varsa her biri için domain hazırlama da gerekiyor:

Setup.exe /PrepareDomain /IAcceptExchangeServerLicenseTerms_DiagnosticDataOFF

Ya da tüm domain’leri tek seferde hazırlamak için:

Setup.exe /PrepareAllDomains /IAcceptExchangeServerLicenseTerms_DiagnosticDataOFF

Bu işlemler AD replikasyonunu tetikliyor. Birden fazla DC varsa replikasyonun tamamlanmasını bekle, acele etme. Büyük ortamlarda bunu gece saatlerinde yapmak daha güvenli.

Exchange Server Kurulumu

Artık asıl kuruluma geçebiliriz. GUI üzerinden de yapılabilir ama PowerShell ile yapmayı seviyorum, daha öngörülebilir sonuç veriyor:

Setup.exe /Mode:Install /Role:Mailbox /IAcceptExchangeServerLicenseTerms_DiagnosticDataOFF /InstallWindowsComponents

Eğer kurulum dizinini değiştirmek istersen:

Setup.exe /Mode:Install /Role:Mailbox /IAcceptExchangeServerLicenseTerms_DiagnosticDataOFF /InstallWindowsComponents /TargetDir:"E:Exchange"

Kurulum yaklaşık 30-45 dakika sürüyor, ortama göre değişiyor. Kurulum tamamlandığında tekrar yeniden başlatma yapılıyor.

Kurulum Sonrası Temel Yapılandırma

Kurulum bitti ama iş bitmedi. Exchange Management Shell’i aç ve yapılandırmaya başla.

Virtual Directory URL’lerini Ayarlama

Bu adım dışarıdan erişim için kritik. İç ve dış URL’leri doğru ayarlamazsan Outlook client bağlantıları, OWA ve ActiveSync düzgün çalışmaz:

# OWA URL yapılandırması
Set-OwaVirtualDirectory -Identity "EXCHANGE01OWA (Default Web Site)" -InternalUrl "https://mail.sirket.com/owa" -ExternalUrl "https://mail.sirket.com/owa"

# ECP (Exchange Control Panel) URL yapılandırması
Set-EcpVirtualDirectory -Identity "EXCHANGE01ECP (Default Web Site)" -InternalUrl "https://mail.sirket.com/ecp" -ExternalUrl "https://mail.sirket.com/ecp"

# ActiveSync URL yapılandırması
Set-ActiveSyncVirtualDirectory -Identity "EXCHANGE01Microsoft-Server-ActiveSync (Default Web Site)" -InternalUrl "https://mail.sirket.com/Microsoft-Server-ActiveSync" -ExternalUrl "https://mail.sirket.com/Microsoft-Server-ActiveSync"

# Autodiscover URL yapılandırması
Set-ClientAccessService -Identity EXCHANGE01 -AutoDiscoverServiceInternalUri "https://mail.sirket.com/Autodiscover/Autodiscover.xml"

Tüm URL’leri aynı FQDN üzerinden yapılandırmak, SSL sertifikası yönetimini çok kolaylaştırıyor. Split-brain DNS kullanıyorsanız hem internal hem external DNS’de bu kaydın doğru çözümlendiğinden emin olun.

SSL Sertifikası Yükleme

Self-signed sertifika ile production’da çalışmak kabul edilemez. Let’s Encrypt veya kurumsal CA’dan alınmış bir sertifika şart. Sertifikanın CN veya SAN alanlarında şu değerler olmalı:

  • mail.sirket.com
  • autodiscover.sirket.com
  • EXCHANGE01.domain.local (internal erişim için gerekebilir)

PFX formatındaki sertifikayı Exchange’e import etmek için:

Import-ExchangeCertificate -FileName "C:Sertifikamail_sirket_com.pfx" -Password (ConvertTo-SecureString -String "SertifikaSifresi" -AsPlainText -Force) -PrivateKeyExportable $true

# Import edilen sertifikanın thumbprint'ini al
Get-ExchangeCertificate | Format-List Thumbprint, Subject, Services

# Sertifikayı servislere ata
Enable-ExchangeCertificate -Thumbprint "SERTIFIKA_THUMBPRINT_BURAYA" -Services IIS,SMTP,POP,IMAP

Mailbox Veritabanı Yapılandırması

Varsayılan veritabanı genellikle sistem diskinde oluşuyor, bunu değiştirmek gerekiyor:

# Mevcut veritabanını listele
Get-MailboxDatabase | Format-List Name, EdbFilePath, LogFolderPath

# Veritabanını yeni konuma taşı
Move-DatabasePath -Identity "Mailbox Database 0123456789" -EdbFilePath "E:MailboxDBMailbox01Mailbox01.edb" -LogFolderPath "F:MailboxLogsMailbox01"

Burada E: diski veritabanı için, F: diski ise log dosyaları için ayrılmış diskler olmalı. Bu ayrımı yapmazsanız disk doluluğu sorunlarıyla karşılaşırsınız.

Send Connector Yapılandırması

Giden mail akışı için Send Connector oluşturman gerekiyor. İki senaryo var burada: smart host üzerinden göndermek veya direkt MX üzerinden göndermek.

Smart Host Üzerinden Gönderim (Önerilen):

New-SendConnector -Name "Internet Mail" -AddressSpaces "*" -SmartHosts "smtp.isp.com" -SmartHostAuthMechanism BasicAuthRequireTLS -AuthenticationCredential (Get-Credential) -Usage Internet -SourceTransportServers EXCHANGE01

Direkt MX Üzerinden Gönderim:

New-SendConnector -Name "Internet Mail Direct" -AddressSpaces "*" -DNSRoutingEnabled $true -Usage Internet -SourceTransportServers EXCHANGE01

Türkiye’deki ISP’lerin çoğu 25. portu bloke ediyor. Bunu öğrenmeden direkt MX ile mail göndermeye çalışırsanız saatlerinizi harcayabilirsiniz. Smart host kullanmak her zaman daha güvenilir.

Receive Connector Yapılandırması

Dışarıdan gelen mailleri kabul etmek ve dahili sistemlerin (monitoring araçları, yazıcılar, uygulamalar) mail göndermesi için Receive Connector’ları doğru yapılandırmak gerekiyor:

# Dahili relay için özel connector oluşturma
New-ReceiveConnector -Name "Internal Relay" -TransportRole FrontendTransport -Usage Custom -Bindings "0.0.0.0:25" -RemoteIPRanges "192.168.1.0/24" -Server EXCHANGE01

# Anonymous relay iznini ver (sadece güvenilir IP aralıkları için)
Set-ReceiveConnector "EXCHANGE01Internal Relay" -PermissionGroups AnonymousUsers
Get-ReceiveConnector "EXCHANGE01Internal Relay" | Add-ADPermission -User "NT AUTHORITYANONYMOUS LOGON" -ExtendedRights "Ms-Exch-SMTP-Accept-Any-Recipient"

Bu yapılandırmayı tüm ağa açmak güvenlik açığı oluşturur. Sadece güvendiğin IP aralıklarını ekle.

Accepted Domain ve E-posta Adres Politikası

# Accepted domain ekleme
New-AcceptedDomain -Name "sirket.com" -DomainName "sirket.com" -DomainType Authoritative

# Varsayılan accepted domain'i ayarla
Set-AcceptedDomain -Identity "sirket.com" -MakeDefault $true

# E-posta adres politikası oluşturma
New-EmailAddressPolicy -Name "Sirket Mail Politikasi" -EnabledEmailAddressTemplates "SMTP:%g.%[email protected]" -IncludedRecipients AllRecipients -Priority 1

# Politikayı uygula
Update-EmailAddressPolicy -Identity "Sirket Mail Politikasi"

Monitoring ve Sağlık Kontrolü

Kurulumu bitirmeden önce Exchange’in sağlıklı çalışıp çalışmadığını kontrol etmek için birkaç komut:

# Exchange servislerinin durumu
Test-ServiceHealth

# Mail akış testi
Test-Mailflow -TargetMailboxServer EXCHANGE01

# Exchange genel durum kontrolü
Get-HealthReport -Server EXCHANGE01

# Queue durumu
Get-Queue

# Veritabanı durumu
Get-MailboxDatabase -Status | Select Name, Mounted, DatabaseSize

Test-Mailflow komutu çok değerli, hem gönderim hem alım yolunu test ediyor. İlk kurulumda mutlaka çalıştır.

Yaygın Kurulum Sorunları

Yıllar içinde en sık karşılaştığım sorunları paylaşayım:

“Organization Preparation has not been completed” hatası: PrepareAD komutu tamamlanmadan veya AD replikasyonu beklenilmeden kuruluma geçildiğinde ortaya çıkıyor. Çözüm: Replikasyonun tamamlandığını doğrula, gerekirse elle replikasyonu tetikle.

repadmin /syncall /AdeP

IIS Application Pool sorunları: Kurulum sonrası Exchange ile ilgili Application Pool’lar başlamıyorsa:

# IIS'i sıfırlama
iisreset /noforce

# Exchange servislerini yeniden başlatma
Get-Service *Exchange* | Restart-Service

Autodiscover çalışmıyor: Bu sorun çoğunlukla DNS yapılandırmasından kaynaklanıyor. Autodiscover kaydının hem internal hem external DNS’de doğru olduğunu kontrol et. SCP (Service Connection Point) kaydını da kontrol etmek gerekebilir:

Get-ClientAccessService | Select Name, AutoDiscoverServiceInternalUri

Backup Stratejisi

Exchange kurulduktan sonra backup stratejisini hemen belirle, bunu ertele. Windows Server Backup Exchange-aware şekilde çalışıyor, VSS tabanlı backup alıyor. Ancak production ortamda Veeam, Commvault gibi Exchange’i destekleyen bir backup çözümü kullanmak daha güvenilir.

Veritabanı circular logging hakkında bir not: Bazıları disk tasarrufu için circular logging açıyor, bu log truncation’ı otomatik yapıyor. Ancak bu yapılandırmada point-in-time recovery mümkün olmuyor, sadece son full backup’a dönebiliyorsunuz. Production ortamda bu riski almayın.

Güvenlik Sıkılaştırması

Kurulum sonrası mutlaka yapılması gerekenler:

TLS 1.0 ve 1.1’i devre dışı bırak, 1.2 ve 1.3 kullan. Exchange 2019 TLS 1.2’yi varsayılan olarak destekliyor ama eski protokolleri elle kapatmak gerekiyor. Bu işlem için Microsoft’un IISCrypto veya TLS-Audit aracını kullanabilirsin.

SMTP banner’ı değiştir, Exchange sürümünü dışarıya ifşa etme:

Set-ReceiveConnector "EXCHANGE01Default Frontend EXCHANGE01" -Banner "220 mail.sirket.com Microsoft ESMTP MAIL Service ready"

Admin hesabı için multi-factor authentication zorunlu kıl. Exchange Admin Center’a erişim için ayrı bir yönetim hesabı kullan, günlük kullanıcı hesabını admin olarak kullanma.

Sonuç

Exchange 2019 kurulumu, doğru sıra ile gidildiğinde yönetilebilir bir süreç. Burada anlattığım adımların her biri atlandığında geriye dönük düzeltme yapmak zorunda kaldım ya da başkalarının sorunlarını çözerken bu adımların önemini gördüm. Özellikle AD hazırlık adımlarını aceleye getirmemek, disk mimarisini önceden planlamak ve URL yapılandırmalarını doğru yapmak, ileride saatler kazandırıyor.

Exchange’in büyük güçlü bir mail platformu olduğunu, ama bakım istediğini de unutmamak lazım. Cumulative Update’leri takip et, Microsoft’un Exchange ekibinin blogunu düzenli oku. Her CU yeni güvenlik yamaları ve düzeltmeler içeriyor. Altı aydan fazla eski bir CU ile çalışan Exchange sunucusu, gereksiz risk demek.

Sorularınız varsa yorumlarda buluşalım. Özellikle DAG (Database Availability Group) kurulumu ve yüksek erişilebilirlik konularını ayrı bir yazıda ele alacağım.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir