Sieve (язык фильтрации почты) - Sieve (mail filtering language)

Сито
Оригинальный автор (ы)Вашингтонский университет и Университет Карнеги Меллон[1] и стандартизирован Тимом Шоуолтером
изначальный выпуск1999; 21 год назад (1999)[1]
Операционная системаКроссплатформенность
ТипФильтрация электронной почты
Интернет сайтсито.Информация

Сито это язык программирования что можно использовать для фильтрация электронной почты. Своим созданием он обязан проекту CMU Cyrus Project, создателям Cyrus IMAP сервер.

Язык не привязан к какой-либо конкретной операционной системе или почтовой архитектуре. Это требует использования RFC 2822 -соответствующие сообщения, но в остальном должны быть обобщены на другие системы, соответствующие этим критериям. Текущая версия базовой спецификации Sieve изложена в RFC 5228, опубликовано в январе 2008 г.

Язык

Сито - это программирование на основе данных язык, аналогичный более ранним языкам фильтрации электронной почты, таким как procmail и maildrop, и более ранние строчно-ориентированные языки, такие как sed и AWK: он определяет условия для сопоставления и действия, которые необходимо предпринять для сопоставления.

Это отличается от языки программирования общего назначения в этом он сильно ограничен - базовый стандарт не имеет переменных и циклов (но допускает условное ветвление), предотвращая неконтролируемые программы и ограничивая язык простыми операциями фильтрации. Несмотря на то, что были разработаны расширения для расширения языка за счет включения переменных и, в ограниченной степени, циклов, язык по-прежнему сильно ограничен и, таким образом, подходит для запуска пользовательских программ как части почтовой системы.

Также существует значительное количество ограничений на грамматика языка, чтобы уменьшить сложность синтаксического анализа языка, но язык также поддерживает использование нескольких методов для сравнения локализованных строк и полностью Unicode -осведомленный.

Использовать

Скрипты Sieve могут быть сгенерированы GUI на основе редактора правил, или они могут быть введены напрямую с помощью Текстовый редактор.

Скрипты передаются на почтовый сервер в зависимости от сервера. Протокол ManageSieve (определен в RFC 5804 ) позволяет пользователям управлять своими скриптами Sieve на удаленном сервере. Почтовые серверы с локальными пользователями могут разрешить хранение скриптов, например, файл .sieve в домашних каталогах пользователей.

История

Язык был стандартизирован в (ныне устаревшем) RFC 3028 от января 2001 года, Тим Шоуолтер.

Расширения

Рабочая группа IETF Sieve[2] обновил базовую спецификацию в 2008 г. (RFC 5228 ) и привел к статусу предлагаемого стандарта следующие расширения:

  • RFC 5173 - Тело; позволяет сценарию проверять тело сообщения, а не только его заголовок.
  • RFC 5229 - Переменные; позволяет сценарию сохранять и извлекать значения в переменных.
  • RFC 5230 - Отпуск; указывает действие для отправки ответа, информирующего отправителя о том, что получатель может отсутствовать.
  • RFC 5231 - реляционные тесты; определяет числовые тесты, так что сценарий может проверять поле на наличие числового значения и может проверять количество вхождений поля.
  • RFC 5232 - IMAP4flags; позволяет сценарию проверять и устанавливать сообщения Флаги IMAP.
  • RFC 5233 - подадрес; позволяет скрипту тестировать субадреса формы "[email protected]".
  • RFC 5235 - Спамтест и Вирустест; позволяет сценарию взаимодействовать с зависимой от реализации фильтрацией сообщений.
  • RFC 5260 - Расширения даты и индекса.
  • RFC 5293 - Editheader; позволяет скрипту добавлять и удалять поля заголовка сообщения.
  • RFC 5429 - Отклонять; позволяет отклонять сообщения LMTP /SMTP уровень или с MDN или же DSN.
  • RFC 5435 - Уведомления; позволяет скрипту запускать внешние уведомления по электронной почте.
  • RFC 5436 - Уведомления по электронной почте; указывает уведомления по электронной почте.
  • RFC 5437 - Уведомления XMPP; указывает уведомления через XMPP.
  • RFC 5490 - Проверка; Статус почтового ящика и доступ к метаданным почтового ящика.
  • RFC 5703 - Тесты частей MIME, итерация, извлечение, замена и вложение
  • RFC 5804 - Протокол для удаленного управления ситовыми скриптами

Ряд других расширений все еще разрабатывается рабочей группой Sieve.[нужна цитата ]

Пример

Это пример скрипта сита:

# Фильтр сита # Объявить расширения, используемые этим скриптом. # Require ["fileinto", "reject"]; # Сообщения размером более 100 КБ будут отклоняться с сообщением об ошибке # if size: более 100 КБ {reject "Извините, Я не принимаю почту размером более 100 КБ. Загрузите файлы большего размера на сервер и отправьте мне ссылку. Спасибо. ";} # Письма из списка рассылки будут помещаться в папку" mailinglist "#elsif address: is [" From "," To "]" [email protected] "{fileinto" INBOX.mailinglist ";} # Правило спама: сообщение не содержит мой адрес в заголовках To, CC или Bcc #, либо в теме указано что-то с" money " или "Виагра". # elsif anyof (not address: all: contains ["To", "Cc", "Bcc"] "[email protected]", header: соответствует "Subject" ["* money *", " * Виагра * "]) {fileinto" INBOX.spam ";} # Остальное оставьте себе. # В этом нет необходимости, поскольку существует правило" неявного сохранения "# else {keep;}

Смотрите также

Рекомендации

внешняя ссылка