Entrega local en Exchange 2007

Por Daniel Seveso

Entrega local o “Local Delivery” en Exchange 2003 refiere a la situación en la cual un mensaje debe entregarse a un mailbox que reside en el servidor local. Estos mensajes son grabados luego de su categorización en la cola llamada “Local Delivery”.

En Exchange 2003 el componente encargado de la entrega local de mensajes es el Store Driver. El Store Driver es un componente implementado parte en Internet Information Server (inetinfo.exe) y parte en el servicio Information Store (store.exe). Este componente implementa un área de memoria común entre ambos habilitando la transferencia de información.

Envío en Exchange 2003

Cuando un usuario de Outlook envía un mensaje, el Store Driver levanta este mensaje de la bandeja de salida (outbox) y lo graba en el mailbox de SMTP. El mailbox de SMTP es un mailbox oculto utilizado para este fin y para conversión de mensajes. Una vez que el mensaje se encuentra en el mailbox de SMTP el mismo se categoriza y se despacha para entrega local (en el propio servidor) o remota si el usuario reside en cualquier otro servidor sea interno o externo.

Entrega Local en Exchange 2003

Cuando un mensaje es recibido por el Exchange a través de SMTP, es grabado en el directorio del servidor virtual de SMTP correspondiente (por ejemplo: Exchsrvr\mailroot\vsi 1\queue) para su categorización. Si la categorización indica que el mensaje es para entrega local (un usuario con buzón en el server local), el Store Driver toma el mensaje y lo transfiere al Information Store. Si el mensaje requiere algún tipo de conversión, es grabado en el buzón de SMTP para su conversión y luego movido al buzón del destinatario final.

Cambios en Exchange 2007

En Exchange 2007 el proceso de entrega local “Local Delivery” ha cambiado sustancialmente, debido al objetivo de diseño de separar los roles del servidor. Exchange 2007 introduce un nuevo servicio “Microsoft Exchange Mail Submission Service”, cambios en el Store Driver y una nueva API llamada XSO, que utiliza MAPI.Net para operaciones contra el servicio Information Store.

El propio concepto de entrega local ha cambiado. En Exchange 2007, Local Delivery significa la entrega de un mensaje desde un Hub Transport server a cualquier Mailbox server que se encuentre en el mismo Site de Active Directory.

Envío en Exchange 2007

El envío de mensajes desde un cliente Outlook ahora involucra varios componentes localizados en distintos roles. El rol de Mailbox server ejecuta el servicio Microsoft Exchange Mail Submission ( en adelante Mail Submission) . Cuando un usuario tiene un mensaje a ser enviado en su bandeja de salida (1), el Mail Submission recibe la notificación (2), y avisa al Store Driver (3) en el servidor que corre el rol de Hub Transport. Para elegir que Hub Transport va a ser avisado dentro del site, el Mail Submission service considera primero el local (si el rol de Hub Transport coexiste con el de Mailbox Server) para luego evaluar usando “Round Robin” entre el resto de los Hub Transport servers disponibles en el Site. Este mecanismo de selección asegura tolerancia a fallas para el rol de Hub Transport siempre que haya más de un servidor con este rol en el Site. Cuando el Hub Transport ha sido identificado, el Mail Submission se comunica con el Store Driver proveyendo información específica del mensaje a recuperar, como el DistinghishedName del servidor, el MailboxGUID del usuario que envía, el MdbGUID de la base de datos, etc.

Una vez notificado el Store Driver, éste utiliza XSO para conectarse a la bandeja de salida del usuario (4) y obtener el mensaje de referencia para su categorización (5).

 

 

Esquema simplificado del envío en Exchange 2007

Entrega Local en Exchange 2007

Cuando Exchange 2007 recibe un mensaje por SMTP, éste es grabado en el “Submission queue” implementado en la base de datos ESE mail.que (1), en lugar de NTFS como anteriormente. Luego del proceso de categorización, si se determina que el mensaje debe ser entregado a un Mailbox server en el mismo Site de Active Directory, este será grabado en una cola de Local Delivery también residente en mail.que (2). A diferencia con Exchange 2003, en Exchange 2007 tendremos tantas colas de Local Delivery como Maibox servers tengamos en el Site donde reside el Hub Transport server.

El Store Driver (3) utilizará entonces XSO para conectarse al store y entregar este mensaje en la bandeja de entrada (inbox) del destinatario (4). Luego que el mensaje es grabado es escrito en la bandeja de entrada, el Store Driver borrará el mensaje de la cola de Local Delivery (5).

Esquema simplificado de la entrega local en Exchange 2007

Consideraciones en el nuevo esquema

1. El proceso de categorización marcará un mensaje para entrega local cuando este mensaje esté destinado a un Mailbox server en el mismo site de Active Directory.

2. Debe haber al menos un Hub Transport server en cada Site de Active Directory que contenga un Mailbox server.

3. Los roles de Mailbox y Hub Transport server pueden coexistir en la misma máquina física, pero aún cuando coexisten trabajan en forma independiente. Por razones de mantenimiento, podría dar de baja el rol de Hub Transport local a un Mailbox server, y el Mailbox server utilizaría otro Hub Transpor server en el sitio local.

4. Un Mailbox server siempre preferirá un Hub Transport server instalado en la propia máquina a uno fuera.

5. En Exchange 2007 el Store Driver sólo está presente en el rol de Hub Transport.

6. El rol de Hub Transport no requiere un mailbox store montado localmente, ni tampoco un mailbox de smtp. La conversión de contenido es ahora realizada por el categorizer y/o Store Driver, en el rol de Hub transport.

Pueden encontrar información adicional de la arquitectura de transporte de Exchange 2007 bajo la documentación del producto en TechNet Library. Aquí pueden ver donde se localiza la entrega local o “Local Delivery” dentro del pipeline de transporte de Exchange.