1. Neden önemli?
Outlook 2016 ve sonrası, Exchange bağlantı ayarlarını kayıt defterinden değil doğrudan Autodiscover’dan alır; Autodiscover çalışmıyorsa profil oluşturulamaz, PRF dosyaları da artık desteklenmez. Yani Autodiscover “kolaylık” değil, istemci erişiminin ön koşuludur. Sahada gördüğümüz “Outlook şifre soruyor”, “sertifika uyarısı çıkıyor”, “profil oluşturma 2 dakika sürüyor”, “free/busy ve otomatik yanıt çalışmıyor” şikayetlerinin büyük kısmının kökü, Outlook’un yanlış uç noktayı yanlış sırayla denemesidir. Bu zinciri adım adım okuyabilen admin, saatlerce süren “profil sil–yeniden kur” döngüsünü yarm saatte çözebilecek bir teşhise indirebilir.
2. Temel kavramlar ve nasıl çalışır?
2.1 Autodiscover ne döndürür?
Kullanıcının e-posta adresi ve kimlik bilgisiyle yapılan isteğe Exchange bir XML yanıtı döner: kullanıcının görünen adı, iç ve dış bağlantı ayarları (MAPI/HTTP uç noktaları), EWS, OAB, Availability (free/busy) ve OOF URL’leri, posta kutusunun hangi sunucuda/kimlikte (GUID@alanadı) olduğu. Outlook bu bilgileri önbelleğe alır ve periyodik olarak, ağ değiştiğinde veya hata aldığında Autodiscover’ı yeniden çalıştırır. Yani Autodiscover yalnızca ilk kurulumda değil, istemcinin ömrü boyunca devrededir.
2.2 SCP (Service Connection Point)
Her Exchange sunucusunun Client Access hizmeti kurulurken Active Directory’nin Configuration bölümünde bir SCP nesnesi yayımlanırt. Etki alanına üye ve DC’ye erişebilen Outlook ilk olarak burayı sorgular.
SCP nesnesini görmenin 3 yolu vardır.
-
Exchange Management Shell (En Kolay Yöntem)
Daha önce de kullandığınız Get-ClientAccessService (veya eski adıyla Get-ClientAccessServer) komutu, Active Directory’deki SCP nesnesini okur:
Get-ClientAccessService | Select-Object Name, AutoDiscoverServiceInternalUri
-
ADSI Edit ile Active Directory İçinde Birebir Görme
SCP nesnesi Active Directory’nin Configuration bölümünde (partition) saklanır. Nesneyi ham haliyle incelemek için:
-
Win + Rtuşlarına basın veadsiedit.mscyazıp Enter‘a basın. -
Sol paneldeki ADSI Edit düğümüne sağ tıklayıp Connect to… seçeneğini seçin.
-
Select a well known Naming Context kısmından Configuration seçip OK deyin.
-
Sırasıyla şu dizine gidin:
CN=Configuration,DC=meridian,DC=corp,DC=test └── CN=Services └── CN=Microsoft Exchange └── CN=<Exchange-Organization-Adınız> └── CN=Administrative Groups └── CN=Exchange Administrative Group (FYDIBOHF23SPDLT) └── CN=Servers └── CN=EXC01 (Sunucu adınız) └── CN=Protocols └── CN=Autodiscover └── CN=EXC01
- En sondaki
CN=EXC01(veyaCN=EXC02) nesnesine sağ tıklayıp Properties deyin. -
Öznitelik (Attribute) listesinden
serviceBindingInformationalanını bulun.Buradaki string değer, sunucunuza ait SCP URL’sidir (örneğin:
https://exc01.meridian.corp.test/Autodiscover/Autodiscover.xml).
-
Standart Active Directory PowerShell Modülü ile Sorgulama
Ad üzeirnden ya da ActiveDirectory modülü olan bir domain joined makineden;
Import-Module ActiveDirectory $ConfigNC = (Get-ADRootDSE).configurationNamingContext Get-ADObject -Filter 'objectClass -eq "serviceConnectionPoint" -and serviceBindingInformation -like "*autodiscover.xml"' -SearchBase $ConfigNC -Properties serviceBindingInformation | Select-Object Name, serviceBindingInformation
İki tür SCP vardır:
- SCP URL — Autodiscover uç nokta URL’sini taşır; keywords özniteliğinde GUID 77378F46-2C66-4aa9-A6A6-3E7A48B19596 bulunur. URL, serviceBindingInformation özniteliğindedir.
- SCP pointer — belirli bir alan adı için başka bir LDAP sunucusuna/ormana yönlendirir; GUID 67661d7F-8FC4-4fa7-BFAC-E1D7794C1F68. Çok ormanlı (kaynak orman, birleşme) yapılarda önemlidir.
İstemci, bulduğu SCP URL’lerini keywords içindeki Site= değerine gör e sıralar:
| Öncelik | Koşul | Pratik anlamı |
| 1 | Site=<istemcinin AD sitesi> içeriyor | Önce kendi sitesindeki sunucunun URL’si denenir |
| 2 | Hiç Site= değeri yok | Kapsamsız SCP’ler; herkes için ortak havuz |
| 3 | Başka bir siteyi işaret ediyor | En son denenir |
Site= değerleri Set-ClientAccessService -AutoDiscoverSiteScope ile yönetilir. Aynı öncelikteki birden fazla URL arasında sıra garantisi yoktur; dolayısıyla “tek bir hatalı SCP bile bazı kullanıcılarda rastgele gecikme” üretir.
Get-ClientAccessService | select name, AutoDiscoverSiteScope
2.3 Outlook’un arama zinciri
Microsoft’un Outlook dokümantasyonunda listelenen yöntemler şunlardır (her yöntem kayıt defteri/GPO ile tek tek kapatılabilir):
| Yöntem | Ne dener? | Kapatan değer (DWORD=1) |
| SCP lookup | AD’deki SCP URL’leri (yalnızca etki alanı üyesi + DC erişimi) | ExcludeScpLookup |
| HTTPS kök alan adı | https://alanadi.com.tr/autodiscover/autodiscover.xml | ExcludeHttpsRootDomain |
| HTTPS autodiscover alt alanı | https://autodiscover.alanadi.com.tr/autodiscover/autodiscover.xml | ExcludeHttpsAutoDiscoverDomain |
| HTTP redirect | http://autodiscover.alanadi.com.tr/… üzerinden 302 ile yönlendirme | ExcludeHttpRedirect |
| DNS SRV kaydı | _autodiscover._tcp.alanadi.com.tr | ExcludeSrvRecord |
| Son başarılı URL | Profilde önbelleğe alınmış URL | ExcludeLastKnownGoodURL |
| Microsoft 365’e doğrudan bağlantı | Outlook 2016 (16.0.6741.2017+) ile gelen, Microsoft 365 uç noktasını açıkça deneme | ExcludeExplicitO365Endpoint |
| Yerel XML | Yerelde tanımlı XML dosyası | PreferLocalXML (tercih ettirir) |
Değerler HKCU\Software\Microsoft\Office\16.0\Outlook\AutoDiscover ve ilke karşılığı HKCU\Software\Policies\Microsoft\Office\16.0\Outlook\AutoDiscover altında bulunur. (Detay Link)
Etki alanı dışı bir istemci için tipik akış: kök alan → autodiscover alt alanı → HTTP redirect → SRV. Etki alanı üyesi istemcide SCP en baştadır. Microsoft 365 doğrudan bağlantısının zincirdeki tam konumu Outlook derlemesine ve koşullara bağlıdır.
2.4 Önemli bir ayrıntı: SRV ve HTTP redirect’te uyarı
SRV veya HTTP yönlendirmesiyle farklı bir sunucuya gidildiğinde Outlook kullanıcıya “Bu web sitesinin sunucu ayarlarınızı yapılandırmasına izin verilsin mi?” uyarısı gösterir. Kurumsal ortamda beklenen bir yönlendirme varsa eğerr uyarı, …\AutoDiscover\RedirectServers altına sunucu adını içeren boş bir String değeri eklenerek bastırılabilir. Barındırma firmasında çok sayıda alan adı olan, SAN sertifikasına her alan adını koyamayan ortamlarda SRV kaydı meşru bir çözümdür.
Dikkat :
- Ölü sunucunun SCP’si yaşamaya devam eder. Exchange sunucusu düzgün kaldırılmadan (Setup ile uninstall yapılmadan) computer objesi silinirse, AD’deki sunucu nesnesi ve SCP’si kalır. Etki alanı üyesi Outlook’lar bu URL’yi de dener; zaman aşımı, sertifika uyarısı veya IP yeniden kullanıldıysa tamamen alakasız bir sunucuya kimlik bilgisi gönderilmesi görülür. Doğru yol Setup /Mode:RecoverServer ile sunucuyu geri getirip düzgün kaldırmaktır; ADSI Edit ile elle silme son çaredir ve yedek + değişiklik kaydı olmadan yapılmamalıdır.
- Yeni kurulan sunucu, kurulduğu anda SCP yayımlar. Bu SCP sunucu FQDN’ini içerir ve henüz ticari sertifikası yoktur; prod ortamda gün ortasında kurulum yapılırsa kullanıcılar sertifika uyarısı görür. Önlem için krulumu mesai dışına planlayabilirsiniz ve ya SCP’yi hemen namespace’e çekebilirsiniz.
- Microsoft 365’e doğrudan bağlantı sürprizi. Alan adı geçmişte bir Teams denemesi ya da azure tarafında açılan bir tenant’ta doğrulanmışsa, salt on-prem kullanıcının Outlook’u Microsoft 365 oturum açma ekranına düşebilir. Hibrit planı yoksa ExcludeExplicitO365Endpoint=1 ilkesi ile çözümlenebilir. (Detay Link) Hibrit ortamda bu değeri körlemesine dağıtmayın; Exchange Online’a taşınmış posta kutularını etkiler.
4. Pratik: Exchange Management Shell / PowerShell örnekleri
4.1 Foresttaki tüm Autodiscover SCP URL’lerini doğrudan AD’den listeleme (Exchange’in “bildiği” değil, istemcinin gördüğü gerçek tablo; ActiveDirectory modülü gerekir):
$cfg = (Get-ADRootDSE).configurationNamingContext
Get-ADObject -SearchBase $cfg `
-LDAPFilter "(&(objectClass=serviceConnectionPoint)(keywords=77378F46-2C66-4aa9-A6A6-3E7A48B19596))" `
-Properties serviceBindingInformation, keywords, whenChanged | `
Select-Object @{n='Sunucu';e={($_.DistinguishedName -split ',')[1] -replace 'CN='}}, `
serviceBindingInformation, whenChanged, `
@{n='Site';e={($_.keywords | Where-Object {$_ -like 'Site=*'}) -join ';'}}
Listede artık var olmayan bir sunucu veya namespace dışındaki bir URL görüyorsanız kaldırmanız gerekmektedir.
4.2 Exchange tarafında Client Access hizmeti, site kapsamı ve AD sitesi karşılaştırması:
Get-ClientAccessService | Format-Table Name, AutoDiscoverServiceInternalUri, AutoDiscoverSiteScope -AutoSize
Get-ExchangeServer | Format-Table Name, Site, AdminDisplayVersion -AutoSize
4.5 Outlook’u taklit eden POX Autodiscover isteği — istemciye gitmeden sunucunun döndürdüğü XML’i görmenin en hızlı yolu:
$body = @" <?xml version="1.0" encoding="utf-8"?> <Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/outlook/requestschema/2006"> <Request> <EMailAddress>user01@meridian.corp.test</EMailAddress> <AcceptableResponseSchema>http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a</AcceptableResponseSchema> </Request> </Autodiscover> "@ $r = Invoke-WebRequest -Uri "https://autodiscover.meridian.corp.test/Autodiscover/Autodiscover.xml" ` -Method Post -Body $body -ContentType "text/xml" -Credential (Get-Credential) -UseBasicParsing $r.StatusCode; ([xml]$r.Content).OuterXml.ToString()
4.5 İstemci üzerinden Autodiscover connection aşaması sağlıklı mı? SSL/TLS sorunu var mı?
$SystemNetAssembly = [Reflection.Assembly]::LoadWithPartialName("System.Net")
$req = [System.Net.HttpWebRequest]::Create("https://autodiscover.meridian.corp.test/autodiscover/autodiscover.xml")
$req.GetResponse()
Komut SSL/TLS hatası döndürmeden HTTP 401 döndürmesi gerekir.
Peki en kritik soru gelsin o zaman…
- Etki alanı üyesi bir istemci, Site= anahtar kelimesi içermeyen bir SCP URL’si ile başka bir siteye kapsamlanmış bir SCP URL’si bulursa hangisini önce dener?
Yukarıdaki tabloya göz gezdirirsek eğer; kapsamsız (Site= içermeyen) SCP URL’sini önce dener: öncelik 2’dir; başka siteye kapsamlı URL öncelik 3’tür. Kendi sitesine kapsamlı bir URL olsaydı (öncelik 1) o en önce denenirdi.
- Karşılaştığım bir senaryodan örnek olması açısından; etki alanı dışı bir Outlook istemcisinde, kurumsal web sitesi sunucusu 401 dönüyorsa ne olur ve hangi DWORD değeriyle bu adım atlanabilir?
Outlook, autodiscover alt alanından önce https://alanadi/autodiscover/autodiscover.xml adresini dener; web sunucusu geçerli sertifikayla 401 döndüğünde Outlook kimlik bilgisi ister. Yönetilen cihazlarda ExcludeHttpsRootDomain=1 bu adımı atlatır; kalıcı çözüm web sunucusunun bu yola 404 dönmesidir.
Faydalı olması dileğiyle.




