alexandersch
Goto Top

SBS 2011 Eigener Transport Agent wird nicht aufgerufen

Hallo,

ich probiere gerade für ein SMS - Gateway alle Emails die bestimmte Kriterien erfüllen über einen eigenen Smarthost zu leiten (Anforderung des SMS - Gateway Providers).

Da es meiner Meinung nach keine andere Möglichkeit gibt, probiere ich das mit einem selbst geschriebenen Routing Agent der an eine "sinnlose Domaine" weiterleitet wobei ein Smarthost für diese Domaine mit niedrigen Kosten eingetragen ist.

Das ganze findet sich so ähnlich auch noch einmal im Technet (http://blogs.technet.com/b/appssrv/archive/2009/08/26/how-to-control-ro ..)

Der Exchange Server ist ein 2010 SP1 RU 8.

Dazu habe ich mir erst einmal folgenden sehr einfachen Code copyundpasted (und mit Trace.WriteLine erweitert)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;

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()
    {
        //subscribe to different events
        base.OnResolvedMessage += new ResolvedMessageEventHandler(ownRoutingAgent_OnResolvedMessage);
    }

    void ownRoutingAgent_OnResolvedMessage(ResolvedMessageEventSource source, QueuedMessageEventArgs e)
    {
        try
        {
            Trace.WriteLine("Agent wurde gestartet");  

            if (e.MailItem.FromAddress.ToString() == "user1@example.com")  
            {
                Trace.WriteLine("Email wurde erkannt");  

                RoutingDomain myRoutingOverride = new RoutingDomain("sinnlosedomain.local");  

                foreach (EnvelopeRecipient recp in e.MailItem.Recipients)
                {
                    recp.SetRoutingOverride(myRoutingOverride);

                }

            }
        }

        catch // (Exception except)
        {

        }
    }

}

Diesen Code habe ich mit VS 2012 als DLL (Net 3.5) compiliert (mit den lokal kopierten Verknüpfungen der Exchange DLLs) und die fertige DLL dann in einen Unterorder von C: kopiert.

Den Agent habe ich mit folgenden PowerShell Befehlen hinzugefügt:
 Install-TransportAgent "SMS-Gate" -TransportAgentFactory "RoutingAgentOverride.SampleRoutingAgentFactory" -AssemblyPath "C:\SMS_Gateway\XXX.dll"  

Danach die PowerShell beendet und den Transportdienst neu gestartet.

PowerShell wieder gestartet und Agent aktivert mit
Enable-TransportAgent "SMS-Gateway"  

Nun noch die Priorität auf 2 gesetzt
Set-TransportAgent -Priority "2"  

Nach den beiden oberen Befehlen wurde der Transportdienst jeweils neu gestartet.

Der TransportAgent müsste nun laufen und die Mails bearbeiten.

Selbst wenn die Mail nicht dem Absender entspricht sollte ein Eintrag im DebugView zu finden sein (Global Win 32 ON)

Leider finde ich dort garnichts, woraus ich schlussfolgere das der Agent nie anläuft.

Dieses Verhalten verstehe ich nicht und bitte um Hilfe.


Mit freundlichen Grüßen


Alexander S.

Content-Key: 196128

Url: https://administrator.de/contentid/196128

Ausgedruckt am: 28.03.2024 um 12:03 Uhr