Exchange Extension Attribute
Diese Seite ist speziell den "Extension Attributes" gewidmet, die durch eine Exchange Installation im Schema angelegt aber oft fremd verwendet werden. In der PowerShell haben Sie den Namen "CustomAttributes".
exchange_extension_attribute.mp3
Geschichte
Seit Windows 2000 gibt es das Active Directory und das Active Directory Schema definiert die möglichen Objekte und deren Eigenschaften. Schema-Erweiterungen sind möglich aber nur sehr wenige Firmen haben jemals eine eigene Schema-Erweiterung durchgeführt. Genau genommen müssen Sie sich dazu eine weltweit eindeutige OID besorgen, damit Konflikte verhindert werden. Schließlich können auch andere Firmen mit ihren Produkten eine Schema-Erweiterung benötigen.
Microsoft Exchange war in dem Zuge vermutlich das erste Produkt, welches das AD-Schema umfangreich erweitert hat, um all die Einstellungen zu hinterlegen. Auch spätere Versionen und sogar Service Packs und Cumulative Updates haben manchmal das Schema um zusätzliche Felder erweitert. Allerdings hat Exchange viele der Felder kaum oder gar nicht genutzt oder schon in der AD-Basisinstallation vorhandene Felder (MailNickname, Mail, Proxyaddresses) genutzt.
- Schemaerweiterungen von Exchange
- Benutzerdefinierte Attribute in Exchange Server
https://learn.microsoft.com/de-de/exchange/recipients/mailbox-custom-attributes?view=exchserver-2019
- Exchange 2016 Active Directory schema
changes
https://technet.microsoft.com/en-us/library/bb738144(v=exchg.160).aspx
CU7 enthält wieder ein paar Änderungen. Planen sie beim Update des ersten Servers den Schema-Admin mit ein. - How To Compare Exchange Schema Changes
https://blogs.technet.microsoft.com/rmilne/2017/10/03/how-to-compare-exchange-schema-changes/
Erweitern des Schemas
http://msdn.Microsoft.com/library/default.asp?URL=/library/en-us/ad/ad/extending_the_schema.asp
ms-Exch-Extension*
Sehr früh haben Administratoren die "ExtensionAttribute1-15" für sich entdeckt, welche sowohl bei Benutzern, Kontakten, Gruppen und sogar Computern vorhanden ist. Die Felder sind zudem schon in der Standardeinstellung indexiert und im Globalen Katalog vorhanden.
Wenn Sie genau hinschauen, dann ist der Name der ersten 15 Attribute einfach nur "extensionAttribute1-15". Die anderen Attribute kamen erst mit Exchange 2010 SP2 und haben ein "msExch"-Prefix. Relativ neu sind dann die msExchExtensionCustomAttribute1-5, die sogar MultiValue sind. All diese Felder sind aber nicht Bestandteil des Windows AD Schema, sondern kommen erst mit der Exchange Schema Erweiterung mit.
Auch wenn Sie Exchange gar nicht nutzen, aber eigene Informationen im AD hinterlegen wollen, könnte die Erweiterung um das Exchange Schema eine Option sein, eine eigene private Schema-Erweiterung zu umgehen
LDAP-Name | CN | Exchange PowerShell | Typ | Indexiert | ANR | GC | Copy |
---|---|---|---|---|---|---|---|
extensionAttribute1 ... extensionAttribute15 |
ms-Exch-Extension-Attribute-1 ... ms-Exch-Extension-Attribute-15 |
CustomAttribute1 ... CustomAttribute15 |
Unicode String (1024) |
Ja |
Nein |
Ja |
Ja |
msExchExtensionAttribute16 ... msExchExtensionAttribute45 |
ms-Exch-Extension-Attribute-16 ... ms-Exch-Extension-Attribute-45 |
nicht verfügbar |
Unicode String (1024) |
Ja |
Nein |
Ja |
Ja |
msExchExtensionCustomAttribute1 ... msExchExtensionCustomAttribute5 |
ms-Exch-Extension-Custom-Attribute-1 ... ms-Exch-Extension-Custom-Attribute-5 |
ExtensionCustomAttribute1 ... ExtensionCustomAttribute5 |
Unicode String MultiValue |
Ja |
Nein |
Ja |
Nein |
Alle Felder sind im AD-Index und GC, d.h. auch in großen Umgebungen oder vielen Domains kann ihnen jeder GC eine Suche effektiv beantworten. Achten sie aber darauf, dass die ersten beiden Felder beim "Klonen" eines Benutzers mit der MMC für Benutzer und Computer auch mit kopiert werden.
Das kann durchaus unschöne Effekte haben, wenn sie die Werte der ExtensionAttribute z.B. im Provisioning zur Lizenzsteuerung oder Synchronisation (Siehe SyncM365 Filterung) nutzen.
ms-Exch-Extension-Attribute 1-15
Dieses Feld gibt es schon sehr lange und wurde vom Exchange Team für die Ablage verschiedener Informationen bereit gestellt. Allerdings haben auch viele Drittprodukte gerne dieses Feld genutzt, um eigene Konfigurationsinformationen zu hinterlegen. Das Feld ExtensionAttribute15 wurde z.B. bei Exchange 5.5 nach 2000/2003 Migrationen mit dem Inhalt "ADCNOMATCH" genutzt, um Objekte vom Active Directory Connector auszuschließen.
Da auch andere Produkte und Administratoren diese Felder gerne zweckentfremdet haben, will Microsoft diese nicht weiter verwenden. Diese Felder sind über Commandlets als "ExtensionAttribute1" bis "ExtensionAttribute15" erreichbar.
Exchange Server
includes 15
extension
attributes that
you can use to
add information
about a
recipient, such
as an employee
ID,
organizational
unit (OU), or
some other
custom value for
which there
isn't an
existing
attribute. ...
The custom
attributes
available to
Exchange Server
are labeled in
Active Directory
as ms-Exch-Extension-Attribute1 through ms-Exch-Extension-Attribute15.
In the Exchange
Management
Shell, the
corresponding
parameters are CustomAttribute1 through CustomAttribute15.
These attributes
aren't used by
any Exchange
components. They
can be used to
store Active
Directory data
without having
to extend the
Active Directory
schema.
Quelle: Custom
Attributes
http://technet.microsoft.com/en-us/library/ee423541.aspx
Microsoft bezieht sich sogar selbst auf diese Felder.
“Negative filtering: "do not sync these"
In the following example, you filter out (not synchronize) all users where
extensionAttribute15 has the value NoSync”
https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sync-configure-filtering#negative-filtering-do-not-sync-these
Achtung:
Microsoft schreibt zwar, dass Sie das Feld nicht mehr nutzen aber ein "Disable-Mailbox" oder "Disable-RemoteMailbox" leer diese Felder. Wer die
Felder mit anderen Werten ohne Bezug zu Exchange füllt, verliert diese mit der Deaktivierung des Objekts in Exchange.
Umgekehrt können Sie das Feld über die Exchange Commandlets aber auch pflegen, wenn das AD-Object ein Exchange Objekt ist. "Set-User" kennt die Parameter zum Setzen nicht. Auch wenn Microsoft die Felder nicht mehr nutzt, kann es immer noch Konflikte mit anderen Anwendungen geben. Schreiben Sie ihren Code besser so, dass der Feldname nicht statisch ist, sondern konfiguriert werden kann.
Sogar die URL und Beschreibung im Microsoft "Developer"-Bereich verweist bei diesen Attributen auf "previous-versions" hin. Die Felder werden durch ADSync repliziert, wenn Sie lokal vorhanden sind.
- ms-Exch-Extension-Attribute-1 Attribute
https://learn.microsoft.com/en-us/previous-versions/office/developer/exchange-server-2003/ms980473 - Missing extensionAttribute1 through extensionAttribute15 in the Workflow
Sync Step attribute list (4340920)
https://support.oneidentity.com/de-de/kb/4340920/missing-extensionattribute1-through-extensionattribute15-in-the-workflow-sync-step-attribute-list - What is the user.ExtensionAttribute1-15 available as a source attribute in
Azure AD SAML? How do I populate it?
https://learn.microsoft.com/en-us/answers/questions/470245/what-is-the-user-extensionattribute1-15-available
ms-Exch-Extension-Attribute16-45
Microsoft hat mit Exchange 2010 SP2 die Felder 16-45 hinzugefügt, um damit zukünftig Einstellungen zu speichern.
Diese Felder sind über Commandlets als "ExtensionAttribute16" bis "ExtensionAttribute45" erreichbar.
Finally, we
have also added
ms-Exch-Extension-Attribute-16
to 45. Those are
not exposed to
various CMDlets
and Exchange
management UI,
because they
were added für future use. As
such, we cannot
recommend that
you use
non-Exchange
tools to edit
their values
because we might use those
attributes in
the future für various Exchange
features. If and
when we add
management tools
access to them,
we will
definitely let
you know!
Quelle:
http://blogs.technet.com/b/exchange/archive/2012/01/17/custom-aka-extension-attributes-in-exchange-2010-sp2-and-their-use.aspx
- Custom attributes in Exchange Server
https://learn.microsoft.com/en-us/exchange/recipients/mailbox-custom-attributes - Custom (aka. Extension) attributes in Exchange 2010 SP2 and their use
http://blogs.technet.com/b/exchange/archive/2012/01/17/custom-aka-extension-attributes-in-exchange-2010-sp2-and-their-use.aspx
ms-exch-extension-custom-attribute-1 bis 5
Mit Exchange 2010SP2 hat Microsoft aber nicht nur die ExtensionAttribute von 15 auf 45 erweitert, sondern zudem noch fünf MultiValue-Attribute ergänzt, die Microsoft selbst aber nicht verwenden will.
Diese Felder sind über Commandlets als "ExtensionCustomAttribute1" bis "ExtensionCustomAttribute5" erreichbar.
In Exchange 2010
SP2, we have
added five new
multi-value
custom
attributes that
you can use to
store
information für mail recipient
objects. They
are the
ExtensionCustomAttribute1
to 5 (also can
be referred to
as
ms-exch-extension-custom-attribute-1
to 5).
http://blogs.technet.com/b/exchange/archive/2012/01/17/custom-aka-extension-attributes-in-exchange-2010-sp2-and-their-use.aspx
Weitere Limitierungen
Das Active Directory Schema schreibt vor, wie groß die Inhalte in den Feldern sein dürfen. Allerdings sind die Werte nicht zwingend mit dem EntraID übereinstimmend und im Sep 2024 hat Microsoft in de Meldung "MC884017 - Exchange Properties Limits addition" einige Felder noch einmal präsiziert:
Feldname | Typ | Min | Max | EntraID Length | EntraID Count |
---|---|---|---|---|---|
ms-Exch-Extension-Attribute 1-15 |
Unicode String |
1 |
1024 |
? |
? |
ms-exch-extension-custom-attribute-1 |
Unicode String[] |
na |
na |
2048 |
750 |
ms-exch-extension-custom-attribute-2 |
Unicode String[] |
na |
na |
2048 |
750 |
ms-exch-extension-custom-attribute-3 |
Unicode String[] |
na |
na |
2048 |
400 |
ms-exch-extension-custom-attribute-4 |
Unicode String[] |
na |
na |
2048 |
400 |
ms-exch-extension-custom-attribute-5 |
Unicode String[] |
na |
na |
2048 |
250 |
- MC884017 - Exchange Properties Limits
addition"
https://admin.microsoft.com/AdminPortal/home#/MessageCenter/:/messages/MC884017?MCLinkSource=MajorUpdate
Verwaltung per Exchange PowerShell
Denken Sie aber immer daran, dass diese Felder durch die Exchange Schema Erweiterung mitgekommen sind und daher nur über die Exchange PowerShell verwaltet werden sollten. Natürlich können Sie die Werte auch direkt über LDAP lesen und sogar setzen, aber dann können damit verbundene Exchange Aktionen nicht ausgeführt werden.
Es gibt Firmen, die z.B. über Empfängerrichtlinien die Mailadressen von Benutzern, Verteilern etc. zentral vorgeben und dazu ein ExtensionAttribute-Feld nutzen. Wenn nun das Feld mit "Set-Mailbox", "Set-MailUser", "Set-MailContact", "Set-DistributionGroup" geändert wird, dann passt Exchange auch davon abhängige Einstellungen direkt mit an.
Die passiert nicht, wenn Sie das Feld mittels "Set-ADUser", "Set-ADContact", "Set-ADGroup" oder direkt per LDAP modifizieren. Lesen ist kein Problem. Sollte so eine direkte Modifikation erfolgt sein, dann können Sie Exchange mit "Update-Recipient" aber anweisen, etwaige Unstimmigkeiten wieder gerade zu rücken.
- Custom attributes in Exchange Server
https://learn.microsoft.com/en-us/exchange/recipients/mailbox-custom-attributes - Set-Mailbox
https://learn.microsoft.com/de-de/powershell/module/exchange/set-mailbox - Update-Recipient
https://learn.microsoft.com/de-de/powershell/module/exchange/update-recipient
Disable-Mailbox etc.
Diese Abhängigkeit von Exchange kann ihnen insbesondere bei der Nutzung von "Disable-*" Commandlets unerwartete Effekte bescheren. Ich habe dazu ein Postfach angelegt und alle ExtensionAttribute per Exchange PowerShell gefüllt.
Zudem habe ich die Felder 16-45 per ADSIEDIT beschrieben und danach mit "Disable-Mailbox" das Postfach entfernt aber das AD-Objekt belassen. Exchange räumt ziemlich radikal auf:
Wer also diese Exchange Felder für eigene Zwecke missbraucht, sollte seinen Provisioning-Prozess daraufhin überprüfen, wie er bestehende Exchange Empfänger unter Beibehaltung des AD-Objekts deaktiviert. Der korrekte und einzig supportete Weg ist die Nutzung der Exchange PowerShell, die ihnen aber dann diese Felder entfernt.
Bei verschiedenen Firmen habe ich gesehen, dass die Extension Attribute zur Ablage von Provisioning-Informationen (MDM, Lizenzen, VPN-Zugang, RSA-Token, Microsoft 365 DirSync-Steuerung, etc.), weitere Verwaltungsinformationen wie Kostenstelle, Personalnummer, Smartphone IMEI) oder andere Informationen benutzt wurden. War ihnen diese Verhalten der "Disable-*"-Commandlets bekannt?
Weitere Links
- Schemaerweiterungen von Exchange
- LDAP-Felder
- Active Directory Felder
- 5.5 LDAPFelder
- Exchange Felder
- Exchange Provisioning Felder
- SyncM365 Filterung
- Custom attributes in Exchange Server
https://learn.microsoft.com/en-us/exchange/recipients/mailbox-custom-attributes - Custom (aka. Extension) attributes in Exchange 2010 SP2 and their use
http://blogs.technet.com/b/exchange/archive/2012/01/17/custom-aka-extension-attributes-in-exchange-2010-sp2-and-their-use.aspx