OWC/OOS und Exchange

Seit Exchange 2013 ist die Installation eines Office Web App-Servers oder des Office Online Servers erforderlich, wenn in OWA auch Ofice-Anlagen eingesehen und ab Exchange 2106 sogar bearbeitet werden sollen. Die Funktion des "Work-Viewer" wurde von Exchange an diesen Office Services ausgelagert. Diese Seite beschreibt die Integration und Besonderheit mit Exchange:

Office Online Server bereitstellen

Die Fragen zur Bereitstellung, Installation und Lizenzierung habe ich auf der eigenen Seite Office Online Server beschrieben. Es gibt auch einige weitere Blog-Seiten, die sich dem Thema widmen:

Achtung.
Stellen Sie sicher, dass Sie die Version des Servers installieren, die mit ihrer Exchange Version kompatibel ist. Zum Zeitpunkt der Erstellung dieser Seite musste Exchange 2013 noch den "alten "OWC" nutzen, während Exchange 2016 ab CU3 mit OWC und OOS zurecht kommt.

Einbinden in Exchange

Exchange "erkennt" einen Office Online Server nicht automatisch. Die entsprechende URL konnte bei Exchange 2013 nur einmal global in der Organisation aktiviert werden. Seit Exchange 2016 kann dies auch auf jeden Postfach-Server eingetragen werden

# Einrichtung pro Mailbox Server
Set-MailboxServer MBX `
   -WacDiscoveryEndpoint "https://oosintern.msxfaq.net/hosting/discovery"

# Einrichtung auf Organisationslevel
Set-OrganizationConfig `
   -WSet-OrganizationConfig `
   -WacDiscoveryEndpoint "https://oosintern.msxfaq.net/hosting/discovery"

# Auf jeden Exchange Server ist der Application Pool durchzustarten
Restart-WebAppPool MsExchangeOwaAppPool

Ich habe hier absichtlich den "internen Namen" eingetragen, da mein Server intern mit einem anderen Namen erreichbar ist. Exchange holt sich von dort die XML-Datei und bekommt dann die "richtigen URLs" mit.

Beachten Sie, dass durchaus Exchange 2013 und 2016 in einem Forest nebeneinander existieren können aber aufgrund von Versionsabhängigkeiten unterschiedliche Services nutzen müssen. Dann sollten Sie die Organisationseinstellung für Exchange 2013 Server nutzen und die nur auf Exchange 2016 konfigurierbare Einstellung pro Postfachserver auf die neuen OOS-Server leiten.

 Nach dem Restart der Application Pools im IIS sehen sie im Eventlog die folgende Meldung:

Log Name:      Application
Source:        MSExchange OWA
Date:          17.10.2016 11:19:32
Event ID:      142
Task Category: Wac
Level:         Information
Keywords:      Classic User:          N/A
Computer:      EX01.netatwork.de
Description:
We have successfully retrieved data from the Wac Discovery Service. Wac should be enabled.
Successfully retrieved configuration data from https://oof.msxfaq.net/hosting/discovery.
Supported File types: 
Internal: 
.ods-> https://oofintern.msxfaq.net/x/_layouts/xlviewerinternal.aspx?<ui=UI_LLCC&><rs=DC_LLCC&>;
.xls-> https://oofintern.msxfaq.net/x/_layouts/xlviewerinternal.aspx?<ui=UI_LLCC&><rs=DC_LLCC&>;
.xlsb-> https://oofintern.msxfaq.net/x/_layouts/xlviewerinternal.aspx?<ui=UI_LLCC&><rs=DC_LLCC&>;
.xlsm-> https://oofintern.msxfaq.net/x/_layouts/xlviewerinternal.aspx?<ui=UI_LLCC&><rs=DC_LLCC&>;
.xlsx-> https://oofintern.msxfaq.net/x/_layouts/xlviewerinternal.aspx?<ui=UI_LLCC&><rs=DC_LLCC&>;
.odp-> https://oofintern.msxfaq.net/p/PowerPointFrame.aspx?PowerPointView=ReadingView&<ui=UI_LLCC&><rs=DC_LLCC&>;
.pot-> https://oofintern.msxfaq.net/p/PowerPointFrame.aspx?PowerPointView=ReadingView&<ui=UI_LLCC&><rs=DC_LLCC&>;
.potm-> https://oofintern.msxfaq.net/p/PowerPointFrame.aspx?PowerPointView=ReadingView&<ui=UI_LLCC&><rs=DC_LLCC&>;
.potx-> https://oofintern.msxfaq.net/p/PowerPointFrame.aspx?PowerPointView=ReadingView&<ui=UI_LLCC&><rs=DC_LLCC&>;
.pps-> https://oofintern.msxfaq.net/p/PowerPointFrame.aspx?PowerPointView=ReadingView&<ui=UI_LLCC&><rs=DC_LLCC&>;
.ppsm-> https://oofintern.msxfaq.net/p/PowerPointFrame.aspx?PowerPointView=ReadingView&<ui=UI_LLCC&><rs=DC_LLCC&>;
.ppsx-> https://oofintern.msxfaq.net/p/PowerPointFrame.aspx?PowerPointView=ReadingView&<ui=UI_LLCC&><rs=DC_LLCC&>;
.ppt-> https://oofintern.msxfaq.net/p/PowerPointFrame.aspx?PowerPointView=ReadingView&<ui=UI_LLCC&><rs=DC_LLCC&>;
.pptm-> https://oofintern.msxfaq.net/p/PowerPointFrame.aspx?PowerPointView=ReadingView&<ui=UI_LLCC&><rs=DC_LLCC&>;
.pptx-> https://oofintern.msxfaq.net/p/PowerPointFrame.aspx?PowerPointView=ReadingView&<ui=UI_LLCC&><rs=DC_LLCC&>;
.doc-> https://oofintern.msxfaq.net/wv/wordviewerframe.aspx?<ui=UI_LLCC&><rs=DC_LLCC&><showpagestats=PERFSTATS&>;
.rtf-> https://oofintern.msxfaq.net/wv/wordviewerframe.aspx?<ui=UI_LLCC&><rs=DC_LLCC&><showpagestats=PERFSTATS&>;
.docm-> https://oofintern.msxfaq.net/wv/wordviewerframe.aspx?<ui=UI_LLCC&><rs=DC_LLCC&><showpagestats=PERFSTATS&>;
.docx-> https://oofintern.msxfaq.net/wv/wordviewerframe.aspx?<ui=UI_LLCC&><rs=DC_LLCC&><showpagestats=PERFSTATS&>;
.dot-> https://oofintern.msxfaq.net/wv/wordviewerframe.aspx?<ui=UI_LLCC&><rs=DC_LLCC&><showpagestats=PERFSTATS&>;
.dotm-> https://oofintern.msxfaq.net/wv/wordviewerframe.aspx?<ui=UI_LLCC&><rs=DC_LLCC&><showpagestats=PERFSTATS&>;
.dotx-> https://oofintern.msxfaq.net/wv/wordviewerframe.aspx?<ui=UI_LLCC&><rs=DC_LLCC&><showpagestats=PERFSTATS&>;
.odt-> https://oofintern.msxfaq.net/wv/wordviewerframe.aspx?<ui=UI_LLCC&><rs=DC_LLCC&><showpagestats=PERFSTATS&>;
.pdf-> https://oofintern.msxfaq.net/wv/wordviewerframe.aspx?PdfMode=1&<ui=UI_LLCC&><rs=DC_LLCC&><showpagestats=PERFSTATS&>;
;
External: 
.ods-> https://oof.msxfaq.net/x/_layouts/xlviewerinternal.aspx?<ui=UI_LLCC&><rs=DC_LLCC&>;
.xls-> https://oof.msxfaq.net/x/_layouts/xlviewerinternal.aspx?<ui=UI_LLCC&><rs=DC_LLCC&>;
.xlsb-> https://oof.msxfaq.net/x/_layouts/xlviewerinternal.aspx?<ui=UI_LLCC&><rs=DC_LLCC&>;
.xlsm-> https://oof.msxfaq.net/x/_layouts/xlviewerinternal.aspx?<ui=UI_LLCC&><rs=DC_LLCC&>;
.xlsx-> https://oof.msxfaq.net/x/_layouts/xlviewerinternal.aspx?<ui=UI_LLCC&><rs=DC_LLCC&>;
.odp-> https://oof.msxfaq.net/p/PowerPointFrame.aspx?PowerPointView=ReadingView&<ui=UI_LLCC&><rs=DC_LLCC&>;
.pot-> https://oof.msxfaq.net/p/PowerPointFrame.aspx?PowerPointView=ReadingView&<ui=UI_LLCC&><rs=DC_LLCC&>;
.potm-> https://oof.msxfaq.net/p/PowerPointFrame.aspx?PowerPointView=ReadingView&<ui=UI_LLCC&><rs=DC_LLCC&>;
.potx-> https://oof.msxfaq.net/p/PowerPointFrame.aspx?PowerPointView=ReadingView&<ui=UI_LLCC&><rs=DC_LLCC&>;
.pps-> https://oof.msxfaq.net/p/PowerPointFrame.aspx?PowerPointView=ReadingView&<ui=UI_LLCC&><rs=DC_LLCC&>;
.ppsm-> https://oof.msxfaq.net/p/PowerPointFrame.aspx?PowerPointView=ReadingView&<ui=UI_LLCC&><rs=DC_LLCC&>;
.ppsx-> https://oof.msxfaq.net/p/PowerPointFrame.aspx?PowerPointView=ReadingView&<ui=UI_LLCC&><rs=DC_LLCC&>;
.ppt-> https://oof.msxfaq.net/p/PowerPointFrame.aspx?PowerPointView=ReadingView&<ui=UI_LLCC&><rs=DC_LLCC&>;
.pptm-> https://oof.msxfaq.net/p/PowerPointFrame.aspx?PowerPointView=ReadingView&<ui=UI_LLCC&><rs=DC_LLCC&>;
.pptx-> https://oof.msxfaq.net/p/PowerPointFrame.aspx?PowerPointView=ReadingView&<ui=UI_LLCC&><rs=DC_LLCC&>;
.doc-> https://oof.msxfaq.net/wv/wordviewerframe.aspx?<ui=UI_LLCC&><rs=DC_LLCC&><showpagestats=PERFSTATS&>;
.rtf-> https://oof.msxfaq.net/wv/wordviewerframe.aspx?<ui=UI_LLCC&><rs=DC_LLCC&><showpagestats=PERFSTATS&>;
.docm-> https://oof.msxfaq.net/wv/wordviewerframe.aspx?<ui=UI_LLCC&><rs=DC_LLCC&><showpagestats=PERFSTATS&>;
.docx-> https://oof.msxfaq.net/wv/wordviewerframe.aspx?<ui=UI_LLCC&><rs=DC_LLCC&><showpagestats=PERFSTATS&>;
.dot-> https://oof.msxfaq.net/wv/wordviewerframe.aspx?<ui=UI_LLCC&><rs=DC_LLCC&><showpagestats=PERFSTATS&>;
.dotm-> https://oof.msxfaq.net/wv/wordviewerframe.aspx?<ui=UI_LLCC&><rs=DC_LLCC&><showpagestats=PERFSTATS&>;
.dotx-> https://oof.msxfaq.net/wv/wordviewerframe.aspx?<ui=UI_LLCC&><rs=DC_LLCC&><showpagestats=PERFSTATS&>;
.odt-> https://oof.msxfaq.net/wv/wordviewerframe.aspx?<ui=UI_LLCC&><rs=DC_LLCC&><showpagestats=PERFSTATS&>;
.pdf-> https://oof.msxfaq.net/wv/wordviewerframe.aspx?PdfMode=1&<ui=UI_LLCC&><rs=DC_LLCC&><showpagestats=PERFSTATS&>;

Eine fehlerhafte Konfiguration wird auch im Eventlog protokolliert: Hier das Beispiell, wen gar keine WAC-URL hinterlegt ist.

Log Name: Application
Source:   MSExchange OWA
Event ID: 139
Task Category: (10)
Level:    Error
Keywords: Classic 
Description:
There was an error setting up WacConfiguration. Wac will be disabled and we will fall
back to stellent. The WacURLHostName was invalid. Expected a valid uri.
Actual value was ''. Value read from 'OrganizationConfig'

Anpassen der OWA Verzeichnisse

Zusätzlich zur Einrichtung auf dem Server bzw. der Organisation können Sie auch auf dem virtuellen Verzeichnisse gewisse Einstellungen anpassen.

[PS] C:\>Get-OwaVirtualDirectory | fl *wac*

WacViewingOnPublicComputersEnabled     : True
WacViewingOnPrivateComputersEnabled    : True
ForceWacViewingFirstOnPublicComputers  : False
ForceWacViewingFirstOnPrivateComputers : False
WacEditingEnabled                      : True

Interne und externe URL

Damit stellt sich natürlich die Frage, wie der Exchange Server "erkennen" will, ob ich nun von extern oder von intern komme. Und das klappt anscheinend auch nicht immer zuverlässig, was sich dann in OWA auch zeigt, wenn ich z.B. eine Word-Anlage im Browser anzeigen oder sogar bearbeiten will und die Fehlermeldung auf die interne URL verweist. Hier am Beispiel von Net at Work

Sowas sollte in Produktion natürlich nicht erfolgen.

Aktuell habe ich noch nicht 100% bestimmen können, wann Exchange OWA die externe URL für OOS nutzt. Ich tippe darauf, dass dies nur dann möglich ist, wenn auch in OWA selbst die internen und externen URL unterschiedlich sind und damit OWA über den HostHeader erkennen kann, ob der Client von intern oder extern kommt

Die die meisten Firmen allerdings mittlerweile diese Namen intern und extern identische belegen, sollten Sie auch beim OOS-Server das gleiche Konstrukt mit Split-DNS nutzen.

Weitere Links