Exchange Server 2010 – Throttling Policy Tutorial und iOS Bug in 6.1.1

Die Throttling Policy wacht über die Verbindungen eines Benutzers zum Exchange Server und erkennt Unregelmäßigkeiten. Wenn beispielsweise ein Postfach angegriffen wird und Unmengen an Last erzeugt werden soll, wird diese Verbindung von der Throttling Policy ausgebremst und beendet. Im Regelfall sorgt sie aber dafür, dass alle Benutzer eine stabile und schnelle Verbindung erhalten und niemand auf Kosten anderer, Ressourcen bindet.

Apple Iphone Bug in iOS 6.1.1

Ein Bug in iOS verursacht eine Schleife beim Synchronisieren von Kalendereinträgen und Einladungen. Bis Apple ein Update herausbringt, sollte man folgende Einstellungen ausrollen:

Fix

Set-ThrottlingPolicy -EASPercentTimeInCAS 10 -EASPercentTimeInMailboxRPC 10 -EASPercentTimeInAD 10

Offizielle Informationen von Microsoft: http://support.microsoft.com/kb/2814847

Exchange Server 2010 – Throttling Policy Konfigurations Möglichkeiten

Throttling Policy – Active Sync

Name Standard Beschreibung
EASMaxDevices 10 Max Anzahl angebundener Smartphones/Tablets eines Benutzers
EASMaxConcurrency 10 Max Anzahl gleichzeitiger Verbindungen zu Smartphones/Tablets
EASMaxDeviceDeletesPerMonth NULL Max Anzahl gelöschter Smartphones/Tablets im Monat
EASPercentTimeInAD NULL Prozentuale Anzahl an LDAP Anfragen aller Verbindungen
EASPercentTimeInCAS NULL Prozentuale Anzahl an Client Access Anfragen aller Verbindungen
EASPercentTimeInMailboxRPC NULL Prozentuale Anzahl an RPC Anfragen aller Verbindungen

Throttling Policy – Outlook WebApp

Name Standard Beschreibung
OWAMaxConcurrency 5 Max Anzahl geöffneter Outlook WebApp Sitzungen
OWAPercentTimeInAD 30 Prozentuale Anzahl an LDAP Anfragen aller Verbindungen
OWAPercentTimeInCAS 150 Prozentuale Anzahl an Client Access Anfragen aller Verbindungen
OWAPercentTimeInMailboxRPC 150 Prozentuale Anzahl an RPC Anfragen aller Verbindungen

Throttling Policy – RPC

Name Standard Beschreibung
RCAMaxConcurrency 20 Max Anzahl gleichzeitiger Verbindungen zum Exchange Server per Benutzer
RCAPercentTimeInAD 50 Prozentuale Anzahl an LDAP Anfragen aller Verbindungen
RCAPercentTimeInCAS 205 Prozentuale Anzahl an Client Access Anfragen aller Verbindungen
RCAPercentTimeInMailboxRPC 200 Prozentuale Anzahl an RPC Anfragen aller Verbindungen

Throttling Policy – Allgemein

Name Standard Beschreibung
MessageRateLimit NULL Max Anzahl der E-Mails die ein Benutzer innerhalb von 24 Stunden verschicken kann

RecipientRateLimit NULL Max Anzahl von Empfängern innerhalb von 24 Stunden, die von diesem Benutzer angeschrieben werden können

ForwardeeLimit NULL Max Anzahl an Weiterleitungen von E-Mails innerhalb von 24 Stunden

Throttling Policy – Exchange Web Service

Name Standard Beschreibung
EWSMaxConcurrency 10 Max Anzahl gleichzeitiger Verbindungen eines Benutzers
EWSMaxSubscription 5000
EWSFindCountLimit 1000
EWSfastSearchTimeoutInSeconds 60
EWSPercentTimeInAD 50 Prozentuale Anzahl an LDAP Anfragen aller Verbindungen
EWSPercentTimeInCAS 90 Prozentuale Anzahl an Client Access Anfragen aller Verbindungen
EWSPercentTimeInMailboxRPC 60 Prozentuale Anzahl an RPC Anfragen aller Verbindungen

Throttling Policy – Blackberry Enterprise Server

Der Blackberry Server führt alle Syncronisationen unter seinem eigenen Benutzer aus. Dieser Benutzer syncronisiert daher alle Postfächer von den Benutzern und trifft regelmäßig an die Grenzen der Standard Throttling Policy. Darum muss für diesen Account eine eigene Policy erstellt werden, die keine Einschränkungen hat.

Throttling Policy – Blackberry Enterprise Server – Konfiguration

New-ThrottlingPolicy BES
Set-ThrottlingPolicy BES -RCAMaxConcurrency $null -RCAPercentTimeInAD $null -RCAPercentTimeInCAS $null -RCAPercentTimeInMailboxRPC $null -EWSMaxConcurrency $null -EWSPercentTimeInAD $null -EWSPercentTimeInCAS $null -EWSPercentTimeInMailboxRPC $null -EWSMaxSubscriptions $null -EWSFastSearchTimeoutInSeconds $null -EWSFindCountLimit $null
Set-Mailbox "BESAdmin" -ThrottlingPolicy BES
von Manuel M. 18. Februar 2013 @ 21:41

Exchange Server 2010 – Öffentliche Ordner – Zombie User entfernen

Wenn ein Benutzer vollständig gelöscht oder nur die Mailbox gelöscht wird, erscheint dieser als „NT User:xxxxxxxxxxxxxxxxxxxxxxxxxx“ in den Berechtigungen des Öffentliches Ordners. Diese Berechtigungen sind eigentlich nicht per Exchange Console oder Powershell entfernbar und verbleiben an dem Ordner. Mit ExFolders kann man diese händisch löschen, was aber sehr viel manueller Aufwand bedeutet. Ich habe ein Script geschrieben, dass diese Zombie Benutzer löschen kann:

Get-PublicFolder "\" -recurse -resultsize unlimited | Get-PublicFolderClientPermission | Where { $_.User.ToString().Contains("NT User:") -eq $true } | Remove-PublicFolderClientPermission -confirm:$false

Es werden alle Zombie User gelöscht, die Berechtigungen in der gesammten öffentlichen Ordner Struktur hatten.

von Manuel M. 15. Februar 2013 @ 16:34

PowerShell – Nützliche Exchange Server 2010 Befehle

Da sich die PowerShell Befehle für den Exchange Server großer Beliebtheit erfreuen, habe ich mal ein paar neue Befehle hinzugefügt.

Exchange Server – ActiveSync

Liste aller ActiveSync Geräte

Get-ActiveSyncDevice | ft

ActiveSync-Statistik eines Postfaches

Get-ActiveSyncDeviceStatistics -mailbox "manuel.maliszewski"

Alle ActiveSync Geräte der OU „Ausgeschiedene User“ löschen

Get-ActiveSyncDevice -OrganizationalUnit "Ausgeschiedene User" | Remove-ActiveSyncDevice

Exchange Server – Datenbanken

Übersicht über Datenbanken und deren Größe

Get-MailboxDatabase -Status | ft name, databasesize

Übersicht über Datenbanken mit Informationen zu Retentation und Recoverable Quotas

Get-MailboxDatabase | Select Name, Server, MailboxRetention, Recoverab* |ft

Exchange Server – Postfächer

Übersicht der Postfächer einer Datenbank – Sortiert nach letztem Login mit den Feldern: Benutzername, Größe, Datum der letzten Anmeldung, Letzte Anmeldung

Get-Mailbox -Database "Berlin II - Datenbank II" | Get-MailboxStatistics | Sort LastLogonTime | ft DisplayName, TotalItemSize, LastLogonTime, LastLoggedOnUserAccount

Detailiert Übersicht eines Postfaches mit Unterordnern und dessen Größe

Get-MailboxFolderStatistics -identity "manuel.maliszewski" | ft FolderPath, FolderSize, ItemsInFolder, FolderAndSubfolderSize

Alle Postfächer mit Weiterleitung

Get-Mailbox | Where-Object { $_.ForwardingAddress –ne $null } | Select Name, ForwardingAddress

Alle Postfächer mit „Sende als“ und „volle Postfachberechtigung“

Get-Mailbox | Get-ADPermission | Where-Object { ($_.ExtendedRights -like "*send-as*") -and -not ($_.User -like "nt authority\self") }

Postfächer auf die der Benutzer „chilli“ volle Berechtigungen hat

Get-Mailbox | Get-MailboxPermission | Where-Object { ($_.AccessRights -eq "*fullaccess*") -and ($_.User -like "*chilli*") }

Exchange Server – Warteschlange

Warteschlange anzeigen auf Server S8K011

Get-Queue -Server S8K011

Warteschlangen Queue verschieben

./Move-TransportDatabase.ps1 –QueueDatabasepath “C:\Queue” –QueueDatabaseLoggingPath “D:\Queue”

Exchange Server – System

Alle Exchange-Dienste starten

Test-ServiceHealth | Select ServicesNotRunning | foreach { Start-Service $_.ServicesNotRunning }

Exchange-Dienste Status in Tabelle

Test-ServiceHealth | ft

Testet die Exchange Organisation auf Fehler

Test-SystemHealth

Exchange Server – Verschiedenes

Sprache aller Postfächer auf dem Server S8K011 auf Deutsch setzen

Get-Mailbox -Server S8K011 | Set-Mailbox -language de-DE

Sprache der Postfächer auf Server S8K012 anzeigen, nach Sprache sortieren und als Tabelle mit Namen und Sprache anzeigen

Get-Mailbox -Server S8K012 | sort Languages | ft name, Languages

Liste der Benutzer die den Abwensenheitsassistenten aktiviert haben

Get-Mailbox | Get-MailboxAutoReplyConfiguration | Where-Object { $_.AutoReplyState –eq “scheduled” }

Datenbank – RPC CAS abfragen

Get-MailboxDatabase -Server s8k011 | fl name, rpc\*

Datenbank-Index

Standardmäßig werden alle Datenbanken mit aktiviertem Index angelegt. in diesem Ordner wird der Index erstellt: %datenbankpfad%\CatalogData-Guid. Diesen kann man allerdings aktivieren:

Set-MailboxDatabase MailboxDatabaseName -IndexEnabled:$false

Erste Datenbank löschen

Beim Installieren von Exchange Server 2010 wird automatisch eine Datenbank angelegt. Diese Läst sich nicht über die Gui löschen, auch wenn alle Postfächer verschoben sind. Darum muss man die

System-Postfächer verschieben:

Get-mailbox -Arbitration | New-MoveRequest -TargetDatabase "Berlin I - Postfach I"

Danach muss man noch die Verschiebungsanforderungen löschen und die Datenbank ist entfernbar.

Scripts

Alle Mitglieder einer Gruppe anzeigen und das bis zu 5 Ebenen.

Import-Module ActiveDirectory
$DG = Read-Host

function Get-MySubGroupMembersRecursive
{
	$Mitglieder = Get-ADGroupMember $DG
	ForEach ($Mitglieder in $Mitglieder)
	{
		If ($Mitglieder.ObjectClass -eq "Group")
		{
			Get-MySubGroupMembersRecursive1
		}
		If ($Mitglieder.ObjectClass -eq "User")
		{
			Write-Host ($Mitglieder.Name)
		}
	}
}

function Get-MySubGroupMembersRecursive1
{
	$Mitglieder2 = Get-ADGroupMember $Mitglieder.Name
	ForEach ($Mitglieder2 in $Mitglieder2)
	{
		If ($Mitglieder2.ObjectClass -eq "Group")
		{
			Get-MySubGroupMembersRecursive2
		}
		If ($Mitglieder2.ObjectClass -eq "User")
		{
			Write-Host ($Mitglieder2.Name)
		}
	}
}

function Get-MySubGroupMembersRecursive2
{
	$Mitglieder3 = Get-ADGroupMember $Mitglieder2.Name
	ForEach ($Mitglieder3 in $Mitglieder3)
	{
		If ($Mitglieder3.ObjectClass -eq "Group")
		{
			Get-MySubGroupMembersRecursive3
		}
		If ($Mitglieder3.ObjectClass -eq "User")
		{
			Write-Host ($Mitglieder3.Name)
		}
	}
}

function Get-MySubGroupMembersRecursive3
{
	$Mitglieder4 = Get-ADGroupMember $Mitglieder3.Name
	ForEach ($Mitglieder4 in $Mitglieder4)
	{
		If ($Mitglieder4.ObjectClass -eq "Group")
		{
			Get-MySubGroupMembersRecursive4
		}
		If ($Mitglieder4.ObjectClass -eq "User")
		{
			Write-Host ($Mitglieder4.Name)
		}
	}
}

function Get-MySubGroupMembersRecursive4
{
	$Mitglieder5 = Get-ADGroupMember $Mitglieder4.Name
	ForEach ($Mitglieder5 in $Mitglieder5)
	{
		If ($Mitglieder5.ObjectClass -eq "Group")
		{
			Get-MySubGroupMembersRecursive5
		}
		If ($Mitglieder5.ObjectClass -eq "User")
		{
			Write-Host ($Mitglieder5.Name)
		}
	}
}

function Get-MySubGroupMembersRecursive5
{
	$Mitglieder6 = Get-ADGroupMember $Mitglieder6.Name
	ForEach ($Mitglieder6 in $Mitglieder6)
	{
		If ($Mitglieder6.ObjectClass -eq "User")
		{
			Write-Host ($Mitglieder6.Name)
		}
	}
}

Get-MySubGroupMembersRecursive
von Manuel M. 8. Februar 2013 @ 13:19

Exchange Server 2010 – Admin Audit Log & Mailbox Audit Log

Admin Audit Log

Mit der Administrator Überwachungsprotokollierung können Änderungen von Administratoren bzw. Benutzern an der Exchange Organisation überwacht werden. Es werden alle Cmdlets überwacht, die aus der Verwaltungs-Konsole, Verwaltungs-Shell und Web-Verwaltungsoberfläche aufgerufen werden.

Konfiguration der Administrator Überwachungsprotokollierung

Die Administrator Überwachungsprotokollierung muss einmalig für die Organisation aktiviert werden:

  • Protokollierung aktivieren: Set-AdminAuditLogConfig -AdminAuditLogEnabled $True
  • Protokollierung von Test-Cmdlets deaktivieren: Set-AdminAuditLogConfig -TestCmdletLoggingEnabled $False
  • Dauer der Protokollierung definieren: Set-AdminAuditLogConfig -AdminAuditLogAgeLimit 90.00:00:00

Beispiel

Nach allen Änderungen suchen, die der User „Admin“ getätigt hat.

Search-AdminAuditLog -UserID Admin

Nach allen Änderungen suchen, die der User „Admin“ zwischen dem 1.1.2010 und dem 7.2.2013 getätigt hat und das Ergebnis an admin@test.local per E-Mail senden.

New-AdminAuditLogSearch -UserIds admin -StatusMailRecipients admin@test.local -StartDate 1/1/2010 -EndDate 7/2/2013

Mailbox Audit Log

Mit der Mailbox Überwachungsprotokollierung können Logins und Änderungen an einem Postfach nachvollzogen werden. Standardmäßig ist diese deaktiviert. Die Überwachung muss für jedes Postfach einzeln aktiviert werden.

Mailbox Audit Logging für alle Postfächer aktivieren

Get-Mailbox | Set-Mailbox -AuditEnabled $true

Beispiel

Search-MailboxAuditLog -ShowDetails | ft LogonUserDisplayName, LogonType, LastAccessed, ItemSubject
von Manuel M. 7. Februar 2013 @ 14:16
  • RSS
  • manuel m. on E-Mail
  • manuel m. on Faceboo
  • manuel m. on Google+