Sometimes there is a requirement not to migrate an Exchange server in the traditional way. A PST migration, i.e. exporting the mailboxes from the source system and then importing the data into the target mailboxes, is then often chosen. This method is often chosen for cross-forest migrations, but the use of special software, such as "Migration Manager for Exchange" from Dell, is usually not worthwhile, especially with a manageable number of mailboxes.
However, a small detail is often forgotten in this type of migration: When the mailboxes are created in a new overall structure, a new LegacyExchangeDN is assigned, especially if the name of the overall structure changes.
However, the LegacyExchangeDN attribute is used by Outlook for a few important things, such as auto-completion of e-mail addresses and assigning people to appointments.
Here is a small example:
I have an entry for "Mailbox1" in the Outlook cache
Mailbox1 has this LegacyExchangeDN:
/o=FrankysWeb/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=ce3ee9150f424250bda67e2a6e062aea-Mailbox1
As soon as the LegacyExchangeDN changes because the mailbox is now in a new overall structure, for example to :
/o=FrankysWebNEW/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=ce3ee9150f424250bda67e2a6e062aea-Mailbox1
Then the following happens:
The user receives an undeliverable message with the following content:
Error during message delivery to the following recipients or groups:
Mailbox1
The e-mail address entered could not be found. Check the recipient's e-mail address and try to send the message again. Contact the helpdesk if the problem persists.
Diagnostic information for administrators:Generating 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'
The background is as follows: Outlook does not save the e-mail address, but the LegacyExchangeDN. Incidentally, it does not matter which Exchange or Outlook version is used, the behavior is the same everywhere.
There is a simple solution to avoid this problem. The old original LegacyExchangeDN must be assigned as X500 address to the corresponding mailbox.
So if the child has already fallen into the well, the X500 address can be determined from the undeliverability report as follows:
- 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.
So in my case:
X500:/o=FrankysWeb/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=ce3ee9150f424250bda67e2a6e062aea-Mailbox1
This address can now be assigned via shell or GUI:
As soon as the X500 address has been added, sending mail to addresses from the autocomplete function will work again.
However, if you are planning a migration with PST export/import, you can make your life easier straight away:
The following script can be used to export the LegacyExchangeDNs of all mailboxes from the source system and import them back to the target system as X500 addresses. A CSV file and the mode (export/import) must be specified as parameters. The script requires the same aliases for the import.
param ( [Parameter(Mandatory=$True)] [string]$CSVFile , [Parameter(Mandatory=$True)] [string]$FunctionLevel ) if ($FunctionLevel -notmatch "Import" -and $FunctionLevel -notmatch "Export") { write-host "Only import or export valid as parameter" 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 } }
Wir haben auf unserem Exchange-Server sowohl eingehend als auch ausgehend diese Fehlermeldung bei „an sich“ gültigen E-Mail-Adressen. Der Servern, von dem wir vor vielen Jahren migriert haben ist natürlich nicht mehr erreichbar. Die Domain ist unverändert, aber jetzt hängt der Exchange in Office 365 und ist mit dem local AD synchronisiert.
Was kann / muss ich tun, um diese LegacyExchangeDN richtig zu konfigurieren? Momentan finde ich eine solche X500-Konfiguration weder im AD (unter „Erweitere Features“ im „Attribut Editor“) noch im O365-Exchange-Admin-Interface .
Danke, ihr habt mich mal wieder gerettet
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.
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
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
Und nochmal ein dickes Danke!
Hallo Frank,
kurze Verständnisfrage:
Sprichst du über einen PST-Export aus dem Exchange heraus oder aus Outlook heraus?
Viele Grüße
Christian
Hallo, gerade gefunden und erfolgreich eingesetzt. Danke für diesen Artikel !!
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?
Nein, nicht mehr. Das ist oben im Beispiel etwas verwirrend.
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
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!
Hallo Martin,
vielleicht hilft dir dieses kleine Script etwas weiter?
https://www.frankysweb.de/quick-dirty-imceaex-strings-in-x500-konvertieren/
Gruß, Frank
Danke hat perfekt geholfen!
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
Bei mir lag der Fehler daran, dass ich in der AD eine Email Adresse bei dem Benutzer eingetragen hatte, die gar nicht intern lag.
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
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?
Hallo,
gibt es die Möglichkeit die x500 Adresse an alle User per Richtlinie zu verteilen?
Oder solt ich das als ps1 script speichern? :(
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*
Das wundert mich nicht.
Danke, exakt das gleiche Problem gehabt nach einer Migration von Exchange 2003 auf 2013 mit PST Export. Lösung hat geholfen.
Du bist echt der Beste. Es gibt keine Seite, die für Windows Server / Exchange so nützlich ist :-)