Béton brut

A Ty (prze)siej: imapfilter

2013-12-16

Co jest najlepszą rzeczą na świecie? Zgnieść swoich wrogów, zobaczyć ich u Twoich stóp i Inbox Zero. – Konan z księgowości

Uwielbiam e-maile. Czytać, ale przede wszystkim pisać. Dla poczty elektronicznej byłbym w stanie poświęcić wszystkie inne usługi.

Jakiś czas temu jechałem gdzieś pociągiem i wdałem się w konwersację o przedstawieniu teatralnym Terminator II, który używa wyimków ze sztuk Szekspira do opowiedzenia znanej wszystkim historii o gołym robocie w barze dla motocyklistów. Debatowałem z amerykańskim Koreańczykiem z Bostonu. Za każdym razem wyobrażałem sobie jak te dane zapieprzają po dnie Oceanu, te wszystkie EHLO i RCPT TO. Robię się niepoprawnie romantyczny wobec technologii, która zbliża ludzi i pozwala im się kłócić o trywialne popkulturowe rzeczy.

Do dziś mam w szpargałach swój pierwszy e-mail, który wysłałem do autora gry Fundation, Paula Burkey’a.

Ponieważ tak wysoko cenię sobie moją skrzynkę prowadzę nieustanną walkę o jej godność i cześć.

Ostatnio ostatecznie porzuciłem Gmaila jako operatora mojej prywatnej skrzynki 1. Zmiany w UI, a przede wszystkim zmiany w edytorze wiadomości nie pozwoliły mi zostać. To jak uczyć się całe życie kaligrafii i otrzymać kredkę świecową złamaną w ¾ długości i papier toaletowy do robienia notatek.

To zrodziło jeden problem: filtrowanie wiadomości.

Skrzynka u Googla rozwiązywała problem. Ustawiasz filtry i bez względu na sposób dostępu do e-maili (IMAP, czy też aplikacja) wszystko było „na miejscu”. Zwykłe konta pocztowe nie posiadają takiej funkcjonalności, a przy liczbie urządzeń na których czytam pocztę konfigurowanie wszystkich klientów byłoby robotą głupiego. Na szczęście rozwiązałem ten problem już jakiś czas temu: imapfilter to małe narzędzie napisane w Lua, które pozwala na „zdalne” filtrowanie kont pocztowych. Z małym, nerdowskim twistem.

Gdybym popatrzył w Wasze filtry to pewnie trafiłbym na większość w formacie:

„Jeżeli nadawcą jest X przesuń do Y”

To oczywiście sprawdza się doskonale dla ludzi, którzy nie biorą swojej poczty tak serio, jak ja. Na ten przykład przeczytane wiadomości zalegające w skrzynce są mi obrzydliwe. Tak samo jak wybieranie ich jak rodzynków z ciasta i zanoszenie do folderu z archiwum. I tu wchodzi nerdowski twist, plik konfiguracyjny imapfilter to po prostu kawałek kodu w Lua. To praktycznie taki DSL do filtrowania wiadomości.

current_year = os.date("%Y")
target_archives = "Archives." .. current_year
private.INBOX:select_all()
old = private.INBOX:is_seen() * private.INBOX:is_older(1)
old:move_messages(private[target_archives])

„Hej, znajdź mi wiadomości w Inboksie, które są przeczytane i starsze niż z dziś, rzuć je do Archives.2013 jeśli jest 2013, dzięki ziom.”

Czy macie święte soboty? Ja mam. W sobotę mam tylko jeden tryb, „pierdolę, nie robię”. Wskaźnik nieprzeczytanych e-maili spędza mi jednak sen z powiek. Na szczęście:

 day_of_week = os.date("%w")
 if day_of_week == 6 then
   gtfo = work.INBOX:is_unseen()
   gtfo:move_messages(work['GTFO'])
 end

Macie klienta, który pisze do Was na niewłaściwy adres? Jeżeli oba konta są zdefiniowane w konfiguracji możecie przesunąć e-mail pomiędzy skrzynkami. Jedyne ograniczenie cudów, których możecie dokonać ze swoją skrzynką to wasza wyobraźnia i znajomość Lua. Tak, to znaczy, że nie ma limitów. Wraz z pakietem imapfilter przychodzi konfiguracja, którą można bez problemu zaadaptować na swoje potrzeby. Jeżeli macie tak jak ja i spędzacie dużo czasu rozwiązując problemy, które nie istnieją poza waszymi głowami to macie zabawę, na przynajmniej jeden dzień. Jeżeli uważacie, że nie ma nic głupszego niż spalać godziny życia na budowanie systemów filtrowania poczty, które dałyby pierwszą erekcję panu Rube to potraktuj to jako krótką przygodę z Lua.

Dokąd stąd?

Strona projektu imapfilter Programming in Lua, książka do której zerkałem podczas dłubania Przykładowe konfiguracje: Prosta i trochę bardziej zawiła

  1. mam dwa adresy e-mail, jeden dla wszystkich, drugi dla bliższych osób