Quick & Dirty: IMCEAEX Strings in X500 konvertieren

Ich hatte das Problem schon mal in einem anderen Artikel beschrieben: Benutzer erhalten einen Unzustellbarkeitsbericht (NDR) beim Versuch an Postfächer oder Verteiler zu senden. Der Felercode im NDR lautet “550 5.1.1 RESOLVER.ADR.ExRecipNotFound; not found‘. Hier ein Beispiel für solch einen NDR:

IMCEAEX Strings in X500 konvertieren

Das Problem tritt zum Beispiel auf, wenn eine Verteilerliste in eine Shared Mailbox migriert wurde. Die E-Mail Adresse bleibt zwar gleich, aber es ändert sich der “LegacyExchangeDN”. Dieses Attribut benutzt Outlook nach wie vor für die Autovervollständigung. Hat ein Benutzer schon einmal Mails an einen Verteiler geschickt und daher den Eintrag in seiner Autovervollständigung gespeichert, kommt es nach der Änderung (in diesem Fall Verteilerliste zu Shared Mailbox) zu dem oben dargestellten NDR.

Wenn es nur wenige Benutzer betrifft, dann kann der alte Eintrag einfach gelöscht werden:

IMCEAEX Strings in X500 konvertieren

Wenn es allerdings viele Benutzer betrifft, ist dies wahrscheinlich keine Option mehr. Wie im oben verlinkten Artikel beschrieben, kann der LegacyExchangeDN als X500 Eintrag an die neue Verteilerliste oder Mailbox zugewiesen werden um das Problem zu umgehen.

Wenn man aber den alten LegacyExchangeDN nicht mehr hat, dann kann auch der IMCEAEX String aus dem NDR in einen X500 Eintrag konvertiert und zugewiesen werden.

Diese kleine PowerShell Funktion konvertiert die IMCEAEX String in X500 Strings:

function ConvertTo-X500{
 
    Param(
    [parameter(Mandatory=$true)]
    [String]
    $IMCEAEX 
    )
 
	$IMCEAEX = $IMCEAEX.replace("_","/")
	$IMCEAEX = $IMCEAEX.replace("+20"," ")
	$IMCEAEX = $IMCEAEX.replace("+28","(")
	$IMCEAEX = $IMCEAEX.replace("+29",")")
	$IMCEAEX = $IMCEAEX.replace("+40","@")
	$IMCEAEX = $IMCEAEX.replace("+2E",".")
	$IMCEAEX = $IMCEAEX.replace("+2C",",")
	$IMCEAEX = $IMCEAEX.replace("+5F","_")
	$IMCEAEX = $IMCEAEX.replace("IMCEAEX-","X500:")
	$IMCEAEX = $IMCEAEX.split("@")[0]
	
	return $IMCEAEX
}

Die Funktion kann nun in Scripten oder direkt in der PowerShell verwendet werden:

IMCEAEX Strings in X500 konvertieren

In diesem kleinen Beispiel wird ein IMCEAEX String aus einem NDR in einen X500 Eintrag konvertiert und danach der Mailbox zugewiesen:

$MailboxAlias = "frank"
$IMCEAEXString = "IMCEAEX-_O=Frankys+20Web_OU=EXCHANGE+20ADMINISTRATIVE+20GROUP+20+28FYDIBOHF23SPDLT+29_CN=RECIPIENTS_CN=Zoechling+20SFrankd9c@frankysweb.local"

function ConvertTo-X500{
 
    Param(
    [parameter(Mandatory=$true)]
    [String]
    $IMCEAEX 
    )
 
	$IMCEAEX = $IMCEAEX.replace("_","/")
	$IMCEAEX = $IMCEAEX.replace("+20"," ")
	$IMCEAEX = $IMCEAEX.replace("+28","(")
	$IMCEAEX = $IMCEAEX.replace("+29",")")
	$IMCEAEX = $IMCEAEX.replace("+40","@")
	$IMCEAEX = $IMCEAEX.replace("+2E",".")
	$IMCEAEX = $IMCEAEX.replace("+2C",",")
	$IMCEAEX = $IMCEAEX.replace("+5F","_")
	$IMCEAEX = $IMCEAEX.replace("IMCEAEX-","X500:")
	$IMCEAEX = $IMCEAEX.split("@")[0]
	
	return $IMCEAEX
}

$ProxyAddresses = (Get-Mailbox $MailboxAlias).EmailAddresses
$x500 = ConvertTo-X500 -IMCEAEX $IMCEAEXString
$x500 =  [Microsoft.Exchange.Data.CustomProxyAddress]("$x500")
$ProxyAddresses += $x500
Set-Mailbox $MailboxAlias -EmailAddresses $ProxyAddresses

IMCEAEX Strings in X500 konvertieren

Das Script lässt sich mit wenig Aufwand auch für Verteilerlisten anpassen.

10 Gedanken zu „Quick & Dirty: IMCEAEX Strings in X500 konvertieren“

  1. Hallo,

    ich habe das Problem mit EmailKontakten und nicht mit Postfächern.
    Diese wurden gelöscht & mit neuen Informationen (Telefonnummer etc.) via Powershell neu eingspielt.
    Ist es möglich, dass es dort dasselbe Problem ist? Allerdings haben diese gar keine explizite x500 Adresse.

    LG

    Antworten
  2. Hallo,

    wir haben hier auch ein sehr komischen Problem. Die Mailboxen wurden von einem SBS 2008 exportiert, in Office 365 manuell angelegt und die PST wieder importiert.

    Jetzt schickt man eine Mail von Meet-Google (also keine Outlook) eine Einladung an USER_A@domain.de. Dann wird die Mail nicht zugestellt mit dem Fehler:
    imceaex-_o=kunde_ou=first+20administrative+20group_cn=recipients_cn=USER_B@deupXXX.prod.outlook.com

    Das interessant daran ist, dass der DN nicht USER_A ist, sondern USER_B. Bei dem User_B handelt es sich um ein Postfach, dass es mal gab aber am alten Exchange 2007 gelöscht wurde und nie migriert wurde. Bin mir nicht ganz sicher, aber es kann sein, dass man die Mailadresse von USER_B mal dem USER_A als weitere Adresse hinzugefügt hat um evtl. Mails von USER_B noch zu bekommen. Wenn ich User_A den X500 hinzufüge von USER_B dann kommen die Mails an.

    Kann mir das jemand erklären?????
    Vielen lieben Dank
    Thomas

    Antworten
    • Hallo Thomas,

      ich habe das gleiche Problem. Bitte lass es mich wissen, wenn du hier bereits eine Lösung gefunden hast.
      Vielen Dank dir schon einmal!

      mit freundlichen Grüßen
      Robert

      Antworten
  3. Moin,
    ich habe das Problem, dass bei mir einige Mitarbeiter-Kontakte im Outlook 2016 zwar richtig angezeigt und ich auch Mails verschicken kann aber auf auf dem Handy, welches per ActiveSync (Exchange 2013) syncronisiert wird, der IMCEAEX-String steht. Woran kann das liegen?

    Gruß

    Mathias

    Antworten
  4. Vielen Dank für das Skript. Wenn in dem IMCEAEX String „+40“ vorkommt, wird zu viel abgeschnitten. Die Zeile „$IMCEAEX = $IMCEAEX.split(„@“)[0]“ muss vor der Zeile „$IMCEAEX = $IMCEAEX.replace(„+40″,“@“)“ stehen.

    Antworten

Schreibe einen Kommentar