При работе с почтой по протоколу pop3 (post office protocol 3) иногда возникает необходимость производить некоторые манипуляции с сообщениями, например, просмотр заголовков, удаление и т.п., не загружая сами сообщения целиком. Чаще всего это случается тогда, когда имеют место проблемы с приемом почты, например, вследствие прихода письмем большого объема, и нужно проанализировать содержимое почтового ящика и при необходимости удалить ненужное.
В самом протоколе pop3 такая возможность предусмотрена, но, к сожалению, она реализована далеко не во всех pop3/smtp-клиентах. Но можно сделать это с помощью telnet-клиента, соединившись с портом 110 (pop3) нашего почтового сервера mail.belpak.by и введя вручную несколько несложных команд. Это не совсем удобно, но вполне по силам даже неопытному пользователю.
Например, чтобы запустить стандартного telnet-клиента операционых систем Windows95/98/NT/2000 с необходимыми параметрами, достаточно набрать в командной строке Windows (Пуск -> Выполнить)
telnet mail.belpak.by 110
и произойдет соединение с необходимым портом почтового сервера. Затем нужно войти в конкретный почтовый ящик (например, mikola, пароль - vaverka01). Данные почтового эккаунта передаются в качестве параметров команд user и pass, соответственно.
- Обращаем внимание, что команды, вводимые пользователем (в приведеном ниже примере показаны более бледно), на экране не отображаются.
|
+OK mail.belpak.by Cyrus POP3 v1.5.19 server ready user mikola +OK Name is a valid mailbox pass vaverka01 +OK Maildrop locked and ready |
Итак, мы вошли в данный почтовый ящик и получили доступ к его содержимому. Теперь посмотрим общее количество писем в ящике (команда stat) и объем каждого письма (команда list):
|
stat +OK 4 2217601 list +OK scan listing follows 1 13515 2 2195233 3 3969 4 4884 . |
Таким образом, у нас в ящике 4 письма общим объемом 2 218K. В списке, выданном командой scan каждому из них присвоен номер. В первую очередь нас бы, видимо, заинтересовало письмо №2, занимающее большую часть нашего почтового ящика: что в нем, кто его отправитель и стоит ли его принимать. Для этих целей служит команда top X Y, где X - номер письма в вышеприведенном списке, а Y - количество первых строчек тела письма, которые вы хотите просмотреть. Если Y=0, будет показана только "шапка" письма.
|
top 2 3 +OK Message follows [...] Date: Fri, 10 Aug 2001 11:54:15 +0200 From: John Doe To: mikola@mail.belpak.by Organization: Sweet Home Subject: Enjoy it! X-Mailer: SuperMail v1.3a Mime-Version: 1.0 Content-Type: application/octet-stream; name="funny.mpeg" Content-Transfer-Encoding: Base64 Content-Disposition: attachment; filename="funny.mpeg"
AAABuiEAAQAzgAUBAAABuwAMgAUBBeH/wMAg4OAuAAAB4Afc////YC4xAAGjIREAAYcBAAABsw8A tCMAUiCkAAABuAAIAEAAAAEAAA//+AAAAQE7+INRoUiLLUaFIiy1GhSIstRoUiLLUaFIiy1GhSIs tRoUiKkLajaFIioyM1BmhSIsjNQZoUiKiJK1CVoUiLJK1CVoUiLJK1CVoUiLJK1CVoUiLJK1CVoU . |
Теперь Вы имеете какие-то представления о происхождении и содержании данного письма и можете решать, стоит ли его принимать и обрабатывать. И если Вы все-таки решили удалить его, не читая, это делается командой dele X, где X, как Вы уже догадались, - номер сообщения в списке. После этого еще раз можно проверить текущее состояние ящика командой list и если остальные сообщения у Вас вопросов не вызывают, рассоединяетесь с сервером по команде quit, после чего можете работать с почтой традиционным образом:
|
dele 2 +OK message deleted list +OK scan listing follows 1 13515 3 3969 4 4884 . quit +OK |
ВОТ-49 (Прямой доступ к POP3 серверу) - 17.07.99
Введение
Многие ISP провайдеры разрешают использовать Telnet протокол для прямого доступа к вашему почтовому ящику. Это позволяет вам просмотреть и возможно удалить некоторые сообщения (например очень большого размера, неправильно отформатированные сообщения, что иногда не позволяет их загрузить или вообще использовать почтовый ящик.
От переводчика: на моей памяти такое происходило несколько раз.
Ниже приведенные инструкции действительны для программы TELNET.EXE из Win95. Для других Telnet программ и операционных систем смотрите соответствующую документацию.
В стартовом меню выберите Пуск|Выполнить... (Start, Run...) и введите следующее: telnet pop-server-name port
(Примечание: если вы запускаете Telnet из браузера, то синтаксис команды следующий: telnet://pop-server-name:port - Для MSIE 3 в связи с ошибкой не указывайте двойной слеш, то есть формат будет следующий telnet:pop-server-name:port
Проверьте установки вашего почтового сервера и номер порта, большинство серверов используют 110 как номер порта POP3 сервера.
Например:
- Prodigy Internet: telnet pop.prodigy.net 110
- AT&T Worldnet: telnet postoffice.worldnet.att.net 110
- Netcom: telnet popd.ix.netcom.com 110
При этом вы должны подсоедититься к почтовому серверу, если же этого не произошло, то проверьте следующее:
- Вы указали неверный номер порта, обычно это 110. Порт по умолчанию не работает
- Синтаксис зависит от того, как вы запустили Telnet. Для запуска из меню Пуск разделяйте параметры с помощью пробела. Из браузера с помощью двоеточия
- Для запуска из браузера, последний должен быть сконфигурирован для распознования протокола и настроен на программу Telnet. Версия MSIE для Win95 делает это автоматически. Для Netscape, и версии MSIE для Win3.1 это требуется сделать вручную. Смотрите документацию на ваш браузер.
Тем не менее необязательно запускать Telnet через браузер, вы можете запустить его вручную.
- MSIE 3 не может запустить Telnet если в в URL указаны символы "//". Просто удалите их.
Требуется разрешить локальное эхо, если вы желаете видеть введенный вами текст. Для разрешения локального эха, выполните следующее:
В программе Telnet через меню Terminal, Preferences. отметьте пункт Local Echo. Также можно разрешить запись протокола в файл: Terminal, Start Logging
После соединения, на каждую введенную вами команду сервер отвечает:
-ERR 999 message text - если команда не понравилась серверу
или:
+OK message text - если сервер принял команду
Примечание: Во время ввода команд серверу возможно вы не можете использовать клавишу "backspace" для удаления неправильно введенных символов, многие сервера не понимают этого. Они расчитаны не для работы с человеком, а для работы с почтовым клиентом, который не делает ошибок при вводе. Например если вы введете "STS(backspace)AT" обычно вы видете "STAT", но в случае POP3 сервера это не так, который просто ответит, что "STAT" неверная команда, так как сервер воспримет текст "STS(backspace)AT". Если вы сделали ошибку, то просто нажмите "Enter" не пытаясь устранять ошибку и введите текст по новому. Но если вы сделаете ошибку в командах USER или PASS, то у вас не будет второго шанса. В этом случае введите команду QUIT и запустите Telnet повторно.
От переводчика: некоторые сервера все таки позволяют ввести данные команды повторно.
Список команд
USER userid
Это должно быть самой первой командой после соединения с сервером. Введите имя вашей учетной записи на сервер (первая часть вашего e-mail адреса). Например: USER nps
PASS password
Это следующая обязательная команда после команды USER. Введите ваш e-mail пароль. Пароль вводить с соблюдением регистра букв. Для сервера малые или большие буквы являются разными.
Следующие команды могут использоваться по мере необходимости
STAT
Ответ на эту команду : +OK #msgs #bytes - где #msgs количество сообщений на сервере в вашем почтовом ящике и #bytes общее количество байтов во всех сообщениях. Например: +OK 3 345910
LIST
Ответ на эту команду выдает список строк следующего содержания, номер сообщения, и количество байтов в сообщение. Например:
+OK 3 messages
1 1205
2 305
3 344400
.
RETR msg#
Данная команда читает сообщение# (отображает его экране Telnet). Вы вероятно не захочете делать это, если только у вас не включена опция Telnet logging). Пример: RETR 2
TOP msg# #lines
Это дополнение к системе команд POP3. Не все сервера ее поддерживают. Отличие от команды RETR, в том, что выдается не все сообщение, а только указанное количество строк (#lines) для сообщения msg#. Например TOP 1 0 выдаст вам только заголовки письма номер 1, а TOP 1 5 заголовки и первые 5 строк письма номер 1.
DELE msg#
Данная команда помечает сообщение для удаления на сервере. Это единственный путь удалить поврежденное сообщение. Помеченные сообщения удаляются только после команды QUIT. Если связь с сервером прекратится до выдачи команды QUIT сервер не будет удалять никакие сообщения. Пример: DELE 3
RSET
Данная команда снимает все отметки для удаления, так что команда QUIT не удалит ранее отмеченные сообщения.
QUIT
Данная команда прекращает сеанс работы с сервером и удаляет все помеченные сообщения. Это не прекращает ваш сеанс связи с сервером провайдера, а только с почтовым сервером.
Имеются также и другие команды для POP3 серверов, информацию о которых можно найти в RFC 1939 , в данном документе описаны команды и коды ошибок.