rfc-5438

Instant Message Disposition Notification (IMDN)

E. Burger, H. Khartabil
date2009-02 streamIETF arearai wgsimple statusPROPOSED STANDARD pages38 canonicalhttps://www.rfc-editor.org/rfc/rfc5438 doi10.17487/RFC5438 errataview
Instant Messaging (IM) refers to the transfer of messages between users in real-time. This document provides a mechanism whereby endpoints can request Instant Message Disposition Notifications (IMDN), including delivery, processing, and display notifications, for page-mode instant messages. The Common Presence and Instant Messaging (CPIM) data format specified in RFC 3862 is extended with new header fields that enable endpoints to request IMDNs. A new message format is also defined to convey IMDNs. This document also describes how SIP entities behave using this extension. [STANDARDS-TRACK]

Extracted elements (27)

design-rationale §7.1.1.2

A DateTime header field is included in IMs and echoed in IMDNs to allow human-level correlation on devices with limited state retention (e.g., mobile devices that lose power or purge sent items), since the spec does not mandate that the IM Sender keep state.

realtime, sip

design-rationale §5.3

Display notification indicates the start of rendering (including audio/video) rather than confirmed user reading, because there is no positive acknowledgement from the user. Therefore, the protocol explicitly cannot be used as a certified proof of reading.

realtime, sip

design-rationale §14

Routing information (IMDN-Route, IMDN-Record-Route) was placed in the IMDN application-layer payload rather than the transport layer to make the IMDN mechanism independent of the transport protocol. The acknowledged consequence is that this eliminates the possibility of end-to-end encryption.

realtime, sip, security

interoperability-note §7.1.2

An IM Sender matches an IMDN to an IM by correlating the Message-ID header field in the IM with the <message-id> element in the IMDN XML body. The Message-ID of the IMDN itself is distinct and unrelated to the IM's Message-ID.

realtime, sip

interoperability-note §13

MSRP already provides built-in positive and negative delivery reports but lacks display or processing notifications. IMDN is scoped to page-mode only; session-mode use via MSRP is left for future standardization.

realtime, sip

normative-requirement §7.2.1 MUST NOT

An IM Recipient MUST NOT construct more than one IMDN per disposition type. It MUST NOT generate 'processing' notifications. A Disposition-Notification header field MUST NOT appear in an IMDN, and an IM Sender MUST NOT send an IMDN for an IMDN.

realtime, sip

normative-requirement §6.4 MUST

An intermediary MUST NOT add an Original-To header field if one already exists, and MUST NOT change this header field value if it is already present. If the intermediary changes the CPIM To header field value, it MUST insert an Original-To header field.

realtime, sip

normative-requirement §8 MUST

An intermediary MUST remove any information about final recipients of a list if list membership is not disclosed, by removing the <recipient-uri> and/or <original-recipient-uri> elements from the IMDN body before forwarding.

realtime, sip, privacy

normative-requirement §7.2.1 MUST

If IMDN-Record-Route header fields appear in the IM, the IM Recipient constructing the IMDN MUST copy the contents into IMDN-Route header fields and maintain their order. If there is no IMDN-Record-Route header field, the IM Recipient MUST send the IMDN to the URI in the From header field.

realtime, sip

normative-requirement §14 MUST

If the IM is encrypted, the IM Recipient or intermediary MUST encrypt the IMDN body. If the IM Recipient has a certificate, it MUST sign the IMDN. The same level of security applied to an IM MUST be applied to its IMDNs.

security, crypto, realtime

normative-requirement §7.2.1 MUST

IM Recipients MUST insert a Content-Disposition header field set to the value 'notification' in constructed IMDNs, indicating to the IM Sender that the message is an IMDN.

realtime, sip

normative-requirement §12.2 MUST NOT

SIP Proxies MUST NOT generate IMDNs but MUST forward them like any other SIP request.

realtime, sip

normative-requirement §7.1.1.2 MUST

The IM Sender MUST include the DateTime CPIM header field if it would like an IMDN, to allow human-level correlation between an IM and its IMDN when state cannot be retained.

realtime, sip

normative-requirement §6.2 MUST

The IM Sender MUST include the Disposition-Notification header field to indicate the desire to receive IMDNs from the IM Recipient for that specific IM.

realtime, sip

normative-requirement §6.3 MUST

The IM Sender MUST include the Message-ID header field in the IM for which he wishes to receive an IMDN. The Message-ID MUST be selected to minimize collision chance and be prohibitive for attackers to forge; it is RECOMMENDED to use a cryptographically secure PRNG with at least 64 bits of randomness.

realtime, sip, security

normative-requirement §11.1 MUST

The IMDN payload MUST be well-formed XML, MUST be based on XML 1.0, and MUST be encoded using UTF-8.

realtime, json

normative-requirement §12.1.1 MUST

When transporting via SIP, the Content-type header field MUST be of MIME type 'message/cpim' for both IMs and IMDNs.

realtime, sip

privacy-consideration §14.2

IMDNs provide a fine-grained view of IM Recipient activity. It is strongly RECOMMENDED that the IM Recipient obtain the user's consent before sending an IMDN. The IM Recipient may silently ignore IMDN requests or always send 'forbidden' status to protect user privacy.

privacy, realtime

protocol-element §6

Five new CPIM header fields are defined in the 'urn:ietf:params:imdn' namespace: Disposition-Notification, Message-ID, Original-To, IMDN-Record-Route, and IMDN-Route. All CPIM messages prepend these with a namespace prefix assigned via the NS header field.

realtime, sip

protocol-element §11.1

The IMDN payload is an XML document of MIME type 'message/imdn+xml' with root element <imdn>, containing mandatory sub-elements <message-id> and <datetime>, optional <recipient-uri>, <original-recipient-uri>, <subject>, and exactly one of <delivery-notification>, <processing-notification>, or <display-notification>, each with a mandatory <status> child.

realtime, sip

protocol-element §5

Three categories of disposition types are defined: 'delivery' (states: delivered, failed, forbidden, error), 'processing' (states: processed, stored, forbidden, error, generated only by intermediaries), and 'display' (states: displayed, forbidden, error).

realtime, sip

registry §15

RFC 5438 registers the MIME type 'message/imdn+xml' for IMDN payloads, the XML namespace 'urn:ietf:params:xml:ns:imdn', the URN sub-registry 'urn:ietf:params:imdn' for IMDN header parameters (initial entries: Disposition-Notification, Message-ID, Original-To, IMDN-Record-Route, IMDN-Route), and the Content-Disposition value 'notification'.

registry, realtime

security-consideration §14

An attacker can use the IMDN system to mount denial-of-service attacks by sending IMs with IMDN requests to flood intermediaries (e.g., large URI-list expansion) or to 'bounce' IMDNs from unsuspecting endpoints. Logging all IMDN requests on the recipient user agent is suggested as a mitigation for tracking abuse.

security, realtime

security-consideration §14.3

IMDN cannot be relied upon as a certified delivery service: IMDNs may be lost in transit, the IM Recipient may bypass IMDN issuance through policy or user agent manipulation, and the IM Recipient can lie about or delay the timestamp without any protocol-level detection.

security, realtime

security-consideration §14.1

IMDNs may be forged to falsely indicate that an IM was delivered or displayed. Message-IDs MUST use at least 64 bits of cryptographic randomness to prevent off-path attackers from forging valid IMDNs. Endpoints wishing to make automatic use of IMDNs should take precautions against denial-of-service from forged or unsolicited IMDNs.

security, realtime

wire-format §8.3

Aggregated IMDNs are encoded as multipart/mixed MIME, with each individual IMDN included as a 'message/imdn+xml' part. The outer CPIM message carries Content-Disposition: notification.

realtime, sip

wire-format §10

The Disposition-Notification header field carries comma-separated notify-req values ('negative-delivery', 'positive-delivery', 'processing', 'display', or Token), each optionally followed by semicolon-separated parameters. The Message-ID field carries a single Token value.

realtime, sip