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 – удалить (не сохранять в ящике, для которого выполняется скрипт)