Sieve
В качестве сортировщика почты используется плагин к dovecot языка филтрации Sieve (http://ru.wikipedia.org/wiki/Sieve)
В директории ящика есть файл .dovecot.sieve, в который включаются файлы скриптов(в каждом одном условия и действия для него) из директории .sieve/ так же в директории ящика.
В каждый скрипт в заголовок добавляется инструкция подключения всех комманд, добаляемых через панель:
require ["fileinto","reject","vacation","regex","envelope","relational","body","copy"]
Пример
Скрипт с именем “testscript” для ящика aaa@test.dom пользователя владельца user, проверяет формулировку: Если в заголовках письма “Header” или “Subject” не найдены подстроки “AAA”, “BBB”, “ССС” или размер письма больше 1 мегабайта, то переслать письмо ящику bbb@test.dom, а в ящике aaa@test.dom не сохранять.
После создания скрипта сортировки через визард в панели, появятся такое содержимое файлов:
/var/www/user/data/email/test.dom/aaa/.dovecot.sieve:
require ["include"]; include :personal "testscript";
- require – заявляем что используем директиву include для включения скриптов
- include – включаем скрипт testscript
/var/www/user/data/email/test.dom/aaa/.sieve/testscript.sieve:
if anyof ( not header :contains ["Header","Subject"] ["AAA","BBB","CCC"], size :over 1024K ) { redirect "bbb@test.dom"; discard; }
- anyof – любое из условий верно
Первое условие (условия каждое на новой строке через запятую между ‘(‘ и ‘)’):
- not – логическое НЕ
- header – проверяем заголовки письма
- :contains – содержит
- [“Header”,”Subject”] – проверяем заголовки Header или Subject
- [“AAA”,”BBB”,”CCC”] – проверяем, что заголовки содержат “AAA”, “BBB” или “ССС”
Второе условие:
- size – проверяем размер письма
- :over – больше
- 1024K – 1 мегабайт
Первое действие (действия каждое на новой строке через запятую точку с запятой между ‘{‘ и ‘}’):
- redirect – перенаправить
- “bbb@test.dom” – на адресс bbb@test.dom
Второе действие:
- discard – удалить (не сохранять в ящике, для которого выполняется скрипт)