Использование telnet для изучения почтовых протоколов

    Изначально прикладной протокол Telnet предназначался для получения доступа к командной строке удаленной системы. Команды, вводимые пользователем терминала, передавались серверу и выполнялись в его программной среде. Никакого шифрования данных и проверки их подлинности не предусматривалось. В результате, по своему прямому назначению, на сегодняшний день, Telnet используется как правило для работы с специализированными сетевыми устройствами, модемами, коммутаторами, маршрутизаторами и т.п, а telnet-сервер в составе операционных систем отключен по умолчанию. Для работы с удаленной командной строкой используется разработанный с учетом недостатков, присущих Telnet, более защищенный протокол SSH. Тем не менее, клиентское программное обеспечение (telnet.exe для ОС Windows) остается простым и удобным средством диагностики сетевых проблем и изучения некоторых прикладных протоколов на основе обмена текстовыми командами и данными, как, например, POP3, SMTP, FTP

При запуске стандартной утилиты командной строки telnet.exe задается имя или IP-адрес сервера и номер порта или имя службы

telnet.exe server.ru - подключение к серверу server.ru (если имя или порт не заданы - используется порт 23/TCP
telnet.exe localhost 1023 подключение к серверу localhost на порт 1023
telnet.exe 192.168.1.1 ftp подключение к службе "ftp" сервера 192.168.1.1
telnet.exe - при запуске без параметров утилита будет ожидать ввода дальнейших команд, перечень которых можно получить при вводе ? или help

    В связи с тем, что результат выполнения команды telnet, при подключении к несуществующему хосту, на слушаемый TCP-порт или наоборот, не слушаемый, сопровождается разными диагностическими сообщениями, эта утилита часто используется не по своему прямому назначению, а как средство первичной диагностики.

При использовании стандартной утилиты из дистрибутива Windows, при попытке подключиться к несуществующему хосту, или существующему, но на порт, который не "слушается" или блокируется брандмауэром, будет получено сообщение

Не удается подключиться к узлу на порт NN : сбой подключения.

Если выполнить подключение на существующий хост и на порт, принимающий входящие соединения по протоколу TCP ("слушаемый" некоторой службой TCP-порт), то результат выполнения команды может дать информацию для размышления.

Так, например, при попытке подключиться к серверу, который не поддерживает подобный TELNET, протокол обмена текстовыми сообщениями, результатом подключения будет пустой экран, и сброс подключения по инициативе сервера, сопровождающийся сообщением:

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


Картина может немного отличаться, например, при подключении к серверу Real VNC

telnet myhost 5900

вместо пустого экрана будет получен текстовый баннер сервера, позволяющий правильно его идентифицировать клиентом (VNC server protocol version - RFB 003.008)

RFB 003.008.


После нескольких нажатий ENTER сервер сбросит соединение, поскольку ожидает процедуры согласования параметров обмена с клиентом, но не смог их получить за определенное количество попыток. Результат выполнения telnet зависит от того, как реагирует сервер на непонятные ему получаемые от клиента данные. Бывают случаи, что сброс соединения не происходит, и отключиться от сервера можно, нажав комбинацию клавиш CTRL-] для возврата в командный режим telnet, и введя команду quit.

    Иная картина наблюдается когда telnet подключается к службе, которая поддерживает обмен текстовыми командами и данными. Примером могут случить почтовые серверы POP3 и SMTP. Здесь уже можно использовать полноценный обмен данными, когда в качестве клиента будет выступать не специальное программное обеспечение, а простой ввод с клавиатуры с использованием telnet.

Например, можно использовать telnet для обмена с почтовым сервером по протоколу POP3 (Post Office Protocol ver. 3). Данный протокол используется почтовыми клиентскими программами (Outlook, Outlook Express, The Bat и т.д.) для получения электронной почты, хранящейся в почтовом ящике пользователя. Это простейший протокол, в основе которого лежит обмен текстовыми сообщениями. Кроме цели изучения взаимодействия с почтовым сервером, допустим, необходимо удалить конкретное письмо из почтового ящика, без скачивания его почтовым клиентом.

Стандартно сервер POP3 ожидает входящие соединения по протоколу TCP на порт 110 ("слушает" порт tcp/110). Команда telnet для подключения к серверу, например pop.mail.ru

telnet pop.mail.ru 110

Если сервер работоспособен, в окне telnet появится его приглашение

+OK mPOP POP3 v1.1

Для доступа к почтовому ящику, нужно авторизоваться на данном почтовом сервере с помощью директив user имя пользователя и pass пароль

user vasya

После чего, сервер предложит ввести пароль:

+OK Password required for user vasya

Нужно ввести пароль

pass qwerty

Сервер сообщит результат проверки пароля:

+OK vasya@mail.ru maildrop has 10 messages (152527 octets)

Подобное сообщение означает, что авторизация выполнена успешно, и в почтовом ящике vasya@mail.ru имеются 10 полученных писем, общим объемом 152527 символов (октетов).

Для примера, с помощью telnet можно получить список сообщений директивой list:

list

В ответ на это, сервер выдаст список и размеры писем в почтовом ящике:

+OK 10 messages (152527 octets)
1 48628
      1-это порядковый номер, 48628 - размер
2 1829
3 2070
:


При необходимости можно посмотреть заголовки писем. Для этого используется команда top порядковый номер, пробел, число строк из тела сообщения

top 2 0

В ответ на это, вы увидите заголовок письма, содержащий служебную информацию об отправителе, дате отправки, обратном адресе и некоторые другие данные:

Received: from [62.141.94.151] (HELO mx1.ks.pochta.ru) by node7-1.ks.pochta.ru with QIP.RU LMTP
for vasya@mail.ru;
Fri, 08 Apr 2011 15:18:33 +0400
Received: from mx3.softkey.ru ([217.74.43.68])
: :

Для приема писем используется директива retr порядковый номер

retr 1 - принять письмо с порядковым номером 1

Для удаления письма, используется директива dele порядковый номер Например, для удаления 2-го письма из списка, полученного директивой list:

dele 2

Если удаление прошло успешно, сервер выдаст сообщение:

+OK message 2 deleted


В дополнение к данной статье:

О протоколе передачи почты SMTP. Формат электронного письма.

Оправка электронного письма из командной строки.








В начало страницы | На главную страницу


Hosted by uCoz