Интернет-почта сегодняшнего дня
В предыдущем номере мы рассмотрели работу почтовых серверов. Многие, наверное, подумали что это представляет интерес в основном для администраторов, которые и так с этим знакомы. Обычный же пользователь имеет дело в крайнем случае с почтовым клиентом на UNIX-машине. К тому же большинство пользователей работают под Windows, и сам компьютер не является сервером. Однако все получают и отправляют почту. И именно такому удаленному способу работы с почтой посвящена наша статья.
Итак, о чем же идет речь. Есть почтовый сервер, скажем, один на компанию, где имеются почтовые ящики всех сотрудников. Это удобно, иначе у всех была бы почта типа user@mycomputer.company.com, а так у всех адреса типа user@company.com. Все должны свою почту читать. Существует четыре способа прочтения почты с одного сервера:
- Непосредственный доступ или, что равнозначно, терминальный удаленный доступ.
- Использование протокола POP (Post Office Protocol).
- Использование протокола IMAP (Internet Message Access Protocol).
- Создание чего-то наподобие Web-почты.
Но обо всем по порядку. Первый способ прост, давно известен и довольно примитивен. В этом случае вы получаете доступ к серверу, что уже не очень хорошо с точки зрения безопасности. И это все, более вы не получаете ничего. У пользователя нет ни связи со своим компьютером, ни возможности увидеть в письмах картинки. Для того чтобы перенести файл на свой компьютер, нужно использовать ftp или SAMBA. Все это выглядит громоздко и неудобно. Как такая схема работает, ясно и без объяснений, но все же мы упоминаем этот метод для полноты картины.
Второй и третий способы похожи друг на друга, но радикально отличаются от первого. В общих чертах идея такова: программа-клиент обращается к серверу, на котором запущены соответствующее серверное приложение, или демон. Он обрабатывает запрос к серверу, в ходе которого происходит авторизация пользователя, и выполняет требования клиента. Протоколы POP и IMAP предназначены для работы с почтовыми ящиками пользователя и отличаются набором функций манипуляции сообщениями. Именно эти протоколы и будут темой нашего дальнейшего обсуждения. В конце же статьи мы кратко, но стараясь охватить все важные моменты, рассмотрим на реализацию Web-почты.
Напомним, что есть три способа работы с почтой. По-английски они называются offline, online и disconnected. В первом случае (offline) почтовый клиент (mail user agent) считывает почту с сервера, сохраняя ее на локальном компьютере. Далее вы можете смотреть почту, удалять или группировать письма локально, при этом нет необходимости в связи с сервером. Во втором случае (online) почта сохраняется на сервере и все операции с ней производятся непосредственно на нем же. В последнем случае (disconnected) почта остается на сервере, но при этом на вашем компьютере создается резервная копия, с которой и происходит работа клиента. Для способов online и disconnected существуют специальные алгоритмы синхронизации, что важно, если пользователь использует несколько компьютеров для работы со своей почтой.
Так что же необходимо пользователю для удобной работы? Для offline-доступа вполне подойдет протокол POP, однако для двух других методов, которые явно удобнее при работе с нескольких компьютеров, нужен IMAP. Оба эти протокола умеют авторизовываться на сервере, считывать список сообщений, скачивать сами сообщения и удалять их. А в отличие от POP, протокол IMAP может:
Производить манипуляции с удаленными папками, а именно:
- добавлять сообщения в папку на удаленном компьютере;
- устанавливать атрибуты на почтовые сообщения;
- поддерживать одновременное обновление содержимого в разделяемых каталогах;
- информировать о поступлении новых сообщений.
Работать с несколькими папками, а именно:
- работать с другими папками, а не только с INBOX;
- выполнять команды list/create/delete/rename для удаленных папок;
- работать с деревом каталогов;
- подходит для доступа к отличным от писем данным, например к новостям или документам.
Кроме того, в IMAP предусмотрены возможности определения типа данных в письме, выделения определенных частей, поиска по каталогам. Все это уменьшает размер информации, передаваемой с сервера на локальный компьютер.
Даже столь краткого перечня возможностей IMAP в сравнении с POP достаточно, чтобы сделать следующие выводы: offline-доступ является если и не вчерашним днем, то уж по крайней мере очень примитивной технологией; технологии online и disconnected в полной мере поддерживаются IMAP; поскольку IMAP по возможностям полностью перекрывает POP, то достоинствами POP остаются только простота и количество программного обеспечения, реализующего этот протокол.
Может возникнуть вопрос: а почему, собственно, нужен некий особый протокол? Казалось бы, достаточно любого протокола для работы с сетевыми файловыми системами типа NFS или SMB. Однако по ряду причин использовать такие протоколы неудобно:
- Нет выделенной, общей для всех типов компьютеров и систем файловой системы.
- Наличие протоколов работы с файловыми системами может зависеть от варианта установки системы.
- Различие в символе перевода строки в разных системах вызовет определенные трудности при обработке сообщений.
- Могут возникнуть трудности, обусловленные проблемами безопасности на удаленном компьютере.
- Возможно неэффективное использование сети, связанное с низкоуровневостью протокола работы файловой системы (например, придется перекачивать весь файл, даже если стоит простой вопрос поиска ключевой строки в письме).
В протоколах уровня приложений POP и IMAP подобных проблем не возникает, вследствие чего их использование становится более удобным и универсальным. Нет зависимости от системы, типа файловой системы. Более продуман процесс передачи данных, что уменьшает загруженность трафика.
Так что же такое POP и IMAP? Сформулируем общие требования к протоколам этого типа (имеется в виду работа с почтой):
- offline-, online-, и disconnected-операции с почтой;
- надежные, независимые от других протоколов клиенты;
- возможность посылки, получения и сохранения сообщений;
- управление удаленными директориями;
- получение и обновление информации о сообщении;
- получение и обновление информации о персональных настройках работы пользователя;
- поддержка совместных почтовых ящиков (для нескольких пользователей);
- рациональное использование ресурсов;
- совместимость со стандартами, принятыми в Интернете.
Отметим отдельно, что протоколы POP и IMAP не занимаются посылкой почты. Эту процедуру выполняет стандартный протокол SMTP. Он прост и надежен, и к тому же от него не требуется ничего нового. Еще один момент: при использовании IMAP его работу сопровождает протокол IMSP (Internet Message Support Protocol), который отвечает за конфигурацию работы IMAP.
Как уже было сказано, использование POP и IMAP схоже. Это сходство заключается в следующем:
- Оба эти протокола отвечают за доступ к почте, в то время как отправкой почты заведует SMTP.
- За физический прием почты в смысле Интернет-технологий (описанных в предыдущем номере) отвечает один разделяемый почтовый сервер.
- Имеется возможность доступа к почте с разных типов платформ.
- Обеспечивается доступ к почте отовсюду из сети.
- Полностью поддерживаются методы offline-режима (получение и удаление).
- Поддерживается возможность установки идентификационных меток при использовании в режиме disconnected.
- Имеются свободно распространяемые серверные приложения.
- Имеются реализации клиентов для персоналок, Mac и UNIX.
- Имеются коммерческие реализации.
- Протоколы определены в RFC.
- Являясь протоколами Интернет, не требуют использования специальных шлюзов.
Теперь поговорим об отличиях. Протокол POP является типичным протоколом для offline-работы. На рис. 1 приведена типичная схема работы этого протокола.
POP умеет скачивать письма и удалять их на сервере. В принципе, можно попросить его оставлять сообщения после скачивания, но это максимум. То есть после такой операции, конечно, письма останутся и их можно будет считать еще, но это не означает полноценной работы. Рассмотрим пример. Допустим, на вашем компьютере два клиента, например Netscape и Outlook. В почтовом ящике есть письма. Запустим Netscape и заберем их, предварительно поставив флажок в поле «Оставлять сообщения на сервере». В дальнейшем, сколько бы вы ни просили Netscape считать ваши письма, даже отменив опцию «Оставлять сообщения», он не удалит с сервера то самое письмо. Более того, вы не будете в дальнейшем иметь информации об этом письме, и оно так и будет лежать, занимая место. Но запустим Outlook — и он считает все. Вроде бы, все хорошо, но плоха сама идея, поскольку вы так и не узнаете, что какое-то письмо уже один раз обработано. Точно так же можно было бы запустить не Outlook, а какой угодно клиент на другой машине. Еще один момент, связанный со строением протокола POP. Если при получении писем произошел обрыв связи, то они, конечно, не удалятся, что уже хорошо. Однако если писем было пять, а скачалось только четыре, они будут удалены только после скачивания всех сообщений. В связи с этим все пять останутся на сервере. При последующем же соединении вы опять получите все сообщения, а не только последнее. При медленной или плохой связи сильно раздражает, когда постоянно, раз за разом приходят все письма. Можно представить, как это неприятно, если вам нужно последнее письмо, а первые четыре довольно большие.
Что же в этом случае предлагает IMAP? На рис. 2 показана схема его работы. Возможности IMAP, отличающие его от POP, уже были рассмотрены выше.
Манипуляции с удаленными папками следующие:
- append messages to a remote folder — означает возможность сохранять письма в папках, отличных от INBOX. Автоматически подразумевается, что эти папки можно создавать, изменять их названия, удалять, переносить письма между папками и т.д;
- set standard and user-defined message status flags — означает сохранение информации о статусе конкретного сообщения. К такой информации относится, например, признак «отвечено», признак важности сообщения, а также признак «удаленное сообщение». Кроме стандартных атрибутов в IMAP можно определить свои;
- support for simultaneous update and update discovery in shared folders — поддержка работы нескольких пользователей с одним почтовым ящиком. В этом нет ничего удивительного, так как вполне возможно не только персональное использование почтового ящика. Простой пример — служба поддержки какой-нибудь фирмы. Вполне разумно, что на разные вопросы отвечают разные специалисты. В связи с этим возникает потребность в информации о статусе письма для всех пользователей. Например, если письмо не должно быть удалено до тех пор, пока все пользователи не пометят его как удаленное.
Работа с несколькими папками включает в себя:
- создание, переименование, удаление, папок, выдачу списка хранящихся в них сообщений;
- возможность получения писем сразу в несколько папок, например, посредством фильтрации на входе; перемещения писем между папками;
- установку на сообщение атрибута «входящий» или «хранящийся»;
- возможность доступа к данным, не являющимся сообщениями;
- возможность сохранения писем как удаленно, так и на локальной машине. Естественно, что большинство клиентов предлагают такой набор возможностей.
Оптимизация работы исключительно важна при медленной связи и предполагает:
- получение и отображение информации о содержимом письма без его перекачки. Например, о типе присоединенного файла;
- перекачку только тела письма без присоединенных файлов. Для примера: если письмо состоит из пяти строк и звукового файла на 12 Мбайт, можно скачать только тело письма, а затем при необходимости и присоединенный файл. То есть речь идет об определении MIME (Multipurpose Internet Mail Extension) типа файлов;
- возможность поиска в сообщениях, что позволяет уменьшить объем перекачиваемых данных. Если вы хотите получить письмо, где есть слово «прайс-лист», то вам следует найти все такие сообщения и их перекачивать. Именно такую возможность предлагает IMAP.
Однако IMAP имеет и недостатки. Прежде всего будучи более сложным, чем POP, протокол IMAP требует более сложной реализации, но и спектр предоставляемых им возможностей гораздо шире. Однако это влечет за собой более сложный код, новые проблемы безопасности и надежности, чем, собственно, и обусловлен второй недостаток: для IMAP гораздо меньше программ, чем для POP. Для неискушенных в области разных типов систем пользователей отметим, что под Windows такие популярные клиенты, как Netscape и Outlook, а также The Bat поддерживают и то и другое, но новая версия набирающего популярность браузера Opera 5.11 пока не имеет поддержки IMAP.
Думаю, что со временем эти проблемы будут решены, поскольку использование IMAP дает много преимуществ. Последней официально стандартизованной версией этого протокола является IMAP4, в которой внимание заслуживают два важных дополнения.
Первое касается работы с папками и заключается в поддержке иерархии каталогов. Это полностью реализовано в протоколе IMAP и не имеет отношения к серверу, так как стандартные почтовые серверы не могут работать с деревом каталогов.
Второе относится к оптимизации: появилась возможность задать набор типов писем и присоединенных файлов (типов MIME), которые необходимо перекачивать.
Итак, оставляя право выбора пользователям, перейдем к последнему разделу нашей статьи — Web-почте.
Это довольно новая и весьма удобная реализация почты. Она основывается на поддержке всех типичных функций почты, но с использованием другого протокола (в нашем случае — http). Как это выглядит с точки зрения пользователя, я думаю, все представляют. На некой страничке вам предлагается ввести имя и пароль, после чего вы попадаете как бы в свою зону, где видите свои письма или файлы и работаете с ними, почти как у себя на компьютере. Давайте попробуем сформулировать плюсы и минусы такой работы. Особенно минусы, так как о плюсах, все, кто предоставляет такую услугу, много и красочно пишут. Основными плюсами являются:
- доступность с любого компьютера, имеющего выход в Интернет;
- универсальный адрес, не зависящий от места работы;
- в случае использования не по dialup-доступу — бесплатное пользование;
- обычно легко запоминающееся имя, типа user@newmail.ru;
- в большинстве случаев возможность хранения не только писем, но и файлов.
К минусам, на мой взгляд, следует отнести:
- необходимость передавать свои имя и пароль по сети за пределы своей фирмы, что снижает уровень безопасности;
- прерывание сервером (часа так через три) использования открытой странички, если не производится никаких действий. До этого времени вы считаетесь авторизованным пользователем, и любой, кто сядет за компьютер, сможет попасть на вашу страничку, нажимая кнопку назад в браузере;
- быстрое насыщение системы, а следовательно, проблемы со скоростью работы (обусловлено бесплатной регистрацией);
- медленная скорость соединения.
На самом деле существенным мне кажется только второй пункт, но это тоже дело вкуса. В конце концов вы можете случайно оставить свой компьютер и с включенным Outlook, провоцируя тем самым прочтение своей почты.
Теперь рассмотрим, как такая схема работы с почтой реализуется с точки зрения администраторов.
Оказывается, что ничего запредельного здесь нет. На рис. 3 приведена схема работы такой почты. Здесь процесс авторизации просто вынесен на Web-страничку, а у Web-сервера есть возможность как-то читать почту. Что касается авторизации на Web-страничке, то здесь нет ничего нового. Аналогичные схемы реализуются на всех сайтах, где есть доступ к закрытой информации. Или загляните на сайт МТУ-Интел, где вы тоже можете попасть на страничку личной статистики, введя имя и пароль в соответствующих полях. Таким образом, реально существует программа, которая осуществляет обмен информацией между Web-сервером и программой авторизации (типа logind), получает признак правильности авторизации и принимает решение, какая страничка отображается следующей. Либо это страничка, связанная с конкретным пользователем, либо это что-то вроде сообщения «Неверная комбинация имени пользователя и пароля».
Затем начинается работа с почтой. По сути, для чтения почты авторизации достаточно, и следующим шагом должно быть формирование странички, соответствующей почтовому ящику пользователя. Это в состоянии сделать, скажем, программа на Perl, которая как бы подменяет собой клиента. Так формируется страничка, которая отражает состояние почтового ящика. Дальнейшие действия пользователя связаны с отправкой новых писем, получением писем, удалением их из почтового ящика и также включают два этапа. На первом этапе осуществляется так называемая интерфейсная работа: пользователь помечает на страничке удаляемые письма, вызывает окна и пишет новые письма или сортирует письма в директориях. На этом этапе все просто и понятно, поскольку самой сложной операцией является ввод текста. Но наступает момент, когда пользователь нажимает кнопку, скажем «удалить». Это уже означает не просто удаление из списка на страничке, а удаление из почтового ящика. Здесь основная задача — простая, но надежная программа, которая сопрягает Web-сервер и почтовый ящик. А для администратора главное — дать программе возможность правильной работы, основываясь на атрибутах файлов. После выполнения такого физического действия над почтовым ящиком он еще раз считывается скриптом на Perl и формируется новая страничка без удаленных писем. Цикл завершен.
Итак, мы рассмотрели четыре способа удаленной работы с почтой, основной акцент сделав на протоколах POP и IMAP. Первый способ обошли вниманием из-за его примитивности. Последний способ — Web-почта — оказался просто сложно организованной страничкой, связанной программным образом с почтовым ящиком. Нет смысла спорить о том, что лучше, а что хуже. На мой взгляд, каждый из способов, кроме первого, хорош по-своему. Конечно, в компании нет необходимости создавать Web-почту, вполне хватит POP или IMAP. А какой из этих протоколов использовать, решать вам — исходя из того, как вы пользуетесь почтой: с одного компьютера или с нескольких. Использование же публичных почтовых Web-серверов, хотя и удобно, но с точки зрения конфиденциальности представляется наиболее опасным. В общем, выбор за пользователем.
КомпьютерПресс 7'2001