Sieve
Материал из Википедии — свободной энциклопедии
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
- 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; }