Por Demián Gómez / Reviewed by: Daniel Seveso

Cuentas genéricas de correo: Cuando se superan las 32 sesiones MAPI se loguea el evento 9646 en Exchange Server 2003

Escenario

Si bien éste es un comportamiento ya documentado, me pareció interesante para comentar en el blog. Sucede muchas veces que nuestros clientes usan cuentas de correo genéricas para algunos sectores de sus empresas como ser: atención al cliente, ventas, etc.

Esto provoca que en un día normal de trabajo se superen la cantidad permitida de sesiones MAPI por usuario que, luego de aplicar Exchange Server SP1, es de 32 (0x20 hexadecimal).

Al superar ese límite se loguea un evento de ID 9646 en el servidor Exchange:

Event Type:     Error
Event Source:   MSExchangeIS
Event Category: (6)
Event ID:       9646
Date:           18/11/2008
Time:           04:56:19 p.m.
User:           N/A
Computer:       SRV
Description:

Closing Mapi session "56e16c40-2161-4614-8941-9a6717dd25c8" because it exceeded the maximum of 32 objects of type session.

Este evento también puede ser causado por alguna de las siguientes causas:

  • Un programa externo instalado en un equipo cliente abre más de 32 sesiones MAPI.
  • Utiliza un mailbox adicional en su perfil de Outlook 2007 que sobrepasa las 1000 carpetas.

Me enfocaré en el caso de la cuenta genérica, pero las otras dos causas podrían enfocarse de esta forma:

  • Si determina que la causa es un programa en un equipo cliente contacte al proveedor de la aplicación. Es probable que necesite un fix para la aplicación.
  • Para el caso de haber agregado un mailbox adicional de gran tamaño, se puede deshabilitar la característica por default que agrega Outlook 2007 al modo de Intercambio de Cache (Cached Exchange Mode)

Si observaron el evento que copié anteriormente se darán cuenta que el mismo tiene una serie de números y letras, por lo que surge una cuestión interesante si queremos identificar el usuario que provoca dicho evento 9646:

A qué usuario corresponde esa serie de números y letras?

Lo que vemos en el evento se llama Mailbox GUID y es una clave que sirve para identificar unívocamente un mailbox dentro de una organización de Exchange. Este comportamiento ocurre cuando el proceso Store.exe no puede resolver el Mailbox GUID si existen sibling domains en el forest. Un sibling Domain es otro dominio que existe en el mismo nivel de forest que el actual. El proceso Store.exe utiliza el parámetro BaseDN para la query LDAP que calcula el Mailbox GUID y, cuando existen sibling domains el valor utilizado es igual al del Domain naming context del usuario y por lo tanto la query LDAP devuelve un valor nulo.

En el caso que nos encontremos con un evento que posee un Mailbox GUID en vez de un nombre de usuario deberemos seguir este procedimiento:

Paso 1: Cambiar el formato del Mailbox GUID para poder usarlo en una consulta LDAP

Utilizaremos el Mailbox GUID del evento copiado: "56e16c40-2161-4614-8941-9a6717dd25c8"

  1. Usar la contrabarra (\) para separar cada par de caracteres en el GUID, en nuestro caso quedaría así:
    \56\e1\6c\40-\21\61-\46\14-\89\41-\9a\67\17\dd\25\c8
  2. Cambiar el orden de los pares en la primera, segunda y tercera sección. No modificar la cuarta ni quinta sección. Queda lo siguiente:
    \40\6c\e1\56-\61\21-\14\46-\89\41-\9a\67\17\dd\25\c8
  3. Remover los guiones (-), con lo quedaría así:
    \40\6c\e1\56\61\21\14\46\89\41\9a\67\17\dd\25\c8
  4. Usar este formato obtenido en el siguiente paso.

Paso 2: Usar LDP.exe para buscar en todos los dominios el nombre del mailbox que mapea al GUID.

  1. Correr Ldp.exe.
  2. Click en Connection, y luego en Connect.
  3. En el campo Server, tipear el nombre de un domain controller que se encuentre en el root domain del forest.
  4. En el campo Port, confirmar que el numero de Puerto esté seteado a 3268.
  5. Click en OK.
  6. Click en Connection, y luego click en Bind.
  7. Tipear un nombre de usuario, nombre de dominio, y un password de una cuenta que tenga permisos de Enterprise Administrator y luego click en OK.
  8. En el menú View, click en Tree.
  9. Delete the text in the BaseDN box, and then click OK.
  10. In the left pane, right-click the first object, and then click Search.
  11. In the Search window, type the following text in the Filter box:
    (&(objectclass=*)(msExchMailboxGuid=\e7\ae\ac\a3\14\cb\66\44\83\ce\1d\d1\17\b5\46\dc))
  12. Under Scope, click Subtree.
  13. Click Run.

Enfoque y resolución del problema

Una vez que determinamos que el problema ocurre por una cuenta genérica (y no por otras causas que detallo más adelante) podemos utilizar una modificación en el registro para incrementar el límite máximo de conexiones MAPI por sesión.

La clave la encontramos dentro de:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSExchangeIS\ParametersSystem

y se llama Maximum Allowed Sessions Per User, si no existe la creamos como valor DWORD y editamos su valor en decimales al valor deseado, en nuestro caso sería un valor que supere la cantidad de usuarios que se loguean con la cuenta genérica.

Luego de realizar este cambio hay que reiniciar el servicio MS Exchange Information Store, esto lo hacemos yendo a la consola de Servicios (Inicio -> Ejecutar -> services.msc), ubicando el servicio, haciendo clic derecho sobre él y seleccionando Reiniciar.

Ahora, cuales son las otras posibles causas del evento 9646 si no tenemos cuentas genéricas en nuestra organización de Exchange?

  • Si utilizamos una aplicación de externa que abre conexiones MAPI hacia el servidor de Exchange. Para solucionar esto deberemos contactar al proveedor de dicha aplicación y conseguir un parche para evitar el problema. Además deberemos otorgar el permiso de View Information Store Status a la cuenta sobre la que corre el programa. Para ello seguimos estos pasos:
    1. En la consola de Exchange System Manager ubicamos el objeto de Exchange Server o el Mailbox Store sobre el que deseamos dar el permiso, hacemos click derecho sobre él y luego en Propiedades
    2. Elegimos la pestaña Seguridad.
    3. Elegimos la cuenta a la que queremos dar permisos, si no figura utilizamos el botón Agregar para agregarla.
    4. Debajo de la columna Permitir tildamos el checkbox que dice View Information Store Status.
    5. Destildamos todos los permisos innecesarios en la columna Permitir y le damos a Aceptar.
  • Si agregamos un mailbox adicional a un perfil de Outlook 2007 en Modo Intercambio de Cache (Cached Exchange Mode) y el perfil adicional es excesivamente grande (digamos mas de 1000 carpetas). Una forma posible de resolver esto es deshabilitar la característica de Outlook 2007 que causa este problema. Para ello seguimos estas instrucciones:
    1. Ir al menu Tools (Herramientas) y seleccionar Account Settings (Configuracion de Cuenta)
    2. Seleccione la cuenta a modificar y haga clic en Change (Cambiar).
    3. Luego click en More Settings (Configuracion Adicional)
    4. En la pestaña Advanced (Opciones Avanzadas) destildar el tilde que dice “Download shared folders (excludes mail folders)” (Bajar carpetas compartidas (Excluye carpetas de correo)).
    5. Haga clic en OK (Aceptar), luego en Next (Siguiente) y finalmente en Finish (Finalizar)

La información de este post la pueden encontrar en detalle en los siguientes artículos:

 

Espero que les sea de utilidad! Saludos!