1. Giriş
Exchange Server, Microsoft’un en yaygın kullanılan kurumsal e-posta sunucusudur. Temel işlevi, kurum içi ve dışı kullanıcılar arasında e-postaların güvenli, hızlı ve kesintisiz bir şekilde iletilmesini sağlamaktır. Ancak bazı durumlarda e-postalar gecikebilir, kuyruklarda birikebilir veya hiç teslim edilmeyebilir. Bu rehberde, bu tür sorunların nasıl tespit edileceğini ve çözüleceğini detaylı şekilde öğreneceksiniz.
Hedef Kitle: Sistem yöneticileri, Exchange adminleri, DevOps ve kurumsal IT ekipleri.
2. Exchange Mail Flow Mimarisi
Mail flow’u anlamadan sorun gidermek mümkün değildir. Exchange transport pipeline şu dört temel aşamadan oluşur:
- Submission (Gönderim): İletinin sunucuya ulaşması. Outlook, OWA veya SMTP üzerinden olabilir.
- Categorizer (Kategorize): İletinin alıcısına göre işlenmesi, spam kontrolleri, transport rule uygulamaları.
- Routing (Yönlendirme): İletinin hangi sunucuya/bağlantıya gönderileceğinin belirlenmesi.
- Delivery (Teslim): İletinin hedef posta kutusuna veya uzak sunucuya teslim edilmesi.
Her aşama için ayrı log’lar ve kontrol noktaları vardır.
3. Önkoşullar
Mail flow sorunlarını gidermeye başlamadan önce şu ön koşullar sağlanmalıdır:
- Exchange Management Shell erişimi
- Admin yetkisine sahip hesap
- DNS ve firewall erişim izinleri
- SMTP portu (25), submission portu (587) açık olmalı
- Event Viewer’a erişim
4. Temel Sorun Giderme Komutları
Aşağıda Exchange Server üzerinde mail flow sorunlarını teşhis etmek için kullanılan en önemli PowerShell komutlarını bulacaksınız.
4.1 Kuyruk Durumunu Kontrol Etme
Get-Queue
- Kuyrukta bekleyen iletileri listeler.
- Önemli alanlar:
MessageCount,Status,NextHopDomain.
Örnek çıktı:
Identity DeliveryType Status MessageCount NextHopDomain
-------- ------------ ------ ------------ -------------
EXCH1 DnsConnector Ready 125 mail.contoso.com
Eğer
MessageCountçok yüksekse, iletiler teslim edilemiyor demektir.
4.2 Mesaj Kuyruğu Detayı
Get-Queue | Select Identity, Status, MessageCount, LastError
Bu komut ile kuyruktaki hataların ayrıntılarını görebilirsiniz.
4.3 Mesaj İzleme (Message Tracking)
Get-MessageTrackingLog -Recipients user@contoso.com -Start "09/01/2025 00:00:00" -End "09/05/2025 23:59:59"
- Bir kullanıcının belirli tarihler arasında gönderdiği/alıcı olduğu mailleri izler.
EventIdalanı, mailin hangi aşamada olduğunu gösterir (RECEIVE, DELIVER, SEND, FAIL).
4.4 Mail Flow Testi
Test-Mailflow -TargetMailboxServer EXCH1
Bu komut, Exchange sunucuları arasında test e-postası gönderir ve teslim sürelerini ölçer.
4.5 Connector Kontrolleri
Tüm receive connector’leri listelemek:
Get-ReceiveConnector | Format-Table Name, Bindings, RemoteIPRanges
Send connector’leri listelemek:
Get-SendConnector | Format-Table Name, AddressSpaces, SmartHosts
4.6 Transport Servisi Yeniden Başlatma
Restart-Service MSExchangeTransport
Birçok durumda kuyruk sorunlarını çözmek için transport servisini yeniden başlatmak yeterlidir.
5. Log İnceleme
Exchange’te mail flow sorunlarını anlamak için log dosyaları kritik öneme sahiptir.
5.1 Message Tracking Logs
Konum:
C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs\MessageTracking
Arama örneği:
Get-MessageTrackingLog -MessageSubject "Test" -Start (Get-Date).AddHours(-1)
5.2 Protocol Logs
SMTP bağlantı sorunlarını görmek için:
- Receive Connector Logs: Gelen mailleri izler.
- Send Connector Logs: Giden bağlantıları izler.
Aktivasyon için:
Set-TransportService EXCH1 -ReceiveProtocolLogEnabled $true -SendProtocolLogEnabled $true
5.3 Event Viewer
Event Viewer → Applications and Services Logs → MSExchangeTransport
Burada kritik hata kodlarını görebilirsiniz. Örneğin:
- 4206: DNS Lookup Failed
- 2213: Database is offline
6. Tipik Sorun Senaryoları ve Çözümler
6.1 DNS Sorunları
Belirti: 421 4.4.0 DNS query failed
Çözüm:
nslookup mail.contoso.com
DNS çözümlemesi doğru yapılmıyorsa DNS Client ve Exchange Transport servislerini kontrol edin.
6.2 SMTP Portu Kapalı
Belirti: Mailler kuyrukta birikiyor, “Connection timed out” hatası.
Çözüm: Firewall üzerinde TCP 25’i açın.
Test:
Test-NetConnection mail.contoso.com -Port 25
6.3 TLS/SSL Sorunları
Belirti: “TLS negotiation failed” loglarda gözükür.
Çözüm: Sertifikanın geçerli olduğunu kontrol edin.
Get-ExchangeCertificate | Format-Table Thumbprint, NotAfter, Services
6.4 Anti-Spam/Blacklist Sorunları
Belirti: Karşı taraf “550 5.7.1 Relaying denied” döner.
Çözüm: IP adresinizin blacklist’te olup olmadığını kontrol edin.
nslookup zen.spamhaus.org
6.5 Database Offline
Belirti: Mailler teslim edilmiyor.
Çözüm:
Get-MailboxDatabase -Status | Format-Table Name, Mounted
Mount-Database "Mailbox Database 1"
6.6 Connector Konfigürasyon Hatası
Belirti: Belirli domainlere mail gitmiyor.
Çözüm:
Set-SendConnector "Internet Send" -AddressSpaces "smtp:contoso.com;1"
7. İleri Düzey Analiz
7.1 Performance Monitor
Counter’lar:
- MSExchangeTransport Queues: Active Remote Delivery Queue Length
- SMTP Send Queue Size
7.2 Queue Viewer
Exchange Toolbox → Queue Viewer ile GUI üzerinden kuyrukları inceleyebilirsiniz.
7.3 Network Capture
SMTP trafiğini analiz etmek için Wireshark kullanılabilir.
Filtre:
tcp.port == 25
8. Best Practices
- Düzenli olarak
Test-Mailflowçalıştırın. - Kuyruklar için threshold belirleyip alert mekanizması kurun.
- DNS kayıtlarınızı (A, MX, PTR, SPF) doğru yapılandırın.
- Yedek send connector ekleyin (secondary MX).
- TLS sertifikalarını otomatik yenileyin.
9. Sonuç
Bu rehberde Exchange Server üzerinde mail flow sorunlarını teşhis ve çözüm için kullanılan yöntemleri, komutları ve tipik senaryoları detaylı şekilde inceledik. Adım adım ilerleyerek:
- Kuyrukları analiz ettiniz.
- Mesaj tracking loglarını incelediniz.
- DNS, SMTP, TLS sorunlarını çözmeyi öğrendiniz.
- Event Viewer ve protocol loglarını nasıl okuyacağınızı gördünüz.
10. Sonraki Adımlar
- Exchange Hybrid ortamlarında Office 365 mail flow sorunlarını ele almak.
- Spam/anti-malware entegrasyonlarını izlemek.
- Transport rule ve DLP politikalarının mail flow üzerindeki etkilerini analiz etmek.