Der zweite Teil unseres Vorabartikels aus dem neuen IT-Administrator Sonderheft "PowerShell" zeigt auf, wie sich Exchange-Postfächer und -Datenbanken in der Praxis via PowerShell verwalten lassen. Doch Microsofts Scripting-Umgebung hilft nicht nur bei der Administration, sie ist auch in der Lage, den Administrator in Sachen Monitoring zu unterstützen und so die Performance des wichtigen Kommunikationsservers zu optimieren.
Die Exchange-Postfächer sind meist Benutzerpostfächer, die Personen zugeordnet sind, daneben kann diese Ressource aber auch beispielsweise für Besprechungsräume angelegt werden. Jedem Benutzerpostfach ist ein Active-Directory-Konto zugeordnet, das dem Anwender Zugriff auf das Postfach gibt, um E-Mail-Nachrichten senden und empfangen sowie Besprechungen und Termine erstellen zu können. Sprich, ein Postfach ist ein unverzichtbarer Bestandteil der Zusammenarbeit, der reibungslos funktionieren sollte.
Verwaltung von Postfächern
Die Exchange-PowerShell bietet weit mehr Möglichkeiten zur Verwaltung von Postfächern als nur das Abrufen oder Setzen einfacher Eigenschaften. In diesem Abschnitt gehen wir tiefer auf diese Funktionen ein. Mit dem folgenden Code richten Sie zum Beispiel ein neues Postfach sehr schnell mit dem New-Mailbox-Cmdlet ein:
Im Beispiel wird der Benutzer ebenfalls im Active Directory angelegt. Ist bereits ein User vorhanden, kann dieser über das Enable-Mailbox-Cmdlet für E-Mail aktiviert werden.
Die Exchange-Postfächer sind meist Benutzerpostfächer, die Personen zugeordnet sind, daneben kann diese Ressource aber auch beispielsweise für Besprechungsräume angelegt werden. Jedem Benutzerpostfach ist ein Active-Directory-Konto zugeordnet, das dem Anwender Zugriff auf das Postfach gibt, um E-Mail-Nachrichten senden und empfangen sowie Besprechungen und Termine erstellen zu können. Sprich, ein Postfach ist ein unverzichtbarer Bestandteil der Zusammenarbeit, der reibungslos funktionieren sollte.
Verwaltung von Postfächern
Die Exchange-PowerShell bietet weit mehr Möglichkeiten zur Verwaltung von Postfächern als nur das Abrufen oder Setzen einfacher Eigenschaften. In diesem Abschnitt gehen wir tiefer auf diese Funktionen ein. Mit dem folgenden Code richten Sie zum Beispiel ein neues Postfach sehr schnell mit dem New-Mailbox-Cmdlet ein:
Im Beispiel wird der Benutzer ebenfalls im Active Directory angelegt. Ist bereits ein User vorhanden, kann dieser über das Enable-Mailbox-Cmdlet für E-Mail aktiviert werden.
Um das angelegte Postfach in eine andere Postfachdatenbank zu verschieben, ist der folgende Aufruf zu nutzen. Dabei müssen Sie lediglich einen Nutzer und die zugehörige Zieldatenbank erzeugen:
Über das Add-MailboxFolderPermission-Cmdlet lassen sich Rechte auch auf Ordnerebene festlegen.
Als Nächstes gehen wir kurz auf die Archivpostfächer ein. Die Nutzung des Exchange-Archives aktivieren Sie mit dem Enable-Mailbox-Befehl (das Deaktivieren erfolgt über Disable-Mailbox). Hierfür muss nur der Parameter "Archive" zum Einsatz kommen:
Als Letztes sei auf das Exportieren von Postfächern in PST-Dateien verwiesen. Sofern Sie über die entsprechenden Rechte verfügen, ist dies schnell durchgeführt:
Haben Sie sich bereits mit Get-Mailbox einen Überblick über die Postfächer und deren Eigenschaften verschafft, fragen Sie die Details einer Mailbox mit Get-MailboxStatistics ab. Als Rückmeldung erhalten Sie unter anderem die Anzahl der Elemente in dem Postfach sowie die Größe:
Get-MailboxStatistics <Christian> | ft DisplayName, ItemCount, TotalItemSize
Die Exchange-Management-Shell bietet eine umfangreiche Sammlung von Cmdlets zur Verwaltung von Postfächern. Mit diesen können Administratoren effizient Postfächer erstellen, konfigurieren, migrieren und exportieren. Dieser Abschnitt hat Ihnen einen Überblick über die verschiedenen Befehle gegeben. Es lohnt sich, sich mit diesen vertraut zu machen, um die volle Kontrolle über die Exchange-Umgebung zu erlangen.
IT-Administrator Sonderheft PowerShell
Das erste IT-Administrator Sonderheft 2024 zum Thema "PowerShell – Infrastrukturen automatisiert verwalten" liefert 180 Seiten praktisches Know-how zum Umgang mit der Microsoft-Skriptumgebung und deren Einsatz zur Automatisierung wichtiger Serversysteme.
Das Autorenteam wirft zunächst einen Blick auf die Methoden und Techniken, die die PowerShell für die Administration bereitstellt. So kommen wichtige Sicherheitsmechanismen, der Remote-Zugriff und der Einsatz von Klassen zur Sprache. Sehr wichtig ist für Admins in diesem Zusammenhang, die Unterschiede zwischen den Versionen 5 und 7 der PowerShell zu verstehen, weshalb das Sonderheft darauf im Detail eingeht. Und neben fortgeschrittenen Techniken wie dem Erstellen eigener Cmdlets oder der Zusammenarbeit von PowerShell und Python, finden Einsteiger einen umfangreichen Grundlagenartikel als ergänzenden Download.Den praktischen Einsatz von PowerShell-Skripten demonstrieren wir dann unter anderem für Exchange, Active Directory, Storage und im Netzwerk. Natürlich kommt auch das Management von Windows-Servern nicht zu kurz und wir zeigen darüber hinaus, wie die Desired State Configuration für Sicherheit sorgt. Das Sonderheft schließt mit einer Rubrik rund um Tools ab, die Zusatzfunktionen für die PowerShell liefern oder die Arbeit damit deutlich vereinfachen.Das Sonderheft ist ab Ende April 2024 verfügbar und kostet für Abonnenten des IT-Administrator 24,90 Euro, für Nicht-Abonnenten werden 29,90 Euro fällig.
Überwachung des Serverstatus
Die Exchange-Management-Shell bietet nicht nur Werkzeuge zur Verwaltung von Postfächern und Konfigurationseinstellungen, sondern auch zur Überwachung und Diagnose von Exchange selbst. Diese Überwachungsfunktionen sind für Administratoren unerlässlich, um die Gesundheit und Leistung ihrer Exchange-Umgebung sicherzustellen. Eine Übersicht der Server in einer Organisation erhalten Sie über Get-ExchangeServer. Um den Status von Exchange zu ermitteln, bietet sich zunächst die Überprüfung der Dienste mittels Test-ServiceHealth an. Dieses Cmdlet zeigt an, welche erforderlichen Dienste auf dem Server laufen und welche nicht. Dies gibt einen schnellen Überblick über potenzielle Probleme. Sofern ein benötigter Dienst nicht gestartet ist, wird "RequiredServicesRunning" als "false" angezeigt. Die Abfrage kann für den lokalen, aber auch für entfernte Server zum Einsatz kommen.
Nicht gestartete Dienste erwecken Sie mit Start-Service zum Leben, auf entfernten Exchange-Servern gelingt dies wie folgt:
Informationen zum Status von Exchange selbst erhalten Sie über den Aufruf Get-HealthReport. Dies ist immer ein erster Ansatzpunkt bei der Fehlersuche und die Komponenten können die Status "Degraded", "Unhealthy", "Repairing", "Disabled", "Unavailable" und "UnInitialized" annehmen. Zum Anzeigen fehlerhafter Komponenten nutzen Sie:
Bild 1: Den Status der Administrator-Überwachungsprotokollierung liefert die Exchange Management Shell und der Get-AdminAuditLogConfig-Befehl.
Etwas ausführlicher geht der Get-ServerHealth-Befehl auf die einzelnen Komponenten von Exchange ein. Da die Liste der Rückmeldungen sehr umfangreich ist, lohnt sich zunächst der Blick auf
Ein weiterer wichtiger Aspekt ist die Überwachung des Status der Mailbox-Datenbanken in einer Database Availabilty Group (DAG), den Sie mittels Get-MailboxDatabaseCopyStatus prüfen. Dies gibt Auskunft darüber, ob Datenbankkopien gesund sind, synchronisiert werden und ob sie aktiv oder passiv sind. Hat eine Datenbank den Status "Failed" oder "FailedAndSuspended" sollten Sie etwas genauer hinschauen. So ergänzt das Test-ReplicationHealth-Cmdlet die Prüfung der DAG. Verwenden Sie das Cmdlet, um alle Aspekte von Replikation und Wiedergabestatus zu überprüfen und sich so einen vollständigen Überblick über die DAG zu verschaffen.
E-Mail-Warteschlangen sind ein weiterer kritischer Bereich, den es im Blick zu haben gilt. Mit Get-Queue | ft prüfen Sie deren Status. Dies zeigt alle Warteschlangen auf dem Server und Informationen über den jeweiligen Status. Der Test-Mailflow-Befehl überprüft die Mailflow-Konnektivität und schaut, ob aus dem Systempostfach eine Nachricht an einen Postfachserver übermittelt wird. Diese gibt erste Hinweise, ob der E-Mail-Fluss intern gestört oder verzögert ist.
Ein weiterer Aspekt, den Sie bei der Überwachung ebenfalls beachten sollten, ist die Performance. Mit der PowerShell können Sie auch auf Windows Performance Counter zugreifen, um verschiedene Aspekte der Exchange-Performance zu überwachen:
Dies bringt die aktuelle Anzahl der MAPI-Nutzer zur Anzeige. Die OWA-Nutzer erreichen Sie über den Counter "MSExchange OWA\Current Unique Users". Eine Liste sämtlicher Sets lassen Sie sich mit folgendem Befehl ausgeben:
Die einzelnen Counter aus einem Set lesen Sie wiederum mit (Get-Counter -ListSet "MSExchange OWA").Paths aus.
Die PowerShell bietet eine breite Palette von Überwachungs- und Diagnosewerkzeugen für Exchange-Administratoren. Durch regelmäßige Überwachung und schnelle Reaktion auf festgestellte Probleme stellen Sie sicher, dass Ihre Exchange-Umgebung reibungslos und effizient läuft. Es ist ratsam, regelmäßige Überwachungsskripte oder -aufgaben einzurichten, um proaktiv auf potenzielle Probleme zu reagieren. Hier sei zum Abschluss noch auf das Skript "Exchange Server Health Checker" [2] verwiesen, das bei der Erkennung von häufigen Konfigurationsproblemen, die zu Leistungsengpässen und anderen, langanhaltenden Unanehmlichkeiten führen, hilft. Es listet dabei nützliche Informationen über den Server auf, um den Prozess der allgemeinen Informationssammlung über den Exchange-Server zu beschleunigen.
Bild 2: Postfächer lassen sich über die PowerShell bequem anlegen und auch zwischen Datenbanken verschieben.
Exchange-Datenbanken verwalten
Exchange-Datenbanken sind das Herzstück der Umgebung und ihre effiziente Verwaltung ist entscheidend für eine reibungslose Kommunikation. Die PowerShell bietet eine leistungsstarke Schnittstelle für die Verwaltung dieser Datenbanken. Im Folgenden stellen wir Ihnen wichtige Befehle für diese Aufgabe vor.
Mit Get-MailboxDatabase verschaffen Sie sich zunächst einen Überblick über alle vorhandenen Datenbanken und deren Status. Das Wichtigste dabei ist, ob eine Datenbank eingebunden ist oder nicht. Ist dies nicht der Fall, können Sie die Datenbank direkt in Exchange mounten:
Mount-Database -Identity "<LABDB01>"
Das Dismounten erfolgt entsprechend mit dem Dismount-Database-Cmdlet.
Wichtig sind dabei neben den Pfaden zu der Datenbank auch die Größe der DB, was sowohl die reine Dateigröße im Dateisystem als auch den freien Speicherplatz in der Datenbank umfasst. Diese Werte fragen Sie recht schnell mit folgendem Befehl ab:
Wichtig ist dabei der Parameter "Status", damit die Größen auch angezeigt werden.
Welche Postfächer sich in einer Datenbank befinden, listen Sie sich wie folgt auf:
Get-Mailbox -Database "<LABDB01>" | ft Name, WindowsEmailAddress
Bild 3: Das HealthChecker-Skript analysiert die Exchange-Konfiguration und listet die häufigsten Konfigurationsprobleme auf.
Größenbeschränkungen beim Transport im Blick
Exchange bietet verschiedene Optionen, mit denen Sie Größenbeschränkung für E-Mails konfigurieren. Die Limits lassen sich dabei sehr granular auf Postfach- oder Protokoll-Ebene einrichten. Um den Versand von und nach extern über die Connectoren zu regulieren, passen Sie deren Einstellungen an. Den aktuellen Status fragen Sie mit
Get-SendConnector | ft Name, MaxMessageSize und Get-ReceiveConnector | ft Name, MaxMessageSize
ab. Standardmäßig liegt die Größenbeschränkung bei 35 beziehungsweise 36 MByte. Sie ändern diese Werte ebenfalls recht schnell, hier als Beispiel mit einem Limit von 50 MByte:
Daneben lassen sich noch die Organisationsbeschränkungen anpassen, die bei 10 MByte im Auslieferungszustand liegen. Sie überprüfen den aktuelles Status mit:
Beachten Sie bei der Konfiguration, dass die maximalen Werte für die Nachrichtengröße durch die Base64-Codierung circa 33 Prozent höher sein müssen als die tatsächlich nutzbare maximale Nachrichtengröße. Mit den oberen Befehlen kann der User Christian also nur etwa 33 MByte große E-Mails senden und empfangen. Sollten Sie Exchange Web Service (EWS), Outlook Web Access (OWA) oder ActiveSync nutzen, sind zusätzlich Anpassungen in der Webkonfiguration durchzuführen [3].
Planen Sie die Nachrichtengrößenbeschränkungen so, dass E-Mails möglichst früh in der Transport-Pipeline zurückgewiesen werden. An den Stellen, an denen Nachrichten in die Organisation eintreten, sollten die Beschränkungen möglichst restriktiv sein, damit Sie E-Mails aus dem Internet nicht erst annehmen, um sie im weiteren Verlauf abzulehnen. Benutzerbeschränkungen setzen die Begrenzungen für die Organisation innerhalb der Organisation außer Kraft, sodass Sie Gruppen definieren können, die untereinander größere E-Mails senden.
Bild 4: Die Postfachbegrenzungen werden individuell am Postfach oder zentral in der Datenbank konfiguriert.
Postfächer beschränken
Damit die Postfächer nicht unkontrolliert anwachsen, ist es wichtig, entsprechende Beschränkungen zu definieren. Auf diesem Weg planen Sie indirekt das Wachstum der Datenbanken und Sie können ein unkontrolliertes Ansteigen der Postfachgröße verhindern. Definieren Sie immer eine Maximalgrenze, damit das Datenbanklaufwerk nicht vollläuft, auch wenn es Ihnen utopisch vorkommt. Nichts ist schlimmer als ein volllaufendes Postfach durch eine Mailschleife, die Exchange gegebenenfalls nicht erkennt. Die Einstellungen fragen Sie zunächst an der Mailbox. Über das Attribut "UseDatabaseQuotaDefaults" definieren Sie dabei, ob der Datenbankstandard genutzt wird:
Standardmäßig werden die Einstellungen der Datenbank übernommen, die bei Auslieferung bei einer maximalen Postfachgröße von 2 GByte liegen. Die Konfiguration über die Datenbank ist die zweite Stelle, an der Sie Grenzwerte für die Postfachgrößen definieren. Sie fragen die Parameter über diesen Befehl ab:
Das folgende Beispiel listet Ihnen die Einstellungen aller Mailboxen einer Datenbank auf, die nicht die Standardvorgaben nutzen. Auf diesem Weg bekommen Sie schnell Klarheit, wer die Einstellungen der Datenbank nutzt und bei wem individuelle Grenzwerte definiert sind:
Sofern Sie unterschiedliche Limits benötigen, fassen Sie die Mailboxen in eigenen Datenbanken zusammen, damit Sie die Rechte nicht an jedem Postfach explizit setzen müssen.
Definieren Sie nicht nur die Grenzen, sondern beschreiben Sie auch, wie die Mitarbeiter beim Erreichen der Grenzen handeln sollen. Sie sollten unbedingt vermeiden, Mitarbeiter in eine Schatten-IT zu zwingen. Denn schneller als Sie denken, werden E-Mail-Ablagen in Netzlaufwerken geschaffen oder durch die Nutzung von PST-Files dem Echtsystem entrissen.
Fazit
Insgesamt bietet die Exchange-Management-Shell eine flexible und leistungsstarke Umgebung für Administratoren, um Exchange-Server effizient zu verwalten, zu automatisieren und zu überwachen. Die EMS ist für die Administration tägliche Anlaufstelle und wir haben Ihnen einige wichtige Aspekte nähergebracht, damit das Auslesen und Konfigurieren zukünftig etwas schneller vonstattengehen.