Buenas a todos
Tengo un problema con la RE-Escritura de Direcciones del encabezado de mensajes salientes en Exchange. (Header Address ReWrite). No me funciona del todo. He logrado programar la Libreria y cargarla como Agente de Transporte pero no se porq qué ahora no funciona.
Como aún no tengo un Equipo adicional para instalar el Rol de Edge Transport en la empresa en la que doy soporte, me contento por ahora con el Rol de Hub Transport que no tiene nativamente la posibilidad de hacer header rewrites:
es decir: si tengo una direccion info@contoso.local y quiero que el destinatario la reciba como info@contoso.com
Si la dejo como está muchos Servidores de Correo me van a catalogar al Email como SPAM.
Estuve programando la libreria en VS 2012 para agregar este Agente de Transporte y que me permitiera hacer address rewrite. Cargo la libreria y al parecer funcionaba (de hecho cuando la programe funciono) y en mi cuenta de gmail recibi el correo como @contoso.com en vez de @contoso.local
Páginas sobre el tema:
http://blog.c7solutions.com/2012/10/creating-simple-exchange-server.html
http://gsexdev.blogspot.com.ar/2009/01/from-address-rewriting-in-transport.html
http://toastresearch.com/2010/03/04/header-rewrite-on-exchange-2007-without-an-edge-server/
Motivos de por qué uso direcciones locales (@contoso.local):
En mi organizacion solo 1 persona tiene derecho a enviar correo hacia afuera y por eso las hemos dejado todas en @contoso.local
A esta persona le he agregado el dominio correcto (en-cuotas.com.ar) y todo esta configurado hasta los Reverse DNS al punto que todo funcione bien (Send Conector etc)
El problema pasa que supuestamente este agente de transporte ahora no funciona, -o funciona a medias- No se porque funciona a la mitad:
El agente de transporte que programe y está cargado en el Exchange me transforma y modifica el P1 Header (Envelope From (MAIL FROM))
pero ahora no me modifica el P2 Header: (Body From and Sender)
Es decir: cuando mando el email a una cuenta de gmail: el MAIL FROM es cambiado y google lo clasifica al email como "pass" dado que cambia el dominio desde el cual se envia segun el P1 Header
pero lo manda a SPAM porque la direccion de email del sender sigue siendo @contoso.local (Antes FUNCIONABA Y NO MODIFIQUE NADA)
Acá esta el mail que recibo en Gmail:
Delivered-To: jmfrizza@gmail.com
Received: by 10.194.222.71 with SMTP id qk7csp23188wjc;
Wed, 15 May 2013 11:41:56 -0700 (PDT)
X-Received: by 10.49.85.131 with SMTP id h3mr1942539qez.42.1368643316093;
Wed, 15 May 2013 11:41:56 -0700 (PDT)
Return-Path: <localPart@en-cuotas.com.ar> //SIGNO DE QUE EL AGENTE FUNCIONA Y ME CAMBIA EL P1 HEADER
Received: from mail.en-cuotas.com.ar (mail.en-cuotas.com.ar. [200.16.208.173])
by mx.google.com with ESMTPS id z9si2736576qar.91.2013.05.15.11.41.54
for <jmfrizza@gmail.com>
(version=TLSv1 cipher=RC4-SHA bits=128/128);
Wed, 15 May 2013 11:41:55 -0700 (PDT)
Received-SPF: pass (google.com: best guess record for domain of localPart@en-cuotas.com.ar designates 200.16.208.173 as permitted sender) client-ip=200.16.208.173;
Authentication-Results: mx.google.com;
spf=pass (google.com: best guess record for domain of localPart@en-cuotas.com.ar designates 200.16.208.173 as permitted sender) smtp.mail=localPart@en-cuotas.com.ar
Received: from EX01.CORP.local ([fe80::1868:de11:1f2d:565a]) by
EX01.CORP.local ([fe80::1868:de11:1f2d:565a%11]) with mapi id 14.02.0247.003;
Wed, 15 May 2013 15:41:46 -0300
From: Administrador <Administrador@contoso.local> //NO ME CAMBIA el P2 HEADER
To: "jmfrizza@gmail.com" <jmfrizza@gmail.com>
Subject: Holaaaaaaaaaaaaaaaa
La Libreria en C# es esta:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Exchange.Data.Transport;
using Microsoft.Exchange.Data.Transport.Email;
using Microsoft.Exchange.Data.Transport.Smtp;
using Microsoft.Exchange.Data.Transport.Routing;
using Microsoft.Exchange.Data.Common;
namespace RoutingAgentOverride
{
public class SampleRoutingAgentFactory : RoutingAgentFactory
{
public override RoutingAgent CreateAgent(SmtpServer server)
{
RoutingAgent myAgent = new ownRoutingAgent();
return myAgent;
}
}
}
public class ownRoutingAgent : RoutingAgent
{
public ownRoutingAgent()
{
base.OnResolvedMessage += new ResolvedMessageEventHandler(ownRoutingAgent_OnResolvedMessage);
}
void ownRoutingAgent_OnResolvedMessage(ResolvedMessageEventSource source, QueuedMessageEventArgs e)
{
try
{
//Si la dirección del Remitente es el Administrador
if (e.MailItem.FromAddress.ToString() == "Administrador@contoso.local")
{
e.MailItem.FromAddress = new RoutingAddress("localPart", "en-cuotas.com.ar"); // NUEVA DIRECCION DE P1 ENVELOPE FROM
e.MailItem.Message.Sender.SmtpAddress = "Administrador@en-cuotas.com.ar"; // ESTO ANDABA HACE 1 SEMANA
e.MailItem.Message.From.SmtpAddress = "Administrador@en-cuotas.com.ar"; // ESTO ANDABA HACE 1 SEMANA
}
if (e.MailItem.FromAddress.ToString() == "Marcos@contoso.local")
{
e.MailItem.FromAddress = new RoutingAddress("localPart", "en-cuotas.com.ar");
e.MailItem.Message.Sender.SmtpAddress = "Marcos@en-cuotas.com.ar";
e.MailItem.Message.From.SmtpAddress = "Marcos@cen-cuotas.com.ar";
}
}
catch // (Exception except)
{
}
}
}
Alguna idea? alguna DLL? alguna ayuda, ya lei todo por todos lados. Y no se por que me andaba y ahora no.