Sieve

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

Содержание

Комментарии

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

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

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

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

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

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

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

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

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

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

size
Сравнивает размер полученного письма с определённым размером. Можно указать размер в байтах, килобайтах и мегабайтах, для этого нужно указать KB или MB (для килобайт или мегабайт соответственно) после необходимого размера файла.
header
Сравнивает заголовок письма с определёнными параметрами.
address
Cравнивает только поле адреса.
allof("<параметры>")
Cравнивает несколько значений, которые указаны как параметры. Возвращает истину, если все условия выполняются.
anyof("<параметры>")
Cравнивает несколько значений, которые указаны как параметры. Возвращает истину, если хотя бы одно условие выполняется.
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;
}
 
Начальная страница  » 
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ы Э Ю Я
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 Home