Отправка почты через telnet по smtp

Бывает возникает необходимость проверить работоспособность почтового сервера. Это можно сделать при помощи командной строки и команды telnet, попытаться таким образом отравить письмо.

Отправка письма через telnet без авторизации:

Запускаем консоль (командную строку) и вводим последовательность команд для отправки письма:

  • telnet адрес_сервера 25 - подключаемся к серверу
  • helo имя_хоста_с_которого_подключаетесь
  • mail from:user@domain.com - ваш почтовый ящик, с которого отправляется письмо
  • rcpt to:mail@domain2.com - ящик на который отправляется письмо
  • data
  • subject:тема письма - не обязательная команда, если ее пропустить, то письмо будет без темы
  • тут печатаем текст письма
  • текст письма может быть из множества строк
  • конец письма заканчивается одной точкой в отдельной строке
  • как в следующей строке:
  • .
  • quit - завершаем сеанс и выходит из telnet

Ниже копирую из консоли то, как я вводил команды и что получал в ответ (жирный шрифт - мои команды, курсив - ответы сервера):

telnet MailServer 25
220 domain.com.ua Microsoft ESMTP MAIL Service, Version: 42
helo
250 domain.com.ua Hello [10.10.10.111]
mail from:elims@domain.com.ua
250 2.1.0 elims@domain.com.ua....Sender OK
rcpt to:elims-test@gmail.com
250 2.1.5 elims-test@gmail.com
data
354 Start mail input; end with <CRLF>.<CRLF>
subject:тема письма
тут печатаем текст письма
текст письма может быть из множества строк
конец письма заканчивается одной точкой в отдельной строке
как в следующей строке:
.
250 2.6.0 <MailServerO5bxrj@domain.com.ua> Queued mail for delivery
quit
221 2.0.0 domain.com.ua Service closing transmission channel

подключение к узлу утеряно

Письмо отправлено, прошу заметить, без авторизации на почтовом сервере, то есть не вводили свой логин и пароль, этот сервер позволяет мне отправлять без авторизации.

Отправка письма через telnet с авторизацией:

А что если нужно авторизоваться? Сначала нам понадобится наш логин и пароль закодировать в base64-кодировку, это можно сделать например вот тут: base64.ru

Предположим что мой логин - "elimS", пароль: "MyPassword". Тогда закодированные логин и пароль будут соответственно: "ZWxpbVM=" и "TXlQYXNzd29yZA=="

Последовательность команд будет следующей (если разрешена plaintext-авторизация ):

  • telnet адрес_сервера 25 - подключаемся к серверу
  • ehlo
  • auth login
  • ZWxpbVM= - закодированный логин "elimS"
  • TXlQYXNzd29yZA== - закодированный пароль "MyPassword"
  • mail from:user@domain.com - ваш почтовый ящик, с которого отправляется письмо
  • rcpt to:mail@domain2.com - ящик на который отправляется письмо
  • data
  • subject:тема письма - не обязательная команда, если ее пропустить, то письмо будет без темы
  • тут печатаем текст письма
  • текст письма может быть из множества строк
  • конец письма заканчивается одной точкой в отдельной строке, так как в следующей строке:
  • .
  • quit - завершаем сеанс и выходит из telnet

И снова лог общения с сервером с пояснениями:

telnet MailServer 25
220 domain.com.ua Microsoft ESMTP MAIL Service, Version: 42
ehlo
250-domain.com.ua Hello [10.10.10.111] - IP адрес локального компьютера
250-TURN
250-SIZE
250-ETRN
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-8bitmime
250-BINARYMIME
250-CHUNKING
250-VRFY
250-TLS
250-STARTTLS
250-X-EXPS GSSAPI NTLM LOGIN
250-X-EXPS=LOGIN
250-AUTH GSSAPI NTLM LOGIN
250-AUTH=LOGIN
250-X-LINK2STATE
250-XEXCH50
250 OK
auth login
334 VXNlcm5hbWU6 - что значит в base64-кодировке "Username:"
ZWxpbVM=
334 UGFzc3dvcmQ6 - что значит в base64-кодировке "Password:"
TXlQYXNzd29yZA==
235 2.7.0 Authentication successful.
mail from:elims@domain.com.ua
250 2.1.0 elims@domain.com.ua....Sender OK
rcpt to:elims-test@gmail.com
250 2.1.5 elims-test@gmail.com
data
354 Start mail input; end with <CRLF>.<CRLF>
subject:тема письма
тут печатаем текст письма
текст письма может быть из множества строк
конец письма заканчивается одной точкой в отдельной строке
как в следующей строке:
.
250 2.6.0 <MailServerO5bxr@domain.com.ua> Queued mail for delivery
quit
221 2.0.0 domain.com.ua Service closing transmission channel

подключение к узлу утеряно

Вот, собственно и все.

Понравилось? =) Поделись с друзьями:

Обсуждение записи “Отправка почты через telnet по smtp”

  1. m0z0k says:

    Добрый день!
    Можно ли каким-то образом отправить нескольким получателям сообщения?

  2. Владимир Демянович (elims.org.ua) says:

    m0z0k, добрый день, да. Просто несколько раз подряд вводите команду rcpt to указывая разных получателей.

  3. Сергей says:

    Здравствуйте.
    Попробовал подключиться с помощью Telnet, но подключения не происходит — долго висит.
    подключался так «Telnet smtp.mail.ru 465» (порт 465 ,т.к. на сайте mail.ru указан он; хотя пробовал и 25).
    Так почему же не подключаюсь?

  4. Александр says:

    А как подключить эту самую авторизацию ?!

  5. фы says:

    Автор забыл упомянуть что с русской кодировкой на почте появятся крякозябры вместо тела сообщения.

Обсудить