要約

  • RFC 3459 は個々の MIME 本文パートに Handling=REQUIRED|OPTIONAL を付け、必須パートを渡せなければ全体を失敗させ、任意パートなら通知なしで削除できるようにした。
  • 無印と未知の値は REQUIRED として扱われ、署名・暗号化の外包、制御オブジェクト、内容のどこに印を置くかで、ゲートウェイの変換権限が変わった。

部分配信には送信者の契約が必要だった

一般的なインターネットメールでは、MIME 対応受信側は表示器を持たなくても各本文パートを保持または利用可能にすることが期待された。音声メール系はもっと狭い。音声とファクスは保存できても、ワープロ文書や映像を保存できないことがある。端末能力を知るコンテンツゲートウェイは、受信側が扱えない部分を除く必要があった。

2003 年 1 月の RFC 3459 はその変換を明示的にした。テキスト、RFC Editor、Datatracker、履歴、参照、被参照、正誤情報が検証可能な記録を定める。この仕様は RFC 3204 を更新し、Handling パラメータを ISUP/QSIG の運搬から独立させた。

Content-Disposition に付く REQUIRED は、そのパートを受信系が渡せなければ送信者は全体を配信済みと見なさない、という意味である。一つの必須パートの失敗が全体の失敗になる。OPTIONAL は、渡せない部分をゲートウェイが黙って削除でき、別の REQUIRED パートが失敗しない限り配信失敗を返してはならない、という意味だった。

これは重要度や緊急度の順位ではない。変換する権限と失敗の帰結を割り当てる印である。送信ソフトが利用者の知らない補助パートを加える場合、その部分を任意にできれば、能力の低い音声系が不要な添付のために有用な録音まで拒む事態を避けられる。

削除、全体失敗、通知は別の判断だった

既定値は保守的だった。印のないパートは REQUIRED。将来の未知の値も REQUIRED として扱う。古い実装は従来の MIME 規則で未知の disposition パラメータを無視せざるを得ないが、新しいゲートウェイは理解できない意味の内容を黙って捨てない。RFC 2045 が MIME の基礎を、RFC 2421 が制約された音声メッセージの背景を示す。

critical という印だけでは通知を要求しない。SMTP の DSN は RFC 3461、MDN は RFC 3798 に従い、保存・表示不能には RFC 3463 の 5.6.1 を用い得る。最終配信前のゲートウェイなら DSN、配信後にユーザーエージェントとして動くなら MDN、SIP なら応答状態であり、RFC 3204 の場合は 415 になる。証拠の種類を決めるのは役割と位置で、REQUIRED という語だけではない。

暗号の包みでは印の位置が政策になった

RFC 1847 の multipart security では差がさらに大きい。multipart/signed 外包を REQUIRED にすれば、外包を壊さず端から端まで署名を検証することが要求され、端末が検証不能なら拒否する。署名制御オブジェクトを REQUIRED にすればゲートウェイ検証も可能だが、検証失敗は拒否になる。署名情報が OPTIONAL、署名対象本文が REQUIRED なら、能力のない端末向けに署名情報を除去できる。ただし可能なら検証して改変を知らせることが強く推奨された。RFC 2480 は関連する disposition の指針を与える。

暗号化では管轄がさらに明白になる。暗号制御オブジェクトが REQUIRED なら端から端まで暗号化されたままでなければならず、復号できない端末へのメッセージは失敗する。OPTIONAL なら、能力のあるゲートウェイが復号し、平文を転送できる。その許可は送信者が制御オブジェクトに印を置いたことから生じる。暗号文の内側だけに印を置くと、ゲートウェイは印を読むために先に復号しなければならない。この循環を避けるため、見えない無印の暗号内容は REQUIRED のままだった。

RFC 3238 の OPES 要件は、変換に同意、通知、非遮断性が必要という広い説明責任を示す。規則はゲートウェイの善性を証明せず、本文構造と端末能力を把握した後に許される行為を限定する。

Heng Lu の後年の現実の層で見れば、送信者の印、能力の申告、実際の変換、返された結果は別の証拠である。動くコードの優先は、安心できるラベルではなく前後の MIME 木を比較するよう促す。これは後世の編集的な読み方で、RFC 著者の内心を示すものではない。

RFC 3459 は部分配信を見えない事故から、帰結を明示した契約へ変えた。任意パートが消えても配信は成功し得る。小さな必須パート一つの喪失でも全体は失敗し得る。

出典