Création d’agents de transport pour Exchange 2013
Trouvez des informations sur la création d’agents de transport personnalisés pour Exchange 2013 et sur la configuration système requise pour la création d’un agent personnalisé.
S’applique à : Exchange Server 2013
Exchange Server 2013 inclut plusieurs agents de transport que vous pouvez utiliser pour traiter les messages. En utilisant les assemblys fournis avec Exchange, vous pouvez créer vos propres agents personnalisés pour effectuer des tâches spécifiques en fonction des besoins de votre organisation. Par exemple, vous pouvez utiliser un agent de transport SmtpReceiveAgent pour intercepter les messages reçus via le protocole SMTP et traiter le message pour convertir le format du corps pour qu’il contienne du texte préformaté. Vous pouvez utiliser un agent de transport RoutingAgent pour journaliser les messages qui passent par le serveur sur la route vers un autre serveur. Vous pouvez également créer des fonctionnalités plus complexes qui utilisent plusieurs types d’agent. Par exemple, pour créer un agent antivirus, vous pouvez implémenter un agent SmtpReceiveAgent et un agent RoutingAgent. Si vous avez un composant sur votre réseau qui ne prend pas en charge le protocole SMTP, vous pouvez utiliser un agent de transport DeliveryAgent pour gérer la communication entre votre serveur Exchange et votre composant externe.
Cet article fournit des informations sur les prérequis et les tâches impliquées dans la création de votre propre agent de transport. Pour plus d’informations sur la création d’agents de transport spécifiques, consultez Créer un agent de transport RoutingAgent pour Exchange 2013, Créer un agent de transport SmtpReceiveAgent pour Exchange 2013 et Créer un agent de transport DeliveryAgent pour Exchange 2013.
Conditions préalables à la création d’un agent de transport
Voici les prérequis dont vous avez besoin pour implémenter un agent de transport :
Un ordinateur exécutant Exchange 2013 qui exécute le service de transport frontal sur un serveur d’accès au client ou de transport Edge, ou le service de transport sur un serveur de boîtes aux lettres. Pour plus d’informations sur l’architecture de rôle serveur dans Exchange 2013, consultez Concepts de l’agent de transport dans Exchange 2013.
Les assemblys suivants pour les classes d’agent de transport :
- Microsoft.Exchange.Data.dll
- Microsoft.Exchange.Data.Common.dll
- Microsoft.Exchange.Transport.dll
.NET Framework 4.5
Nous vous recommandons également d’installer Visual Studio 2012. Vous pouvez implémenter des agents de transport à l’aide de Visual Basic .NET ou de C#.
Référencement des assemblys
Exchange 2013 fournit une bibliothèque de classes qui prennent en charge l’extension du comportement de transport Exchange. Ces classes nécessitent .NET Framework 4.5. Vous pouvez implémenter des agents de transport basés sur ces classes à l’aide de Visual Studio 2012.
Le programme d’installation d’Exchange 2013 installe les assemblys utilisés pour le développement de l’agent de transport et les inscrit dans le Global Assembly Cache (GAC). Pour commencer à implémenter un agent de transport, créez une référence à l’assembly Microsoft.Exchange.Data.Transport dans un projet de bibliothèque de classes.
Implémentation d’un agent de transport
L’exemple suivant montre une implémentation minimale des classes qui dérivent des classes SmtpReceiveAgentFactory et SmtpReceiveAgent .
Attention
Si plusieurs agents de transport sont installés et inscrits pour le même événement, tous les agents sont appelés, même si un agent supprime tous les destinataires d’un élément de courrier. > Pour éviter les erreurs non gérées ou les comportements imprévisibles, votre agent de transport doit gérer les cas où le nombre de destinataires sur un élément de courrier est égal à zéro.
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Exchange.Data.Transport;
using Microsoft.Exchange.Data.Transport.Smtp;
namespace MyAgents
{
public sealed class MyAgentFactory : SmtpReceiveAgentFactory
{
public override SmtpReceiveAgent CreateAgent(SmtpServer server)
{
return new MyAgent();
}
}
public class MyAgent : SmtpReceiveAgent
{
public MyAgent()
{
this.OnEndOfData += new EndOfDataEventHandler(MyEndOfDataHandler);
}
private void MyEndOfDataHandler (ReceiveMessageEventSource source, EndOfDataEventArgs e)
{
// The following line appends text to the subject of the message that caused the event.
e.MailItem.Message.Subject += " - this text appended by MyAgent";
}
}
}
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports Microsoft.Exchange.Data.Transport
Imports Microsoft.Exchange.Data.Transport.Smtp
Namespace MyAgents
NotInheritable Class MyAgentFactory
Inherits SmtpReceiveAgentFactory
Public Overrides Function CreateAgent(ByVal server as SmtpServer) As SmtpReceiveAgent
Return New MyAgent
End Function
End Class
Public Class MyAgent
Inherits SmtpReceiveAgent
Private Sub MyEndOfDataHandler(ByVal source As ReceiveMessageEventSource, ByVal e As EndOfDataEventArgs) Handles Me.OnEndOfData
' The following line appends text to the subject of the message that caused the event.
e.MailItem.Message.Subject &= e.MailItem.Message.Subject + " - this text appended by MyAgent"
End Sub
End Class
End Namespace
Installation et activation d’un agent
Après avoir compilé votre agent dans une DLL, vous devez installer et activer l’agent sur votre serveur Exchange de développement. Dans Exchange Management Shell, utilisez l’applet de commande Install-TransportAgent pour installer votre agent et l’applet de commande Enable-TransportAgent pour activer votre agent. Pour plus d’informations sur l’utilisation d’Exchange Management Shell, consultez Exchange Server PowerShell (Exchange Management Shell).
Attention
Les agents de transport ont un accès illimité aux messages électroniques qu'ils rencontrent. Exchange 2013 ne limite pas le comportement d’un agent de transport. Les agents de transport qui sont instables ou qui contiennent des failles de sécurité peuvent affecter la stabilité et la sécurité d’Exchange 2013. Par conséquent, vous devez installer uniquement les agents de transport auxquels vous avez entièrement confiance et qui ont été entièrement testés.
Lorsque vous utilisez l’applet de commande Install-TransportAgent pour installer un agent, l’environnement de ligne de commande Exchange Management Shell conserve un verrou sur l’assembly. Pour libérer le verrou sur l’assembly, vous devez fermer l’instance de l’environnement de ligne de commande Exchange Management Shell que vous avez utilisé pour installer l’agent. Vous ne pourrez pas mettre à jour l’assembly tant que vous n’aurez pas libéré le verrou.
L’exemple suivant montre comment utiliser Exchange Management Shell pour installer et activer un agent nommé MyAgent à l’aide d’une classe dérivée de SmtpReceiveAgentFactory nommée MyAgents.MyAgentFactory.
Install-TransportAgent -Name "MyCustomAgent" -TransportAgentFactory "MyAgents.MyAgentFactory" -AssemblyPath "C:\myagents\MyAgent.dll"
Cet exemple nomme l’agent MyCustomAgent sur le serveur sur lequel l’agent est installé. L’exemple suivant montre comment activer l’agent nommé MyCustomAgent.
Enable-TransportAgent -Name "MyCustomAgent"
Pour gérer un agent de transport dans le service de transport frontal sur un serveur d’accès au client, ajoutez la valeur suivante à la commande : -TransportService FrontEnd
. Par exemple, pour afficher les agents de transport dans le service de transport frontal, exécutez la commande suivante.
Get-TransportAgent -TransportService FrontEnd
Pour plus d’informations sur l’installation, l’activation et la gestion de votre agent, consultez Gérer les agents de transport.
Dans cette section
- Créer un agent de transport RoutingAgent pour Exchange 2013
- Créer un agent de transport SmtpReceiveAgent pour Exchange 2013
- Créer un agent de transport DeliveryAgent pour Exchange 2013