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.
