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 |
CustomAttribute1 |
HomeMDB |
database |
displayName |
DisplayName |
proxyAddresses |
EmailAddresses |
targetAddress |
ExternalEmailAddress |
facsimileTelephoneNumber |
fax |
givenName |
FirstName |
sn |
LastName |
memberOf |
MemberOfGroup |
WindowsEmailAddress |
Weitere Hinweise finden sich natürlich in der Exchange Dokumentation
- Filterable Properties in Exchange 2007 RTM
http://blogs.technet.com/evand/archive/2007/02/19/filterable-properties-in-exchange-2007-rtm.aspx - RecipientFilter filterable properties
http://technet.microsoft.com/en-us/library/bb430771.aspx - Filter filterable properties
http://technet.microsoft.com/en-us/library/bb430744.aspx - Adventures with OPATH: some annoyances if you're used to LDAP
http://exchangepedia.com/blog/2007/01/adventures-with-opath-some-annoyances.html
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.
- EWS und Impersonation
- memberOf Attribute can now be used in
OPATH filters!
http://exchangepedia.com/blog/2007/02/memberof-attribute-can-now-be-used-in.html
Es muss der DN der Gruppe verwendet werden - Using MemberOf with -RecipientFilter
https://blogs.technet.microsoft.com/evand/2007/02/13/using-memberof-with-recipientfilter/ - HOW TO: Configure Exchange 2010
Impersonation for a Group of Users
http://www.grinmark.com/aesync/howto/howto-ex2010-impersonation/start.htm
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.
- LDAP to OPATH filter conversion script
http://msexchangeteam.com/files/12/attachments/entry442867.aspx
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
- Creating Filters in Recipient Commands
http://technet.microsoft.com/en-us/library/bb124268.aspx - Exchange 2007 upgrading Custom LDAP Filters to OPATH Filters
http://technet.microsoft.com/en-us/library/cc164375(EXCHG.80).aspx - Managing Address Lists
http://technet.microsoft.com/en-us/library/aa997686.aspx - You Had Me At EHLO... : OPATH recipient filtering für Exchange
http://www.msexchangeteam.com/archive/2007/01/10/432143.aspx - You Had Me At EHLO... : Need help converting your LDAP filters to
...
http://www.msexchangeteam.com/archive/2007/03/12/436983.aspx - The Exchange 2007 Wiki - OPATH Syntax für Dynamic Distribution
Groups
www.exchangeninjas.com/OPATHSyntaxforDynamicDistributionGroups - The Exchange 2007 Wiki - Email Address Policy and Address List
http://www.exchangeninjas.com/EAPAndALFilterUpgrades