Exchange 2007 - OPATH statt LDAP

Mit der Einführung des Active Directory haben immer mehr Administratoren sich mit LDAP und der Abfragesyntax beschäftigen müssen. Exchange 2000/2003 Adresslisten, Offline Adressbücher und Empfängerrichtlinien nutzen LDAP-Filter, um die Empfänger auszuwählen und zu filtern.

Exchange 2007 nutzt während der Migration weiterhin die LDAP-Filter von Exchange 2000/2003. Um aber die Adresslisten und Empfängerrichtlinien mit der Exchange 2007 Management Console bearbeiten zu können, muss man diese erst Konvertieren. Und dazu ist eine neue Filterdefinition erforderlich. Exchange 2007 nutzt dazu "OPATH".

Was ist OPATH ?

OPATH ist wieder eine neue Abfragesyntax um Filter in Exchange 2007 zu definieren. Haben sich die Administratoren erst mit der Einführung des Windows Active Directory an LDAP gewöhnen müssen, so steht nun schon wieder ein Wechsel für die Definition von Empfängerrichtlinien und Adressbüchern an.

Ziel von OPATH war angeblich eine deutlich vereinfachte und lesbare Syntax für Filter. Nun ja wer LDAP nach 7 Jahren Active Directory noch nicht gelernt hat, wird mit OPATH auch nicht lieben.

OPATH-Syntax

OPATH besteht aus dem Zugriff auf Felder und dem Vergleich mit Werten und der Kombination. All diese Ausdrücke können mit Klammern zusammengefasst werden.

Kombination

Diese Operatoren müssen mit führendem "-" angegeben werden

Operator Bedeutung

-and

Die beiden Ergebnisse davor und dahinter werden undverknüpft

-or

Die beiden Ergebnisse davor und dahinter werden ODER verknüpft

-not

Der Ausdruck wird negiert

Vergleichsoperatoren

Um zwei Werte zu vergleichen gibt es die folgenden Operatoren:

Operator Bedeutung

-eq

 Zwei Werte müssen gleich sein (equals)

-ne

Zwei Werte müssen ungleich sein (not equal)

-lt

Der linke Wert ist kleiner als der Rechte (less than)

-gt

Der linke Wert ist größer als der Rechte (greater than)

-like

Die Werte sind "ähnlich". Hier kann dann auch mit Wildcards gearbeitet werden

-notlike

Die Werte sind "ähnlich". Hier kann dann auch mit Wildcards gearbeitet werden

Verfügbare Felder

Angeblich sind alle Felder von Objekten auch per OPATH erreichbar. Das Exchange Team fordert Sie Auf, eventuell vergessene Felder zu melden (http://blogs.technet.com/b/exchange/archive/2007/01/10/432143.aspx).

Hier eine Liste der häufig genutzten Felder

LDAP OPATH

mailNickname

alias

l

city

Company

Company

extensionAttribute1
bis
extensionAttribute15

CustomAttribute1
bis
CustomAttribute15

HomeMDB

database

displayName

DisplayName

proxyAddresses

EmailAddresses

targetAddress

ExternalEmailAddress

facsimileTelephoneNumber

fax

givenName

FirstName

sn

LastName

memberOf

MemberOfGroup

mail

WindowsEmailAddress

Weitere Hinweise finden sich natürlich in der Exchange Dokumentation

Leider ist das mit der "Vollständigkeit" nicht ganz so einfach, denn es gibt durchaus Fehler, die man gerne mit einbeziehen würde, aber nicht verwendbar sind, z.B.:

  • MemberOf
    Also die Möglichkeit über Gruppenmitgliedschaften zu gehen
  • Eigene Felder und Erweiterungen
    Firmen oder Produkte, die das Schema mit eigenen Feldern erweitert haben (z.B. ERP-Systeme, FAX-Server etc.) und diese an Benutzern anheften, können diese Information leider nicht für Recipient-Filter verwenden.

Aktuell habe ich noch keine Lösung für diese Einschränkung.

Exchange Besonderheiten "IncludedRecipients"

Beim Einsatz von Exchange gibt es zusätzlich einige "vordefinierte Objekte, die in OPATH-Ausdrücken über die Option "IncludedRecipients" verwendet werden können

  • MailboxUsers
  • Resources,MailContact
  • MailGroups
  • MailUsers
  • AllRecipients

Werden Filter bei PowerShell Commmandlets mit angegeben, so sind die Ausdrücke durch geschweifte Klammern einzufassen {}

Bei den meisten Exchange Management Befehlen geben Sie drei Parameter an

Parameter Bedeutung

RecipientContainer

OU ab der die Evaluierung starten soll

IncludedRecipients

Empfänger der Empfänger

OPATH Filter

Weitere Filter Kriterien

Exchange PowerShell und OPATH-Beispiele

Hier ein paar Beispiele, um entsprechende Adresslisten, Verteiler und Richtlinien zu setzen

  • Definition einer Empfängerrichtlinie anhand der OU

New-EmailAddressPolicy
    -Name "SMTP-netatworkDE"
    -IncludedRecipients UserMailbox
    -ConditionalStateorProvince "Paderborn","Verl","Belleim"
    -EnabledPrimarySMTPAddressTemplate SMTP:@netatwork.-de

  • Adressliste Verteilergruppe
    Ohne Angabe von Container wird die Adressliste in "All Address Lists" angelegt.

New-AddressList
    -Name NetatWork Mitarbeiter
   -IncludedRecipients MailboxUsers
    -ConditionalCompany "Net at Work GmbH"

  • Dynamischen Verteilergruppe

New-DynamicDistributionGroup
    -Name DL-NAW-Mitarbeiter
    -IncludedRecipients MailboxUsers
    -OrganizationalUnit "netatwork.de/Verteiler"
    -RecipientContainer "netatwork.de/Anwender"
    -ConditionalCompany "Net at Work GmbH"

  • Dynamischer Verteiler mit allen UM-aktivierten Anwendern
    Ausgeschlossen werden aber die Systemmailboxen und die Testmailboxen.

Set-DynamicDistributionGroup
    -Name DL-UM-Anwender
    -RecipientFilter {((RecipientType -eq 'UserMailbox') -and -not(Name -like 'SystemMailbox{*') -and -not(Name -like 'CAS{*') -and (UMEnabled -eq $true))}

Es ist also gar nicht so schwer, einen OPATH Pfad zu entwickeln, der einem bisherigen LDAP-Filter entspricht.

Sonderfall MemberOfGroup

Eine Filterung auf verschiedene LDAP-Attribute ist fpr viele Zwecke ausreichen. SO kann z.B.: die Mailadresse über die OU der Abteilung oder auch das Feld "Company" und "Department" recht einfach bestimmt werden. Andere Einstellungen sind aber nicht os klar umrissen und z.B. die Delegierung von Berechtigungen per EWS und Impersonation möchte man vielleicht doch an einer Gruppe festmachen. Das ist mit dem OPATH-Property" MemberOfGroup" möglich. Allerdings sollten Sie dabei folgende Dinge beachten:

  • Backlink Attribute und Performance
    Anders als normale Attribute, die sogar im globalen Katalog und im Index vorliegen, wird das Feld "MemberOf" erst beim Zugriff berechnet. Es ist ein so genanntes "Backlink"-Attribut. Filter auf dieses Attribute belasten die Domain Controller  und sollten mit Sorgfalt und Überlegung eingesetzt werden.
  • DN als String
    Der OPATH-Filter merkt sich keine SID oder ObjectGUID oder SAM-Accountname, sondern den distinguishedName. Wer die Objekte später leichtfertig in eine andere OU verschiebt, verhindert die reibungsloste Funktion der Abfrage. Adresslisten könnten nicht mehr komplett sein, Verteilter enthalten nicht mehr alle Empfänger und EWS Impersonation-Rechte greifen nicht mehr.

Ansonsten ist dieser Filter aber sehr flexibel, um Personen an unterschiedlichen Stellen ihres Forests und mit verschiedenen Werten in den möglichen LDAP-Feldern zusammen zu fassen. Nicht immer möchte man für eine einzelne Aufgabenstellung in Exchange gleich eines der "Custom Attributes" opfern. 

LDAP 2 OPATH Converter

Auf der Seite "You Had Me At EHLO... : Need help converting your LDAP filters to ... (http://www.msexchangeteam.com/archive/2007/03/12/436983.aspx) bietet ein Exchange Team Mitglied sogar ein PowerShell Skript an, welches aus einem gegebenen LDAP-Query einen OPATH erstellt.

Speichern Sie das Skript bitte unter dem Namen "ConvertFrom-LdapFilter.ps1", damit die Beispiele im Script auch stimmig sind. Hier ein Auszug der ersten Zeilen

# .\ConvertFrom-LdapFilter "(&(mailnickname=*))"
#
# To convert the LDAP filter on an existing address list and display the result:
#
# .\ConvertFrom-LdapFilter (Get-AddressList "My Address List").LdapRecipientFilter
#
# To convert the LDAP filter on an existing address list and Update
# the address list with the new filter:
#
# Set-AddressList "My Address List" -RecipientFilter ( .\ConvertFrom-LdapFilter (Get-AddressList "My Address List").LdapRecipientFilter )

Damit sollten Sie die meisten Adresslisten und Empfängerrichtlinien bei der Migration nach Exchange 2007 konvertieren können. Lesen Sie einfach aufmerksam die Kurzanleitung am Anfang des Source Code.

Weitere Links