Pigeonhole – implementacja Sieve dla Dovecot

dovecotOmówienie

Pigeonhole jest nazwą projektu, który implementuje wsparcie dla języka Sieve (RFC 5228) oraz protokołu ManageSieve (RFC 5804) do Bezpiecznego serwera IMAP Dovecot. W literalnym znaczeniu pigeonhole jest dziurą lub wnęką wewnątrz gołębnika dla gniazd gołębi. Jest to również nazwa jednej z serii małych, otwartych przedziałów w szafie używanej do przechowywania lub sortowania poczty. Jako czasownik, opisuje czynność wkładania przedmiotu do jednej z tych szuflad. Nazwa ‚Pigeonhole’ zatem dość dobrze opisuje ważną część funkcjonalności, którą ten projekt dodaje do Dovecota: sortowanie i umieszczanie wiadomości e-mail.

Język Sieve jest używany do określenia jak wiadomość e-mail ma zostać przetworzona. Poprzez skrypty Sieve użytkownicy mogą zdefiniować jak wiadomości są dostarczane, np. czy mają zostać przekazane dalej lub zapisane w specjalnym folderze. Niechciane wiadomości mogą zostać skasowane lub odrzucone, oraz, gdy użytkownik jest nieosiągalny, interpreter Sieve może odesłać automatyczną odpowiedź. Przede wszystkim język Sieve ma być prosty, rozszerzalny i niezależny od systemu. Poza tym, w przeciwieństwie do innych języków/skryptów do filtrowania poczty, nie wymaga ani nie pozwala użytkownikowi uruchamiać żadnych programów. Jest to szczególnie przydatne kiedy nie chcemy dawać wirtualnym użytkownikom pełnego dostępu do magazynu poczty. Intencją tego języka jest aby uczynić niemożliwym dla użytkowników robienie czegokolwiek bardziej skomplikowanego (i niebezpiecznego) niż pisanie prostych filtrów poczty.

Przy użyciu protokołu ManageSieve użytkownicy mogą umieszczać swoje skrypty zdalnie, bez potrzeby bezpośredniego dostępu do systemu plików przez FTP lub SCP. Dodatkowo serwer ManageSieve zawsze upewnia się, że umieszczane skrypty są poprawne zapobiegając błędom kompilacji przy dostarczaniu poczty.

Projekt Pigeonhole implementuje wsparcie dla Sieve jako plugin do Dovecotowego agenta dostarczania poczty (LDA – Local Delivery Agent). Protokół ManageSieve jest dostarczany jako dodatkowa usługa obok Dovecotowych usług POP3 i IMAP.

Właściwości

  • Implementacja Sieve Pigeonhole ukierunkowana jest aby być przyjazna administratorom i użytkownikom. Podobnie jak w Dovecot, komunikaty błędów są tak proste do zrozumienia, jak to tylko możliwe. Jakakolwiek awaria, niezależnie od tego jak wystąpiła jest rozważana jako bug i będzie naprawiana. Kompilator nie obraża się przy pierwszym błędzie, ale dalej analizuje skrypt, aby uczynić debugowanie bardziej efektywnym.
  • Implementacja Pigeonhole jest – podobnie jak sam język – mocno rozszerzalna wraz z nadejściem nowych możliwości Sieve. To oznacza również wsparcie dla innych pluginów dostarczanych przez podmioty zewnętrzne. W końcu, powinna zapewnić też infrastrukturę co najmniej dla wszystkich znanych i proponowanych rozszerzeń Sieve. Celem jest utrzymywanie interfejsu rozszerzeń implementacji Sieve tak ogólnej jak tylko moliwe, to znaczy bez wyraźnego wsparcia dla specyficznych rozszerzeń. Nowe podobne rozszerzenia mogą więc używać tych samych metod interfejsu bez konieczności zmian w kodzie silnika Sieve. Jeśli rozszerzenie nie jest załadowane przy użyciu polecenia require, kompilator naprawdę nie wie o jego istnieniu.
  • Plugin Pigeonhole jest kompatybilny wstecz ze starym pluginem CMUSieve. Wszystkie rozszerzenia Sievie wspierane przez stary plugin są również wspierane przez nowy Pigeonhole Sieve Plugin, włączając również te, które obecnie uważane są za przestarzałe.
  • Implementacja Pigeonhole umożliwia wykonywanie wielu skryptów Sieve jeden po drugim. Używając tej właściwości możliwe jest wykonywanie skryptów administracyjnych przed oraz po skryptach Sieve użytkowników, co gwarantuje, że reakcje i oraz dostarczone wiadomości nie zostaną zduplikowane. Ta implementacja bazuje na szkicu specyfikacji, który definiuje zachowanie Sievie, kiedy wiele skryptów wykonywanych jest sekwencyjnie na tej samej wiadomości.
  • Implementacja Pigeonhole posiada zestaw testów aby automatycznie sprawdzić czy skompilowany silnik Sieve działa poprawnie. Zestaw testów jest rozszerzeniem dla języka Sievie i dlatego może być łatwo poszerzony o nowe testy. Obecnie zestaw testów jest ograniczony głównie do testowania przetwarzania skryptów. Przeprowadzane akcje nie są jeszcze w pełni testowane.
  • Implementacja Pigeonhole dostarcza nowych i bardzo użytecznych rozszerzeń dla zmiennych.
  • Plugin Sieve Pigeonhole jest rozpowszechniany z narzędziem sieve-test, które upraszcza testowanie skryptów Sieve oraz dostarcza dodatkowych udogodnień do debugowania.

Źródło: tłumaczenie własne na podstawie http://pigeonhole.dovecot.org/

Może Ci się również spodoba

Dodaj komentarz