email-ng

Мир изменился...

Дж. Р. Р. Толкиен, «Властелин Колец»

вступление

На мой взгляд, прошли времена безраздельного царствования связки fetchmail+procmail+mutt. Ничего не случилось с этими программами плохого, они по-прежнему прекрасно выполняют свои функции... но вот функции эти уже не актуальны. Человек в двадцать первом веке - существо мобильное. Доступ в Сеть у него есть везде: в метро, на работе, дома, в отпуске, в кафе... И доступ к корреспонденции он хочет иметь везде и всегда, с минимальными ограничениями и максимальной функциональностью. К счастью, современные технологии в состоянии это обеспечить. Только для этого их нужно правильно использовать. И как раз о том, что есть это самое "правильно", я и позволю себе немного порассуждать.

Итак, взяв за основу факт высокой степени мобильности современного человека вообще и "айтишника" в частности, мы можем сделать вывод, что хранение почты на какой-либо одной из многих рабочих станций пользователя (рабочей ли, домашней или какой-либо другой, даже ноутбуке) - атавизм. И естественно, у данной проблемы есть только одно решение - хранение почты на сервере с возможностью доступа к оному как минимум по двум протоколам - HTTP (через веб-интерфейс) и IMAP (почтовый клиент). Я бы охарактеризовал эти два протокола следующим образом (из этой характеристики в принципе видно, почему именно эти два протокола необходимы и достаточны):

HTTP - мобильный - доступен в любой точке мира, из-под любой ОС и любого ПО.

IMAP - оперативный - необходим для постоянного пребывания "на связи". То есть, как правило, для внутриофисного использования.

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

Можно даже отвлечься на минуту и порассуждать об истоках этой "недостаточности". Если, взяв за основу классическое правило "80 на 20", предположить, что 80% необходимых действий по сортировке корреспонденции с успехом реализуется набором примитивных правил, то оставшиеся 20% действий пользователю приходится выполнять вручную. И это путь... не скажу кого и куда, но уж точно не путь дзен и даже не unix-way. Последователи последнего из упомянутых "маршрутов" склонны добиваться даже не максимальной, а полной автоматизации того, что вообще возможно подвергнуть автоматизации.

Но вернемся к сортировке. Во-первых, уже на сервере вся корреспонденция должна быть полностью рассортирована, дабы любой клиент, используя любой протокол, получал один и тот же результат. Причем следует понимать, что на сервере должен быть обеспечен результат (сортировки), а сам процесс может выполняться и на стороне клиента (мы поговорим о такой схеме чуть позже). А во-вторых желательно (правда, к сожалению, не всегда возможно) расширить введенное понятие "сортировки" в двух плоскостях:

- правила сортировки должны быть сколь угодно гибкими;

- сортировке должна подвергаться вся корреспонденция - как входящая, так и исходящая, удаленная и пр.

И все бы было хорошо. Если бы не «как всегда» :) Потому что начинается необходимый в любом деле переход от теории к практике. Чтобы не запутаться, будем совершать сей переход поэтапно.

этап первый, серверный

К счастью, все современные почтовые сервисы (как публичные и бесплатные, так и корпоративные) поддерживают HTTP- и IMAP-доступ. С иными лучше просто не связываться. Для начала бросим беглый взгляд на ситуацию с общедоступными почтовыми сервисами. Большинство из них предоставляют пользователям инструментарий для сортировки почты. Тот самый, который делает 80% нужной нам работы. Впрочем, уже неплохо. Особенно если обратить отдельное внимание на google-mail, где сей процент несомненно много выше. Как минимум за счет концептуального "неразделения" писем на входящие и исходящие. Вместо этого - более правильная ориентация на смысловые (по нитям обсуждений) связи между объектами (письмами). Это в целом покрывает наше "второе расширение" понятия сортировки писем.

Кроме того, в google-mail используется гораздо более прогрессивная и во всех отношениях более удобная группировка объектов с использованием тэгов взамен традиционной ущербной деревообразной структуры (как правило, каталогов). Но это просто небольшой реверанс в сторону google с целью обозначить одно из направлений, в котором еще можно развивать технические и технологические средства. Этим и ограничимся.

Немного о себе :) Положа руку на сердце, вряд ли я бы стал копаться в этой теме и уж тем более писать то, что вы сейчас читаете, если бы во внутрикорпоративном окружении моей и многих знакомых мне изнутри компаний почтовые серверы обеспечивали бы функционал, сравнимый с функционалом публичных бесплатных почтовых сервисов. Но ситуация такова, что в компаниях зачастую используются достаточно дорогостоящие программные средства, которые при этом по непонятным для меня причинам не имеют средств сортировки корреспонденции вообще. Первым этапом решения проблемы было использование ххх (подставьте сюда любой современный MUA с поддержкой IMAP и сортировки писем, я же не буду давать повода для придирок и конкретный продукт указывать не стану). Все вроде бы работало более-менее терпимо, пока не возникла потребность в:

- более гибкой сортировке;
- более удобного в работе MUA.

Начал я со второго. И поковырявшись в целой куче оных, как консольных, так и гуевых, остановил свой выбор на mutt (а если быть точным, то на muttng). И, в принципе, можно сказать, достиг гармонии с природой и самим собой. Одно лишь меня чуть не смутило - сортировку mutt делать не умеет. Надо сказать, по вполне объективной причине - не его это дело :) Я уже упоминал в самом начале о старой доброй связке для получения почты с сервера на клиентскую машину и дальнейшей с ней работы. Один из этой тройки - procmail - как раз и призван был выполнять сортировку. А в выбранном нами пути ему, к сожалению, места не нашлось. Но останавливаться было поздно (да и одно только желание добиться возможности полностью перейти на использование mutt было немалым стимулом для решения последней оставшейся проблемы). И google привел меня на сайт imapfilter.hellug.gr. За что ему, родимому, "респект и уважуха". Если вы сходили по приведенной мною ссылке, то я даже не знаю что и добавить :) Впрочем, немного все же расскажу.

Итак, imapfilter. Эта программа предоставляет, пожалуй что, неограниченные возможности по сортировке почты на сервере с доступом по протоколу IMAP. Сам imapfilter решает следующие три крупные задачи:

- закрыть от пользователя все технические вопросы (в данном случае это реализация логики работы по протоколу IMAP);

- предоставить инструментарий (imapfilter предоставляет весь необходимый набор действий над письмами в почтовом ящике, как то: перемещение, копирование, удаление, поиск по самым различным критериям и т. д. и т. п.);

- обеспечить выполнение той логики, что пользователь опишет в конфигурации (в случае imapfilter - за счет интеграции с имеющимся программным средством, о котором ниже).

Техническая сторона вопроса закрыта. Перейдем к прикладной части - к описанию правил сортировки. Правила эти в imapfilter задаются, с одной стороны, с использованием простейшего синтаксиса. Для написания простейших правил более чем достаточно просто взглянуть на примеры. Но на самом деле правила задаются путем написания их на интерпретируемом языке программирования Lua. Что дает в руки пользователю мощнейший инструмент для таких действий с почтой, на какие только способна его фантазия. К примеру, я использую этот инструмент не только для сортировки писем, но и для нотификации о наличии новых писем. И, по моему мнению, выбор языка в данном случае был сделан превосходный.

этап второй - клиентский

Дело в том, что выбранный мною подход к организации работы с почтой был во многом обусловлен полным отсутствием возможности сортировать почту в mutt. Таким образом, при использовании вышеописанной схемы (IMAP+imapfilter+MUA) требования к MUA - самые минимальные. Ведь даже нотификацию ему можно не уметь делать. В данном случае ее с успехом сделает imapfilter, а вернее - ваш собственный скрипт для него. И вроде бы можно сказать, что тут мы достаточно близки к true unix-way. Где любой front-end - это всего лишь front-end. Он всего лишь прослойка, единственная задача которого быть удобным пользователю, а уж в плане удобства, как известно, на вкус и цвет... фломастеры разные :)

послесловие

Основной мой "нерабочий" почтовый ящик находится на google-mail. Сортировка выполняется его средствами. Нотификация - расширение к моему основному браузеру (все догадались к какому, но я сегодня - образец политкорректности).

Описанный здесь подход я использую на своем рабочем месте. И могу сказать, что настройка такой связки компонентов дала мне превосходный результат. И этим результатом я поделился с вами. Искренне надеюсь, что это будет как минимум интересно, а может быть и полезно.

Все вышеизложенное - мои собственные домыслы, не основанные ни на чем, кроме собственных досужих рассуждений.



JaGoTerr, jagoterr.blogspot.com. Перевод posix.ru


Сетевые решения. Статья была опубликована в номере 06 за 2006 год в рубрике sysadmin

©1999-2024 Сетевые решения