Связка IMAP imapfilter MUA вместо fetchmail procmail mutt

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

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

* HTTP — мобильный — доступен в любой точке мира, из-под любой ОС и любого ПО
* IMAP — оперативный — необходим для постоянного пребывания «на связи». Т.е. как правило для внутриофисного использования

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

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

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

* правила сортировки должны быть сколь угодно гибкими
* сортировке должна подвергаться вся корреспонденция, как входящая, так и исходящая, удалённая и пр.

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

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

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

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

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

Начал я со второго. И поковырявшись в целой куче оных, как консольных так и гуёвых, остановил свой выбор на mutt (а если быть точным, то на muttng). И в принципе, можно сказать, достиг гармонии с природой и самим собой. Одно лишь меня чуть не смутило — сортировку mutt делать не умеет. Надо сказать по вполне объективной причине — не его это дело :) Я уже упоминал в самом начале о старой доброй связке для получения почты сервера на клиентскую машину и дальнейшей с ней работы. Один из этой тройки — procmail — как раз и призван был выполнять сортировку. А в выбранном нами пути ему, к сожалению, места не нашлось. Но останавливаться было поздно (да и одно только желание добиться возможности полностью перейти на использование mutt было немалым стимулом для решения последней оставшейся проблемы). И google привёл меня на сайт http://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. Сортировка выполняется его средствами. Нотификация — расширение к моему основному браузеру (все догадались к какому, но я сегодня — образец политкорректности).

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

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

Добавить комментарий

всё о почтовых и курьерских услугах