Exchange Migration: Sonderfall PST Migration (550 5.1.1)

Manchmal gibt es die Anforderung einen Exchange Server nicht auf dem herkömmlichen zu migrieren. Oft wird sich dann für eine PST-Migration, also der Export der Postfächer aus dem Quellsystem und der anschließende Import der Daten in die Zielpostfächer entschieden. Dieser Weg wird häufig bei Cross-Forrest Migrationen gewählt, gerade bei einer überschaubaren Anzahl von Postfächern lohnt allerdings der Einsatz von Spezialsoftware, wie zum Beispiel „Migration Manager for Exchange“ der Firma Dell, meist nicht.

Allerdings wird oft ein kleines Detail bei dieser Art der Migration vergessen: Wenn die Postfächer in einer neuen Gesamtstruktur erzeugt werden, wird ein neuer LegacyExchangeDN vergeben, besonders dann, wenn sich der Name der Gesamtstruktur ändert.

Das Attribut LegacyExchangeDN wird allerdings von Outlook für ein paar wichtige Dinge verwendet, das sind zum Beispiel Autovervollständigung von E-Mail Adressen und Zuordnung von Personen zu Terminen.

Hier mal ein kleinen Beispiel:

Ich habe im Outlook Cache einen Eintrag für „Mailbox1“

image

Mailbox1 verfügt über diesen LegacyExchangeDN:

/o=FrankysWeb/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=ce3ee9150f424250bda67e2a6e062aea-Mailbox1

PST

Sobald sich nun der LegacyExchangeDN ändert, weil das Postfach nun in einer neuen Gesamtstruktur liegt, zum Beispiel auf:

/o=FrankysWebNEU/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=ce3ee9150f424250bda67e2a6e062aea-Mailbox1

image

Dann passiert folgendes:

image

Der Benutzer bekommt eine Unzustellbarkeitsnachricht mit folgendem Inhalt:

Fehler bei der Nachrichtenzustellung an folgende Empfänger oder Gruppen:

Mailbox1
Die eingegebene E-Mail-Adresse konnte nicht gefunden werden. Überprüfen Sie die E-Mail-Adresse des Empfängers, und versuchen Sie, die Nachricht erneut zu senden. Wenden Sie sich an den Helpdesk, falls das Problem weiterhin besteht.
Diagnoseinformationen für Administratoren:

Generierender Server: EX1.frankysweb.local
IMCEAEX-_o=FrankysWeb_ou=Exchange+20Administrative+20Group+20+28FYDIBOHF23SPDLT+29_cn=Recipients_cn=ce3ee9150f424250bda67e2a6e062aea-Mailbox1@frankysweb.local
Remote Server returned ‚550 5.1.1 RESOLVER.ADR.ExRecipNotFound; not found‘

Hintergrund ist folgender: Outlook speichert nicht die E-Mail Adresse, sondern den LegacyExchangeDN. Welche Exchange oder Outlook Version eingesetzt wird, ist übrigens egal, das Verhalten ist überall gleich.

Um dieses Problem zu vermeiden gibt es eine einfache Lösung. Der alte originale LegacyExchangeDN muss als X500 Adresse an das entsprechende Postfach zugewiesen werden.

Wenn das Kind also schon in den Brunnen gefallen ist, dann lässt sich die X500 Adresse aus dem Unzustellbarkeitsbericht ermitteln, das funktioniert wie folgt:

  • Replace any underscore character (_) with a slash character (/).
  • Replace „+20“ with a blank space.
  • Replace „+28“ with an opening parenthesis character.
  • Replace „+29“ with a closing parenthesis character.
  • Delete the „IMCEAEX-“ string.
  • Delete the „@mgd.domain.com“ string.
  • Add „X500:“ at the beginning.

In meinem Fall also:

X500:/o=FrankysWeb/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=ce3ee9150f424250bda67e2a6e062aea-Mailbox1

Diese Adresse kann jetzt per Shell oder GUI zugewiesen werden:

image

Sobald die X500 Adresse hinzugefügt wurde, funktioniert auch der Mailversand an Adressen aus der Autovervollständigung wieder.

Wer eine Migration mit PST-Export/Import plant, kann sich das Leben allerdings direkt leichter machen:

Um die LegacyExchangeDNs aller Postfächer aus dem Quellsystem zu exportieren und auf dem Zielsystem als X500 Adresse wieder zu importieren, kann das folgende Script genutzt werden. Als Parameter müssen eine CSV-Datei und der Modus (Export/Import) angegeben werden. Das Script setzt gleiche Aliase für den Import voraus.

param
(
[Parameter(Mandatory=$True)]
[string]$CSVFile
,
[Parameter(Mandatory=$True)]
[string]$FunctionLevel
)

if ($FunctionLevel -notmatch "Import" -and $FunctionLevel -notmatch "Export")
{
  write-host "Nur Import oder Export als Parameter gültig"
  exit 0
}

if ($FunctionLevel -match "Export")
{

"SamAccountName;Alias;LegacyExchangeDN" | set-content $csvfile
$mailboxlist = get-mailbox -resultsize unlimited
foreach ($mailbox in $mailboxlist)
{
  $samaccount = $mailbox.SamAccountName
  $legacydn = $mailbox.LegacyExchangeDN
  $alias = $mailbox.Alias
  "$samaccount;$Alias;$legacydn" | add-content "$csvfile"
}

}

if ($FunctionLevel -match "Import")
{

$mailboxlist = import-csv $csvfile -delimiter ";"
foreach ($mailbox in $mailboxlist)
  {
   $samaccount = $mailbox.SamAccountName
   $legacydn = $mailbox.LegacyExchangeDN
   $alias = $mailbox.Alias
   $ProxyAddresses = (Get-Mailbox $alias).EmailAddresses
   $x500 = "X500:" + "$legacydn"
   $x500
   $x500 =  [Microsoft.Exchange.Data.CustomProxyAddress]("$x500")
   $ProxyAddresses += $x500
   Set-Mailbox $alias -EmailAddresses $ProxyAddresses
  }
   
}

11 Replies to “Exchange Migration: Sonderfall PST Migration (550 5.1.1)”

  1. Du bist echt der Beste. Es gibt keine Seite, die für Windows Server / Exchange so nützlich ist :-)

  2. Danke, exakt das gleiche Problem gehabt nach einer Migration von Exchange 2003 auf 2013 mit PST Export. Lösung hat geholfen.

  3. Hmm, das Script funzt bei mir leider nicht :( hab es als vbs gespeichert, aber er sagt schon das in der 2. zeile, das 1. zeichen eine anweisung erwartet. Ich starte es über cmd mit dem befehl: cscript x500.vbs x500.csv Export.

    klappt aber nicht. Quellserver ist ein SBS2003, zielserver ist ein Exchange 2010 auf nem Server2012R2. Wo ist da der fehler? *confused*

  4. Hallo,
    gibt es die Möglichkeit die x500 Adresse an alle User per Richtlinie zu verteilen?

  5. Hallo, haben das gleiche Problem, alter Server SBS 2007, neue Domäne aufgebaut und Exchange 2016 eingerichtet. PST importiert und nun bekommen wir diese Fehlermeldungen. Allerdings nützt der X500 Eintrag auch nichts, bekommen trotzdem Fehlermeldungen. Versand über Extern geht, genauso über OWA. Nur über Outlock geht es nicht…

    Weiß hier jemand zu helfen?

  6. Hallo Franky,

    Es wurden mittels shell Externe Kontakte erstellt, das führte wiederum dazu dass die Kontaktobjekte in AD auftauchten.
    Da es nicht mehr gewünscht war externe Kontakte im Globalen Adressbuch zu sehen da diese dort für den Anwender nicht editierbar sind wurden die Kontaktobjekte aus AD gelöscht.
    Allerdings kommt es beim senden einer Mail zu diesen externen Adressen immerwieder zu Fehlern da exchange anscheinen nicht mitbekommen hat dass die Kontakte nicht mehr existieren und sucht nach internen Postfächern anstatt an eine externe Mailadresse zu senden.

    Kann ich Exchange dazu bringen sich neu zu initalisieren oä?

    Mfg
    Michael

  7. Bei mir lag der Fehler daran, dass ich in der AD eine Email Adresse bei dem Benutzer eingetragen hatte, die gar nicht intern lag.

  8. Moin!
    Szenario: SBS 2003 Umzug auf Srv. 2012 R2 mit Exchange 2016, Name der Domain bleibt gleich, Exchange Server würde dann wenns hilft auch den gleichen Namen wie der alte SBS 2003 bekommen, die Postfächer würden von den Clients via PST Export gesichert und später nach anmeldung am neuen Server wieder am Client importiert.
    Besteht dieses Problem auch wenn Domain Name und Exchange Server Name gleich bleiben?
    Kann man es nicht irgend wie im Vorfeld vermeiden ohne extra Adressen als X500 anzulegen?

    Gruß Ingo

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.