Welcome to TechNet Blogs Sign in | Join | Help
Exchange 2007 service pack 2’nin getirdiği audit özellikleri

 

Audit güvenlik ihtiyaçları nedeniyle giderek artan bir oranda ihtiyaç haline geliyor. Bu anlamda exchange server üzerinde bulunan mailbox'ların güvenliği ve izlenmeside önemli.

 

Kim kimin adına mail gönderebiliyor, kimler kimlerin maillerini görebiliyor vb sorular giderek daha sık sorulmaya başlandı. 

 

Exchange 2007 service pack 2 ile yeni auditing özellikleri gelmektedir. Bu özellikler ile exchange auditing eksikliğini gidermiş oluyor ve böylece store içerindeki hareketi loglayabiliyoruz.

 

Yeni diyebileceğimiz audit'i kısaca dört başlık altında toplayabiliriz.

 

Folder Access --- Herhangi bir folder’a erişim durumunda

Message Access --- Bir mesajın açılması durumunda

Extended Send As --- Mailbox enabled user’ın mesaj göndermesi durumunda

Extended Send On Behalf Of --- Mailbox enabled user için On Behalf Of kullanımı durmunda

 

Loglama sağlamaktadırlar..

 

 

Bu loglar için yeni bir event log tipi oluşturuyoruz ve logları "Exchange Auditing" adlı event log biriminde biriktiriyoruz. Tabi butip eventlerin sayısı çok fazla olabileceği ve bu veriler kaybedilmek istenmeyeceği için ihtiyaçlarımıza göre özellikle event file büyüklüğüne dikkat etmek gerek.

 

Aşağıda 4 değişik eventten birer örnek ve kısa açıklamalar var.

 

Folder Access:

 

Event ID 10100 Veli Ali’nin Outbox’ını açmış. Her folder için ayrı ayrı event düşürülebildiğinden çok net olarak erişimin nereye yapıldığını anlayabiliyoruz.

 

Böylece eski 1016 eski tip event arayışına gerek kalmıyor.

 

folder access

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Message Access:

 

Veli Ali’nin mailbox’ındaki 30***EAD@e2k7-dc.e12.local message id’li mesajı ADI ve IP’si belirli client’tan outlook.exe’yi açmış.

 

Not: Mesaj silmeler özel bir event ile takip edilmez sadece access event’i yazılır.

 

 

Message Access 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Send As:

 

Aşağıdaki eventte Veli, Ali adına mail göndermiş yine client adı,ip’si ve message ID net olarak anlaşılıyor.

 

Hangi mesajı gönderdiğini hangi client’ı kullandığını ve ip’sinin o anda ne olduğunu yine event’ten ek olarak edinebiliyoruz.

 

 

Send As 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Send On Behalf Of:

 

Veli Ali adına yetkili kılınmış ancak send-as değil send on behalf. Bunuda aşağıdaki event’ten anlıyoruz.

 

 

Send on Behalf of 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Service Pack 2 release edildi.

Download:

http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=4c4bd2a3-5e50-42b0-8bbb-2cc9afe3216a 

 

Release Notes:

http://www.microsoft.com/downloads/details.aspx?FamilyID=ee7829a3-0ae8-44de-822c-908cd1034523&displaylang=en

 

Kubilay 

Exchange Server 2007 SP1 Update Rollup 9 özellikleri

Bildiğiniz gibi Exchange Server ailesinde, servis pack’ler yayınlanana kadar bulunan sorunların düzeltilmelerini içeren güncellemeler çıkarılmaktadır. Bunlar Update Rollup olarak bilinir.
Ağustos 2009 itibariyle, Exchange Server 2007 için en son güncelleme paketi Update Rollup 9’dur (KB 970162). Önümüzdeki 1 -2 ay içerisinde Exchange Server 2007 Service Pack 2’nin çıkarılması planlanmaktadır. Bu makalede Update Rollup 9 ile ilgili giderilen sorunları, ilgili KB makalesinide referans göstererek detaylı olarak açıklıyor olacağız.


Giderilen Problemler:
1- Messaging Records Management özelliğininin kullanılması ve yönetimli klasörlerin (Managed Folders) kullanımında bir saklama sınırı belirtilmesi durumda, eğer mailbox taşınır ise yönetimli olan klasörlerin özellikleri kaybolur (Yani managed folder olmaktan çıkar). Bununla ilgili olarak detaylı bilgi  http://support.microsoft.com/?kbid=969911 linkinde bulunmaktadır.
2- Bilindiği gibi hergün Exchange veritabanlarının online maintenance denilen işlemden geçmeleri gerekmektedir. Çoğu durumda bu işlemin sistemin en az kullanıldığı gece saatlerinde yapılır ve bu da bazen backup işlemi ile çakışır. Belirli şartlarda online maintenance sürerken eğer scheduled bir backup işlemi kesilir ise, information store gelen isteklere cevap vermeyebilir. Bununla ilgili olarak ta detaylı bilgi  http://support.microsoft.com/?kbid=968621 linkinde bulunmaktadır.
3- Eseutil ile transaction logların doğrulaması /k parametresi ile yapılmaktadır. Eğer transaction logların sayısı çok fazla ise bu doğrulama işlemi uzun sürer. Yaklaşık olarak 10000 transaction log için doğrulama işlemi 10 dk sürerken, 20000 log için bu süre 30 dakika civarındadır. Bu süre exponansiyel olarak artmaktadır. Bu güncelleme ile birlikte bu işlemin performansı daha iyi seviyelere çekilmiştir. Bu konu ile ilgili detaylı bilgi  http://support.microsoft.com/?kbid=945877 bu makalede bulunmaktadır.
4- Exchange Server 2007, Windows Server 2008 R2 üzerine kurulması desteklenmemektedir. Bununla birlikte, bu fix ile ortamda Windows Server 2008 R2 etki alanı denetleyicisi bulunmasına imkan sağlanmıştır.
5- Faklı Active Directory siteleri bulunan yapılarda, Client Access Sunucularına ayrı ayrı internet’ten erişim vermek yerine, sadece bir tanesine verilip ardından bu CAS sunucusundan diğer CAS sunucularına erişim sağlanması yöntemi CAS-CAS proxy olarak bilinir. Eğer bu şekilde bir yapıda, kullanıcılar Outlook Web Access üzerinde “This is a public or shared computer” yada “This is a private computer” seçeneklerinden birisini seçerler ise, bu seçenek CAS sunucular arasında geçişte geçerli kalmaz. Bununla ilgili IT yöneticilerine logon olma ile ilgili seçenek bu fix ile sağlanmıştır. Bu konu ile ilgili detaylı bilgiye  http://support.microsoft.com/?kbid=968715 bu linkten erişilebilir.
KB970162’de (http://support.microsoft.com/?kbid=970162) Update Rollup 9 ile düzeltilen tüm diğer problemleri bulabilirsiniz. Ayrıca Exchange Server 2007 Service Pack 2’de bu Rollup paketi ve önceki Rollup paketlerindeki tüm sorunların güncellemeleri bulunacaktır.

Volkan Günaydın

Exchange 2007 autodiscover servisi - 1

Autodiscovery servisi outlook 2007 client'lar için otomatik profile konfigürasyonu ve offline address book gibi client bağlantılarında ihtiyaç duyulan ek URL'leri sağlayan servisin adıdır. Bir windows servisi olarak çalışmaz ancak Client Access Server (CAS) rolünün bir alt fonksiyonu olarak exchange 2007 ile birlikte gelir.

Exchange 2007 kurulduğunda self signed sertifika edinir. Bu nedenle autodiscover dış bağlantıda çalışmaz ve exchange üzerinde ek konfigürasyona ihtiyaç duyulur. İç networkten ise kurulum sonrasında küçük eksiklikler ile de olsa genellikle çalışacaktır. Bunun nedeni şirket içi bağlantılarda autodiscover erişiminin Service Connection Point (SCP) üzerinden yapılabilmesidir.

Dış bağlantının doğru biçimde çalışabilmesi için tıpkı Outlook Anywhere'de olduğu gibi sertifika hatasının hiçbir şekilde bulunmaması gerekir. Bu nedenle CAS server'lara doğru biçimde internal yada external CA 'den alınmış sertifikalar kurulmalıdır. Sertifikaların trusted bir publisher'dan sağlanması, isminin doğru olması ve tarih aralığının geçerli olması zorunlu kurallardır. Bunlardan özellikle isimlendirme genellikle karşımıza çıkan temel hata olarak kendini gösteriyor. Örneğin; contoso.com autodiscover servisini kullanmak istesin. Bu durumda contoso.com sertifikasının en azından contoso.com yada autodiscover.contoso.com adınıda subject yada subject alternative name olarak içermesi gerekiyor.

Sertifikanın subject alternative name kısmının içermesi gereken / önerilen temel örnek isimler şunlardır;

webmail.contoso.com -----------> owa erişimi için gereken isim.

contoso.com -----> zorunlu değildir, autodiscover için kullanılabilir.

autodiscover.contoso.com -----> autodiscover servisi için gerekli ve zorunlu eğer contoso.com adı yoksa...

smtp.contoso.com ----> zorunlu değil, eğer Transport servisi farklı bir IP'den ve TLS tabanlı hizmet verecekse (HUB transport özellikle aynı server'da hizmet veriyorsa ve TLS kullanılacaksa düşünülmeli)

pop.contoso.com ----> zorunlu değil, eğer pop bağlantı için özel bir CAS kullanılacaksa

imap.contoso.com ----> zorunlu değil, eğer imap bağlantı için özel bir CAS kullanılacaksa

casservername ----> zorunlu değil eklenebilir netbios name

casservername2 ----> zorunlu değil eklenebilir netbios name

casservername.contoso.local ---> Internal OAB vb. bağlantılarda gereken iç isim

casservername2.contoso.local -----> Internal OAB vb. bağlantılarda gereken iç isim

Not: Birçok sertifika sağlayıcı 40 ismi tek bir sertifikada verebiliyor. Zaman içerisinde bu sertifikaları yenisini almadan update ederek yeni isim ekleyebiliyoruz. Eğer isimlendirme çok karışık bir durum ortaya çıkarıyorsa veya bizim için problem oluyorsa (internal name registered değilse ve başka bir sahibi varsa ) " * " wildcard sertifikayıda gözardı etmemeliyiz.  Örneğin; *.contoso.com gibi tek bir isim işimizi görecektir.

Bu isimlerden özellikle autodiscover.contoso.com ismi üzerinde durmak gerekiyor. By default outlook 2007 açıldığında active directory üzerinden connection (SCP) sağlayarak autodiscover URL bilgisini bulur..

SCP

 

 

 

 

 

 

 

 

 

 

Fakat şirket dışında yada active directory bağlantısı olmayan / sağlanamayan durumlarda outlook ikinci denemeyi autodiscover.contoso.com olarak yapacak ve böylece servis bilgilerini edinecektir. (autodiscover adı değiştirilebilir) Bu durum aşağıdaki figür ile temsil ediliyor...

 autodiscover

 

 

 

 

 

 

 

 

 

 

Outlook 2007 açıldığında aşağıdaki URL'leri sırası ile deneyecektir...

https://contoso.com/autodiscover/autodiscover.xml

https://autodiscover.contoso.com/autodiscover/autodiscover.xml

Not: SCP exchange'e özel bir kavram değildir. İstenildiğinde özel uygulamalar için SCP kayıtları oluşturulabilir. Active directory'de ilgili server objesinde yeralır.

http://msdn.microsoft.com/en-us/library/ms677638(VS.85).aspx

Yukarıdanda anlaşıldığı üzere https gerekli ve zorunlu, bu nedenle dorğu sertifikayı edinmeliyiz. Bunun için exchange client access server (CAS) üzerinde aşağıdaki adımları atarak işe başlayabiliriz.

 1- İlk adımımız sertifika isteğini oluşturmak olmalıdır. Bunun için aşağıdaki işlem yapılmalı ve New-ExchangeCertificate komutu kullanılmalıdır.

new-exchangecertificate 

 

 

 

 

 

Bu işlem ile local sertifika store'da ilgili istek oluşur ve buna bağlı bir dosyada diske yazılır. İlgili istek dosyası C:\certREQ.txt dosysıdır. Yukarıdaki komutta -domainname ile tüm adlar belirtilmelidir. PrivateKeyExportable true dşye belirtilmeli böylece sertifkanın server'lar arasında export edilerek taşınabilmesine izin verilmelidir.Ayrıca bazı uygulamalar (özelikle mobile) subjectname'de geçen adın public URL olmasını zorunlu tutarlar. Bu nedenle CN=webmail.corpnet.com kullanılmıştır.

Yukarıdaki komut sadece sertifika isteğini oluşturmamızı sağlıyor, sertifika almış olmuyoruz.

2- İkinci adım olarak bu dosyayı (c:\certREQ.txt) sertifika sağlayıcımıza göndererek sertifikamızı ediniyoruz. Aşağıda kendi sertifika sunucumuzdan sertifka edinme adımlarını yazmaya çalıştım.

I. İlgili istek dosyasını sertifika sunucumuza kopyalıyoruz.

II. http://CAserver/certsrv ile sertifka sunucumuza bağlanıyoruz.

III. "Select a certificate" seçeneğini kullanarak, "Advanced certificate request" 'i seçiyoruz.

IV. "Submit a certificate request..." seçilir.

V. Request file içeriği "Saved request" alanına kopyalanır ve "Web Server" sertifika template olarak seçilir.

VI. Submit butonuna tıklanarak sertifika isteği girilimiş olunur.

VII. Sertifika save edilerek CAS server'lara taşınır.

Not: Yukarıdaki işlemler ile elde edilecek .P7B uzantılı dosya isteğin yapıldığı makinaya import edildikten sonra private key exportable olarak görülecektir.

Not: Import işlemi için enaz CAS,HUB yada UM rolü ilgili makinada yüklü olmalıdır.

3- İlgili sertifikayı exchange server'a kopyaladık ve sıra import işine geldi. Bunun için aşağıdaki komut çalıştırılır.

Import-ExchangeCertificate

 

 

 

 

 Import işlemi sonrasında private key'in exportable olduğu aşağıdaki sertifikanın anahtar resminden anlaşılabilir.

Sertifika store

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4- Artık sıra ilgili sertifikayı Enable etmeye geldi. Bunun için Enable-ExchangeCertificate komutunu kullanmalıyız. Enable ile hangi servisler için ilgili sertifikanın etkin olacağını belirtebiliriz. Bunlar kısaca SMTP,IMAP,POP3,UM ve IIS olabilir.

Enable-ExchangeCertificate

 

 

Eğer IIS için import ettiysek ilgili sertifika IIS içerisinden de görülebilicektir.

 Default Web Site ve Sertifikası

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Tüm bu işlemlerden sonra bir "IISRESET /noforce" yapmak faydalı olacaktır.

Bir sonraki makalede gerekli url set değişikliklerine değineceğim.

Kubilay

Exchange Server 2007 Autodiscover servisine özet bir bakış

Exchange Server 2007 ile birlikte gelen önemli özelliklerden biriside Autodiscover servisidir. Bu servisin amacı, client’ın otomatik olarak tüm ayarlarının sağlanmasıdır. Bu özelliğin çalışması için Microsoft Office Outlook 2007 versiyonu gerekmektedir. Autodiscover servisi, e-mail adress ve password kullanımı ile client’a, iç ağdan ve dış ağdan yapılacak bağlantılarda gerekli bağlantı adreslerini (oab,ews vb..), kullanıcı mailbox bilgisini ve outlook anywhere ayarlarını gönderir.

Tüm bu özellikleri sağlayan Exchange Server 2007 rolü, Client Access Server (CAS) rolüdür. CAS server ilk kurulduğunda, IIS üzerindeki default web site içerisinde, Autodiscover adında bir virtual directory oluşur. Ayrıca,  Service Connection Point (SCP) adında bir de Active Directory objeside, CAS server kurulumu ile birlikte gelir. Bu SCP objesi, forest bazında tüm yetkili Autodiscover service URL’lerini içerir.

Autodiscover servisi kendine gelen istekleri Outlook Provider’a gönderir. Outlook Provider üzerinde 3 konfigurasyon ayarı bulunmaktadır. Bunlar,

WEB: Bu ayar, kullanıcının Outlook Web Access için kullanacağı en iyi URL’yi içerir.

EXCH: Exchange RPC protokolünün referans ayarları için kullanılır. Exchange servislerinin iç URL’leri ve port ayarları için kullanılmaktadır.

EXPR: Outlook Aynwhere tarafından kullanılan Exchange HTTP protokolü ayarları için kullanılır. Exchange server’a internet üzerinden erişen kullanıcıların, external URL’lerini ayarlamak için kullanılır.

Set-OutlookProvider cmdlet ile ilgili değişiklikler yapılabilir.

Örneğin, en çok karşılaşılan sorunlardan birisi wildcard sertifika kullanımında yaşanmaktadır. Internet üzerinden yapılan outlook anywhere bağlantısında,  client aşağıdaki hatayı alabilir.

autodiscover 

Bu sorunun giderilmesi için Outlook profil ayarlarında, Connection bölümünde msstd:* şeklinde tanımlama yapıldığında sorun giderilir. Bununla birlikte çok fazla kullanıcı da bu ayarın yapılması bu şekilde mümkün değildir. Exchange Management Shell üzerinde aşağıdaki komut kullanılarak tüm clientların bu ayarı alması sağlanabilir.

Set-OutlookProvider –Identitiy EXPR –CertPrincipalName msstd:*.domain.com

Outlook 2007 clientlar, her outlook açıldığında, her exchange bağlantısı kesintiye uğradığında ve belirli aralıklarla Autodiscover servisine bağlantı kurarlar. Eğer outlook client 60 dakika sonra tekrar bağlantı kuramaz ise 5 dakika aralıklar ile tekrar bağlantı kurmayı dener.

Bazı durumlarda Outlook ile Autodiscover servisi arasında sorun yaşanabilir ve bir çok fonksiyon doğru çalışmayabilir. Bu gibi durumlarda Outlook üzerinde aşağıdaki ayar ile Autodiscover servisinin kullanılması tetiklenir.

Outlook 2007 üzerinde, Tools ve sonra Account Settings seçilir. E-mail account penceresinde, E-mail tabı seçilir ve Repair tıklanır.

 

Autodiscover servisinin iç URL bilgisini değiştirmek için Set-ClientAccessServer cmdlet’i kullanılır.

Set-ClientAccessServer –Identity <CASserveradı> -AutodiscoverServiceInternalUri https://autodiscover.domain.com/autodiscover/autodiscover.xml

Outlook Anywhere dış host adının, autodiscover servisi için ayarlamada kullanılacak cmdlet aşağıdaki gibidir.

Enable-OutlookAnywhere –Server Serveradı –ExternalHostname “mail.domain.com” –ExternalAuthenticationMethod “Basic” –SSLOffloading:$False

Offline Adres defterinin dış URL’sinin autodiscover servisi için set edilmesinde ise aşağıdaki cmdlet kullanılır.

Set-OABVirtualDirectory –identity “serveradı\OAB (Default Web Site)” –externalurl https://mail.domain.com/OAB -RequireSSL:$true

 

Autodiscover servisi, Exchange Server 2007 ile birlikte gelen ve özellikle düzgün bir şekilde konfigüre edildiğinde, sistem yöneticilerinin işini çok kolaylaştıracak bir özelliktir. Burada her sistemin kendine özgü şartlarının gerektirdiği durumlar gözönüne alınarak gerekli düzenlemelerin yapılması önemlidir. Bu konuda çok daha fazla bilgi için http://technet.microsoft.com üzerinde Autodiscover için arama yaptığınızda detaylı bilgiye erişebilirsiniz.

Volkan Günaydın

Exchange 2007’de TELNET ile IMAP bağlantısı nasıl yapılır?

 

IMAP yani Internet Message Access Protocol ile Exchange Server 2007 üzerindeki bir mailbox bağlantısı, telnet komutları ile gerçekleştirilebilmektedir.

Burada Client Access Server rolü üzerinde olan Exchange 2007 sunucusu üzerinde telnet komutları çalıştırılmalıdır.

Öncelikle, IMAP4 sanal sunucusunu plain text logon türü için ayarlayacağız. Bunun için, Exchange Management Shell üzerinde aşağıdaki komut çalıştırılır.

Set-ImapSettings –LoginType “plaintextlogin”

 

Ardından yine Management Shell üzerinden Telnet ile IMAP oturumu açılır.

Telnet CAS IP Adresi 143

 

Eğer IMAP4 servisiniz düzgün bir şekilde çalışıyor ise aşağıdaki gibi bir mesaj almalısınız:

 

 

 

 

 

 Bu aşamadan sonra bir mailbox’a login olmak için aşağıdaki komutu çalıştırın.

? LOGIN Domainİsmi/Loginİsmi Password

Bu komut sonrasında eğer user bilgileri doğru girildi ise şu çıktıyı almalısınız:

 

 

 

 

Tüm klasörleri listelemek için:

? LIST “” “*”

komutu çalıştırılır.

İstediğimiz mailbox klasörünü açmak için ise:

? Select ilgiliKlasörİsmi

Bu komut eğer başarılı bir şekilde çalışır ise, şuna benzer bir çıktı alırsınız.

 

 

 

Burada bir mesajı okumak için aşağıdaki komutlardan birisi çalıştırılır.

? FETCH mesajnumarası All

? FETCH mesajnumarası Body

IMAP oturumunu sonlandırmak için aşağıdaki komut kullanılır.

? LOGOUT

Bu komut sonrasında aşağıdaki gibi bir mesaj ile oturum sonlanır.

 

 

Volkan Günaydın

Edge Subscription nasıl yapılır?

Exchange Server 2007’de Edge Transport sunucusu, gerekli Active Directory datasını tutmak için ADAM yani Active Directory Application Mod’u kullanır.

Bu datanın içerisinde, Accepted Domains, Recipients, Safe Senders, Send Connectors ve Hub Sunucularının listesi bulunmaktadır. Burada yapılan replikasyon şifreli olarak gerçekleşmektedir ve tek yönlüdür.

Yani ADAM servisinden, Active Directory’e doğru bir replikasyon bulunmamaktadır. İlk replikasyon tüm datanın replikasyonunu sağlar ve ardından belirlik aralıklarla ki bu aralık ürün ile birlikte eğer değiştirmezseniz, konfigürasyon datası her saat, recipient datası ise her 4 saatte bir gerçekleşir.

Aşağıda Edge Subscription olarak adlandırılan işlemin nasıl gerçekleştirildiğini adım adım göreceksiniz.

İlk olarak, Edge Transport rolünün bulunduğu sunucu üzerinde Edge Subscription xml dosyası oluşturulur. Bu işlem için kullanacağımız Exchange Management Shell komutu: New-EdgeSubscription.

Bunun için Edge Transport sunucusu üzerinde, Exchange Management Shell açılır ve aşağıdaki komut çalıştırılır.

New-EdgeSubscription –file “C:\EdgeSubscriptionFile.xml”

 

Bu komut çalıştırıldığında xml dosya ile birlikte, ADAM servisi için kullanılacak user account oluşur.

 

Oluşan bu xml dosyasını, Hub Transport rolünün olduğu sunucuya taşımanız ve bu dosyayı Edge Sunucu üzerinden silmeniz gerekmektedir.

Şimdi sıra, bu dosyanın Hub Transport sunucu üzerine import edilmesi adımındadır. Exchange Management Console üzerinde, Organizaton Configuration ardından Hub Transport seçilir ve Edge Subscriptions tıklanır.

Actions bölümünde, New Edge Subscription seçilir.

new edge subscription

 

 

 

 

 

 

 

 

 

 


Burada açılan wizard içerisinde, Active Directory Site seçilir ve bir önceki adımda oluşan Subscription dosyasının yolu gösterilir.

 

AD Site

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


İşlem tamamlandığında FINISH seçilerek subscription işlemini tamamlamış olursunuz.

Eğer bu işlemi GUI üzerinden değilde, Management Shell üzerinden yapmak isterseniz:

New-EdgeSubscription –FileName:”C:\EdgeSubscriptionFile.xml” –Site:”Default-Firts-Site-Name”

 

Bu işlemin ardından subscription tamamlanmış olmaktadır. Senkronizasyon için beklemek istemiyorsanız, bu işlemi aşağıdaki komut ile tetikleyebilirsiniz.

Hub Transport sunucu üzerinde aşağıdaki komut ile bu işlemi yapabilirsiniz.

Start-EdgeSynchronization

Son olarak, Test-EdgeSynchronization komutu ile senkronizasyon işlemini test edebilirsiniz.

 

Volkan Günaydın

Exchange 2007 ile gelen test komutları

Exchange Server 2007 management shell ile birlikte, sunucu yöneticilerinin günlük işlerini kolaylaştıracak birçok komut geldi.

Bu komutlardan bazıları Exchange sunucunuzu test etmek ve olan problemleri görebilmek için kullanılan test komutlarıdır. Bu komutlar aslında Exchange sunucunuzda meydana gelen anlık problemleri keşfetmenizde çok hızlı bir şekilde başvuracağınız komutlar olmalarına rağmen, Microsoft System Center Operations Manager gibi sistem izleme araçlarını kullanmanız sorunları olmadan farketme açısından çok önemlidir.

Aşağıda test komutlarını ve özet olarak hangi amaçla kullanıldıklarını göreceksiniz. Komutların daha ayrıntılı özelliklerini görmek için www.microsoft.com/technet adresine göz atabilirsiniz.

Komut

Açıklaması

Test-EdgeSynchronization

Subscribe edilmiş Edge Transport sunucularının durumlarını kontrol eder.

Test-ImapConnectivity

Client Access Server üzerindeki IMAP çalışırlığını kontrol eder.

Test-Mailflow

Belirtilen Exchange sunucuları arasında yada belirtilen mail adresine, mail akışınının kontrol edilmesi için kullanılır.

Test-ActiveSyncConnectivity

ActiveSync senkronizasyonu ile ilgili sistemin durumunu kontrol etmeniz için kullanılır.

Test-MAPIConnectivity

Belirtilen mailbox üzerinde yada bir Exchange sunucusunda MAPI bağlantısı kontrolü için kullanılır. MAPI logon gerçekleştirilir. Bu test MDB üzerinde bir mailbox oluşturur.

Test-OutlookWebServices

Outlook 2007 için AutoDiscover ayarlarını kontrol eder.

Test-OwaConnectivity

Sertifika doğrulamasıda olmak üzere, Outlook Web Access erişmini kontrol eder.

Test-PopConnectivity

Belirtilen Client Access Server için POP3 bağlantı kontrolü yapar.

Test-ReplicationHealth

Continuous Replication durumunun kontrol edilmesi için kullanılır.

Test-SystemHealth

Exchange sisteminin bütün olarak çalışmasının kontrolü için kullanılır.

Test-ServiceHealth

Otomatik olarak ayarlanmış Exchange servislerinin durumlarını kontrol eder.

Test-IPBlockListProvider

Belirtilen IP adresinin, IP Block List Provider da mevcut olup olmadığını kontrol eder.

Test-IPAllowListProvider

Belirtilen IP adresinin, IP Allow List Provider da mevcut olup olmadığını kontrol eder.

Test-ExchangeSearch

Belirtilen bir mailbox üzerinde yada Exchange sunucunun tamamında Exchange Search durumunu kontrol eder.

Test-WebServicesConnectivity

Client Access Server rolü yüklü olan Exchange sunucu üzerinde, Exchange Web Servislerinin çalışırlığını kontrol eder.

 

Volkan Günaydın

Exchange 2007'de queue'daki mesajları export etmek ve tekrar process ettirmek

Exchange 2007'de Queue Management için Queue viewer tool'u ve aşağıdaki komutlar kullanılabilir.. Exchange management shell'den kullanabileceğiniz aşağıdaki komutlar bir daha Queue Viewer tool'unu kullanmamanızı sağlayacak kadar etkin ve güzel. Kısaca komut listesini ve tanımını yapmaya çalıştım.

 

Export-Message  -----------> mesaj export/dışarıya almak için

Get-Message  ----------> mesaj listelemek için

Get-Queue  ------------> queue listelemek için

Remove-Message  ----------> mesaj silmek için

Resume-Message ---------->  mesaj devam için

Resume-Queue  ----------> queue  devam için

Retry-Queue  -----------> queue retry/tekrar için

Suspend-Message -----------> mesaj bekletmek için

Suspend-Queue  -----------> queue  bekletmek için

 

Mailleri dışarı alma ihtiyacı günlük bir ihtiyaç değildir bazen networksel bazen donanımsal nedenler ile gerekebilir.

Öncelikle  transport service'i pause etmemiz gerekiyor... Service pause ile exchange transport'a yeni mail girişini durdurmuş oluyoruz.

 

 

Get-Queue ile queue içerisindeki mailleri bir yada daha çok alt queue'lariçerisinde görebiliriz.

 

Queue'daki bir mesajı export etmek için öncelikle ilgili mesaj yada mesajlar suspend edilmeli.

 

Get-Queue | Get-Message | Suspend-Message

 

Yukarıdaki komut kümesi ile tüm mailleri suspend duruma geritiyoruz. Buradaki anacımız tüm mailleri export etmek ve queue'dan silmek. Suspend ile maillerin deliver edilme ihtimali sıfıra indirilmiş oluyoruz.

 

Mesajaların suspend olup olmadıkları aşağıdaki komut kümesi..

 

Get-Queue | Get-Message

 

ile görülebilir. Mesajların bu aşamada status'u artık "suspended"  durumdadır...

 

Bu aşamadan sonra mesajları queue'dan export edebiliriz. Bunun için aşağıdaki komut kümesi...

 

Get-Queue | Get-Message | Export-Message -Path C:\temp

 

kullanılır. Burada path parametresi ile export edileceği disk folder'ı belirtilmiş olunur...

 

Aşağıdaki örnekte mesajlar uykarıdaki komutlar ile C:\Temp'e export ediliyor.

 

 

 

 

C:\Temp içeği;

 

 

 

Yukarıdaki mesajlar hala queue'da durmaktadır, çünkü sadece export ettik.

 

 

 Mesajların birden fazla "dublicate deliver" edilmesini önlemek için mutlaka queue database'i replace eidlmeli yada mesajlar queue'dan export edildikten sonra silinmelidir. Bu işlemi gerçekleştirmek için;

 

Get-Queue | Get-Message | Remove-Message ----------------> dikkat bu komut queue'daki tüm mesajları onayınızı alarak silecektir.

 

 

Yukarıdaki gibi hata mesajları gelebilir ilgili queue'lar sistem queue'sudur.

 

Export edilen mesajlar herhangi bir transport server üzerinde REPLAY \ PICKUP folder'ına konularak testrar process ettirilebilir...

Kısaca pickup fıolder'ın replay folder'dan farkı header firewall'dur.

 

Not: Submission queue ve Poison queue'daki mesajları remove edemeyiz. 

 

K. Ekici

 

Why we need to change our current user creation scripts to powershell scripts in Exchange 2007
In Exchange Server 2003 we have a background service named Recipient Update Service (RUS) which update all users to have necessary exchange attributes; for example e-mail address. In Exchange Server 2007 we don't have a service for doing same updates for newly created objects. As a replacement to this functionality in Exchange Server 2007 (E2K7) we have a new component that behaves like a provider rather than a service, maybe we can call this  "Recipient Update Provider" . As you understand it's actually working as a provider not a daemon, process or service. If we need to create an object with exchange attributes, we will need to call this "update provider" help.

 

By default E2K7 GUI interface (Exchange Management Console --- EMC) and (Exchange Management Shell --- EMS) powershell commands has ( such as New-mailbox) this integration. So when you use GUI or powershell command to create a sample user, this both of methods calls to provider in the background to fill Exchange related attributes to objects.

Actually in E2K7 RUS API working as follows;

 

1- Admin user attempt to create/update user object mailbox via EMS or EMC operation, it calls RUS API

2- RUS API requests all policies from memory

3- DC' s returns address policy and adress lists to RUS API

4- RUS API returns list of attributes to the EMS or EMC

5- EMS or EMC requests required attribute list to RUS API and RUS API returns back to the EMC or EMS

6- EMC or EMS creates or updates object with required attributes in Active Directory (AD)

 

Whole of the above steps runs on mailbox server under the System Attendant process control.

I've try to write a sample script for user creation process and I've used New-Mailbox powershell command in this script. I hope this script helps for your business.

 

Actually following sample script doesn't have any risk for your system but please modify following script according your needs and don't run on your production environment before testing it in your test environment !!!

 

Note: You can copy following lines to a simple text file via notepad and run from powershell console.

Additional information regarding powershell;

http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx

http://blogs.msdn.com/powershell/

-kekici-

# **************************************************************************    

# This is a sample script for creating new server and mail enable process

#

# Author: Kutbettin Ekici

# **************************************************************************    

 

 

# **************************************************************************    

# This is first function which we have to use for new user data collection

 

function dataenter

 

{

Write-Host " "

Write-Host "New user (Required) information ... " -ForeGroundColor DarkGreen

Write-Host " "

 

# Required basic information for a sample user will collect by that way...

$FirstName = Read-Host "First Name"

$LastName = Read-Host "Last Name"

# Password need to collect as a secure string

$passWord = Read-Host "Password" -AsSecureString

 

# Global variable declaration in a function like that...

# By default variable scoping was local...

 

$global:Name = Read-Host "Logon name (it needs a unique value)"

$global:Displayname = $FirstName + " " + $LastName

$HomeMDB = Read-Host "Database path (HomeMDB) [For example; servername\StorageGroupName\DatabaseName] "

$alias = Read-Host "Alias name (it needs a unique value)"

$domain = Read-Host "What is the domain name for new user [For example; contoso.local] "

$UPN = $Name+"@"+$domain

 

Write-Host " "

Write-Host "Optional information for user... " -ForeGroundColor DarkGreen

Write-Host " "

 

# Optional data for new user

 

$OU = Read-Host "Organizational Unit location for new user [For example; /Contoso/Bim/Users/ ]"

 

if ($OU -eq "")

{

# Following line is not necessary but addressing static path will be fine…

$OU = $domain + "/" + "USERS"

}

 

# normally variable scope in a function by default is local, we can set it global with the following sample line...

# set-variable OU value -scope global

 

 

$SendSize = Read-Host "Mail send limit [For example; 1230KB, 2MB ]"

 

if ($SendSize -eq "")

{

$SendSize = "0KB"

}

 

$ReceiveSize = Read-Host "Mail receive limit [For example; 10000KB, 2MB ]"

 

if ($ReceiveSize -eq "")

{

$ReceiveSize = "0KB"

}

 

$global:Description = Read-Host "User Description [For example; Customer Account Manager]"

$global:title = Read-Host "Title : [For example; Account Manager]"

 

# Calling createUserMBX function

createUserMBX

}

 

function createUserMBX

{

 

Write-Host " "

Write-Host " User Information will be… : " -ForeGroundColor DarkGreen

Write-Host "Name   : " $DisplayName -ForeGround Blue

Write-Host "Alias   : " $Alias -ForeGround Blue

Write-Host "OU   : " $OU -ForeGround Blue

Write-Host "UPN   : " $UPN -ForeGround Blue

Write-Host "Logon Name  : " $Name -ForeGround Blue

Write-Host "DB address  : "$HomeMDB -ForeGround Blue

Write-Host "Send Limit  : " $SendSize -ForeGround Blue

Write-Host "Receive Limit  : " $ReceiveSize -ForeGround Blue

Write-Host " "

 

# ************************************************************************

 

$SecondQuestion = Read-Host "Do you want to create this user with the above information ? Yes (Y) / No: (N)"

if ($SecondQuestion -eq 'Y' )

{

 

# exception handling lines....

                trap {

                Write-Host " An error occured, please check the following detailed information and take an action for resolution. " -ForeGroundColor RED -BackGroundColor WHITE

                Write-Host " "

                break

                               }

 

# we are creating user by calling RUS API with the “new-mailbox” command...

New-Mailbox -Name $Name -Alias $Alias -OrganizationalUnit $OU -UserPrincipalName $UPN -SamAccountName $Name -FirstName $FirstName -LastName $LastName -Database $HomeMDB -ResetPasswordOnNextLogon $false -Password $passWord;

 

if (($SendSize -eq '0KB') -and ($ReceiveSize -eq '0KB'))

                {

               

                }

 

                else

                {

 

                if ($SendSize -ne '0KB')

                               {

                               Set-Mailbox -identity $Alias -MaxSendSize $SendSize

                               }

 

                if ($ReceiveSize -ne '0KB')

                               {

                               Set-Mailbox -identity $Alias -MaxReceiveSize $ReceiveSize

                               }

 

                }

 

# This is a sample line for additional settings

# OWA enabled by default With the following line we can disable OWA for new users

# Set-CASMailbox -identity $Alias -OWAEnabled $false

 

#We are calling new user Ldap path for optional data entry

 

}

 

 else

                               {

                               Write-Host " An error occurred in user creation phase...! " -ForeGround Blue

                               break

                               }

}

 

# **************************************************************************    

 

 

function get-dn ($Name)

{

 

Write-Host " "

write-host "Searching" $DisplayName "named new user in the active directory..."

Write-Host " "

                trap {

                Write-Host " Problems occurred related AD connection or user creation. " -ForeGroundColor RED -BackGroundColor WHITE

                Write-Host " Please check error message and take correct action. " -ForeGroundColor RED -BackGroundColor WHITE

                Write-Host " "

                break

                }

 

# We are starting a powershell ADSI session...

 $root = [ADSI]

# By using .NET directory service we are describe a searcher object for ADSI interface

 $searcher = new-object DirectoryServices.DirectorySearcher($root)

#Setting up a name filter for user class

 $searcher.filter = "(&(objectClass=user)(name= $Name))"

#Listing all possible results... (It's a unique value...)

 

 $user = $searcher.findall()

 

 if ($user.count -gt 1)

 

       {    

             $count = 0

             foreach($i in $user)

             {

                   write-host $count ": " $i.path

                   $count = $count + 1

             }

                $selection = Read-Host "Please select item: "

 

# returning Ldap path back to the requested function...

 

                return $user[$selection].path

       }

 

      else

 

      {

                return $user[0].path

      }

 

}

 

function lastUserSetup

{

 

$global:LDAPpath = get-dn $Name

 

# another variable scope declaration way is: set-variable var -scope global

 

 trap {

 

                Write-Host " Probably script didn't complete update user: $DisplayName for it's additional attributes. " -ForeGroundColor RED -BackGroundColor WHITE

                Write-Host " Please check the error message and take required action. " -ForeGroundColor RED -BackGroundColor WHITE

                Write-Host " "

                break

                }

 

$NewUser = New-Object System.DirectoryServices.DirectoryEntry $LDAPpath

 

if ($Displayname -ne "")

{$NewUser.Put('displayName',$DisplayName)}

if ($Description -ne "")

{$NewUser.Put('description',$Description)}

if ($title -ne "")

{$NewUser.Put('title',$title)}

 

if (($Displayname -eq "") -and ($Description -eq "") -and ($title -eq ""))

{

Write-Host "There isn't any update ..."

}

else

{

 

Write-Host " "

#We are writing all attributes with the following line

$NewUser.SetInfo()}

Write-Host "Update operation completed successfully."

Write-Host " "

 

}

 

function results

{

 

$NewUser = New-Object System.DirectoryServices.DirectoryEntry $LDAPpath | Select-Object *

 Write-Host "************************************************************************** " -ForeGroundColor DarkGREEN

 Write-Host "********* User created or updated with the following information ********* " -ForeGroundColor DarkGREEN

 Write-Host "E-mail Address : "

 Write-Host $newUser.mail -ForeGroundColor DarkGreen

 Write-Host " "

 Write-Host "Server Path : "

 write-host $newUser.msExchHomeServerName -ForeGroundColor DarkGreen

 Write-Host " "

 Write-Host "Database Path : "

 write-host $newUser.homeMDB -ForeGroundColor DarkGreen

 Write-Host " "

 Write-Host "Display Name : "

 write-Host $newUser.DisplayName -ForeGroundColor DarkGreen

 Write-Host " "

 Write-Host "Logon Name : "

 write-host $newUser.sAMAccountName -ForeGroundColor DarkGreen

 Write-Host " "

 Write-Host "Title : "

 Write-Host $newUser.title -ForeGroundColor DarkGreen

 Write-Host " "

 Write-Host "Description : "

 write-host $newUser.description -ForeGroundColor DarkGreen

 Write-Host " "

 Write-Host " ************************************************************************** " -ForeGroundColor DarkGREEN

}

  

# This is the start point of powershell script

# Just giving a sample for Read-Host and if statement....

$FirstQuestion = Read-Host " What do you need ? For a new user plase press:Y / For updating a user please press: U "

 

# if statement sample...

 

if ($FirstQuestion -eq 'Y' )

 

                {

                # We are calling dataenter function by the following line

                dataenter

               

                lastUserSetup      

 

                results

               

                break

                }

               

                else

                {

                Write-Host " Update function is not implemented yet. " -ForeGroundColor GREEN

                break

                }

 

Receive Connector Security Permissions
 

In Exchange 2007 SMTP Virtual Servers are replaced with Send and Receive Connectors that makes it easier to manage the mail flow. Setting a receive connector to your Hub server is pretty easy and after making a few decisions (name of the connector, bindings, remote IP range, allowed authentication mechanism etc) your Exchange environment becomes ready to allow SMTP traffic in. There are also permission groups that are pre-defined so that you can configure who can use this connector. Most of times Exchange Management Console will make you forget about Security tab that you had at SMTP Virtual Servers of Exchange 2003; unless you are in need of doing something more granular. In such a moment calmly right click on your Receive Connector and search for a Security tab; but don’t push too hard because there isn’t any.

Don’t Panic!!

Instead just open your Exchange Management Shell and write down the following command:

 

[PS] C:\>Get-ReceiveConnector Default* | Get-ADPermission

 

Too much output for just one command? OK, let’s look for something more granular. By default Anonymous Users are not enabled for Default Receive Connector as may be seen from the picture above. Let’s look at what are the “Anonymous Logon” group’s Security permissions on this Receive Connector object:

So one must be authenticated before starting to submit messages to this connector; as Anonymous Logon group does not have any permission related with SMTP usage. Below you can find a list of SMTP permissions that you can set on your receive connectors:

1.       ms-Exch-SMTP-Submit

If SMTP Receive Session does not have this permission, remote side will fail to submit messages to this connector.

So let’s make Anonymous Logon group to have this permission

And then try to telnet this receive connector again

 

2.       ms-Exch-SMTP-Accept-Any-Sender

Above  I was again unsuccessful, because Anonymous Logon doesnt have ms-Exch-SMTP-Accept-Any-Sender permission that SMTP session needs to allow sender to use any domain name.

So again let’s make Anonymous Logon group to have this permission

And then try to telnet this receive connector again

So now I was successful as a Sender using a domain name “a.com”; but then I changed my mind and wanted to send from “bb.dmn” domain which again turn into a failure message;

But WHY??

Exchange Receive Connectors have two different permission to accept domains at MAIL FROM verb. They are the domains

i.                     that are configured as authoritative and internal relay (this Exchange organization has been configured and is responsible to deliver messages)

ii.                   and they are other domains that are configured as External Relay or does not configured at all

So let’s find out which domains has been configured for this Exchange organization as authoritative

As it may be seen from the output “bb.dmn”  is authoritative domain; and this is WHY we cannot send mail from a sender that is using this domain. To make receive connector accepts this kind of senders SMTP session must have ms-Exch-SMTP-Accept-Authoritative-Domain-Sender permission

 

 

3.       ms-Exch-SMTP-Accept-Authoritative-Domain-Sender

So let’s make Anonymous Logon group to have this permission

And then try to telnet this receive connector again

So almost everything is OK. SMTP session accepts any MAIL FROM verb; as a sender using any domain and as a sender using authoritative domain. SMTP session accepts a recipient that is internal to Exchange Organization (authoritative domain) but refused to deliver message to outside of the organization which means we are secure and not making open relaying. So what permission is missing from SMTP session so that we couldn’t relay message to outside. Check out the next one please!!

4.       ms-Exch-SMTP-Accept-Any-Recipient

This is an IMPORTANT permission and must be clearly identified which groups have this permission;  as an SMTP session with this permission can deliver messages to outside of the Exchange organization. If you have an internet-faced receive connector configured with Anonymous Logon group with this permission; this means you have an OPEN-RELAY server!!

 

So just for educational purposes let’s give this permission to Anonymous Logon group:

And then telnet 25 and try to relay message to a domain that is external to Exchange Organization such as “b.com”

Voola!! We have an OPEN RELAY SMTP server

5.       ms-Exch-SMTP-Accept-Authentication-Flag

This permission allows Exchange servers that are running earlier versions of Exchange Server to submit messages from internal senders. Exchange 2007 servers  recognize the message as internal. The sender can declare the message as "trusted".

6.       ms-Exch-Accept-Headers-Routing

 

If you ever had a look at the headers of an incoming mail you would noticed that you can see all bypassing SMTP server information from sender to recipient. By using Outlook you can see those headers from Message Options (below you can see an example). As a message flows from SMTP server to server, each receiving server signs its signature inside the message (Received: header). So if a message flows over (let’s say) 3 SMTP servers before leaving the organization recipient of your messages can identify the names and IPs of your internal mail servers.

 

 

If you want to avoid this simply Deny this permission from your Send Connector for Anonymous Logon user

 

 

7.       ms-Exch-Accept-Headers-Organization

This permission allows the session to submit a message that has all organization
headers intact. Organization headers all start with “X-MS-Exchange-Organization-“.
If this permission isn't granted, the receiving server strips all organization
headers.

 

8.       ms-Exch-Accept-Headers-Forest

This permission allows the session to submit a message that has all forest headers intact. Forest headers all start with “X-MS-Exchange-Forest-“. If this permission isn't granted, the receiving server strips all forest headers.

 

9.       ms-Exch-SMTP-Accept-Exch50

This permission allows the session to submit a message that contains the XEXCH50 command. This command is required for interoperability with Exchange 2000 Server and Exchange 2003. The XEXCH50 command provides data, such as the spam confidence level (SCL) for the message.

 

 Can Dedeoğlu

 

 

 

Exchange 2007'de transport troubleshoot'ta vazgeçilmez bir özellik...

Exchange 2003 archivesink adını verdiğimiz bir metod ile transporta girmekte olan mesajları dump (maili source code'u ile diske yazma işlemi) edebiliyorduk. Troubleshoot edilecek mesajın exchange 'e nasıl ulaştığını ve hangi değişimlere uğradığını görmek adına çok önemli bir özellik olan ArchiveSink artık exchange 2007'de yok. Bunun yerine yeni bir özellik olan "pipeline tracing" özelliği geldi. Bu özellik sayesinde mesaj transport içerisinde her seviyede dump ettirilebiliyor. Doğal olarak Edge ve HUB transport server'larda bu özelliği çalıştırabiliyoruz. Eğer bir server'da diğer rollerde varsa özellik yine çalışabilir.

Dump ettirmek kısacası ne demek... Mesajın yapısal durumunu analiz etmek için mesajı bir EML oalrak görmeliyiz. RFC standartlar çerçevesinde bu mesaj oluşturulmuşmu oluşturulmamışmı bu durumu ancak EML içerisinden anlarız. EML yapısını ilerde başka bir blog ile anlatmaya çalışacağım.

Pipeline Tracing GUI'den enable edilemiyor enable etmek için powershell kullanmak esasen zorunlu. Bunu aşağıdaki komut ile yapabiliyoruz...

Set-TransportServer KHUB -PipelineTracingEnabled $True

Yukarıdaki satırda $True yerine genel powershell kuralları çerçevesinde "1" $false için "0" da kullanılabilir...

Yukarıdaki işlem yapıldığında HUB server olan KHUB 'da pipeline tracing tüm mail akışı için enable edilmiş olacaktır.. Tabi giden gelen tüm maillerin dump ettirilmesi performansı çok fazlaca düşüreceği ve disk'i muhtemelen kısa sürede dolduracağı için filtrelemeye ve belirli bir sender'ı izlemeye ihtiyacımız var. Bunuda yapabilmek için aşağıdaki gibi bir ek parametre kullanmalıyız.

-PipelineTracingSenderAddress "omer.mert@contoso.com"

Uygun durumdaki bir diski veya disk path'ini kullanmak için aşağdıaki parametrede eklenebilir...

-PipelineTracingPath "C:\PipeLogs"

Sonuçta sağlıklı bir pipeline tracing için enazından aşağıdaki komut bütün halinde elimizde bulunmalı...

Set-TransportServer KHUB -PipelineTracingEnabled $True -PipelineTracingSenderAddress "omer.mert@contoso.com" -PipelineTracingPath "C:\PipeLogs"

Sağlıklı bir trace için öncelikle Sender address ve trace path girilmeli  ve sonrada enable edilerek veri toplanmalıdır.

Her koşulda gerekli data toplandıktan sonra pipeline tracing muttlaka kapatılmalı...

Set-TransportServer KHUB -PipelineTracingEnabled $False

Pipeline tacing ile çözülmüş bir örnek case...

Müşterimiz exchange 2007'ye gönderilmekte olan bazı maillerde SUBJECT alanının boş olarak (kaybedilmiş olarak) son kullanıcıya ulaştığını iletti. Pipeline tracing ile veri topladık ve elimize geçen EML file'dan aşağıdaki mesaj source'una ulaştık. 

X-CreatedBy: MessageSnapshot-Begin injected headers
X-MessageSnapshot-UTC-Time: 2005-06-12T13:07:04.389Z
X-MessageSnapshot-Protocol-Id: 08CA9AA12568B156;2005-06-12T13:07:00.529Z;5
X-MessageSnapshot-Source: Original
X-Sender: info@chxxx.com.tr
X-Receiver: a.do@bpoxxx.com.tr
X-EndOfInjectedXHeaders: MessageSnapshot-End injected headers
Received: from csm.chxxx.com.tr (172.1.43.13) by
 bpyyyx.inhha.bpoxxx.com.tr (10.1.43.15) with Microsoft SMTP Server id
 8.1.278.0; Thu, 12 Jun 2008 16:07:04 +0300
Received: from www.chxxx.com.tr ([10.1.27.7]) by csm.chxxx.com.tr with
 Microsoft SMTPSVC(6.0.3790.1830);  Thu, 12 Jun 2008 16:02:13 +0300
Content-Type: text/html; charset="'ISO-8859-9'"
From: <info@chxxx.com.tr>
To: a.do@bpoxxx.com.tr
Subject: Doğrudan doğruya açılış çoşkusu
Return-Path: info@cbank.com.tr
Message-ID: <ChxxxshufvDV2eq0sbw000000be@csm.chxxx.com.tr>
X-OriginalArrivalTime: 12 Jun 2008 13:02:13.0718 (UTC) FILETIME=[88790760:01C8CC8C]
Date: Thu, 12 Jun 2008 16:02:13 +0300
MIME-Version: 1.0
X-MS-Exchange-Organization-OriginalArrivalTime: 12 Jun 2008 13:07:04.3890
 (UTC)
X-MS-Exchange-Organization-AuthSource: bpoxxxx.intra.bpoxxx.com.tr
X-MS-Exchange-Organization-AuthAs: Anonymous

<HTML><head><META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; charset=
=3Dwindows-1254"><META HTTP-EQUIV=3D"Content-Type....................................

Evet yukarıdaki mesaj Original.EML olarak dump edildiği yerden alınıp incelendiğinde şunu görüyoruz...

"Subject:" header'ı Türkçe karakterler içeriyor... Oysa RFC2822 bize aşağıdakileri söylüyor...

2.2. Header Fields

   Header fields are lines composed of a field name, followed by a colon
   (":"), followed by a field body, and terminated by CRLF. 
A field
   name MUST be composed of printable US-ASCII characters (i.e.,
   characters that have values between 33 and 126, inclusive), except
   colon. 
A field body may be composed of any US-ASCII characters,
   except for CR and LF.  However, a field body may contain CRLF when
   used in header "folding" and  "unfolding" as described in section
   2.2.3.  All field bodies MUST conform to the syntax described in
   sections 3 and 4 of this standard.

 

Bu durumda mailin yapısal sorunu var.. İlgili header doğru biçimde Türkçe karakterler encode edilerek (Base64 yada Quoted Printable) gönderilirse mesajın subject'i doğru biçimde ve doğru karakterler ile belirecektir.

Yukarıdaki örnekteki EML manual encode edilerek submit edildiğinde mesajın subject ile deliver edildiğini görüyoruz.

İlerde birkaç örnek daha eklemeye çalışacağım...

KEKICI

 

Page view tracker