Dans le monde des e-mails, il existe de nombreuses facettes à tester, mais l'un des tests les plus basiques que vous pouvez effectuer consiste simplement à se connecter via telnet à un serveur SMTP donné. Cette vérification SMTP est utile pour déterminer si les problèmes les plus élémentaires existent ou non.
Le serveur est-il opérationnel ?
Y a-t-il un pare-feu bloquant la communication ?
Le serveur de messagerie permet-il le relais d'un domaine/adresse e-mail particulier ?
Quelles commandes SMTP le serveur de messagerie prend-il en charge ?
Le serveur répond-il avec le nom d'hôte correct ?
La connexion fonctionne-t-elle en dehors de tout logiciel ou API tiers ?
toutes ces questions et plus encore peuvent être répondues avec un simple test telnet.
Avant de commencer, assurez-vous d'ouvrir notre pièce compagnon à cet article : Vers Où les messages de rebond sont-ils envoyés ? dans un nouvel onglet pour que vous puissiez le lire après avoir terminé ce blog.
En note, les commandes utilisées dans les exemples suivants (ainsi que d'autres commandes) sont couvertes dans la section 4.1 de RFC 2821.
Comment envoyer un e-mail en utilisant Telnet ?
Envoyer un e-mail via telnet peut vous aider à identifier des problèmes de délivrabilité au sein de votre configuration actuelle.
Avant d'envoyer un e-mail en utilisant telnet, confirmez que telnet est à la fois installé et activé sur votre ordinateur. La plupart des ordinateurs sont préinstallés avec un client telnet. Pour les versions de Windows qui ne le sont pas, vous pouvez en installer un en ouvrant la section "Programmes et fonctionnalités" du panneau de configuration et en sélectionnant "Activer ou désactiver des fonctionnalités Windows". Avec cette fenêtre ouverte, sélectionnez "client telnet" puis cliquez sur OK.
Une fois qu'un client telnet a été vérifié comme étant installé sur le serveur, ouvrez la fenêtre de terminal où vous allez entrer vos commandes d'invite. Sur Windows, utilisez Windows + R, tapez "cmd" et appuyez sur entrée. Pour les utilisateurs de Mac, vous trouverez l'icône du terminal en ouvrant Finder et en recherchant "Utilitaires" dans la page des applications, ou en entrant "terminal" dans la fonction de recherche du Launchpad.
Ensuite, nous devons trouver un serveur de messagerie pour nous connecter. Pour cela, nous aurons besoin de l'enregistrement DNS MX pour un domaine donné. Cela peut être trouvé avec la commande suivante (pour ces exemples, port25.com sera utilisé, mais tout domaine peut être substitué) :
Windows :
nslookup -type=mx port25.com
Réponse non autoritaire :
port25.com préférence MX = 100, échangeur de courrier = mail.port25.com
Linux :
nslookup -type=mx port25.com
Réponse non autoritaire :
port25.com échangeur de courrier = 100 mail.port25.com.
SMTP utilise l'un des trois ports — 25, 465 ou 587, que Microsoft Outlook utilise couramment. Si votre relais SMTP utilise un port différent de 25 comme indiqué dans l'exemple, vous utiliserez le port spécifié par la réponse du serveur d'échange de courrier au nslookup. Vous pouvez également vérifier le port sur lequel votre SMTP repose en consultant votre administrateur ou en vous connectant au serveur d'échange de messagerie et en examinant les protocoles.
Ensuite, nous avons besoin du DNS PTR pour l'IP que nous allons utiliser. Tout d'abord, nous devons savoir quelle adresse IP Internet considère que nous possédons. Pour cela, nous pouvons utiliser un site web comme :
Avec l'adresse IP, exécutez la commande suivante, où A.B.C.D est l'adresse IP.
Windows :
nslookup -type=ptr A.B.C.D
Réponse non autoritaire :
D.C.B.A.in-addr.arpa nom = server.example.com
Linux :
nslookup -type=ptr A.B.C.D
Réponse non autoritaire :
D.C.B.A.in-addr.arpa nom = server.example.com
server.example.com n'est qu'un exemple, et vos résultats seront différents.
Donc maintenant que nous avons l'enregistrement MX pour port25.com et le PTR pour l'IP que nous allons utiliser, il est temps de se connecter au serveur SMTP. Pour ce faire, utilisez la commande suivante :
telnet mail.port25.com 25
Quelque chose de similaire à ce qui suit devrait maintenant être affiché :
Essai 69.63.149.30... Connecté à mail.port25.com (69.63.149.30). Le caractère d'échappement est '^]'. 220 mail.port25.com (PowerMTA(TM) v4.0) service ESMTP prêt
Si vous recevez un message d'erreur tel que "impossible de se connecter" à ce stade, soit le numéro de port est incorrect, soit le serveur de messagerie rencontre des problèmes.
La première commande que nous devons émettre au serveur de messagerie pour notre testeur de courriel SMTP est l'EHLO ou HELO. C'est une salutation de base qui commence la communication entre le client telnet et le serveur SMTP. Est également transmis le DNS PTR pour l'adresse IP à partir de laquelle nous nous connectons, comme déterminé précédemment.
EHLO server.example.com
Quelque chose de similaire à cela devrait être renvoyé :
250-mail.port25.com dit bonjour 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-CHUNKING 250-8BITMIME 250-XACK 250-XMRG 250-SIZE 54525952 250-VERP 250 DSN
Cela montre les commandes SMTP que le serveur SMTP accepte. Tous les serveurs SMTP ne prennent pas en charge les mêmes ensembles de commandes. Par exemple, yahoo ne montre que ce qui suit :
250-8BITMIME 250-SIZE 41943040 250 PIPELINING
Et aol n'affiche qu'une seule :
250 DSN
La prochaine commande que nous devons émettre est la commande MAIL FROM. Cela détermine l'adresse à laquelle les rebonds sont envoyés. Ce n'est pas la même chose que l'en-tête from, qui est l'adresse e-mail affichée dans un client de messagerie.
MAIL FROM: <support@port25.com> 250 2.1.0 MAIL ok
Assurez-vous d'utiliser le nom de domaine correspondant au domaine de votre serveur de messagerie. Par exemple, si le domaine de votre e-mail est anycompany.com, vous voudrez utiliser you@anycompany.com au lieu d'un e-mail externe comme you@free-mail-provider.com. Des variations dans les noms de domaine peuvent provoquer un message d'erreur.
Maintenant que la commande MAIL FROM a été envoyée, nous pouvons envoyer la commande RCPT TO . Cette commande indique au serveur de messagerie SMTP à qui le message doit être envoyé. Cela peut être le même ou différent de l'en-tête to, qui est l'adresse e-mail affichée dans le client de messagerie.
RCPT TO: <support@port25.com> 250 2.1.5 <support@port25.com> ok
Vérifiez l'adresse de votre destinataire avant d'envoyer la commande RCPT TO — un message d'erreur affiché ici peut indiquer un destinataire d'e-mail mal orthographié ou bloqué.
La dernière commande à exécuter avant de commencer le corps du message est la commande DATA . Cette commande informe le serveur de messagerie SMTP que tout le reste qui va être envoyé est le corps du message (qui contient également les en-têtes).
DATA 354 envoyer le message
Il est important de noter que si un serveur de messagerie prend en charge PIPELINING, comme le fait mail.port25.com, le serveur de messagerie SMTP peut attendre que la commande DATA soit émise avant de répondre à d'autres commandes après l'EHLO/HELO. Dans ce cas, entrez les commandes MAIL FROM, RCPT TO et DATA avant d'attendre une réponse.
Maintenant que la commande DATA a été envoyée, nous pouvons commencer à envoyer le contenu du message. Cela commence par les différents en-têtes. Au minimum, un message doit contenir un en-tête to, from, subject et date. Les en-têtes saisis ici seront affichés à l'utilisateur dans son client de messagerie.
From: "John Smith" <jsmith@port25.com> To: "Jane Doe" <jdoe@port25.com> Sujet : message test envoyé depuis une session telnet manuelle Date: Mer, 11 mai 2011 16:19:57 -0400
Avec les en-têtes définis, nous ajoutons maintenant une ligne vide avec un retour chariot/fin de ligne (il suffit d'appuyer deux fois sur entrée) et nous commençons ensuite le corps réel du message.
Bonjour à tous, Ceci est un message test envoyé depuis une session telnet manuelle. Cordialement, administrateur SMTP
Une fois le message complété, nous devons informer le serveur SMTP que nous avons terminé avec le message et que nous souhaitons que le serveur de messagerie SMTP l'accepte. Cela se fait avec un point sur une ligne à lui seul. Si, pendant la rédaction d'un message, un point sur une ligne à lui seul est nécessaire, vous devez mettre 2 points, le premier échappant au second.
. 250 2.6.0 message reçu
Si vous recevez un message d'erreur au lieu de la notification "reçu", notez les détails pertinents et contactez votre fournisseur de services de messagerie pour plus d'aide.
Enfin, la commande QUIT est envoyée pour fermer la connexion :
QUIT 221 2.0.0 mail.port25.com dit au revoir
Avec cela, le serveur de messagerie a maintenant accepté le message pour la livraison, votre test d'envoi d'e-mail telnet est terminé, et il devrait se trouver dans la boîte de réception de l'adresse RCPT TO !!!
Voici toutes les commandes sans interruption :
telnet mail.port25.com 25 Essai 69.63.149.30... Connecté à mail.port25.com (69.63.149.30). Le caractère d'échappement est '^]'. 220 mail.port25.com (PowerMTA(TM) v4.0) service ESMTP prêt EHLO server.example.com 250-mail.port25.com dit bonjour 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-CHUNKING 250-8BITMIME 250-XACK 250-XMRG 250-SIZE 54525952 250-VERP 250 DSN MAIL FROM: <support@port25.com> 250 2.1.0 MAIL ok RCPT TO: <support@port25.com> 250 2.1.5 <support@port25.com> ok DATA 354 envoyer le message From: "John Smith" <jsmith@port25.com> To: "Jane Doe" <jdoe@port25.com> Sujet : message test envoyé depuis une session telnet manuelle Date: Mer, 11 mai 2011 16:19:57 -0400 Bonjour à tous, Ceci est un message test envoyé depuis une session telnet manuelle. Cordialement, administrateur SMTP . 250 2.6.0 message reçu QUIT 221 2.0.0 mail.port25.com dit au revoir
Envoyer un e-mail en utilisant telnet vous permet de tester rapidement les capacités de connexion et à moindres frais par rapport à des équipements ou logiciels de diagnostic robustes.
Comment tester le SMTP en utilisant l'authentification Telnet ?
Maintenant que vous savez comment vérifier une connexion SMTP avec telnet, nous allons discuter des procédures d'authentification. L'authentification SMTP aide à empêcher de grandes quantités de spam d'atteindre les boîtes de réception des lecteurs, bien que tous les serveurs d'échange de messagerie ne l'exigent pas.
La principale différence dans les protocoles d'authentification modernes est la présence d'un encodage base64. Le base64 convertit les données binaires en format texte ASCII requis par les serveurs de messagerie pour une transmission de données réussie. C'est une façon de représenter vos informations d'identification de connexion — une combinaison de texte — en format numérique que l'ordinateur peut comprendre.
Vous pouvez générer votre base64 à l'aide de logiciels ou d'outils en ligne gratuits. Une fois que vous communiquez les informations au serveur de messagerie, il compare ces données avec ses enregistrements pour déterminer l'authentification.
Pour tester l'authentification SMTP via telnet, suivez les étapes suivantes :
Ouvrez le terminal et connectez-vous au serveur de messagerie en utilisant le nom du serveur telnet et la commande d'accès — mail.port25.com dans l'exemple ci-dessus.
Saluez le serveur avec EHLO ou HELO, entrez AUTH LOGIN, et attendez la réponse de l'ordinateur.
Entrez le nom d'utilisateur encodé en base64 et attendez la réponse du serveur.
Entrez le mot de passe encodé en base64, et vous devriez recevoir une réponse telle que "authentification réussie."
Poursuivez avec MAIL FROM, RCPT TO, DATA et QUIT pour envoyer votre email authentifié.