Se connecter à smtp.gmail.com via ligne de commande
je suis en train d'écrire une application qui envoie du courrier via un ID utilisateur et mot de passe GMail valide.
je voulais juste simuler la connexion SMTP sur ma ligne de commande Windows XP, et quand je telnet smtp.gmail.com
au port 465 - Je ne vois rien. Une fenêtre de commande vide avec le titre Telnet smtp.gmail.com
s'ouvre avec le curseur. Quand je tape EHLO
ou les commandes habituelles SMTP handshake, l'invite se ferme.
je suis incapable de comprendre ce qui se passe mal et où. J'ai essayé de me connecter au 587, Il ne se connecte pas du tout dans telnet. Quelqu'un pourrait-il préciser si je fais quelque chose de mal?
9 réponses
en utilisant Linux ou OSx, faites ce que Sorin a recommandé mais utilisez le port 465 à la place. 25 est le port SMTP générique, mais pas ce que GMail utilise. Aussi, je ne crois pas que vous voulez 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 ...
Type
HELO smtp.gmail.com
et vous recevrez:
250 mx.google.com at your service
de là, il n'est pas tout à fait comme simple comme simplement envoyer des messages SMTP parce que Gmail a des protections en place pour vous assurer que vous envoyez seulement des e-mails semblant être à partir de comptes qui vous appartiennent réellement. Au lieu de taper "Helo", utilisez "Ehlo". Je ne connais pas grand-chose au SMTP, donc je ne peux pas expliquer la différence, et je n'ai pas le temps de faire des recherches. Peut-être que quelqu'un avec plus de connaissances peut expliquer.
ensuite, tapez "auth login" et vous recevrez ce qui suit:
334 VXNlcm5hbWU6
il s'agit essentiellement du mot" Username " codé en base 64. En utilisant un encodeur de base 64 tel que celui-ci , encodez votre nom d'utilisateur et entrez-le. Faites de même pour votre mot de passe qui est demandé suivant. Vous devriez voir:
235 2.7.0 Accepted
et c'est tout, vous êtes connecté.
il y a une autre bizarrerie à surmonter si vous utilisez des terminaux OSx ou Linux. Il ne suffit pas d'appuyer sur la touche "Entrée" pour obtenir un CRLF quel SMTP doit mettre fin à un message. Vous devez utiliser "CTRL+V+ENTER". Donc, cela devrait ressembler à ce qui suit:
^M
.^M
250 2.0.0 OK
pour le terminal D'OSX:
openssl s_client -connect smtp.gmail.com:25 -starttls smtp
Gmail exigent la communication SMTP avec leur serveur pour être crypté. Bien que vous soyez en train d'ouvrir une connexion au serveur Gmail sur le port 465, malheureusement vous ne pourrez pas communiquer avec lui en clair puisque Gmail vous demande d'utiliser le cryptage STARTTLS/SSL pour la connexion.
Jadaaih, vous pouvez connecter envoyer SMTP par CURL - lien vers Curl Developer Community .
C'est Curl Client de Messagerie source .
Vérifier ce post dans lifehacker : Geek de Vivre: sauvegarder Gmail avec fetchmail . Il utilise un programme en ligne de commande. Vérifier et voir si ça aide. BTW pourquoi utilisez-vous la ligne de commande alors qu'il existe de nombreuses autres alternatives intéressantes?
tcp / 465 a été initialement prévu pour établir la couche SSL(et plus récent TLS) d'abord, et à l'intérieur de faire cleartext ou simple Vieux protocoles (smtp ici)
tcp / 587 était destiné à remplacer le port tcp/25 par défaut au début lorsque les attaques de spammeurs et de mailing de masse ont commencé il y a une dizaine d'années ou plus, mais aussi pendant ces périodes d'exploitation tristement célèbres, quand certains FAI drôles avaient des blocages sur les ports par défaut sortants (comme celui tcp/25) pour refuser leurs propres clients (AOL) pour envoyer des e-mails/spam de masse à l'époque, mais AOL-les clients ayant besoin d'utiliser des comptes de courrier alternatifs et les fournisseurs de courrier encore nécessaire d'envoyer leurs e-mails à partir de AOL-connexions internet, afin qu'ils puissent toujours se connecter à tcp/587 et faire smtp simple sur elle à l'époque.
le deal avec la façon STARTTLS de faire smtp est d'utiliser les deux ports tcp/25 et tcp/587 à l'origine en clair bien connus, et seulement lorsque la connexion initiale en clair a réussi, pour ensuite démarrer la couche TLS (ainsi STARTTLS) à partir de là, ayant une connexion sécurisée à partir de ce point.
quant au débogage de ce genre de choses peut-être via des outils en ligne de commande, par exemple pour windows il y a l'historique blat command line mailer (smtp), qui jusqu'à aujourd'hui cant do TLS (STARTTLS) de sorte qu'il ne peut utiliser smtp en clair pour envoyer ses mails.
puis il ya de nombreux projets freeware et ouvert logiciel source qui ont plus de capacités et de fonctionnalités, telles que
client smtp: mailsend @ googlecode http://code.google.com/p/mailsend/
client smtp: msmtp @ sourceforge (en rapport avec mpop ci-dessous)) http://msmtp.sourceforge.net/
client pop3: mpop @ sourceforge http://mpop.sourceforge.net/
Démarrer la session de terminal:
openssl s_client -connect smtp.gmail.com:25 -starttls smtp
la dernière ligne de la réponse doit être "250 SMTPUTF8 "
Lancer de connexion
auth login
Ce devrait revenir "334 VXNlcm5hbWU6".
"151950920 de Type" nom d'utilisateur
Tapez votre nom d'utilisateur dans l'encodage base64 (eg. echo -n 'your-username' | base64
)
Ce devrait revenir "334 UGFzc3dvcmQ6"
"151950920 de Type" mot de passe
Tapez votre mot de passe dans l'encodage base64 (par ex. echo -n 'your-password' | base64
)
Succès
vous devriez voir "235 2.7.0 Accepted" et vous êtes connecté avec succès
gmail utilise une connexion cryptée. Ainsi, même après avoir établi une connexion, vous ne pourrez pas envoyer d'e-mail. Le cryptage est un peu complexe à gérer. Essayez d'utiliser openssl à la place.
le fil ci-dessous devrait aider -
comment envoyer un e-mail en utilisant des commandes SMTP simples via Gmail?