Использование SMTP из командной строки Linux

Использование SMTP из командной строки Linux 



Для изучения протокола SMTP полезно подключится к серверу не используя почтовые клиенты. Пробуем подсоединится к серверу напрямую, например через telnet.

telnet smtp.mail.ru 25 - запуск соединения 
Trying 217.69.139.160...
Connected to smtp.mail.ru.
Escape character is '^]'.
220 smtp21.mail.ru ESMTP ready
HELO computer_name - запуск сессии
250 smtp21.mail.ru
MAIL FROM: <your_mail@mail.ru> - отправитель
250 2.0.0 OK
RCPT TO: <your_mail@mail.ru> - receipt - получатель

550 SMTP is available only with SSL or TLS connection 

На последнем шаге получим ошибку, сообщающую, что нам надо использовать TSL или SSL соединение - защищенные протоколы. Для такого подключения, воспользуемся openssl.

openssl s_client -connect smtp.mail.ru:465 -crlf
  s_client - режим клиента
  -connect smtp.mail.ru:465 - указываем сервер
  -crlf - добавляет символ возврата каретки (не использовать в windows)
...
220 smtp45.i.mail.ru ESMTP ready
HELO computer_name
250 smtp45.i.mail.ru
MAIL FROM: <your_mail@mail.ru>
250 2.0.0 OK
RCPT TO: <your_mail@mail.ru>
RENEGOTIATING

140662633555648:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:s3_pkt.c:596:

Шутка в том, что 'R' является непрозрачным управляющим символом для openssl, который вызывает процедуру создания новой защищенной сессии. Я не нашел способа, чтобы экранировать этот символ, и выходом было отправления команды в нижнем регистре.

openssl s_client -connect smtp.mail.ru:465 -crlf
...
220 smtp45.i.mail.ru ESMTP ready
HELO computer_name
250 smtp45.i.mail.ru
MAIL FROM: <your_mail@mail.ru>
250 2.0.0 OKQUIT - закрытие соединения
rctp to: <your_mail@mail.ru>
250 AcceptedПочитать:
data 

503 Administrative prohibition -- authorization required.  Users in your domain are not allowed to send email without authorization.  See http://help.mail.ru/mail-help/mailer/popsmtp for details.

Получаем ошибку авторизации. Тут мы сталкиваемся с тем, что на самом деле нам надо использовать протокол ESMPT - Extend SMTP. Для начала сессии теперь нужно использовать команду EHLO, также надо будет войти в аккаунт, через расширение SMTP-AUTH. Остальная часть остается такая-же, как в SMTP. Финальная последовательность команд:

openssl s_client -connect smtp.mail.ru:465 -crlf
...
220 smtp45.i.mail.ru ESMTP ready
EHLO computer_name
250-smtp12.mail.ru 
250-SIZE 73400320            / расширения
250-8BITMIME                 / SMTP 
250-PIPELINING               / 
250 AUTH PLAIN LOGIN XOAUTH2 - методы авторизации
AUTH LOGIN - начало авторизации
334 VXNlcm5hbWU6 - "Username:" в base64
bWFpbEBtYWlsLmNvbQ== - тут нужно ввести свой почтовый адрес в виде mail@mail.com в base64
334 UGFzc3dvcmQ6 - "Password:" в base64
cGFzc3dvcmQ= - вводится пароль в base64
235 Authentication succeeded
MAIL FROM: <your_mail@mail.ru>
250 2.0.0 OK
rctp to: <your_mail@mail.ru>
250 Accepted
data

354 Enter message, ending with "." on a line by itself
from: your_mail@mail.ru        / поля from, to и subject                         
to: your_mail@mail.ru          / нужно заполнить, чтоб письмо не попало 

subject: subject               / в спам
This is message from linux command line - текст сообщения
. - сообщение должно оканчиваться точкой
250 OK id=1XuKGZ-0005Ns-Th
QUIT - закрытие соединения

DONE

Почитать:


Комментариев нет:

Отправить комментарий