Для чтения и отправки электронной почты многие из вас, уважаемые читатели, пользуются специализированными почтовыми клиентами вроде TheBat, Outlook, KMail и др. Эти программы удобны, функциональны и красивы. И я не собираюсь умалять их достоинств. Сегодня речь о другом — о получении и отправке почты с помощью текстовой консоли.
Конечно, работать с почтой с помощью специального софта намного легче и удобней. Однако представьте себе следующую ситуацию. Вы подключаетесь к Сети с помощью интернет-карты или являетесь контрактным абонентом. Естественно, вы имеете почтовый ящик у собственного провайдера (а такая услуга предоставляется многими) и благополучно им пользуетесь, пока не заканчиваются деньги на карточном или контрактном счету. При этом оказывается, что ящик существует, а доступа к Сети для проверки почты уже нет. Да и деньги имеют привычку заканчиваться именно в тот момент, когда нужно срочно получить важнейшее письмо. Что остается делать? Из этой ситуации, которая, согласитесь, нередка, существует три выхода.
Выход первый. Вы покупаете новую интернет-карту или вносите деньги на контрактный счет, настраиваете подключение и благополучно забираете почту собственным почтовым клиентом. Минус этого выхода в том, что нужно сразу потратить приличную сумму на то, чтобы купить новую карточку или сделать взнос, что в наше смутное время может позволить себе далеко не каждый.
Выход второй. Вы идете к другу/подруге/соседу и слезно просите позволить вам посидеть «десять минуточек» в Интернете и читаете почту там. Минусы — друг/подруга/сосед могут отказать, почтового клиента, настроенного должным образом на ваш ящик, у них, естественно, нет, да и ваш провайдер может не предоставить интерфейс управления ящиком через web.
Выход третий. Вы идете в ближайший интернет-клуб, платите 50 копеек и десять минут сидите в Сети. За эти десять минут вы должны успеть настроить почтовый клиент на свой ящик и прочитать свое важнейшее сообщение. Правда, практика показывает, что десяти минут для этого оказывается недостаточно, да и не все интернет-кафе разрешают настраивать параметры почтовых клиентов.
Итак, тупик. Однако у каждого тупика есть лазейка между кирпичами, с помощью которой можно из него выбраться. Допустим, первый и второй выходы отпадают (ну не выдали еще стипендию бедному студенту, а все друзья/подруги/соседи разъехались на дачу/море/деревню). Остается интернет-клуб, но на настройку всех параметров почтовика не хватит пятидесяти копеек, сэкономленных на пирожке. И тут возникает вполне уместный вопрос: «А что же делать?».
Выход №4
И здесь нас сильно выручает программа с названием TELNET, которая идет в штатной поставке практически любой операционной системы, будь то Windows или Linux. Многие, имея эту программу на своем компьютере, и не подозревают, сколько скрытых талантов в ней заложено. Программа эта позволяет подключиться к любому порту любого компьютера в любой сети и, в случае наличия на этом порту определенного сервера, отправить этому серверу определенную команду. Набор команд, которые можно использовать, определяется протоколом, который используется данным сервером. И наборы эти настолько широки, что описать их в рамках этой статьи невозможно, да и не нужно (кто хочет, может почитать о стандартных протоколах на сайте ). Нас же интересуют только протоколы POP3 (Post Office Protocol — для чтения почты) и SMTP (Simple Mail Transfer Protocol — для ее отправки).
Итак, вы приходите в интернет-клуб, платите пятьдесят копеек и садитесь за компьютер (при этом предполагается, что на компьютере установлена одна из операционных систем семейства Windows или Linux). Теперь вам осталось открыть программу telnet и набрать в ней некоторую последовательность команд, которые позволят вам прочитать или отправить текстовое сообщение без использования почтовых клиентов. Уложитесь ли вы в уплаченные пятьдесят копеек — зависит только от вашей скорости набора текста. Мне, например, этого времени хватало, чтобы еще и в чате посидеть :-).
Вызвать telnet в Linux можно, используя обыкновенную текстовую консоль (Рис. 1), а в Windows — используя окошко Пуск > Выполнить (Рис. 2). Telnet — чисто консольная программа, однако в ОС Windows версий ниже 2000 она имела некоторое подобие графического интерфейса (Рис. 3).
Все команды вводятся в ответ на приглашение, которое имеет вид обыкновенного текстового курсора. Синтаксис вызова программы telnet одинаков во всех операционных системах:
telnet host port
Здесь в качестве параметра host необходимо использовать имя домена или IP-адрес искомого узла, а в качестве параметра port — порт, на котором «висит» необходимый сервис. В нашем случае в качестве параметров host и port мы будем использовать значения, указанные в таблице.
Чтение почты
А теперь давайте представим себе типичную telnet-сессию, используемую для чтения электронной почты. Все слова, которые будут находиться после двух косых линий (//) — это мои комментарии, их вводить не нужно :-).
Сначала, естественно, нужно вызвать telnet:
telnet ua.fm 110 // в качестве РОР3-сервера используем UA.FM
Далее, в случае успешного подключения, вас ожидает приветствие сервера и приглашение ввести необходимые команды, чтобы получить доступ к письмам в почтовом ящике. Ниже приведен пример telnet-сессии, используемой для чтения письма, находящегося в почтовом ящике пользователя на бесплатном почтовом сервере UA.FM. Пояснения сервера у разных провайдеров могут различаться, однако все ответы всегда начинаются с символов +ОК в случае успешного выполнения команды, и –ERR в случае ошибки. Каждая ошибка поясняется, и если вы знакомы с английским языком, то вполне можете принять меры по ее устранению. Команды, в соответствии со стандартом, нечувствительны к регистру символов, за исключением вашего пароля.
+OK CommuniGate Pro POP3 Server 3.5.9 ready // ответ сервера — сервер готов. user cosmic // ввод имени пользователя… +OK please send the PASS // ответ сервера — пользователь существует на сервере, введите пароль. pass xxxx // ввод вашего пароля… +OK 3 messages (513 bytes) // ответ сервера — пароль распознан, почтовый ящик пользователя содержит N сообщений (M байт). list // команда, выводящая список сообщений по номерам и размерам. +OK 3 messages // ответ сервера и вывод списка сообщений 1 155 2 164 3 194 . retr 1 // прочитать сообщение под номером 1… +OK 155 bytes // ответ сервера — ОК, 155 байт — и последующий вывод сообщения Return-Path: Received: from server.com [127.0.0.1] by mail.zp.ua [127.0.0.1] with ESMTP; Thu 08 Aug 2002 16:12:59 +0300 Hello, Cosmic! I glad to see you! Bye! . quit // покинуть сервер… +OK POP3 server singing off // ответ сервера — ОК, вышли…
Так выглядит примерная telnet-сессия, позволяющая прочитать почту не пользуясь почтовым клиентом. Естественно, никаких удобств (вроде смены кодировок или работы с аттачами) вам не предлагается, но прочитать обыкновенное текстовое сообщение всегда можно. Кроме указанных, вы можете также использовать команды TOP N M (N — номер сообщения, М — количество строчек сообщения, которые необходимо вывести на экран, начиная с первой) и DELE N (N — номер сообщения, которое необходимо удалить). Полный список команд и ошибок POP-сервера можно прочитать в RFC 1939 на сервере http://www.faqs.org.
Отправка почты
Было бы неправильно полагать, что telnet’ом можно пользоваться только для приемки сообщений. Как я уже говорил, telnet — это штука универсальная, и специфика ее использования зависит только от протокола, которым вы планируете пользоваться. Если протокол поддерживает определенную систему команд — добро пожаловать в telnet!
Допустим, вы хотите отослать письмо на электронный адрес cosmic@mail.zp.ua (то есть мне :-)). Откроем новую сессию telnet с помощью следующей команды:
telnet mail.zp.ua 25 // целевой SMTP-сервер — mail.zp.ua
В дальнейшем в качестве целевого SMTP-сервера вы должны использовать адрес сервера, находящийся после знака «собачки» в электронном почтовом адресе. Это, в общем, необязательно (можно послать письмо через любой SMTP-сервер, который поддерживает перенаправлание адресов —relaying), но такой способ гарантирует доставку письма получателю. Telnet-сессия с SMTP-сервером будет выглядеть примерно так:
220 mail.zp.ua ESMTP server ready // ответ сервера — сервер готов helo 217.196.214.48 // команда приветствия. Обязательный параметр — свой IP-адрес (если не знаете — идите на http://whatismyip.com). 250 mail.zp.ua greets 217.196.214.48 // ответ сервера — пользователь принят mail from: // команда — ПОЧТА ОТ:<ваше@мыло> 250 OK mail from // ответ сервера — ОК, вы приняты rcpt to: // команда — ПОЛУЧАТЕЛЬ: <мыло@получателя>, при этом сервером проверяется, существует ли такой получатель на сервере. Если не существует — выдается ошибка. 250 OK Recipient // ответ сервера — ОК, получатель существует. data // команда для начала ввода текста письма. 354 Send data. End with CRLF.CRLF // ответ сервера — вводите, закончите точкой между двумя энтерами. Subject: Hello, Cosmic! // текст письма. Hello, Cosmic! I glad to see you! Bye! . 250 OK // ответ сервера — письмо введено, готово к отправке. quit // команда разъединения 221 Service closing transmission channel // ответ сервера — разъединено
Итак, письмо введено. В теле письма вы можете использовать любые стандартные заголовки (тема, формат, кодировка и т.п.). Все команды и возможные ошибки протокола SMTP читайте в RFC 821. Пересылка письма осуществляется сразу после знака окончания тела письма (точка —. — между двумя нажатиями клавиши Enter). Естественно, опять-таки никаких удобств — кроме самого главного: письмо отправлено :-)!
С помощью telnet вы, кроме как отправить и прочитать почту, можете, например, получить web-страничку, поигравшись с командой GET после подключения к 80 порту какого-нибудь web-сервера. Кроме того, эта программа незаменима при отладке собственных серверных приложений. Так что простор для творчества велик, да и материалов в Сети по этой теме предостаточно. Дерзайте, и все у вас получится. До встречи на страницах любимого еженедельника!




