The WSMan client cannot process the request. Proxy is not supported under HTTP transport

Este error me estaba apareciendo al intentar abrir la consola de Exchange en mi nueva máquina de Windows 10.

Da casi vergüenza admitirlo, pero se me olvidó desactivar el proxy de WinHTTP después de desplegar la imágen 🙂

Solo hay que abrir una consola con permisos administrativos y ejecutar:

netsh winhttp reset proxy

Exportar tracking log de Exchange a CSV

Aquí os dejo un script muy sencillo que exporta el tracking log de Exchange a formato CSV, que es mucho más facil de inspeccionar en Excel.

La diferencia de este script con otros es que los campos como Recipients y RecipientStatus están completamente expandidos. Si exportas el resultado de Get-MessageTrackingLog directamente a Export-Csv estos campos aparecen como System.String[].

Para ejecutarlo solo tenéis que cambiar los parámetros inicio y fin.

exportarTrackingLog

¡Auxilio! ¡Los logs del Exchange están fuera de control!

Lunes, 9 AM. Estás en tu puesto tranquilo revisando los correos que la gente te envió el viernes a última hora. Todo normal hasta que de repente entra en tu buzón un correo parecido a este:

Alerta (media) – Disco de logs DBLOG01 en MBX01 al 80%

Te pones a revisar los tamaños de loz buzones y no ves nada raro. Lanzas un backup de la base de datos intentando truncar los logs y esperas ansiosamente a que finalice.

10 minutos después.

Alerta (importante) – Disco de logs DBLOG01 en MBX01 al 90%

Sigues buscando, no aparece un buzón culpable. Empiezas a ponerte nervioso esperando a que finalce el backup.

5 minutos después.

Alerta (crítica) – Disco de logs DBLOG01 en MBX01 al 95%

Ahora estás sudando, el backup va por el 90%.

5 minutos depués.

Disco al 4% … 3% … 2%… Finaliza el backup y el disco de logs vuelve al 10% para luego seguir creciendo nuevamente. Llega al 50% y de repente deja de crecer. Te quedas más tranquilo, pero te queda por dentro la insatisfacción de no saber que causó el problema.

¿Te ha pasado algo parecido?

A mi sí, varias veces hasta que descubrí ExMon. El Exchange Server User Monitor es una herramienta de Microsoft que te permite ver que recursos del Exchange Information Store (el motor de base de datos) está utilizando cada usuario.

La forma de utilizarlo es muy sencillo:

  1. Descarga e instala el ExMon en un servidor de bases de datos de Exchange. La instalacón es darle a siguiente, básicamente.
  2. Ve a la carpeta de instalación del Exmon (%programfiles(x86)%\Exchange User Monitor) y haz doble clic sobre ExMon.reg, esto agregará al registro las claves que hacen falta para habilitar las trazas.
  3. Crea una carpeta para almacenar las trazas. C:\Temp, por ejemplo.
  4. Crea una definición de traza utilizando logman. Esto se hace ejecutando el siguiente comando: logman create trace Exmon_Trace -p {2EACCEDF-8648-453e-9250-27F0069F71D2} -nb 3 25 -bs 3 -o c:\Temp\

Una vez que tenemos la traza definida podemos ejecutarla cuando queramos para visualizar qué usuarios o buzones son los que está consumiendo recursos. Por ejemplo, continuando con el escenario de arriba, una vez que te llega el aviso de que se están generando muchos logs puedes iniciar la traza con el comando logman start exmon_trace. Esto iniciará la traza e irá almacenando los resultados en un archivo exmon_XXXXXX.etl, donde XXXXX es un correlativo automático que se incrementa cada vez que inicias una traza. Para visualizar los resultados de la traza puedes ejecutar %programfiles(x86)%\Exchange User Monitor\ExMon.exe c:\temp\exmon_XXXXX.etl, esto te abrirá la interfaz gráfica del ExMon:

ExMon

Aquí puedes visualizar todo tipo de datos relacionados con el motor de base de datos de Exchange. En este caso en particular nos interesa la última columna Log Bytes. Si ordenas por esa columna puedes ver cuál es el usuario/buzón en concreto que está generando logs de forma descontrolada. Si cierras el ExMon y lo vuelves a abrir con el comando de arriba puedes ver los datos de la traza actualizados. Si el mismo buzón sigue apareciendo de primero al ordenar por Log Bytes ya tienes tu culpable 🙂

Ahora solo te falta saber POR QUÉ está generando tantos logs. Según mi experiencia:

  • Si está generando logs y el tamaño del buzón está creciendo es porque el usuario está moviendo muchos elementos grandes a su buzón o está recibiendo muchos correos con adjuntos (poco probable).
  • Si está generando logs y el tamaño del buzón no cambia:
    • El OST del Outlook está corrupto.
    • El usuario tiene un dispositivo con ActiveSync que no está funcionando bien. Ver el caso de iOS 6.1.

Para finalizar, no te olvides de parar la traza cuando termines de hacer el troubleshooting: logman stop exmon_trace

PD: el ExMon también se puede abrir ejecutando el programa desde la carpeta de instalación, esto te crea automaticamente una traza que se elimina al cerrar el programa sin tener que pasar por el LogMan. El problema es que la interfaz gráfica se cuelga tan frecuentemente que para mi no es útil.

Referencia

Agente de transporte para cambiar remitente en Exchange 2010/2013

Estas cosas que les gustan a los jefes…

Nuestro CAU está manejado por un tercero, con su propio sistema de ticketing, su propia gente y su propio dominio de correo. El problema es que a los jefes no les gusta que aparezca la dirección de un tercero cuando nos llegan las notificaciones de acciones sobre tickets o cuando nos escriben del CAU.

Esto se puede solucionar facilmente si tienes un servidor Edge en tu entorno de Exchange. Si no tienes un servidor de Edge tienes que implementar tu propio agente de transporte e instalarlo en un Hub o adquirir una solución de terceros.

Como somos tacaños, no vamos a comprar nada solo para cambiar la dirección de origen de un solo remitente 🙂

Para esto simplemente necesitamos un compilador de .NET y unas cuantas lineas de código. El cómo hacer esto está claramente documentado en MSDN, por lo que no voy a repetir lo mismo. Simplemente voy a compartir la solución completa que usamos en nuestro caso.

¿Qué tiene de diferente esta solución? Que tiene logging incorporado teniendo en cuenta que a la hora de escribir al fichero de logs puede haber problemas de concurrencia. Me estaba sucediendo que entraban varios mensajes al mismo tiempo del mismo remitente y a unos les cambiaba el sender y a otros no. Resultó ser que varios hilos del agente de transporte estaban intentando escribir al fichero de logs al mismo tiempo 😀

El código está documentado, sin embargo aquí explico un poco lo que hace este agente:

  • Crea el directorio de logs si no existe
  • Crea un log por cada día
  • Crea una entrada de log por cada mensaje, detallando las operaciones que se hacen. Esto es para hacer mas fácil la resolución de problemas
  • Cambia los campos Sender, From y Reply-To de todos los mensajes de un remitente en particular

Pienso que es bastante fácil de modificar y ajustarlo a las necesidades de cualquiera. En caso de cualquier duda simplemente dejad el comentario abajo.

Podéis descargar el código desde aquí.

Referencia

Convertir NDR IMCEAEX a dirección X500

Si alguna vez has borrado por error o has restaurado un buzón/contacto/grupo de Exchange a un usuario diferente del original, probablemente has recibido quejas de los usuarios diciendo que cada vez que envían un correo al usuario en cuestión reciben un NDR de Exchange con un mensaje parecido al siguiente:

captura ndr

El motivo de esto es que Outlook almacena los usuarios de Exchange como contactos X500 en la caché de Autocompletar (¿Por qué? No se, pero viene de muy atrás). Para solucionar esto la KB2807779 nos dice que podemos limpiar la cache de Autocompletar de Outlook o agregar un contacto X500 al usuario de Exchange. El problema es que no hay forma sencilla de aplicar la primera opción de forma automatizada a muchos usuarios a la vez, así que normalmente solo nos queda la segunda.

Para aplicar la segunda solución debemos abrir las propiedades de un buzón/contacto/grupo en Exchange, ir a la pestaña de direcciones de correo y agregar una dirección personalizada X500. ¿Qué ponemos como dirección? Tenemos que copiar la dirección que nos devuelve en el mensaje de error de NDR y reemplazar ciertos caracteres tal y como nos explica esta entrada.

Como soy vago, muy vago. Hice una pequeña funcion en PowerShell para no tener que hacer este reemplazo manualmente. Aquí os la dejo.

function Convert-IMCEAEX ($address) {
$address = $address.Replace("+20"," ")
$address = $address.Replace("+28","(")
$address = $address.Replace("+29",")")
$address = $address.Replace("+2E",".")
$address = $address.Replace("_","/")
$address = $address.Replace("IMCEAEX-","")

$lastIndex = $address.LastIndexOf("@")
if ($lastIndex -gt 0) {
$address = $address.Substring(0, $lastIndex)
}

return $address
}

Creo que está bastante claro lo que hace. Simplemente le pasamos la dirección “sucia” y esta nos la limpia.

Exportar listado de dispositivos con ActiveSync y su cuenta asociada

Aquí os dejo un script para saber qué dispositivos tenemos sincronizados con nuestra organización. Es muy recomendable ejecutarlo cada cierto tiempo para hacer limpieza de dispositivos que hace tiempo que no se conectan, que pertenecen a usuarios que ya se han ido de la empresa, o simplemente tener una idea de quienes tienen sincronizado su correo con dispositivos móviles.

Esta pensado para Exchange 2010, pero debería funcionar en otras versiones también.

Descargar

Autodiscover con dominio SMTP compartido

Paciencia y foco, este post es un poco denso 😀

Fusiones, adquisiciones o simple colaboración entre empresas de una misma corporación… Si eres administrador del servicio de correo de tu empresa (por vocación o por enmarronamiento) y has vivido alguno de los momentos que menciono antes, seguramente te ha tocado pasar por una situación llamada “Split SMTP domain” o “Shared SMTP address space”.

Un dominio SMTP compartido, como su nombre lo indica, es un mismo dominio SMTP que es compartido por varias organizaciones o sistemas de correo. Esto quiere decir que, por ejemplo, para el dominio midominio.com, puede haber buzones de correo en los servidores de la organización Alfa o en los servidores de la organización Beta.

Cuando una persona envía desde internet un correo a empleado@midominio.com, este es recibido por los servidores de la organización Alfa, si este buzón se encuentra en sus servidores el correo se entrega localmente, de lo contrario es reenviado a la organización Beta. Fácil, ¿No?

El problema, como siempre, está en los detalles. Desde hace varias versiones de Exchange, Lync y Outlook existe algo llamado Autodiscover, que no es más que un mecanismo para encontrar información de autoconfiguración de dispositivos, disponibilidad de personas y localización de servidores sin necesidad de introducir manualmente los parametros de estos servidores. Tener el Autodiscover funcionando de forma correcta es bastante complicado, requiere configuración de los servidores de CAS, certificados de confianza, cambios en el DNS, publicación de SCP en AD, una pata de conejo y extracto de mandragora, entre otras cosas.

Con un poco de esfuerzo, se puede configurar el Autodiscover para que funcione correctamente en una organización de Exchange. Pero, ¿Qué pasa si tengo un dominio SMTP compartido? No hay problema, en Exchange se puede utilizar el atributo ExternalEmailAddress (llamado targetAddress en el AD). Este atributo nos indica, en el caso de Autodiscover, a que dominio debemos recurrir para buscar los parametros de configuración de un buzón.

Por ejemplo, en la organización Alfa tengo los dominios alfa.com y omega.com y en la organización Beta tengo los dominios beta.com y omega.com. Cuando intento configurar mi Outlook a través de Autodiscover para el buzón boli@omega.com primero me conecto a autodiscover.omega.com, que está alojado en la organización Alfa, el Exchange de esta organizacón ve que el usuario boli@omega.com tiene un ExternalEmailAddress de boli@beta.com, y redirige el cliente de Outlook a autodiscover.beta.com. Outlook se conecta a autodiscover.beta.com y obtiene todos los parámetros necesarios para configurar correctamente este buzón. MAGIA

Si todo fuese tan fácil no estaría escribiendo esta entrada…

¿Qué pasa si no tengo relación de confianza entre los dominios de AD de ambas organizaciones? En este caso Autodiscover no va a funcionar para los usuarios de una de las dos organizaciones. ¿Por qué? La razón es muy sencilla, cuando te conectas con el usuario boli@omega.com a autodiscover.omega.com este primer servidor que está en la organización Alfa te pide que te autentiques con usuario y contraseña. ¿Pero como me autentico si mi usuario no existe en la organizacion Alfa? EXACTO, no puedes, por lo que Autodiscover no va a funcionar para ti. Y con esto vendran popups constantes en Lync y Outlook. Si tienes Lync 2013 puedes evitar estos popups con este hack, pero si tienes Lync 2010 no puedes hacer nada.

Así que ya sabes, si te piden que compartas un dominio SMTP entre varias organizaciones de Exchange, trata, en la medida de lo posible, de tener una relación de confianza entre las mismas. De lo contrario puedes tener problemas tanto con el Lync como con Outlook.

Exportar detalle de Shortcuts de Enterprise Vault desde Exchange

Debido a una incidencia que tuvimos con el Enterprise Vault, tuve que buscar la forma de exportar los shortcuts de un buzón de Exchange a CSV para despues hacer un control de daños de cuáles correos teníamos que recuperar.

No fue una tarea fácil, pero al final lo logré teniendo como base el genial script de Michel de Rooij de este enlace.

Para ejecutar el script solo hay que descargar el Exchange Web Services API y ponerlo en la misma carpeta del script, luego hay que modificar los 5 parámetros del script y ejecutarlo.

El script no es bonito, ni está documentado, ni tiene control de errores (cuando tenga tiempo lo hago), pero funciona (por lo menos en Exchange 2010 SP3).

Descargar script.

Buscar por fecha en Outlook Web App (OWA)

Buscar en OWA correos entre determinadas fechas es menos intuitivo de lo esperado, por lo menos en Exchange 2010.

El problema está en que tenemos que utilizar las palabras clave en inglés y las fechas en formato americano, sin importar en cual idioma tenemos la interfaz de usuario.

Por ejemplo, si queremos buscar correos recibidos entre Junio del 2013 y Julio del 2015 tendríamos que colocar lo siguiente en la barra de busqueda de OWA:

received:06/01/2013..07/31/2014

Para los enviados tendríamos que colocar:

sent:06/01/2013..07/31/2014

Referencia