Exchange Mailbox Pläne

Schon lange gibt es mein Skripte Group2ExInternet, GRP2CAS und Grp2Quota, um diverse Einstellungen der Postfächer anhand von Gruppen durchzuführen oder gleich pauschal abzuschalten. Zumindest in Exchange Online gibt es mindestens seit 2011 einen MailboxPlan und seit Ende 2017 einen CASMailboxplan. Höchste Zeit sich das anzuschauen.

Policy statt Konfiguration

On Premises müssen Sie z.B. pro Postfach einstellen, wie groß es maximal werden darf (Quotas) oder ob der Benutzer z.B. auch per POP3 oder iMAP4 zugreifen darf. Mit Bordmitteln können Sie leider nicht einen Default einstellen. Daher gibt es ja meine oben genannten Skripte. Alternativ hätten Sie natürlich noch seit Exchange 2010 einen CmdLetExtensionAgent schreiben oder über ein Provisioning die Veränderungen an Objekten steuern können.

Aber schon aus Skype for Business kennen wir den Weg, dass sie mehrere Einstellungen als Policy zusammenfassen und dann an den Benutzer einfach nur die gewünschte Policy zuweisen. So können sie viele gleichartige Benutzer auch sehr einfach die gleichen Einstellungen erhalten.

Mit Exchange Online gibt es zwei Policies, die gewissen Einstellungen zusammenfassen.

  • Mailbox Policy
    Sie vereint viele Einstellungen, die auch mit "Set-Mailbox" ansonsten individuell zu setzen sind, z.B. Quota-.Einstellungen
  • CAS Mailbox Policy
    Diese Policy vieles zusammen, was Sie mit "Set-CASMailbox" pro Benutzer pflegen können, z.B. IMAP4 und POP3 Einstellungen

Es gibt natürlich weiterhin den UMDialPlan und UMMailboxPlan. Die sind aber nicht hier relevant. Pro Postfach können Sie aus einer Liste von Policies jeweils eine CASMailboxPolicy und eine MailboxPolicy zuweisen. Wobei der Begriff "zuweisen" nicht ganz korrekt verwendet ist. Es gibt von Office 365 zwar mehrere vordefinierte Policies von denen eine Richtlinie auch "Default" ist. Die hier gemachten Einstellungen wirken aber nur bei der Neuanlage von Postfächern, bei denen Exchange Online dann die Einstellungen der Default Policy übernimmt.

Das eröffnet aber Weg das Standardverhalten zentral zu ändern, so dass z.B. neue Postfächer per Default kein POP3/IMAP4 erst mal mehr machen dürfen.

Standardeinstellungen

Ehe Sie etwas verändern, sollten Sie die aktuellen Einstellungen ein Exchange Online kontrollieren. Das geht am einfachsten per Exchange Online PowerShell (Office 365 - PowerShell)

$Session = New-PSSession `
    -ConfigurationName Microsoft.Exchange `
    -ConnectionUri https://outlook.office365.com/powershell-liveid/ `
    -Credential (get-credential) `
    -Authentication Basic `
    -AllowRedirection 
import-PSSession $session

PS C:\> Get-CASMailboxPlan | fl Name

Name : ExchangeOnline-2eaf5ce8-4b10-43f6-9f0e-00afabeb5b8b
Name : ExchangeOnlineEnterprise-66acd470-c3c4-44b0-a6bc-ae1d88afb2d0
Name : ExchangeOnlineDeskless-ae04cb9f-d6af-4abb-bb3a-d25184c6ce9b
Name : ExchangeOnlineEssentials-602e3b3d-8f3b-4ec3-9798-2b629e750757

PS C:\> Get-MailboxPlan | ft name,isdefault

Name                                                          IsDefault
----                                                          ---------
ExchangeOnline-2eaf5ce8-4b10-43f6-9f0e-00afabeb5b8b               False
ExchangeOnlineEnterprise-66acd470-c3c4-44b0-a6bc-ae1d88afb2d0      True
ExchangeOnlineDeskless-ae04cb9f-d6af-4abb-bb3a-d25184c6ce9b       False
ExchangeOnlineEssentials-602e3b3d-8f3b-4ec3-9798-2b629e750757     False

Sie sehen hier schon die Liste der vordefinierten Pläne. Diese Liste ist pro Tenant individuell, was wohl auch an der ID im Namen abzulesen ist. Sie können aber keine weiteren eigenen Pläne anlegen. Es gibt also weder ein "New-MailboxPlan" noch ein "New-CASMailboxPlan". Sie können also nur die bestehenden Pläne abändern. Es gibt nur:

PS C:\> get-command *-mailboxplan

CommandType     Name
-----------     ----
Function        Get-MailboxPlan
Function        Set-MailboxPlan


PS C:\> get-command *-casmailboxplan

CommandType     Name
-----------     ----
Function        Get-CASMailboxPlan
Function        set-CASMailboxPlan 

Dann bleibt noch die Frage, wo ich am Benutzer den aktuell aktiven Plan erkennen und wie ich ihn zuweisen kann.

PS C:\> Get-Mailbox User1 | fl name,*plan*

Name        : User1
MailboxPlan : ExchangeOnlineEnterprise-66acd470-c3c4-44b0-a6bc-ae1d88afb2d0

Allerdings kann der Wert per "Set-Mailbox" nicht gesetzt werden. Ich interpretiere das so, dass hier Exchange Online hinterlegt, auf Basis welchen Pland als Template der Benutzer angelegt wurde.

Für den CASMailboxPlan habe ich noch keinen Indikator gefunden, wo diese Anlage hinterlegt wurde. Bei Get-Mailbox oder Get-CASMailbox gibt es keinen Indikator darauf. Es funktioniert aber, wenn Sie die Einstellungen des "CASMailboxPlans" ändern, welcher als "Default" angegeben ist, um bei neuen Benutzern diese Einstellungen einmalig zu vererben.

Bei mir ist das dann

Set-CASMailboxPlan ExchangeOnlineEnterprise-66acd470-c3c4-44b0-a6bc-ae1d88afb2d0 `
   -ImapEnabled $false `
   -PopEnabled $false 

Die Einstellungen wirken natürlich nur danach neu angelegte Postfächer.

Setzbare Werte

Microsoft veröffentlich die Werte, die mit Set-MailboxPlan und Set-CASMailboxPlan hinterlegt werden können. Es sind die üblichen Einstellungen, die auch mit Set-Mailbox und Set-CASMailbox möglich sind. Das überrascht aber nicht, da der Plan ja ein Template ist.

Set-CASMailboxPlan
   [-Identity] <MailboxPlanIdParameter>
   [-ActiveSyncDebugLogging <$true | $false>]
   [-ActiveSyncEnabled <$true | $false>]
   [-ActiveSyncMailboxPolicy <MailboxPolicyIdParameter>]
   [-Confirm]
   [-DisplayName <String>]
   [-DomainController <Fqdn>]
   [-ECPEnabled <$true | $false>]
   [-EwsAllowEntourage <$true | $false>]
   [-EwsAllowList <MultiValuedProperty>]
   [-EwsAllowMacOutlook <$true | $false>]
   [-EwsAllowOutlook <$true | $false>]
   [-EwsApplicationAccessPolicy <EnforceAllowList | EnforceBlockList>]
   [-EwsBlockList <MultiValuedProperty>]
   [-EwsEnabled <$true | $false>]
   [-IgnoreDefaultScope]
   [-ImapEnabled <$true | $false>]
   [-ImapEnableExactRFC822Size <$true | $false>]
   [-ImapForceICalForCalendarRetrievalOption <$true | $false>]
   [-ImapMessagesRetrievalMimeFormat <TextOnly | HtmlOnly | HtmlAndTextAlternative | TextEnrichedOnly | TextEnrichedAndTextAlternative | BestBodyFormat | Tnef>]
   [-ImapProtocolLoggingEnabled <$true | $false>]
   [-ImapSuppressReadReceipt <$true | $false>]
   [-ImapUseProtocolDefaults <$true | $false>]
   [-MAPIBlockOutlookNonCachedMode <$true | $false>]
   [-MAPIBlockOutlookRpcHttp <$true | $false>]
   [-MAPIBlockOutlookVersions <String>]
   [-MAPIEnabled <$true | $false>]
   [-OWAEnabled <$true | $false>]
   [-OWAforDevicesEnabled <$true | $false>]
   [-OwaMailboxPolicy <MailboxPolicyIdParameter>]
   [-PopEnabled <$true | $false>]
   [-PopEnableExactRFC822Size <$true | $false>]
   [-PopForceICalForCalendarRetrievalOption <$true | $false>]
   [-PopMessagesRetrievalMimeFormat <TextOnly | HtmlOnly | HtmlAndTextAlternative | TextEnrichedOnly | TextEnrichedAndTextAlternative | BestBodyFormat | Tnef>]
   [-PopProtocolLoggingEnabled <$true | $false>]
   [-PopSuppressReadReceipt <$true | $false>]
   [-PopUseProtocolDefaults <$true | $false>]
   [-RemotePowerShellEnabled <$true | $false>]
   [-WhatIf]
   [<CommonParameters>]

Set-MailboxPlan
   [-Identity] <MailboxPlanIdParameter>
   [-Confirm]
   [-Force]
   [-IsDefault]
   [-IssueWarningQuota <Unlimited>]
   [-MaxReceiveSize <Unlimited>]
   [-MaxSendSize <Unlimited>]
   [-ProhibitSendQuota <Unlimited>]
   [-ProhibitSendReceiveQuota <Unlimited>]
   [-RetainDeletedItemsFor <EnhancedTimeSpan>]
   [-RetentionPolicy <MailboxPolicyIdParameter>]
   [-RoleAssignmentPolicy <MailboxPolicyIdParameter>]
   [-WhatIf]
   [<CommonParameters>]

Einschätzung

Ich bin etwas hin und her gerissen. Auf der einen Seite ist es von Vorteil, dass es diese Templates gibt. Sie können ihre passenden "Defaults" hinterlegen um auf einfache Weise die Standardeinstellungen von Postfächern bei der Neuanlage anzugeben. Auf der anderen Seite scheint es nur ein "One Time Copy" im Moment der Neuanlage zu sein. Damit verschenkt Microsoft viel.

Ich hätte mir eher eine Policies gewünscht, die ich mit Set-Mailbox und Set-CASMailbox zuweisen würde und die dann die individuellen Einstellungen überstimmen sollten. Individuell eingestellte Postfächer hätte man ja ohne Richtlinie mit einem "$null" konfigurieren können.

So ist es nur ein Anfang aber eine Lösung denn es verhindert nicht, dass verschiedene Personen unterschiedliche Einstellungen haben. Insofern sehe ch immer noch Platz für ein Provisioning per Skript und natürlich ein Reporting/Monitoring der aktuellen Einstellungen.

Weitere Links