web-dev-qa-db-fra.com

Connexion à smtp.gmail.com via la ligne de commande

Je suis en train d'écrire une application qui envoie un courrier via un ID utilisateur et un mot de passe GMail valides.

Je voulais simplement simuler la connexion SMTP sur ma ligne de commande Windows XP et lorsque je telnet smtp.gmail.com sur le port 465, je ne vois rien. Une fenêtre de commande vide avec le titre Telnet smtp.gmail.com s'ouvre avec le curseur. Lorsque je tape EHLO ou les commandes de négociation SMTP habituelles, l'invite se ferme. 

Je suis incapable de comprendre ce qui ne va pas et où. J'ai essayé de me connecter à 587, il ne se connecte pas du tout à telnet. Quelqu'un pourrait-il s'il vous plaît préciser si je fais quelque chose de mal?

35
Abhishek

Sous Linux ou OSx, suivez les recommandations de Sorin, mais utilisez plutôt le port 465. 25 est le port SMTP générique, mais pas ce que GMail utilise. De plus, je ne crois pas que vous souhaitiez utiliser -starttls smtp

openssl s_client -connect smtp.gmail.com:465

Vous devriez obtenir beaucoup d'informations sur la session SSL et la réponse: 

220 mx.google.com ...

Tapez 

HELO smtp.gmail.com 

et vous recevrez: 

250 mx.google.com at your service

À partir de là, il n’est pas aussi simple d’envoyer des messages SMTP, car Gmail dispose de protections garantissant que vous n’envoyez que des courriels semblant provenir de comptes vous appartenant. Au lieu de taper "Helo", utilisez "Ehlo". Je ne connais pas grand chose au SMTP, je ne peux donc pas expliquer la différence et je n’ai pas le temps de faire beaucoup de recherches. Peut-être que quelqu'un avec plus de connaissances peut expliquer. 

Ensuite, tapez "login auth" et vous recevrez ce qui suit: 

334 VXNlcm5hbWU6

Il s’agit essentiellement du mot "Nom d’utilisateur" codé en base 64. Vous utilisez un codeur en base 64 tel que celui-ci , pour coder votre nom d’utilisateur et le saisir. Faites la même chose pour votre mot de passe, qui est demandé ensuite. Tu devrais voir: 

235 2.7.0 Accepted

Et c'est tout, vous êtes connecté.

Si vous utilisez des terminaux OSx ou Linux, il vous reste une difficulté à surmonter. Le simple fait d'appuyer sur la touche "ENTRÉE" n'entraîne apparemment pas la création d'un CRLF dont SMTP a besoin pour mettre fin à un message. Vous devez utiliser "CTRL + V + ENTER". Donc, cela devrait ressembler à ceci: 

^M
.^M
250 2.0.0 OK
47
the911s

Pour le terminal OSX:

openssl s_client -connect smtp.gmail.com:25 -starttls smtp 
7
Sorin Buturugeanu

Gmail exige que les communications SMTP avec leur serveur soient cryptées. Bien que vous établissiez une connexion au serveur Gmail sur le port 465, vous ne pourrez malheureusement pas communiquer avec ce dernier en clair, car Gmail vous oblige à utiliser le cryptage STARTTLS/SSL pour la connexion.

5
Jez

Jadaaih, vous pouvez vous connecter envoyer SMTP via CURL - lien vers Curl Developer Community

Ceci est Source Curl Email Client .

4
Jasmin25

Essaye ça:

telnet smtp.gmail.com 587
3
none

tcp/465 était initialement destiné à établir la couche SSL (et la plus récente TLS), puis à faire des protocoles en clair ou en clair (smtp ici)

tcp/587 était destiné à remplacer le port TCP/25 par défaut initialement lorsque les spammeurs et les attaques par publipostage massif ont commencé il ya une décennie ou plus, mais aussi au cours des tristement célèbres époques AOL, où un drôle de fournisseur d’accès avait des blocs comme tcp/25) pour refuser à leurs propres clients (AOL) d’envoyer en masse des e-mails/spams à l’époque, mais les clients d’AOL devant utiliser des comptes de messagerie alternatifs et des fournisseurs de messagerie toujours nécessaires pour envoyer leurs mails depuis des connexions AOL-Internet , afin qu'ils puissent toujours se connecter à TCP/587 et faire smtp simple dessus à l'époque.

La solution STARTTLS pour utiliser smtp consiste à utiliser les deux ports tcp/25 et tcp/587 à l'origine en texte brut, et uniquement lorsque la connexion en texte clair initiale est réussie, puis à START la couche TLS (donc STARTTLS). à partir de là, ayant une connexion sécurisée à partir de ce point.

En ce qui concerne le débogage de ce genre de choses peut-être via des outils de ligne de commande, par exemple pour Windows, il y a l'historique mailer en ligne de commande blat (smtp), qui jusqu'à présent ne peut pas faire de TLS (STARTTLS), de sorte qu'il envoyer ses mails.

http://www.blat.net/

Ensuite, il existe de nombreux projets freeware et logiciels open source qui ont plus de fonctionnalités et de fonctionnalités, telles que

client smtp: mailsend @ googlecode http://code.google.com/p/mailsend/

client smtp: msmtp @ sourceforge (lié à mpop ci-dessous) http://msmtp.sourceforge.net/

client pop3: mpop @ sourceforge http://mpop.sourceforge.net/

2
abittner

Démarrer la session depuis le terminal:

openssl s_client -connect smtp.gmail.com:25 -starttls smtp

La dernière ligne de la réponse doit être "250 SMTPUTF8"

Lancer la connexion

auth login

Cela devrait renvoyer "334 VXNlcm5hbWU6".

Type nom d'utilisateur

Tapez votre nom d'utilisateur en encodage base64 (par exemple, echo -n 'your-username' | base64)

Cela devrait renvoyer "334 UGFzc3dvcmQ6"

Tapez votre mot de passe

Tapez votre mot de passe en codage base64 (par exemple, echo -n 'your-password' | base64)

Succès

Vous devriez voir "235 2.7.0 Accepted" et vous êtes connecté avec succès

2
sqren

Vérifiez ce poste dans lifehacker: Geek to Live: Sauvegardez Gmail avec fetchmail . Il utilise un programme en ligne de commande. Vérifiez et voyez si cela aide. BTW, pourquoi utilisez-vous la ligne de commande alors qu’il existe de nombreuses alternatives Nice?

2
Shoban

gmail utilise une connexion cryptée. Ainsi, même après avoir établi une connexion, vous ne pourrez envoyer aucun courrier électronique. Le cryptage est un peu complexe à gérer. Essayez plutôt d'utiliser openssl.

Le fil ci-dessous devrait aider

Comment envoyer un email en utilisant de simples commandes SMTP via Gmail?

0
dark3viL