Exchange Server’da Mesaj Boyutu Sınırı Ayarlama

Kurumsal ortamlarda Exchange Server yönetirken en sık karşılaştığım soruların başında mesaj boyutu sınırları geliyor. Bir kullanıcı “5 MB’lık dosyayı gönderemedim” diye açtığında, sorunun tam olarak nerede olduğunu bulmak bazen ciddi bir araştırma gerektiriyor. Çünkü Exchange’de mesaj boyutu sınırı tek bir yerden yönetilmiyor; organizasyon seviyesinden başlayıp bireysel kullanıcıya kadar uzanan katmanlı bir yapı söz konusu. Bu yazıda bu katmanları tek tek ele alacağız ve gerçek dünya senaryolarından örnekler vereceğiz.

Exchange’de Mesaj Boyutu Sınırının Katmanlı Yapısı

Exchange Server’ın mesaj boyutu kontrolü, birbirinden bağımsız çalışan birden fazla noktada yapılandırılıyor. Bunların hepsini doğru şekilde ayarlamazsanız, bir noktada sınırı artırdığınızı sanırken başka bir noktada aynı engelle karşılaşmaya devam edersiniz. Genel olarak şu katmanlardan oluşuyor:

  • Organizasyon seviyesi: Tüm Exchange ortamı için geçerli olan genel sınırlar
  • Connector seviyesi: Send ve Receive connector’lar üzerindeki sınırlar
  • Kullanıcı/Posta kutusu seviyesi: Bireysel kullanıcılara özel sınırlar
  • Dağıtım grubu seviyesi: Gruba gönderilen mesajlar için geçerli sınırlar
  • IIS / OWA seviyesi: Web istemcisi üzerinden gelen isteklerin boyut sınırı

Şimdi bunları sırayla inceleyelim.

Organizasyon Seviyesinde Sınır Ayarı

Bu ayar, tüm Exchange ortamınız için bir tavan belirler. Herhangi bir connector veya kullanıcı için daha spesifik ayar yapmadıysanız, bu değer geçerli olur.

Exchange Management Shell (EMS) üzerinden mevcut ayarı görmek için:

Get-TransportConfig | Select-Object MaxSendSize, MaxReceiveSize, MaxRecipientEnvelopeLimit

Çıktıda genellikle değerlerin MB cinsinden gösterildiğini görürsünüz. Bu değerleri değiştirmek için:

Set-TransportConfig -MaxSendSize 25MB -MaxReceiveSize 25MB

Burada dikkat edilmesi gereken nokta şu: MaxSendSize ve MaxReceiveSize değerlerini aynı anda güncellemek daha sağlıklı. Sadece birini değiştirip diğerini atlarsanız, asimetrik bir yapı ortaya çıkar ve bazı senaryolarda mesajlar beklenmedik şekilde reddedilebilir.

Connector Seviyesinde Sınır Ayarı

Receive Connector

Receive connector, Exchange’in dışarıdan veya iç sistemlerden mesaj kabul ettiği noktadır. Bu connector üzerindeki sınır, organizasyon seviyesindeki sınırdan daha düşükse, organizasyon ayarı geçersiz kalır.

Mevcut Receive Connector’ları listelemek için:

Get-ReceiveConnector | Select-Object Name, MaxMessageSize, Server

Belirli bir Receive Connector’ın boyut sınırını güncellemek için:

Set-ReceiveConnector -Identity "MAILSERVERDefault Frontend MAILSERVER" -MaxMessageSize 30MB

Birden fazla sunucunuz varsa ve hepsini aynı anda güncellemek istiyorsanız şu yaklaşımı kullanabilirsiniz:

Get-ReceiveConnector | Where-Object {$_.Name -like "Default*"} | Set-ReceiveConnector -MaxMessageSize 30MB

Bu komut, adı “Default” ile başlayan tüm Receive Connector’ları hedef alır. Üretim ortamında çalıştırmadan önce Get-ReceiveConnector | Where-Object {$_.Name -like "Default*"} ile hangi connector’ların etkileneceğini kontrol etmenizi öneririm.

Send Connector

Send Connector ise Exchange’in dış dünyaya mesaj gönderdiği noktadır. Kullanıcılarınız büyük dosya gönderemiyorsa ve Receive Connector tarafında sıkıntı yoksa, Send Connector’a da bakmanız gerekir.

Get-SendConnector | Select-Object Name, MaxMessageSize
Set-SendConnector -Identity "Internet Send Connector" -MaxMessageSize 30MB

Gerçek bir senaryodan bahsedeyim: Bir müşteride muhasebe departmanı 20 MB’lık Excel dosyalarını tedarikçilere gönderemiyordu. Receive Connector’ı 25 MB’a çıkarmıştık, organizasyon ayarı da 25 MB’dı. Ama Send Connector 10 MB’da kalmıştı. Aylar önce başka bir teknisyen Receive Connector’ı güncellemiş, Send Connector’ı atlamamış. Basit ama sinir bozucu bir durum.

Kullanıcı ve Posta Kutusu Seviyesinde Sınır

Bazı durumlarda genel sınırları yüksek tutup belirli kullanıcılara özel sınırlar tanımlamak daha doğru olur. Örneğin genel müdürün veya satış müdürünün büyük dosya göndermesi gerekiyorsa, herkes için sınırı yükseltmek yerine sadece ilgili kullanıcılara özel kural oluşturabilirsiniz.

Belirli bir kullanıcının mevcut posta kutusu sınırlarını görmek:

Get-Mailbox -Identity "ahmet.yilmaz" | Select-Object MaxSendSize, MaxReceiveSize

Eğer değer “unlimited” olarak dönüyorsa, o kullanıcı için organizasyon veya connector sınırları geçerlidir. Kullanıcıya özel sınır atamak için:

Set-Mailbox -Identity "ahmet.yilmaz" -MaxSendSize 50MB -MaxReceiveSize 50MB

Toplu güncelleme senaryosu düşünün: Satış departmanındaki herkesin sınırını artırmanız gerekiyor. Bunun için şu yaklaşımı kullanabilirsiniz:

Get-Mailbox -Filter {Department -eq "Satis"} | Set-Mailbox -MaxSendSize 35MB -MaxReceiveSize 35MB

Bu komut Active Directory’deki departman bilgisini kullanarak filtreleme yapıyor. Ancak AD’deki departman bilgilerinin güncel olması şartıyla çalışır. Pratikte bu bilgilerin hep güncel olmadığını söylesem yeri var.

Dağıtım Grubu Sınırları

Dağıtım gruplarına gönderilen mesajlar için de ayrı sınır tanımlanabiliyor. Özellikle “[email protected]” gibi büyük dağıtım listelerine büyük dosya gönderilmesini engellemek için bu özellik çok işe yarıyor.

Get-DistributionGroup -Identity "TumSirket" | Select-Object MaxSendSize, MaxReceiveSize
Set-DistributionGroup -Identity "TumSirket" -MaxSendSize 5MB -MaxReceiveSize 5MB

Bu yapıyı kullanarak şöyle bir senaryo kurabilirsiniz: Genel posta sınırınız 25 MB olsun, ama tüm şirkete gönderilen mesajlar için 5 MB sınırı koyun. Böylece birisi yanlışlıkla 200 kişilik dağıtım listesine 20 MB’lık dosya gönderdiğinde sunucuyu boğmamış olursunuz.

OWA ve IIS Seviyesinde Boyut Sınırı

Bu kısım çoğu zaman gözden kaçıyor ve “her şeyi ayarladım ama OWA’dan büyük dosya yükleyemiyorum” şikayetleri buradan kaynaklanıyor.

OWA üzerinden yapılan dosya yüklemeleri IIS tarafından da sınırlandırılıyor. Bu sınırı web.config dosyasından veya IIS Manager üzerinden ayarlayabilirsiniz.

Exchange 2016 ve 2019 için OWA’nın web.config dosyası şu konumda bulunuyor:

C:Program FilesMicrosoftExchange ServerV15ClientAccessowaweb.config

Bu dosyada maxRequestLength ve maxAllowedContentLength değerlerini güncellemeniz gerekiyor. Değerler sırasıyla KB ve byte cinsinden belirtiliyor.

# Mevcut değerleri kontrol etmek için
Select-String -Path "C:Program FilesMicrosoftExchange ServerV15ClientAccessowaweb.config" -Pattern "maxRequestLength|maxAllowedContentLength"

web.config dosyasında ilgili satırlar şöyle görünüyor:

# maxRequestLength = 35840 (35 MB, KB cinsinden)
# maxAllowedContentLength = 36700160 (35 MB, byte cinsinden)

Bu değerleri 35 MB için ayarlamak istiyorsanız:

  • maxRequestLength: 35840 (35 x 1024)
  • maxAllowedContentLength: 36700160 (35 x 1024 x 1024)

Değişiklik sonrasında IIS’i yeniden başlatmayı unutmayın:

iisreset /noforce

ECP (Exchange Control Panel) için de benzer bir düzenleme gerekiyor. ECP’nin web.config dosyası:

C:Program FilesMicrosoftExchange ServerV15ClientAccessecpweb.config

Bu dosyada da aynı değerleri güncellemeniz gerekiyor.

Exchange 2019 ile PowerShell Script ile Toplu Yapılandırma

Tüm bu ayarları tek tek yapmak yerine, yeni bir Exchange kurulumunda veya mevcut bir ortamda standart bir boyut sınırı uygulamak için şu script’i kullanabilirsiniz:

# Exchange Mesaj Boyutu Siniri Yapilandirma Script'i
# Tum degerleri 25MB olarak ayarlar

$SizeLimit = "25MB"
$SizeLimitBytes = 26214400  # 25MB byte cinsinden

Write-Host "Organizasyon seviyesi ayarlaniyor..." -ForegroundColor Yellow
Set-TransportConfig -MaxSendSize $SizeLimit -MaxReceiveSize $SizeLimit

Write-Host "Receive Connector'lar ayarlaniyor..." -ForegroundColor Yellow
Get-ReceiveConnector | Set-ReceiveConnector -MaxMessageSize $SizeLimit

Write-Host "Send Connector'lar ayarlaniyor..." -ForegroundColor Yellow
Get-SendConnector | Set-SendConnector -MaxMessageSize $SizeLimit

Write-Host "Tum ayarlar tamamlandi." -ForegroundColor Green

# Sonuclari dogrula
Write-Host "`nDogrulama:" -ForegroundColor Cyan
Get-TransportConfig | Select-Object MaxSendSize, MaxReceiveSize
Get-ReceiveConnector | Select-Object Name, MaxMessageSize
Get-SendConnector | Select-Object Name, MaxMessageSize

Bu script’i çalıştırmadan önce test ortamında denemenizi ve üretim ortamında değişiklik öncesi mevcut değerleri yedeklemenizi öneririm.

Ayarların Doğrulanması ve Test Edilmesi

Değişiklikleri yaptıktan sonra doğrulama yapmak kritik. Transport servisi yeniden başlatılmadan bazı değişiklikler geçerli olmayabiliyor.

# Microsoft Exchange Transport servisini yeniden baslat
Restart-Service MSExchangeTransport

# Ayarlarin gecerli olup olmadigini kontrol et
Get-TransportConfig | Format-List MaxSendSize, MaxReceiveSize, MaxRecipientEnvelopeLimit

Test için Telnet veya PowerShell ile basit bir bağlantı testi yapabilirsiniz. Ama en pratik yöntem, farklı boyutlarda test mesajları göndermek. Bunun için şu basit script’i kullanabilirsiniz:

# Test amaçli belirli boyutta ek olustur
$FilePath = "C:Temptest_dosya.bin"
$FileSizeMB = 20
$FileSize = $FileSizeMB * 1MB

$Bytes = New-Object Byte[] $FileSize
(New-Object Random).NextBytes($Bytes)
[System.IO.File]::WriteAllBytes($FilePath, $Bytes)

Write-Host "$FileSizeMB MB boyutunda test dosyasi olusturuldu: $FilePath" -ForegroundColor Green

Bu dosyayı farklı istemcilerden (OWA, Outlook, mobil) göndererek sonuçları gözlemleyebilirsiniz.

Sık Yapılan Hatalar ve Pratik Notlar

Yıllar içinde karşılaştığım bazı tipik hataları paylaşayım:

  • Sadece organizasyon seviyesini güncellemek: Connector’ları atlamak en yaygın hata. Organizasyonu 50 MB yaptınız ama Receive Connector 10 MB’da kaldı, mesajlar yine gelmez.
  • Byte ve MB karışıklığı: Bazı parametreler MB kabul ederken bazıları byte bekliyor. PowerShell’de “25MB” yazdığınızda otomatik dönüşüm yapılıyor, ama web.config gibi dosyalarda manuel hesaplama gerekiyor.
  • IIS ayarını unutmak: OWA şikayetleri çoğunlukla buradan kaynaklanıyor. Transport servisi ayarlarını yaptınız, IIS’i atladınız, OWA’dan gönderim hala çalışmıyor.
  • Transport servisini yeniden başlatmamak: Bazı değişiklikler servis yeniden başlatılmadan geçerli olmuyor. Özellikle yoğun saatlerde bu adımı atlamak isteyebilirsiniz, ama değişiklikler uygulanmaz.
  • Sınırı sonsuz yapmak: “Unlimited” yapmak kısa vadede işe yarıyor gibi görünse de, sunucu kaynaklarını tüketen büyük mesajlar nedeniyle ciddi performans sorunlarına yol açabilir. Makul bir üst sınır belirleyin.
  • Exchange Online Hybrid durumunda: Hybrid ortamlarda on-premises ayarlarıyla birlikte Exchange Online’daki connector ayarlarına da bakmak gerekiyor. On-premises tarafı 50 MB kabul etse bile Exchange Online 25 MB ile sınırlı.

Exchange Online Hybrid Ortamlar İçin Notlar

Hybrid ortam kullanıyorsanız, Exchange Online Connector sınırlarını da göz önünde bulundurmanız gerekiyor. Exchange Online tarafında mesaj boyutu sınırı Microsoft tarafından kontrol ediliyor ve şu anda 150 MB (base64 encoding öncesi yaklaşık 112 MB) olarak belirlenmiş durumda. Ancak on-premises ile Exchange Online arasındaki trafik için farklı connector’lar kullanıldığından, her iki taraftaki ayarların uyumlu olması gerekiyor.

Hybrid ortamda on-premises Receive Connector’larınızın Exchange Online’dan gelen trafiği destekleyecek şekilde yapılandırıldığını kontrol edin:

# Exchange Online'dan gelen trafiği isleyen connector'i bul
Get-ReceiveConnector | Where-Object {$_.TlsDomainCapabilities -like "*mail.protection.outlook.com*"} | Select-Object Name, MaxMessageSize, TlsDomainCapabilities

Sonuç

Exchange Server’da mesaj boyutu sınırı ayarlamak, ilk bakışta basit görünen ama ince detayları olan bir konu. Organizasyon, connector, posta kutusu ve IIS katmanlarının hepsinin tutarlı şekilde yapılandırılması gerekiyor. Herhangi bir katmanı atladığınızda, kullanıcılar “mesaj gönderilemiyor” hatası almaya devam ediyor.

En iyi yaklaşım, değişiklik yapmadan önce tüm mevcut ayarları kayıt altına almak ve değişiklik sonrasında her katmanı ayrı ayrı doğrulamak. Yukarıda paylaştığım script ve komutlar bu süreci hızlandıracaktır. Ayrıca değişiklikleri yoğun olmayan saatlerde, tercihen planlı bakım pencerelerinde yapmanızı tavsiye ederim; Transport servisinin yeniden başlatılması aktif bağlantıları kesebilir.

Sınır değerini belirlerken kuruluşunuzun ihtiyaçlarını ve sunucu kapasitesini birlikte değerlendirin. 150 MB sınır koymak teknik olarak mümkün, ama her gün onlarca kullanıcı bu boyutta dosya gönderirse depolama ve bant genişliği konusunda ciddi sorunlarla karşılaşabilirsiniz. Makul bir sınır, iyi bir alternatif dosya paylaşım çözümüyle (SharePoint, Teams) desteklendiğinde en verimli yaklaşım olacaktır.

Bir yanıt yazın

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