Sieve
Sieve to skryptowy język służący do automatyzacji wielu zadań związanych z kontami pocztowymi (na przykład automatycznemu odpowiadaniu, kopiowaniu wiadomości na inny adres, czy odrzucaniem niektórych wiadomości). Skrypt Sieve działa po stronie serwera.
Zarządzenie skryptem Sieve jest możliwe z:
- programu pocztowego (np. w Thunderbird wymagany dodatkowy add-on)
- skryptu perl
sieve-connect
- webmaila roundcube (Ustawienia → Filtry) - nie jest wymagana znajomość składni.
Struktura skryptu Sieve nie jest skomplikowana i do napisania najprostszej reguły nie potrzeba znać żadnego języka programowania. Skrypt składa się z listy prostych poleceń, takich jak: "fileinto" (przenieś do folderu), "if" (jeśli jakiś warunek jest spełniony), "discard" (odrzuć), etc.
Spis treści
Składnia
require ["fileinto", "reject", "vacation", "regex", "relational", "comparator-i;ascii-numeric"]; if size :over 1024K { reject "Wiadomość niedostarczona. Zbyt duży rozmiar."; stop; }
require["..."];
- Ta linia informuje z jakich modułów będziemy korzystać (fileinto do umieszczenia maila w folderze, reject do odrzucania wiadomości, vacation do wysyłania automatycznej wiadomości, regex do wykorzystania wyrażeń regularnych oraz relational wraz z comparator-i;ascii-numeric do porównań numerycznych).
if size :over 1024K {
- Ta linia sprawdza czy rozmiar wiadomości jest większy niż 1024KB
reject "(...)";
- W tej linii wiadomość jest odrzucana
stop;
- W tej linii Steve przestaje analizować dalszą część skryptu.
}
- Nawias zamykający to, co się dzieje po spełnieniu warunku w if.
Test
size
Sprawdza czy rozmiar wiadomości jest większy :over
, bądź mniejszy :under
od podanej wartości w M(megabajtach), K(kilobajtach) bądź domyślnie w bajtach (na przykład 10M, 20K, 1024).
header
Sprawdzanie pól nagłówka.
address
Sprawdzanie tylko adresu z nagłówka. Na przykład mail wysłano jako Jan Nowak <jnowak@example.com>. Test header "From" :is "jnowak@example.com"
jest fałszywe, natomiast address :is "jnowak@example.com"
jest prawdziwe.
allof
anyof
true
false
not
Porównania
:is
:matches
:contains
:over
:under
:count
if
else
elseif
stop
keep
fileinto
discard
reject
redirect
Komentarz
# Komentarz jednoliniowy od znaku '#' do końca linii. Treść jest ignorowana przez parser Sieve. /* Komentarz blokowy * Wszystkie linijki są ignorowane od momentu rozpoczęcia komentarza ciągiem znaków '/*', * aż do momentu zakończenia komentarza ciągiem znaków */