Кратко
:rawсохраняет недекодированное представление,:contentвыбирает MIME-части, а:textзависит от локального извлекателя. Единого тела для всех серверов нет.- Для важного действия нужны письмо, версии, transform, selector, comparator, ошибки и пропущенные части. Hit не доказывает угрозу, miss не доказывает отсутствие.
Граница возникает даже у сообщения только с заголовками. Если после них нет пустой разделительной строки, множество body-строк пусто, и ложен любой тест, включая поиск пустого ключа. Отсутствующий body и присутствующий пустой body — разные состояния.
Когда body есть, transform сначала строит строки. Они не равны физическим строкам письма и могут содержать CRLF. Затем работают comparator и match type. Boolean завершает измерение, но не документирует прибор.
Raw замечает упаковку
:raw делает весь недекодированный body одним item. Transfer encoding сохраняется, boundaries и внутренние MIME headers становятся поисковым содержимым. Синтаксическая ошибка не освобождает от фильтра, если среда не отклонила сообщение заранее.
Ключ может встретиться в base64, boundary или Content-Type, а не в тексте читателя. Такой hit верен для представления и слаб для смысла.
Одно item позволяет wildcard пересечь области, которые MIME transform разделит. Смена raw на content меняет вопрос.
Content определяет допустимые ветви
:content выбирает MIME type и рекурсивно спускается в multipart и message/rfc822. Полный type/subtype точен, один type включает подтипы, пустой selector выбирает все. Ошибочные slash не выбирают ничего.
Каждая часть сравнивается отдельно, pattern не пересекает границу. Соседние на экране фрагменты не образуют одной строки. Prologue, epilogue, header вложенного сообщения и его bodies имеют разные маршруты выбора.
Обязательные encodings декодируются, поддержанный текст переходит в UTF-8. Но неудачная часть может стать US-ASCII, быть пропущена или обработана локально. False способен означать «не наблюдалось».
Text меняется вместе с установленным ПО
:text — best effort и default. Простая система приравнивает его к :content "text"; сложная удаляет markup, конвертирует документы и применяет OCR. Одинаковые строки не обязательны.
Обновление библиотеки или смена поставщика становится изменением политики. Новый converter открывает старое слово, новый OCR теряет прежнее. Код тот же, наблюдение другое.
Нужны version, capabilities, warnings, omitted parts и output hashes. Запись «rule matched» без них не воспроизводима.
Безопасность не выводится из строки
RFC предупреждает: raw может быть шире намерения, а text matching не заменяет spam, virus или иной security filter. Ресурсы должны быть ограничены, чтобы matching не вызвал denial of service.
Упаковка способна ошибочно удалить нормальное письмо; неизвестный attachment — ошибочно оправдать опасное. Boolean не различает причины.
RFC 5229 остаётся о variables и captures. Body wildcards не задают ${1} и следующие. Это ограничивает side effect, а не гарантирует полноту.
Источники
- https://www.rfc-editor.org/rfc/rfc5173.html
- https://www.rfc-editor.org/rfc/rfc5173.txt
- https://www.rfc-editor.org/info/rfc5173
- https://datatracker.ietf.org/doc/rfc5173/
- https://datatracker.ietf.org/doc/rfc5173/history/
- https://datatracker.ietf.org/doc/rfc5173/references/
- https://www.rfc-editor.org/errata/rfc5173
- https://www.iana.org/assignments/sieve-extensions/sieve-extensions.xhtml
- https://www.rfc-editor.org/rfc/rfc5228.html
- https://www.rfc-editor.org/rfc/rfc5229.html
- https://www.rfc-editor.org/rfc/rfc5703.html
- https://www.rfc-editor.org/rfc/rfc2045.html
- https://www.rfc-editor.org/rfc/rfc2046.html
- https://www.rfc-editor.org/rfc/rfc3629.html
- https://heng.lu/on-reality-layers-symbolic-power-and-why-clarity-feels-so-hostile/
- https://heng.lu/minimum-initial-specification-localized-future-decision-voluntary-adoption-internet-coordination-system/
- https://heng.lu/running-code-primary-the-patch-needed-to-preserve-the-internet-original-design/
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров
