Ответы РОРЗ-сервера на отдельные команды могут составлять несколько строк. В этом случае строки разделены символами <CRLF>. Последнюю строку информационной группы завершает строка, состоящая из символа "." (код - 046) и <CRLF>, т. е. последовательность "CRLF.CRLF".
РОРЗ-сессия состоит из нескольких частей. Как только открывается TCP-соединение и РОРЗ-сервер отправляет приветствие, сессия должна быть зарегистрирована – состояние аутентификации (AUTHORIZATION state). Клиент должен зарегистрироваться в РОРЗ-сервере, т. е. ввести свой идентификатор и пароль.
После этого сервер предоставляет клиенту его почтовый ящик и открывает для данного клиента транзакцию - состояние начала транзакции обмена (TRANSACTION state). На этой стадии клиент может считать и удалить почту своего почтового ящика.
После того как клиент заканчивает работу (передает команду QUIT), сессия переходит в состояние UPDATE - завершение транзакции. В этом состоянии РОРЗ-сервер закрывает транзакцию данного клиента (на языке баз данных - операция COMMIT) и закрывает TCP-соединение.
В случае получения неизвестной, неиспользуемой или неправильной команды, РОРЗ-сервер должен ответить отрицательным состоянием индикатора.
РОРЗ-сервер может использовать в своей работе таймер контроля времени соединения. Этот таймер отсчитывает время "бездействия" ("idle") клиента в сессии от последней переданной команды. Если время сессии истекло, сервер закрывает TCP-соединение, не переходя в состояние UPDATE (иными словами, откатывает транзакцию или на языке баз данных - выполняет ROLLBACK).
2.3 Формат почтового сообщения
Формат почтового сообщения Internet определен в документе RFC-822 (Standard for ARPA Internet Text Message). Это довольно большой документ объемом в 47 страниц машинописного текста, поэтому рассмотрим формат сообщения на примерах. Почтовое сообщение состоит из трех частей: конверта, заголовка и тела сообщения. Пользователь видит только заголовок и тело сообщения. Конверт используется только программами доставки. Заголовок всегда находится перед телом сообщения и отделен от него пустой строкой. RFC-822 регламентирует содержание заголовка сообщения. Заголовок состоит из полей. Поля состоят из имени поля и содержания поля. Имя поля отделено от содержания символом ":". Минимально необходимыми являются поля Date, From и To, например:
Date: Wed May 10 18:31:21 2000
From: postcards@postcards.mail.ru
To: hetene@mail.ru
Поле Date определяет дату отправки сообщения, поле From - отправителя, а поле To – получателя(ей). Если письмо отослано по списку рассылки, то в поле To будет указан адрес почтового ящика, на который посылается текст письма для рассылки. К примеру, для рассылки анекдотов от сайта www.anekdot.ru таким ящиком является anekdot-daily@lists.cityline.ru Письма по спискам рассылки идут довольно долго и могут запоздать на сутки и более. Бывает, что при ежедневной рассылке почты письмо за текущий день не приходит, а приходит оно после письма за следующий день. То есть, если письмо должно прийти 9-го числа, то может случиться, что оно придет 10-го, 11-го числа или еще позже. Это обусловлено самой системой рассылки. Письмо может проходить через большое количество серверов и вследствие этого может опоздать. Также на это влияет и загруженность почтового сервера.
Чаще заголовок содержит дополнительные поля:
Date: Tue May 9 12:21:18 2000
From: ykovrizhnykh@online.kz
Sender: admin@online.kz
To: hetene@mail.ru
Message-ID: <4231.629.XYzi-admin@online.kz>
В данном случае поле Sender указывает, что владелец ящика ykovrizhnykh@online.kz не является автором сообщения. Он только переслал сообщение, которое получил от admin@online.kz. Поле Message-ID содержит уникальный идентификатор сообщения и используется программами доставки почты. Следующее сообщение демонстрирует все возможные поля заголовка:
Date: 16 Mon Feb 2000 16:53:33