Comment Envoyer un mail avec le smtp de gmail En ligne de commande :

Si vous ouvré votre boite email pour envoyé un mail a quelqu’un alors
Le protocole smtp est le responsable de l’acheminement de votre mail vers le destinataire souhaité .
Et si vous avez utilisé une application de gestion de mail comme thunderbird ; Outlook …
Alors pour les configure vous devrai avoir l’adresse du serveur smtp.
Celui de gmail est : smtp.gmail.com
Dans ce tutorial nous allons envoyé un mail en ligne de commande
Pour ce connecter a un serveur il existe des commandes comme telnet et netcat

www.securityforest.com/downloads/nc.exe Netcat pour Windows


Exemples :


Commande : telnet smtp.gmail.com 25
réponse : 220 mx.google.com ESMTP 10sm7932026eyz.51
Commande : nc -v smtp.gmail.com 25
Réponse :
DNS fwd/rev mismatch: gmail-smtp-msa.l.google.com != ey-in-f111.google.com
DNS fwd/rev mismatch: gmail-smtp-msa.l.google.com != ey-in-f109.google.com
gmail-smtp-msa.l.google.com [74.125.79.111] 25 (smtp) open
220 mx.google.com ESMTP 24sm8028615eyx.33


Dans ce qui suit les commandes seront en bleu et les réponse en vert.

Apres la connexion au serveur il attend que vous tapé des commandes
Il existe plusieurs commandes smtp celle qu’on va utilisé le plus sont :

HELO (ou EHLO) /* identification auprès du serveur */
AUTH LOGIN /* authentification */
MAIL FROM: /* adresse de l’expéditeur */
RCPT TO: /* adresse du destinataire */
DATA /* message a envoyé */
QUIT /* Bye Bye */

Donc la première commandes après la connexion c EHLO il faut dire bonjour au serveur
Sinon il ne répond pas , dans notre cas c sans paramètre mais on peu dire bonjour et
Donné son nom de domaine ou une IP : EHLO 193.194.89.5 ; ou EHLO usthb.dz

nc -v smtp.gmail.com 25
DNS fwd/rev mismatch: gmail-smtp-msa.l.google.com != ey-in-f111.google.com
DNS fwd/rev mismatch: gmail-smtp-msa.l.google.com != ey-in-f109.google.com
gmail-smtp-msa.l.google.com [74.125.79.111] 25 (smtp) open
220 mx.google.com ESMTP 28sm4639534eye.56
EHLO
250-mx.google.com at your service, [41.X.X.X]
250-SIZE 35651584
250-8BITMIME
250-STARTTLS
250-ENHANCEDSTATUSCODES
250 PIPELINING


Pour la suite on peu soit s’authentifié soit commencé l’envoie de mail
Avec la commande MAIL FROM : dans le cas de gmail on est obligé de
s’authentifie a l’ aides des information de son compte.
car gmail interdit les mail anonymes mais il existe des serveur qui autorise les mails
anonymes c cela qu’utilise les spammeur.
Donc la suite c :

nc -v smtp.gmail.com 25
DNS fwd/rev mismatch: gmail-smtp-msa.l.google.com != ey-in-f109.google.com
DNS fwd/rev mismatch: gmail-smtp-msa.l.google.com != ey-in-f111.google.com
gmail-smtp-msa.l.google.com [74.125.79.109] 25 (smtp) open
220 mx.google.com ESMTP 24sm8222700eyx.13
EHLO
250-mx.google.com at your service, [41.X.X.X]
250-SIZE 35651584
250-8BITMIME
250-STARTTLS
250-ENHANCEDSTATUSCODES
250 PIPELINING
AUTH LOGIN
530 5.7.0 Must issue a STARTTLS command first. 24sm8222700eyx.13
STARTTLS
220 2.0.0 Ready to start TLS
AUTH LOGIN
Apres ca la connexion est perdu

Apres avoir demandé l’authentification gmail nous répond quand doit faire
STARTTLS cad initialisé une connexion crypté.
Donc j’exécute STARTTLS puis je refais AUTH LOGIN ,
ici la connexion est rompu par
Le serveur , c normale car netcat ou telnet ne supporte pas le
SSL « connexion sécurisé »
Il existe des serveurs smtp qui n’utilise pas le SSL pour cela la commande
aurai marché et on aurai continué avec MAIL FROM : …
mais comme on veux utilisé gmail on va devoir utilisé un autre outil pour
initialisé la connexion. Sa sera openssl .
sous linux vous devrai installé le paquet openssl et sous Windows il faut le téléchargé
a l’adresse http://www.slproweb.com/products/Win32OpenSSL.html
après l’avoir installé nous pouvons reprendre se qu’on a fait mais cette fois
on initialise la connexion avec la commande :

openssl s_client -crlf -connect smtp.gmail.com:465
la Réponse du Serveur a cette commande est un peu longue car il initialise une connexion sécurisé.


Loading 'screen' into random state - done
CONNECTED(00000770)
depth=0 /C=US/ST=California/L=Mountain View/O=Google Inc/CN=smtp.gmail.com
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 /C=US/ST=California/L=Mountain View/O=Google Inc/CN=smtp.gmail.com
verify error:num=27:certificate not trusted
verify return:1
depth=0 /C=US/ST=California/L=Mountain View/O=Google Inc/CN=smtp.gmail.com
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=smtp.gmail.com
i:/C=ZA/ST=Western Cape/L=Cape Town/O=Thawte Consulting cc/OU=Certification Services Division/CN=Thawte Premium
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIDYzCCAsygAwIBAgIQUR2EgGT4+hGKEhCgLMX2sjANBgkqhk iG9w0BAQUFADCB
zjELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4gQ2FwZT ESMBAGA1UEBxMJ
Q2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3VsdGluZy BjYzEoMCYGA1UE
CxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB 8GA1UEAxMYVGhh
d3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFh lwcmVtaXVtLXNl
cnZlckB0aGF3dGUuY29tMB4XDTA3MDczMDAwMDAwMFoXDTEwMD cyOTIzNTk1OVow
aDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFj AUBgNVBAcTDU1v
dW50YWluIFZpZXcxEzARBgNVBAoTCkdvb2dsZSBJbmMxFzAVBg NVBAMTDnNtdHAu
Z21haWwuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQ D+RiG+G3Mo9Q9C
tcwDjpp6dJGifjiR5M2DbEbrsIOlth80nk5A7xstKCUfKobHkf/G9Y/DO24JP5yT
s3hWep05ybyiCmOzGL5K0zy3jIq0vOWy+4pLv2GsDjYi9mQBho bAAx3z38tTrTL+
WF4p0/Kl014+wnukIpj4MdF35rIkgQIDAQABo4GmMIGjMB0GA1UdJQQW MBQGCCsG
AQUFBwMBBggrBgEFBQcDAjBABgNVHR8EOTA3MDWgM6Axhi9odH RwOi8vY3JsLnRo
YXd0ZS5jb20vVGhhd3RlUHJlbWl1bVNlcnZlckNBLmNybDAyBg grBgEFBQcBAQQm
MCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnRoYXd0ZS5jb2 0wDAYDVR0TAQH/
BAIwADANBgkqhkiG9w0BAQUFAAOBgQBeNYOZwMVQ7bd6b4sueA kgm57Cyv2p1Xv1
52e8bLnWqd03mWgn/+TQtrwbE1E6pVuQaZJY33ILpt8IfzwVf2TGQI+M5yazZ2fC
xwArHo20iAss3MLQR8tDXWfBoH2Lk9BBsEKDRP4hp83yfpZgdY 3pinHTCbqHpsiS
v97epiiFBA==
-----END CERTIFICATE-----
subject=/C=US/ST=California/L=Mountain View/O=Google Inc/CN=smtp.gmail.com
issuer=/C=ZA/ST=Western Cape/L=Cape Town/O=Thawte Consulting cc/OU=Certification Services Division/CN=Thawte Premi
No client certificate CA names sent
SSL handshake has read 1017 bytes and written 306 bytes
New, TLSv1/SSLv3, Cipher is RC4-MD5
Server public key is 1024 bit
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1
Cipher : RC4-MD5
Session-ID: 12065D1FB37FC43409B40BDB08574584D173D71F9B614EDCB1 2FDD134F685475
Session-ID-ctx:
Master-Key: B504DAD9FC643F6E3EE2F78445BC2319A9DCDA5E2B600F6380 E9C82CD2DE4453ABE3B2C90F667FFE53A4A5A7CA17AA3D
Key-Arg : None
Start Time: 1247419198
Timeout : 300 (sec)
Verify return code: 21 (unable to verify the first certificate)
220 mx.google.com ESMTP 28sm4309376eye.36
On continue avec EHLO

EHLO
250-mx.google.com at your service, [41.X.X.X]
250-SIZE 35651584
250-8BITMIME
250-AUTH LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250 PIPELINING
AUTH LOGIN
334 VXNlcm5hbWU6
--- > ici le serveur attend l’username
La commande AUTH LOGIN cette fois marche et le serveur attend l’username
Mais la problème , est que si on écrit l’username ici par exemple : abitaf
le serveur ne va pas comprendre.

AUTH LOGIN
334 VXNlcm5hbWU6
abitaf
334 UGFzc3dvcmQ6
MotDePasse
501 5.5.2 Cannot Decode response 28sm4333059eye.26
ceci est du a ce que le serveur attend des information codé en Base64
base64 est un codage principalement utilisé pour la transmission de messages
donc nous devons convertir abitaf et MotDePasse en Base64
pour cela il existe des site pour vous aider par exemple :
http://home2.paulschou.net/tools/xlate/
dans mon cas abitaf = YWJpdGFm et MotDePasse = TW90RGVQYXNzZQ==
nous pouvons maintenant continué :


AUTH LOGIN
334 VXNlcm5hbWU6
YWJpdGFm
334 UGFzc3dvcmQ6
TW90RGVQYXNzZQ==
235 2.7.0 Accepted
Login accepté ; il est temps d’envoyé notre mail :

MAIL FROM: <abitaf@gmail.com>
250 2.1.0 OK 28sm4309376eye.36
RCPT TO: <abitaf@gmail.com>
250 2.1.5 OK 28sm4309376eye.36
DATA
354 Go ahead 28sm4309376eye.36
est ce que ta recu ce mail from telnet ???
.
250 2.0.0 OK 1247423026 28sm4309376eye.36
quit
221 2.0.0 closing connection 28sm4309376eye.36
Apres la commandes DATA le serveur attend votre message ,
Pour terminé la dernière ligne doit contenir seulement un point.
Vous pouvez aussi faire plusieurs RCPT TO : avant DATA pour envoyé un mail
A plusieurs personne.
La commande Quit termine la connexions.

Voila j’espère que se tutorial vous sera utile ;-)