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
}
}

23 Gedanken zu „Exchange Migration: Sonderfall PST Migration (550 5.1.1)“

  1. 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*

    Antworten
  2. 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?

    Antworten
  3. 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

    Antworten
  4. 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

    Antworten
  5. Hallo Franky,
    hab’s gemacht wie beschrieben und muss sagen funktioniert, bis auf eine E-Mail Adresse.
    Bei dieser erhalte ich nach wie vor den gleichen Fehler.
    Hast Du ne Idee an was das liegen könnte?
    Dank Dir für die Antwort!

    Antworten
    • Hallo, habe das gleiche Problem von SBS2008 auf Exchange2019; muß man dort dann vor der E-Mail Adresse die X500: noch vorschreiben oder nur als E-Mail Adress-Typ?

      Antworten
        • Habe das im e-Mail Postfach vom Exchange 2019 in der administrativen Konsole eingetragen:
          /O=FIRST ORGANIZATION_OU=EXCHANGE ADMINISTRATIVE GROUP (FYDIBOHF23SPDLT)/CN=RECIPIENTS/CN=Test-User
          Trotzdem erhalte ich von Benutzern eine Fehlermeldung. Muß ich davor jetzt noch in der administrativen Konsole „X500:“ schreiben?
          mfg.
          Hartmut

  6. Hallo Frank,
    kurze Verständnisfrage:
    Sprichst du über einen PST-Export aus dem Exchange heraus oder aus Outlook heraus?
    Viele Grüße
    Christian

    Antworten
  7. Hallo Franky, wir haben das gleiche Problem bei einer PST Migration (—>Outlook 2016) von SBS2011 auf eine Hosted Exchange Lösung von ionos bekommen. Allerdings können wie die Lösung nicht verwenden, weil der Anbieter dem Kunden nur eine minimale Exchange Verwaltung zur Verfügung stellt. Genaugenommen kann man da nur ein Konto erstellen, Weiterleitung und Aliase einrichten. Gibt es grundsätzlich noch eine Möglichkeit am Client evtl. über das offline Adressbuch von Outlook, Registry
    oder anderes das geradezu biegen?

    Grüße Andi

    Antworten
  8. Moin!

    Vielleicht kann ich mit dieser Info dem einen oder anderen noch helfen.
    Bei mir hatte das Ganze anfangs nicht funktioniert. Wir verwenden Exchange 2016 – eventuell wurde hier etwas geändert..?

    Ich habe den Eintrag über die GUI vorgenommen. Ich musste dafür eine kleine Anpassung vornehmen im Vergleich zu dem, was im Screenshot zu sehen ist. Außerdem habe ich eine Kleinigkeit übersehen.

    1. Beim Eintragen des E-Mail-Adresstyps muss ein Punkt mit rein (das ist im Screenshot anders). Also: X.500 statt X500
    2. Beim Eintragen der Adresse muss das „X500:“ am Anfang weggelassen werden. (Das verlinkte Skript z.B. generiert eine Adresse MIT diesem Präfix. Da auf jeden Fall darauf achten ihn beim Kopieren wegzulassen.)

    Wenn ich beides beachte dann funktioniert es. Sobald der Punkt fehlt oder ich das Präfix mit eintrage, wird dieselbe Fehlermeldung ausgegeben wie vorher.

    Hoffe ich konnte damit jemandem etwas Frust ersparen. ;)

    Liebe Grüße
    Thomas

    Antworten
  9. Die Dokus von Microsoft sind nicht ganz vollständig. Möglicherweise enthält die IMCEAEX-Adresse der Fehlermeldung noch andere (nicht dokumentierte) +XX Werte, die decodiert werden müssen (Zum Beispiel die Zeichen „Klammer auf“ und „Klammer zu“). Die X500 Adresse muss frei von +XX-Werten sein. Es ist möglich die korrekte Adresse mittels pst Viewer anzeigen zu lassen. Dazu problematisches Postfach exportieren und einfach alte Mails, die vor dem Umzug geschrieben wurden mittels freeware analysieren. Ganz easy.

    Antworten

Schreibe einen Kommentar