Exchange 2007 - Autodiscover

Autodiscover ist einer der Schlüsselkomponenten, wie Outlook 2007 und Windows Mobile 6.1 den Weg zum Exchange 2007 Server, dem Offline Adressbuch und anderen Exchange Diensten findet.

Hinweis:
Die erste Exchange 2007 Installation im Forest veröffentlicht einen "Service Connection Point" im Active Directory und wenn Outlook 2007 eingesetzt wird, dann findet Outlook diesen Eintrag und versucht diesen auch zu nutzen.
Kontrollieren Sie daher nach der Installation von Exchange 2007 diesen Eintrag. Zum Glück ist die Standardeinstellungen "korrekt", d.h. die URL im SCP entspricht dem Servername auf dem auch das korrekte Zertifikat installiert ist, welchem Outlook innerhalb der Domain auch vertraut.

Achtung
Nutzen ihre Anwender Outlook 2007 auf einem PC, der nicht Mitglied des Exchange Forest ist, dann versucht Outlook "autodiscover.maildomain.tld" als DNS-Host aufzulösen. Die dann genutzten Zertifikaten müssen für den Client vertrauenswürdig sein.

Mit dem Einsatz von Outlook 2007 wird die Funktion "Autodiscover" auch für die Verbindung per Internet mit RPC over HTTP wichtig, da Outlook den Exchange 2007 Server "erkennt" und dann immer per Autodiscover arbeitet. Entsprechend muss man Autodiscover, aber auch EWS und OAB aus dem Internet per SSL und Anmeldung erreichbar machen.

Outlook 2010 scheint die Antworten einer Autodiscover-Antwort zu "Cachen" (Verzeichnis C:\Users\%username%\AppData\Local\Microsoft\Outlook), so dass man in vielen Fällen auch ohne korrekte externe Konfiguration von extern arbeiten kann.

Autodiscover "Song"
http://msexchangeteam.com/files/12/attachments/entry449511.aspx
Details, warum der Song entstand beschreibt David Sterling, Exchange Web Services Engineer, auf http://msexchangeteam.com/archive/2008/08/07/449501.aspx

Webseite zum externen Test der Exchange Anbindung und DNS Einträge
https://www.testexchangeconnectivity.com/

Beachten Sie auch die How-To Seite E2K7:Autodiscover

Die Serverseite

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.

Outlook2007 Autodiscover

Weitere Informationen zu diesem virtuellen Verzeichnis erhalten Sie wieder über die Powershell

Get-AutodiscoverVirtualDirectory

Outlook Autodiscover

Get-ClientAccessServer | fl
PS1 Client Access
Hier ist besonders die "AutoDiscoverServiceGuid interessant

Autodiscover und Active Directory

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.

Autodiscover

Sie können die Werte mit CSVDE einfach exportieren. (Bitte ihre Active Directory Domain verwenden)

csvde -r "(objectclass=serviceconnectionpoint)" -l dn,serviceBindingInformation -d cn=configuration,dc=msxfaq,dc=de -f auto.ccsv

Die Datei enthält dann alle Objekte mit der URL:

DN,serviceBindingInformation
"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:

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 for 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.

Outlook 2007 und Autodiscover

Outlook 2007 ist von Hause aus auf Autodiscover eingestellt. Dazu nutzt Outlook sowohl das Active Directory als auch DNS.

Pfad: User Configuration\Administrative Templates\ Microsoft Office Outlook 2007\Tools | Accounts settings\Exchange
Eintrag: Automatically configure profile based on Active Directory Primary SMTP address

[HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Outlook\Autodiscover]
"msxfaq.de"="%programfiles%\Microsoft Office\Office12\msxfaq.de.xml"

<?xml version="1.0" encoding="utf-8" ?> 
<Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/responseschema/2006">
  <Response xmlns="http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a">
    <Account>
      <AccountType>email</AccountType> 
      <Action>redirectUrl</Action> 
      <RedirectUrl>https://autodiscover.msxfaq.de/autodiscover/autodiscover.xml</RedirectUrl> 
    </Account>
  </Response>
</Autodiscover>
version: 1
objectClass: top
objectClass: leaf
objectClass: connectionPoint
objectClass: serviceConnectionPoint
cn: SRV01
distinguishedName: 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
instanceType: 4
showInAdvancedViewOnly: TRUE
name: SRV01
objectGUID:: J5fERgH1HEOrf1V1dAoEmA==
keywords: Site=Paderborn
keywords: 77378F46-2C66-4aa9-A6A6-3E7A48B19596
systemFlags: 1073741824
serviceClassName: ms-Exchange-AutoDiscover-Service
serviceBindingInformation: https://SRV01.msxfaq.de/Autodiscover/Autodiscover.xml
serviceDNSName: SRV01
objectCategory: CN=Service-Connection-Point,CN=Schema,CN=Configuration,DC=msxfaq,DC=de

_autodiscover._tcp.msxfaq.com SRV priority=0, weight=100, port=443, owa.msxfaq.com

If Outlook is running on a domain-joined computer, Outlook first queries the Active Directory for a Service Connection Pointer (SCP) object.
Quelle: http://office.microsoft.com/search/redir.aspx?AssetID=AM102105061033

Da stellt sich natürlich die Frage was Firmen ohne Exchange 2007 machen, die Outlook 2007 einsetzen. Auch hier versucht Outlook den Service Connection Point zu suchen, aber wird ihn nicht finden. (Man kann ihn als Administrator von Hand anlegen.) und Outlook fragt natürlich auch nach dem DNS-Namen. Solange es beides nicht gibt, ist fast nichts von dieser versteckten Outlook Funktion zu sehen.

Outlook, Autodiscover SSL und das falsche Zertifikat
Outlook versucht beim Zugriff auf "Autodiscover" zuerst immer per HTTPS eine Verbindung aufzubauen. Wenn hinter dieser URL dann ein Server mit einem "falschen" Zertifikat antwortet, dann beschwert sich Outlook und warnt.
Ist hinter dieser URL jedoch keine Verbindung per HTTPS möglich, dann nutzt Outlook HTTP um eine Umleitung auf eine anderen Webseite zu erhalten.

Es kann daher interessant sein, einen "Autodiscover"-Eintrag im offiziellen Namensraum z.B.: auf die Firmenwebseite (ohne SSL) zu verweisen und dort einfach den Pfad "Autodiscover" auf eine andere Webseite (z.B. owa.firma.tld) mit dem passenden Zertifikat umzuleiten. So erspart man sich den Namen "Autodiscover" im SAN-Zertifkate.

Autodiscover Flussdiagramm 

Entgegen der Dokumentation von Microsoft habe ich sehr wohl beobachtet, dass die POP3/IMAP4/SMTP-Optionen geprüft werden, selbst wenn man im Active Directory ist. Die Dokumentation von Microsoft besagt hingegen, dass erst die Active Directory Daten ausgelesen und versucht werden und erst nach dem Misserfolg die anderen Wege "probiert" werden.

Autodiscover und redirect
Autodicover erlaubt eine Konfiguration, bei der autodiscover.domain.tld auf einen Webserver verweist, der KEIN SSL anbietet, sondern nur auf HTTP reagiert und den Client umlenkt. Das funktioniert mit Outlook 2007 SP1 recht gut aber ein iPhone (ActiveSync) mag das nicht und auch die Exchange Web Services benötigen Zusatzcode, um diese Exception abzufangen.

Wichtig sind hier die beiden folgenden weiterführenden Links:

Autodiscover "testen"

Outlook 2007 enthält eine kleine aber wichtige Funktion, um die Auflösung der Autodiscover-Funktion zu prüfen. Sie ist, wie auch andere Funktionen, hinter dem Outlook 2007 Icon versteckt.

Sie müssen dazu nur bei gestartetem Outlook die "STRG"-Taste (CTRL) gedrückt halten und mit der rechten Maustaste auf das Outlook Icon neben der Uhr in der Taskleiste klicken. Im Kontextmenü finden Sie dann einen Punkt E-Mail-Autokonfiguration testen...".

Autodiscover

Im folgenden Fenster geben Sie dann einfach ihre Mailadresse und das Kennwort für das entsprechende Konto ein. Wenn Sie einen Exchange Server einsetzen, dann sollten Sie "Guesssmart" einfach abschalten, da damit nur POP3/IMAP4-Verbindungen versucht werden, die man beim Einsatz von Outlook und Exchange besser vermeidet.

Wenn es dann aber funktioniert hat, dann sehen Sie im "Ergebnis"-Fenster die Rückmeldung, welche Dienste wie angesprochen werden. Es ist besonders gut zu erkennen, dass AutoDiscover nicht nur für die Erstkonfiguration des MAPI-Profils zuständig ist, sondern auch Offline Adressbücher "OAB", Frei/Belegt-Zeiten (Free/Busy) und auch Abwesenheitsassistenten (OOF) über diesen Weg bestimmt werden.

Autodiscover OK

Zumindest innerhalb ihres Netzwerks sollte Autodiscover dank Active Directory und Service Connection Point immer funktionieren.

Autodiscover und Outlook 2007 SP1

Wenn Sie "sicher" stellen können, dass alle Client auch Outlook 2007 SP1 oder neuer oder eben Outlook 2003 und älter einsetzen, dann können Sie mit dem DNS-SRV-Eintrag die ganzen Aufwände für ein SAN-Zertifikat oder eine Autodiscover Webseite ohne SSL mit Umleitung auf eine andere Seite sparen und einen SRV-Record im DNS eintragen:

Autodiscover im DNS

Den Erfolg des Eintrags können Sie per NSLOOKUP einfach prüfen

NSLookup auf SRV-Record

Der Eintrag verweist auf den Namen eines Webserver mit dem "passenden" Zertifikat. Outlook 2007 SP1 erkennt den Eintrag aber fragt einmal nach, ob diese Umleitung auch so in Ordnung ist.

Outlook und SRV-Record

Ein Test über die Outlook 2007 "Test Autodiscover"-Funktion zeigt auch hier dann die Umleitung im Protokoll an.

Outlook Test Autodiscover mit SRV-Record

Man sieht hier gut, dass Outlook erst einmal die alten Zugriffe auf den Domainnamen, auf Autodiscover per SSL und auf Autodiscover als "Redirect-Check" versucht um dann aber einen "SRV-Record Lookup" zu machen, der diesmal zum Erfolg führt und Outlook auf die primäre Seite umleitet. Da bekommt der dann auch per SSL verschlüsselt eine Antwort und kann weiter arbeiten.

Es gibt berichte, dass nicht alle DSL-Router, die auch als DNS-Proxy fungieren, mit den SRV-Records arbeiten. Wenn Sie also an einem privaten Netzwerk arbeiten und Autodiscover nicht funktioniert, dann geben Sie doch einfach mal das folgende ein:

NSLookup prüft SRVrecord 

Hier sehen Sie die Anfrage aus den SRV-Record von Net at Work. Wenn diese Anfrage oder die Anfrage auf ihre Domain nicht funktioniert, dann fragen Sie mit NSLOOKUP mal einen anderen Server anstelle ihres Routers (meist 192.168.0.1)

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

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}
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\Clie
                                ntAccess\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 "manuell"

Wie sie weiter oben schon gelesen haben, müssen Sie die nicht DNS-Funktionen von Outlook nutzen, sondern können auch direkt eine vorbereitete XML-Datei einstellen. Hier ein Beispiel, was sie natürlich auf ihre Anforderungen anpassen müssen.

Achtung.
Die Tags der XML-Datei sind "Case-Sensibel", d.h. Groß/Kleinschreibung muss unbedingt beachtet werden. Das Tag "OABUrl2" ist als Beispiel zu sehen aber wird nicht ausgewertet. Es darf nur ein <OABUrl>-Tag geben.

<Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/responseschema/2006">
  <Response xmlns="http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a">
    <Account>
      <AccountType>email</AccountType>
      <Action>settings</Action>
      <Protocol>
        <Type>EXCH</Type>
        <Server>srv01.msxfaq.de</Server>
        <ASUrl>https://cas.msxfaq.de/ews/exchange.asmx</ASUrl>
        <OOFUrl>https://cas.msxfaq.de/ews/exchange.asmx</OOFUrl>
        <UMUrl>https://cas.msxfaq.de/unifiedmessaging/service.asmx</UMUrl>
        <OABUrl>Public Folder</OABUrl>
        <OABUrl2>https://cas.msxfaq.de/OAB/d29844a8449-742e-4c68-8820-0fb77b34576b/</OABUrl2>
      </Protocol>
      <Protocol>
        <Type>EXPR</Type>
        <Server>srv01.msxfaq.de</Server>
        <ASUrl>https://cas.srv01.msxfaq.de/ews/exchange.asmx</ASUrl>
        <OOFUrl>https://cas.srv01.msxfaq.de/ews/exchange.asmx</OOFUrl>
        <UMUrl>https://cas.srv01.msxfaq.de/unifiedmessaging/service.asmx</UMUrl>
        <OABUrl>Public Folder</OABUrl>
        <OABUrl2>https://cas.srv01.msxfaq.de/OAB/d29844a9-724e-468c-8820-0f7b345b767b/</OABUrl2>
      </Protocol>
    </Account>
  </Response>
</Autodiscover>

Weitere Informationen hierzu finden Sie auch auf den folgenden Seite:

Aktiviert wird die XML-Datei über einen Eintrag in der Registrierung, welchen Sie auch per Gruppenrichtlinien setzen können. Die XML-Datei können Sie natürlich auch per GPO verteilen.

Autodiscover in Regedit

Alternativ können Sie auch einfach eine REG-Datei ähnlich der folgenden importieren:

Windows Registry Editor Version 5.00

[HKEY_USERS\.DEFAULT\Software\Microsoft\Office\12.0\Outlook\AutoDiscover]
"msxfaq.de"="C:\\PROGRA~1\\MIF5BA~1\\Office12\\OUTLOO~1\\msxfaq.XML"

Der Name des Schlüssels muss der Maildomäne entsprechen. In Regedit sehen Sie auch, dass Outlook eine ganze Menge XLM-Dateien bereits "vorgeladen" mitbringt. Es handelt sich um die größeren US-Amerikanischen Provider, die Outlook 2007 damit helfen, die POP3, IMAP4 und SMTP-Server zu finden.

Autodiscover und Windows Mobile

Seit Windows Mobile 6.1 kann der Anwender noch einfacher seine ActiveSync-Verbindung herstellen. Er muss auf dem Gerät mit Internetzugang nur seine Mailadresse und sein Kennwort eingeben. Das Windows Mobile 6.1 Gerät nutzt dann die Domäne um über DNS den Autodiscover Server "autodiscover.maildomain.tld" zu finden und per HTTP die Autodiscover-URL abzufragen.

Dazu muss der Administrator wieder bei Exchange 2007 die externe URL bzw. den Namen des ActiveSync-Servers in der Konfiguration hinterlegen, damit die XML-Datei auch die Informationen enthält.

Set-ActiveSyncVirtualDirectory -Identity "COMPUTERNAME\Microsoft-Server-ActiveSync (Standardwebseite)" -ExternalURL "https://mobil.firma.tld/"

Set-ActiveSyncVirtualDirectory -Identity "COMPUTERNAME\Microsoft-Server-ActiveSync (Standardwebseite)" -ActiveSyncServer "https://mobil.firma.tld/"

Zusätzlich zu den allgemeinen globalen Einstellungen pro CAS-Server können auch auf dem virtuellen Verzeichnis "Microsoft-Server-ActiveSync" weitere Einstellungen getätigt werden:

Zusätzlich gibt es hier noch weitere Einstellungen zur Authentifizierung.

Weitere Informationen finden Sie in der BPOS Hilfe

Autodiscover Vorlagen für Outlook ohne Exchange

Mit der Installation von Outlook 2007 liefert Microsoft sogar schon einige Vorlagen für große Webhoster wie Yahoo mit. Diese befinden sich als XML-Dateien unter "C:\Program Files\Microsoft Office\Office12\OutlookAutoDiscover\" und werden in der Registrierung unter HKEY_Current_User\Software\Microsoft\Office\12.0\Outlook\Autodiscover referenziert. Am Beispiel von Yahoo.de kann man gut erkennen, dass hier Outlook die Position der POP3 und SMTP-Server mitgeteilt wird.

Autodiscover Vorlagen in Outlook

Eigentlich erschreckend, dass die großen deutschen Hoster wie GMX, WEB.DE und andere hier nicht mit auftauchen und Yahoo und viele andere immer noch kein Zugriff per SSL erlauben. Da ist es für Spammer dann doch sehr einfach, Accounts zu hacken.

Autodiscover mit Powershell prüfen.

Allein mit Outlook und installierter Powershell kann man ganz einfach die XML-Datei erhalten

(New-Object -ComObject Outlook.Application).session.autodiscoverxml

Ideal um z.B. eine Überwachung auszuführen, wenn ihnen "Test-AutodiscoverVirtualdirectory" nicht reichen sollte.

Autodiscover und Umleitung

Ehe Outlook 2007 SP1 auch mit SRV-Records arbeiten konnte, konnte ein Admin also nur ein Zertifikat für "autodiscover.maildomain.tld" konfigurieren oder ohne SSL einen HTTP-Redirect machen. Das funktioniert mit Outlook 2007 schon sehr gut aber wer per Exchange Web Services darauf zugreifen will, muss eine "Callback"-Funktion einrichten, die die Rückfrage bezüglich der "Umleitung" behandelt. Siehe auch EWS

Weitere Links

Keywords: Exchange2K7 Exchange 2007