Как видно из листинга 11.1, при использовании протокола POP сообщения идентифицируются по номерам. В данном примере на сервере присутствует лишь одно сообщение;
на это указывает строка
+OK mailbox open, 1 messages
. Номер сообщения указывается при его передаче клиенту (команда
RETR 1
) и удалении (команда
DELE 1
). Протоколом POP не предусмотрена передача части сообщения: оно должно передаваться целиком либо не передаваться вовсе. Средства определения длины сообщения, адреса отправителя и получения другой информации в данном протоколе отсутствуют. Интересующие вас характеристики письма можно узнать лишь после того, как оно будет скопировано на клиентскую машину. В данном примере объем заголовка (в котором указывается адрес отправителя, дата и другие сведения) превышает объем тела сообщения. При передаче реальных писем тело сообщения, как правило, значительно больше его заголовка.
На заметку
Анализируя заголовок письма в листинге 11.1, нетрудно заметить одну особенность, которая обеспечивает гибкость в работе почтовой системы, но в то же время затрудняет определение реального отправителя письма. В полях
From:
и
Return-Path:
указано, что отправителем письма является пользователь
ben@pangaea.edu
. Тем не менее эти поля заголовка нетрудно подделать. Кроме того, в заголовке каждого письма присутствует поле
Received:
, в котором указан сервер, использованный при получении письма, и адрес, с которого письмо попало на этот сервер. Я отправил это сообщение с одного компьютера, подключенного к моей сети, на другой компьютер; этот факт отражен в поле
Received:
. Как видно из листинга, письмо отправлено с
speaker.rodsbooks.com
и доставлено на
nessus.rodsbooks.com
. Компьютер
pangaea.edu
в передаче письма не участвовал.
Пример сеанса взаимодействия по протоколу IMAP
Как и POP, IMAP представляет собой протокол получения почты, однако IMAP позволяет использовать расширенные средства управления сообщениями. Применяя IMAP, пользователь, перед тем как копировать письма на свой компьютер, может ознакомиться с их заголовками. Наличие дополнительных возможностей предполагает реализацию дополнительных команд; таковых в IMAP-4 предусмотрено больше двадцати. (IMAP-4 является текущей версией данного протокола и использует при работе порт 143.) Пример сеанса взаимодействия по протоколу IMAP приведен в листинге 11.2. В ходе этого сеанса достигается такой же результат, как и при использовании протокола POP (листинг 11.1). Отличие лишь в том, что листинг 11.2 включает команду копирования сообщения в папку IMAP.
Листинг 11.2. Пример сеанса IMAP-4
$ telnet nessus 143
Trying 192.168.1.3...
Connected to nessus.rodsbooks.com.
Escape character is '^]' .
* OK nessus.rodsbooks.com IMAP4rev1 v12.264.phall server ready
A1 LOGIN rodsmith password
A1 OK LOGIN completed
A2 SELECT Inbox
* 1 EXISTS
* NO Trying to get mailbox lock from process 29559
* BYE nessus.rodsbooks.com IMAP4rev1 server terminating connection
A6 OK LOGOUT completed
Connection closed by foreign host.
Листинг 11.2
демонстрирует дополнительные возможности IMAP, которые отсутствуют в протоколе POP. IMAP требует от клиента передавать ему нумерованные команды, например, вместо
LOGOUT
в листинге указано
A6 LOGOUT
. Эта особенность скрыта от пользователя, так как обработка команд полностью производится клиентской программой. IMAP позволяет копировать заголовки отдельно от текста сообщений (команды
A3
и
A4
в приведенном листинге). Использование папок предполагает выбор нужной папки в ходе сеанса взаимодействия (команда
A2
), но пользователь получает возможность копировать письма из одной папки в другую (команда
A5
). В листинге 11.2 представлена лишь часть возможностей IMAP. Существует много разновидностей приведенных команд, в частности, различные способы обработки писем обеспечиваются с помощью команды
FETCH
. Дополнительные сведения о протоколе IMAP можно получить в специальных документах, один из которых находится по адресу
http://www.ietf.org/rfc/rfc2060.txt
.
Несмотря на то что рассмотрение низкоуровневых команд позволяет получить представление о работе IMAP, вам, как системному администратору, вряд ли необходимо знать детали функционирования этого протокола. Однако наличие некоторых команд оказывает влияние на конфигурацию сервера. Поскольку IMAP позволяет работать с папками, эти папки надо где-то хранить. Расположение папок зависит от используемого сервера. В настоящее время наиболее популярен сервер IMAP, разработанный в Вашингтонском университете (UW IMAP;
http://www.washington.edu/imap/
). Этот сервер хранит все папки в рабочем каталоге пользователя. Исключение составляет папка
INBOX
, которая находится в одном из стандартных каталогов, используемых почтовой системой, а именно, в
/var/spool/mail/имя_пользователя
. Когда пользователь впервые обращается к серверу IMAP, для него существует только папка
INBOX
. В процессе работы пользователь может создавать новые папки, применяя для этого соответствующие команды программы просмотра почты. Получив подобную команду, сервер UW IMAP создает каталог в рабочем каталоге пользователя. Прочие серверы используют для организации папок другие каталоги. Необходимые сведения по этому вопросу вы можете получить из документации на конкретный сервер. Выполняя администрирование системы, необходимо знать, где размещаются папки, чтобы выделить необходимое для них дисковое пространство. Это особенно важно на крупных серверах, обслуживающих большое количество пользователей, либо в тех случаях, когда пользователи хранят на сервере почтовые сообщения большого объема.