Опубликован: 21.11.2006 | Уровень: специалист | Доступ: платный
Лекция 6:

Протокол POP3

Команда DELE

Команда DELE используется для удаления сообщений из почтового ящика на сервере. Единственный параметр, который можно в ней задавать, — это номер сообщения, полученный с помощью команды LIST. Команда DELE физически не удаляет сообщение, она лишь помечает его для удаления. Удаление сообщения происходит лишь после корректного завершения сеанса с помощью команды QUIT (о ней немного позже). При использовании команды DELE следует быть очень осторожным. Внимательно посмотрите, правильно ли указан номер сообщения, которое вы собираетесь удалить. В листинге 6.8 показаны результаты удаления сообщения по развернутому листингу.

1 [rich&shadr-ach rich]$ telnet localhost 110
2 Trying 127.0.0.1...
3 Connected to localhost.
4 Escape character is '^]'.
5 +OK POP3 localhost v7.59 server ready
6 USER rich
7 +OK User name accepted, password please
8 PASS guitar
9 +OK Mailbox open, 3 messages
10 LIST
11 +OK Mailbox scan listing follows
12 1 377
13 2 387
14 3 396
15 .
16 DELE 1
17 +OK Message deleted
18 LIST
19 +OK Mailbox scan listing follows
20 2 387
21 3 396
22 .
23 QUIT
24 +OK Sayonara
25 Connection closed by foreign host.
26 [rich@shadrach rich]$ telnet localhost 110
27 Trying 127.0.0.1...
28 Connected to localhost.
29 Escape character is '^]'.
30 +OK POPS localhost v7.59 server ready
31 USER rich
32 +OK User name accepted, password please
33 PASS guitar
34 +OK Mailbox open, 2 messages
35 LIST
36 +OK Mailbox scan listing follows
37 1 387
38 2 396
39 .
40 QUIT
41 +OK Sayonara
42 Connection closed by foreign host.
43 [rich@shadrach rich]$
Листинг 6.8. Результаты применения команды DELE

В строке 10 клиент задает команду LIST, чтобы проверить содержимое своего почтового ящика. Строки 11–15 показывают, что в ящике находятся три сообщения. В строке 16 клиент выдает команду DELE для удаления сообщения с номером 1 (оно лишь будет помечено для удаления). В строке 17 показан ответ сервера POP3, подтверждающий совершение им действия. Теперь новый развернутый листинг почтового ящика (строки 20 и 21) показывает, что для загрузки доступны только сообщения с номерами 2 и 3. В этой точке клиент завершает сеанс с сервером POP3.

Строки 26–42 отображают еще один сеанс POP3. В этом сеансе в строке 35 еще раз выдается команда LIST. Как и раньше, сервер POP3 показывает, что в почтовом ящике находятся два сообщения. Однако, обратите внимание: в этом сеансе сервер перенумеровал сообщения. Сообщение, имевшее номер 2, получило номер 1, а сообщение с номером 3 —номер 2.

Этот пример показывает, что номера сообщений не являются постоянными величинами. Номера сообщений имеют смысл только для текущего сеанса POP3. Любая попытка клиента использовать одни и те же номера сообщений в различных сеансах, почти всегда приводит к неожиданным результатам. Команда UIDL, которую мы рассмотрим позже в этом разделе, поддерживается некоторыми серверами POP3 и используется как раз для уникальной идентификации сообщений для всех сеансов POP3.

Команда NOOP

Команда NOOP в буквальном смысле ничего не делает. При получении команды NOOP сервер POP3 лишь отправляет положительный ответ. Эта команда может использоваться для определения наличия соединения с сервером POP3. Ее можно задавать только после установления соединения и после регистрации на сервере.

Команда RSET

Команда RSET сбрасывает текущий сеанс POP3 и возвращает его к точке, когда пользователь уже прошел процедуру проверки подлинности на сервере (т.е. повторная регистрация не требуется). При этом важно помнить, что с помощью команды RSET сервер отменяет все ранее сделанные пометки об удалении. Все сообщения будут присутствовать в развернутом листинге под теми номерами, которые они имели до того, как были помечены.

Команда QUIT

Команда QUIT используется для завершения сеанса POP3. Когда сервер получает команду QUIT, то он удаляет все помеченные для удаления в течение сеанса сообщения и закрывает TCP-соединение. Если сеанс POP3 завершить до того, как клиент выдаст команду QUIT, то все помеченные для удаления сообщения будут сохранены и удаляться не будут.

Команда TOP

Команда TOP является необязательной и поддерживается не всеми серверами POP3. Эта команда весьма полезна для клиента и помогает ему получать краткое описание сообщений, которые находятся в почтовом ящике. В результате ее выполнения клиент получает стандартные поля заголовка сообщения в формате RFC 822 вместе с заданным числом строк из тела сообщения. Команда TOP требует двух обязательных параметров. Формат команды:

TOP msg n

Параметр msg — номер сообщения, полученный с помощью команды LIST, а n — целое число, которое показывает количество отображаемых строк из тела сообщения. Часто программы-клиенты прибегают к использованию этой команды, чтобы получить поле заголовка Subject:, которое они затем выводят в списке сообщений. При этом необходимость в загрузке на локальный компьютер полного текста сообщений отпадает. В листинге 6.9 представлен пример применения команды TOP.

1 [rich@shadrach rich]$ telnet localhost 110
2 Trying 127.0.0.1...
3 Connected to localhost.
4 Escape character is '^]'.
5 +OK POPS localhost v7.59 server ready
6 USER rich
7 +OK User name accepted, password please
8 PASS guitar
9 +OK Mailbox open, 5 messages
10 LIST
11 +OK Mailbox scan listing follows
12 1 387
13 2 396
14 3 374
15 4 375
16 5 383
17 .
18 TOP 1 0
19 +OK Top of message follows
20 Return-Path: <rich>
21 Received: (from rich@localhost)
22 by shadrach.smallorg.org (8.9.3/8.9.3) id MAA00496
23 for rich; Thu, 2 Sep 1999 12:35:51 -0500
24 Date: Thu, 2 Sep 1999 12:35:51 -0500
25 From: rich@shadrach.smallorg.org
26 Message-Id: <199909021735.MAA00496@shadrach.smallorg.org>
27 To: rich@shadrach.smallorg.org
28 Subject: Test message 1
29 Status: 0
30
31 .
32 TOP 4 10
33 +OK Top of message follows
34 Return-Path: <rich>
35 Received: (from rich@localhost)
36 by shadrach.smallorg.org (8.9.3/8.9.3) id NAA00588
37 for rich; Thu, 2 Sep 1999 13:32:35 -0500
38 Date: Thu, 2 Sep 1999 13:32:35 -0500
39 From: rich@shadrach.smallorg.org
40 Message-Id: <199909021832.NAA00588@shadrach.smallorg.org>
41 To: rich@shadrach.smallorg.org
42 Subject: Sample message #4
43 Status:
44
45 This is the fourth sample message.
46 .
47 QUIT
48 +OK Sayonara
49 Connection closed by foreign host.
50 [rich@shadrach rich]$
Листинг 6.9. Пример использования команды TOP

В строке 10 клиент выдает команду LIST для получения информации о номерах сообщений, содержащихся в почтовом ящике на сервере POP3. Когда клиенту известны номера сообщений, он может воспользоваться командой TOP для получения информации из заголовков сообщений. При этом заголовки сообщений должны соответствовать RFC 822. В строке 18 показано, как клиент запрашивает информацию о сообщении с номером 1, при этом строки из тела сообщения не запрашиваются. Ответ сервера показан в строках 19–31. В строке 32 клиент запрашивает 10 строк из тела сообщения номер 4. Однако поскольку тело сообщения содержит только одну строку, то сервер отвечает выводом на экран всего заголовка и тела сообщения.

Valentin Diduk
Valentin Diduk
Украина, одесса, кпи, 2010
Евгений Олабин
Евгений Олабин
Беларусь, Гродно