Light-industry-up.ru

Экосистема промышленности

Sieve

15-09-2023

Sieve — язык описания правил фильтрации для почтовых сообщений. Создан компанией Cyrusoft International, Inc./ISAMET, которая объявила о банкротстве 1 октября 2005 года.

Содержание

Комментарии

Как и любой язык, Sieve имеет комментарии. Существуют два типа комментариев: многострочные и однострочные.

Многострочные комментарии состоят из нескольких строк, должны начинаться с символов «/*» и заканчиваться «*/».

/*
это 
многострочный 
комментарий 
*/ 

Однострочные комментарии комментируют только одну строку, в начале которой стоит «#».

#это 
#однострочные 
#комментарии

Структура языка

[ .. ] 
Квадратные скобки используются для группировки элементов. Например, ["user1@domain.ru", "user2@domain.ru", "user3@domain.ru"] определяет группу почтовых ящиков.
{ .. } 
Фигурные скобки используются для создания группы действий, который будут выполнены, если условие выполняется.
if 
Сравнивает определённые параметры. Если они истинны, то выполняется определённый блок операторов.
elsif 
Если используется несколько сравнений, то лучше всего использовать elsif. Действие аналогично if.
else 
Если ни одно из вышеследующих условий не выполнилось, то выполняются операторы, заключенные в { .. } после else.
stop 
Останавливает обработку письма.

Действия над письмами

keep 
Сохраняет копию сообщения в каталоге по умолчанию.
fileinto "каталог" 
Перемещает письмо в указанный каталог. Если он не существует, то письмо сохраняется в каталоге по умолчанию, и больше никаких действий не выполняется.
discard 
Удаляет письмо. Уведомление об удалении не отсылается.
reject "<причина>" 
Возвращает отправителю письмо, в котором указывается причина ошибки доставки.
redirect "<почтовый ящик>" 
Перенаправляет сообщение на указанный почтовый ящик. Копия сообщения не создается.
vacation <параметры> 
Автоматически отвечает на письмо.

Операторы сравнения

size 
Сравнивает размер полученного письма с определённым размером. Можно указать размер в байтах, килобайтах и мегабайтах, для этого нужно указать KB или MB (для килобайт или мегабайт соответственно) после необходимого размера файла.
header 
Сравнивает заголовок письма с определёнными параметрами.
address 
Сравнивает только поле адреса.
allof("<параметры>") 
Сравнивает несколько значений, которые указаны как параметры. Возвращает истину, если все условия выполняются.
anyof("<параметры>") 
Сравнивает несколько значений, которые указаны как параметры. Возвращает истину, если хотя бы одно условие выполняется.
true 
Имеет всегда истиное значение.
false 
Имеет всегда ложное значение.
not <параметр> 
Если параметр имеет значение ложь, то всё выражение имеет значение истина.

Пример

require ["fileinto","reject", "vacation"];
if allof (header :contains  "X-Spam-Flag" "YES") {
     discard ;
}
elsif allof (header :contains "subject" "Заголовок") {
vacation 
:days 1
:addresses "xxx@xxx"
:subject "Project statistics" 
:mime "MIME-Version: 1.0
Content-Type: text/html; charset=KOI8-R
Content-Transfer-Encoding: 7bit
<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">
<HTML><HEAD><META http-equiv=Content-Type content=\"text/html; charset=windows-KOI8-R\">
</HEAD><BODY>Это пример ответа на письмо с заданным заголовком</BODY></HTML>";
 discard ;
}
else {
     keep;
}

Ссылки

  • Sieve.Info — Wiki-сайт с информацией о Sieve (Английский)
  • RFC 5228 — Спецификация языка Sieve (Английский)
  • Онлайн проверка синтаксиса Sieve


Sieve.

© 2014–2023 light-industry-up.ru, Россия, Краснодар, ул. Листопадная 53, +7 (861) 501-67-06