Aller au menu - Aller au contenu

Icône Envoyer un mail avec SMTP

Avatar
Par Avatar yoch
Mise à jour : 26/08/2008
1 479 visites depuis 7 jours, dont 272 sur ce chapitre classé 88/786
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 :
Icône 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 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 toute façon, c'est comme ça :p !
Ne pas confondre encodage et cryptage. 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 :
  • À gauche, l'utilisateur du compte mail.
  • À droite, le fournisseur du service de messagerie.
  • Et puis l'arobase au milieu (il sert de séparateur).

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 à 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

Partager

13 commentaires pour "Envoyer un mail avec SMTP"
Note moyenne : 3.75 / 4 (20 votes)
Pseudo Commentaire
Hors ligne sitexw # Posté le 10/11/2008 à 23:12:06
By Moi
Avatar

Ville : Bretigny sur orge
Pays : France métropolitaine

Oui mais aprés je continue comme dans le tuto ?
 
Hors ligne yoch # Posté le 11/11/2008 à 19:42:59
Avatar

Ben en fait non...
Comme souligné dans le tuto, il est extrêmement difficile de "parler sécurisé" avec telnet... :(
 
Hors ligne 2become1 # Posté le 03/12/2009 à 02:08:41
Sm@il
Avatar

Salut,
Bon tuto, Bravo!
j'ai eu un pti souci pour envoyer un e-mail avec yahoo: ça marchais nickel jusqu'à ce que j'arrive a cette étape;
mail from: <bs92005>
et voila le code de l'erreur:
553 From address not verified - see http://help.yahoo.com/l/us/yahoo/mail/origin
al/manage/sendfrom-07.html
c'est quoi le problème a votre avis?

Sous Ubuntu, 99% des bugs se situent entre le clavier et la chaise de bureau...
 
Hors ligne Elem3nt # Posté le 31/03/2010 à 07:26:59
Avatar

Bon tuto mais c'est quelque fois difficile à comprendre...
Je suis sur Seven et ça a vraiment du mal à marcher =(
J'arrive m'identifier mais après quand j'écris : "mail from: <mon adresse laposte>
Il me dis 501 syntax MAIL FROM: <Address> à chaque fois...
Or c'est bien ce que je fait...
Hors ligne C00KIE # Posté le 24/02/2012 à 23:11:18
I am a delicious delicacie
Avatar

Au pire si votre SMTP vous fait ch- pour l'authentification vous utilisez mail.club-internet.fr (c'est un des rares open relays qui existe encore). :)

Tu viens de perdre 5 secondes de ta vie a lire ma signature, norage ! :p
Ca fait 10 secondes maintenant ! :p
 

Voir tous les commentaires