Exchange Server 2013 Çalışma Mantığı

Makaleyi Paylaş

Exchange Server 2013 de hem arka planda çalışan servislerde hem de arayüzde birçok yenilik ve değişiklik söz konusu. Exhange 2010 ve öncesinde bulunan Exchange Management Console artık yok. Artık yönetim web tabanlı arayüz üzerinden yapılıyor. (https://sunucu-adı/ecp)

Exchange 2010 da bulunan ve 5 adet olan roller (hub transport, client access, mailbox role, unified messaging, edge transport) Microsoft tarafından 2 ye düşürülmüş durumda (Mailbox Server ve Client Access Server). Bu şekilde hem yönetim kolaylığı hem de donanım maliyetlerinden ve donanım kaynaklı problemlerden kaçınılması hedeflenmiş.

Exchange Server 2013 Çalışma Mantığı

Mailbox Server Role: Client access protokollerini, hub transport servisini, Mailbox database lerini ve unified messaging i içerir. Aynı zamanda açılan mailbox taki tüm aktiviteleri handle eder.

Client Access Server Role: Authentication, Redirection ve Proxy servislerini içerir. Herhangi bir data render işlemi yapmaz. Herhangi bir mail queue su içermez ve mail datası bu role de store edilmez.
Kullanıcı erişim protokollerini sağlar Örneğin: SMTP, IMAP, HTTP(Web servisleri, Outlook Anywhere, ActiveSync) ve POP. (MAPI hariç. Mapi connectionları RPC over HTTPS tarafından encapsulate edilir.)

Mail Gateway hizmeti sağlayan Edge Server Exhange 2013 de bulunmuyor çünkü bu hizmet artık Client Access Server tarafından sağlanıyor. Fakat Exchange 2007/2010 Edge server larımızı istersek Exchange Server 2013 ile birlikte kullanabiliyoruz.

Yeni mimaride birçok farklılıklar bulunuyor. Client Access Server ve Mailbox Server Role leri önceki Exchange versiyonlarında olduğu kadar birbirlerine bağlı değiller çünkü mailbox lar için tüm işlemler ilgili mailbox ın aktif veritabanı kopyasının bulunduğu Mailbox Server Role üzerinde oluşuyor. Data transforming ve data rendering işlemleri de yine Mailbox Server Role üzerinde gerçekleştiriliyor.

Exchange_Server_2013_Pipeline_Semasi

Transport Pipeline
Transport Pipeline: Servislerin, connectionların, componentlerin ve mail kuyruğunun bir maili iletmek için birlikte çalıştığı bir koleksiyon.
Exchange 2013 transport pipeline 3 farklı servisten oluşur.

Front End Transport Service: Tüm Client Access Server larda çalışır. İçeri ve dışarı doğru olan tüm external smtp trafiğinde bir proxy gibi davranır. Temel seviyede message filtering gerçekleştirir ancak bunu mesajın içeriğine bakarak değil de, göndericiye, alıcıya, domaine vs. bakarak yapar. Sadece Mailbox Server üzerindeki Tansport servisi ile haberleşir ve herhangi bir mesajı kuyruklamaz.

Transport Service: Tüm Mailbox Server larda çalışır. Önceki Exchange Serverlarda bulunan Hub Transport Rolü gibidir. Organizasyondaki SMTP Mail akışını, mesaj içerik tarama (content inspection), filtreleme ve kategorize etme işlerini gerçekleştirir. Önceki Exchange lerden farklı olarak Transport Servisi, artık Mailbox Transport Servisi tarafından handle edilen mailbox database i ile direkt olarak iletişim kurmaz. Transport Servisi, mesajları Mailbox Transport Servisi, Transport Servisi ve Frond End Transport Servisi arasında yönlendirir. Bu servis, mesajları kendi lokalinde kuyruklar.

Mailbox Transport Service: Bu servis te tüm Mailbox Server lar üzerinde çalışır ve 2 servisten oluşur ve bu servis te lokalinde herhangi bir mail kuyruklama yapmaz.

  1.  Mailbox Transport Delivery Service: Transport servisinden SMTP mesajlarını alır ve Exchange Remote Procedure Call (RPC) protokolünü kullanarak Mailbox Database ine bağlanıp mesajı iletir.
  2.  Mailbox Transport Submission Service: RPC protokolü ile mailbox database ine bağlanır ve mesajları alır ve SMTP üzerinden onları Transport Servisine gönderir.

Edge rolüne sahip olmayan Exchange 2013 de, internet üzerinden alınan veya gönderilen mailler 3rd party E-mail Gatewayleri veya Exchange 2010/2007 Edge üzerinden gönderilebilir. Veya Microsoft un 2013 için önerdiği üzere Client Access Server üzerinden gönderilebilir. Bu son senaryoda e-postalar Exchange Organizasyonuna Front End Transport Servisi içindeki receive connector üzerinden alınır ve Mailbox Serverdaki Transport servisine yönlendirilir.

E-postalar Mailbox Server üzerindeki Transport Servisine şu 4 yoldan ulaşabilir:

  1. Receive Connector üzerinden
  2. Replay Directory ler üzerinden (artık mailbox serverlar üzerindeki Transport Servisinde bulunuyor)
  3. Mailbox Transport Servisi üzerinden
  4. Agent submission üzerinden

Yukarıdaki şemadan Transport Servisinin çalışma mantığını detaylandırmamız gerekiyor. Bu servis aşağıdaki proses ve bileşenlerden oluşuyor:

a. SMTP Receive: Transport Servisi tarafından bir e-mail alındığı zaman, içerik tarama gerçekleştirilir, transport rule ları işlenir, anti spam/anti malware taramaları yapılır (eğer bu özellikler aktif edildilerse). Eğer mail reject edilmezse Smtp Receive tarafından alındıktan sonra Submission Queue (iletim kuyruğu) a koyulur.

b. Submission Queue: Resimde de görüleceği üzere Submission Queue ya mailler 3 farklı yoldan gelebilir.

  1. SMTP Receive Connector üzerinden
  2. Pickup Directory, Replay Directory üzerinden
  3. Agent üzerinden

 c. Categorizer: Queue dan aldığı mesajlar üzerinde aşağıdaki adımları gerçekleştirir:

  • Recipient Resolution: Alıcının mail adresi, Exchange organizasyonu içerisinde veya external bir mailbox ı var mı yok mu diye kontrol edilir.
  • Routing Resolation: Alıcıya ilişkin bilgiler çözüldükten (geçerli bir mailbox ının olduğu teyit edildikten) sonra mesaj bir sonraki hedefe yönlendirilir.
  • Content Conversion: Posta istemcisi tarafından okunabilmesi için içerik dönüşüm işlemleri gerçekleştirilir. Örneğin MIME, Plain Text, Html, Rich Text.

 d. Delivery Queue: Mesajlar, kategorize edilmeleri sonrasında mesajın gideceği hedefe göre Delivery Queue a alınırlar. Örneğin Database Availability Group (DAG), Active Directory Site, AD Forest veya Harici domain.

 e. SMTP Send: Alıcının bulunduğu lokasyona göre mesajlar şuralara yönlendirilir:

  •  Aynı mailbox server daki mailbox transport servisine
  •  Aynı DAG yapısına ait farklı mailbox server üzerinde bulunan transport servisine
  •  Farklı DAG,AD Site, AD Forest yapısında bulunan transport servisine
  •  İnternete gönderim için Client Access Server üzerinde bulunan Front End Transport Servisine
     

Transport Agentları

Önceki Exchange sürümlerinde olduğu gibi Transport Agentları, e-posta sunucu yöneticilerinin Exchange sunucu üzerine, transport pipeline dan geçen mesajları işlemek için özel yazılım yüklemesine olanak tanır. Bu yazılım 3rd party veya Microsoft a ait bir yazılım olabilir. Microsoft Exchange, Exchange Transport Agent SDK(software deployment kit)  lar aracılığı ile geliştirilebilir. Bu SDK lar .Net tabanlıdır ve 3rd Party yazılımların SmtpReceiveAgent, RoutingAgent ve DeliveryAgent classlarına implementasyonunu sağlar. SDK kütüphaneleri kullanılarak oluşturulan derlemeler SMTP oturumları veya mesaj işlemede Exchange'de register edilip kullanılır.

Transport Servisi, SDK kütüphanesi içerisinde bulunan tüm önceden tanımlanmış classları destekler. Bunun anlamı Exchange 2010 Hub Transport Server rolü için yazılmış olan bir transport agent ı Exchange 2013 deki Transport Servisinin üzerinde de çalışması demektir.

Bu arada, Front End Transport Servisi sadece StmtpReceiveAgent class ını desteklerken Mailbox Transport Servisi herhangi bir SDK class ını desteklemiyor. Yani Mailbox Transport Servisi içerisinde herhangi bir agent yazılıp kullanılamaz.

Exchange 2013 ön tanımlı transport agent ı ile birlikte geliyor. Bunların çoğu gizli-görünmüyor ve command line üzerinden de yönetilemiyor. Görünüyor olanları aşağıdaki Power Shell komut seti ile inceleyebiliriz.

Get-TransportAgent

Exchange_Server_2013_TransportAgent_1

Exchange_Server_2013_TransportAgent_2

Message Routing İşlemleri
Tüm Mailbox Server Rolüne sahip sunucularda bulunan Transport Servisinin ana görevi mesajları nihai hedeflerine ulaştırmaktır. Yönlendirme kararları Kategorizasyon süreci esnasında uygulanır. Şekilde de görüleceği üzere Categorizer Transport Servisinin bir parçasıdır. Tüm gelen mesajları işler ve mesajların hedeflerine bağlı olarak ne yapacağına karar verir.

Mesaj iletim işlemlerini anlamak için şemayı tekrar göden geçirebiliriz.

Exchange_Server_2013_Pipeline_Semasi

  •  Mailbox Server üzerindeki Transport Servisi mailbox veritabanı ile direkt iletişim kurmaz. Bunun yerine, Mailbox Transport Servisi ile iletişim kurar. Şemada da görüleceği üzere mailbox database ile RPC protokolü üzerinden iletişim kurma işi Mailbox Transport Servisine aittir.
  •  Remote Prosedure Call (RPC): Sadece Mailbox Transport Servisi tarafından kullanılır. Lokal bir mailbox databaseinden mail alım/gönderim işlemi olduğunda kullanılır. Mailbox Transport Server ve Transport server farklı sunucularda iseler aradaki iletişim SMTP üzerinden sağlanır.

Daha önce de açıklandığı üzere Transport Servisi tarafından e-posta alındığında hemen categorize edilmek durumundadır. Önce recipient resolation (alıcı çözümleme işlemi) gerçekleşir. Nihai hedef belirlenir ve sonrasında Exchange bu nihai hedefe en iyi hangi yoldan mesajın teslim edileceğine karar verir. Önceki Exhange sürümlerinde mesajın ulaşacağı son hedefe Routing Destination adı verilmekteydi.

  •  Mailbox Database: Exchange organizasyonunda mailbox ı olan herhangi bir alıcı routing destination olabilir. Artık public folderlar da bir mailbox tipidir. Mesajların public folderlara route edilmesi ile mailbox recipient (alıcılar) a yönlendirilmesi aynı şeydir.
  •  Connector: SMTP mesajları için bu, Send Connector olabilir. non-SMTP mesajlar için ise Delivery Agent Connector ve Foreign Connector kullanılarak mesaj routing yapılır.
  •  Distribution Group Expansion Server: Bir dağıtım grubu, grup üye listesinin büyümesinden sorumlu olacak şekilde dizayn edilmiş spesifik expansion servera sahip olduğunda message routing işlemi seçilen sucuya gerçekleştirilir. (Exchange 2010 da EMC/Recipient Configuration/Distribution Group/Properties/Advanced/Expansion Server)


Exchange Server 2013 deki Dağıtım Grubu:
Her routing hedefi bir veya daha fazla transport server a sahiptir.  Bunlar mesajın hedefe teslim edilmesinden sorumludur. Eğer yönledirilecek hedef bir mailbox database ise, Dağıtım Grubu içerisindeki transport serverlar mailbox database olarak aynı Exchange versiyonuna sahip olmalıdır. Eğer mailin yönlendirileceği hedef bir connector veya distribution group expansion server ise Dağıtım Grubu Exch 2013 Mailbox Servers ve Exchange 2010 Hubb Transport Serverları içerebilir.

Exchange Server 2013' de 5 tip Dağıtım Grubu vardır:

  1. Routable DAG: Dag üyesi olan mailbox serverlar topluluğu. DAG içerisindeki mailbox databaselerinde Dağıtım Grubu tarafından servis edilen hedefler vardır. Mail DAG a ait mailbox server üzerindeki transport servisine ulaştığında Transport servisi mesajı DAG daki Mailbox server üzerinde bulunan ve hedef mailbox ın o anki database kopyasını tutan mailbox transport servisine yönlendirir. Sonra hedef mailbox serverdaki Mailbox transport servisi lokal mailbox database ine mesajı teslim eder. DAG farklı Active Directory Site larında bulunan mailbox serverlar içerebilmesine rağmen DAG teslim grupları sınırlıdır.
  2. Mailbox Dağıtım Grubu: Bir tek AD Site ında bulunan ve aynı versiyona sahip Exchange sunucuları koleksiyonu. Bir mesajın iletilmesi noktasında Exchange 2010 ile Exchange 2013 arasındaki farklar şunlardır:

     

    1. Exchange 2010: Mesaj, hedef Active Directory Site içerisindeki Hub Transport Serverlardan herhangi birine random olarak ulaşır, Transport Serverda bulunan store driver, RPC protokolünü kullanarak mesajı hedef mailbox database ine yazar.
    2. Exchange 2013: Mesaj, hedef Active Directory site da bulunan hedef mailbox server a ulaşır. Transport Servisi SMTP protokolünü kullanarak mesajı Mailbox Transport Servisine iletir. Mailbox transport servisi de RPC protokolü ile mesajı ilgili mailbox database ine teslim eder. (şemayı tekrar inceleyebilirsiniz)
  3. Connector Source Servers: Send connector, Delivery Agent connector veya Foreign connector ün bulunduğu Exchange 2010 Hub Transport Server veya 2013 Mailbox server lar grubu.Bir connector spesifik bir server için tanımlanmış ise, sadece o server mesajı connector tarafından belirlenen hedefe ulaştırabilir. Connector Source Server denen bu grup, farklı AD site larınından Exchange 2010 Hub Transport Sunucular veya Exchange 2013 Mailbox serverlar içerebilir.
  4. AD Site: Bazı durumlarda mesajın nihai hedefi AD Site olmayabilir ancak mesajın nihai hedefe ulaşmadan önce AD Site içerisindeki Exchange 2010 Hub transport veya Exchange 2013 Mailbox Serverlarından geçmesi gerekebilir.
  5. Server List: distribution group expansion servers olarak konfigüre edilmiş Exchange 2010 Hub Transport server veya Exchange 2013 Mailbox serverları.

Son olarak; Örneğin bir DAG üyesi olan Exchange 2013 Mailbox server aynı zamanda Send Connector için Source server görevini üstlenebilir. Mailbox server, DAG içindeki mailbox database leri için Routable DAG dağıtım grubu üyesi olabilirken aynı zamanda da Send Connector için Connector Source Server Dağıtım Grubunda olabilir.

Organizasyona bir mesaj iletildiğinde, mesajın ilgili hedefe en kısa yoldan ulaşması noktasında routing path hesaplanır. Exchange 2013 bu noktada Exchange 2010 ile aynı mantığa sahiptir.

  1. Hedefe ulaşmak için geçilmesi gereken IP site bağlantılarını belirleyip en az maliyete sahip routing path i belirlenir. Eğer hedef bir connector ise, ilgili maliyete bir de hedef connector eklenir. Eğer mesajın teslimi için birden fazla path mümkün görünüyorsa en düşük maliyete sahip routing path seçilir.
  2. Ancak halen aynı maliyete sahip routing pathler söz konusu ise, en az 'hop' a sahip yol tercih edilir. (hop: hedefe giderken uğramak zorunda olduğunuz noktalar)
  3. Hala birden fazla routing path söz konusu ise, hedefe varmadan önceki AD Site name leri dikkate alınır. Alfanümerik olarak 0 dan 9 a ve a dan z ye şeklinde bir sıralama ile ismi ilk sıradaki AD site, hedefe en yakın AD site olarak kabul edilir.

Front End Transport service Routing
Daha önce de belirtildiği gibi bu servis tüm Client Access Server lar üzerinde koşmaktadır. İçeri doğru ve dışarı doğru tüm external SMTP trafiğinde stateless proxy gibi davranır. Dışarı doğru olan mesaj trafiğinde Mailbox Server üzerindeki Transport servisi, Frond End Transport Servisi ile iletişim kurmak için Send Connector leri kullanır. Özellikle dışarı doğru olan mesajlarda, Send Connectorde 'FrontEndProxyEnabled True' şeklinde bir konfigürasyon yapılmış ise proxy gibi davranmaktadır.

——-
Resim
——-
Dışarıdan gelen mesajlar için ise, Front End Transport Servisi mesajı almak için Mailbox Server üzerinde sağlıklı çalışan tek bir Transport Servisi arar. Sonuç olumsuz ise, External gönderici tarafından servis unavailable (erişilemiyor/kullanılamıyor) olarak algılanır ve mesaj kuyruklanmaz. (Daha önce de belirtildiği gibi kuyruklama işlemini Transport Servisi yapar.)

 Front End Transport Servisi, Mailbox database ini bulmak için Active Directory sorguları ile önce recipient (alıcıyı) bulur. (Tabi recipient distribution grup değilse). Sonra tüm mailboxlar için Delivery Group lara bakar (Routable DAG, Mailbox delivery group veya AD site gibi).

Alıcı tipine ve sayısına göre Front End Transport Servisi Mailbox Server ı seçmek için aşağıdaki aksiyonları alır:

  • Mesaj tek bir alıcıya gidecek ise, hedef dağıtım grubunda bulunan hedef mailbox serveri tespit edilir.
  • Mesaj birçok alıcıya sahip ise, en yakın dağıtım grubuna ait mailbox server ı seçmek için ilk 20 alıcıyı kullanır. 
  • Eğer mesaj bir alıcı içermiyorsa AD site içerisinden random olarak bir Mailbox Server seçer.

Message Tracking Logları
Mesajın iletimi esnasında geçirdiği yolculuk serüvenini ve varsa dönen hataları Message Tracking Loglarından görebilmekteyiz. Defaultta 'C:\ProgFiles\Microsoft\Exchange\V14\Transport\MessageTracking\' dizininde bulunmaktadır bu loglar.
Exchange 2010 daki gibi Delivery Reports maili tanımlayarak teslim raporlarını spesifik bir mail adresi üzerinden de takip edebiliriz. 
Message Tracking logları konusunda Exchange 2013 deki farklılık şudur: Artık dedice bir Hub Transport Server rolüne sahip değiliz bu nedenle 'Get-TransportServer' iki yeni komut geldi.

•Get-TransportService komutu ile Mailbox Server üzerinde bulunan Transport Servisini veya Edge transport servisini konfigüre edebiliyoruz.
•Get-MailboxTransportService Mailbox server üzerinde bulunan Mailbox Transport servisini konfigüre ediyoruz

About Emre BAŞTUĞ

Emre BAŞTUĞ