it-swarm.com.ru

Подключение к smtp.gmail.com через командную строку

Я нахожусь в процессе написания приложения, которое отправляет почту через действительный идентификатор пользователя и пароль GMail.

Я просто хотел смоделировать SMTP-соединение в моей командной строке Windows XP, и когда я telnet smtp.gmail.com на порту 465 - я ничего не вижу. Пустое командное окно с заголовком Telnet smtp.gmail.com открывается курсором. Когда я набираю EHLO или обычные команды SMTP-подтверждения, приглашение просто закрывается. 

Я не могу понять, что происходит и где. Я попытался соединиться с 587, это не соединяется в telnet вообще. Может ли кто-нибудь уточнить, если я делаю что-то не так?

35
Abhishek

Используя Linux или OSx, делайте то, что рекомендовал Сорин, но используйте вместо этого порт 465. 25 - это общий SMTP-порт, но не то, что использует GMail. Кроме того, я не верю, что вы хотите использовать -starttls smtp

openssl s_client -connect smtp.gmail.com:465

Вы должны получить много информации о сеансе SSL и ответ: 

220 mx.google.com ...

Введите 

HELO smtp.gmail.com 

и вы получите: 

250 mx.google.com at your service

Оттуда это не так просто, как отправка SMTP-сообщений, потому что в Gmail предусмотрена защита, гарантирующая, что вы отправляете электронные письма только с учетных записей, которые на самом деле принадлежат вам. Вместо того, чтобы вводить «Helo», используйте «Ehlo». Я не знаю много о SMTP, поэтому я не могу объяснить разницу, и у меня нет времени много исследовать. Возможно, кто-то с большим знанием может объяснить. 

Затем введите «auth login», и вы получите следующее: 

334 VXNlcm5hbWU6

По сути, это слово «Имя пользователя», закодированное в Base 64. Используя кодировщик Base 64, такой как этот , закодируйте свое имя пользователя и введите его. Сделайте то же самое для вашего пароля, который запрашивается следующим. Тебе следует увидеть: 

235 2.7.0 Accepted

И это все, вы вошли в систему.

Есть еще одна странность, которую нужно преодолеть, если вы используете терминалы OSx или Linux. Простое нажатие клавиши «ВВОД», по-видимому, не приводит к CRLF, который необходим SMTP для завершения сообщения. Вы должны использовать «CTRL + V + ENTER». Итак, это должно выглядеть следующим образом: 

^M
.^M
250 2.0.0 OK
47
the911s

Для терминала OSX:

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

Gmail требует SMTP-связи с их сервером для шифрования. Несмотря на то, что вы открываете соединение с сервером Gmail через порт 465, к сожалению, вы не сможете общаться с ним в незашифрованном виде, поскольку Gmail требует от вас использовать шифрование STARTTLS/SSL для соединения.

5
Jez

Jadaaih, вы можете подключить отправку SMTP через CURL - ссылку на сообщество разработчиков Curl

Это источник клиента электронной почты Curl .

4
Jasmin25

Попробуй это:

telnet smtp.gmail.com 587
3
none

первоначально tcp/465 предназначался для установления уровня SSL (и более новых TLS), а внутри - для работы с открытым текстом или простыми старыми протоколами (здесь смтп)

первоначально tcp/587 предназначался в качестве замены стандартного порта tcp/25, когда спаммеры и массовые почтовые атаки начались десять или более лет назад, но также и в те печально известные периоды AOL, когда какой-то забавный провайдер имел некоторые блоки на исходящих портах по умолчанию (например, как, например, tcp/25) для отказа своим клиентам (AOL) в массовой рассылке электронной почты/спама в то время, но клиентам AOL, которым нужно было использовать альтернативные почтовые учетные записи, и почтовым провайдерам по-прежнему необходимо было отправлять свои письма из интернет-подключений AOL. так что они все еще могут подключиться к tcp/587 и сделать простой smtp на нем тогда.

Суть способа STARTTLS в создании smtp состоит в том, чтобы использовать два хорошо известных первоначально текстовых порта tcp/25 и tcp/587, и только тогда, когда исходное соединение с открытым текстом успешно завершено, затем НАЧАТЬ уровень TLS (таким образом, STARTTLS) с этого момента, имея защищенное соединение с этого момента.

Что касается отладки такого рода вещей, возможно, с помощью инструментов командной строки, например, для окон, существует исторический почтовый программный модуль командной строки blat (smtp), который до сегодняшнего дня не может выполнять TLS (STARTTLS), поэтому он может использовать только простой текстовый smtp для отправить свои письма.

http://www.blat.net/

Кроме того, существует множество бесплатных проектов с открытым исходным кодом, которые имеют больше возможностей и возможностей, таких как

sMTP-клиент: mailsend @ googlecode http://code.google.com/p/mailsend/

sMTP-клиент: msmtp @ sourceforge (относится к mpop ниже) http://msmtp.sourceforge.net/

клиент pop3: mpop @ sourceforge http://mpop.sourceforge.net/

2
abittner

Начать сессию с терминала:

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

Последняя строка ответа должна быть «250 SMTPUTF8»

Инициировать вход в систему

auth login

Это должно вернуть "334 VXNlcm5hbWU6".

Введите имя пользователя

Введите свое имя пользователя в кодировке base64 (например, echo -n 'your-username' | base64)

Это должно вернуть "334 UGFzc3dvcmQ6"

Введите пароль

Введите свой пароль в кодировке base64 (например, echo -n 'your-password' | base64)

Успех

Вы должны увидеть «235 2.7.0 Accepted» и вы успешно вошли в систему

2
sqren

Проверьте это сообщение в lifehacker: Geek to Live: создайте резервную копию Gmail с помощью fetchmail . Он использует программу командной строки. Проверьте и посмотрите, поможет ли это. Кстати, почему вы используете командную строку, когда есть много других альтернатив Nice?

2
Shoban

gmail использует зашифрованное соединение. Таким образом, даже после того, как вы установите соединение, вы не сможете отправить любое электронное письмо. Шифрование немного сложное в управлении. Попробуйте вместо этого использовать openssl.

Тема ниже должна помочь

Как отправить электронную почту, используя простые команды SMTP через Gmail?

0
dark3viL