14 votos

Horario/cola grandes e-mails en Exchange 2010, aplazar hasta que caiga la latencia

Mi reto

Tenemos los servidores de Exchange en varios sitios, pero también a bordo de los buques. Las naves están conectados a nuestra red a través de enlaces satelitales, cuando en el mar, pero el interruptor de wi-fi en los puentes en el puerto.

Debido a la alta latencia (500+ ms) y no-poco frecuentes de deserción (por ejemplo, cuando los barcos están girando), tratando de enviar e-mails encima de unos pocos megabytes, mientras que en el mar, es probable que falle y se vuelve a intentar hasta que se ha alcanzado el límite. El resultado: El correo no se entrega y cada uno intenta consume ancho de banda valioso en el sat enlace.

Una "solución" es limitar el tamaño máximo del correo electrónico a decir de 5 MB, pero no es tan amigable para el usuario y una restricción innecesaria, mientras que en el puerto.

Idea aproximada

Lo que me gustaría hacer, es a la cola de todos los e-mails de más de un límite establecido para la entrega posterior cuando en el mar, mientras que el envío de todos los e-mails de inmediato. Luego estaba pensando que me gustaría ping en el servidor de transporte de concentradores en nuestro centro de datos con regularidad, cuando la latencia cae por debajo de ~400 ms, me gustaría empezar el tratamiento de grandes e-mails de la cola. Cuando la latencia sube más de 400 ms, me iba a tapar el agujero y dejar que los e-mails de la cola de nuevo.

Ahora, no he llegado a mis manos muy sucias con Exchange desde la versión 2003. Entonces, se puede programar grande e-mails para su posterior entrega, así que mi idea era hacer algo similar en Exchange 2010, luego de secuencia de comandos de una manera para cambiar el calendario de entrega de ampliación de e-mails entre 'siempre' y 'nunca'.

Obstáculo

No debería ser demasiado complicado crear una secuencia de comandos como eso, pero luego he leído que la característica que me gustaría confiar en que fue eliminado con Exchange 2007:

Esta fue una característica presente en Exchange 2003, pero ha sido retirado por Exchange 2007. Se estableció en un Conector SMTP con el uso de diferentes los tiempos de entrega para los mensajes sobredimensionados'.

TechCenter: ¿Es posible programar el envío de correo electrónico basado en el tamaño, en Cambio?

Preguntas

Es esto cierto? - Es esta característica no está presente en Exchange 2010, o simplemente se han transformado en algo similar, los puedo usar para lograr mi objetivo? Si es así, ¿qué?

Hay otra manera de diferir la entrega de ampliación de e-mails en ciertos servidores de Exchange? Podría estar basado en una programación o tal vez incluso que requiere acción específica - estoy bastante seguro de que habrá alguna manera de activar la entrega a través de la secuencia de comandos, solo necesito grande e-mails en una línea separada, en los buques.

Sus pensamientos sobre esto será muy apreciada! :-)

Edit #1: Refinado Idea Aproximada

Yo stumpled en dos CmdLets de PowerShell creo que me puede traer bastante cerca de mi meta:

He jugado todo con Get-Mensaje durante un tiempo, para ver qué tipo de mensajes de los comandos anteriores.

Lo que es más importante, estos comandos aceptan un mensaje de filtro de tamaño. Este comando lista los mensajes en cola,en el servidor actual, de más de 5 MB (5,242,880 bytes):

get-message -Filter {Size -gt 5242880}

Parece Get-Message sólo devuelve los mensajes de varias colas de entrega remota. Pero los mensajes que fluyen dentro del servidor, sin embargo, brevemente, se muestran en una cola que Get/Suspender/Reanudar: Mensaje se hace un lío con?

Si no, la solución podría ser tan simple como un script programado cada pocos minutos, a lo largo de las líneas de (en pseudo-código):

if ping_rtt > 400 Then
    Suspend-Message -Filter {Size -gt 5242880}
Else
    Resume-Message
EndIf

Problemas/preguntas de seguimiento:

En su mayoría irrelvant ahora - véase la edición #2.

Le Get-Message sólo mensajes de las colas de entrega remota - nunca mensajes para el comercio intra-servidor de entrega? Si no, ¿el nombre de identidad de las colas de entrega remota seguir un cierto patrón, que puedo usar para el filtrado?

Podría/debería hacerse a través de un Transporte personalizado Agente (como sugerido por @longneck) o un receptor de Eventos (si este concepto todavía existe en Exchange 2010)?

Decir que me ejecute el script cada 5 minutos, lo que significa grandes mensajes que se envían, lo que potencialmente puede causar problemas durante 5 minutos, antes de ser suspendido. Nos gustaría ser todavía mejor de lo que somos ahora, pero no es óptimo. Me podrían aumentar la frecuencia a cada minuto, pero no sería la solución más elegante.

Incluso si sólo de verificación tiempo de ida y vuelta cada 5 minutos (para guardar sat de tráfico), ¿qué mecanismo de Intercambio necesitaría la instalación, con el fin de comprobar en contra de la última lectura de la RTT, cada vez que se envía un mensaje que va a la cola de entrega remota y, a continuación, tomar la acción apropiada?

Edición #2: Propuesta De Soluciones

Permítanme resumir la propuesta de soluciones, y sus pros y sus contras como yo lo veo:

Personalizado Agente De Transporte

Concepto

  • Supervisar periódicamente la latencia, clasificar como alto o bajo (límite máximo: 400 ms?)
  • A través de un Transporte personalizado Agente, suspender/reanudar todos los e-mails mayor que un umbral establecido, cuando la latencia de las modificaciones de la clasificación
  • A través de la costumbre TA, de inmediato se puso posteriormente enviado mensajes de gran tamaño en "suspender" el modo, si la latencia es alta

Fortalezas

  • Ampliación de e-mails nunca se trató de entrega cuando la latencia es alta

Debilidades

  • No hay desarrollo de habilidades para hacer esto en casa (nota: el código fuente debe pertenecer a mi empresa como parte del contrato con el desarrollador externo)
  • 3rd party software que influye en el Cambio puede causar problemas durante la revisión o actualización de
  • Algún tipo de acuerdo de apoyo necesarios, en caso de que algo va mal (ver arriba)

Moderado De Grandes Mensajes Con El

Concepto

  • Supervisar periódicamente la latencia, clasificar como alto o bajo (límite máximo: 400 ms?)
  • Basado en la latencia de la clasificación, configurar Exchange Reglas de Transporte a través de secuencias de comandos, o dejar que todo el flujo de mensajes o reenviar mensajes de gran tamaño para moderador
  • Aprobar los mensajes en moderador de la cola cuando la nave en puerto, posiblemente por un ser humano

Fortalezas

  • Ampliación de e-mails nunca se trató de entrega cuando la latencia es alta
  • Se suspenden los mensajes utilizando el lenguaje nativo de Cambio de las Reglas de Transporte

Debilidades

  • Por lo que se ve, los mensajes no pueden ser aprobados mediante programación cuando la latencia es baja, de ahí que la intervención humana es necesaria cada vez que la nave en el puerto
  • Posiblemente a problemas de privacidad, si la moderación no es controlada mediante programación

Preguntas

  • Puede que los mensajes se aprobó mediante programación de moderador buzón de correo? Cómo?

Programada de comandos de PowerShell

Concepto

  • Supervisar periódicamente la latencia, clasificar como alto o bajo (límite máximo: 400 ms?)
  • Como el tiempo de latencia es alta, con frecuencia (cada minuto?) suspender cualquiera de los grandes mensajes (Suspend-Message -Filter {Size -gt 5242880})
  • Cuando la latencia se reduce a la baja, resume todos los mensajes (Resume-Message)

Fortalezas

  • Muy simple de implementar

Debilidades

  • No es la solución más elegante
  • La entrega de cada nuevo mensaje de gran tamaño puede ser intentado por el tiempo de intervalo entre Suspend-Message comandos, posiblemente aún perdiendo algo de ancho de banda y crear acumulaciones (aunque muy poco en comparación con no hacer nada)

Preguntas

  • Cualquier idea sobre cómo prevenir los intentos de entrega de mensajes de gran tamaño, en entre- Suspend-Message comandos?
  • Le Get-Message sólo mensajes de las colas de entrega remota - nunca mensajes para el comercio intra-servidor de entrega? Si no, ¿el nombre de identidad de las colas de entrega remota seguir un cierto patrón, que puedo usar para el filtrado?

Edición #3: El Camino A Seguir

Después de traer las soluciones propuestas en mi equipo (incluyendo el proxy de SMTP, que no pude incluir en la edición #2), y basado en mi propia sensación de la tripa, decidimos ir a dar una costumbre de Cambio del Agente de Transporte.

Yo estoy en contacto con un par de empresas de consultoría, que se vuelvan a mí con cómo la va a atacar el problema y cuál sería el costo.

Si usted tiene alguna experiencia con la externalización de las tareas de programación, siéntase libre de dejar comentarios a mis relacionadas con la pregunta sobre Stack Overflow, porque yo no.

2voto

Emyl Puntos 350

Tratar de echar un vistazo a las nuevas funciones de "Regulación del mensaje" introducido con Exchange 2010 SP1. Podría ser muy útil para su caso.

http://technet.Microsoft.com/en-us/library/bb232205 (v=exchg.141).aspx

2voto

webyz Puntos 11

Para resolver el problema de la manera que usted ha solicitado, se podría escribir su propio Agente de Transporte mediante el Transporte de Microsoft Exchange Agente de SDK. Los Agentes de transporte están basadas en eventos para el Intercambio va a llamar a una función en la biblioteca cuando un mensaje es recibido. Su biblioteca puede hacer algo como presionado el mensaje. Si usted no tiene los conocimientos necesarios para ello, estoy seguro de que usted puede contratar a un desarrollador para que escriba por usted.

Pero no creo que esta es una gran solución. Como una alternativa para que usted investigue, es posible que desee buscar en algo así como un proxy de SMTP para la baja calidad de los enlaces. Como usted ha descubierto, SMTP es un horrible protocolo para la baja calidad de los enlaces debido a que se ha interrumpido la conexión hace que la transmisión del mensaje para reiniciar desde el principio en lugar de reanudar desde donde lo dejó. Si vas a contratar a un desarrollador para algo, me gustaría considerar la preparación de un programa de servidor que acepta las conexiones SMTP entrantes y envía el mensaje a una instancia remota de este mismo programa en el otro extremo de la conexión vía satélite en una reanudación de manera (posiblemente la segregación de los grandes mensajes de la pequeña mensajes a través del puerto TCP para permitir el tratamiento de QoS por su acelerador de WAN). La instancia remota podría entonces, al recibir el mensaje completo, completa la entrega del mensaje a través de SMTP.

0voto

Zelbinian Puntos 181

Mensaje De La Moderación

Probablemente no, la solución ideal es utilizar una regla de transporte para reenviar mensajes a través de un cierto tamaño para el jefe del remitente o de un buzón designado (en la nave de Exchange server) para la moderación. De esta manera, si están en el mar, de grandes mensajes con el puede ser, esencialmente, en la cola en otro buzón. Cuando el barco llega a puerto, el administrador o designado moderador puede aprobar para la entrega.

Las desventajas son:

  • esta regla es siempre menos que deshabilitar manualmente (pero se podría hacer a través de una secuencia de comandos) por lo que incluso en el puerto de grandes mensajes con el redirigiría al moderador buzón
  • todos los grandes mensajes necesidad de revisión manual por alguien antes de enviar, pero usted puede agregar excepciones a la regla para cosas específicas
  • otra persona sería la lectura de correo saliente, que puede no ser ideal, debido a preocupaciones sobre la privacidad, pero esto depende de su org

Una ventaja es que tendría un humano de tomar decisiones sobre si es o no un mensaje debe ser enviado como por ejemplo, si un usuario estaba tratando de enviar un montón de no relacionada con el trabajo de mierda que sólo se empantana la conexión por ninguna razón. Podían ser corregidos por los controles administrativos como señalar una política y abofetear a ellos en la muñeca para que no lo vuelvas a hacer.

Exchange 2010 Reglas De Transporte

Secuencia De Comandos Personalizada

RE: UNA secuencia de comandos personalizada para gestionar e-mails. Pude ver algo como la siguiente que iba a habilitar/deshabilitar su Conector de Envío en el servidor de Exchange. Una desventaja es que todo el correo se celebra en la cola en lugar de sólo las grandes mensajes, pero algo de lógica a lo largo de estas líneas de trabajo:

  1. Comprobar la latencia. Si es baja, habilitar el Conector de Envío, cancelar la suspensión de cualquiera de los grandes mensajes, y espere 5 minutos (o arbitrarias de la longitud de tiempo). Si es alta, deshabilitar el Conector de Envío.
  2. Espere 5 minutos.
  3. Después de 5 minutos, comprobar si los mensajes grandes y suspender. Volver a habilitar el Conector de Envío tan pequeño, en la cola de mensajes se liberan hasta que la cola está vacía (incluso se podría ciclo a través de 1 mensaje a la vez a fin de no obstruir la cola/enlace WAN después de volver a habilitar el conector de Envío)
  4. Deshabilitar el Conector de Envío y goto #1

Esta lógica no está totalmente pulido para hacer el 100% de sentido, pero usted consigue la idea - cola de todo el correo, comprobar la latencia, suspender los mensajes de gran tamaño si es alta, la onu-la cola de correo, de la cola de correo, etc. Otra desventaja de la ejecución de un script como este, si es que alguna vez se bloquea o deja de, ¿cómo se sabe para reinicializar sin personal a bordo de los buques? Esto podría potencialmente detener todo el correo saliente de forma indefinida (si se detiene después de deshabilitar el Conector de Envío) o podría perder su gran mensaje de control si simplemente deja el Conector de Envío habilitado y el guión no está en ejecución.

SMTP Proxy

Aunque se ha indicado que está en contra de cualquier mensaje de manejo fuera de Exchange, Después de pensar en esto un poco más, he decidido que estoy con @longneck sobre el uso de algún tipo de proxy SMTP solución. Incluso SMTP de IIS tiene una entrega diferida mecanismo que parece Exchange 2010 no. Usted puede redirigir los mensajes de gran tamaño para el servidor SMTP de IIS que podría almacenarlos en el disco, y, la comprobación de la latencia de la primera, tiene el servidor SMTP de IIS enviar a ellos a través de una secuencia de comandos cuando la latencia es baja. El peor de los casos si el mecanismo de programación se quedó atascado o detenido sería el de grandes mensajes con el atascarse en el disco, pero los pequeños mensajes de seguir para ser enviado. Probablemente hay mejores soluciones que SMTP de IIS, y nunca lo he usado yo, pero es sólo un ejemplo.

Configurar Correo electrónico SMTP de IIS 7

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: