So rufen Sie alle SMTP-E-Mail-Adressen in Exchange mithilfe von PowerShell ab

Sie möchten all diese SMTP-Adressen aus Exchange oder Office 365 exportieren? Das ist praktisch für Audits, Migrationen oder einfach, um die Zuordnung von E-Mail-Aliasen zu erleichtern. Manchmal ist die riesige Liste der SMTP-Adressen, die Benutzern, Kontakten oder Gruppen zugeordnet sind, der einzige Anhaltspunkt für Aufräumarbeiten oder Fehlerbehebungen. Wie importiert man all diese Informationen in eine CSV-Datei? Mit PowerShell ist das möglich, kann aber anfangs etwas verwirrend sein – insbesondere bei der Arbeit mit lokalem Exchange oder Azure AD-Objekten. Dieser Leitfaden zeigt Ihnen mit einfachen Befehlen und Tipps, wie Sie den Überblick behalten und nicht länger in einem Meer von E-Mail-Adressen versinken. Sie erfahren mehr über primäre Adressen, Aliase und wie Sie alles sauber exportieren, um es später wiederzufinden. Und ja, es funktioniert sowohl in Exchange Server- als auch in Microsoft 365-Umgebungen, denn je nach System müssen Sie natürlich die Vorgehensweise anpassen.

So exportieren Sie SMTP-Adressen aus Exchange oder Microsoft 365

Stellen Sie eine Verbindung zu Ihrer Exchange-Umgebung her.

  • Sie können die Exchange-Verwaltungsshell (EMS) für lokale Exchange-Installationen verwenden – diese finden Sie normalerweise im Startmenü unter Exchange-Verwaltungsshell.
  • Oder, bei Cloud-Setups, stellen Sie die Verbindung über PowerShell mithilfe des Exchange Online-Moduls her.

Bei neueren Installationen müssen Sie wahrscheinlich das neueste Exchange Online PowerShell-Modul installieren. Hier ist eine schnelle Möglichkeit, eine Verbindung zu Ihrem Mandanten herzustellen:

Connect-ExchangeOnline -UserPrincipalName [email protected]

Profi-Tipp: Je nach Umgebung müssen Sie PowerShell möglicherweise als Administrator ausführen oder Ihre Ausführungsrichtlinien entsprechend anpassen Set-ExecutionPolicy RemoteSigned. Bei Verbindungsproblemen kann ein Neustart von PowerShell oder eine erneute Authentifizierung helfen.

E-Mail-Adressen eines einzelnen Postfachs anzeigen

Dieser Befehl ruft alle primären und sekundären SMTP-Adressen eines bestimmten Benutzers ab:

Get-Mailbox testmax | Select-Object DisplayName, PrimarySmtpAddress, EmailAddresses | Format-List

Dies hilft Ihnen, die vorhandenen Adressen zu überprüfen. Großbuchstaben SMTPkennzeichnen die primäre Adresse, Kleinbuchstaben smtphingegen Aliase oder zusätzliche Adressen. Manchmal stoßen Sie auf andere Adresstypen – wie X400- oder benutzerdefinierte Adressen – daher bietet dieser Befehl einen guten ersten Überblick über die zugewiesenen Adressen.

Alle SMTP-Adressen einschließlich Aliase extrahieren

Da in einem Postfach mehrere SMTP-Adressen gespeichert sein können EmailAddresses, filtert dieser Befehl diese explizit heraus:

Get-Mailbox testmax | Select-Object DisplayName, PrimarySmtpAddress, @{ Name="SMTPAliases"; Expression={ ($_. EmailAddresses | Where-Object { $_ -match "^smtp:" } | ForEach-Object { $_ -replace "^smtp:", "" }) -join ", " } }

So erhalten Sie eine durch Kommas getrennte Liste aller SMTP-Aliasse. Wenn Sie dies für alle Benutzerpostfächer durchführen und als CSV-Datei speichern möchten, finden Sie hier die vollständige Anleitung:

Get-Mailbox -ResultSize Unlimited | Select-Object DisplayName, PrimarySmtpAddress, @{ Name="SMTPAliases"; Expression={ ($_. EmailAddresses | Where-Object { $_ -match "^smtp:" } | ForEach-Object { $_ -replace "^smtp:", "" }) -join ", " } } | Export-Csv "C:\\PS\\List-All-SMTP-Addresses.csv" -NoTypeInformation -Encoding UTF8

Dies erzeugt eine übersichtliche Liste aller Benutzerpostfächer. Der Pfad kann beliebig geändert werden. Selbst bei manchen Systemen kann die einmalige Ausführung dieses Befehls zu Fehlern oder unvollständigen Daten führen. Manchmal hilft ein Neustart oder eine erneute Verbindung. Geben Sie also nicht auf, wenn es beim ersten Mal nicht funktioniert.

Abrufen von SMTP-Adressen aller Objekte in Active Directory oder Azure AD

Benötigen Sie mehr als nur Benutzerkonten, z. B.Kontakte, Gruppen oder E-Mail-fähige Objekte, verwenden Sie Get-Recipient. Dieser Befehl deckt alle Objekttypen in Ihrem Exchange-Mandanten ab:

Get-Recipient -ResultSize Unlimited | Select-Object DisplayName, RecipientType, PrimarySmtpAddress, @{ Name="SMTPAliases"; Expression={ ($_. EmailAddresses | Where-Object { $_ -match "^smtp:" } | ForEach-Object { $_ -replace "^smtp:", "" }) -join ", " } }

Sie möchten beispielsweise nur Verteilergruppen? Fügen Sie den -RecipientTypeParameter einfach wie folgt hinzu:

Get-Recipient -ResultSize Unlimited -RecipientType DistributionGroup |...

Auf diese Weise können Sie die irrelevanten Daten herausfiltern und sich auf bestimmte Objekttypen konzentrieren – hilfreich, wenn Sie E-Mail-Adressen in Ihrer gesamten Microsoft-Umgebung bereinigen oder überprüfen möchten.

Doppelte SMTP-Adressen finden

Falls Sie befürchten, dass mehrere Objekte dieselbe E-Mail-Adresse verwenden könnten, listet dieser Befehl alle SMTP-Server jedes Empfängers auf – ideal zur Behebung von Adresskonflikten oder Duplikaten:

Get-Recipient -ResultSize Unlimited | Where-Object { $_. EmailAddresses -like "*[email protected]*" }

Für große Mandanten ist es nicht optimal, aber für schnelle Überprüfungen ausreichend. Wenn Sie eine Rohliste aller SMTP-Adressen benötigen, gibt dieses Tool die Adressen übersichtlich und ohne Duplikate aus – nur Adressen:

Get-Recipient | Select-Object -ExpandProperty EmailAddresses | Where-Object { $_ -match "^smtp:" } | ForEach-Object { $_ -replace "^smtp:", "" } | Sort-Object -Unique

Ideal, um sich schnell einen Überblick über alle in Ihrem Unternehmen verwendeten SMTP-Server zu verschaffen. Manchmal reicht es schon, zu wissen, welche Server bereits im Einsatz sind, um E-Mail-Konflikte zu lösen oder eine Migration vorzubereiten.

Zusammenfassung

  • Verwenden Sie PowerShell-Befehle wie Get-Mailboxund, Get-Recipientum E-Mail-Adressen aufzulisten.
  • Filtern und bereinigen Sie die E-Mail-Adressen, um primäre Adressen und Aliase klar zu erkennen.
  • Exportieren Sie alle Daten in eine CSV-Datei, um die Verwaltung oder Prüfung zu vereinfachen.
  • Stellen Sie sicher, dass Sie mit der richtigen Umgebung – lokal oder in der Cloud – verbunden sind, bevor Sie Befehle ausführen.
  • Haben Sie Geduld – manchmal benötigen Befehle ein paar Versuche oder einen kurzen Neustart der Sitzung, um die vollständige Liste auszugeben.

Zusammenfassung

Das Extrahieren aller SMTP-Adressen aus Exchange oder Microsoft 365 ist kein Hexenwerk, sobald man PowerShell beherrscht. Es erfordert etwas Einarbeitungszeit – insbesondere bei der Arbeit mit verschiedenen Objekttypen und Umgebungen –, aber die Befehle sind recht einfach. Besonders hilfreich ist es, die richtigen Cmdlets zu kennen und die Ergebnisse übersichtlich zu filtern. Damit sollten Sie alle E-Mail-Adressen von Benutzern, Kontakten und Gruppen problemlos erfassen, anzeigen und exportieren können. Hoffentlich spart dies jemandem, der eine Bereinigung durchführt oder eine Migration vorbereitet, einige Stunden. Viel Erfolg! Und denken Sie daran: Testen Sie Ihre Skripte in einer Testumgebung, wenn Sie größere Datenmengen bearbeiten. Vorsicht ist besser als Nachsicht.