Utiliser Telnet pour tester la communication SMTP sur les serveurs Exchange

Vous pouvez utiliser Telnet pour tester la communication SMTP (Simple Mail Transfer Protocol) entre les serveurs de messagerie. SMTP est le protocole utilisé pour envoyer des messages électroniques d’un serveur de messagerie à un autre. L’utilisation de Telnet peut être utile si vous rencontrez des problèmes d’envoi ou de réception de messages, car vous pouvez envoyer manuellement des commandes SMTP à un serveur de messagerie. En retour, le serveur répondra avec des réponses qui seraient retournées dans une connexion classique. Ces résultats peuvent parfois vous aider à comprendre pourquoi vous ne pouvez pas envoyer ou recevoir des messages.

Vous pouvez utiliser Telnet pour tester la communication SMTP pour :

  • Testez le flux de messagerie à partir d’Internet dans votre organisation Exchange.

  • Testez le flux de messagerie de votre serveur Exchange vers un autre serveur de messagerie sur Internet.

Conseil

Saviez-vous qu’au lieu d’utiliser Telnet pour tester la connectivité SMTP, vous pouvez utiliser Microsoft Remote Connectivity Analyzer sur https://testconnectivity.microsoft.com/? Avec l’Analyseur de connectivité à distance, vous pouvez choisir le test de connectivité que vous souhaitez effectuer, dans ce cas, Email SMTP entrant et suivre les instructions indiquées. Il vous guidera dans les informations que vous devez entrer, exécutera le test pour vous, puis vous donnera les résultats. Essayez!

Ce qu'il faut savoir avant de commencer

  • Durée d'exécution estimée : 15 minutes

  • Les autorisations Exchange ne s'appliquent pas aux procédures de cette rubrique. Ces procédures sont effectuées dans le système d’exploitation du serveur Exchange ou d’un ordinateur client.

  • Cette rubrique vous montre comment utiliser le client Telnet, qui est inclus avec Windows. Les clients Telnet tiers peuvent avoir besoin d’une syntaxe différente de celle présentée dans cette rubrique.

  • Les étapes décrites dans cette rubrique vous montrent comment vous connecter à un serveur accessible sur Internet qui autorise les connexions anonymes à l’aide du port TCP 25. Si vous essayez de vous connecter à ce serveur à partir d’Internet, vous devez vous assurer que votre serveur Exchange est accessible à partir d’Internet sur le port TCP 25. De même, si vous essayez d’atteindre un serveur sur Internet à partir de votre serveur Exchange, vous devez vous assurer que votre serveur Exchange peut ouvrir une connexion à Internet sur le port TCP 25.

  • Vous remarquerez peut-être certains connecteurs de réception qui utilisent le port TCP 2525. Il s’agit de connecteurs de réception internes qui ne sont pas utilisés pour accepter des connexions SMTP anonymes.

  • Si vous testez une connexion sur un serveur de messagerie distant, vous devez exécuter les étapes de cette rubrique sur votre serveur Exchange. Les serveurs de messagerie distants sont souvent configurés pour s’assurer que l’adresse IP d’où provient la connexion SMTP correspond au domaine dans l’adresse e-mail de l’expéditeur.

  • Pour des informations sur les raccourcis clavier applicables aux procédures de cette rubrique, voir Raccourcis clavier dans Exchange 2013Raccourcis clavier dans le Centre d'administration Exchange.

Conseil

Vous rencontrez des difficultés ? Demandez de l'aide en participant aux forums Exchange. Visitez le forum à l'adresse : Exchange Server, Exchange Online ou Exchange Online Protection.

Étape 1 : Installer le client Telnet sur votre ordinateur

Sur la plupart des versions de Windows, vous devez installer le client Telnet avant de pouvoir l’utiliser. Pour l'installer, consultez la rubrique relative à son installation.

Étape 2 : Rechercher le nom de domaine complet ou l’adresse IP du serveur SMTP de destination

Pour vous connecter à un serveur SMTP à l’aide de Telnet sur le port 25, vous devez utiliser le nom de domaine complet (FQDN) (par exemple, mail.contoso.com) ou l’adresse IP du serveur SMTP. Si vous ne connaissez pas le nom de domaine complet ou l’adresse IP, vous pouvez utiliser l’outil en ligne de commande Nslookup pour rechercher l’enregistrement MX pour le domaine de destination.

Remarque

Les stratégies réseau peuvent vous empêcher d’utiliser l’outil Nslookup pour interroger des serveurs DNS publics sur Internet. En guise d’alternative, vous pouvez utiliser l’un des sites web de recherche DNS ou mx disponibles sur Internet.

  1. À l’invite de commandes, tapez nslookup, puis appuyez sur Entrée. Cette commande ouvre une session Nslookup.

  2. Tapez set type=mx, puis appuyez sur Entrée.

  3. Tapez le nom du domaine pour lequel vous voulez rechercher l'enregistrement MX. Par exemple, pour rechercher l’enregistrement MX pour le domaine fabrikam.com, tapez fabrikam.com., puis appuyez sur Entrée.

    Remarque

    Lorsque vous utilisez une période de fin ( . ), vous empêchez les suffixes DNS par défaut d’être ajoutés involontairement au nom de domaine.

    Le résultat de la commande ressemble à ceci :

    fabrikam.com mx preference=10, mail exchanger = mail1.fabrikam.com
    fabrikam.com mx preference=20, mail exchanger = mail2.fabrikam.com
    mail1.fabrikam.com internet address = 192.168.1.10
    mail2 fabrikam.com internet address = 192.168.1.20
    

    Vous pouvez utiliser les noms d'hôte ou adresses IP associés aux enregistrements MX comme serveur SMTP de destination. Une valeur inférieure pour la préférence (préférence = 10 vs 20) indique un serveur SMTP préféré. Plusieurs enregistrements MX et différentes valeurs de préférence sont utilisés pour l’équilibrage de charge et la tolérance de panne.

  4. Lorsque vous êtes prêt à mettre fin à la session Nslookup, tapez exit, puis appuyez sur Entrée.

Étape 3 : utiliser Telnet sur le port 25 pour tester la communication SMTP

Dans cet exemple, nous allons utiliser les valeurs suivantes. Lorsque vous exécutez les commandes sur votre serveur, remplacez ces valeurs par celles du serveur SMTP, du domaine, etc. de votre organisation.

  • Serveur SMTP de destination : mail1.fabrikam.com
  • Domaine source : contoso.com
  • Adresse de messagerie de l’expéditeur : chris@contoso.com
  • Adresse de messagerie du destinataire : kate@fabrikam.com
  • Objet du message : Test à partir de Contoso
  • Corps du message : il s’agit d’un message de test

Conseil

Les commandes du client Telnet ne respectent pas la casse. Les verbes de commande SMTP de cet exemple sont en majuscules pour plus de clarté. Vous ne pouvez pas utiliser la clé backspace dans la session Telnet après vous être connecté au serveur SMTP de destination. Si vous faites une erreur lorsque vous tapez une commande SMTP, vous devez appuyer sur Entrée, puis taper à nouveau la commande. Les commandes SMTP non reconnues ou les erreurs de syntaxe entraînent un message d’erreur semblable à celui-ci : 500 5.3.3 Unrecognized command.

  1. Ouvrez une fenêtre d’invite de commandes, tapez telnet, puis appuyez sur Entrée.

    Cette commande ouvre la session Telnet.

  2. Tapez set localecho, puis appuyez sur Entrée.

    Cette commande facultative vous permet d’afficher les caractères au fur et à mesure que vous les tapez, et cela peut être nécessaire pour certains serveurs SMTP.

  3. Tapez set logfile <filename>, puis appuyez sur Entrée.

    Cette commande facultative active la journalisation et spécifie le fichier journal de la session Telnet. Si vous spécifiez uniquement un nom de fichier, le fichier journal se trouve dans le dossier actif. Si vous spécifiez un chemin d’accès et un nom de fichier, le chemin doit se trouver sur l’ordinateur local, et vous devrez peut-être entrer le chemin d’accès et le nom de fichier au format Windows DOS 8.3 (nom court sans espace). Le chemin d’accès doit exister, mais le fichier journal est créé automatiquement.

  4. Tapez OPEN mail1.fabrikam.com 25, puis appuyez sur Entrée.

  5. Tapez EHLO contoso.com, puis appuyez sur Entrée.

  6. Tapez MAIL FROM:<chris@contoso.com>, puis appuyez sur Entrée.

  7. Tapez RCPT TO:<kate@fabrikam.com> NOTIFY=success,failure, puis appuyez sur Entrée.

    La commande NOTIFY facultative spécifie les messages de notification d’état de remise (DSN) particuliers (également appelés messages de rebond, rapports de non-remise ou NDR) que smtp doit fournir. Dans cet exemple, vous demandez un message DSN pour une remise de message réussie ou ayant échoué.

  8. Tapez DATA, puis appuyez sur Entrée.

  9. Tapez Subject: Test from Contoso, puis appuyez sur Entrée.

  10. Appuyez de nouveau sur Entrée.

    Une ligne vide est nécessaire entre le champ Subject: et le corps du message.

  11. Tapez This is a test message, puis appuyez sur Entrée.

  12. Tapez un point ( . ), puis appuyez sur Entrée.

  13. Pour vous déconnecter du serveur SMTP, tapez QUIT, puis appuyez sur Entrée.

  14. Pour fermer la session Telnet, tapez quit, puis appuyez sur Entrée.

Voici à quoi ressemble une session réussie à l’aide des étapes ci-dessus :

C:\Windows\System32> telnet
Microsoft Telnet> set localecho
Microsoft Telnet> set logfile c:\TelnetTest.txt
Microsoft Telnet> OPEN mail1.fabrikam.com 25
220 mail1.fabrikam.com Microsoft ESMTP MAIL Service ready at Fri, 5 Aug 2016 16:24:41 -0700
EHLO contoso.com
250-mail1.fabrikam.com Hello [172.16.0.5]
250-SIZE 37748736
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-STARTTLS
250-X-ANONYMOUSTLS
250-AUTH NTLM
250-X-EXPS GSSAPI NTLM
250-8BITMIME
250-BINARYMIME
250-CHUNKING
250 XRDST
MAIL FROM: <chris@contoso.com>
250 2.1.0 Sender OK
RCPT TO: <kate@fabrikam.com> NOTIFY=success,failure
250 2.1.5 Recipient OK
DATA
354 Start mail input; end with <CRLF>.<CRLF>
Subject: test

This is a test message.
.
250 2.6.0 <c89b4fcc-3ad1-4758-a1ab-1e820065d622@mail1.fabrikam.com> [InternalId=5111011082268, Hostname=mail1.fabrikam.com] Queued mail for delivery
QUIT
221 2.0.0 Service closing transmission channel

Étape 4 : Messages de réussite et d’erreur dans la session Telnet

Cette section fournit des informations sur les réponses de réussite et d’échec aux commandes utilisées dans l’exemple précédent.

Remarque

Les codes de réponse SMTP à trois chiffres définis dans RFC 5321 sont les mêmes pour tous les serveurs de messagerie SMTP, mais les descriptions de texte dans les réponses peuvent être légèrement différentes.

Codes de réponse SMTP

Les serveurs SMTP répondent à des commandes avec divers codes de réponse numériques au format x.y.z où :

  • X indique si la commande était bonne, mauvaise ou incomplète.
  • Y indique le type de réponse qui a été envoyé.
  • Z fournit des informations supplémentaires sur la commande

Lorsqu’une réponse est reçue par le serveur qui a ouvert la connexion, elle peut indiquer si le serveur distant a accepté la commande et est prêt pour la commande suivante, ou si une erreur s’est produite.

Le premier chiffre (X) est particulièrement important à comprendre, car il indique la réussite ou l’échec de la commande envoyée. Voici ses valeurs possibles et leur signification.

Code de réponse Signification
2.y.z La commande qui a été envoyée s’est terminée avec succès sur le serveur distant. Le serveur distant est prêt pour la commande suivante.
3.y.z La commande a été acceptée, mais le serveur distant a besoin d’informations supplémentaires avant que l’opération puisse être effectuée. Le serveur d’envoi doit envoyer une nouvelle commande avec les informations nécessaires.
4.y.z La commande n’a pas été acceptée par le serveur distant pour une raison qui peut être temporaire. Le serveur expéditeur doit essayer de se reconnecter ultérieurement pour voir si le serveur distant peut accepter correctement la commande. Le serveur d’envoi continuera à réessayer la connexion jusqu’à ce qu’une connexion réussie soit terminée (indiquée par un code 2.y.z) ou qu’elle échoue définitivement (indiquée par un code 5.y.z).
Un exemple d’erreur temporaire est un espace de stockage insuffisant sur le serveur distant. Une fois que de l’espace supplémentaire est disponible, le serveur distant doit être en mesure d’accepter la commande.
5.y.z La commande n’a pas été acceptée par le serveur distant pour une raison qui n’est pas récupérable. Le serveur d’envoi ne retentera pas la connexion et enverra un rapport de non-remise à l’utilisateur qui a envoyé le message.
Un message envoyé à une adresse e-mail qui n’existe pas est un exemple d’erreur irrécupérable.

Le tableau ci-dessus est basé sur les informations fournies par RFC 5321 (Simple Mail Transfer Protocol), section 4.2.1. Des informations supplémentaires, notamment des descriptions des deuxièmes (Y) et troisième (Z) des codes de réponse SMTP sont incluses dans cette section et dans les sections 4.2.2 et 4.2.3.

Commande OPEN

Réponse réussie : 220 mail1.fabrikam.com Microsoft ESMTP MAIL Service ready at <day-date-time>

Réponse d’échec : Connecting to mail1.fabrikam.com...Could not open connection to the host, on port 25: Connect failed

Raisons possibles de l’échec :

  • Le service SMTP de destination est indisponible.
  • Restrictions sur le pare-feu de destination.
  • Restrictions sur le pare-feu source.
  • Nom de domaine complet ou adresse IP incorrect pour le serveur SMTP de destination.
  • Numéro de port incorrect.

Commande EHLO

Réponse réussie : 250 mail1.fabrikam.com Hello [<sourceIPaddress>]

Réponse d’échec : 501 5.5.4 Invalid domain name

Raisons possibles de l’échec :

  • Caractères non valides dans le nom de domaine.
  • Restrictions de connexion sur le serveur SMTP de destination.

Remarque

EHLO est le verbe ESMTP (Extended Simple Message Transfer Protocol) défini dans RFC 5321. Les serveurs ESMTP peuvent annoncer leurs capacités lors de la connexion initiale. Ces fonctionnalités incluent la taille maximale des messages acceptés et les méthodes d’authentification prises en charge. HELO est l'ancien verbe SMTP défini dans RFC 821. La plupart des serveurs de messagerie SMTP prennent en charge ESMTP et EHLO. Si le serveur non Exchange auquel vous essayez de vous connecter ne prend pas en charge EHLO, vous pouvez utiliser HELO à la place.

Commande MAIL FROM

Réponse réussie : 250 2.1.0 Sender OK

Réponse d’échec : 550 5.1.7 Invalid address

Raisons possibles de l’échec : erreur de syntaxe dans l’adresse de messagerie de l’expéditeur.

Réponse d’échec : 530 5.7.1 Client was not authenticated

Raisons possibles de l’échec : le serveur de destination n’accepte pas les envois de messages anonymes. Vous recevez cette erreur si vous essayez d’utiliser Telnet pour envoyer un message directement à un serveur de boîtes aux lettres qui n’a pas de connecteur de réception configuré pour accepter des connexions anonymes.

Commande RCPT TO

Réponse réussie : 250 2.1.5 Recipient OK

Réponse d’échec : 550 5.1.1 User unknown

Raisons possibles de l’échec : le destinataire spécifié n’existe pas.