Exchange GAL

Die "Globale Adressliste" ist eine der Schlüsselelemente einer Exchange Umgebung. Exchange Clients möchten nicht nur Mails senden und empfangen sondern auch Empfänger nachschlagen und suchen. Exchange stellt dazu mit dem "MSExchangeAB"-Dienst (Exchange 2010) eine Schnittstelle für MAPI-Clients wie Outlook bereit, um den Anwender sowohl eine Dialogbox zur Auswahl anzubieten.

Exchange 4.0-5.5 hat dieses Adressbuch noch komplett selbst erstellt und verwaltet. Seit Exchange 2000 wird dazu aber das Active Directory als "dahinterliegende Datenbank" genutzt. Der Client muss also nicht direkt per LDAP einen DC fragen, der vielleicht aus dem Internet nicht erreichbar ist, sondern nutzt Exchange als Helfer.

Zudem nutzt Outlook die GAL auch, um halb eingegebene Adressen zu suchen, wenn Sie manuell die Adresse überprüfen lassen oder spätestens beim Druck auf "Senden".

Dem globalen Adressbuch kommt aber noch eine andere besondere Rolle zu. Wenn Sie Outlook starten, dann löst MAPI ihre Adresse anhand der GAL auf und trägt diese in da MAPI-Profil ein. Nur wenige wissen, dass man Outlook auch den LegacyExchangeDN hier übergeben könnte. Wenn ein Empfänger in der GAL nicht sichtbar ist, dann kann er in der Regel auch nicht sich mit Outlook verbinden.

Zwei und mehr GALs

Früher (Exchange 5.5 etc.) gab es eigentlich nur eine GAL in der alle Empfänger enthalten waren und anhand der auch Exchange die Empfänger gefunden und Mails zugestellt hat. Das ist mittlerweile gelockert und sie können mehrere GALs anlegen. Das macht natürlich nur Sinn, wenn Sie unterschiedliche Ansichten auf die Empfängerliste für verschiedene Anwenderkreise benötigen. Per GUI können Sie in Exchange 2007/2010 keine weitere GAL anlegen. Dazu müssen Sie die PowerShell bemühen.

Interessant ist dies natürlich, wenn mehrere virtuelle Firmen auf der gleichen Exchange Umgebung nebeneinander arbeiten sollten ohne sich zu sehen oder wenn in sehr großen Firmen die Nutzbarkeit der GAL erhöht werden soll. Oft kommunizieren Personen doch nur mit einer regional begrenzen Benutzermenge. Dann könnte man regionale GALs anlegen und über normale Adressbücher die komplette Liste alternativ anbieten.

Bei Exchange 2010 ist dies sehr gut über die Adress book Polices (Seit Exchange 2010 SP2) gelöst. Frühere Versionen von Exchange 2010 (RTM und SP1) haben eine Separierung nicht erlaubt und unter Exchange 2007/2003 war dies nur sehr umständlich über ACLs auf Container möglich. Hier war das Problem, dass ein Postfach idealerweise nur in genau einer GAL erscheinen durfte. Konnte ein Postfach in mehreren GALs zu sehen sein, dann hat der Client des Anwenders sich für die GAL entschieden, die mehr Einträge hatte.

Suche in der GAL

Ich habe schon weiter oben geschrieben, dass ein Anwender immer genau eine GAL hat und optional weitere Adressbücher auswählen kann. Wenn ich nun in einer Mail eine Adresse nur partiell eingebe, dann sucht Outlook über die GAL und andere Elemente nach Übereinstimmungen. Welche Adressbücher durchsucht werden, können Sie in Outlook einstellen:

Bei der Suche selbst kommt aber dann schon wieder die Ernüchterung. Auch wenn Sie in Exchange umfangreiche Felder gepflegt haben, so scheint Outlook in der GAL nur nach dem Displaynamen und der Mailadresse. Und selbst die Suche im Displayname ist keine Teilstring-Suche. Wenn ich also nach "Frank" suche, dann findet Outlook den Eintrag "Carius, Frank" nicht. Auch andere Trennzeichen wie "-" oder ";" etc. helfen nicht weiter.

Aber es gibt doch einen kleinen Trick, die Suche effektiver zu gestalten. Wenn Sie im Adressbuch-Fenster oben den Radio-Button von "Nur Name" auf "Mehr Spalten", dann sucht Outlook nicht nur in diesem Fenster nach dem eingegebenen Text, sondern auch in der Adressleiste beim Verfassen einer neuen Mail.

Welche Felder genau durchsucht werden, konnte ich noch nicht in Erfahrung bringen. Durch verschiedene Versuche habe ich aber zumindest einige Felder für "ähnliche Suche ermittelt.

  • Vorname
  • Nachname
  • Displayname
  • Mailnickname
  • Position
  • Abteilung
  • Telefon Geschäftlich
  • B������������������ro
  • Firma

Es ist aber weiterhin keine Teilstring-Suche, sondern der gesuchte Wert muss am Anfang des jeweiligen Feldes stehen.

Allerdings blendet Outlook bei der Suche nach "Mehr Spalten" die GAL-Liste aus:

Das ist in vielen Fällen aber kein Problem. Die Einstellung, wie Outlook sucht, ist übrigens nicht im MAPI-Profil gespeichert, sondern in den Outlook Einstellungen und kann als Wert in der Registrierung recht einfach auch zentral vorgegeben werden:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_User\Software\Microsoft\Office\14.0\Outlook\Preferences]
"ABQueryMode"=dword:00000000

Da die Werte unter "CurrentUser" liegen, kann der Eintrag per Anmeldeskript, Softwareverteilung oder Gruppenrichtlinie erfolgen.

GAL Internals

Neben den normalen Adressbüchern kann ein Administrator in Exchange auch mehrere "Globale Adressbücher" anlegen. Auch hier gibt es zwei Optionen:

  • Exchange 2000/2003
    Über den Exchange System Manager können Sie weitere globale Adresslisten ablegen
  • Exchange 2007/2010
    Hier ist die Verwaltung weiterer GALs nur über die PowerShell möglich.

Das Anlegen mehrerer GALs macht eigentlich nur Sinn, wenn Sie mehrere Firmen oder Abteilungen auf dem Exchange Server betreiben und unterschiedliche Ansichten bereit stellen wollen. Siehe auch Segregation 2007, Adress book Polices und MultiTenant /Hosting.

Achtung:
Sie sollten NIE mit ADSIEDIT an den offiziellen Tools vorbei verwalten. Oftmals wissen sie gar nicht, welche Felder das System noch ändert.

Das gilt besonders bei den GALs, da hier nicht nur die GAL-Objekte verändert sondern auch noch auf der Exchange Organisation ein GAL-Geld gepflegt wird:

Wer also mit ADSIEDIT eine GAL unsanft entfernt, wird beim nächsten Exchange 2010 Update vielleicht keine GALs mehr anlegen können.

WARNUNG: One or more global address lists were missing from the Active Directory attribute

Wer das Neuanlegen einer GAL protokolliert (z.B. mit GET-ADChanges), kann z.B. folgendes sehen

03.01.2012 13:59:02,Add,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=netatwork,DC=de,
   globaladdresslist2,
   CN=test,CN=All Global Address Lists,CN=Address Lists Container,CN=Net at Work GmbH,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=netatwork,DC=de

Hier der Trace als komplette Datei

addlistgal.txt

Weitere Links