Kurumsal e-posta altyapılarında Microsoft Exchange Server yalnızca kullanıcılar arası mail trafiğini değil uygulamalar, ağ cihazları ve üçüncü parti sistemlerden gelen SMTP relay taleplerini de karşılayan kritik bir bileşendir. Bu relay işlemleri çoğunlukla Receive Connector’lar üzerinden gerçekleştirilir. Klasik Exchange mimarisinde (Exchange 2013 / 2016 / 2019) relay amaçlı kullanılan bir Receive Connector üzerinde Remote IP Address alanında tanımlı çok sayıda IP adresi veya IP aralığı bulunabilir. Bu IP’ler genellikle:

  • ERP / CRM uygulama sunucuları
  • Yazıcılar ve çok fonksiyonlu cihazlar
  • Firewall, SIEM, Backup ve izleme sistemleri
  • Üçüncü parti servisler gibi farklı kaynaklardan oluşur.

Bu nedenle Exchange migration süreçlerinde relay connector yapılandırmasının eksiksiz taşınması mail sürekliliği açısından hayati öneme sahiptir.

Yeni bir Exchange sunucusu kurulduğunda (örneğin Exchange 2016 → Exchange 2019 geçişi):

  • Mevcut Receive Connector’lar otomatik olarak taşınmaz.
  • Yeni sunucu üzerinde manuel olarak Receive Connector oluşturulması gerekir.
  • Relay yetkisine sahip IP adresleri varsayılan olarak boş gelir.

Bu noktada en sık yapılan hatalar şunlardır:

  • IP adreslerinin tek tek manuel eklenmesi
  • Bazı IP’lerin atlanması veya yanlış yazılması
  • CIDR veya IP range tanımlarının hatalı girilmesi

Sonuç olarak uygulamalardan mail gönderilememesi kuyruklarda mail birikmesi ve operasyonel kesintiler yaşanabilir.

Relay connector üzerinde yüzlerce IP adresi bulunan ortamlarda manuel işlem;

  • Zaman kaybına neden olur
  • İnsan hatasına son derece açıktır
  • Migration süresini gereksiz yere uzatır

Bu nedenle Exchange Management Shell (EMS) kullanılarak mevcut Receive Connector yapılandırmasının birebir kopyalanması, en güvenli ve profesyonel yaklaşımdır.

Aşağıdaki iki PowerShell komutu mevcut Exchange sunucusunda çalışan relay connector üzerindeki tüm RemoteIPRanges bilgisini alır ve yeni Exchange sunucusunda oluşturulmuş olan Receive Connector’a eksiksiz şekilde uygular.

$ips = (Get-ReceiveConnector "EXCHSRV16\relayconnector").RemoteIPRanges
Set-ReceiveConnector "EXCHSRV2019\newrelayco" -RemoteIPRanges $ips

Komutların Detaylı Açıklaması

Remote IP Address Bilgilerinin Alınması

$ips = (Get-ReceiveConnector "EXCHSRV16\relayconnector").RemoteIPRanges

Bu komut ile:

EXCHSRV16 sunucusu üzerindeki relayconnector isimli Receive Connector sorgulanır Relay yetkisine sahip tüm IP adresleri ve IP aralıkları RemoteIPRanges özelliği üzerinden alınarak $ips değişkenine atanır.

Bu veri tekil IP’ler, subnet’ler ve CIDR tanımlarını tamamıyla korur.

IP Adreslerinin Yeni Receive Connector’a Aktarılması

Set-ReceiveConnector "EXCHSRV2019\newrelayco" -RemoteIPRanges $ips

Bu adımda:

EXCHSRV2019 üzerindeki newrelayco isimli Receive Connector güncellenir. Önceki sunucudan alınan tüm relay IP’leri tek seferde eklenir.

Bu işlem mevcut Remote IP listesini override eder, yani birebir kopyalama yapılır.

Uygulama Öncesi ve Sonrası Dikkat Edilmesi Gerekenler

Migration Öncesi

  • Yeni Receive Connector mutlaka önceden oluşturulmuş olmalıdır.
  • Permission Group (Anonymous Users / Exchange Servers vb.) kontrol edilmelidir.
  • Connector’un sadece internal relay amaçlı kullanıldığından emin olunmalıdır.

Migration Sonrası

  • Get-ReceiveConnector | fl Name,RemoteIPRanges ile doğrulama yapılmalıdır.
  • Uygulama ve cihazlardan test mail gönderimi yapılmalıdır.
  • Message Tracking Log’lar kontrol edilmelidir.

Bu migration adımı aynı zamanda;

  • Artık kullanılmayan IP adreslerini tespit etmek,
  • Gereksiz relay izinlerini kaldırmak,
  • SMTP relay güvenliğini artırmak için iyi bir fırsat sunar. Büyük ortamlarda bu temizlik, ileride yaşanabilecek güvenlik risklerini de minimize eder.