Outlook 2007 mit Exchange 2016

Der Exchange 2016 hat Fahrt auf genommen und viele Firmen, die Exchange 2010 einsetzen und nicht nach Office 365 migrieren, werden langsam ihre alten Exchange 2010 Server nach vielen Betriebsjahren aktualisieren müssen. Sowohl Hardware als auch Software sind in die Jahre gekommen. Wer aber keine E3/E5-Paket lizenziert, wird vielleicht auf einigen Desktops noch mit Office 2007/Outlook 2007 arbeiten. Mit Exchange 2013 ist das auch problemlos möglich aber was passiert mit Exchange 2016?

Microsoft Statement

Die Aussagen von Microsoft sind klar: Mindestvoraussetzung für Outlook mit den Betrieb von Exchange 2016 ist Version 2010 mit Hotfixes. Erst ab Outlook 2010 funktioniert z.B. MAPI over HTTP. Zukünftig möchte Microsoft, dass alle Client MAPI/HTTP oder EWS nutzen. Das erspart die mehrfache Verpackung von RPCoverHTTP und erst recht die native TCP-Verbindung.

Nun ist aber insbesondere RPCoverHTTP kein neues Protokoll, sondern wurde schon von Exchange 2003 und Outlook 2003 unterstützt und auch Exchange 2016 unterstützt noch RPCoverHTTP. Insofern hatte ich die Hoffnung, dass Exchange 2016 vielleicht auch Outlook 2007 weiter den Zugang erlaubt, auch wenn es offiziell nicht unterstützt ist. Die Build-Nummer von Exchange 2016 (14.2) erweckt ja den Eindruck es wäre nur ein Service Pack 2. Und es gibt viel, was Microsoft einfach nicht mehr testet aber dennoch funktioniert. Ein Restrisiko bleibt aber, dass eine Funktion mit einem Update plötzlich nicht mehr geht. Also ist es an der Zeit das zu testen.

Windows XP mit Outlook 2007

Also habe ich eine alte Windows XP Umgebung mit Outlook 2007 aus meinem Archiv geholt und als VM gestartet. Dass eine direkte Verbindung per MAPI/TCP nicht möglich ist, wird allen klar sein. Hier ist Exchange 2016 nicht mehr erreichbar. Aber über Autodiscover sollte der Client durchaus auch die anderen Zugänge erhalten und entsprechend dann RPC/HTTP nutzen. Also habe ich Fiddler mit aktiviert um etwas genauer in den HTTP-Datenstrom zu schauen, wie ein Outlook 2007 auf Windows XP (SP3) sich mit meinem Exchange 2016 CU3 Server (On-Prem) verbindet:

Gut zu sehen ist, dass Outlook die normale AutoDiscover-Anfragen auf "msxfaq.net" und dann auf "autodiscover.msxfaq.net" stellt und bei Paket 10 auch tatsächlich ein 200 OK bekommt. Anhand der Pakete 11,12 und 13,15 können Sie schon vermuten, welche Antwort der Client bekommen hat, ehe er die RPCProxy-Anfrage stellt. Das Paket 16 liefert sogar ein "200 OK". Dennoch kommt Outlook nicht weiter und frage noch mal nach den Postfachdaten:

Outlook 2007 kann keine Verbindung herstellen, egal, was ich hier eingebe und auch eine manuelle Konfiguration über den RPC/HTTP-Service gelingt nicht.

Das Paket 10 enthält folgende Daten (gekürzt und Hostnamen verändert.)

<?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">
    <User>
      <DisplayName>Carius, Frank</DisplayName>
      <LegacyDN>/o=Net at Work GmbH/ou=Paderborn/cn=Recipients/cn=fcarius</LegacyDN>
      <AutoDiscoverSMTPAddress>Frank.Carius@msxfaq.net</AutoDiscoverSMTPAddress>
      <DeploymentId>GUID</DeploymentId>
    </User>
    <Account>
      <AccountType>email</AccountType>
      <Action>settings</Action>
      <MicrosoftOnline>False</MicrosoftOnline>
      <ConsumerMailbox>False</ConsumerMailbox>
      <Protocol>
        <Type>EXCH</Type>
        ...
      </Protocol>
      <Protocol>
        <Type>EXPR</Type>
        <Server>owa.msxfaq.net</Server>
        <SSL>On</SSL>
        <AuthPackage>Basic</AuthPackage>
        <ASUrl>https://owa.msxfaq.net/ews/exchange.asmx</ASUrl>
        <EwsUrl>https://owa.msxfaq.net/ews/exchange.asmx</EwsUrl>
        <EmwsUrl>https://owa.msxfaq.net/ews/exchange.asmx</EmwsUrl>
        <SharingUrl>https://owa.msxfaq.net/ews/exchange.asmx</SharingUrl>
        <EcpUrl>https://owa.msxfaq.net/owa/</EcpUrl>
        <EcpUrl-um>?path=/options/callanswering</EcpUrl-um>
        <EcpUrl-aggr>?path=/options/connectedaccounts</EcpUrl-aggr>
        <EcpUrl-mt>options/ecp/PersonalSettings/DeliveryReport.aspx?rfr=olk&amp;exsvurl=1&amp;IsOWA=&lt;IsOWA&gt;&amp;MsgID=&lt;MsgID&gt;&amp;Mbx=&lt;Mbx&gt;&amp;realm=msxfaq.net</EcpUrl-mt>
        <EcpUrl-ret>?path=/options/retentionpolicies</EcpUrl-ret>
        <EcpUrl-sms>?path=/options/textmessaging</EcpUrl-sms>
        <EcpUrl-photo>?path=/options/myaccount/action/photo</EcpUrl-photo>
        <EcpUrl-extinstall>?path=/options/manageapps</EcpUrl-extinstall>
        <OOFUrl>https://owa.msxfaq.net/ews/exchange.asmx</OOFUrl>
        <UMUrl>https://owa.msxfaq.net/ews/UM2007Legacy.asmx</UMUrl>
        <OABUrl>https://owa.msxfaq.net/OAB/xxxxxx-90c7-475a-beb9-1c8e8e3c91c8/</OABUrl>
        <ServerExclusiveConnect>on</ServerExclusiveConnect>
        <EwsPartnerUrl>https://owa.msxfaq.net/ews/exchange.asmx</EwsPartnerUrl>
        <GroupingInformation>Paderborn</GroupingInformation>
      </Protocol>
      <Protocol>
        <Type>WEB</Type>
        <Internal>
          <OWAUrl AuthenticationMethod="Basic, Fba">https://ex2016.msxfaq.net/owa/</OWAUrl>
          <Protocol>
            <Type>EXCH</Type>
            <ASUrl>https://ex2016.msxfaq.net/EWS/Exchange.asmx</ASUrl>
          </Protocol>
        </Internal>
        <External>
          <OWAUrl AuthenticationMethod="Fba">https://owa.msxfaq.net/owa/</OWAUrl>
          <Protocol>
            <Type>EXPR</Type>
            <ASUrl>https://owa.msxfaq.net/ews/exchange.asmx</ASUrl>
          </Protocol>
        </External>
      </Protocol>
      <Protocol>
        <Type>EXHTTP</Type>
        <Server>ex2016.msxfaq.net</Server>
        <SSL>On</SSL>
        <AuthPackage>Ntlm</AuthPackage>
        <ASUrl>https://ex2016.msxfaq.net/EWS/Exchange.asmx</ASUrl>
        <EwsUrl>https://ex2016.msxfaq.net/EWS/Exchange.asmx</EwsUrl>
        <EmwsUrl>https://ex2016.msxfaq.net/EWS/Exchange.asmx</EmwsUrl>
        <SharingUrl>https://ex2016.msxfaq.net/EWS/Exchange.asmx</SharingUrl>
        <EcpUrl>https://ex2016.msxfaq.net/owa/</EcpUrl>
        <EcpUrl-um>?path=/options/callanswering</EcpUrl-um>
        <EcpUrl-aggr>?path=/options/connectedaccounts</EcpUrl-aggr>
        <EcpUrl-mt>options/ecp/PersonalSettings/DeliveryReport.aspx?rfr=olk&amp;exsvurl=1&amp;IsOWA=&lt;IsOWA&gt;&amp;MsgID=&lt;MsgID&gt;&amp;Mbx=&lt;Mbx&gt;&amp;realm=msxfaq.net</EcpUrl-mt>
        <EcpUrl-ret>?path=/options/retentionpolicies</EcpUrl-ret>
        <EcpUrl-sms>?path=/options/textmessaging</EcpUrl-sms>
        <EcpUrl-photo>?path=/options/myaccount/action/photo</EcpUrl-photo>
        <EcpUrl-extinstall>?path=/options/manageapps</EcpUrl-extinstall>
        <OOFUrl>https://ex2016.msxfaq.net/EWS/Exchange.asmx</OOFUrl>
        <UMUrl>https://ex2016.msxfaq.net/EWS/UM2007Legacy.asmx</UMUrl>
        <OABUrl>https://ex2016.msxfaq.net/OAB/xxxxxx-90c7-475a-beb9-1c8e8e3c91c8/</OABUrl>
        <ServerExclusiveConnect>On</ServerExclusiveConnect>
      </Protocol>
      <Protocol>
        <Type>EXHTTP</Type>
        <Server>owa.msxfaq.net</Server>
        <SSL>On</SSL>
        <AuthPackage>Basic</AuthPackage>
        <ASUrl>https://owa.msxfaq.net/ews/exchange.asmx</ASUrl>
        <EwsUrl>https://owa.msxfaq.net/ews/exchange.asmx</EwsUrl>
        <EmwsUrl>https://owa.msxfaq.net/ews/exchange.asmx</EmwsUrl>
        <SharingUrl>https://owa.msxfaq.net/ews/exchange.asmx</SharingUrl>
        <EcpUrl>https://owa.msxfaq.net/owa/</EcpUrl>
        <EcpUrl-um>?path=/options/callanswering</EcpUrl-um>
        <EcpUrl-aggr>?path=/options/connectedaccounts</EcpUrl-aggr>
        <EcpUrl-mt>options/ecp/PersonalSettings/DeliveryReport.aspx?rfr=olk&amp;exsvurl=1&amp;IsOWA=&lt;IsOWA&gt;&amp;MsgID=&lt;MsgID&gt;&amp;Mbx=&lt;Mbx&gt;&amp;realm=msxfaq.net</EcpUrl-mt>
        <EcpUrl-ret>?path=/options/retentionpolicies</EcpUrl-ret>
        <EcpUrl-sms>?path=/options/textmessaging</EcpUrl-sms>
        <EcpUrl-photo>?path=/options/myaccount/action/photo</EcpUrl-photo>
        <EcpUrl-extinstall>?path=/options/manageapps</EcpUrl-extinstall>
        <OOFUrl>https://owa.msxfaq.net/ews/exchange.asmx</OOFUrl>
        <UMUrl>https://owa.msxfaq.net/ews/UM2007Legacy.asmx</UMUrl>
        <OABUrl>https://owa.msxfaq.net/OAB/xxxxxx-90c7-475a-beb9-1c8e8e3c91c8/</OABUrl>
        <ServerExclusiveConnect>On</ServerExclusiveConnect>
      </Protocol>
      <AlternativeMailbox>
        <Type>Archive</Type>
        <DisplayName>Online Archive - Carius, Frank</DisplayName>
        <SmtpAddress>GUID@msxfaq.mail.onmicrosoft.com</SmtpAddress>
        <OwnerSmtpAddress>Frank.Carius@msxfaq.net</OwnerSmtpAddress>
      </AlternativeMailbox>
      <AlternativeMailbox>
        <Type>Delegate</Type>
        <DisplayName>Room1</DisplayName>
        <SmtpAddress>room1@msxfaq.net</SmtpAddress>
        <OwnerSmtpAddress>room1@msxfaq.net</OwnerSmtpAddress>
      </AlternativeMailbox>
      <PublicFolderInformation>
        <SmtpAddress>Mailbox1@msxfaq.net</SmtpAddress>
      </PublicFolderInformation>
    </Account>
  </Response>
</Autodiscover>

Der Fachmann sieht hier schnell, dass als Type neben EXCH (MAPI/TCP) auch EXPR (RPC/HTTP), WEb (OWA) und die beiden neuen Zugänge für MAPI/HTTP beschrieben sind. Interessant finde ich schon, das EXCH weiter vorhanden ist aber nicht nutzbar ist. Aber Outlook 2007 "versteht" hier dann wohl doch nur EXPR und versucht darüber den Zugriff. Das Paket 16 zeigt diesen Versuch:

Interessant ist hier zu sehen, dass die Rückgabe-Daten quasi "leer" sind Als Gegenprobe habe ich die Verbindung natürlich auch noch mal von Intern versucht und auch ohne Fiddler als Proxy. Auch der Versuch ein Office 365-Postfach zu erreichen, war erfolglos:

Halten wir also fest: Outlook 2007 gegen Exchange 2016 scheint wirklich nicht zu gehen. Entweder "versteht "der Server die RPCProxy-Anfrage nicht oder die Rückantwort ist absichtlich blockiert.

Schade, dass Microsoft hier keine aussagekräftige Fehlermeldung a la "Ihr Client ist zu alt" mit Angabe der Mindestversion eingebaut hat.

Auswertung auf dem Server

Auf dem Exchange 2016 Server finden sich die Spuren des Outlook 2007-Clients natürlich an mehreren Stellen. Die erste Anlaufstation ist der IIS und seine Log-Dateien, da alle RCP/HTTP-Zugriffe über den IIS ankommen. Bei Exchange 2016 gibt es hier dann zwei Log-Dateien zu beachten. Zuerst einmal die Treffer auf dem "Frontend Server" in "C:\inetpub\logs\LogFiles\W3SVC1"

2016-10-21 15:43:05 192.168.100.33 POST /autodiscover/autodiscover.xml &CorrelationID=<empty>;&cafeReqId=xxxxxxxx-35d6-47a5-a09e-7ba42ca78824; 443 - 192.168.103.64 Microsoft+Office/12.0+(Windows+NT+5.1;+Microsoft+Office+Outlook+12.0.6662;+Pro) - 401 0 0 15
2016-10-21 15:43:05 192.168.100.33 POST /autodiscover/autodiscover.xml &CorrelationID=<empty>;&cafeReqId=xxxxxxxx-0c3a-4dde-8e85-9497ff160d4a; 443 - 192.168.103.64 Microsoft+Office/12.0+(Windows+NT+5.1;+Microsoft+Office+Outlook+12.0.6662;+Pro) - 401 1 2148074254 0
2016-10-21 15:43:05 192.168.100.33 POST /autodiscover/autodiscover.xml &CorrelationID=<empty>;&cafeReqId=xxxxxxxx-2abf-4ced-8dee-82479c54e89b; 443 - 192.168.103.64 Microsoft+Office/12.0+(Windows+NT+5.1;+Microsoft+Office+Outlook+12.0.6662;+Pro) - 401 1 2148074252 0
2016-10-21 15:43:05 192.168.100.33 POST /autodiscover/autodiscover.xml &CorrelationID=<empty>;&cafeReqId=xxxxxxxx-24d9-4361-9ebb-339696cd261f; 443 - 192.168.103.64 Microsoft+Office/12.0+(Windows+NT+5.1;+Microsoft+Office+Outlook+12.0.6662;+Pro) - 401 1 2148074254 0
2016-10-21 15:43:05 192.168.100.33 POST /autodiscover/autodiscover.xml &CorrelationID=<empty>;&cafeReqId=xxxxxxxx-83a8-4845-a8e5-753aafcea7ff; 443 - 192.168.103.64 Microsoft+Office/12.0+(Windows+NT+5.1;+Microsoft+Office+Outlook+12.0.6662;+Pro) - 401 1 2148074252 0
2016-10-21 15:43:06 192.168.100.33 POST /autodiscover/autodiscover.xml &CorrelationID=<empty>;&cafeReqId=xxxxxxxx3c02-4427-9910-393a6f0ff8ae; 443 - 192.168.103.64 Microsoft+Office/12.0+(Windows+NT+5.1;+Microsoft+Office+Outlook+12.0.6662;+Pro) - 401 1 2148074254 0
2016-10-21 15:43:06 192.168.100.33 POST /autodiscover/autodiscover.xml &CorrelationID=<empty>;&cafeReqId=xxxxxxxx-2044-4547-b62e-0feec907bde0; 443 MSXFAQ\fcarius 192.168.103.64 Microsoft+Office/12.0+(Windows+NT+5.1;+Microsoft+Office+Outlook+12.0.6662;+Pro) - 200 0 0 421

Auf dem Backend (C:\inetpub\logs\LogFiles\W3SVC2) kommt nur eine Anfrage an. Das ist auch verständlich, da der Frontend Server die Authentifizierung abwickelt und erst den erfolgreich authentifizierten Request weiter reicht.

2016-10-21 15:43:06 fe80::c576:b2c3:f631:f737%12 POST /autodiscover/autodiscover.xml &reqId=xxxxxxxx-2044-4547-b62e-0feec907bde0 444 MSXFAQ\fcarius fe80::c576:b2c3:f631:f737%12 Microsoft+Office/12.0+(Windows+NT+5.1;+Microsoft+Office+Outlook+12.0.6662;+Pro) - 200 0 0 343

Dann habe ich mich auf die Suche nach den Anfragen zu RPCProxy gemacht. Hier kann ich aber noch keine Antwort liefern, in dem Request ist die Outlook-Version als "UserAgent" nicht zu sehen. Aber ich habe alle drei relevanten Verzeichnisse durchsucht aber meinen Clients nicht finden können:

C:\Program Files\Microsoft\Exchange Server\V15\Logging\RpcHttp\W3SVC1 Frontend
C:\Program Files\Microsoft\Exchange Server\V15\Logging\RpcHttp\W3SVC2 Backend
C:\Program Files\Microsoft\Exchange Server\V15\Logging\RPC Client Access

Irgendetwas hat mir aber einen 200 OK geliefert. Auch im Eventlog habe ich keinen Hinweis gefunden. Wenn ich auf dem gleichen PC aber ein Outlook 2013 einsetze und nachweislich den gleichen Pfad anspreche, dann kommen die Anfragen durch. Der gleiche Client gegen eine Exchange 2013 Umgebung funktioniert aber und wenn ich den Exchange 2016 Server "unerreichbar" mache, dann kommt keine Antwort an. Wie und warum der Exchange 2016 den Outlook 2007 Client nun erkennt und die Antwort ohne Log verwirft, habe ich nicht weiter untersucht.

Nicht getestet

Leider hat meine Test und Demo-Umgebung keinen Exchange 2010 Server mehr in der Umgebung. insofern konnte ich nicht testen, ob Outlook 2007 vielleicht nur nicht mit dem Exchange 2016 Backend Server zurecht kommt.

Diese Information oder Tests kann ich vielleicht später einmal nachliefern, wenn ich in einer Umgebung dies nachstellen kann. Da die Konfiguration sowieso "unsupported" ist, habe ich so eine Umgebung jetzt nicht mehr nachgebaut.

Praktische Bedeutung für Migrationen

Bei der von mir getesteten Konfiguration können Sie nicht davon ausgehen, dass ein "Not Supported" vielleicht doch ein "geht aber doch" bedeutet. In diesem Fall ist es für Outlook 2007 unmöglich ein Exchange 2016 Postfach über einen Exchange 2016 Frontend Server anzusprechen. Autodiscover funktioniert aber noch. Das muss aber nicht bedeutet, dann der darin enthaltene Frontend Server später der Exchange 2010 Server wird. Nur bei "Cross Site"-Access wird Exchange 20106 einen Redirect des Clients zu einem CAS-Server in einer anderen Seite machen, sofern dieser entsprechende "External-URLs" gepflegt hat. Eine Grundaussage bei einer Koexistenz ist ja, dass 100% des Client-Traffic über die Exchange 2016 Frontend Server laufen sollte, die dann die Clients auf den "richtigen" Backend-Server weiter geben.

Das heißt aber nicht, das man das auch wirklich immer tun muss. Wenn ich einen Client weiterhin auf den alten Exchange 2010 Server verweisen lasse, dann wird er vermutlich weiter funktionieren, solange auch noch sein Postfach auf einem kompatiblen Postfachs-Server liegt. Damit ist es z.B. denkbar, dass Sie die Client mit Outlook 2007 z.B. über eine lokale HOSTS-Datei oder statische Konfiguration über eine Gruppenrichtlinie oder entsprechende PRF-Dateien auf den weiterhin vorhandenen Exchange 2010/2013-Server schicken, während alle neuen Clients schon den Exchange 2016 Frontend-Service nutzen.

Beachten Sie aber, dass dies Auswirkungen auf Betrieb und Migration hat, z.B.:

  • Das Postfach muss auf Exchange 2010/2013 bleiben
    Sie können das Postfach nicht nach Exchange 20176 verschieben, da ein Exchange 2010/2013 CAS-Service keinen Exchange 2016 Postfachdienst ansteuern kann
  • Stellvertretungen, Teampostfächer
    Ein so getuntes Outlook kann auch keine anderen Postfächer auf Exchange 2016 ansteuern. Damit dürfen Sie auch von diesen Benutzern zusätzlich geöffnete Postfächer noch nicht migrieren
  • Public Folder
    Verständlicherweise müssen auch die öffentlichen Ordner weiter auf Exchange 2010/2013 bleiben. Wobei dies insofern kein Problem ist, da die öffentlichen Ordner sowieso erst am Ende der Migration umgezogen werden. Bis dahin müssen Sie also alle Clients aktualisiert haben

Es gibt natürlich immer noch die Option, dass Outlook 2007 aus das Postfach per IMAP4 oder gar POP3 zugreift. Wobei dies aus meiner Sicht keine ernstzunehmende Option darstellt

Selbst wenn dass alles letztlich funktioniert, so bleibt es ein wackliges Pflaster, auf das Sie sich hier begeben. Besser ist es vorab alles Clients auf Outlook 2010 mit dem aktuellsten Update zu aktualisieren.

Da viele Administratoren gar nicht wissen, welche Outlook-Versionen von welchem Anwender auf welchen Clients noch genutzt werden, rate ich ihnen zu einer Auswertung der IISLogs in Bezug auf den UserAgent. "Outlook+12" sollte dort nicht mehr erscheinen. ein einfacher Findstr reicht hier schon aus

C:\>findstr "Outlook+12" c:\inetpub\logs\LogFiles\W3SVC1\*.*

Alternativ auch per PowerShell

Select-String -pattern "outlook+12" -Path *.* -simplematch

Wer die Ausgabe in eine Datei schreibt, kann z.B. mit Power Bi schicke Auswertungen damit anfertigen.

Weitere Links