Agregar direcciones X500 para alternativa a LegacyExchangeDN

Si se ha recreado una (o miles) de cuentas de Mailbox o Contactos en Exchange, por más que se hayan ajustado las propiedades de las address books, habrán problemas con la cache del Cliente de Outlook. Este utiliza la propiedad de la cuenta “LegacyExchangeDN” para ubicar la cuenta, y si la cuenta recreada no tiene el mismo LegacyExchangeDN, no se podrá utilizar salvo que se limpie la caché del Cliente Outlook.
Lamentablemente, todos los correos que se respondan anterior a la fecha de cambio, también se guían con esta propiedad.
Para “salir del paso” (y que no nos maten), se pueden hacer 2 cosas:
  1. Modificar la propiedad LegacyExchangeDN: LO CUAL TRAE PROBLEMAS en PRESENTE y a FUTURO. 
  2. Agregar una dirección X500 con la ruta LegacyExchangeDN antigua.
Para ilustrar, si 1 mailbox o contacto (o miles) tenían como ExchangeLegacyDN:
“/o=FirstExchOrg/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=NOMBREAPELLIDO”
Y se recrea/n (se eliminan y se vuelven a crear), quizás la propiedad quede como:
“/o=FirstExchOrg/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=NOMBRE APELLIDO” (con espacio).

Esto, para los nuevos correos no hay problema, pero la caché de Outlook y todos los mensajes antiguos en mailbox que referencien a esta cuenta lo harán a “NOMBREAPELLIDO”

Agregando una dirección X500, volvemos a permitir que Outlook “encuentre” este elemento (es inmediato).

#region intro
  #descripcion: agregar direccion X500 a todos los contactos de una OU
  #fecha creac: 04/11/2013
  #versión    : 0.1 (04/11/13)
  #autor      : Jorge Mestre
  #Changelog  : 04/11/13 - Creado
#endregion intro
param( $archOrigen,`
       $ou = 'OU=NomOU,DC=Lab,DC=local'
     )

Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010 -ErrorAction `
            SilentlyContinue
$ErrorActionPreference = "continue"

$LegacyDNRaiz = "/o=FirstExchOrg/ou=Exchange Administrative Group `
     (FYDIBOHF23SPDLT)/cn=Recipients/cn="
$contactos = Get-MailContact -OrganizationalUnit $ou

foreach ($con in $contactos)
{
 $user = $con.alias
 $user
 $con.EmailAddresses += [Microsoft.Exchange.Data.CustomProxyAddress]`
(("X500:"+"$LegacyDNRaiz"+"$user"))
 Set-MailContact -Identity $con.alias -EmailAddresses $mails.EmailAddresses
}

Como "Bonus track", el código de Exchange de la propiedad es un EasterEgg:



1 comentario:

Sandra Lopez dijo...

Jorge, me interesa saber si este script funciona sobre Exchange 2007 y si con esto evitaría errores con IMCEAEX ya que no logro encontrar que los provoca, gracias!