Adjuntos no visibles en Outlook al enviar correos desde aplicaciones a Exchange 2007

Hola a todos, Un tema muy frecuente que nos estamos encontrando en entornos de Exchange 2007 y sobre todo en entornos que han sido migrados desde Exchange 2003, es que al enviar correos desde aplicaciones a usuarios cuyo buzón reside en Exchange 2007, los adjuntos no son visibles.

Normalmente este problema solo sucede al visualizar el correo con clientes Outlook, y sobre todo con Outlook 2003, auqnue también puede suceder con Outlook 2007. Sin embargo el adjunto se visualiza y descarga correctamente en OWA. Este problema no sucedía al enviar los correos desde las mismas aplicaciones y residir el buzón en Exchange 2003.

Lo que hemos podido ver en varios casos es que algunas aplicaciones suelen enviar el correo utilizando el siguiente formato:

1.

Content-Type: multipart/related;

Boundary=”----=_Part_XXXXXXX”

2.

-------=_Part_XXXXXXX

Content-Type: text/html; charset=”utf-8”

Content-Disposition: inline

<html>………</html>

-------=_Part_XXXXXXX

3.

-------=_Part_XXXXXXX

Content-Type: application/pdf; name=”File.pdf”

Content-Disposition: attachment; filename=”File.pdf”

…..

-------=_Part_XXXXXXX

  

Según el RFC 2387 se debe utilizar el Content-Type como multipart/mixed en vez de Multipart/related para que los adjuntos sean correctamente delimitados y por tanto visualizados.

Para verificar el formato del correo que recibe el role de HUB de Exchange 2007 desde la aplicación, activaremos en el servidor HUB por el que pasa el mensaje la capacidad de Pipeline Tracing que permite hacer una copia del mensaje, tal como llega al servidor de Exchange (original.eml) y según va siendo procesado por cada uno de los diferentes agentes de transporte en dicho servidor.

Para ello ejecutaremos desde la Powershell de Exchange el siguiente comando:

set-transportserver -identity <servername> -pipelinetracingenabled $true -pipelinetracingsenderaddress "senderSMTPaddress"

Por ejemplo:

set-transportserver -identity Ex-Hub1 -pipelinetracingenabled $true -pipelinetracingsenderaddress "user1@contoso.com"

Esto permite capturar los mensajes que pasen por el servidor HUB Ex-Hub1 y cuyo origen sea la dirección SMTP “user1@contoso.com”

En el servidor HUb se generara una carpeta situada en:

<drive>:Program FilesMicrosoftExchange ServerTransportRolesLogsPipelineTracingMessageSnapshots

Por cada mensaje que pase por el HUB y sea enviado por dicho usuario.

Una vez reproducido el problema localizaremos el fichero original.eml dentro de la carpeta MessageSnapshots y lo editaremos con un editor de texto, por ejemplo notepad.exe.

Verificaremos si efectivamente el esquema de las diferentes partes del mensaje sigue la estructura arriba indicada y si se está utilizando el content-type Multipàrt/related or multipart/Mixed

Para desactivar el PipeLine tracing ejecutaremos

set-transportserver -identity <servername> -pipelinetracingenabled $false -pipelinetracingsenderaddress "senderSMTPaddress"

En caso de que estemos teniendo problemas en la visualización de los adjuntos y se esté utilizando

Multipart/Related estaremos ante el tema conocido del uso del RFC 2387 por parte de Exchange 2007.En este caso Exchange 2007 está cumpliendo con dicho RFC de forma estricta. 

 

Una vez identificado el problema tenemos las siguientes opciones:

1.- Contactar con los desarrolladores de la aplicación y ver si es factible la modificación de la generación del mensaje para que cumpla con el RFC 2387

2.- Si la opción 1 no es factible, podemos intentar generar una regla de transporte que modifique en la cabecera del mensaje el content-type Multipart/related por Multipart/Mixed. Para ello seguiremos los siguientes pasos:

En el ESM de Exchange 2007 bajo Organization Configuration seleccionar Hub transport.

- En el panel de la derecha seleccionar Transport rule.

- Crearemos una nueva regla de transporte.

- Seleccionar la opción de "When any attachment file name contains text patterns" typed

.pdf

Normalmente la regla se puede crear por tipo de adjunto ya que por norma general las aplicaciones sulen usar un solo tipo de adjunto.

Se podrían crear más reglas para más tipos de adjuntos.

- Pulsaremos Next y bajo Actions Seleccionaremos “set header with value,” click la opción marcada de

“header” text, y escribiremos Content-Type, click OK

- Click en “value”, escribir multipart/mixed, click OK, y luego Next

- En la página de “Exceptions” , simplemente hacer click en next

- Finalmente ir a la página de “Create Rule” page, click New, y luego Finish

- Reiniciar el servicio MSExchange transport

- Ahora probar a enviar un mensaje desde la aplicación con un adjunto del tipo configurado

Esta regla de transporte debería solventar el problema modificando el formato del mensaje para que cumpla con el RFC 2387 y utilice el Content-Type MultipartMixed.

Siempre que sea posible, nuestra recomendación es que se modifique el formato en el que se envía el correo, para así evitar tener que crear una regla de transporte específica para este tema , sobre todo cuando la aplicación en concreto use más de un tipo de adjunto o haga envíos masivos de correos.

Espero que esta información os sea de utilidad y os ayude a solventar este tipo de problemas en vuestro entorno de Exchange 2007.

Saludos.

Ramón de Diego Perdiz