Autodiscover und SCP
Die erste Exchange 2007 oder neuer Installation im Forest veröffentlicht einen "Service Connection Point" im Active Directory und wenn Outlook 2007 oder neuer eingesetzt wird, dann findet Outlook diesen Eintrag und versucht diesen auch zu nutzen. Diese Seite beschreibt die Hintergründe des "Service Connection Point"
Nach meinem Kenntnisstand ist Outlook der einzige Client, der sich um den Service Connection Point interessiert. Alle anderen Clients nutzen Autodiscover und DNS
Microsoft 365 / Exchange Online
Wenn Sie noch einen lokalen Exchange Server als reinen Hybrid Connector Server ohne lokalen Postfächer betreiben, dann ist es auch nicht mehr erforderlich, dass die Clients einen lokalen Exchange Server belästigen oder von dessen Verfügbarkeit abhängig sind. In dem Fall können Sie Exchange sagen, dass er keine URL veröffentlichen soll:
Set-ClientAccessService -AutoDiscoverServiceInternalURL $null
Alternativ können sie per Gruppenrichtlinie oder REGEDIT auf allen Windows Domain-Clients natürlich auch die SCP-Abfrage für Office 365 optimieren.
Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\16.0\Outlook\AutoDiscover] "ExcludeScpLookup"=dword:00000001 "ExcludeHttpsRootDomain"=dword:00000001 "ExcludeExplicitO365Endpoint"=dword:00000000
- Autodiscover 365
- Delay when Outlook retrieves
Autodiscover information for an Exchange
Online mailbox in a hybrid environment
https://learn.microsoft.com/en-us/exchange/troubleshoot/administration/delay-when-outlook-retrieves-autodiscover-information - How to control Outlook AutoDiscover by
using Group Policy
https://learn.microsoft.com/en-us/outlook/troubleshoot/profiles-and-accounts/how-to-control-autodiscover-via-group-policy
Die Server-Seite
Outlook 2007 kennt ein neues Verfahrung, um sich automatisch zu konfigurieren. Dazu muss aber Exchange 2007 die entsprechenden Daten beisteuern. Diese Arbeit übernimmt die Client Access Rolle, welche bei der Installation schon automatisch auf dem IIS ein neues virtuelles Verzeichnis "Autodiscover" anlegt und bereit stellt.
Weitere Informationen zu diesem virtuellen Verzeichnis erhalten Sie wieder über die PowerShell: für jedes "Autodiscover Virtual Directory" gibt es einen entsprechenden Eintrag
Get-AutodiscoverVirtualDirectory
Wenn Sie genau hinschauen, dann sehen Sie hier sehr wohl Parameter wie "InternalURL" und "ExternalURL". Diese sind per Default "leer" und das ist auch normal. Sie werden nach meinem Wissen gar nicht genutzt, denn die Clients fragen von extern immer nach "autodiscover.<maildomain>". Wenn Sie schon eine Verbindung zum Exchange Server gefunden hätte, dann wäre das Lesen dieser Eigenschaften sicher das am wenigsten sinnvolle Vorgehen:
„So as you can see everything is working
fine without setting the InternalURL or ExternalURL on the
Autodiscover Virtual Directory. Now that we have
established, and proved by testing, that it is not needed
let’s answer the burning question about why it’s actually
there.”
Busting The Set-AutodiscoverVirtualDirectory Myth http://blogs.technet.com/b/rmilne/archive/2013/04/02/busting-the-set-autodiscovervirtualdirectory-myth.aspx
Interessanter ist aber der Eintrag für AutoDiscoverServiceInternalUri". Der hat sehr wohl eine Funktion da dieser Wert auch per LDAP von internen Clients ausgelesen wird. Wenn ein Outlook Client eine Verbindung zu einem Domaincontroller hat, dann nutzt er die hier eingetragene URI, um die weitere Autodiscover-Abfrage auszuführen:
Get-ClientAccessServer | fl
Hier ist besonders die "AutoDiscoverServiceGuid interessant
Hier steht in der Regel der FQDN des Servers selbst drin. Wenn Sie einen Exchange Server installieren und ein Zertifikat für seinen Rechnernamen eingespielt haben, dann passt dies auch. Wenn Sie natürlich die mehrere Exchange Server über einen Loadbalancer erreichbar machen, dann können Sie diesen Wert anpassen.
Seit Exchange 2013 ist jede CAS-Rolle nur noch "Reverse Proxy". Der Client geht zum CAS-Rolle, die dann aber den Postfachserver des Benutzers abfragt. Die Postfachrolle ist also der aktive Teil bei Autodiscover unter Exchange 2013 und neuer.
Autodiscover und SCP
Das ist aber nur der erste Schritt. Damit die Clients überhaupt wissen, wo Sie nach diesem Webservice fragen müssen, veröffentlicht Exchange auch im Active Directory einen so genannten "Service Connection Point. Man kann diese Objekte recht einfach über eine Suche im AD und dem Filter "(objectclass=serviceconnectionpoint)" finden.
Sie können die Werte mit CSVDE einfach exportieren. (Bitte ihre Active Directory Domain verwenden und die Zeilenumbrüche entfernen)
csvde
-r "(&(objectclass=serviceconnectionpoint)
(|(keywords=77378F46-2C66-4aa9-A6A6-3E7A48B19596)
(keywords="67661d7F-8FC4-4fa7-BFAC-E1D7794C1F68")
)
)"
-l "dn,serviceBindingInformation,keywords"
-d "cn=configuration,dc=msxfaq,dc=de"
-f auto.csv
-t 3268
Wenn Sie den Filter auf die Keywords weglassen, dann ist die Ausgabe etwas "umfangreicher", weil es natürlich verschiedene SCPs gibt:
DN,serviceBindingInformation,keywords "CN=ABCHContactService,CN=ServiceEndpoints,CN=E2010Org,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=E2010,DC=local", http://pvt-contacts.msn.com/abservice/abservice.asmx, "CN=DomainPartnerManageDelegation,CN=ServiceEndpoints,CN=E2010Org,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=E2010,DC=local", https://domains.live.com/service/managedelegation.asmx, "CN=DomainPartnerManageDelegation2,CN=ServiceEndpoints,CN=E2010Org,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=E2010,DC=local", https://domains.live.com/service/managedelegation2.asmx, "CN=LiveFederationMetadata,CN=ServiceEndpoints,CN=E2010Org,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=E2010,DC=local", https://nexus.passport.com/FederationMetadata/2006-12/FederationMetadata.xml, "CN=LiveGetUserRealm,CN=ServiceEndpoints,CN=E2010Org,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=E2010,DC=local",https://login.live.com/GetUserRealm.srf, "CN=LiveServiceLogin2,CN=ServiceEndpoints,CN=E2010Org,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=E2010,DC=local",https://login.live.com/RST2.srf, "CN=Microsoft Exchange Online,CN=Microsoft Exchange Autodiscover,CN=Services,CN=Configuration,DC=E2010,DC=local",*.outlook.com,D3614C7C-D214-4F1F-BD4C-00D91C67F93F "CN=W2K8R2E2010,CN=Autodiscover,CN=Protocols,CN=W2K8R2E2010,CN=Servers,CN=Exchange Administrative Group (FYDIBOHF23SPDLT),CN=Administrative Groups, CN=E2010Org,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=E2010,DC=local", https://W2K8R2E2010.E2010.local/Autodiscover/Autodiscover.xml,Site=Default-First-Site-Name;77378F46-2C66-4aa9-A6A6-3E7A48B19596 "CN=MsoFederationMetadata,CN=ServiceEndpoints,CN=E2010Org,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=E2010,DC=local", https://nexus.microsoftonline-p.com/FederationMetadata/2006-12/FederationMetadata.xml, "CN=RTC Service,CN=Services,CN=Configuration,DC=E2010,DC=local",,83DF614F-9B36-465a-B861-EDEBD9C28A46;83C29870-1DFC-11D3-A193-0000F87A9099
Interessant ist hier für Autodiscover der "drittletzte" Eintrag, weil er das richtige "Keyword" enthält:
"77378F46-2C66-4aa9-A6A6-3E7A48B19596" weist auf URLs hin "67661d7F-8FC4-4fa7-BFAC-E1D7794C1F68" weist auf Domains hin
"CN=SRV01,CN=Autodiscover,CN=Protocols,CN=SRV01,CN=Servers,CN=Exchange Administrative Group (FYDIBOHF23SPDLT),CN=Administrative Groups,CN=MSXFAQ,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=msxfaq,DC=de",https://srv01.msxfaq.de/Autodiscover/Autodiscover.xml
Bei mir ist natürlich nur ein Server in der Liste enthalten. Aber auch dieser Punkt alleine "reicht" nicht, da aus dem Internet das Active Directory kaum zu erreichen ist. Aus diesem Grund versucht Outlook 2007 auch noch anhängig von der Mailadresse des Benutzers die folgenden URLs zu erreichen. Wenn ich dies also für User@firma.tld machen würde, dann fragt Outlook 2007 nach:
- https://autodiscover.firma.tld/autodiscover.xml
- https://autodiscover.firma.tld/autodiscover/autodiscover.xml
Damit dies also funktioniert, muss der Hostname "autodiscover" auflösbar sein.
Ich habe bislang noch nicht gesehen, dass Exchange oder das Setup alleine den entsprechenden Eintrag im DNS anlegt. Hier sind Sie also als Administrator gefordert, einen entsprechenden Eintrag in den jeweiligen DNS-Zonen vorzunehmen.
Zudem muss dieser ein SSL-Zertifikat haben.
Sie müssen nicht unbedingt ein offizielles Zertifikat für Autodiscover einsetzen.
Man kann durch Weglassen des "-generateRequest" auch ein selbstsigniertes
Zertifikat erstellen, was intern vollkommen ausreichend ist. (Siehe auch
E2K7: Zertifikate)
Autodiscover ist aber nicht nur für Exchange von Belang, sondern kann generell genutzt werden, um Outlook 2007 über eine XML-Datei zu steuern.
Autodiscovery A local xml file on the client für example and a regkey
http://office.microsoft.com/download/afile.aspx?AssetID=AM102105061033
Sehr ausführliches Dokument mit einer Beschreibung, wie Outlook die
XML-Datei interpretiert und wie diese Funktion auch fürPOP3, IMAP4 und SMTP
ohne Exchange genutzt werden kann, z.B.: durch eine lokale XML-Datei und
einem entsprechenden Eintrag in der Registrierung.
Autodiscover ist daher auch für Internetprovider und Firmen ohne Exchange eine nützliche Funktion.
- ServiceConnectionPoints
http://blogs.msdn.com/b/douggowans/archive/2007/06/28/serviceconnectionpoints.aspx
Autodiscover anpassen
Es steht nirgendwo fest zementiert, dass Namen der Server in ihrer Umgebung nicht verändern dürfen. Teilweise müssen Sie Autodiscover sogar anpassen, um in ihrer Umgebung die Funktion zu gewährleisten. Speziell wenn Sie den Namen des Serverzertifikats auf dem Exchange Server ersetzen, dann kann auch die Verbindung über den Service Connection Point (SCP) gestört sein. Daher gibt es zwei PowerShell Kommandos, mit denen Sie Exchange auf die veränderten Umgebungsbedingungen einstellen können.
- Set-ClientAccessServer
http://technet.microsoft.com/en-us/library/bb125157(EXCHG.80).aspx
Dieser Befehl steuert die Konfiguration des CAS-Servers selbst und primär die Konfiguration des Service Connection Points
Get-ClientAccessServer | fl aut* AutoDiscoverServiceCN : SRV01 AutoDiscoverServiceClassName : ms-Exchange-AutoDiscover-Service AutoDiscoverServiceInternalUri : https://srv01.msxfaq.de/Autodiscover/Autodiscover.xml AutoDiscoverServiceGuid : 78f73746-2c66-a4a9-6aa6-5963e7a48b19 AutoDiscoverSiteScope : {Paderborn}
- Set-AutodiscoverVirtualDirectory
http://technet.microsoft.com/en-us/library/aa998601.aspx
Hiermit können Sie für jedes der einzelnen virtuellen Autodiscover-Verzeichnisse abweichende URLs für intern und extern konfigurieren. Dies ist wieder relevant, wenn Sie die CASProxy-Funktion anpassen wollen. (Die Werte für "InternalURL" und "ExternalURL" sind normalerweise leer.
Get-AutodiscoverVirtualDirectory | fl Name : Autodiscover (Default Web Site) InternalAuthenticationMethods : {Basic, Ntlm, WindowsIntegrated} ExternalAuthenticationMethods : {Basic, Ntlm, WindowsIntegrated} BasicAuthentication : True DigestAuthentication : False WindowsAuthentication : True MetabasePath : IIS://srv01.msxfaq.de/W3SVC/1/ROOT/Autodiscover Path : D:\Program Files\Microsoft\Exchange Server\ClientAccess\Autodiscover Server : srv01 InternalURL : srv01.msxfaq.de/Autodiscover/Autodiscover.xml ExternalURL : autodiscover.msxfaq.de/Autodiscover/Autodiscover.xml Identity : srv01\Autodiscover (Default Web Site) OriginatingServer : srv01.msxfaq.de IsValid : True
Wenn Sie also intern z.B. das Zertifikat auf dem CAS-Server auf "Webmail.firma.de" ausstellen, dann wird eine Autodiscover-Anfrage auf "https://servername.firma.local" natürlich daneben gehen. Dann muss man Intern eben auch den SCP umstellen oder Sie verzichten auf den SCP und nutzen die DNS-Einträge, auf die Outlook zurück fällt, wenn eine Verbindung über den Service Connection Point nicht möglich ist.
Autodiscover und AD-Sites
Auch wenn ein Client intern per LDAP die Service Connection Points abfragen kann, so bedeutet dies in größeren Umgebungen, dass der Client doch einen "entfernten" CAS-Server erwischen würde. Auch dafür hat Microsoft gesorgt, indem einem CAS-Server der Scope mitgegeben werden kann, für den er "zuständig" ist. Wenn Sie einen CAS-Server installieren, dann ermittelt er selbständig anhand seiner IP-Adresse die AD-Site und trägt diese als Scope ein.
Allerdings passiert dies wohl nur beim Setup. Wer als nachträglich die Sites umbenennt oder den Server in eine andere Site verschiebt, sollte diese Einstellungen korrigieren:
Das geht mit dem "Set-ClientAccessServer"-CMDlet.
Set-ClientAccessServer AutoDiscoverSiteScope sitename
Wenn ein CAS-Server auch mehrere Sites abdecken soll, dann können Sie dies hier hinterlegen. Sie erkennen dies auch am Service Connection Point.
Oder natürlich über die Abfrage mit "Get-ClientAcccessServer":
Diese Einstellungen sind nur für Clients relevant, die auch per LDAP den SCP suchen und damit den "naheliegenden" CAS-Server ermitteln wollen.
You can use the Shell to
configure site affinity für the Autodiscover
service on the Microsoft Exchange Server 2010
Client Access server. When you configure site
affinity on the Client Access server, you enable
clients using Outlook 2007 and Outlook 2010 to
get Autodiscover information from the closest
Active Directory site. This provides
Autodiscover information to the Outlook clients
more quickly than if site affinity hasn't been
set
Configure the Autodiscover Service to use Site
Affinity
http://technet.microsoft.com/en-us/library/aa998575.aspx
- Set-ClientAccessServer
http://technet.microsoft.com/de-de/library/bb125157.aspx - Configure AutoDiscover Site Affinity
http://technet.microsoft.com/en-us/library/aa998575.aspx - Configuring Exchange 2007
Autodiscover Site Affinity
http://www.shudnow.net/2008/08/24/configuring-exchange2007-autodiscover-site-affinity/ - Deployment Considerations für the Autodiscover Service
http://technet.microsoft.com/en-us/library/aa997633.aspx
Details wie der Client den passenden CAS-Server auswählt -
Service Connections Points
http://blogs.msdn.com/b/douggowans/archive/2007/06/28/serviceconnectionpoints.aspx
By default Outlook 2007 queries AD to locate the autodiscover SCP's and chooses one at random. If you have set a site scope then Outlook sorts those with the same AD site to the top of the list and randomly chooses one of those - Configuring Exchange 2007 Autodiscover Site
Affinity
http://www.shudnow.net/2008/08/24/configuring-exchange2007-autodiscover-site-affinity/
Autodiscover mit Drittsystemen
Es muss nicht immer ein Exchange Server sein, der auf eine Anfrage per Autodiscover beantwortet. Outlook "versteht" durchaus auch Antworten für IMAP4 und POP3. Entsprechend können Webhoster z.B. auch mit Apache und PHP eine Antwort liefern.
- Konfigurationsdaten für automatische
Einrichtung von E-Mail-Clients bereitstellen
https://blog.bartlweb.net/2015/08/konfigurationsdaten-fur-automatische-einrichtung-von-e-mail-clients-bereitstellen/
Weitere Links
- Exchange - Autodiscover
- Autodiscover 365
- Kennwortbox
- Publishing with Service Connection Points
http://msdn2.microsoft.com/en-us/library/ms677638.aspx -
ServiceConnectionPoints
http://blogs.msdn.com/b/douggowans/archive/2007/06/28/serviceconnectionpoints.aspx