Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les tutoriels > Non-Officiels > Réseaux > Général > Lecture du tutoriel

Envoyer un mail avec SMTP

Avatar
Auteur : yoch
Créé : le 11/01/2008 00:12:02
Modifié : le 01/03/2008 18:23:58
Noter et commenter ce tutoriel
Imprimer ce tutoriel
Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Si vous êtes d'accord ;) , nous allons apprendre à envoyer un mail avec Telnet.

En vérité, ce chapitre est un petit peu plus corsé que les autres. :pirate: :pirate: :pirate:
Mais si vous me suivez bien, tout ira bien...
Sommaire du chapitre :
Chapitre précédent Sommaire Chapitre suivant

S'identifier

Pourquoi s'identifier ?



Bien souvent, les FAI bloquent l'utilisation anonyme de leurs serveurs mails pour éviter le spam. Je vous demande à présent d'user de votre véritable adresse mail auprès de votre Fournisseur Mail. Vous trouverez très facilement l'adresse de votre serveur SMTP sur le web (chercher par exemple ici)
Si vous avez un compte Hotmail, ou un compte avec accès sécurisé SSL ou autre (comme par exemple Gmail), il va falloir vous créer une nouvelle adresse si vous voulez continuer à suivre ce cours. Vous pouvez prendre la Poste, comme moi.

Nous allons donc devoir nous identifier :


Vous vous souvenez cette ligne ?
250-AUTH PLAIN LOGIN

Cela voulait dire que le serveur supporte l'identification de type auth plain.
Nous allons donc pouvoir nous identifier de cette manière.

Mais avant que vous appreniez cela, il faut que je vous enseigne un truc super barbare :D :
L'encodage Base64 ! :diable:

L'encodage Base64

Pourquoi ?



Les serveurs SMTP utilisent un encodage particulier pour l'identification. C'est le Base64.
Pas la peine d'essayer de comprendre à quoi ça sert, de toutes façons, c'est comme ça :p !
Ne pas confondre encodage et encryptage. Le Base64 n'est nullement sécurisé, et se décode sans aucune difficulté !

Je vous recommande chaudement ce lien pour la suite de nos exercices : http://www.paulschou.com/tools/xlate/

Le auth plain se décline sous cette forme :
\0login\0motdepasse
(\0 représente un caractère nul, ce qui va compliquer les choses).
(Note : le login est le plus souvent ce qui est écrit devant l'arobase dans votre adresse e-mail. Exemple : paul@laposte.net).

Nous allons mettre notre login et notre mot de passe dans la zone TEXT.

Perso, je vais prendre pour les exemples "paul" comme login, et "123" comme mot de passe. Qui a dit que c'est pas original ?

Cliquez sur le bouton <encode> sous la zone TEXT.

Image utilisateur

Ensuite, allez dans la zone HEX, et ajoutez 00 avant le login, et 00 avant le mot de passe (deux chiffres hexadécimaux représentent un caractère).

Image utilisateur

Cliquez sur le bouton <decode> de la zone HEX, et notez bien le résultat de la zone BASE64, en respectant la casse (Majuscules/minuscules).
Ce qui donne pour \0paul\0123 : AHBhdWwAMTIz (c'est fou ce que c'est ressemblant ! :lol: )

Image utilisateur


Félicitations messieurs-dames, ceci est votre AUTH PLAIN !
Conservez-le bien pour la suite des opérations !

Astuce : copiez ce code (Sélectionnez > Ctrl C), et vous pourrez le coller directement dans la console Telnet (clic-droit).

Authentification

S'identifier en auth plain



Revenons à notre console Telnet pour tester tout ça...

open smtp.laposte.net 25
220 mwinf8407.laposte.net ESMTP ABO ****************************
ehlo localhost
250-mwinf8407.laposte.net
250-PIPELINING
250-SIZE 17000000
250-AUTH PLAIN LOGIN
250-8BITMIME

auth plain
334
AHBhdWwAMTIz
235 2.7.0 plain authentication successfull


S'identifier en auth login



Il existe en réalité deux types d'identification, le auth login, et le auth plain.

Personnellement, j'ai dû apprendre le auth login parce que je n'arrivais pas à encoder des caractères nuls en Base64. Mais si le serveur permet le auth plain, je trouve que celui-ci est préférable, car plus court.

Vous allez devoir encoder votre login et votre mot de passe séparément en Base64 (sans caractère nul).

Le auth login se passe en deux temps :
auth login
334 VXNlcm5hbWU6
cGF1bA==
334 UGFzc3dvcmQ6
MTIz
235 plain authentication successfull


Conclusion :


Si vous avez bien reçu le code 235, c'est que c'est tout bon ! :-°

Envoi du mail

Nous pouvons enfin envoyer un mail. Tiens donc, à qui vais-je l'envoyer, moi... ? :(

Réfléchissons un peu :



Un e-mail est composé d'un expéditeur, d'un destinataire, et d'un contenu. Il va donc falloir fournir tous ces éléments au serveur.

Voici les formules magiques : :magicien:


mail from: <paul@laposte.net>
250 Ok
rcpt to: <nicolas@orange.fr>
250 OK
data
354 End data with <CR><LF>.<CR><LF>
Merci beaucoup pour ton site. Il est formidable !
.

250 Ok



Explications



On spécifie tout d'abord l'expéditeur : paul@laposte.net.
Ensuite (si le serveur répond OK), on indique le(s) destinataire(s).

Ensuite (toujours s'il est OK), vient le mot-clé : data.
C'est l'indication que le message commence.

Mais, mais... comment le serveur saura que le message se termine ?

Toujours le même qui ne comprend vraiment pas l'anglais ! :p
Tout a été prévu. Le serveur lui-même te dit : End data with <CR><LF>.<CR><LF>
Ce qui veut dire que pour lui annoncer que tu as fini, passe à la ligne, écris un point (comme ce que j'ai fait), et passe de nouveau à la ligne.

Et voilà, le message est envoyé !


Mais comment on fait pour écrire le sujet du mail ?

Bonne question !
Pour cela, après le data, on écrit :
Subject: votre sujet
... et on passe à la ligne.

Et si je veux envoyer le mail à plusieurs personnes ?

Tu peux très bien utiliser la commande rcpt to plusieurs fois d'affilée, comme ceci :
mail from: <paul@laposte.net>
250 Ok
rcpt to: <nicolas@orange.fr>
250 OK
rcpt to: <thomas@orange.fr>
250 OK


Mais, mais...j'ai reçu un OK, et le mail n'est jamais arrivé !

Dans ce cas, le mail a bien été envoyé, mais a été intercepté en cours de route pour diverses raisons (probable spam, etc.).
Je ne peux pas vraiment vous aider dans ce cas :( , mais en réfléchissant, vous trouverez peut-être la solution.
(J'ai parfois reçu un message de retour du serveur expliquant la raison de son refus.)

Si vous avez tout fini, il ne nous reste plus qu'à saluer notre cher serveur :

quit
221 Bye


Résumé en image :
Image utilisateur


Il y a même des serveurs encore plus polis que ça, croyez-moi ! :lol:

Ce qui se passe ensuite...

L'arobase, c'est quoi ?



Image utilisateur

Vous avez surement déjà remarqué qu'une adresse de courrier suit un type bien précis :

L'arobase est un caractère réservé : vous ne pouvez donc pas avoir d'adresse du genre "p@ul@laposte.net". :(

Lorsque le courrier est envoyé, le serveur SMTP vérifie le nom à droite de l'arobase. Il sait alors que le courrier doit être dirigé vers tel ou tel domaine.

Une fois que le courrier est parvenu a destination, le serveur du domaine concerné se charge d'insérer le courrier dans la boite aux lettres du destinataire, qui reçoit alors son courrier avec émerveillement ! :)

Chapitre précédent Sommaire Chapitre suivant
Auteur : yoch
Noter et commenter ce tutoriel
Imprimer ce tutoriel

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | Fil RSS | XHTML 1.0 | CSS 2.0
Édité par Simple IT SARL : Nous contacter | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 67 Zéros connectés | Requêtes SQL 9 requêtes | Temps de génération de la page : Total (SQL) 0.0806s (0.0668s)