Бывает возникает необходимость проверить работоспособность почтового сервера. Это можно сделать при помощи командной строки и команды 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 подключение к узлу утеряно
Вот, собственно и все.
Добрый день!
Можно ли каким-то образом отправить нескольким получателям сообщения?
m0z0k, добрый день, да. Просто несколько раз подряд вводите команду rcpt to указывая разных получателей.
Здравствуйте.
Попробовал подключиться с помощью Telnet, но подключения не происходит — долго висит.
подключался так «Telnet smtp.mail.ru 465» (порт 465 ,т.к. на сайте mail.ru указан он; хотя пробовал и 25).
Так почему же не подключаюсь?
А как подключить эту самую авторизацию ?!
Автор забыл упомянуть что с русской кодировкой на почте появятся крякозябры вместо тела сообщения.