|
|
RSET |
Отменяет удаление сообщения, отмеченного ранее командой DELE |
В протоколе POР3 определено несколько команд, но на них дается только два ответа: +OK (позитивный, аналогичен сообщению-подтверждению АСК) и -ERR (негативный, аналогичен сообщению “не подтверждено” NAK). Оба ответа подтверждают, что обращение к серверу произошло и что он вообще отвечает на команды. Как правило, за каждым ответом следует его содержательное словесное описание. Сейчас будут рассмотрены несколько типичных сеансов РОРЗ, что даст возможность уловить последовательность команд в обмене между сервером и клиентом.
Авторизация пользователя
После того, как программа установила TCP-соединение с портом протокола РОРЗ (официальный номер 110), необходимо послать команду USER с именем пользователя в качестве параметра. Если ответ сервера будет +OK, нужно послать команду PASS с паролем этого пользователя:
CLIENT: USER kcope
SERVER: +OK
CLIENT: PASS secret
SERVER: +OK kcope's maildrop has 2 messages (320 octets)
...
(B почтовом ящике kcope есть 2 сообщения (320 байтов) ...)
Транзакции РОРЗ
После того, как стадия авторизации окончена, обмен переходит на стадию транзакции. В следующих примерах демонстрируется возможный обмен сообщениями на этой стадии. Команда STAT возвращает количество сообщений и количество байтов в сообщениях:
CLIENT: STAT
SERVER: +ОК 2 320
Команда LIST (без параметра) возвращает список сообщений в почтовом ящике и их размеры:
CLIENT: LIST
SERVER: +ОК 2 messages (320 octets)
SERVER: 1 120
SERVER: 2 200
SERVER: . ...
Команда LIST с параметром возвращает информацию о заданном сообщении:
CLIENT: LIST 2
SERVER: +ОК 2 200 ...
CLIENT: LIST 3
SERVER: -ERR no such message, only 2 messages in maildrop
Команда TOP возвращает заголовок, пустую строку и первые десять строк тела сообщения:
CLIENT: TOP 10
SERVER: +OK
SERVER: <the POP3 server sends the headers of the message,
a blank line, and the first 10 lines of the message body>
(сервер POP высылает заголовки сообщений, пустую строку и первые десять строк тела сообщения)
SERVER: . ...
CLIENT: TOP 100
SERVER: -ERR no such message
Команда NOOP не возвращает никакой полезной информации, за исключением позитивного ответа сервера. Однако, позитивный ответ означает, что сервер находится в соединении с клиентом и ждет запросов:
CLIENT: NOOP
SERVER: +OK
Следующие примеры показывают, как сервер POP3 выполняет действия. Например, команда RETR извлекает сообщение с указанным номером и помещает его в буфер местного UA:
CLIENT: RETR 1
SERVER: +OK 120 octets
SERVER: <the POP3 server sends the entire message here>
(РОРЗ-сервер высылает сообщение целиком)
SERVER: .
Команда DELE отмечает сообщение, которое нужно удалить:
CLIENT: DELE 1
SERVER: +OK message 1 deleted...
(сообщение 1 удалено)
CLIENT: DELE 2
SERVER: -ERR message 2 already deleted
(сообщение 2 уже удалено)
Команда RSET снимает метки удаления со всех отмеченных ранее сообщений:
CLIENT: RSET
SERVER: +OK maildrop has 2 messages (320 octets)
(в почтовом ящике 2 сообщения (320 байтов))
Команда QUIT закрывает соединение с сервером:
CLIENT: QUIT
SERVER: +OK dewey POP3 server signing off
CLIENT: QUIT
SERVER: +OK dewey POP3 server signing off (maildrop empty)
...
CLIENT: QUIT
SERVER: +OK dewey POP3 server signing off (2 messages left) ...
Отмеченные для удаления сообщения не удаляются до тех пор, пока не выдана команда QUIT и не началась стадия обновления. В любой момент в течение сеанса клиент имеет возможность выдать команду RSET, и все отмеченные для удаления сообщения будут восстановлены.
3. Организация службы электронной почты в сети Интернет.
Основную роль в системе электронной почты играют программы трех типов:
- транспортные агенты (MTA - Mail Transport Agent),
- агенты доставки (MDA - Mail Delivery Agent),
- пользовательские агенты (MUA - Mail User Agent).
Взаимодействие этих программ и работа системы электронной почты представлены на рисунке:
Рис. 3 Организация и функционирование службы электронной почты.
Транспортный агент работает, как правило, на почтовом сервере. Транспортный агент функционирует как маршрутизатор почтовых сообщений. Его функции следующие:
- анализ и преобразование адресов и заголовков почтовых сообщений, в том числе:
- разбор списков рассылки, пседонимов, переадресации (форвардинг),
- преобразование адресов в формат другой почтовой системы, если MTA функционирует как шлюз между двумя почтовыми системами (например, между Internet Mail и Sprint Mail),
- преобразование имени почтового домена отправителя (маскарад),
- установка служебных заголовков в сообщении, отражающих его маршрут и процесс обработки;
- опрос DNS на предмет имени и адреса почтового сервера адресата сообщения;
- определение агента доставки для каждого сообщения и передача сообщения выбранному агенту доставки;
- управление очередью сообщений, отложенный и повторный вызов агентов доставки в случае невозможности немедленной доставки сообщения;
- возврат сообщений, которые по каким-либо причинам невозможно доставить по назначению.
Агент доставки производит доставку сообщения каким-либо специфическим способом. Существует несколько стандартных типов агентов доставки:
- local - письмо направлено на почтовый ящик, находящийся на этом же компьютере; доставка производится, например, добавлением содержимого сообщения в определенный файл (в Unix это файл /var/mail/почтовый_ящик).
- SMTP - письмо направлено на почтовый ящик в другом почтовом домене; доставка производится путем соединения с транспортным агентом на удаленном сервере с помощью протокола SMTP.
- prog - письмо должно быть обработано какой-либо программой; доставка производится вызовом этой программы, на вход которой подается содержимое письма.
Вообще методы доставки (и, соответственно, агенты) могут быть разнообразными: например, сохранение письма в базе данных; пересылка письма по факсу и т.д. Выбор агента доставки для каждого конкретного письма производится транспортным агентом в соответствии с заданной конфигурацией транспортного агента и адресом назначения письма.
Пользовательский агент является оболочкой пользователя для работы с электронной почтой, его функции:
- получение сообщений с почтового сервера;
- презентация, хранение, удаление и каталогизирование почтовых сообщений;
- создание нового сообщения и передача его транспортному агенту для дальнейшей обработки и доставки.
Рассмотрим работу службы электронной почты на примере (Рис 3). Пусть почтовый сервер, изображенный на рисунке, имеет адрес m.vvsu.ru и сконфигурирован для приема почты с адресами типа некто@cts.vvsu.ru. Соответственно, в базе данных DNS для зоны vvsu.ru есть запись вида
cts.vvsu.ru. IN MX 10 m.vvsu.ru.
Пусть также пользователь, изображенный на рисунке, имеет адрес ivanov@cts.vvsu.ru.
Рассмотрим входящее сообщение от bg@aquarium.ru к ivanov@cts.vvsu.ru. Сообщение поступает по сети к транспортному агенту. (Для передачи сообщений транспортному агенту по сети используется протокол SMTP). MTA, проанализировав заголовок сообщения, определяет, что оно адресовано в почтовый домен cts.vvsu.ru, который он обслуживает. В соответствии с этим выбирается агент доставки local, запускается программа этого агента и на вход ей подается текст сообщения со всеми заголовками. Агент доставки каким-то способом, не интересным для транспортного агента, производит доставку сообщения и прекращает свою работу. Транспортный агент анализирует статус выхода (exit status) программы агента доставки, по которому определяет, было ли сообщение успешно доставлено или произошла ошибка. В случае ошибки MTA формирует сообщение об ошибке, исходящее с адреса MAILER-DAEMON@m.vvsu.ru, которое будет отправлено отправителю письма (и, как правило, администратору почтового сервера по адресу postmaster@m.vvsu.ru). В случае успешного завершения работы агента доставки письмо считается доставленным получателю.
Агент доставки local (в Unix это программа mail, запущенная как "mail -d ivanov") производит доставку методом добавления содержимого письма к файлу /var/mail/ivanov (в дальнейшем для упрощения мы будем говорить о почтовом сервере под Unix, хотя при обсуждении общей организации системы электронной почты это не имеет принципиального значения).
Иванов (точнее, пользовательский агент Иванова) может получить доступ к своей почте двумя способами:
- Иванов работает на том же компьютере, где находится почтовый сервер. В этом случае MUA Иванова тривиальным образом считывает поступившее сообщение из файла /var/mail/ivanov и сохраняет его, в случае необходимости, куда-то в свой каталог для осуществления своих функций, описанных выше.
- Иванов работает на другом компьютере (точнее, Иванов не имеет возможности или желания работать на почтовом сервере). Эта ситуация наиболее типична для пользователей почты в организациях или сообществах. В этом случае для доступа к файлу /var/mail/ivanov через сеть используется протокол POP-3. На почтовом сервере запущена программа POP-сервер, а в MUA Иванова встроен POP-клиент. Так как протокол POP-3 работает поверх TCP/IP, нет никаких ограничений на местоположение компьютера Иванова.
В настоящее время получает распространение протокол IMAP-4, по существу являющийся расширенной версией протокола POP-3. Он, в частности, позволяет пользовательскому агенту каталогизировать и хранить сообщения на почтовом сервере, а не на компьютере пользователя, как это происходит при использовании POP-3. Это удобно в случае, когда Иванов не имеет постоянно закрепленного за собой компьютера - например, Иванов - студент, работающий с почтой из компьютерного класса.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
При использовании материалов активная ссылка на источник обязательна.