IMAP-Migration via Powershell

Vorher muss das Exchange Online PowerShell V2-Modul installiert werden.

Per GUI ist das super simple. Aber nun wollen wir per Powershell von einem IMAP-Server alle Mails zu Microsoft 365 umziehen.

Vorbereiten der CSV

Wir brauchen eine CSV mit den folgenden Kopfzeilen:

EmailAddress,UserName,Password
ms365@tino-ruge.de,imap@tino-ruge.de,DasK3nnw0rtCode language: CSS (css)

Erste Spalte ist der Name des MS365-Benutzers, in den die Mail gedumpt werden soll. Zweite Spalte ist der IMAP-Anmeldename. Dritte Spalte ist das IMAP-Kennwort.

Der IMAP-Name kann von der E-Mail abweichen; hier ist das z.B. der Fall. Er kann aber auch identisch sein. Ist für die Migration egal, Microsoft schluckt beides.

Die CSV speichern wir in unserem Beispiel in C:\csv.txt – und nutzen wir erst später wieder.

Verbinden zum Exchange Online

Aufmerksame Leser kennen es bereits – Powershell und

Connect-ExchangeOnline

Erstellen des Migrationsendpunktes

Damit der Exchange Online blickt, woher die Mails kommen, müssen wir erst den Endpunkt anlegen. Mit folgendem Befehl (in diesem Beispiel IONOS) testen wir rum, ob das passt:

Test-MigrationServerAvailability -Imap -RemoteServer imap.ionos.de -Port 993 -Security SslCode language: CSS (css)

Wenn das passt, bekommen wir folgende Ausgabe:

RunspaceId      : ...........
<strong>Result          : Success</strong>
Message         :
SupportsCutover : False
ErrorDetail     :
TestedEndpoint  : imap.ionos.de
IsValid         : True
Identity        :
ObjectState     : NewCode language: PHP (php)

Wenn es nicht passt, ist Result auf Failed.

Nachdem wir ausreichend rumgespielt haben, bis das passt (Security kann z.B. auch Tls sein) registrieren wir den Endpunkt:

New-MigrationEndpoint -IMAP -Name IONOS -RemoteServer imap.ionos.de -Port 993 -Security Ssl
Code language: CSS (css)

Und damit weiß der Exchange Online, wie er auf den IMAP-Server von IONOS zugreift.

Start der Migration

Der Befehl zum Starten der Migration lautet wie folgt:

New-MigrationBatch -Name "IONOS-Migration" -SourceEndpoint "IONOS" -CSVData ([System.IO.File]::ReadAllBytes("C:\csv.txt")) -AutoStartCode language: PHP (php)

Nun können wir uns entspannt einen Kaffee holen und abwarten.

Beobachten im Exchange Online Admin-Center

Die Migration können wir übrigens auch im Exchange Online Admin-Center einsehen:

Da hätten wir sie auch erstellen können, aber darum geht es hier ja nicht.

Löschen des Jobs

Macht folgender Befehl:

Remove-MigrationBatch -Identity "IONOS-Migration"Code language: JavaScript (javascript)
Kategorien:Microsoft 365