Использование SMTP из командной строки Linux
Для изучения протокола SMTP полезно подключится к серверу не используя почтовые клиенты. Пробуем подсоединится к серверу напрямую, например через telnet.
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:" в base64cGFzc3dvcmQ= - вводится пароль в 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
Почитать:
Комментариев нет:
Отправить комментарий