1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
|
Network Working Group E. Burger
Request for Comments: 5438 Unaffiliated
Category: Standards Track H. Khartabil
Ericsson Australia
February 2009
Instant Message Disposition Notification (IMDN)
Status of This Memo
This document specifies an Internet standards track protocol for the
Internet community, and requests discussion and suggestions for
improvements. Please refer to the current edition of the "Internet
Official Protocol Standards" (STD 1) for the standardization state
and status of this protocol. Distribution of this memo is unlimited.
Copyright Notice
Copyright (c) 2009 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents (http://trustee.ietf.org/
license-info) in effect on the date of publication of this document.
Please review these documents carefully, as they describe your rights
and restrictions with respect to this document.
Abstract
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.
Burger & Khartabil Standards Track [Page 1]
^L
RFC 5438 IMDN February 2009
Table of Contents
1. Introduction ....................................................3
2. Conventions .....................................................4
3. Terminology .....................................................4
4. Overview ........................................................5
5. Disposition Types ...............................................6
5.1. Delivery ...................................................6
5.2. Processing .................................................6
5.3. Display ....................................................7
6. New CPIM Header Fields ..........................................7
6.1. CPIM Header Field Namespace ................................7
6.2. Disposition-Notification ...................................8
6.3. Message-ID .................................................8
6.4. Original-To ................................................8
6.5. IMDN-Record-Route ..........................................9
6.6. IMDN-Route .................................................9
7. Endpoint Behaviour ..............................................9
7.1. IM Sender ..................................................9
7.1.1. Constructing Instant Messages .......................9
7.1.2. Matching IMs with IMDNs ............................11
7.1.3. Keeping State ......................................11
7.1.4. Aggregation of IMDNs ...............................12
7.2. IM Recipient ..............................................12
7.2.1. Constructing IMDNs .................................12
8. Intermediary Behaviour .........................................15
8.1. Constructing Processing Notifications .....................16
8.2. Constructing Delivery Notifications .......................17
8.3. Aggregation of IMDNs ......................................17
9. Identifying Messages ...........................................19
10. Header Fields Formal Syntax ...................................20
11. IMDN Format ...................................................20
11.1. Structure of an XML-Encoded IMDN Payload .................20
11.1.1. The <message-id> Element ..........................21
11.1.2. The <datetime> Element ............................22
11.1.3. The <recipient-uri> Element .......................22
11.1.4. The <original-recipient-uri> Element ..............22
11.1.5. The <subject> Element .............................22
11.1.6. The <delivery-notification>,
<processing-notification>, and
<display-notification> Elements ...................22
11.1.7. The <status> Element ..............................22
11.1.8. MIME Type for IMDN Payload ........................23
11.1.9. The RelaxNG Schema ................................23
12. Transporting Messages Using SIP ...............................27
12.1. Endpoint Behaviour .......................................27
12.1.1. Sending Requests ..................................27
12.1.2. Sending Responses .................................27
Burger & Khartabil Standards Track [Page 2]
^L
RFC 5438 IMDN February 2009
12.1.3. Receiving Requests ................................27
12.2. Intermediary Behaviour ...................................29
13. Transporting Messages using MSRP ..............................30
14. Security Considerations .......................................30
14.1. Forgery ..................................................33
14.2. Confidentiality ..........................................33
14.3. IMDN as a Certified Delivery Service .....................34
15. IANA Considerations ...........................................34
15.1. message/imdn+xml MIME TYPE ...............................34
15.2. XML Registration .........................................35
15.3. URN Registration for IMDN Header Parameters ..............35
15.4. Content-Disposition: notification ........................36
16. Acknowledgements ..............................................36
17. References ....................................................37
17.1. Normative References .....................................37
17.2. Informative References ...................................37
1. Introduction
In many user-to-user message exchange systems, message senders often
wish to know if the human recipient actually received a message or
has the message displayed.
Electronic mail [RFC5321] offers a solution to this need with Message
Disposition Notifications [RFC3798]. After the recipient views the
message, her mail user agent generates a Message Disposition
Notification, or MDN. The MDN is an email that follows the format
prescribed by RFC 3798 [RFC3798]. The fixed format ensures that an
automaton can process the message.
The Common Presence and Instant Messaging (CPIM) format, Message/CPIM
[RFC3862], is a message format used to generate instant messages.
The Session Initiation Protocol (SIP [RFC3261]) can carry instant
messages generated using message/CPIM in SIP MESSAGE requests
[RFC3428].
This document extends the Message/CPIM message format in much the
same way Message Disposition Notifications extends electronic mail.
This extension enables Instant Message Senders to request, create,
and send Instant Message Disposition Notifications (IMDN). This
mechanism works for page-mode as well as session-mode instant
messages. This document only discusses page-mode. Session-mode is
left for future standardisation efforts.
Burger & Khartabil Standards Track [Page 3]
^L
RFC 5438 IMDN February 2009
This specification defines three categories of disposition types:
"delivery", "processing", and "display". Specific disposition types
provide more detailed information. For example, the "delivery"
category includes "delivered" to indicate successful delivery and
"failed" to indicate failure in delivery.
2. Conventions
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119 [RFC2119].
This document refers generically to the sender of a message in the
masculine (he/him/his) and the recipient of the message in the
feminine (she/her/hers). This convention is purely for convenience
and makes no assumption about the gender of a message sender or
recipient.
3. Terminology
o IM: An Instant Message generated using the Message/CPIM format.
o IMDN: An Instant Message Disposition Notification generated using
the Message/CPIM format that carries an IMDN XML document.
o Message: An IM or an IMDN generated using the Message/CPIM format.
o IM Sender: An endpoint (user agent) generating and sending an IM.
Also, the endpoint request IMDNs for an IM. Quite often, the IM
Sender is the IMDN Recipient. However, that is not always the
case, since the IMDN uses the From header in the CPIM message.
That value is often the IM Sender's Address of Record (AOR). This
address may in fact resolve to different user agents.
o IM Recipient: An endpoint (user agent) that receives IMs. The IM
Recipient, as the node that presumably renders the IM to the user,
generates and sends delivery IMDNs to IMs, if requested by the IM
Sender and allowed by the IM Recipient.
o Endpoint: An IM Sender or an IM Recipient.
o Intermediary: An entity in the network, most often an application
server (including URI-List and store-and-forward servers), that
forwards an IM to its final destination. Intermediaries also can
generate and send processing IMDNs to IMs, if requested by the IM
Sender and allowed by policy.
Burger & Khartabil Standards Track [Page 4]
^L
RFC 5438 IMDN February 2009
o Gateway: An intermediary that translates between different IM
systems that use different protocols.
o IMDN payload: An XML document carrying the disposition
notification information. In this specification, it is of MIME
type "message/imdn+xml".
o Disposition type: This specification defines three categories of
disposition types: "delivery", "processing", and "display".
o Transport Protocol Message: A SIP or other protocol message that
contains an IM or IMDN.
4. Overview
The diagram below shows the basic protocol flow. An IM Sender
creates an IM, adds IMDN request information that the IM Sender is
interested in receiving, and then sends the IM. At a certain point
in time, the IM Recipient or an intermediary determines that the user
or application has received, did not receive, displayed, or otherwise
disposed of the IM. The mechanism by which an IM Recipient
determines its user has read an IM is beyond the scope of this
document. At that point, the IM Recipient or intermediary
automatically generates a notification message to the IM Sender.
This notification message is the Instant Message Disposition
Notification (IMDN).
+--------------+ +--------------+
| IM Sender | | IM Recipient |
|IMDN Recipient| | IMDN Sender |
+--------------+ +--------------+
| |
| |
| 1. IM requesting IMDN |
|-------------------------------------->|
| |
| |
| 2. IMDN (disposition) |
|<--------------------------------------|
| |
| |
Basic IMDN Message Flow
Note the recipient of an IMDN, in some instances, may not be the IM
Sender. This is specifically true for page-mode IMs where the
Address of Record (AOR) of the IM Sender, which is present in the IM,
resolves to a different location or user agent than that from which
Burger & Khartabil Standards Track [Page 5]
^L
RFC 5438 IMDN February 2009
the IM originated. This could happen, for example, if resolving the
AOR results in forking the request to multiple user agents. For
simplicity, the rest of this document assumes that the IM Sender and
the IMDN Recipient are the same and therefore will refer to both as
the IM Sender.
5. Disposition Types
There are three broad categories of disposition states. They are
delivery, processing, and display.
5.1. Delivery
The delivery notification type indicates whether or not the IM has
been delivered to the IM Recipient. The delivery notification type
can have the following states:
o "delivered" to indicate successful delivery.
o "failed" to indicate failure in delivery.
o "forbidden" to indicate denial for the IM Sender to receive the
requested IMDN. The IM Recipient can send the "forbidden" state,
but usually it is an intermediary that sends the message, if one
configures it to do so. For example, it is possible the
administrator has disallowed IMDNs.
o "error" to indicate an error in determining the fate of an IM.
5.2. Processing
The processing notification type indicates that an intermediary has
processed an IM. The processing notification type can have the
following states:
o "processed" to indicate that the intermediary has performed its
task on the IM. This is a general state of the IM.
o "stored" to indicate that the intermediary stored the IM for later
delivery.
o "forbidden" to indicate denial for the IM Sender to receive the
requested IMDN. The "forbidden" state is sent by an intermediary
that is configured to do so. For example, the administrator has
disallowed IMDNs.
o "error" to indicate an error in determining the fate of an IM.
Burger & Khartabil Standards Track [Page 6]
^L
RFC 5438 IMDN February 2009
5.3. Display
The display notification type indicates whether or not the IM
Recipient rendered the IM to the user. The display notification type
can have the following states:
o "displayed" to indicate that the IM has been rendered to the user.
o "forbidden" to indicate denial, by the IM Recipient, for the IM
Sender to receive the requested IMDN.
o "error" to indicate an error in determining the fate of an IM.
In addition to text, some IMs may contain audio, video, and still
images. Therefore, the state "displayed" includes the start of
rendering the audio or video file to the user.
Since there is no positive acknowledgement from the user, one cannot
determine if the user actually read the IM. Thus, one cannot use the
protocol described here as a service to prove someone actually read
the IM.
6. New CPIM Header Fields
This specification extends the CPIM data format specified in RFC 3862
[RFC3862]. A new namespace is created as well as a number of new
CPIM header fields.
6.1. CPIM Header Field Namespace
Per CPIM [RFC3862], this specification defines a new namespace for
the CPIM extension header fields defined in the following sections.
The namespace is:
urn:ietf:params:imdn
As per CPIM [RFC3862] requirements, the new header fields defined in
the following sections are prepended, in CPIM messages, by a prefix
assigned to the URN through the NS header field of the CPIM message.
The remainder of this specification always assumes an NS header field
like this one:
NS: imdn <urn:ietf:params:imdn>.
Of course, clients are free to use any prefix while servers and
intermediaries must accept any legal namespace prefix specification.
Burger & Khartabil Standards Track [Page 7]
^L
RFC 5438 IMDN February 2009
6.2. Disposition-Notification
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. Section 10 defines the syntax.
6.3. Message-ID
The IM Sender MUST include the Message-ID header field in the IM for
which he wishes to receive an IMDN. The Message-ID contains a
globally unique message identifier that the IM Sender can use to
correlate received IMDNs. Because the Message-ID is used by the
sender to correlate IMDNs with their respective IMs, the Message-ID
MUST be selected so that:
o There is a minimal chance of any two Message-IDs accidentally
colliding during the time period within which an IMDN might be
received.
o It is prohibitive for an attacker who has seen one or more valid
Message-IDs to generate additional valid Message-IDs.
The first requirement is a correctness requirement to ensure correct
matching by the sender. The second requirement prevents off-path
attackers from forging IMDNs. In order to meet both of these
requirements, it is RECOMMENDED that Message-IDs be generated using a
cryptographically secure, pseudo-random number generator and contain
at least 64 bits of randomness, thus reducing the chance of a
successful guessing attack to n/2^64, where n is the number of
outstanding valid messages.
When the IM Sender receives an IMDN, it can compare its value with
the value of the <message-id> element present in the IMDN payload.
IMDNs also carry this header field. Note that since the IMDN is
itself an IM, the Message-ID of the IMDN will be different than the
Message-ID of the original IM. Section 10 defines the syntax.
6.4. Original-To
An intermediary MAY insert an Original-To header field into the IM.
The value of the Original-To field MUST be the address of the IM
Receiver. The IM Recipient uses this header to indicate the original
IM address in the IMDNs. The IM Recipient does this by populating
the <original-recipient-uri> element in the IMDN. The intermediary
MUST insert this header if the intermediary changes the CPIM To
header field value. The header field MUST NOT appear more than once
in an IM. The intermediary MUST NOT change this header field value
if it is already present. Section 10 defines the syntax.
Burger & Khartabil Standards Track [Page 8]
^L
RFC 5438 IMDN February 2009
6.5. IMDN-Record-Route
An intermediary MAY insert an IMDN-Record-Route header field to the
IM. This enables the intermediary to receive and process the IMDN on
its way back to the IM Sender. The value of the IMDN-Record-Route
header field MUST be the address of the intermediary. Multiple IMDN-
Record-Route header fields can appear in an IM. Section 10 defines
the syntax.
6.6. IMDN-Route
The IMDN-Route header field provides routing information by including
one or more addresses to which to route the IMDN. An intermediary
that needs the IMDN to flow back through the same intermediary MUST
add the IMDN-Record-Route header. When the IM Recipient creates the
corresponding IMDN, the IM Recipient copies the IMDN-Record-Route
headers into corresponding IMDN-Route header fields. Section 10
defines the syntax.
7. Endpoint Behaviour
7.1. IM Sender
7.1.1. Constructing Instant Messages
An IM is constructed using the CPIM message format defined in RFC
3862 [RFC3862].
7.1.1.1. Adding a Message-ID Header Field
If the IM Sender requests the reception of IMDNs, the IM Sender MUST
include a Message-ID header field. This header field enables the IM
Sender to match any IMDNs with their corresponding IMs. See
Section 6.3 for Message-ID uniqueness requirements.
7.1.1.2. Adding a DateTime Header Field
Some devices are not able to retain state over long periods. For
example, mobile devices may have memory or battery limits. Such
limits mean these devices may not be able to, or may choose not to,
keep sent messages for the purposes of correlating IMDNs with sent
IMs. To make some use of IMDN in this case, we add a time stamp to
the IM to indicate when the user sent the message. The IMDN returns
this time stamp to enable the user to correlate the IM with the IMDN
at the human level. We use the DateTime CPIM header field for this
purpose. Thus, if the IM Sender would like an IMDN, the IM Sender
MUST include the DateTime CPIM header field.
Burger & Khartabil Standards Track [Page 9]
^L
RFC 5438 IMDN February 2009
7.1.1.3. Adding a Disposition-Notification Header Field
The Disposition-Notification conveys the type of disposition
notification requested by the IM Sender. There are three types of
disposition notification: delivery, processing, and display. The
delivery notification is further subdivided into failure and success
delivery notifications. An IM Sender requests failure delivery
notification by including a Disposition-Notification header field
with value "negative-delivery". Similarly, a success notification is
requested by including a Disposition-Notification header field with
value "positive-delivery". The IM Sender can request both types of
delivery notifications for the same IM.
The IM Sender can request a processing notification by including a
Disposition-Notification header field with value "processing".
The IM Sender can also request a display notification. The IM Sender
MUST include a Disposition-Notification header field with the value
"display" to request a display IMDN.
The absence of this header field or the presence of the header field
with an empty value indicates that the IM Sender is not requesting
any IMDNs. Disposition-Notification header field values are comma-
separated. The IM Sender MAY request more than one type of IMDN for
a single IM.
Future extensions may define other disposition notifications not
defined in this document.
Section 10 describes the formal syntax for the Disposition-
Notification header field. The following is an example CPIM body of
an IM where the IM Sender requests positive and negative delivery
notifications, but not display notification or processing
notifications:
From: Alice <im:alice@example.com>
To: Bob <im:bob@example.com>
NS: imdn <urn:ietf:params:imdn>
imdn.Message-ID: 34jk324j
DateTime: 2006-04-04T12:16:49-05:00
imdn.Disposition-Notification: positive-delivery, negative-delivery
Content-type: text/plain
Content-length: 12
Hello World
Burger & Khartabil Standards Track [Page 10]
^L
RFC 5438 IMDN February 2009
7.1.2. Matching IMs with IMDNs
An IM Sender matches an IMDN to an IM by matching the Message-ID
header field value in the IM with the <message-id> element value in
the body of the IMDN. If the IM was delivered to multiple
recipients, the IM Sender uses the <recipient-uri> element and the
<original-recipient-uri> element in the XML body of the IMDN it
received to determine if the IM was sent to multiple recipients and
to identify the IM Recipient that sent the IMDN.
An IM Sender can determine an IMDN is a disposition notification by
noting if the Content-Disposition in the IMDN is "notification".
This does mean the IM Sender MUST understand the Content-Disposition
MIME header in CPIM messages.
7.1.3. Keeping State
This specification does not mandate the IM Sender to keep state for a
sent IM.
Once an IM Sender sends an IM containing an IMDN request, it MAY
preserve the IM context (principally the Message-ID), other user-
identifiable information such as the IM subject or content, and the
date and time it was sent. Without preservation of the IM context,
the IM Sender will not be able to correlate the IMDN with the IM it
sent. The IM Sender may find it impossible to preserve IM state if
it has limited resources or does not have non-volatile memory and
then loses power.
There is, however, the concept of a "Sent Items" box in an
application that stores sent IMs. This "Sent Items" box has the
necessary information and may have a fancy user interface indicating
the state of a sent IM. A unique Message-ID for this purpose proves
to be useful. The length of time for items to remain in the "Sent
Items" box is a user choice. The user is usually free to keep or
delete items from the "Sent Items" box as she pleases or as the
memory on the device reaches capacity.
Clearly, if an IM Sender loses its sent items state (for example, the
user deletes items from the "Sent Items" box), the client may use a
different display strategy in response to apparently unsolicited
IMDNs.
This specification also does not mandate an IM Sender to run any
timers waiting for an IMDN. There are no time limits regarding when
IMDNs may be received.
Burger & Khartabil Standards Track [Page 11]
^L
RFC 5438 IMDN February 2009
IMDNs may legitimately never be received, so the time between the
sending of an IM and the generation and ultimate receipt of the IMDN
may simply take a very long time. Some clients may choose to purge
the state associated with the sent IM. This is the reason for adding
the time stamp in the IM and having it returned in the IMDN. This
gives the user some opportunity to remember what IM was sent. For
example, if the IMDN indicates that the IM the user sent at 2 p.m.
last Thursday was delivered, the user has a chance to remember that
they sent an IM at 2 p.m. last Thursday.
7.1.4. Aggregation of IMDNs
An IM Sender may send an IM to multiple recipients in one Transport
Protocol Message (typically using a URI-List server [RFC5365]) and
request IMDNs. An IM Sender that requested IMDNs MUST be prepared to
receive multiple aggregated or non-aggregated IMDNs. See Section 8.3
for details.
7.2. IM Recipient
7.2.1. Constructing IMDNs
IM Recipients examine the contents of the Disposition-Notification
header field of the CPIM message to determine if the recipient needs
to generate an IMDN for that IM. Disposition-Notification header
fields of CPIM messages can include one or more values. IM
Recipients may need to generate zero, one, or more IMDNs for that IM,
for example, a delivery notification as well as a display
notification. In this case, the IM Recipient MUST be able to
construct multiple IMDNs per IM. An IM Recipient MUST NOT construct
more than one IMDN per disposition type. That is, it must not
generate a delivery notification indicating "delivered" followed by a
delivery notification indicating "failed" for the same IM. If the IM
Sender requested only failure notifications and the IM was
successfully delivered, then no IMDNs will be generated. If the IM
Recipient does not understand a value of the Disposition-Notification
header field, the IM Recipient ignores that value.
The IM Recipient MUST NOT generate "processing" notifications.
A Disposition-Notification header field MUST NOT appear in an IMDN
since it is forbidden to request an IMDN for an IMDN. An IM Sender
MUST ignore a delivery notification request in an IMDN if present.
The IM Sender MUST NOT send an IMDN for an IMDN.
Burger & Khartabil Standards Track [Page 12]
^L
RFC 5438 IMDN February 2009
An IMDN MUST contain a Message-ID header field. The same rules of
uniqueness for the Message-ID header field that appears in an IM
apply to an IMDN. The Message-ID header field in the IMDN is
different and unrelated to the one in the IM.
An IM may contain an IMDN-Record-Route header field (see Section 8
for details). If IMDN-Record-Route header fields appear in the IM,
the IM Recipient constructing the IMDN MUST copy the contents of the
IMDN-Record-Route header fields into IMDN-Route header fields in the
IMDN and maintain their order. The IMDN is then sent to the URI in
the top IMDN-Route header field. IMDN-Record-Route header fields do
not make sense in an IMDN and therefore MUST NOT be placed in an
IMDN. IMDN Recipients MUST ignore it if present.
If there is no IMDN-Record-Route header field, the IM Recipient MUST
send the IMDN to the URI in the From header field.
As stated in CPIM [RFC3862], CPIM messages may need to support MIME
headers other than Content-type. IM Recipients MUST insert a
Content-Disposition header field set to the value "notification".
This indicates to the IM Sender that the message is an IMDN to an IM
it has earlier sent.
7.2.1.1. Constructing Delivery Notifications
The IM Recipient constructs a delivery notification in a similar
fashion as an IM, using a CPIM body [RFC3862] that carries a
Disposition Notification XML document formatted according to the
rules specified in Section 11. The MIME type of the Disposition
Notification XML document is "message/imdn+xml".
Section 10 defines the schema for an IMDN.
The following is an example CPIM body of an IMDN:
From: Bob <im:bob@example.com>
To: Alice <im:alice@example.com>
NS: imdn <urn:ietf:params:imdn>
imdn.Message-ID: d834jied93rf
Content-type: message/imdn+xml
Content-Disposition: notification
Content-length: ...
<?xml version="1.0" encoding="UTF-8"?>
<imdn xmlns="urn:ietf:params:xml:ns:imdn">
<message-id>34jk324j</message-id>
<datetime>2008-04-04T12:16:49-05:00</datetime>
<recipient-uri>im:bob@example.com</recipient-uri>
Burger & Khartabil Standards Track [Page 13]
^L
RFC 5438 IMDN February 2009
<original-recipient-uri
>im:bob@example.com</original-recipient-uri>
<delivery-notification>
<status>
<delivered/>
</status>
</delivery-notification>
</imdn>
7.2.1.2. Constructing Display Notifications
The IM Recipient constructs a display notification in a similar
fashion as the delivery notification. See Section 7.2.1.1 for
details.
Section 10 defines the schema for an IMDN.
The following is an example:
From: Bob <im:bob@example.com>
To: Alice <im:alice@example.com>
NS: imdn <urn:ietf:params:imdn>
imdn.Message-ID: dfjkleriou432333
Content-type: message/imdn+xml
Content-Disposition: notification
Content-length: ...
<?xml version="1.0" encoding="UTF-8"?>
<imdn xmlns="urn:ietf:params:xml:ns:imdn">
<message-id>34jk324j</message-id>
<datetime>2008-04-04T12:16:49-05:00</datetime>
<recipient-uri>im:bob@example.com</recipient-uri>
<original-recipient-uri
>im:bob@example.com</original-recipient-uri>
<display-notification>
<status>
<displayed/>
</status>
</display-notification>
</imdn>
There are situations where the IM Recipient cannot determine if or
when the IM has been displayed. The IM Recipient in this case
generates a display notification with a <status> value of "error" to
indicate an internal error by the server. Note that the IM Recipient
may choose to ignore any IMDN requests and not send any IMDNs. An IM
Burger & Khartabil Standards Track [Page 14]
^L
RFC 5438 IMDN February 2009
Recipient may not wish to let a sender know whether or not a
particular message has been displayed to her. This could be a per-
message, per-sender, or programmed policy choice.
8. Intermediary Behaviour
In this context, intermediaries are application servers (including
URI-List and store-and-forward servers) and gateways. A gateway is a
server that translates between different IM systems that use
different protocols.
A URI-List server may change the IM Recipient address from its own to
the address of the final recipient of that IM for every copy it makes
that it sends to the list members (see [RFC5365] for details). In
this case, if the IM Sender is requesting an IMDN, the intermediary
SHOULD add an Original-To header field to the IM, populating it with
the address that was in the CPIM To header field before it was
changed. That is, the intermediary populates the Original-To header
field with the intermediary address. Of course, one may configure an
intermediary to restrict it from rewriting or populating the
Original-To field. An intermediary MUST NOT add an Original-To
header field if one already exists. An intermediary MAY have an
administrative configuration to not reveal the original Request-URI,
and as such, MUST NOT add an Original-To header.
An IM reply for a page-mode IM is not linked in any way to the
initial IM and can end up at a different user agent from where the
initial IM originated, depending on how the recipient URI gets
resolved. Therefore, IM replies may traverse different
intermediaries. An IMDN, on the other hand, needs to traverse the
same intermediaries as the IM itself since those intermediaries may
be required to report negative delivery notifications if the IM was
not delivered successfully. Some of those intermediaries are, for
example, store-and-forward servers that may report that an IM has
been processed and later report that the IM has failed to be
delivered.
For the reasons stated above, an intermediary MAY choose to remain on
the path of IMDNs for a specific IM. It can do so by adding a CPIM
IMDN-Record-Route header field as the top IMDN-Record-Route header
field. The value of this field MUST be the intermediary's own
address. An intermediary that does not support this extension will
obviously not add the IMDN-Record-Route header field. This allows
IMDNs to traverse directly from the IM Recipient to the IM Sender
even if the IM traversed an intermediary not supporting this
extension.
Burger & Khartabil Standards Track [Page 15]
^L
RFC 5438 IMDN February 2009
An intermediary receiving an IMDN checks the top IMDN-Route header
field. If that header field carries the intermediary address, the
intermediary removes that value and forwards the IMDN to the address
indicated in the new top IMDN-Route header field. If no additional
IMDN-Route header fields are present, the IMDN is forwarded to the
address in the CPIM To header field.
An intermediary MUST remove any information about the final
recipients of a list if the list membership is not disclosed. The
intermediary does that by removing the <recipient-uri> element and/or
<original-recipient-uri> element from the body of the IMDN before
forwarding it to the IM Sender.
8.1. Constructing Processing Notifications
Intermediaries are the only entities that construct processing
notifications. They do so only if the IM Sender has requested a
"processing" notification by including a Disposition-Notification
header field with value "processing".
The intermediary can create and send "processing" notifications
indicating that an IM has been processed or stored. The intermediary
MUST NOT send more than one IMDN for the same disposition type --
i.e., it must not send a "processing" notification indicating that an
IM is being "processed" followed by another IMDN indicating that the
same IM is "stored".
An intermediary constructs a "processing" notification in a similar
fashion as the IM Recipient constructs a delivery notification. See
Section 7.2.1.1 for details.
The following is an example:
Content-type: Message/CPIM
From: Bob <im:bob@example.com>
To: Alice <im:alice@example.com>
Content-type: message/imdn+xml
Content-Disposition: notification
Content-length: ...
<?xml version="1.0" encoding="UTF-8"?>
<imdn xmlns="urn:ietf:params:xml:ns:imdn">
<message-id>34jk324j</message-id>
<datetime>2008-04-04T12:16:49-05:00</datetime>
<recipient-uri>im:bob@example.com</recipient-uri>
<original-recipient-uri
>im:bob@example.com</original-recipient-uri>
Burger & Khartabil Standards Track [Page 16]
^L
RFC 5438 IMDN February 2009
<processing-notification>
<status>
<processed/>
</status>
</processing-notification>
</imdn>
There are situations where the intermediary cannot know the fate of
an IM. The intermediary in this case generates a processing
notification with a <status> value of "error" to indicate so.
8.2. Constructing Delivery Notifications
Intermediaries MAY construct negative delivery notifications. They
do so only if the IM Sender has requested a "negative-delivery"
notification by including a Disposition-Notification header field
with value "negative-delivery" AND an error was returned for that IM.
The intermediary can create and send "negative-delivery"
notifications indicating that an IM has failed to be delivered. The
intermediary MUST NOT send more than one IMDN for the same
disposition type -- i.e., it must not send a "failed" notification
indicating that an IM has failed followed by another IMDN indicating
that an IMDN is "forbidden".
An intermediary constructs a "negative-delivery" notification much
like the IM Recipient. See Section 7.2.1.1 for details.
8.3. Aggregation of IMDNs
As previously described, URI-List servers are intermediaries.
A URI-List server may choose (using local policy) to aggregate IMDNs
or it may send individual IMDNs instead. When a URI-List server
receives an IM and decides to aggregate IMDNs, it can wait for a
configurable period of time or until all recipients have sent the
IMDN, whichever comes first, before it sends an aggregated IMDN.
Note that some IMDNs, for example "displayed" notifications, may
never come due to user settings. How long to wait before sending an
aggregated IMDN and before a URI-List server removes state for that
IM is an administrator configuration and implementation issue.
A URI-List server MAY choose to send multiple aggregated IMDNs. A
timer can be started, and when it fires, the URI-List server can
aggregate whatever IMDNs it has so far for that IM, send the
aggregated IMDN, and restart the timer for the next batch. This is
needed for scenarios where the IM Sender has requested more than one
Burger & Khartabil Standards Track [Page 17]
^L
RFC 5438 IMDN February 2009
IMDN for a specific IM -- for example, delivery notifications as well
as display notifications -- or when the URI-List server is short on
resources and chooses to prioritise forwarding IMs over IMDNs.
A second timer can be running, and when it fires, the state of the IM
is deleted. In this case, the URI-List server consumes any IMDNs
that might arrive after that time.
Please note the references to timers in the above paragraphs are not
normative and are only present to help describe one way one might
implement aggregation.
A URI-List server MAY aggregate IMDNs for the case where the list
membership information is not disclosed. There may be scenarios
where the URI-List server starts sending aggregated IMDNs and
switches to individual ones or visa versa. A timer firing often may
in fact have that effect.
The aggregated IMDN is constructed using the multipart/mixed MIME
type and including as individual payloads all the IMDNS that were
received as message/imdn+xml.
Below is an example of aggregated IMDNs.
From: Bob <im:bob@example.com>
To: Alice <im:alice@example.com>
NS: imdn <urn:ietf:params:imdn>
imdn.Message-ID: d834jied93rf
Content-type: multipart/mixed;
boundary="imdn-boundary"
Content-Disposition: notification
Content-length: ...
--imdn-boundary
Content-type: message/imdn+xml
<?xml version="1.0" encoding="UTF-8"?>
<imdn xmlns="urn:ietf:params:xml:ns:imdn">
<message-id>34jk324j</message-id>
<datetime>2008-04-04T12:16:49-05:00</datetime>
<recipient-uri>im:bob@example.com</recipient-uri>
<original-recipient-uri
>im:bob@example.com</original-recipient-uri>
<delivery-notification>
<status>
<delivered/>
Burger & Khartabil Standards Track [Page 18]
^L
RFC 5438 IMDN February 2009
</status>
</delivery-notification>
</imdn>
--imdn-boundary
Content-type: message/imdn+xml
<?xml version="1.0" encoding="UTF-8"?>
<imdn xmlns="urn:ietf:params:xml:ns:imdn">
<message-id>34jk324j</message-id>
<datetime>2008-04-04T12:16:49-05:00</datetime>
<recipient-uri>im:bob@example.com</recipient-uri>
<original-recipient-uri
>im:bob@example.com</original-recipient-uri>
<display-notification>
<status>
<displayed/>
</status>
</display-notification>
</imdn>
--imdn-boundary
9. Identifying Messages
Messages are typically carried in a transport protocol like SIP
[RFC3261]. If the payload carried by the transport protocol does not
contain any parts of type Message/CPIM, then the message is an IM.
If the payload contains any parts of type Message/CPIM, and none of
those parts contains a payload that is of type "message/imdn+xml",
the message is an IM. It is not valid to attempt to carry both an IM
and an IMDN in a multipart payload in a single transport protocol
message.
A message is identified as a delivery notification by examining its
contents. The message is a delivery notification if the Content-type
header field present has a value of "message/imdn+xml", the Content-
Disposition header field has a value of "notification", and the
<delivery-notification> element appears in that XML body.
A message is identified as a processing notification or display
notification in a similar fashion as a delivery notification. The
difference is that, for a processing notification, the <processing-
notification> element appears in the XML body. For a display
notification, the <display-notification> element appears in the XML
body.
Burger & Khartabil Standards Track [Page 19]
^L
RFC 5438 IMDN February 2009
10. Header Fields Formal Syntax
The following syntax specification uses the message header field
syntax as described in Section 3 of RFC 3862 [RFC3862].
Header field syntax is described without a namespace qualification.
Following the rules in RFC 3862 [RFC3862], header field names and
other text are case sensitive and MUST be used as given, using
exactly the indicated upper-case and lower-case letters.
Disposition-Notification =
"Disposition-Notification" ": "
[(notify-req *(COMMA notify-req))]
notify-req =
("negative-delivery" / "positive-delivery" /
"processing" / "display" / Token) *(SEMI disp-notify-params)
disp-notify-params = Ext-param
Message-ID = "Message-ID" ": " Token
Original-To = "Original-To" ": " [ Formal-name ] "<" URI ">"
IMDN-Record-Route =
"IMDN-Record-Route" ": " [ Formal-name ] "<" URI ">"
IMDN-Route = "IMDN-Route" ": " [ Formal-name ] "<" URI ">"
SEMI = *SP ";" *SP ; semicolon
COMMA = *SP "," *SP ; comma
11. IMDN Format
11.1. Structure of an XML-Encoded IMDN Payload
An IMDN payload is an XML document [XML] that MUST be well-formed and
MUST be valid according to schemas, including extension schemas,
available to the validater and applicable to the XML document. The
IMDN payload MUST be based on XML 1.0 and MUST be encoded using
UTF-8.
The schema allows qualified extension elements in several positions
other than the "urn:ietf:params:xml:ns:imdn" namespace. To maintain
forwards compatibility (i.e., newer instance documents can be used by
existing consumers), the new specifications MUST NOT extend the
allowable content of this specification. The backwards compatibility
Burger & Khartabil Standards Track [Page 20]
^L
RFC 5438 IMDN February 2009
(i.e., existing instance documents can also be used by updated, new
consumers) MAY break if there are conflicts with the existing
qualified names of extension elements and possible future
specifications. The IETF MAY specify new extension elements within
the "sub-namespace" of "urn:ietf:params:xml:ns:" for this message/
imdn+xml MIME type.
Possible future specifications can add new element definitions with
the combine="interleave" pattern. When multiple elements of this new
type are then allowed, the new definition MUST contain the
<zeroOrMore> cardinality rule. If the new specification does allow
only a single new element, the <optional> cardinality rule MUST be
used. These cardinality requirements maintain the backwards
compatibility of existing instance documents with newer consumers.
Also, the new specification MUST then redefine either the "anyIMDN"
extension or the individual extension points that reference it, so
that new element definitions do not match with this redefined and
more limited wildcard pattern.
The namespace identifier for elements defined by this specification
is a URN [URN], using the namespace identifier 'ietf' defined by
[URN_NS] and extended by [IANA]. This urn is:
urn:ietf:params:xml:ns:imdn.
This namespace declaration indicates the namespace on which the IMDN
is based.
The root element is <imdn>. The <imdn> element has sub-elements,
namely <message-id>, <datetime>, <recipient-uri>, <original-
recipient-uri>, <subject>, and one of <delivery-notification>,
<processing-notification>, or <display-notification>. A <status>
also appears as a sub-element of <delivery-notification>,
<processing-notification>, and <display-notification>. The elements
are described in detail in the following sections.
<imdn> can be extended in the future to include new disposition
notification types or other elements, as described in Section 11.1.9.
11.1.1. The <message-id> Element
The <message-id> element is mandatory according to the XML schema and
carries the message ID that appeared in the Message-ID header field
of the IM.
Burger & Khartabil Standards Track [Page 21]
^L
RFC 5438 IMDN February 2009
11.1.2. The <datetime> Element
The <datetime> element is mandatory and carries the date and time the
IM was sent (not the IMDN). This information is obtained from the
DateTime header field of the IM.
11.1.3. The <recipient-uri> Element
The <recipient-uri> element is optional and carries the URI of the
final recipient. This information is obtained from the CPIM To
header field of the IM.
11.1.4. The <original-recipient-uri> Element
The <original-recipient-uri> element is optional and carries the URI
of the original recipient. It MUST be present if the IM carried the
Original-To header field. This information is obtained from the
Original-To header field of the IM.
11.1.5. The <subject> Element
The <subject> element is optional. If present, it MUST carry the
text and language attributes that were in the Subject header field,
if any. This allows for a human-level correlation between an IM and
an IMDN. If there are more than one Subject header fields in an IM,
selecting any one of them to place in the IMDN payload <subject>
element will suffice. The sender then needs to compare Subject
header fields until a match or not match is determined.
11.1.6. The <delivery-notification>, <processing-notification>, and
<display-notification> Elements
The appearance of one of the <delivery-notification>, <processing-
notification>, and <display-notification> elements is mandatory and
carries the disposition type that the IM Sender requested and is
being reported. It carries the sub-element <status>.
11.1.7. The <status> Element
The <status> element is mandatory and carries the result of the
disposition request. For notification type <delivery-notification>,
it can carry one of the sub-elements <delivered>, <failed>,
<forbidden>, or <error>. For notification type <display-
notification>, it can carry one of the sub-elements <displayed>,
<forbidden>, or <error>. For notification type <processing-
notification>, it can carry one of the sub-elements <processed>,
Burger & Khartabil Standards Track [Page 22]
^L
RFC 5438 IMDN February 2009
<stored>, <forbidden>, or <error>. <forbidden> means the disposition
was denied. <error> means internal server error. The <status>
element can also be extended to carry any other status extension.
11.1.8. MIME Type for IMDN Payload
The MIME type for the IMDN payload is "message/imdn+xml". The IMDN
MUST identify the payload as MIME type "message/imdn+xml" in the
Content-type header field.
11.1.9. The RelaxNG Schema
<?xml version="1.0" encoding="UTF-8"?>
<grammar
xmlns="http://relaxng.org/ns/structure/1.0"
xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"
ns="urn:ietf:params:xml:ns:imdn">
<start>
<element name="imdn">
<element name="message-id">
<data type="token"/>
</element>
<element name="datetime">
<data type="string"/>
</element>
<optional>
<element name="recipient-uri">
<data type="anyURI"/>
</element>
<element name="original-recipient-uri">
<data type="anyURI"/>
</element>
<optional>
<element name="subject">
<data type="string"/>
</element>
</optional>
</optional>
<choice>
<ref name="deliveryNotification"/>
<ref name="displayNotification"/>
<ref name="processingNotification"/>
<empty/>
</choice>
<ref name="imdnExtension"/>
</element>
Burger & Khartabil Standards Track [Page 23]
^L
RFC 5438 IMDN February 2009
</start>
<define name="deliveryNotification">
<element name="delivery-notification">
<element name="status">
<choice>
<element name="delivered">
<empty/>
</element>
<element name="failed">
<empty/>
</element>
<ref name="commonDispositionStatus"></ref>
</choice>
<ref name="deliveryExtension"/>
</element>
</element>
</define>
<define name="displayNotification">
<element name="display-notification">
<element name="status">
<choice>
<element name="displayed">
<empty/>
</element>
<ref name="commonDispositionStatus"></ref>
</choice>
<ref name="displayExtension"/>
</element>
</element>
</define>
<define name="processingNotification">
<element name="processing-notification">
<element name="status">
<choice>
<element name="processed">
<empty/>
</element>
<element name="stored">
<empty/>
</element>
<ref name="commonDispositionStatus"></ref>
</choice>
<ref name="processingExtension"/>
</element>
</element>
Burger & Khartabil Standards Track [Page 24]
^L
RFC 5438 IMDN February 2009
</define>
<define name="commonDispositionStatus">
<choice>
<element name="forbidden">
<empty/>
</element>
<element name="error">
<empty/>
</element>
</choice>
</define>
<!-- <imdn> extension point for the extension schemas to add
new definitions with the combine="interleave" pattern.
Extension schemas should add proper cardinalities. For
example, the <zeroOrMore> cardinality should be used if
the extension is to allow multiple elements, and the
<optional> cardinality should be used if the extension
is to allow a single optional element. -->
<define name="imdnExtension">
<zeroOrMore>
<ref name="anyIMDN"/>
</zeroOrMore>
</define>
<!-- delivery-notification <status> extension point -->
<define name="deliveryExtension">
<zeroOrMore>
<ref name="anyIMDN"/>
</zeroOrMore>
</define>
<!-- display-notification <status> extension point -->
<define name="displayExtension">
<zeroOrMore>
<ref name="anyIMDN"/>
</zeroOrMore>
</define>
<!-- processing-notification <status> extension point -->
<define name="processingExtension">
<zeroOrMore>
<ref name="anyIMDN"/>
</zeroOrMore>
</define>
Burger & Khartabil Standards Track [Page 25]
^L
RFC 5438 IMDN February 2009
<!-- wildcard definition for complex elements (of mixed type)
unqualified or qualified in the imdn namespace.
Extension schemas MUST redefine this or the
individual, previous definitions that use this definition.
In other words, the extension schema MUST reduce the
allowable content in order to maintain deterministic
and unambiguous schemas with the interleave pattern. -->
<define name="anyIMDN">
<element>
<anyName>
<except>
<nsName ns="urn:ietf:params:xml:ns:imdn"/>
<nsName ns=""/>
</except>
</anyName>
<ref name="anyExtension"/>
</element>
</define>
<!-- the rest of the "anyIMDN" wildcard definition -->
<define name="anyExtension">
<zeroOrMore>
<choice>
<attribute>
<anyName/>
</attribute>
<ref name="any"/>
</choice>
</zeroOrMore>
</define>
<!-- wildcard type for complex elements (of mixed type)
without any namespace or content restrictions -->
<define name="any">
<element>
<anyName/>
<zeroOrMore>
<choice>
<attribute>
<anyName/>
</attribute>
<text/>
<ref name="any"/>
</choice>
</zeroOrMore>
Burger & Khartabil Standards Track [Page 26]
^L
RFC 5438 IMDN February 2009
</element>
</define>
</grammar>
12. Transporting Messages Using SIP
12.1. Endpoint Behaviour
12.1.1. Sending Requests
The IM Sender constructs a SIP MESSAGE request using RFC 3428
[RFC3428]. The Content-type header field indicates the MIME type of
the request payload. When using this extension, the Content-type
header field MUST be of MIME type "message/cpim" [RFC3862] for both
IMs and IMDNs. The IM Sender constructs the payload according to
Section 7.
The IM Sender constructs a SIP MESSAGE request to multiple recipients
in a similar manner as a SIP MESSAGE request to a single recipient.
"Multiple-Recipient MESSAGE Requests in SIP" [RFC5365] describes the
differences.
IM Senders can remain anonymous. For example, the sender can set the
SIP From header field of the SIP message to an anonymous URI. As
there is no return address, anonymous IM Senders SHOULD NOT request
disposition notifications. An IM Recipient MAY ignore such a request
if the IM Sender is anonymous.
12.1.2. Sending Responses
An endpoint receiving a SIP MESSAGE request constructs a SIP response
according to RFC 3428 [RFC3428]. Of course, an endpoint will send a
SIP response to the MESSAGE request regardless of the type of message
(IM or IMDN) it has received or the disposition type for which it has
been asked.
12.1.3. Receiving Requests
12.1.3.1. Instant Message
A SIP MESSAGE request is identified as an IM by examining its
contents according to Section 9.
If an IM Recipient received a SIP MESSAGE request that is an IM
requesting a positive-delivery notification, and that IM Recipient
has constructed and sent a SIP 2xx class response, it MAY generate a
positive-delivery notification after making sure that the IM has been
Burger & Khartabil Standards Track [Page 27]
^L
RFC 5438 IMDN February 2009
delivered to the user or application. A gateway, for example, can
generate a 2xx response before the final recipient received the IM.
The IM Recipient constructs a positive-delivery notification
according to Section 7.2.1.1. The IM Recipient places the message as
the payload in a SIP MESSAGE request.
If an IM Recipient received a SIP MESSAGE request that is an IM
requesting a negative-delivery, and that IM Recipient has constructed
and sent a 2xx class response, it SHOULD generate a negative-delivery
notification if it learnt that the final recipient or application did
not receive the IM (a gateway, for example, can generate a 2xx
response before it has an error response from downstream or before
any internal timers fire waiting for a response). The negative-
delivery notification is constructed according to Section 7.2.1.1.
The message is then placed as the payload in a SIP MESSAGE request.
If an IM Recipient received a SIP MESSAGE request that is an IM
requesting a negative-delivery notification, and the IM Recipient has
constructed and sent a non-2xx final response, it MUST NOT generate a
negative-delivery notification.
If an IM Recipient received a SIP MESSAGE request that is an IM
requesting a display notification, and that IM Recipient has
constructed and sent a SIP 2xx class response, it MAY generate a
display notification after making sure that the IM has been presented
to the user or application. It is outside the scope of this document
to discuss how a determination can be made whether the IM has been
read. Note that the decision whether or not to send a display
notification can be left to the user. An application may allow a
user to configure such a choice. The IM Recipient constructs the
display notification according to Section 7.2.1.2. The IM Recipient
places the message as the payload in a SIP MESSAGE request.
For IMDNs, the IM Recipient populates the SIP Request-URI and the SIP
To header field using the address that appeared in the SIP From
header field in the IM.
12.1.3.2. Delivery Notification
A SIP MESSAGE request is identified as a delivery notification by
examining its contents according to Section 9.
12.1.3.3. Display Notification
A SIP MESSAGE request is identified as a display notification by
examining its contents according to Section 9.
Burger & Khartabil Standards Track [Page 28]
^L
RFC 5438 IMDN February 2009
12.2. Intermediary Behaviour
In this context, intermediaries include application servers
(including URI-List and store-and-forward servers) and gateways. SIP
Proxies MUST NOT generate IMDNs but MUST forward them like any other
SIP request.
Intermediaries forward a SIP MESSAGE request to multiple recipients
according to [RFC5365].
If an intermediary receives an IM, the intermediary examines the
body. If the body is of type "message/cpim", the intermediary then
looks for a Disposition-Notification CPIM header field in the
message. If the Disposition-Notification CPIM header field has
either the value "positive-delivery" or "negative-delivery", and, in
processing the IM, the intermediary generates a SIP 2xx class
response to the MESSAGE request, then the intermediary performs the
following actions.
If the Disposition-Notification header field contains a value of
"positive-delivery", the intermediary MUST NOT generate a delivery
notification if it receives a SIP 2xx class response for the sent IM.
Just because a downstream entity received a MESSAGE request does not
mean the message was relayed to its ultimate destination or was
delivered. Thus, the intermediary cannot say delivery occurred just
because it received a 2xx response.
If the Disposition-Notification header field contains a value of
"negative-delivery", the intermediary SHOULD generate a delivery
notification if it receives a SIP 4xx, 5xx, or 6xx class final
response for the sent IM. If it has received a SIP 2xx class
response followed by a negative-delivery notification, the
intermediary forwards that negative-delivery notification or
aggregates it.
If the Disposition-Notification header field contains a value of
"processing", the intermediary MAY generate a processing notification
after it has forwarded or stored the IM. The rest of the procedures
in Section 8.1 apply.
The procedure for generating such an IMDN is the same as that of an
IM Recipient (Section 7.2.1.1).
The <recipient-uri> element of the XML body is populated with the URI
of the IM Recipient.
Burger & Khartabil Standards Track [Page 29]
^L
RFC 5438 IMDN February 2009
If an intermediary receives a SIP MESSAGE request carrying a positive
delivery notification or a display notification, it forwards it using
the rules in Section 8.
13. Transporting Messages using MSRP
The Message Session Relay Protocol (MSRP) [RFC4975] already provides
a built-in mechanism to supply positive and negative delivery
reports. These reports do not provide built-in display or processing
notifications. However, these notifications in session-mode are not
as useful as they are for page-mode. This is because the base use
case for MSRP is that the recipient user agent immediately renders
SEND requests sequentially, providing the session experience. This
is unlike page-mode requests where a user has to actively initiate
the display of the message. That is, they need to click on a button,
open a message, and so on to read the message.
If new requirements arise in the future determining the need for IMDN
in MSRP, new specifications can be drafted.
14. Security Considerations
IMDNs provide a fine-grained view of the activity of the IM
Recipient, and thus deserve particularly careful confidentiality
protection so that only the intended recipient of the IMDN will
receive the IMDN. In most cases, the intended recipient of the IMDN
is the IM Sender.
Since the IM transport protocol carries the IMDN, all security
considerations of the underlying IM protocol also apply to the IMDNs.
The threats in the IMDN system, over and beyond the threats inherent
to IM, include the following:
o A malicious endpoint attempts to send messages to a user that
would normally not wish to receive messages from that endpoint by
convincing the IMDN system to "bounce" an IMDN from an
unsuspecting endpoint to the user.
o A malicious endpoint attempts to flood an IM Sender with IMDNs by
convincing a URI-List server to send IMDNs to an unsuspecting IM
Sender.
o A malicious intermediary or node attempts to flood a target node
with IMDNs by inserting the target's address in the From field or
IMDN-Record-Route field.
Burger & Khartabil Standards Track [Page 30]
^L
RFC 5438 IMDN February 2009
o A malicious node in the network attempts to modify an IMDN from an
IM Recipient.
o A malicious intermediary attempts to forward an IMDN from an IM
Recipient to the IM Sender, where the IM Recipient would not
normally forward the IMDN to that IM Sender if the IM Recipient
knew the identity of the IM Sender.
o A malicious endpoint attempts to discover the Request-URI of an
endpoint beyond an intermediary, where the endpoint would normally
wish to keep its identity private from the malicious endpoint.
o A malicious node in the network attempts to eavesdrop on IMDN
traffic to, for example, learn Request-URI or traffic pattern
information.
o A malicious node in the network attempts to stage a denial-of-
service attack on an intermediary by requesting a large list
expansion.
The protocol cannot protect against attacks that include the
following:
o A malicious intermediary directly revealing the identity of a
downstream endpoint that would not normally wish its identity
revealed. Keeping such information private is an intermediary
implementation issue.
o A malicious IM Recipient alters the time of the IMDN. There is no
protocol mechanism for ensuring that the IM Recipient does not lie
about the time or purposely holds an IMDN for transmission to make
it appear that the IM displayed to the user was read later than it
actually was.
o A deletion attack on an IMDN. This is a trade-off between privacy
and security. The privacy considerations allow the IM Recipient
to silently ignore an IMDN request. Any mechanism that would
reliably indicate that a malicious node deleted an IM Recipient's
IMDN would also serve the purpose of detecting an IM Recipient
that chose not to issue an IMDN.
To combat eavesdropping, modification, and man-in-the-middle attacks,
we require some level of authentication and integrity protections.
That said, there are circumstances where strong integrity would be
overkill. The presumption is that the IM Sender has, and sets the
expectation for, the level of protection. The procedures for
integrity protection are as follows.
Burger & Khartabil Standards Track [Page 31]
^L
RFC 5438 IMDN February 2009
o If the IM Recipient has a certificate, it MUST sign the IMDN.
Signing the IMDN provides integrity protection. While an
intermediary can replace the IMDN body, the IM Sender (the
recipient of the IMDN) can validate the signature and note the
IMDN does not come directly from the IM Receiver. This is not a
problem if the IM Sender trusts the intermediary. Likewise, an
IMDN in response to a signed IM without a signature indicates
something bad might have happened.
o If the IM is encrypted, the IM Recipient or intermediary MUST
encrypt the IMDN body, as an attacker may attempt to discern the
user's activity profile and identity from sniffing IMDNs on the
network.
o The two above rules are cumulative.
The IM Recipient or intermediary MUST be capable of accessing the IM
Sender's public certificate in order to verify the signature in the
IM.
CPIM security considerations [RFC3862] apply here, as this is an
extension of CPIM. In order to make the IMDN mechanism independent
of the transport protocol, the Working Group made the design choice
of putting routing information into the IMDN application-layer
payload. One consequence of this choice is it eliminates the
possibility of having end-to-end encryption.
An attacker can mount a distributed denial-of-service attack on a
node by sending lots of IMs to the node with IMDN requests. Note
that this is the same problem as there is without IMDN; IMDN simply
linearly increases the load on the node under attack. One can
mitigate, but not eliminate, this threat by the endpoint immediately
ignoring requests that are not authenticated.
One way to address the potential for a malicious node to use the IMDN
system to anonymize attacks is to log all IMDN requests on the IM
Recipient user agent. This allows for tracking of attacks, if only
after they occur. Note this also puts a burden on the IM Recipient
user agent host. Limited user agents may not be able to preserve
much of a log.
Likewise, an attacker can mount a denial-of-service attack on an
intermediary by asking the intermediary to explode a large list.
The following security considerations apply when using IMDNs.
Burger & Khartabil Standards Track [Page 32]
^L
RFC 5438 IMDN February 2009
14.1. Forgery
IMs can be forged. To protect against that, an IM can be signed. An
intermediary that receives a signed message and needs to modify any
part of it that is included in the signature (like adding an
Original-To header field to the CPIM header fields) MUST consume the
IM and create a new copy of it that the intermediary signs itself.
IMDNs may be forged as easily as ordinary IMs. Endpoints and
intermediaries that wish to make automatic use of IMDNs should take
appropriate precautions to minimize the potential damage from denial-
of-service attacks. Security threats related to forged IMDNs include
the sending of a falsified IMDN when the indicated disposition of the
IM has not actually occurred. For example, display notification
could be forged to indicate that an IM has been displayed to the
Recipient. Unsolicited IMDNs is also another form of forgery.
14.2. Confidentiality
There may be cases where an IM Recipient does not wish to reveal that
she has received, or in fact read, the IM. In this situation, it is
acceptable for the IM Recipient to silently ignore requests for an
IMDN. It is strongly RECOMMENDED that the IM Recipient obtain the
user's consent before sending an IMDN. Circumstances where the IM
Recipient does not ask for the user's consent include IM systems
that, for regulatory reasons, are required to issue an IMDN, such as
in the health care field or financial community.
An IM Recipient can obtain such consent by a prompt or dialog box on
a per-IM basis, globally through the user's setting of a preference,
or another, user-configurable mechanism. The user might also
indicate globally that IMDNs are never to be sent or that a
"forbidden" IMDN status is always sent in response to a request for
an IMDN.
There are situations where a user sends an IM and requests IMDNs to a
list whose member information is not disclosed. In this situation,
the user will learn of the list members. Therefore, in this case,
the URI-List server MUST remove any information about list members.
If the number of members in the list is also not disclosed, the URI-
List server MUST only deliver one aggregated IMDN. Alternatively,
the URI-list server MAY reject the IM.
It is possible for a list server to not understand IMDN. IM
Recipients may note the To header field is a list name and not the IM
Recipient's name. In this case, the IM Recipient can take the
appropriate action if it wishes to keep its identity private.
Burger & Khartabil Standards Track [Page 33]
^L
RFC 5438 IMDN February 2009
An unencrypted IMDN could reveal confidential information about an
encrypted IM. The same level of security applied to an IM MUST be
applied to its IMDNs. For example, if an IM is signed and encrypted,
the IMDN must be signed and encrypted.
14.3. IMDN as a Certified Delivery Service
IMDNs cannot be relied on as a guarantee that an IM was or was not
seen by the user. Even if IMDNs are not actively forged, they may be
lost in transit. Moreover, the IM Recipient may bypass the IMDN
issuing mechanism through policy or manipulation of their user agent
Server.
15. IANA Considerations
15.1. message/imdn+xml MIME TYPE
This document registers a new MIME type "message/imdn+xml", and
registers a new XML namespace.
This specification follows the guidelines of RFC 3023 [RFC3023].
MIME media type: message
MIME subtype name: imdn+xml
Mandatory parameters: none
Optional parameters: Same as charset parameter application/xml as
specified in RFC 3023 [RFC3023].
Encoding considerations: Same as encoding considerations of
application/xml as specified in RFC 3023 [RFC3023].
Security considerations: See Section 10 of RFC 3023 [RFC3023] and
Section 14 of this document.
Interoperability considerations: none
Published specification: This document
Applications which use this media type: This media type is used to
support CPIM-based instant Messaging.
Additional information: none
Magic number: none
Burger & Khartabil Standards Track [Page 34]
^L
RFC 5438 IMDN February 2009
File extension: .cl or .xml
Macintosh file type code: "TEXT"
Personal and email address for further information: Hisham Khartabil
(hisham.khartabil@gmail.com)
Intended Usage: COMMON
Author/change controller: The IETF
15.2. XML Registration
This section registers a new XML namespace and schema, as per
guidelines in the IETF XML Registry [IANA].
URI: urn:ietf:params:xml:ns:imdn
XML: The schema for this namespace is in Section 11.1.9 above.
Registrant Contact: IETF, SIMPLE working group, Hisham Khartabil
(hisham.khartabil@gmail.com)
15.3. URN Registration for IMDN Header Parameters
Per [RFC3553], please establish the following registry. New entries
to the registry are Specification Required.
Registry name: urn:ietf:params:imdn
Specification: RFC 5438. Additional values may be defined by a
Standards Action [RFC5226] that updates or obsoletes RFC 5438.
Repository: RFC 5438
Index value: Values subordinate to urn:ietf:params:imdn require RFC
publication. The index value is the IMDN header name. The index
value must follow the rules for a legal IMDN header name. In
particular, the IMDN header name, and thus the index value to
register, must be a string of octets taken from the restricted set of
US-ASCII characters per Section 3.1 of [RFC3553]. The index value is
case sensitive.
URN Formation: The URI for a header is formed from its name by
a) replacing any non-URN characters (as defined by RFC 2141 [URN])
with the corresponding '%hh' escape sequence (per RFC 3986
[RFC3986]) and
Burger & Khartabil Standards Track [Page 35]
^L
RFC 5438 IMDN February 2009
b) prepending the resulting string with 'urn:ietf:params:imdn:'.
Thus, the URI corresponding to the CPIM message IMDN header
'Disposition-Notification:' would be
'urn:ietf:params:imdn:Disposition-Notification'.
Initial values:
+--------------------------+---------------------+
| Index Value | Reference |
+--------------------------+---------------------+
| Disposition-Notification | RFC5438 Section 6.2 |
| Message-ID | RFC5438 Section 6.3 |
| Original-To | RFC5438 Section 6.4 |
| IMDN-Record-Route | RFC5438 Section 6.5 |
| IMDN-Route | RFC5438 Section 6.6 |
+--------------------------+---------------------+
15.4. Content-Disposition: notification
This document registers one new Content-Disposition header field
"disposition-types": notification, which has been recorded in the
IANA registry for Mail Content Dispositions.
Descriptions of this "disposition-types", including motivation and
examples, are given in Section 7.2.1.1 and Section 9.
Short descriptions suitable for the IANA registry are:
notification: the payload of the message carrying this Content-
Disposition header field value is an Instant Message Disposition
Notification as requested in the corresponding Instant Message.
16. Acknowledgements
Special thanks to Jari Urpalainen for the thorough review and
suggestions for the RelaxNG schema.
The authors would also like to thank Paul Kyzivat, Ben Campbell, Adam
Roach, Gonzalo Camarillo, Frank Ellermann, Sean Olson, Eva Leppanen,
Miguel Garcia, Eric McMurry, Jon Peterson, and Robert Sparks for
their comments and support. In addition, we would like to thank the
Gen-Art reviewer extraordinaire, Spencer Dawkins.
Burger & Khartabil Standards Track [Page 36]
^L
RFC 5438 IMDN February 2009
17. References
17.1. Normative References
[IANA] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
January 2004.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC3023] Murata, M., St. Laurent, S., and D. Kohn, "XML Media
Types", RFC 3023, January 2001.
[RFC3862] Klyne, G. and D. Atkins, "Common Presence and Instant
Messaging (CPIM): Message Format", RFC 3862, August 2004.
[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
Resource Identifier (URI): Generic Syntax", STD 66,
RFC 3986, January 2005.
[URN] Moats, R., "URN Syntax", RFC 2141, May 1997.
[XML] Bray, T., "Extensible Markup Language (XML) 1.0 (Second
Edition)", W3C CR CR-xml11-20011006, October 2000.
17.2. Informative References
[RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston,
A., Peterson, J., Sparks, R., Handley, M., and E.
Schooler, "SIP: Session Initiation Protocol", RFC 3261,
June 2002.
[RFC3428] Campbell, B., Rosenberg, J., Schulzrinne, H., Huitema, C.,
and D. Gurle, "Session Initiation Protocol (SIP) Extension
for Instant Messaging", RFC 3428, December 2002.
[RFC3553] Mealling, M., Masinter, L., Hardie, T., and G. Klyne, "An
IETF URN Sub-namespace for Registered Protocol
Parameters", BCP 73, RFC 3553, June 2003.
[RFC3798] Hansen, T. and G. Vaudreuil, "Message Disposition
Notification", RFC 3798, May 2004.
[RFC4975] Campbell, B., Mahy, R., and C. Jennings, "The Message
Session Relay Protocol (MSRP)", RFC 4975, September 2007.
[RFC5321] Klensin, J., "Simple Mail Transfer Protocol", RFC 5321,
October 2008.
Burger & Khartabil Standards Track [Page 37]
^L
RFC 5438 IMDN February 2009
[RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an
IANA Considerations Section in RFCs", BCP 26, RFC 5226,
May 2008.
[RFC5365] Garcia-Martin, M. and G. Camarillo, "Multiple-Recipient
MESSAGE Requests in the Session Initiation Protocol
(SIP)", RFC 5365, October 2008.
[URN_NS] Moats, R., "A URN Namespace for IETF Documents", RFC 2648,
August 1999.
Authors' Addresses
Eric Burger
Unaffiliated
New Hampshire
USA
Phone:
Fax: +1 603 457 5933
EMail: eburger@standardstrack.com
Hisham Khartabil
Ericsson Australia
Melbourne
Australia
Phone: +61 416 108 890
EMail: hisham.khartabil@gmail.com
Burger & Khartabil Standards Track [Page 38]
^L
|