Summary
- RFC 5235 нормализует специфические для реализации проверки спама и вирусов, но нулевое значение
spamtest :percentобъединяет проверенное чистое, непроверенное и неопределённое состояния. - Для значимого решения нужен отдельный документ о выполнении и происхождении проверки. Значение, ветвь Sieve, выбранное действие и итог для получателя — разные поверхности доказательств.
Ноль после работы и ноль вместо работы
Первое письмо прошло через актуальный сканер. Второе пришло по маршруту, где проверка была отключена. Для третьего Sieve не знает, выполнялся ли внешний тест. В процентном режиме все три могут получить ноль.
Стандарт делает это различие явным. Он позволяет скрипту сравнивать нормализованную строку, несмотря на разные локальные механизмы. Значение описывает интерфейс. Оно не удостоверяет процесс, который должен был существовать до интерфейса.
Если журнал сохраняет только число, отсутствие свидетельства начинает выглядеть как положительное заключение о чистоте.
Переносимость покупается потерей деталей
Реализация может предоставить собственный поясняющий текст, однако зависимый от него скрипт перестаёт быть переносимым. Общая шкала сознательно сокращает локальный словарь.
В результате она обычно не несёт имя и версию сканера, дату правил, профиль, исследованное представление сообщения, исключённые вложения, ошибки, тайм-аут или причину пропуска. Это проекция исходного протокола проверки, а не сам протокол.
Автоматике нужны устойчивые категории. Аудиту нужны идентичность, время и исключения. Обе задачи можно решить, сохраняя рядом с переносимым значением связанный исполнительный документ.
Смысл нуля зависит от шкалы
Без :percent ноль в spamtest означает, что сообщение не проверено или статус неизвестен; единица означает проверено и определённо чисто. В процентном варианте чистый результат тоже становится нулём.
Хранилище, которое помнит цифру и забывает шкалу, теряет сам тезис результата. При миграции экран может не измениться, хотя историческая семантика уже стала другой.
Отдельный вопрос задаёт реляционный :count. Единица означает выполненную базовую проверку, ноль — отсутствие проверки либо невозможность определить её статус. Но :count не сообщает, какой сканер работал, насколько свежи его правила, что он видел и был ли канал результата защищён.
Поле результата является каналом управления
Некоторые реализации передают данные в частных заголовках. RFC 5235 требует, чтобы результат поступал только от законного процесса проверки, а отправитель или посредник не мог его подделать.
Тот, кто записывает поле, управляющее ветвлением, влияет на решение. Поэтому происхождение — часть границы полномочий. Однако подлинность ещё не означает качество: RFC рекомендует обновлять сканеры и отмечает ограниченную надёжность антивирусной проверки. Подлинный устаревший результат остаётся устаревшим.
Между значением и итогом четыре границы
Нормализованное значение относится к тесту. Сравнение выбирает ветвь. Скрипт назначает действие. Почтовая система пытается его выполнить, после чего появляются документы хранения, передачи или отказа, а затем наблюдение получателя.
Ноль не доказывает проверку. Выбранная ветвь не доказывает исполнение. Доставка в ящик не доказывает человеческий результат. Для каждого утверждения нужен документ о его собственном предмете.
Особая тема RFC 5235 возникает ещё до выбора действия: локальное исследование превращается в переносимое значение и может потерять различие между чистотой и отсутствием проверки.
Чего источники не устанавливают
Стандарты не называют современного поставщика, внедрение, уровень ошибок, вредоносную кампанию или инцидент. Реестр IANA подтверждает регистрацию расширений, а не их распространение. Не каждый ноль обязан вести к блокировке: процесс с малым ущербом может принять неизвестность. Но это решение о риске, а не доказательство чистоты.
Шкала virustest различает неизвестное, чистое, обезвреженное, возможное и определённое заражение. Все эти состояния по-прежнему зависят от процесса, актуальность и охват которого находятся вне числа.
Сохранять значение и квитанцию выполнения
Документ результата должен содержать расширение, шкалу, значение, сравнение, ветвь и версию скрипта. Документ выполнения — факт запуска, сканер, правила, время обновления, исследованный объект, исключения, ошибки, доверенный канал и ответственного за политику. Действие и конечный эффект учитываются отдельно.
Непроверенное, неизвестное, частичное и прерванное состояния нельзя принудительно превращать в «чисто» ради числового поля. Иначе расследованию нечего будет восстанавливать.
Принцип Lu Heng о приоритете рабочей реальности требует назначенного субъекта. Имя протокола не несёт ответственности. Конкретный руководитель должен определить, когда неоднозначность допустима, а когда необходимо доказать сам факт проверки.
Sources
- RFC 5235: расширения Sieve Spamtest и Virustest
- RFC 3685: предыдущая спецификация
- RFC 5228: базовая спецификация Sieve
- RFC 5231: реляционное расширение
- RFC 5429: отклонение в Sieve
- RFC 6785: Sieve для событий IMAP
- Реестр расширений Sieve IANA
- Lu Heng: Reality, Not Advocacy, Is the Product
- Lu Heng: Running-Code Primacy
- Lu Heng: The Agency Problem
Дополнительный нормативный архив
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров
