Exchange 2007/2010 Offline Adressbücher

Exchange 200/2003 nutzt einen etwas anderen Prozess: Siehe Exchange Offline Adressbuch anlegen.

Exchange 2013/2016
Die Generierung ist wie bei Exchange 2007/20010/2013 aber wird durch einen anderen Prozess durchgeführt und entsprechend auch woanders konfiguriert. Hier ein Beispiel:
New-SettingOverride `
   -Name ChangeOABGeneration `
   -Component MailboxAssistants `
   -Section OABGeneratorAssistant `
   -Parameters @("WorkCycle=04:00:00") `
   -Reason “Generate OAb Generation every 2 hours”

OAB in Exchange Server 2013
https://techcommunity.microsoft.com/t5/Exchange-Team-Blog/OAB-in-Exchange-Server-2013/ba-p/598149

Exchange 2007 und Outlook 2003 nutzen einen neuen Weg, um Adressbücher auch "Offline" zur Verfügung zu stellen. Alle früheren Versionen von Outlook haben das Offline Adressbuch aus einem öffentlichen Ordner geladen, in welchen der OABGEN-Prozess von Exchange die Datenbereit gestellt hat. Mit Outlook 2007 und besonders Exchange 2007 hat sich die Bedeutung von öffentlichen Ordnern derart geändert, dass öffentlichen Ordner nicht mehr zwingend erforderlich sind. Damit entfällt natürlich auch der Systemordner, in dem bislang diese Daten bereit gehalten wurden.

Leider hat Microsoft nicht den Weg gewählt, dass Outlook direkt über einen Webservice die Daten individuell beziehen kann, sondern auch mit Exchange 2007 werden entsprechende Adressbücher "generiert" und bereit gestellt. Diese Seite beschreibt den Bereitstellungsprozess genauer.

Unterstützung durch Net at Work:
Wir können Ihnen bei der Konfiguration und Fehlersuche gerne helfen.

Vom SA zum Outlook Client

Der Prozess zur Bereitstellung eines Offline Adressbuch in Exchange 2007 ist nicht komplizierter als bei Exchange 2003 aber bezieht mehrere Systeme mit ein. Schließlich muss das Offline Adressbuch ja auch ohne öffentliche Ordner auskommen und eine Verteilung an mehrere CAS-Server unterstützen.

Folgende Schritte werden dabei durchlaufen:

Schritt Beschreibung

Die Systemaufsicht startet regelmäßig den Prozess zur Offline Adressbuch Aktualisierung. Der Prozess liest die Objekte der jeweiligen Adressliste per LDAP aus dem Active Directory aus

Das Ergebnis wird je nach Konfiguration in die entsprechenden öffentlichen Ordner und in das Dateisystem geschrieben. Das Verzeichnis lautet "%ProgramFiles%\Microsoft\Exchange Server\ExchangeOAB\%guid%"
Dieses Verzeichnis wird vom Server als "ExchangeOAB" frei gegeben. Auf dem Share als auch per NTFS haben "SYSTEM" und "Administrators" Vollzugriff während "Exchange Servers", "Organization Management" und "View-Only Organization Management) nur "ReadOnly" haben.

Auf allen Client Access Servern läuft der "Microsoft Exchange File Distribution Service" (FDS). Dieser Prozess holt sich die Adressbuchdateien vom generierenden Server und überträgt diese in das lokale Verzeichnis %ProgramFiles%\Exchange\ClientAccess\OAB auf dem CAS-Server. Die passiert per Default alle 8 Stunden, kann aber geändert werden.

Get-OabVirtualDirectory | Set-OabVirtualDirectory -pollinterval 240

Dieses Verzeichnis ist über den installierten IIS unter der URL "/OAB" frei gegeben.

Achtung: Der MSExchangeFDS arbeitet wohl unter Exchange 2010 noch nicht mit FQDNs. Wenn der generierende Server in einer anderen Domäne steht, dann kann der FDS den Share mit \\servername\ExchangeOAB nicht erreichen. Ein Eintrag in der Hosts/LMHosts, der Einsatz von WINS oder ein CNAME in der eigenen DNS-Domäne hilft.

Während Outlook 2003 und älter immer nur die Adressbücher aus den öffentlichen Ordnern kopieren kann, ist Outlook 2007 die erste Version, welche auch per HTTP die Adressbücher 

Die Zusammenhänge werden als Bild etwas deutlicher: 

Exchange 2007 OAB Generierung und Verteilung

Im Gegensatz zu Exchange 2003 und früher wirken bei der Exchange 2007 Version mehrere Komponenten zusammen, die letztlich alle funktionieren müssen, damit die die Anwender ein aktuelles Adressbuch nutzen können

Einstellungen in der Exchange System Console

Die Verwaltung der Offline Adressbücher ist eine organisationsweite Konfiguration: 

OAB Verwaltung in der MMC

Pro Offline Adressbuch können Sie den Zeitpunkt der Generierung definieren und welche Versionen erstellt werden können. 

OAB Zeitplan OAB Verteilung und Versionen

Nachdem der Exchange Server das OAB generiert hat, findet man die entsprechenden Dateien im Verzeichnis.

OAB-Dateien nach der Generierung

Dieses Verzeichnis ist mit dem Namen "ExchangeOAB" freigegeben. Die Berechtigungen erlauben nur einen Vollzugriff für für Administratoren und System. Die "Exchange Servers" haben nur "Lesen"

ExchangeOAB Freigabe

Der Exchange File Distribution Service auf den konfigurierten CAS-Servern steht auf "Automatisch" und sollte gestartet sein.

File Distribution Service

Und nach kurzer Zeit finden Sie eine Kopie der Dateien im Verzeichnis auf der CAS-Rolle: 

OAB-Verzeichnis

Sollten die Dateien dort nicht aktuell sein, dann können sie zwar Auch den "File Distribution Dienst" auf dem CAS durchstarten, aber einfacher ist ein Commandelt:

Update-FileDistributionService CASServer -type oab

Und eben dieses Verzeichnis sollten Sie auch auf der Default Webseite als virtuelles Verzeichnis wiederfinden.

OAB Virtual Directory im IIS

Wenn Sie also mehrere Webserver auf einem System betreiben, dann sollten Sie darauf achten, dass ihre Clients auch den "richtigen" Webserver erwischen. Im IISLog kann man wunderbar sehen, wann welche Clients die OAB-Dateien herunterladen.

Besonderheiten

Damit ihre Server ebenfalls korrekt ein Offline Adressbuch erstellen kann, sollten Sie folgendes beachten.(Eigene Erfahrungen und Supportfälle)

  • OABGEN braucht SA erforderlich
    Das bedeutet, dass das Offline Adressbuch nur auf einem Server mit einer Mailbox Rolle installiert werden kann. Ein Server, der z.B. ClientAccess oder Hub/Transport ist, hat keine Systemaufsicht. Leider verhindert die Konsole nicht eine solche Fehlkonfiguration.
  • OABGEN und öffentliche Order
    Soll OABGEN das Adressbuch auch in einem öffentlichen Ordner ablegen, so muss der Server auch einen Public Folder Store haben. Das ist auf einem CCR-Cluster nicht immer möglich.
  • OABGEN und Cluster
    Beim CCR-Cluster gibt es keine "Shared Disk", so dass die OAB-Dateien nur auf dem aktiven Knoten laufen. Es sind daher besondere Vorkehrungen notwendig, um bei einem Failover die Funktion weiter zu erhalten. Zudem sollten Sie beachten, dass der Betrieb von öffentlichen Ordnern auf einem CCR bestimmten Einschränkungen unterliegt.
    Siehe auch Cluster Continuous Replication)
  • 7 Tage Warten
    Wenn Sie ein OAB einmal löschen und dann wieder mit dem gleichen Namen anlegen wollen, dann müssen Sie 7 Tage vergehen lassen, da ansonsten die Clients nicht bemerken, dass es ein anderes OAB ist, das nur zufällig gleich heißt.
  • Web Verteilung und Outlook 2007
    Wenn Sie Outlook 2007 einsetzen, dann sollten Sie auch eine Webverteilung konfigurieren.

Als Best Practice kann man daher sagen;

  • Mailboxserver für OAB verwenden.
    In einer einfachen Umgebung sollten Sie daher einfach einen Mailboxserver zum OAB-Server machen und sich überlegen, welche CAS-Server diese Dateien replizieren sollen.
  • Cluster
    Umgebungen mit Cluster sollten eventuell einen ungeclusterten Mailboxserver als Dienst hierfür bereit stellen. Oft gibt es in solchen Umgebungen sowieso zusätzliche Server für öffentliche Ordner.
  • WAN und LAN
    Geografisch verteilte Organisationen können eventuell besser lokal OABs erzeugen und verteilen anstatt den FDS die Dateien über ein WAN aus der Ferne kopieren zu lassen.
  • Monitoring
    Kontrollieren Sie die OAB Generierung über die Eventlogs um Fehlkonfigurationen und Störungen frühzeitig zu erkennen.

CCR und OAB

Wenn Sie keinen eigenen "Single Mailbox Server" haben, dann muss der CCR-Cluster auch das "Offline Adressbuch" erzeugen., Das tut er per Default aber nicht. Das OAB wird ja als Datei in einem Verzeichnis erzeugt und nutzt dabei vorher schon vorhandene Dateien. Da der CCR keine "Shared Disk" hat, hat nach einem Failover der andere Knoten diese Dateien nicht mehr und kann daher das Adressbuch nicht erzeugen. Das Eventlog meldet dies aber (Hinweis: Überwachen Sie ihre Eventlogs ?)

Sie müssen also über einen Registrierungsschlüssel bestimmen, welcher der CCR Knoten "bevorzugt" das OAB generiert.  

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeSA\Parameters\OABGen-Server]
"EnableOabGenOnThisNode"="NODENAME"

Ist dieser Knoten dann nicht aktiv, dann werden keine OAB Updates mehr generiert, bis der Server wieder auf dem ursprünglichen Knoten läuft oder Sie die Konfiguration anpassen.

CCR und Windows 2008

Windows 2008 ist per Default "sicherer" und sorgt dafür, dass man nur auf Freigaben zugreifen kann, die auch als Cluster Ressource bereit gestellt werden. Nun ist aber die OAB-Freigabe keine Cluster Ressource sondern eine Freigabe des lokalen Knotens. Die CAS-Server versuchen sich aber mit dem virtuellen Servernamen zu verbinden und scheitern. Dies ist aber seit SP1Rollup5 gelöst.

Wichtiges Rollup5 für CCR auf Windows 2008 mit OAB Generierung
954197 Exchange 2007 CAS cannot copy the OAB from the OAB share on Windows Server 2008-based Exchange 2007 CCR Clusters

OAB, 64k und Event 9321

Das Offline Adressbuch ist auf 64k pro Benutzer limitiert. Das kann dazu führen, dass Benutzer mit umfangreicheren Informationen gar nicht mehr in das Offline Adressbuch aufgenommen werden. Im Eventlog findet sich dann ein Eintrag

Ereignistyp:	Error
Ereignisquelle:	Application
Ereigniskennung:9321
Beschreibung:

OALGen could not generate full details für entry '%1' in address list '%2' 
because the total size of the details information is greater than 64 kilobytes.

Dies hatte ich selbst schon mal bei einem Kunden erlebt, bei dem ein Anwender sehr viele Zertifikate erhalten hat und im AD dann die passenden "Public Keys" veröffentlicht wurden.

Weitere OAB-Fehler

Microsoft hat ein Testprogramm "OABValidate.exe", welches leider kein öffentlicher Download ist. Aber oft ist eine unterbrochene Vererbung auf Benutzern oder Gruppen ein Problem. Exchange 2007/2010 hat dann nicht genug Rechte um die Verteiler oder Benutzer aufzulösen, so dass diese in der GAL fehlen, aber per OWA oder "online" mit Outlook sichtbar sind. Prüfen Sie das Eventlog und die Exchange-Objekte diesbezüglich.

Weitere Links