Summary

  • RFC 5235 は実装固有のスパム・ウイルス検査を可搬な値へ正規化するが、spamtest :percent のゼロには「検査済みで正常」「未検査」「実行状況不明」が重なる。
  • 重要な判断では、正規化値とは別に検査実行と来歴を記録し、Sieve の分岐、選択された処理、最終結果までをそれぞれ独立した証拠として扱う必要がある。

ゼロの前にあった仕事

あるメールは最新のルールで検査され、スパムの兆候が見つからなかった。別のメールは検査機能が止まった経路を通った。さらに別の環境では、Sieve が上流検査の実行有無を把握できなかった。百分率モードでは三者ともゼロになり得る。

RFC 5235 の目的は、異なる実装の検査結果をスクリプトが共通の形式で比較できるようにすることだ。したがって値が答えるのは「比較対象として何が渡されたか」であり、「どの検査が確実に動いたか」ではない。

この二つを一つの成功表示にまとめると、証拠がない状態が正常判定に見えてしまう。

正規化は詳細を捨てる設計である

実装はローカルな検査結果を正規化文字列として提供する。固有の説明文も使えるが、それに依存するスクリプトは可搬性を失うと RFC は注意している。

共通尺度は有用だ。しかし通常、スキャナー名、エンジン版、ルール更新時刻、検査したメッセージ表現、除外した添付、タイムアウト、未実行の理由までは運ばない。値は元の記録の写像であって、元の記録そのものではない。

自動処理は少数の安定した値を必要とする。一方、監査は差異と例外を必要とする。両者を同じ列に押し込めず、可搬値の横に実行記録を残すべきだ。

尺度が変わればゼロの意味も変わる

:percent を使わない spamtest では、ゼロは未検査または不明、一は検査済みで確実に正常を意味する。百分率では、検査済みで正常な場合もゼロに含まれる。

尺度を保存せず数字だけ残せば、値の命題が失われる。十段階から百分率へ移行しても画面は同じゼロを示すため、履歴の意味が静かに変わり得る。

実行の有無は関係比較 :count で別に問える。一なら検査済み、ゼロなら未実行または Sieve に判断不能である。ただし、これはスキャナーの身元、鮮度、検査範囲、結果経路の真正性までは証明しない。

結果を書ける主体は判断を動かせる

実装によっては私的なメールヘッダーで結果を運ぶ。RFC 5235 は、正当な検査プロセスだけが結果を提供し、送信者や中継者が偽造できないように求める。

その理由は明快だ。フィールドが分岐を決めるなら、フィールドを書ける者は方針に影響できる。正規化値は単なる説明ではなく、小さな権限表明でもある。

もっとも、真正な値でも検査器が古ければ質は不足する。RFC は更新を保つよう促し、ウイルス検査が完全ではないとも述べる。経路の完全性と検査の適合性は別問題だ。

値から利用者の結果までには距離がある

正規化値があり、比較によって分岐が決まり、スクリプトが処理を選び、システムが実行を試みる。その後に保存、転送、拒否の記録が生まれ、利用者の観測はさらに先にある。

ゼロは検査実行を証明しない。分岐の成立は処理完了を証明しない。メールボックスへの格納も、人が安全に読んだことを証明しない。各段階は自分の対象に合った受領記録を必要とする。

RFC 5235 の固有の論点は、処理の種類ではなく、ローカル検査が可搬な結果へ変換される時点で何が消えるかにある。

資料が示さないこと

標準は現行製品、導入率、誤検知率、攻撃事例、障害を示していない。IANA 登録は拡張の登録を示すだけで、普及や実装品質の証明ではない。

また、すべてのゼロを拒否すべきだという主張でもない。影響の小さい処理なら、不明を受け入れる判断もあり得る。ただしそれはリスク受容であり、正常を証明した事実ではない。

値と実行を二つの記録にする

結果記録には拡張、尺度、値、比較、分岐、スクリプト版を残す。実行記録には検査の有無、スキャナーとルール、更新時刻、検査対象、除外、エラー、信頼経路、責任者を残す。処理と最終結果も別に追跡する。

未検査、不明、時間切れ、部分検査を正式な状態として保存する。数値欄を埋めるために正常へ変換してはならない。

Lu Heng の現実優先の原則に従えば、プロトコル名は稼働証拠にも責任主体にもならない。どの曖昧さを許容するかは、特定可能な意思決定者が引き受けるべきである。

Sources

追加の標準記録

  1. RFC 5235 テキスト
  2. RFC 5235 情報ページ
  3. RFC 5235 Datatracker
  4. RFC 5235 履歴
  5. RFC 5235 正誤表
  6. RFC 5235 被参照記録