it-swarm.com.de

Verbindung zu smtp.gmail.com über die Befehlszeile

Ich schreibe gerade eine Anwendung, die E-Mails über eine gültige GMail-Benutzer-ID und ein gültiges Kennwort sendet.

Ich wollte nur die SMTP-Verbindung auf meiner Windows XP Befehlszeile simulieren, und wenn ich smtp.gmail.com an Port 465 telnet, sehe ich nichts. Ein leeres Befehlsfenster mit dem Titel Telnet smtp.gmail.com wird mit dem Cursor geöffnet. Wenn ich EHLO oder die üblichen SMTP-Handshake-Befehle eingebe, wird die Eingabeaufforderung einfach geschlossen. 

Ich kann nicht herausfinden, was falsch läuft und wo. Ich habe versucht, eine Verbindung zu 587 herzustellen, es wird keine Verbindung in Telnet hergestellt. Könnte jemand bitte klären, ob ich etwas falsch mache?

35
Abhishek

Tun Sie unter Linux oder OSx, was Sorin empfohlen hat, verwenden Sie stattdessen Port 465. 25 ist der generische SMTP-Port, aber nicht, was GMail verwendet. Ich glaube auch nicht, dass Sie -starttls smtp verwenden wollen

openssl s_client -connect smtp.gmail.com:465

Sie sollten viele Informationen über die SSL-Sitzung und die Antwort erhalten: 

220 mx.google.com ...

Eintippen 

HELO smtp.gmail.com 

und du erhältst: 

250 mx.google.com at your service

Von dort ist es nicht ganz so einfach wie das Senden von SMTP-Nachrichten, da Google Mail über Schutzmechanismen verfügt, um sicherzustellen, dass Sie nur E-Mails senden, die scheinbar von Konten stammen, die Ihnen tatsächlich gehören. Verwenden Sie statt "Helo" "Ehlo". Ich weiß nicht viel über SMTP, daher kann ich den Unterschied nicht erklären und habe keine Zeit, viel zu recherchieren. Vielleicht kann jemand mit mehr Wissen erklären. 

Geben Sie dann "auth login" ein und Sie erhalten Folgendes: 

334 VXNlcm5hbWU6

Dies ist im Wesentlichen das in Base 64 codierte Wort "Username". Verwenden Sie einen Base 64-Encoder wie this , codieren Sie Ihren Benutzernamen und geben Sie ihn ein. Machen Sie dasselbe für Ihr Passwort, das als nächstes angefordert wird. Das solltest du sehen: 

235 2.7.0 Accepted

Und das ist es, du bist eingeloggt.

Wenn Sie OSx- oder Linux-Terminals verwenden, müssen Sie noch eine weitere Kuriosität überwinden. Das Drücken der "ENTER" -Taste führt anscheinend nicht zu einer CRLF, die SMTP zum Beenden einer Nachricht benötigt. Sie müssen "STRG + V + EINGABE" verwenden. Das sollte also wie folgt aussehen: 

^M
.^M
250 2.0.0 OK
47
the911s

Für das OSX-Terminal:

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

Für Google Mail muss die SMTP-Kommunikation mit dem Server verschlüsselt sein. Sie können zwar eine Verbindung zum Server von Google Mail an Port 465 herstellen, Sie können jedoch leider nicht im Klartext mit Gmail kommunizieren, da für Google Mail die STARTTLS/SSL-Verschlüsselung für die Verbindung erforderlich ist.

5
Jez

Jadaaih, Sie können SMTP über CURL - Link zur Curl Developer Community verbinden. 

Dies ist Curl Email Client-Quelle .

4
Jasmin25

Versuche dies:

telnet smtp.gmail.com 587
3
none

tcp/465 war ursprünglich dazu gedacht, zuerst die SSL-Schicht (und neuere TLS-Schicht) einzurichten und innen Klartext oder einfache alte Protokolle (hier smtp) zu verwenden.

tcp/587 war als Ersatz für den standardmäßigen TCP/25-Port gedacht, anfangs, als Spammer und Massenmailing-Angriffe vor einem Jahrzehnt oder mehr begannen, aber auch während dieser berüchtigten AOL-Zeitalter, wenn einige lustige ISP einige Ports auf ausgehenden Ports hatten (z B. das tcp/25), um seinen eigenen Kunden (AOL) das Versenden von E-Mails/Spam zu verweigern, aber AOL-Kunden, die alternative E-Mail-Konten und E-Mail-Anbieter verwenden mussten, mussten ihre E-Mails über AOL-Internetverbindungen senden , so dass sie sich immer noch mit tcp/587 verbinden konnten und damals einfach smtp darauf machen konnten.

Der Umgang mit der STARTTLS-Methode zum Ausführen von smtp besteht darin, die beiden bekannten ursprünglichen Klartext-Ports tcp/25 und tcp/587 zu verwenden, und nur wenn die anfängliche Klartextverbindung erfolgreich war, den TLS-Layer zu STARTEN (also STARTTLS). von da an eine gesicherte Verbindung von diesem Punkt an.

Was das Debuggen dieser Dinge anbelangt, beispielsweise über Befehlszeilen-Tools, beispielsweise für Windows gibt es den historischen blat-Befehlszeilen-Mailer (smtp), den TLS (STARTTLS) bis heute nicht verwenden kann, so dass er nur Klartext-SMTP verwenden kann Schicken Sie seine Mails.

http://www.blat.net/

Daneben gibt es zahlreiche Freeware- und Open-Source-Software-Projekte, die über mehr Funktionen und Funktionen verfügen, wie z

sMTP-Client: mailsend @ googlecode http://code.google.com/p/mailsend/

sMTP-Client: msmtp @ sourceforge (bezogen auf mpop unten) http://msmtp.sourceforge.net/

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

2
abittner

Sitzung vom Terminal aus starten:

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

Die letzte Zeile der Antwort sollte "250 SMTPUTF8" sein.

Login einleiten

auth login

Dies sollte "334 VXNlcm5hbWU6" zurückgeben.

Benutzername eingeben

Geben Sie Ihren Benutzernamen in base64-Kodierung ein (z. B. echo -n 'your-username' | base64).

Dies sollte "334 UGFzc3dvcmQ6" zurückgeben.

Passwort eingeben

Geben Sie Ihr Passwort in base64-Kodierung ein (zB echo -n 'your-password' | base64)

Erfolg

Sie sollten "235 2.7.0 Accepted" sehen und Sie sind erfolgreich angemeldet

2
sqren

Check this post in lifehacker: Geek to Live: Gmail mit fetchmail sichern . Es verwendet ein Befehlszeilenprogramm. Prüfen Sie, ob es hilft. Warum verwenden Sie die Befehlszeile, wenn es viele andere Alternativen von Nice gibt?

2
Shoban

google Mail verwendet eine verschlüsselte Verbindung. Selbst nach dem Herstellen einer Verbindung können Sie keine E-Mails senden. Die Verschlüsselung ist etwas komplex zu verwalten. Versuchen Sie es stattdessen mit openssl.

Der Thread unten sollte helfen

Wie kann ich E-Mails mit einfachen SMTP-Befehlen über Google Mail senden?

0
dark3viL