Comportement de la transmission d'e-mails dans Sun Java System Messaging Server 6 2005Q4Jeff Allison et Ned Freed, décembre 2006 Cet article traite du comportement de la transmission d'e-mails au sein de Sun Java System Messaging Server, notamment au niveau du transport et avec le paramètre La fonction de transmission de messages de Messaging Server permet de faire suivre le courrier d'un utilisateur vers une autre adresse e-mail au lieu ou en plus de l'adresse principale de cette personne. Il est primordial de bien comprendre l'implémentation de la transmission de messages de Messaging Server lors de la détection et de la résolution de problèmes de boucle, lesquels font également l'objet d'une discussion dans cet article. La transmission de messages, à l'instar de nombreuses parties d'un système de messagerie sophistiqué, s'avère plus complexe qu'elle ne le paraît. Les choix effectués en matière d'implémentation de la transmission peuvent aboutir à des comportements peu évidents au départ. Cet article tente d'illustrer certains aspects de la complexité et des ramifications de divers paramètres et options de transmission. Exemple de transmission au niveau du transportSupposons que l'utilisateur From: Alice To: Bob Subject: sample message subject Date: whenever Content-type: text/plain MIME-Version: 1.0 test message
Imaginons à présent que ce message soit envoyé au moyen du mécanisme de transmission au niveau du transport à
Cela se produit, par exemple, lorsque Ce type de transmission au niveau du transport dispose de vérifications étendues destinées à détecter et à empêcher les boucles de messages. Par conséquent, une action telle que la transmission d'un message de Il peut arriver que les boucles relatives à des transmissions au niveau du transport situées sur plusieurs systèmes ne soient pas détectées. Toutefois, comme les champs de réception ( Pour plus d'informations sur la vérification des messages .HELD, reportez-vous à la section intitulée Diagnosing and Cleaning up .HELD Messages du document Sun Java System Messaging Server 6 2005Q4 Administration Guide. Exemple de transmission SieveLe comportement d'une transmission à l'aide de l'action La complexité des scripts en langage Sieve est telle que l'analyse de détection des boucles est infaisable. Autrement dit, vous pouvez rédiger des scripts Sieve générant une boucle impossible à détecter par analyse. Cela signifie que les boucles impliquant des scripts Sieve doivent être détectées lorsqu'elles surviennent ; elles ne sont pas détectables par le biais d'une analyse statique. Cependant, l'action Pour plus d'informations sur le langage Sieve, reportez-vous à la section Sieve Filter Support du document Sun Java System Messaging Server 6 2005Q4 Administration Guide. Exemple de dépannage de boucles de messagerieL'exemple suivant s'avère pratique pour comprendre les problèmes de transmission d'e-mails. Supposons qu'un utilisateur connaisse des difficultés avec les boucles de messagerie. La première étape consiste à insérer des champs d'en-tête supplémentaires dans le message. Les normes pertinentes définissent des en-têtes dans ce but particulier : les champs de renvoi ( Resent-from: Bob Resent-to: Charlie Resent-date: whenever2 From: Alice To: Bob Subject: sample message subject Date: whenever1 Content-type: text/plain MIME-Version: 1.0 test message
Une autre solution consiste à utiliser un champ non standard tel Autre problème observé dans Messaging Server 2005Q1 (6.2), l'implémentation de la fonction
Vous avez la possibilité d'utiliser l'action
Les versions 6.3 et ultérieures de Messaging Server prendront en charge l'extension Sieve
Grâce à l'action Communications Express et langage SieveLe client Communications Express emploie une primitive Sieve de transmission différente appelée
if header :matches "Subject" "*" {
notify :method "email" :echo :options "charlie@example.com"
"auto-forwarded-1:1" "This is an auto-forwarded message";
stop;
}
Lorsque ce mécanisme est utilisé, From: Bob To: Charlie Subject: auto-forwarded-1:sample message subject Date: whenever2 Content-type: multipart/mixed; boundary=a MIME-Version: 1.0 --a content-type: text/plain This is an auto-forwarded message --a content-type: message/rfc822 From: Alice To: Bob Subject: sample message subject Date: whenever1 Content-type: text/plain MIME-Version: 1.0 test message
Cette méthode de transmission s'avère problématique. Tout d'abord, dans cette approche, il n'est plus possible de détecter de nombreux types de boucles et de les traiter efficacement. Pour quelle raison ? Parce que l'utilisation de messages imbriqués place la plupart des champs Pour tenter de gérer cette situation, un type de compteur de champs Il existe néanmoins une autre façon de détecter les boucles de notification. Bien que cette solution ne soit pas adaptée sur le long terme, elle pourrait vous aider dans l'utilisation de En utilisant l'extension mime-loop Sieve, vous pouvez obtenir un détecteur de boucle féroce capable de compter le nombre de niveaux imbriqués dans le message. La commande de base est la suivante :
if header :mime :anychild :count "gt" :comparator
"i;ascii-numeric" "MIME-Version" "20"
{
loop detected
}
Cette commande fonctionne, car Différentes approches de la transmission de messages ?La question évidente à se poser à ce stade de notre réflexion est la suivante : est-il possible d'utiliser des approches de la transmission radicalement différentes de celles évoquées précédemment ? La réponse à cette question est non : il n'existe pas d'autres approches fondamentalement différentes. Cela se comprend aisément lorsque l'on considère que les messages électroniques (e-mails) Internet se composent de trois parties : l'enveloppe, l'en-tête et le corps. Les trois classes d'approches décrites précédemment correspondent à la simple modification de l'enveloppe, à l'altération de l'enveloppe et de l'en-tête et au changement des trois paramètres à la fois. Aucun autre élément n'est modifiable. Si l'on reprend l'exemple utilisé dans cet article, imaginons que l'utilisateur ait décidé qu'il serait plus efficace d'améliorer le traitement des boucles par le produit après leur détection dans les scripts en langage Sieve générés par le client. L'utilisateur propose une solution envoyant un genre d'avis à l'administrateur du courrier dès lors qu'une boucle est détectée. Les critères d'envoi sont les suivants :
En étudiant cette requête, il apparaît clairement que l'envoi d'informations à l'administrateur du courrier est effectivement possible à l'aide de l'action Cependant, l'exécution de l'une quelconque de ces étapes enfreint l'une des règles fondamentales du routage d'e-mails : suite à la détection d'une boucle, l'activité que vous ne devez absolument pas effectuer est l'envoi de messages électroniques supplémentaires. Autrement dit, cette requête contredit totalement les conclusions que nous avons pu tirer de nos longues années d'expérience de déploiement concernant les pratiques recommandées en matière de messagerie. Lorsque des boucles sont détectées, l'action recommandée consiste à mettre de côté le message (dans Messaging Server, cela signifie convertir le message en fichier .HELD) et d'attirer dessus l'attention d'une personne capable de résoudre le problème. En outre, un problème plus subtile se pose. Même si Messaging Server est en mesure d'inclure dans une notification tout ce qu'un utilisateur souhaite, y compris des indicateurs des actions exécutées et/ou non exécutées par les règles Sieve, cela aboutit à des résultats nettement inférieurs à ceux que l'on pourrait imaginer. Le problème vient du fait que les utilisateurs modifient régulièrement leurs configurations Sieve et, lorsque cela se produit, l'inclusion d'informations actuellement incorrectes dans une notification rend en réalité plus difficile l'identification des problèmes au lieu de la faciliter. Imaginons par ailleurs qu'une boucle se crée et que la logique de détection soit déclenchée, ce qui aura pour conséquence la réception de nombreuses notifications par l'administrateur de courrier. La question est désormais la suivante : qu'est-ce que l'administrateur de courrier est censé faire ? La réponse logique serait de résoudre le problème de la boucle. Néanmoins, comme nous l'avons observé auparavant, les notifications ne facilitent pas autant qu'on le souhaiterait l'isolation du problème. Dans la plupart des cas, le plus grand défi posé par l'interruption d'une boucle n'est pas de trouver l'origine de la boucle, mais plutôt de se demander ce qui doit changer pour qu'elle disparaisse. Supposons à présent que le problème de la boucle soit résolu. Qu'en est-il des messages perdus à cause de la boucle ? Ils se trouvent dans une mauvaise boîte aux lettres. L'administrateur du courrier doit trouver ces copies, les supprimer et renvoyer les messages aux destinataires pertinents qui ne les ont pas reçus. Il n'est pas envisageable d'abandonner les messages là où ils sont arrivés, car un destinataire erroné qui les rencontrerait pourrait supposer qu'ils doivent être traités alors que cela ne devrait pas être le cas. C'est une chose de recevoir un double superflu d'un message que vous êtes censé recevoir, mais cela n'a rien à voir avec la réception d'un message qui n'aurait jamais dû vous être adressé. Étant donné qu'un utilisateur recevant accidentellement un message ne lui étant pas destiné pourrait y réagir sur le champ, l'administrateur du courrier doit pouvoir agir quasiment instantanément suite à l'envoi en boucle d'un e-mail et, bien évidemment, cela ne va pas être le cas. Une alternative aux problèmes causés par l'emploi du paramètre Informations complémentaires sur l'approche de la transmission adoptée par Communications ExpressLa génération actuelle par Communications Express d'un filtre utilisant Entre temps, si vous rencontrez des boucles de messages dans Communications Express, nous vous conseillons de laisser la fonction de transmission non opérationnelle plutôt que d'activer Unless otherwise licensed, code in all technical manuals herein (including articles, FAQs, samples) is provided under this License. |
BigAdmin SubscriptionsBigAdmin Areas
BigAdmin Sun Center
BigAdmin Topics |