Listas de distribución
Message Queue Server 3.0 permite que las aplicaciones envíen un solo mensaje a una lista de colas de destino. Esta lista se puede crear de forma dinámica como un nombre de formato de varios elementos o bien, se puede publicar y mantener en Active Directory como una lista de distribución. Para obtener más información sobre los nombres de formato de varios elementos, vea Nombres de formato de varios elementos.
Una lista de distribución es un conjunto de colas de destino o de listas de distribución que se puede utilizar para:
-
Enviar mensajes transaccionales y no transaccionales a varios destinos.
-
Especificar una o varias colas de administración para enviar mensajes de confirmación generados por la aplicación, cuando se solicitan mensajes de confirmación.
-
Especificar una o varias colas de respuesta para enviar mensajes de respuesta generados por la aplicación, cuando se solicitan mensajes de respuesta.
Listas de distribución y Active Directory
Las listas de distribución son unas listas públicas que se publican como objetos del grupo de distribución en Active Directory. Para obtener más información, vea Objetos de Message Queue Server. Los miembros explícitos de una lista de distribución deben ser los destinos publicados en Active Directory, es decir, las colas públicas, los alias de cola y otras listas de distribución. Las colas privadas y las colas con nombre URL no pueden ser elementos de una lista de distribución.
Sin embargo, se puede hacer referencia indirectamente a las colas privadas y las colas con nombre URL en una lista de distribución a través de alias de colas. Los alias de colas proporcionan ventajas adicionales cuando se utilizan en las listas de distribución. Cuando se elimina un objeto alias de cola, el alias se quita automáticamente de todas las listas de distribución que hacen referencia al alias. Una cola a la que hace referencia un alias de cola se puede modificar sin necesidad de cambiar una lista de distribución que hace referencia a ella. Para obtener más información acerca de los alias de cola, vea Alias de cola.
Dado que las listas de distribución son objetos en Active Directory, no se pueden utilizar en modo de grupo de trabajo o sin conexión, en los que no hay acceso a Active Directory. En estos modos, los mensajes se pueden enviar a varios destinos mediante nombres de formato de varios elementos, siempre que no contengan un elemento que señale a una cola pública o a una lista de distribución.
Seguridad de las listas de distribución
Como las listas de distribución son objetos en Active Directory, los atributos de seguridad pueden adjuntarse al control de acceso a ellos y se pueden consultar sus propiedades en Active Directory. Además, admiten el cifrado de forma similar a las colas. Cada copia de un mensaje se puede cifrar mediante la clave pública del equipo de destino para esa copia.
Se asigna un descriptor de seguridad a cada cola y lista de distribución. Ese descriptor de seguridad muestra los usuarios y grupos a los que se concede o deniega el acceso a la cola o lista de distribución, y los permisos específicos asignados a dichos usuarios y grupos. Los siguientes permisos específicos están asociados con las listas de distribución:
- Permiso Enviar a. Permite a un grupo o a un usuario enviar mensajes a la lista de distribución correspondiente. De forma predeterminada, este permiso se concede a todos.
- Agregarse/quitarse como miembro para una cola pública o un alias de cola. Permite a un grupo o a un usuario agregar o quitar la cola pública o el alias de cola pertinente como miembro de una lista de distribución. Este permiso se concede a todos los usuarios de forma predeterminada.
- Agregarse/quitarse como miembro de una lista de distribución. Permite a un grupo o a un usuario agregar o quitar la lista de distribución aplicable como miembro en otra lista de distribución. Sólo el propietario de la lista de distribución tiene el permiso Agregarse o quitarse como miembro sobre dicha lista.
Cuando se agrega un miembro de una cola o una lista de distribución a una lista de distribución, no se altera el conjunto de usuarios que tienen el permiso Enviar a para la lista de distribución que contiene el nuevo miembro. Es decir, en particular, cuando se agrega una lista de distribución con acceso más restringido a una lista de distribución con acceso menos restringido, llega a ser posible que los clientes de la lista de distribución expandida tengan acceso a la nueva lista de distribución, cuyo acceso es más restringido. Esto no crea un riesgo de seguridad ya que cada lista de distribución puede aún controlar el conjunto de usuarios a los que se permite agregar miembros.
Cuando se envía un mensaje a una lista de distribución, Message Queue Server verifica que el remitente tenga el permiso Enviar a para cada miembro del nivel superior (colas o listas de distribución) de la lista de distribución. Esta decisión se toma para optimizar el tráfico de la red. Cuando se recibe un mensaje, Message Queue Server verifica que el remitente tenga el permiso Enviar a para los miembros del nivel superior y para la propia cola de destino.
Para lograr la seguridad en las operaciones de envío, la inclusión de miembros en una lista de distribución se define como bidireccional: Un miembro hace referencia a su contenedor y éste a sus miembros. Para respetar las restricciones de seguridad aplicadas a los miembros, no se puede agregar un miembro a una lista de distribución sin el permiso tanto del miembro como de su futuro contenedor. Es decir, tanto el contenedor como el miembro deben aceptarlo. Por ejemplo, si un usuario desea insertar la lista de distribución DL2 en DL1, el usuario debe tener el permiso para agregar o quitar elementos en DL1 y el permiso para agregar o quitar contenedores en DL2. Sin embargo, el usuario sólo necesita uno de estos permisos para quitar DL2 de DL1.
Se puede utilizar Usuarios y equipos de Active Directory para crear y eliminar listas de distribución como objetos de grupo de distribución, para agregar y eliminar miembros y para ver sus propiedades. Para obtener más información acerca de cómo realizar estas tareas, vea Crear listas de distribución, Eliminar listas de distribución y Ver, agregar o eliminar elementos en una lista de distribución.
Se puede hacer referencia mediante programación a las listas de distribución a través de los nombres de formato de la lista de distribución. Para obtener más información acerca de la utilización de los nombres de formato de la lista de distribución y su sintaxis, consulte el Kit de desarrollo de software (SDK) de Message Queue Server.
Alcance de la lista de distribución
Las listas de distribución pueden tener un ámbito local de dominio, global o universal:
- Universal. Los miembros de grupos universales pueden incluir a otros grupos y cuentas de cualquier dominio del bosque o el árbol de dominios, y pueden obtener permisos para cualquier dominio del bosque o del árbol de dominios.
- Global. Los miembros de grupos globales sólo pueden incluir a otros grupos y cuentas del dominio en el que está definido el grupo, y pueden obtener permisos para cualquier dominio del bosque. Por lo tanto, las listas de distribución de ámbito global pueden incluir colas y listas de distribución del dominio local, y colas y listas de distribución globales de otros dominios del bosque. También se pueden mover a otro dominio.
- Ámbito local de dominio. Los miembros de los grupos locales de un dominio pueden incluir otros grupos y cuentas de dominios de Windows Server 2003, Windows 2000 o Windows NT, y sólo se les pueden asignar permisos en un dominio. Por lo tanto, las listas de distribución de ámbito local de dominio sólo pueden contener colas y listas de distribución del dominio local como miembros, y no se pueden mover a otro dominio.
Enviar mensajes a listas de distribución
Cuando se envía un mensaje a una lista de distribución, se consulta Active Directory para determinar sus miembros y traducir los alias de las colas. Es decir, la lista de distribución se expande a una lista de colas de destino. Los miembros de la lista de distribución se pueden agregar o quitar de manera dinámica durante el proceso de expansión. Después se envía una copia del mensaje con el mismo Id. de mensaje a cada una de esas colas. Si una lista de distribución contiene múltiples referencias para el mismo destino, se omiten las referencias duplicadas cuando los destinos están abiertos para mensajes enviados. Por ejemplo, si los miembros de la lista de distribución D1 incluyen la cola Q1 y otra lista de distribución D2, podría resultar que D2 también contiene Q1 o D1. Si éste es el caso, se omite la segunda referencia a Q1 o D1. Es decir, se interrumpen los ciclos recursivos especificados por las listas de distribución que contienen otras listas de distribución.
Las listas de distribución pueden hacer referencia a una mezcla de colas de destino transaccionales y no transaccionales. Cuando se envía un mensaje no transaccional a esa mezcla de destinos, se permite que el mensaje se envíe a todas las colas de destino transaccionales y no transaccionales en el equipo local o remoto. Sin embargo, cuando el mensaje no transaccional llega a una cola transaccional, se rechaza y se transfiere a la cola no transaccional de mensajes no enviados en el equipo que aloja la cola transaccional para almacenamiento, y se envía a la cola de administración especificada en el mensaje original un mensaje de confirmación negativo que indica que se envió un mensaje no transaccional a una cola transaccional.
Enviar mensajes transaccionales a listas de distribución
Message Queue Server garantiza que todos los mensajes enviados en una transacción llegarán exactamente una vez y en el orden en que se enviaron. Message Queue Server también garantiza que todos los mensajes enviados en transacciones consecutivas desde un equipo dado a la misma cola de destino también llegarán exactamente una vez y en el orden en que se enviaron. Esto significa que los mensajes enviados en la primera transacción llegarán antes que los enviados en una transacción posterior.
Estas semánticas transaccionales también son compatibles con las listas de distribución. Los mensajes enviados a la misma lista de distribución en una transacción se entregarán a la lista de distribución exactamente una vez y en el orden en que se enviaron. Además, los mensajes enviados en transacciones múltiples desde el mismo equipo de origen a la misma lista de distribución se entregarán a la lista de distribución exactamente una vez y en el orden en que se enviaron. Es decir, la entrega de mensajes transaccionales a listas de distribución y a colas en idéntica.
Esta equivalencia, sin embargo, no se aplica a las colas a las que hacen referencia las listas de distribución. No existe garantía de la entrega en orden a una cola para los mensajes transaccionales enviados a listas de distribución diferentes, incluso si contienen los mismos elementos (colas). Sin embargo, los mensajes se entregarán exactamente una vez. En el caso de errores en la entrega, Message Queue Server coloca el mensaje original con una indicación del primer error de entrega en la cola transaccional de mensajes no enviados del equipo de origen.
Considere los siguientes ejemplos:
-
Ejemplo: entrega ordenada a la misma lista de distribución:
-
Lista de distribución DL1 = Cola Q1
-
Enviar mensaje M1 a DL1
-
Enviar mensaje M2 a DL2
-
En este caso, Message Queue Server garantiza tanto la entrega ordenada y exactamente una vez.
-
Ejemplo: entrega desordenada a distintas listas de distribución:
-
Lista de distribución DL1 = Cola Q1
-
Lista de distribución DL2 = Cola Q1
-
Enviar mensaje M1 a DL1
-
Enviar mensaje M2 a DL2
-
En este caso, aunque las dos listas de distribución contienen los mismos elementos, los mensajes dirigidos a Q1 no llegarán necesariamente en orden. No obstante, se garantiza la entrega exactamente una vez, de manera que M1 y M2 llegarán una sola vez.
En cambio, si se utilizan los nombres de formato de varios elementos, se puede obtener la garantía de orden para los mensajes enviados a las diferentes listas de distribución, ya que cada mensaje se envía a un nombre de formato de varios elementos que contiene una lista de colas de destino. Para obtener más información, vea Nombres de formato de varios elementos.
Listas de distribución dinámicas y transacciones
Como las listas de distribución son dinámicas, se pueden agregar destinatarios mientras los mensajes transaccionales están en tránsito. Los nuevos receptores empezarán a recibir mensajes transaccionales en el siguiente límite de transacción apropiado. Sólo llegarán al nuevo miembro los mensajes enviados después de que una nueva cola se haya unido a una lista de distribución.
Confirmaciones para las listas de distribución
Cuando se envía un mensaje a una lista de distribución, se puede generar un conjunto de confirmaciones distintas, ya que algunas colas de destino pueden recibir el mensaje correctamente y otras no. Un remitente debería esperar al menos n mensajes de confirmación para un mensaje enviado a una lista de distribución con n destinatarios finales, si se solicitan mensajes de confirmación. Se deben esperar más de n mensajes de confirmación cuando un solo mensaje genera un mensaje de confirmación positivo al llegar a su destino y un mensaje de confirmación de lectura positivo o negativo. Observe que todas las listas de distribución y las listas de distribución incrustadas se expanden y los destinatarios duplicados se eliminan antes de enviar cualquier mensaje. Sin embargo, para optimizar el tráfico de mensajes, los mensajes de confirmación de la misma clase y generados para el mismo mensaje original se combinan en un solo mensaje de confirmación que contiene la lista de las GUID de cola que confirmaron el mensaje.