Agents de transport dans Exchange Server

Les agents de transport vous permettent d'installer des logiciels personnalisés créés par Microsoft, des fournisseurs tiers ou votre organisation sur un serveur Exchange Server. Ces logiciels peuvent ensuite traiter tous les messages électroniques qui transitent par un pipeline de transport. Dans Microsoft Exchange Server 2016 ou 2019, le pipeline de transport est constitué des processus suivants :

  • Service de transport frontal sur les serveurs de boîtes aux lettres
  • Service de transport sur les serveurs de boîtes aux lettres
  • Service de transport de boîte aux lettres sur les serveurs de boîtes aux lettres
  • Service de transport sur les serveurs de transport Edge

Pour plus d’informations sur le pipeline de transport, consultez Flux de courrier et pipeline de transport

Le transport Exchange assure l’extensibilité via le kit de développement logiciel (SDK) Microsoft Exchange Server Transport Agents. La version Exchange du Kit de développement logiciel (SDK) permet à des tiers d’implémenter les classes prédéfinies suivantes :

  • SmtpReceiveAgent
  • RoutingAgent
  • DeliveryAgent

Lorsqu’ils sont conformes aux bibliothèques du Kit de développement logiciel (SDK), les assemblys résultants sont inscrits auprès d’Exchange, qui charge les agents et appelle leurs gestionnaires d’événements pendant des phases spécifiques des sessions SMTP ou du traitement des messages. Ces étapes ou événements font partie des définitions des agents. Les informations d'enregistrement des agents sont stockées dans un fichier de configuration XML.

La liste suivante décrit la configuration requise pour l’utilisation des agents de transport dans Exchange.

  • Le service de transport sur les serveurs de boîtes aux lettres et les serveurs de transport Edge prend entièrement en charge toutes les classes prédéfinies dans le Kit de développement logiciel (SDK).
  • Le service de transport frontal prend uniquement en charge la classe SmtpReceiveAgent dans le Kit de développement logiciel (SDK), et les agents tiers ne peuvent pas fonctionner sur l’événement SMTP OnEndOfData .
  • Le service de transport de boîtes aux lettres ne prend pas du tout en charge le Kit de développement logiciel (SDK). Vous ne pouvez donc pas utiliser d’agents tiers dans le service de transport de boîtes aux lettres.

Gestion de l’agent de transport

Les applets de commande de l’agent de transport doivent faire la distinction entre le service de transport et le service de transport frontal. Les applets de commande de gestion de l’Agent de transport manipulent le fichier agents.config de configuration situé à l’emplacement %ExchangeInstallPath%TransportRoles\Shared.

Pour plus d’informations, consultez Gérer les agents de transport dans Exchange Server.

Agents de transport et événements SMTP

Les agents de transport utilisent des événements SMTP. Ces événements sont déclenchés lors du déplacement de messages dans le pipeline de transport. Les événements SMTP permettent aux agents de transport d'accéder à des messages en des points spécifiques durant la conversation SMTP et durant le routage de messages dans l'organisation.

La réception SMTP existe dans le service de transport frontal sur les serveurs de boîtes aux lettres, le service de transport sur les serveurs de boîtes aux lettres et les serveurs de transport Edge et le service de livraison de transport de boîtes aux lettres sur les serveurs de boîtes aux lettres. Le catégoriseur n'existe que dans le service de transport sur les serveurs de boîtes aux lettres et les serveurs de transport Edge. Pour plus d’informations sur les services de transport et le catégoriseur, consultez Routage de courrier dans Exchange Server.

Le tableau suivant présente les événements SMTP qui donnent accès à des messages dans le pipeline de transport.

Événements de réception SMTP

Séquence Événement SMTP Description
1 OnConnectEvent Cet événement est déclenché par la connexion initiale à partir d'un hôte SMTP distant.
2 OnHeloCommand Cet événement est déclenché lorsque la HELO commande est émise par l’hôte SMTP distant.
3 OnEhloCommand Cet événement est déclenché lorsque la EHLO commande est émise par l’hôte SMTP distant.
4 OnStartTlsCommand Cet événement est déclenché lorsque la STARTTLS commande est émise par l’hôte SMTP distant.
5 OnAuthCommand Cet événement est déclenché lorsque la AUTH commande est émise par l’hôte SMTP distant.
6 OnProcessAuthentication Cet événement est déclenché lors du traitement de l'authentification avec l'hôte SMTP distant.
7 OnEndOfAuthentication Cet événement est déclenché lorsque l'hôte SMTP distant a terminé l'authentification.
8 OnXSessionParamsCommand Cet événement est déclenché lorsque la XSESSIONPARAMS commande est émise par l’hôte SMTP distant.
9 OnMailCommand Cet événement est déclenché lorsque la MAIL FROM commande est émise par l’hôte SMTP distant.
10 OnRcptToCommand Cet événement est déclenché lorsque la RCPT TO commande est émise par l’hôte SMTP distant.
11 OnDataCommand Cet événement est déclenché lorsque la DATA commande (texte) ou BDAT (données binaires) est émise par l’hôte SMTP distant.
12 OnEndOfHeaders Cet événement est déclenché lorsque l'hôte SMTP distant a terminé de soumettre les en-têtes de message électronique. Cela est indiqué par une ligne vide (<CRLF>) qui sépare les en-têtes de message et le corps du message.
13 OnProxyInboundMessage Cet événement est déclenché lorsqu’une session SMTP entrante est relayée ou transmise par le service de transport frontal au service de transport sur un serveur de boîtes aux lettres.
14 OnEndOfData Cet événement est déclenché lorsque l’hôte SMTP distant émet une commande de fin de données :
  • Pour les sessions de texte démarrées par la DATA commande , l’indicateur de fin de données est <CRLF>.<CRLF>.
  • Pour les sessions binaires démarrées par la BDAT commande , la fin de l’indicateur de données est BDAT LAST.
** OnHelpCommand Cet événement est déclenché si la HELP commande est émise par l’hôte SMTP distant.
** OnNoopCommand Cet événement est déclenché si la NOOP commande est émise par l’hôte SMTP distant.
** OnReject Cet événement est déclenché si l’hôte SMTP de réception émet un code de notification d’état de remise temporaire ou permanente (également appelé DSN, rapport de non-remise, NDR ou message de rebond) à l’hôte SMTP qui envoie.
** OnRsetCommand Cet événement est déclenché si la RSET commande est émise par l’hôte SMTP d’envoi.
15 OnDisconnectEvent Cet événement est déclenché par la déconnexion de la conversation SMTP par l'hôte SMTP de réception ou d'envoi. En règle générale, cela se produit lorsque la QUIT commande est émise par l’hôte SMTP distant.

** Ces événements peuvent survenir n’importe quand après OnConnectEvent mais avant OnDisconnectEvent.

Événements du catégoriseur

Séquence Événement du catégoriseur Description
1 OnSubmittedMessage Cet événement est déclenché lorsqu’un message arrive dans la file d’attente d’envoi dans le service transport sur le serveur Exchange de réception.
2 OnResolvedMessage Cet événement est déclenché lorsque tous les destinataires ont été résolus, mais avant que le saut suivant ait été déterminé pour chaque destinataire. L'événement de routage OnResolvedMessage permet que des événements ultérieurs remplacent le comportement de routage par défaut à l'aide de la méthode SetRoutingOverride par destinataire.
3 OnRoutedMessage Cet événement est déclenché après la catégorisation des messages, l'extension des listes de distribution et la résolution des destinataires.
4 OnCategorizedMessage Cet événement est déclenché lorsque le catégoriseur termine le traitement du message.

Priorité des agents de transport

Deux facteurs déterminent l’ordre dans lequel les agents de transport agissent sur les messages dans le pipeline de transport :

  1. L'événement SMTP où l'agent de transport est inscrit et le moment où cet événement SMTP détecte des messages.
  2. La valeur de priorité attribuée à l'agent de transport s'il y a plusieurs agents inscrits au même événement SMTP. La priorité la plus élevée est 1. Une valeur entière supérieure indique une priorité plus faible pour l'agent.

Par exemple, supposons que vous avez configuré les agents de transport suivants :

  • L'agent de transport A avec une priorité de 1 et l'agent de transport C avec une priorité de 2 sont inscrits à l'événement SMTP OnEndOfHeaders.
  • L'agent de transport B avec une priorité de 4 est inscrit à l'événement SMTP OnMailCommand.

L'agent de transport B est appliqué en premier aux messages car l'événement OnMailCommand détecte les messages avant l'événement OnEndOfHeaders. Lorsque les messages atteignent l'événement OnEndOfHeaders, l'agent de transport A est appliqué avant l'agent de transport C, car il est prioritaire (valeur entière plus faible).

Agents de transport intégrés

Exchange Server comprend de nombreux agents de transport intégrés qui fournissent des fonctionnalités telles que l’anti-courrier indésirable, les règles de transport et la journalisation. La plupart des agents de transport intégrés sur les serveurs de boîtes aux lettres Exchange sont invisibles et ne peuvent pas être gérés par les applets de commande de gestion de l’agent de transport. Pratiquement tous les agents de transport intégrés visibles et gérables se trouvent dans le service de transport sur les serveurs de boîtes aux lettres et les serveurs de transport Edge.

Les agents de transport intégrés les plus intéressants sur les serveurs de boîtes aux lettres sont décrits dans le tableau suivant. Notez qu’un grand nombre d’agents de transport invisibles et non gérables a été omis.

Agents de transport intégrés intéressants sur les serveurs de boîtes aux lettres

Nom de l’agent Gérable ? Priorité Événements SMTP ou du catégoriseur
Agent de règles de transport Oui 1 OnResolvedMessage
Agent de stratégie DLP Oui 2 OnResolvedMessage
Agent de stratégie de rétention Oui 3 OnResolvedMessage
Agent d’examen de surveillance Oui 4 OnResolvedMessage
Agent de programme malveillant Oui 5 OnSubmittedMessage
Agent de routage de messagerie texte Oui 6 OnSubmittedMessage
Agent de remise de la messagerie texte Oui 7 s/o
Agent Smtp de suppression de la sonde système Oui 8 OnEndOfHeaders
Agent de routage de suppression de la sonde système Oui 9 OnCategorizedMessage
Agent de journalisation Non Non configurable OnRoutedMessage
Agent de déchiffrement du rapport de journal Non Non configurable OnCategorizedMessage
Agent de déchiffrement RMS Non Non configurable OnSubmittedMessage
Agent de chiffrement RMS Non Non configurable OnSubmittedMessage

OnRoutedMessage

Agent de déchiffrement de protocole RMS Non Non configurable OnEndOfData

Agents de transport intégrés intéressants sur les serveurs de Transport Edge

Sur les serveurs de transport Edge, la plupart des agents de transport intégrés sont visibles et gérables par les cmdlets de gestion des agents de transport ou par d'autres cmdlets propres à des fonctionnalités.

Les agents de transport intégrés les plus intéressants sur les serveurs transport Edge sont décrits dans le tableau suivant. Notez que les agents de transport invisibles et non gérables a été omis.

Nom de l’agent Gérable ? Priorité Événements SMTP ou du catégoriseur
Agent de filtrage des connexions Oui 1 OnConnectEvent

OnMailCommand

OnRcptCommand

OnEndOfHeaders

Agent de réécriture d'adresses pour les messages entrants Oui 2 OnRcptCommand

OnEndOfHeaders

Agent d'application de règles de transport Edge Oui 3 OnEndOfData
Agent de filtrage du contenu* Oui 4 OnEndOfData
Agent d'ID de l'expéditeur* Oui 5 OnEndOfHeaders
Agent de filtrage des expéditeurs* Oui 6 OnMailCommand

OnEndOfHeaders

Agent de filtrage des destinataires Oui 7 OnRcptCommand
Agent d'analyse de protocole* Oui 8 OnConnectEvent

OnEndOfHeaders

OnEndOfData

OnReject

OnRsetCommand

OnDisconnectEvent

Agent de filtrage des pièces jointes Oui 9 OnEndOfData
Agent de réécriture d'adresses pour les messages sortants Oui 10 OnSubmittedMessage

OnRoutedMessage

* Vous pouvez également installer et configurer ces agents anti-courrier indésirable sur les serveurs de boîtes aux lettres. Pour plus d'informations, consultez la rubrique Activer le blocage du courrier indésirable sur des serveurs de boîtes aux lettres.

Dépanner les agents de transport

Pour résoudre les problèmes liés aux agents de transport, vous pouvez utiliser les fonctionnalités suivantes :

  • Get-TransportPipeline : cette applet de commande affiche les événements SMTP et les agents de transport correspondants qui rencontrent des messages sur le serveur Exchange. Pour plus d’informations, consultez Afficher les agents de transport dans le pipeline de transport dans Exchange Server.

  • Suivi de pipeline : le suivi de pipeline crée un instantané exact d’un message avant et après qu’il rencontre chaque agent de transport. Cela vous permet de rechercher un agent de transport qui fournit des résultats inattendus. Pour plus d'informations, voir Suivi du pipeline.