rack-mail_exception 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (321) hide show
  1. data/.document +5 -0
  2. data/.gitignore +22 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +38 -0
  5. data/Rakefile +56 -0
  6. data/VERSION +1 -0
  7. data/lib/rack/mail_exception.rb +103 -0
  8. data/test/helper.rb +13 -0
  9. data/test/test_rack_mail_exception.rb +93 -0
  10. data/vendor/mail/.bundle/config +2 -0
  11. data/vendor/mail/CHANGELOG.rdoc +370 -0
  12. data/vendor/mail/Dependencies.txt +3 -0
  13. data/vendor/mail/Gemfile +17 -0
  14. data/vendor/mail/README.rdoc +572 -0
  15. data/vendor/mail/ROADMAP +92 -0
  16. data/vendor/mail/Rakefile +41 -0
  17. data/vendor/mail/TODO.rdoc +9 -0
  18. data/vendor/mail/lib/mail.rb +76 -0
  19. data/vendor/mail/lib/mail/attachments_list.rb +99 -0
  20. data/vendor/mail/lib/mail/body.rb +287 -0
  21. data/vendor/mail/lib/mail/configuration.rb +67 -0
  22. data/vendor/mail/lib/mail/core_extensions/blank.rb +26 -0
  23. data/vendor/mail/lib/mail/core_extensions/nil.rb +11 -0
  24. data/vendor/mail/lib/mail/core_extensions/string.rb +27 -0
  25. data/vendor/mail/lib/mail/elements.rb +14 -0
  26. data/vendor/mail/lib/mail/elements/address.rb +306 -0
  27. data/vendor/mail/lib/mail/elements/address_list.rb +74 -0
  28. data/vendor/mail/lib/mail/elements/content_disposition_element.rb +30 -0
  29. data/vendor/mail/lib/mail/elements/content_location_element.rb +25 -0
  30. data/vendor/mail/lib/mail/elements/content_transfer_encoding_element.rb +24 -0
  31. data/vendor/mail/lib/mail/elements/content_type_element.rb +35 -0
  32. data/vendor/mail/lib/mail/elements/date_time_element.rb +26 -0
  33. data/vendor/mail/lib/mail/elements/envelope_from_element.rb +34 -0
  34. data/vendor/mail/lib/mail/elements/message_ids_element.rb +29 -0
  35. data/vendor/mail/lib/mail/elements/mime_version_element.rb +26 -0
  36. data/vendor/mail/lib/mail/elements/phrase_list.rb +21 -0
  37. data/vendor/mail/lib/mail/elements/received_element.rb +30 -0
  38. data/vendor/mail/lib/mail/encodings.rb +258 -0
  39. data/vendor/mail/lib/mail/encodings/7bit.rb +31 -0
  40. data/vendor/mail/lib/mail/encodings/8bit.rb +31 -0
  41. data/vendor/mail/lib/mail/encodings/base64.rb +33 -0
  42. data/vendor/mail/lib/mail/encodings/binary.rb +31 -0
  43. data/vendor/mail/lib/mail/encodings/quoted_printable.rb +38 -0
  44. data/vendor/mail/lib/mail/encodings/transfer_encoding.rb +58 -0
  45. data/vendor/mail/lib/mail/envelope.rb +35 -0
  46. data/vendor/mail/lib/mail/field.rb +223 -0
  47. data/vendor/mail/lib/mail/field_list.rb +33 -0
  48. data/vendor/mail/lib/mail/fields.rb +35 -0
  49. data/vendor/mail/lib/mail/fields/bcc_field.rb +56 -0
  50. data/vendor/mail/lib/mail/fields/cc_field.rb +55 -0
  51. data/vendor/mail/lib/mail/fields/comments_field.rb +41 -0
  52. data/vendor/mail/lib/mail/fields/common/address_container.rb +16 -0
  53. data/vendor/mail/lib/mail/fields/common/common_address.rb +125 -0
  54. data/vendor/mail/lib/mail/fields/common/common_date.rb +42 -0
  55. data/vendor/mail/lib/mail/fields/common/common_field.rb +50 -0
  56. data/vendor/mail/lib/mail/fields/common/common_message_id.rb +43 -0
  57. data/vendor/mail/lib/mail/fields/common/parameter_hash.rb +52 -0
  58. data/vendor/mail/lib/mail/fields/content_description_field.rb +19 -0
  59. data/vendor/mail/lib/mail/fields/content_disposition_field.rb +69 -0
  60. data/vendor/mail/lib/mail/fields/content_id_field.rb +63 -0
  61. data/vendor/mail/lib/mail/fields/content_location_field.rb +42 -0
  62. data/vendor/mail/lib/mail/fields/content_transfer_encoding_field.rb +50 -0
  63. data/vendor/mail/lib/mail/fields/content_type_field.rb +185 -0
  64. data/vendor/mail/lib/mail/fields/date_field.rb +55 -0
  65. data/vendor/mail/lib/mail/fields/from_field.rb +55 -0
  66. data/vendor/mail/lib/mail/fields/in_reply_to_field.rb +55 -0
  67. data/vendor/mail/lib/mail/fields/keywords_field.rb +44 -0
  68. data/vendor/mail/lib/mail/fields/message_id_field.rb +83 -0
  69. data/vendor/mail/lib/mail/fields/mime_version_field.rb +53 -0
  70. data/vendor/mail/lib/mail/fields/optional_field.rb +13 -0
  71. data/vendor/mail/lib/mail/fields/received_field.rb +67 -0
  72. data/vendor/mail/lib/mail/fields/references_field.rb +55 -0
  73. data/vendor/mail/lib/mail/fields/reply_to_field.rb +55 -0
  74. data/vendor/mail/lib/mail/fields/resent_bcc_field.rb +55 -0
  75. data/vendor/mail/lib/mail/fields/resent_cc_field.rb +55 -0
  76. data/vendor/mail/lib/mail/fields/resent_date_field.rb +35 -0
  77. data/vendor/mail/lib/mail/fields/resent_from_field.rb +55 -0
  78. data/vendor/mail/lib/mail/fields/resent_message_id_field.rb +34 -0
  79. data/vendor/mail/lib/mail/fields/resent_sender_field.rb +62 -0
  80. data/vendor/mail/lib/mail/fields/resent_to_field.rb +55 -0
  81. data/vendor/mail/lib/mail/fields/return_path_field.rb +64 -0
  82. data/vendor/mail/lib/mail/fields/sender_field.rb +67 -0
  83. data/vendor/mail/lib/mail/fields/structured_field.rb +51 -0
  84. data/vendor/mail/lib/mail/fields/subject_field.rb +16 -0
  85. data/vendor/mail/lib/mail/fields/to_field.rb +55 -0
  86. data/vendor/mail/lib/mail/fields/unstructured_field.rb +166 -0
  87. data/vendor/mail/lib/mail/header.rb +262 -0
  88. data/vendor/mail/lib/mail/mail.rb +234 -0
  89. data/vendor/mail/lib/mail/message.rb +1867 -0
  90. data/vendor/mail/lib/mail/network.rb +9 -0
  91. data/vendor/mail/lib/mail/network/delivery_methods/file_delivery.rb +40 -0
  92. data/vendor/mail/lib/mail/network/delivery_methods/sendmail.rb +62 -0
  93. data/vendor/mail/lib/mail/network/delivery_methods/smtp.rb +110 -0
  94. data/vendor/mail/lib/mail/network/delivery_methods/test_mailer.rb +40 -0
  95. data/vendor/mail/lib/mail/network/retriever_methods/imap.rb +18 -0
  96. data/vendor/mail/lib/mail/network/retriever_methods/pop3.rb +149 -0
  97. data/vendor/mail/lib/mail/parsers/address_lists.rb +64 -0
  98. data/vendor/mail/lib/mail/parsers/address_lists.treetop +19 -0
  99. data/vendor/mail/lib/mail/parsers/content_disposition.rb +387 -0
  100. data/vendor/mail/lib/mail/parsers/content_disposition.treetop +46 -0
  101. data/vendor/mail/lib/mail/parsers/content_location.rb +139 -0
  102. data/vendor/mail/lib/mail/parsers/content_location.treetop +20 -0
  103. data/vendor/mail/lib/mail/parsers/content_transfer_encoding.rb +162 -0
  104. data/vendor/mail/lib/mail/parsers/content_transfer_encoding.treetop +20 -0
  105. data/vendor/mail/lib/mail/parsers/content_type.rb +539 -0
  106. data/vendor/mail/lib/mail/parsers/content_type.treetop +58 -0
  107. data/vendor/mail/lib/mail/parsers/date_time.rb +114 -0
  108. data/vendor/mail/lib/mail/parsers/date_time.treetop +11 -0
  109. data/vendor/mail/lib/mail/parsers/envelope_from.rb +194 -0
  110. data/vendor/mail/lib/mail/parsers/envelope_from.treetop +32 -0
  111. data/vendor/mail/lib/mail/parsers/message_ids.rb +45 -0
  112. data/vendor/mail/lib/mail/parsers/message_ids.treetop +15 -0
  113. data/vendor/mail/lib/mail/parsers/mime_version.rb +144 -0
  114. data/vendor/mail/lib/mail/parsers/mime_version.treetop +19 -0
  115. data/vendor/mail/lib/mail/parsers/phrase_lists.rb +45 -0
  116. data/vendor/mail/lib/mail/parsers/phrase_lists.treetop +15 -0
  117. data/vendor/mail/lib/mail/parsers/received.rb +71 -0
  118. data/vendor/mail/lib/mail/parsers/received.treetop +11 -0
  119. data/vendor/mail/lib/mail/parsers/rfc2045.rb +464 -0
  120. data/vendor/mail/lib/mail/parsers/rfc2045.treetop +36 -0
  121. data/vendor/mail/lib/mail/parsers/rfc2822.rb +5318 -0
  122. data/vendor/mail/lib/mail/parsers/rfc2822.treetop +410 -0
  123. data/vendor/mail/lib/mail/parsers/rfc2822_obsolete.rb +3757 -0
  124. data/vendor/mail/lib/mail/parsers/rfc2822_obsolete.treetop +241 -0
  125. data/vendor/mail/lib/mail/part.rb +102 -0
  126. data/vendor/mail/lib/mail/parts_list.rb +34 -0
  127. data/vendor/mail/lib/mail/patterns.rb +30 -0
  128. data/vendor/mail/lib/mail/utilities.rb +181 -0
  129. data/vendor/mail/lib/mail/version.rb +10 -0
  130. data/vendor/mail/lib/mail/version_specific/ruby_1_8.rb +97 -0
  131. data/vendor/mail/lib/mail/version_specific/ruby_1_9.rb +87 -0
  132. data/vendor/mail/lib/tasks/corpus.rake +125 -0
  133. data/vendor/mail/lib/tasks/treetop.rake +10 -0
  134. data/vendor/mail/mail.gemspec +20 -0
  135. data/vendor/mail/reference/US ASCII Table.txt +130 -0
  136. data/vendor/mail/reference/rfc1035 Domain Implementation and Specification.txt +3083 -0
  137. data/vendor/mail/reference/rfc1049 Content-Type Header Field for Internet Messages.txt +451 -0
  138. data/vendor/mail/reference/rfc1344 Implications of MIME for Internet Mail Gateways.txt +586 -0
  139. data/vendor/mail/reference/rfc1345 Character Mnemonics & Character Sets.txt +5761 -0
  140. data/vendor/mail/reference/rfc1524 A User Agent Configuration Mechanism For Multimedia Mail Format Information.txt +675 -0
  141. data/vendor/mail/reference/rfc1652 SMTP Service Extension for 8bit-MIMEtransport.txt +339 -0
  142. data/vendor/mail/reference/rfc1892 Multipart Report .txt +227 -0
  143. data/vendor/mail/reference/rfc1893 Mail System Status Codes.txt +843 -0
  144. data/vendor/mail/reference/rfc2045 Multipurpose Internet Mail Extensions (1).txt +1739 -0
  145. data/vendor/mail/reference/rfc2046 Multipurpose Internet Mail Extensions (2).txt +2467 -0
  146. data/vendor/mail/reference/rfc2047 Multipurpose Internet Mail Extensions (3).txt +843 -0
  147. data/vendor/mail/reference/rfc2048 Multipurpose Internet Mail Extensions (4).txt +1180 -0
  148. data/vendor/mail/reference/rfc2049 Multipurpose Internet Mail Extensions (5).txt +1347 -0
  149. data/vendor/mail/reference/rfc2111 Content-ID and Message-ID URLs.txt +283 -0
  150. data/vendor/mail/reference/rfc2183 Content-Disposition Header Field.txt +675 -0
  151. data/vendor/mail/reference/rfc2231 MIME Parameter Value and Encoded Word Extensions.txt +563 -0
  152. data/vendor/mail/reference/rfc2387 MIME Multipart-Related Content-type.txt +563 -0
  153. data/vendor/mail/reference/rfc2821 Simple Mail Transfer Protocol.txt +3711 -0
  154. data/vendor/mail/reference/rfc2822 Internet Message Format.txt +2859 -0
  155. data/vendor/mail/reference/rfc3462 Reporting of Mail System Administrative Messages.txt +396 -0
  156. data/vendor/mail/reference/rfc3696 Checking and Transformation of Names.txt +898 -0
  157. data/vendor/mail/reference/rfc4155 The application-mbox Media Type.txt +502 -0
  158. data/vendor/mail/reference/rfc4234 Augmented BNF for Syntax Specifications: ABNF.txt +899 -0
  159. data/vendor/mail/reference/rfc822 Standard for the Format of ARPA Internet Text Messages.txt +2900 -0
  160. data/vendor/mail/spec/environment.rb +15 -0
  161. data/vendor/mail/spec/features/making_a_new_message.feature +14 -0
  162. data/vendor/mail/spec/features/steps/env.rb +6 -0
  163. data/vendor/mail/spec/features/steps/making_a_new_message_steps.rb +11 -0
  164. data/vendor/mail/spec/fixtures/attachments/basic_email.eml +31 -0
  165. data/vendor/mail/spec/fixtures/attachments/test.gif +0 -0
  166. data/vendor/mail/spec/fixtures/attachments/test.jpg +0 -0
  167. data/vendor/mail/spec/fixtures/attachments/test.pdf +0 -0
  168. data/vendor/mail/spec/fixtures/attachments/test.png +0 -0
  169. data/vendor/mail/spec/fixtures/attachments/test.tiff +0 -0
  170. data/vendor/mail/spec/fixtures/attachments/test.zip +0 -0
  171. data/vendor/mail/spec/fixtures/attachments//343/201/246/343/201/231/343/201/250.txt +2 -0
  172. data/vendor/mail/spec/fixtures/emails/attachment_emails/attachment_content_disposition.eml +29 -0
  173. data/vendor/mail/spec/fixtures/emails/attachment_emails/attachment_content_location.eml +32 -0
  174. data/vendor/mail/spec/fixtures/emails/attachment_emails/attachment_message_rfc822.eml +92 -0
  175. data/vendor/mail/spec/fixtures/emails/attachment_emails/attachment_only_email.eml +17 -0
  176. data/vendor/mail/spec/fixtures/emails/attachment_emails/attachment_pdf.eml +70 -0
  177. data/vendor/mail/spec/fixtures/emails/attachment_emails/attachment_with_encoded_name.eml +47 -0
  178. data/vendor/mail/spec/fixtures/emails/attachment_emails/attachment_with_quoted_filename.eml +60 -0
  179. data/vendor/mail/spec/fixtures/emails/error_emails/cant_parse_from.eml +33 -0
  180. data/vendor/mail/spec/fixtures/emails/error_emails/content_transfer_encoding_7-bit.eml +231 -0
  181. data/vendor/mail/spec/fixtures/emails/error_emails/content_transfer_encoding_empty.eml +33 -0
  182. data/vendor/mail/spec/fixtures/emails/error_emails/content_transfer_encoding_plain.eml +148 -0
  183. data/vendor/mail/spec/fixtures/emails/error_emails/content_transfer_encoding_qp_with_space.eml +53 -0
  184. data/vendor/mail/spec/fixtures/emails/error_emails/content_transfer_encoding_spam.eml +44 -0
  185. data/vendor/mail/spec/fixtures/emails/error_emails/content_transfer_encoding_text-html.eml +50 -0
  186. data/vendor/mail/spec/fixtures/emails/error_emails/content_transfer_encoding_with_8bits.eml +770 -0
  187. data/vendor/mail/spec/fixtures/emails/error_emails/content_transfer_encoding_with_semi_colon.eml +269 -0
  188. data/vendor/mail/spec/fixtures/emails/error_emails/content_transfer_encoding_x_uuencode.eml +79 -0
  189. data/vendor/mail/spec/fixtures/emails/error_emails/empty_group_lists.eml +162 -0
  190. data/vendor/mail/spec/fixtures/emails/error_emails/header_fields_with_empty_values.eml +33 -0
  191. data/vendor/mail/spec/fixtures/emails/error_emails/missing_body.eml +16 -0
  192. data/vendor/mail/spec/fixtures/emails/error_emails/missing_content_disposition.eml +43 -0
  193. data/vendor/mail/spec/fixtures/emails/error_emails/multiple_content_types.eml +25 -0
  194. data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email11.eml +34 -0
  195. data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email12.eml +32 -0
  196. data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email2.eml +114 -0
  197. data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email4.eml +59 -0
  198. data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email7.eml +66 -0
  199. data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email_encoded_stack_level_too_deep.eml +53 -0
  200. data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email_with_illegal_boundary.eml +58 -0
  201. data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email_with_mimepart_without_content_type.eml +94 -0
  202. data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email_with_multipart_mixed_quoted_boundary.eml +50 -0
  203. data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email_with_nested_attachment.eml +100 -0
  204. data/vendor/mail/spec/fixtures/emails/mime_emails/raw_email_with_quoted_illegal_boundary.eml +58 -0
  205. data/vendor/mail/spec/fixtures/emails/mime_emails/sig_only_email.eml +29 -0
  206. data/vendor/mail/spec/fixtures/emails/mime_emails/two_from_in_message.eml +42 -0
  207. data/vendor/mail/spec/fixtures/emails/multi_charset/japanese.eml +9 -0
  208. data/vendor/mail/spec/fixtures/emails/multi_charset/japanese_attachment.eml +27 -0
  209. data/vendor/mail/spec/fixtures/emails/multi_charset/japanese_attachment_long_name.eml +44 -0
  210. data/vendor/mail/spec/fixtures/emails/multipart_report_emails/multi_address_bounce1.eml +179 -0
  211. data/vendor/mail/spec/fixtures/emails/multipart_report_emails/multi_address_bounce2.eml +179 -0
  212. data/vendor/mail/spec/fixtures/emails/multipart_report_emails/report_422.eml +98 -0
  213. data/vendor/mail/spec/fixtures/emails/multipart_report_emails/report_530.eml +97 -0
  214. data/vendor/mail/spec/fixtures/emails/plain_emails/basic_email.eml +31 -0
  215. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email.eml +14 -0
  216. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email10.eml +20 -0
  217. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email5.eml +19 -0
  218. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email6.eml +20 -0
  219. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email8.eml +47 -0
  220. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_bad_time.eml +62 -0
  221. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_double_at_in_header.eml +14 -0
  222. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_incorrect_header.eml +28 -0
  223. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_multiple_from.eml +30 -0
  224. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_quoted_with_0d0a.eml +14 -0
  225. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_reply.eml +32 -0
  226. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_simple.eml +11 -0
  227. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_string_in_date_field.eml +17 -0
  228. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_trailing_dot.eml +21 -0
  229. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_with_bad_date.eml +48 -0
  230. data/vendor/mail/spec/fixtures/emails/plain_emails/raw_email_with_partially_quoted_subject.eml +14 -0
  231. data/vendor/mail/spec/fixtures/emails/rfc2822/example01.eml +8 -0
  232. data/vendor/mail/spec/fixtures/emails/rfc2822/example02.eml +9 -0
  233. data/vendor/mail/spec/fixtures/emails/rfc2822/example03.eml +7 -0
  234. data/vendor/mail/spec/fixtures/emails/rfc2822/example04.eml +7 -0
  235. data/vendor/mail/spec/fixtures/emails/rfc2822/example05.eml +8 -0
  236. data/vendor/mail/spec/fixtures/emails/rfc2822/example06.eml +10 -0
  237. data/vendor/mail/spec/fixtures/emails/rfc2822/example07.eml +9 -0
  238. data/vendor/mail/spec/fixtures/emails/rfc2822/example08.eml +12 -0
  239. data/vendor/mail/spec/fixtures/emails/rfc2822/example09.eml +15 -0
  240. data/vendor/mail/spec/fixtures/emails/rfc2822/example10.eml +15 -0
  241. data/vendor/mail/spec/fixtures/emails/rfc2822/example11.eml +6 -0
  242. data/vendor/mail/spec/fixtures/emails/rfc2822/example12.eml +8 -0
  243. data/vendor/mail/spec/fixtures/emails/rfc2822/example13.eml +10 -0
  244. data/vendor/mail/spec/fixtures/emails/sample_output_multipart +0 -0
  245. data/vendor/mail/spec/mail/attachments_list_spec.rb +214 -0
  246. data/vendor/mail/spec/mail/body_spec.rb +385 -0
  247. data/vendor/mail/spec/mail/configuration_spec.rb +19 -0
  248. data/vendor/mail/spec/mail/core_extensions/string_spec.rb +62 -0
  249. data/vendor/mail/spec/mail/core_extensions_spec.rb +99 -0
  250. data/vendor/mail/spec/mail/elements/address_list_spec.rb +109 -0
  251. data/vendor/mail/spec/mail/elements/address_spec.rb +609 -0
  252. data/vendor/mail/spec/mail/elements/date_time_element_spec.rb +20 -0
  253. data/vendor/mail/spec/mail/elements/envelope_from_element_spec.rb +31 -0
  254. data/vendor/mail/spec/mail/elements/message_ids_element_spec.rb +43 -0
  255. data/vendor/mail/spec/mail/elements/phrase_list_spec.rb +22 -0
  256. data/vendor/mail/spec/mail/elements/received_element_spec.rb +34 -0
  257. data/vendor/mail/spec/mail/encoding_spec.rb +189 -0
  258. data/vendor/mail/spec/mail/encodings/base64_spec.rb +25 -0
  259. data/vendor/mail/spec/mail/encodings/quoted_printable_spec.rb +25 -0
  260. data/vendor/mail/spec/mail/encodings_spec.rb +664 -0
  261. data/vendor/mail/spec/mail/example_emails_spec.rb +303 -0
  262. data/vendor/mail/spec/mail/field_list_spec.rb +33 -0
  263. data/vendor/mail/spec/mail/field_spec.rb +198 -0
  264. data/vendor/mail/spec/mail/fields/bcc_field_spec.rb +89 -0
  265. data/vendor/mail/spec/mail/fields/cc_field_spec.rb +79 -0
  266. data/vendor/mail/spec/mail/fields/comments_field_spec.rb +25 -0
  267. data/vendor/mail/spec/mail/fields/common/address_container_spec.rb +18 -0
  268. data/vendor/mail/spec/mail/fields/common/common_address_spec.rb +132 -0
  269. data/vendor/mail/spec/mail/fields/common/common_date_spec.rb +25 -0
  270. data/vendor/mail/spec/mail/fields/common/common_field_spec.rb +69 -0
  271. data/vendor/mail/spec/mail/fields/common/common_message_id_spec.rb +30 -0
  272. data/vendor/mail/spec/mail/fields/common/parameter_hash_spec.rb +56 -0
  273. data/vendor/mail/spec/mail/fields/content_description_field_spec.rb +39 -0
  274. data/vendor/mail/spec/mail/fields/content_disposition_field_spec.rb +55 -0
  275. data/vendor/mail/spec/mail/fields/content_id_field_spec.rb +117 -0
  276. data/vendor/mail/spec/mail/fields/content_location_field_spec.rb +46 -0
  277. data/vendor/mail/spec/mail/fields/content_transfer_encoding_field_spec.rb +113 -0
  278. data/vendor/mail/spec/mail/fields/content_type_field_spec.rb +678 -0
  279. data/vendor/mail/spec/mail/fields/date_field_spec.rb +73 -0
  280. data/vendor/mail/spec/mail/fields/envelope_spec.rb +48 -0
  281. data/vendor/mail/spec/mail/fields/from_field_spec.rb +89 -0
  282. data/vendor/mail/spec/mail/fields/in_reply_to_field_spec.rb +62 -0
  283. data/vendor/mail/spec/mail/fields/keywords_field_spec.rb +66 -0
  284. data/vendor/mail/spec/mail/fields/message_id_field_spec.rb +147 -0
  285. data/vendor/mail/spec/mail/fields/mime_version_field_spec.rb +166 -0
  286. data/vendor/mail/spec/mail/fields/received_field_spec.rb +44 -0
  287. data/vendor/mail/spec/mail/fields/references_field_spec.rb +35 -0
  288. data/vendor/mail/spec/mail/fields/reply_to_field_spec.rb +67 -0
  289. data/vendor/mail/spec/mail/fields/resent_bcc_field_spec.rb +66 -0
  290. data/vendor/mail/spec/mail/fields/resent_cc_field_spec.rb +66 -0
  291. data/vendor/mail/spec/mail/fields/resent_date_field_spec.rb +39 -0
  292. data/vendor/mail/spec/mail/fields/resent_from_field_spec.rb +66 -0
  293. data/vendor/mail/spec/mail/fields/resent_message_id_field_spec.rb +24 -0
  294. data/vendor/mail/spec/mail/fields/resent_sender_field_spec.rb +58 -0
  295. data/vendor/mail/spec/mail/fields/resent_to_field_spec.rb +66 -0
  296. data/vendor/mail/spec/mail/fields/return_path_field_spec.rb +52 -0
  297. data/vendor/mail/spec/mail/fields/sender_field_spec.rb +58 -0
  298. data/vendor/mail/spec/mail/fields/structured_field_spec.rb +72 -0
  299. data/vendor/mail/spec/mail/fields/to_field_spec.rb +92 -0
  300. data/vendor/mail/spec/mail/fields/unstructured_field_spec.rb +134 -0
  301. data/vendor/mail/spec/mail/header_spec.rb +578 -0
  302. data/vendor/mail/spec/mail/mail_spec.rb +34 -0
  303. data/vendor/mail/spec/mail/message_spec.rb +1409 -0
  304. data/vendor/mail/spec/mail/mime_messages_spec.rb +435 -0
  305. data/vendor/mail/spec/mail/multipart_report_spec.rb +112 -0
  306. data/vendor/mail/spec/mail/network/delivery_methods/file_delivery_spec.rb +79 -0
  307. data/vendor/mail/spec/mail/network/delivery_methods/sendmail_spec.rb +125 -0
  308. data/vendor/mail/spec/mail/network/delivery_methods/smtp_spec.rb +133 -0
  309. data/vendor/mail/spec/mail/network/delivery_methods/test_mailer_spec.rb +57 -0
  310. data/vendor/mail/spec/mail/network/retriever_methods/pop3_spec.rb +180 -0
  311. data/vendor/mail/spec/mail/network_spec.rb +359 -0
  312. data/vendor/mail/spec/mail/parsers/address_lists_parser_spec.rb +15 -0
  313. data/vendor/mail/spec/mail/parsers/content_transfer_encoding_parser_spec.rb +72 -0
  314. data/vendor/mail/spec/mail/part_spec.rb +129 -0
  315. data/vendor/mail/spec/mail/parts_list_spec.rb +12 -0
  316. data/vendor/mail/spec/mail/round_tripping_spec.rb +44 -0
  317. data/vendor/mail/spec/mail/utilities_spec.rb +327 -0
  318. data/vendor/mail/spec/mail/version_specific/escape_paren_1_8_spec.rb +32 -0
  319. data/vendor/mail/spec/matchers/break_down_to.rb +35 -0
  320. data/vendor/mail/spec/spec_helper.rb +163 -0
  321. metadata +442 -0
@@ -0,0 +1,1180 @@
1
+
2
+
3
+
4
+
5
+
6
+
7
+ Network Working Group N. Freed
8
+ Request for Comments: 2048 Innosoft
9
+ BCP: 13 J. Klensin
10
+ Obsoletes: 1521, 1522, 1590 MCI
11
+ Category: Best Current Practice J. Postel
12
+ ISI
13
+ November 1996
14
+
15
+
16
+ Multipurpose Internet Mail Extensions
17
+ (MIME) Part Four:
18
+ Registration Procedures
19
+
20
+ Status of this Memo
21
+
22
+ This document specifies an Internet Best Current Practices for the
23
+ Internet Community, and requests discussion and suggestions for
24
+ improvements. Distribution of this memo is unlimited.
25
+
26
+ Abstract
27
+
28
+ STD 11, RFC 822, defines a message representation protocol specifying
29
+ considerable detail about US-ASCII message headers, and leaves the
30
+ message content, or message body, as flat US-ASCII text. This set of
31
+ documents, collectively called the Multipurpose Internet Mail
32
+ Extensions, or MIME, redefines the format of messages to allow for
33
+
34
+ (1) textual message bodies in character sets other than
35
+ US-ASCII,
36
+
37
+ (2) an extensible set of different formats for non-textual
38
+ message bodies,
39
+
40
+ (3) multi-part message bodies, and
41
+
42
+ (4) textual header information in character sets other than
43
+ US-ASCII.
44
+
45
+ These documents are based on earlier work documented in RFC 934, STD
46
+ 11, and RFC 1049, but extends and revises them. Because RFC 822 said
47
+ so little about message bodies, these documents are largely
48
+ orthogonal to (rather than a revision of) RFC 822.
49
+
50
+
51
+
52
+
53
+
54
+
55
+
56
+
57
+
58
+ Freed, et. al. Best Current Practice [Page 1]
59
+
60
+ RFC 2048 MIME Registration Procedures November 1996
61
+
62
+
63
+ This fourth document, RFC 2048, specifies various IANA registration
64
+ procedures for the following MIME facilities:
65
+
66
+ (1) media types,
67
+
68
+ (2) external body access types,
69
+
70
+ (3) content-transfer-encodings.
71
+
72
+ Registration of character sets for use in MIME is covered elsewhere
73
+ and is no longer addressed by this document.
74
+
75
+ These documents are revisions of RFCs 1521 and 1522, which themselves
76
+ were revisions of RFCs 1341 and 1342. An appendix in RFC 2049
77
+ describes differences and changes from previous versions.
78
+
79
+ Table of Contents
80
+
81
+ 1. Introduction ......................................... 3
82
+ 2. Media Type Registration .............................. 4
83
+ 2.1 Registration Trees and Subtype Names ................ 4
84
+ 2.1.1 IETF Tree ......................................... 4
85
+ 2.1.2 Vendor Tree ....................................... 4
86
+ 2.1.3 Personal or Vanity Tree ........................... 5
87
+ 2.1.4 Special `x.' Tree ................................. 5
88
+ 2.1.5 Additional Registration Trees ..................... 6
89
+ 2.2 Registration Requirements ........................... 6
90
+ 2.2.1 Functionality Requirement ......................... 6
91
+ 2.2.2 Naming Requirements ............................... 6
92
+ 2.2.3 Parameter Requirements ............................ 7
93
+ 2.2.4 Canonicalization and Format Requirements .......... 7
94
+ 2.2.5 Interchange Recommendations ....................... 8
95
+ 2.2.6 Security Requirements ............................. 8
96
+ 2.2.7 Usage and Implementation Non-requirements ......... 9
97
+ 2.2.8 Publication Requirements .......................... 10
98
+ 2.2.9 Additional Information ............................ 10
99
+ 2.3 Registration Procedure .............................. 11
100
+ 2.3.1 Present the Media Type to the Community for Review 11
101
+ 2.3.2 IESG Approval ..................................... 12
102
+ 2.3.3 IANA Registration ................................. 12
103
+ 2.4 Comments on Media Type Registrations ................ 12
104
+ 2.5 Location of Registered Media Type List .............. 12
105
+ 2.6 IANA Procedures for Registering Media Types ......... 12
106
+ 2.7 Change Control ...................................... 13
107
+ 2.8 Registration Template ............................... 14
108
+ 3. External Body Access Types ........................... 14
109
+ 3.1 Registration Requirements ........................... 15
110
+ 3.1.1 Naming Requirements ............................... 15
111
+
112
+
113
+
114
+ Freed, et. al. Best Current Practice [Page 2]
115
+
116
+ RFC 2048 MIME Registration Procedures November 1996
117
+
118
+
119
+ 3.1.2 Mechanism Specification Requirements .............. 15
120
+ 3.1.3 Publication Requirements .......................... 15
121
+ 3.1.4 Security Requirements ............................. 15
122
+ 3.2 Registration Procedure .............................. 15
123
+ 3.2.1 Present the Access Type to the Community .......... 16
124
+ 3.2.2 Access Type Reviewer .............................. 16
125
+ 3.2.3 IANA Registration ................................. 16
126
+ 3.3 Location of Registered Access Type List ............. 16
127
+ 3.4 IANA Procedures for Registering Access Types ........ 16
128
+ 4. Transfer Encodings ................................... 17
129
+ 4.1 Transfer Encoding Requirements ...................... 17
130
+ 4.1.1 Naming Requirements ............................... 17
131
+ 4.1.2 Algorithm Specification Requirements .............. 18
132
+ 4.1.3 Input Domain Requirements ......................... 18
133
+ 4.1.4 Output Range Requirements ......................... 18
134
+ 4.1.5 Data Integrity and Generality Requirements ........ 18
135
+ 4.1.6 New Functionality Requirements .................... 18
136
+ 4.2 Transfer Encoding Definition Procedure .............. 19
137
+ 4.3 IANA Procedures for Transfer Encoding Registration... 19
138
+ 4.4 Location of Registered Transfer Encodings List ...... 19
139
+ 5. Authors' Addresses ................................... 20
140
+ A. Grandfathered Media Types ............................ 21
141
+
142
+ 1. Introduction
143
+
144
+ Recent Internet protocols have been carefully designed to be easily
145
+ extensible in certain areas. In particular, MIME [RFC 2045] is an
146
+ open-ended framework and can accommodate additional object types,
147
+ character sets, and access methods without any changes to the basic
148
+ protocol. A registration process is needed, however, to ensure that
149
+ the set of such values is developed in an orderly, well-specified,
150
+ and public manner.
151
+
152
+ This document defines registration procedures which use the Internet
153
+ Assigned Numbers Authority (IANA) as a central registry for such
154
+ values.
155
+
156
+ Historical Note: The registration process for media types was
157
+ initially defined in the context of the asynchronous Internet mail
158
+ environment. In this mail environment there is a need to limit the
159
+ number of possible media types to increase the likelihood of
160
+ interoperability when the capabilities of the remote mail system are
161
+ not known. As media types are used in new environments, where the
162
+ proliferation of media types is not a hindrance to interoperability,
163
+ the original procedure was excessively restrictive and had to be
164
+ generalized.
165
+
166
+
167
+
168
+
169
+
170
+ Freed, et. al. Best Current Practice [Page 3]
171
+
172
+ RFC 2048 MIME Registration Procedures November 1996
173
+
174
+
175
+ 2. Media Type Registration
176
+
177
+ Registration of a new media type or types starts with the
178
+ construction of a registration proposal. Registration may occur in
179
+ several different registration trees, which have different
180
+ requirements as discussed below. In general, the new registration
181
+ proposal is circulated and reviewed in a fashion appropriate to the
182
+ tree involved. The media type is then registered if the proposal is
183
+ acceptable. The following sections describe the requirements and
184
+ procedures used for each of the different registration trees.
185
+
186
+ 2.1. Registration Trees and Subtype Names
187
+
188
+ In order to increase the efficiency and flexibility of the
189
+ registration process, different structures of subtype names may be
190
+ registered to accomodate the different natural requirements for,
191
+ e.g., a subtype that will be recommended for wide support and
192
+ implementation by the Internet Community or a subtype that is used to
193
+ move files associated with proprietary software. The following
194
+ subsections define registration "trees", distinguished by the use of
195
+ faceted names (e.g., names of the form "tree.subtree...type"). Note
196
+ that some media types defined prior to this document do not conform
197
+ to the naming conventions described below. See Appendix A for a
198
+ discussion of them.
199
+
200
+ 2.1.1. IETF Tree
201
+
202
+ The IETF tree is intended for types of general interest to the
203
+ Internet Community. Registration in the IETF tree requires approval
204
+ by the IESG and publication of the media type registration as some
205
+ form of RFC.
206
+
207
+ Media types in the IETF tree are normally denoted by names that are
208
+ not explicitly faceted, i.e., do not contain period (".", full stop)
209
+ characters.
210
+
211
+ The "owner" of a media type registration in the IETF tree is assumed
212
+ to be the IETF itself. Modification or alteration of the
213
+ specification requires the same level of processing (e.g. standards
214
+ track) required for the initial registration.
215
+
216
+ 2.1.2. Vendor Tree
217
+
218
+ The vendor tree is used for media types associated with commercially
219
+ available products. "Vendor" or "producer" are construed as
220
+ equivalent and very broadly in this context.
221
+
222
+
223
+
224
+
225
+
226
+ Freed, et. al. Best Current Practice [Page 4]
227
+
228
+ RFC 2048 MIME Registration Procedures November 1996
229
+
230
+
231
+ A registration may be placed in the vendor tree by anyone who has
232
+ need to interchange files associated with the particular product.
233
+ However, the registration formally belongs to the vendor or
234
+ organization producing the software or file format. Changes to the
235
+ specification will be made at their request, as discussed in
236
+ subsequent sections.
237
+
238
+ Registrations in the vendor tree will be distinguished by the leading
239
+ facet "vnd.". That may be followed, at the discretion of the
240
+ registration, by either a media type name from a well-known producer
241
+ (e.g., "vnd.mudpie") or by an IANA-approved designation of the
242
+ producer's name which is then followed by a media type or product
243
+ designation (e.g., vnd.bigcompany.funnypictures).
244
+
245
+ While public exposure and review of media types to be registered in
246
+ the vendor tree is not required, using the ietf-types list for review
247
+ is strongly encouraged to improve the quality of those
248
+ specifications. Registrations in the vendor tree may be submitted
249
+ directly to the IANA.
250
+
251
+ 2.1.3. Personal or Vanity Tree
252
+
253
+ Registrations for media types created experimentally or as part of
254
+ products that are not distributed commercially may be registered in
255
+ the personal or vanity tree. The registrations are distinguished by
256
+ the leading facet "prs.".
257
+
258
+ The owner of "personal" registrations and associated specifications
259
+ is the person or entity making the registration, or one to whom
260
+ responsibility has been transferred as described below.
261
+
262
+ While public exposure and review of media types to be registered in
263
+ the personal tree is not required, using the ietf-types list for
264
+ review is strongly encouraged to improve the quality of those
265
+ specifications. Registrations in the personl tree may be submitted
266
+ directly to the IANA.
267
+
268
+ 2.1.4. Special `x.' Tree
269
+
270
+ For convenience and symmetry with this registration scheme, media
271
+ type names with "x." as the first facet may be used for the same
272
+ purposes for which names starting in "x-" are normally used. These
273
+ types are unregistered, experimental, and should be used only with
274
+ the active agreement of the parties exchanging them.
275
+
276
+
277
+
278
+
279
+
280
+
281
+
282
+ Freed, et. al. Best Current Practice [Page 5]
283
+
284
+ RFC 2048 MIME Registration Procedures November 1996
285
+
286
+
287
+ However, with the simplified registration procedures described above
288
+ for vendor and personal trees, it should rarely, if ever, be
289
+ necessary to use unregistered experimental types, and as such use of
290
+ both "x-" and "x." forms is discouraged.
291
+
292
+ 2.1.5. Additional Registration Trees
293
+
294
+ From time to time and as required by the community, the IANA may,
295
+ with the advice and consent of the IESG, create new top-level
296
+ registration trees. It is explicitly assumed that these trees may be
297
+ created for external registration and management by well-known
298
+ permanent bodies, such as scientific societies for media types
299
+ specific to the sciences they cover. In general, the quality of
300
+ review of specifications for one of these additional registration
301
+ trees is expected to be equivalent to that which IETF would give to
302
+ registrations in its own tree. Establishment of these new trees will
303
+ be announced through RFC publication approved by the IESG.
304
+
305
+ 2.2. Registration Requirements
306
+
307
+ Media type registration proposals are all expected to conform to
308
+ various requirements laid out in the following sections. Note that
309
+ requirement specifics sometimes vary depending on the registration
310
+ tree, again as detailed in the following sections.
311
+
312
+ 2.2.1. Functionality Requirement
313
+
314
+ Media types must function as an actual media format: Registration of
315
+ things that are better thought of as a transfer encoding, as a
316
+ character set, or as a collection of separate entities of another
317
+ type, is not allowed. For example, although applications exist to
318
+ decode the base64 transfer encoding [RFC 2045], base64 cannot be
319
+ registered as a media type.
320
+
321
+ This requirement applies regardless of the registration tree
322
+ involved.
323
+
324
+ 2.2.2. Naming Requirements
325
+
326
+ All registered media types must be assigned MIME type and subtype
327
+ names. The combination of these names then serves to uniquely
328
+ identify the media type and the format of the subtype name identifies
329
+ the registration tree.
330
+
331
+ The choice of top-level type name must take the nature of media type
332
+ involved into account. For example, media normally used for
333
+ representing still images should be a subtype of the image content
334
+ type, whereas media capable of representing audio information belongs
335
+
336
+
337
+
338
+ Freed, et. al. Best Current Practice [Page 6]
339
+
340
+ RFC 2048 MIME Registration Procedures November 1996
341
+
342
+
343
+ under the audio content type. See RFC 2046 for additional information
344
+ on the basic set of top-level types and their characteristics.
345
+
346
+ New subtypes of top-level types must conform to the restrictions of
347
+ the top-level type, if any. For example, all subtypes of the
348
+ multipart content type must use the same encapsulation syntax.
349
+
350
+ In some cases a new media type may not "fit" under any currently
351
+ defined top-level content type. Such cases are expected to be quite
352
+ rare. However, if such a case arises a new top-level type can be
353
+ defined to accommodate it. Such a definition must be done via
354
+ standards-track RFC; no other mechanism can be used to define
355
+ additional top-level content types.
356
+
357
+ These requirements apply regardless of the registration tree
358
+ involved.
359
+
360
+ 2.2.3. Parameter Requirements
361
+
362
+ Media types may elect to use one or more MIME content type
363
+ parameters, or some parameters may be automatically made available to
364
+ the media type by virtue of being a subtype of a content type that
365
+ defines a set of parameters applicable to any of its subtypes. In
366
+ either case, the names, values, and meanings of any parameters must
367
+ be fully specified when a media type is registered in the IETF tree,
368
+ and should be specified as completely as possible when media types
369
+ are registered in the vendor or personal trees.
370
+
371
+ New parameters must not be defined as a way to introduce new
372
+ functionality in types registered in the IETF tree, although new
373
+ parameters may be added to convey additional information that does
374
+ not otherwise change existing functionality. An example of this
375
+ would be a "revision" parameter to indicate a revision level of an
376
+ external specification such as JPEG. Similar behavior is encouraged
377
+ for media types registered in the vendor or personal trees but is not
378
+ required.
379
+
380
+ 2.2.4. Canonicalization and Format Requirements
381
+
382
+ All registered media types must employ a single, canonical data
383
+ format, regardless of registration tree.
384
+
385
+ A precise and openly available specification of the format of each
386
+ media type is required for all types registered in the IETF tree and
387
+ must at a minimum be referenced by, if it isn't actually included in,
388
+ the media type registration proposal itself.
389
+
390
+
391
+
392
+
393
+
394
+ Freed, et. al. Best Current Practice [Page 7]
395
+
396
+ RFC 2048 MIME Registration Procedures November 1996
397
+
398
+
399
+ The specifications of format and processing particulars may or may
400
+ not be publically available for media types registered in the vendor
401
+ tree, and such registration proposals are explicitly permitted to
402
+ include only a specification of which software and version produce or
403
+ process such media types. References to or inclusion of format
404
+ specifications in registration proposals is encouraged but not
405
+ required.
406
+
407
+ Format specifications are still required for registration in the
408
+ personal tree, but may be either published as RFCs or otherwise
409
+ deposited with IANA. The deposited specifications will meet the same
410
+ criteria as those required to register a well-known TCP port and, in
411
+ particular, need not be made public.
412
+
413
+ Some media types involve the use of patented technology. The
414
+ registration of media types involving patented technology is
415
+ specifically permitted. However, the restrictions set forth in RFC
416
+ 1602 on the use of patented technology in standards-track protocols
417
+ must be respected when the specification of a media type is part of a
418
+ standards-track protocol.
419
+
420
+ 2.2.5. Interchange Recommendations
421
+
422
+ Media types should, whenever possible, interoperate across as many
423
+ systems and applications as possible. However, some media types will
424
+ inevitably have problems interoperating across different platforms.
425
+ Problems with different versions, byte ordering, and specifics of
426
+ gateway handling can and will arise.
427
+
428
+ Universal interoperability of media types is not required, but known
429
+ interoperability issues should be identified whenever possible.
430
+ Publication of a media type does not require an exhaustive review of
431
+ interoperability, and the interoperability considerations section is
432
+ subject to continuing evaluation.
433
+
434
+ These recommendations apply regardless of the registration tree
435
+ involved.
436
+
437
+ 2.2.6. Security Requirements
438
+
439
+ An analysis of security issues is required for for all types
440
+ registered in the IETF Tree. (This is in accordance with the basic
441
+ requirements for all IETF protocols.) A similar analysis for media
442
+ types registered in the vendor or personal trees is encouraged but
443
+ not required. However, regardless of what security analysis has or
444
+ has not been done, all descriptions of security issues must be as
445
+ accurate as possible regardless of registration tree. In particular,
446
+ a statement that there are "no security issues associated with this
447
+
448
+
449
+
450
+ Freed, et. al. Best Current Practice [Page 8]
451
+
452
+ RFC 2048 MIME Registration Procedures November 1996
453
+
454
+
455
+ type" must not be confused with "the security issues associates with
456
+ this type have not been assessed".
457
+
458
+ There is absolutely no requirement that media types registered in any
459
+ tree be secure or completely free from risks. Nevertheless, all
460
+ known security risks must be identified in the registration of a
461
+ media type, again regardless of registration tree.
462
+
463
+ The security considerations section of all registrations is subject
464
+ to continuing evaluation and modification, and in particular may be
465
+ extended by use of the "comments on media types" mechanism described
466
+ in subsequent sections.
467
+
468
+ Some of the issues that should be looked at in a security analysis of
469
+ a media type are:
470
+
471
+ (1) Complex media types may include provisions for
472
+ directives that institute actions on a recipient's
473
+ files or other resources. In many cases provision is
474
+ made for originators to specify arbitrary actions in an
475
+ unrestricted fashion which may then have devastating
476
+ effects. See the registration of the
477
+ application/postscript media type in RFC 2046 for
478
+ an example of such directives and how to handle them.
479
+
480
+ (2) Complex media types may include provisions for
481
+ directives that institute actions which, while not
482
+ directly harmful to the recipient, may result in
483
+ disclosure of information that either facilitates a
484
+ subsequent attack or else violates a recipient's
485
+ privacy in some way. Again, the registration of the
486
+ application/postscript media type illustrates how such
487
+ directives can be handled.
488
+
489
+ (3) A media type might be targeted for applications that
490
+ require some sort of security assurance but not provide
491
+ the necessary security mechanisms themselves. For
492
+ example, a media type could be defined for storage of
493
+ confidential medical information which in turn requires
494
+ an external confidentiality service.
495
+
496
+ 2.2.7. Usage and Implementation Non-requirements
497
+
498
+ In the asynchronous mail environment, where information on the
499
+ capabilities of the remote mail agent is frequently not available to
500
+ the sender, maximum interoperability is attained by restricting the
501
+ number of media types used to those "common" formats expected to be
502
+ widely implemented. This was asserted in the past as a reason to
503
+
504
+
505
+
506
+ Freed, et. al. Best Current Practice [Page 9]
507
+
508
+ RFC 2048 MIME Registration Procedures November 1996
509
+
510
+
511
+ limit the number of possible media types and resulted in a
512
+ registration process with a significant hurdle and delay for those
513
+ registering media types.
514
+
515
+ However, the need for "common" media types does not require limiting
516
+ the registration of new media types. If a limited set of media types
517
+ is recommended for a particular application, that should be asserted
518
+ by a separate applicability statement specific for the application
519
+ and/or environment.
520
+
521
+ As such, universal support and implementation of a media type is NOT
522
+ a requirement for registration. If, however, a media type is
523
+ explicitly intended for limited use, this should be noted in its
524
+ registration.
525
+
526
+ 2.2.8. Publication Requirements
527
+
528
+ Proposals for media types registered in the IETF tree must be
529
+ published as RFCs. RFC publication of vendor and personal media type
530
+ proposals is encouraged but not required. In all cases IANA will
531
+ retain copies of all media type proposals and "publish" them as part
532
+ of the media types registration tree itself.
533
+
534
+ Other than in the IETF tree, the registration of a data type does not
535
+ imply endorsement, approval, or recommendation by IANA or IETF or
536
+ even certification that the specification is adequate. To become
537
+ Internet Standards, protocol, data objects, or whatever must go
538
+ through the IETF standards process. This is too difficult and too
539
+ lengthy a process for the convenient registration of media types.
540
+
541
+ The IETF tree exists for media types that do require require a
542
+ substantive review and approval process with the vendor and personal
543
+ trees exist for those that do not. It is expected that applicability
544
+ statements for particular applications will be published from time to
545
+ time that recommend implementation of, and support for, media types
546
+ that have proven particularly useful in those contexts.
547
+
548
+ As discussed above, registration of a top-level type requires
549
+ standards-track processing and, hence, RFC publication.
550
+
551
+ 2.2.9. Additional Information
552
+
553
+ Various sorts of optional information may be included in the
554
+ specification of a media type if it is available:
555
+
556
+ (1) Magic number(s) (length, octet values). Magic numbers
557
+ are byte sequences that are always present and thus can
558
+ be used to identify entities as being of a given media
559
+
560
+
561
+
562
+ Freed, et. al. Best Current Practice [Page 10]
563
+
564
+ RFC 2048 MIME Registration Procedures November 1996
565
+
566
+
567
+ type.
568
+
569
+ (2) File extension(s) commonly used on one or more
570
+ platforms to indicate that some file containing a given
571
+ type of media.
572
+
573
+ (3) Macintosh File Type code(s) (4 octets) used to label
574
+ files containing a given type of media.
575
+
576
+ Such information is often quite useful to implementors and if
577
+ available should be provided.
578
+
579
+ 2.3. Registration Procedure
580
+
581
+ The following procedure has been implemented by the IANA for review
582
+ and approval of new media types. This is not a formal standards
583
+ process, but rather an administrative procedure intended to allow
584
+ community comment and sanity checking without excessive time delay.
585
+ For registration in the IETF tree, the normal IETF processes should
586
+ be followed, treating posting of an internet-draft and announcement
587
+ on the ietf-types list (as described in the next subsection) as a
588
+ first step. For registrations in the vendor or personal tree, the
589
+ initial review step described below may be omitted and the type
590
+ registered directly by submitting the template and an explanation
591
+ directly to IANA (at iana@iana.org). However, authors of vendor or
592
+ personal media type specifications are encouraged to seek community
593
+ review and comment whenever that is feasible.
594
+
595
+ 2.3.1. Present the Media Type to the Community for Review
596
+
597
+ Send a proposed media type registration to the "ietf-types@iana.org"
598
+ mailing list for a two week review period. This mailing list has
599
+ been established for the purpose of reviewing proposed media and
600
+ access types. Proposed media types are not formally registered and
601
+ must not be used; the "x-" prefix specified in RFC 2045 can be used
602
+ until registration is complete.
603
+
604
+ The intent of the public posting is to solicit comments and feedback
605
+ on the choice of type/subtype name, the unambiguity of the references
606
+ with respect to versions and external profiling information, and a
607
+ review of any interoperability or security considerations. The
608
+ submitter may submit a revised registration, or withdraw the
609
+ registration completely, at any time.
610
+
611
+
612
+
613
+
614
+
615
+
616
+
617
+
618
+ Freed, et. al. Best Current Practice [Page 11]
619
+
620
+ RFC 2048 MIME Registration Procedures November 1996
621
+
622
+
623
+ 2.3.2. IESG Approval
624
+
625
+ Media types registered in the IETF tree must be submitted to the IESG
626
+ for approval.
627
+
628
+ 2.3.3. IANA Registration
629
+
630
+ Provided that the media type meets the requirements for media types
631
+ and has obtained approval that is necessary, the author may submit
632
+ the registration request to the IANA, which will register the media
633
+ type and make the media type registration available to the community.
634
+
635
+ 2.4. Comments on Media Type Registrations
636
+
637
+ Comments on registered media types may be submitted by members of the
638
+ community to IANA. These comments will be passed on to the "owner"
639
+ of the media type if possible. Submitters of comments may request
640
+ that their comment be attached to the media type registration itself,
641
+ and if IANA approves of this the comment will be made accessible in
642
+ conjunction with the type registration itself.
643
+
644
+ 2.5. Location of Registered Media Type List
645
+
646
+ Media type registrations will be posted in the anonymous FTP
647
+ directory "ftp://ftp.isi.edu/in-notes/iana/assignments/media-types/"
648
+ and all registered media types will be listed in the periodically
649
+ issued "Assigned Numbers" RFC [currently STD 2, RFC 1700]. The media
650
+ type description and other supporting material may also be published
651
+ as an Informational RFC by sending it to "rfc-editor@isi.edu" (please
652
+ follow the instructions to RFC authors [RFC-1543]).
653
+
654
+ 2.6. IANA Procedures for Registering Media Types
655
+
656
+ The IANA will only register media types in the IETF tree in response
657
+ to a communication from the IESG stating that a given registration
658
+ has been approved. Vendor and personal types will be registered by
659
+ the IANA automatically and without any formal review as long as the
660
+ following minimal conditions are met:
661
+
662
+ (1) Media types must function as an actual media format.
663
+ In particular, character sets and transfer encodings
664
+ may not be registered as media types.
665
+
666
+ (2) All media types must have properly formed type and
667
+ subtype names. All type names must be defined by a
668
+ standards-track RFC. All subtype names must be unique,
669
+ must conform to the MIME grammar for such names, and
670
+ must contain the proper tree prefix.
671
+
672
+
673
+
674
+ Freed, et. al. Best Current Practice [Page 12]
675
+
676
+ RFC 2048 MIME Registration Procedures November 1996
677
+
678
+
679
+ (3) Types registered in the personal tree must either
680
+ provide a format specification or a pointer to one.
681
+
682
+ (4) Any security considerations given must not be obviously
683
+ bogus. (It is neither possible nor necessary for the
684
+ IANA to conduct a comprehensive security review of
685
+ media type registrations. Nevertheless, IANA has the
686
+ authority to identify obviously incompetent material
687
+ and exclude it.)
688
+
689
+ 2.7. Change Control
690
+
691
+ Once a media type has been published by IANA, the author may request
692
+ a change to its definition. The descriptions of the different
693
+ registration trees above designate the "owners" of each type of
694
+ registration. The change request follows the same procedure as the
695
+ registration request:
696
+
697
+ (1) Publish the revised template on the ietf-types list.
698
+
699
+ (2) Leave at least two weeks for comments.
700
+
701
+ (3) Publish using IANA after formal review if required.
702
+
703
+ Changes should be requested only when there are serious omission or
704
+ errors in the published specification. When review is required, a
705
+ change request may be denied if it renders entities that were valid
706
+ under the previous definition invalid under the new definition.
707
+
708
+ The owner of a content type may pass responsibility for the content
709
+ type to another person or agency by informing IANA and the ietf-types
710
+ list; this can be done without discussion or review.
711
+
712
+ The IESG may reassign responsibility for a media type. The most
713
+ common case of this will be to enable changes to be made to types
714
+ where the author of the registration has died, moved out of contact
715
+ or is otherwise unable to make changes that are important to the
716
+ community.
717
+
718
+ Media type registrations may not be deleted; media types which are no
719
+ longer believed appropriate for use can be declared OBSOLETE by a
720
+ change to their "intended use" field; such media types will be
721
+ clearly marked in the lists published by IANA.
722
+
723
+
724
+
725
+
726
+
727
+
728
+
729
+
730
+ Freed, et. al. Best Current Practice [Page 13]
731
+
732
+ RFC 2048 MIME Registration Procedures November 1996
733
+
734
+
735
+ 2.8. Registration Template
736
+
737
+ To: ietf-types@iana.org
738
+ Subject: Registration of MIME media type XXX/YYY
739
+
740
+ MIME media type name:
741
+
742
+ MIME subtype name:
743
+
744
+ Required parameters:
745
+
746
+ Optional parameters:
747
+
748
+ Encoding considerations:
749
+
750
+ Security considerations:
751
+
752
+ Interoperability considerations:
753
+
754
+ Published specification:
755
+
756
+ Applications which use this media type:
757
+
758
+ Additional information:
759
+
760
+ Magic number(s):
761
+ File extension(s):
762
+ Macintosh File Type Code(s):
763
+
764
+ Person & email address to contact for further information:
765
+
766
+ Intended usage:
767
+
768
+ (One of COMMON, LIMITED USE or OBSOLETE)
769
+
770
+ Author/Change controller:
771
+
772
+ (Any other information that the author deems interesting may be
773
+ added below this line.)
774
+
775
+ 3. External Body Access Types
776
+
777
+ RFC 2046 defines the message/external-body media type, whereby a MIME
778
+ entity can act as pointer to the actual body data in lieu of
779
+ including the data directly in the entity body. Each
780
+ message/external-body reference specifies an access type, which
781
+ determines the mechanism used to retrieve the actual body data. RFC
782
+ 2046 defines an initial set of access types, but allows for the
783
+
784
+
785
+
786
+ Freed, et. al. Best Current Practice [Page 14]
787
+
788
+ RFC 2048 MIME Registration Procedures November 1996
789
+
790
+
791
+ registration of additional access types to accommodate new retrieval
792
+ mechanisms.
793
+
794
+ 3.1. Registration Requirements
795
+
796
+ New access type specifications must conform to a number of
797
+ requirements as described below.
798
+
799
+ 3.1.1. Naming Requirements
800
+
801
+ Each access type must have a unique name. This name appears in the
802
+ access-type parameter in the message/external-body content-type
803
+ header field, and must conform to MIME content type parameter syntax.
804
+
805
+ 3.1.2. Mechanism Specification Requirements
806
+
807
+ All of the protocols, transports, and procedures used by a given
808
+ access type must be described, either in the specification of the
809
+ access type itself or in some other publicly available specification,
810
+ in sufficient detail for the access type to be implemented by any
811
+ competent implementor. Use of secret and/or proprietary methods in
812
+ access types are expressly prohibited. The restrictions imposed by
813
+ RFC 1602 on the standardization of patented algorithms must be
814
+ respected as well.
815
+
816
+ 3.1.3. Publication Requirements
817
+
818
+ All access types must be described by an RFC. The RFC may be
819
+ informational rather than standards-track, although standard-track
820
+ review and approval are encouraged for all access types.
821
+
822
+ 3.1.4. Security Requirements
823
+
824
+ Any known security issues that arise from the use of the access type
825
+ must be completely and fully described. It is not required that the
826
+ access type be secure or that it be free from risks, but that the
827
+ known risks be identified. Publication of a new access type does not
828
+ require an exhaustive security review, and the security
829
+ considerations section is subject to continuing evaluation.
830
+ Additional security considerations should be addressed by publishing
831
+ revised versions of the access type specification.
832
+
833
+ 3.2. Registration Procedure
834
+
835
+ Registration of a new access type starts with the construction of a
836
+ draft of an RFC.
837
+
838
+
839
+
840
+
841
+
842
+ Freed, et. al. Best Current Practice [Page 15]
843
+
844
+ RFC 2048 MIME Registration Procedures November 1996
845
+
846
+
847
+ 3.2.1. Present the Access Type to the Community
848
+
849
+ Send a proposed access type specification to the "ietf-
850
+ types@iana.org" mailing list for a two week review period. This
851
+ mailing list has been established for the purpose of reviewing
852
+ proposed access and media types. Proposed access types are not
853
+ formally registered and must not be used.
854
+
855
+ The intent of the public posting is to solicit comments and feedback
856
+ on the access type specification and a review of any security
857
+ considerations.
858
+
859
+ 3.2.2. Access Type Reviewer
860
+
861
+ When the two week period has passed, the access type reviewer, who is
862
+ appointed by the IETF Applications Area Director, either forwards the
863
+ request to iana@isi.edu, or rejects it because of significant
864
+ objections raised on the list.
865
+
866
+ Decisions made by the reviewer must be posted to the ietf-types
867
+ mailing list within 14 days. Decisions made by the reviewer may be
868
+ appealed to the IESG.
869
+
870
+ 3.2.3. IANA Registration
871
+
872
+ Provided that the access type has either passed review or has been
873
+ successfully appealed to the IESG, the IANA will register the access
874
+ type and make the registration available to the community. The
875
+ specification of the access type must also be published as an RFC.
876
+ Informational RFCs are published by sending them to "rfc-
877
+ editor@isi.edu" (please follow the instructions to RFC authors [RFC-
878
+ 1543]).
879
+
880
+ 3.3. Location of Registered Access Type List
881
+
882
+ Access type registrations will be posted in the anonymous FTP
883
+ directory "ftp://ftp.isi.edu/in-notes/iana/assignments/access-types/"
884
+ and all registered access types will be listed in the periodically
885
+ issued "Assigned Numbers" RFC [currently RFC-1700].
886
+
887
+ 3.4. IANA Procedures for Registering Access Types
888
+
889
+ The identity of the access type reviewer is communicated to the IANA
890
+ by the IESG. The IANA then only acts in response to access type
891
+ definitions that either are approved by the access type reviewer and
892
+ forwarded by the reviewer to the IANA for registration, or in
893
+ response to a communication from the IESG that an access type
894
+ definition appeal has overturned the access type reviewer's ruling.
895
+
896
+
897
+
898
+ Freed, et. al. Best Current Practice [Page 16]
899
+
900
+ RFC 2048 MIME Registration Procedures November 1996
901
+
902
+
903
+ 4. Transfer Encodings
904
+
905
+ Transfer encodings are tranformations applied to MIME media types
906
+ after conversion to the media type's canonical form. Transfer
907
+ encodings are used for several purposes:
908
+
909
+ (1) Many transports, especially message transports, can
910
+ only handle data consisting of relatively short lines
911
+ of text. There can also be severe restrictions on what
912
+ characters can be used in these lines of text -- some
913
+ transports are restricted to a small subset of US-ASCII
914
+ and others cannot handle certain character sequences.
915
+ Transfer encodings are used to transform binary data
916
+ into textual form that can survive such transports.
917
+ Examples of this sort of transfer encoding include the
918
+ base64 and quoted-printable transfer encodings defined
919
+ in RFC 2045.
920
+
921
+ (2) Image, audio, video, and even application entities are
922
+ sometimes quite large. Compression algorithms are often
923
+ quite effective in reducing the size of large entities.
924
+ Transfer encodings can be used to apply general-purpose
925
+ non-lossy compression algorithms to MIME entities.
926
+
927
+ (3) Transport encodings can be defined as a means of
928
+ representing existing encoding formats in a MIME
929
+ context.
930
+
931
+ IMPORTANT: The standardization of a large numbers of different
932
+ transfer encodings is seen as a significant barrier to widespread
933
+ interoperability and is expressely discouraged. Nevertheless, the
934
+ following procedure has been defined to provide a means of defining
935
+ additional transfer encodings, should standardization actually be
936
+ justified.
937
+
938
+ 4.1. Transfer Encoding Requirements
939
+
940
+ Transfer encoding specifications must conform to a number of
941
+ requirements as described below.
942
+
943
+ 4.1.1. Naming Requirements
944
+
945
+ Each transfer encoding must have a unique name. This name appears in
946
+ the Content-Transfer-Encoding header field and must conform to the
947
+ syntax of that field.
948
+
949
+
950
+
951
+
952
+
953
+
954
+ Freed, et. al. Best Current Practice [Page 17]
955
+
956
+ RFC 2048 MIME Registration Procedures November 1996
957
+
958
+
959
+ 4.1.2. Algorithm Specification Requirements
960
+
961
+ All of the algorithms used in a transfer encoding (e.g. conversion
962
+ to printable form, compression) must be described in their entirety
963
+ in the transfer encoding specification. Use of secret and/or
964
+ proprietary algorithms in standardized transfer encodings are
965
+ expressly prohibited. The restrictions imposed by RFC 1602 on the
966
+ standardization of patented algorithms must be respected as well.
967
+
968
+ 4.1.3. Input Domain Requirements
969
+
970
+ All transfer encodings must be applicable to an arbitrary sequence of
971
+ octets of any length. Dependence on particular input forms is not
972
+ allowed.
973
+
974
+ It should be noted that the 7bit and 8bit encodings do not conform to
975
+ this requirement. Aside from the undesireability of having
976
+ specialized encodings, the intent here is to forbid the addition of
977
+ additional encodings along the lines of 7bit and 8bit.
978
+
979
+ 4.1.4. Output Range Requirements
980
+
981
+ There is no requirement that a particular tranfer encoding produce a
982
+ particular form of encoded output. However, the output format for
983
+ each transfer encoding must be fully and completely documented. In
984
+ particular, each specification must clearly state whether the output
985
+ format always lies within the confines of 7bit data, 8bit data, or is
986
+ simply pure binary data.
987
+
988
+ 4.1.5. Data Integrity and Generality Requirements
989
+
990
+ All transfer encodings must be fully invertible on any platform; it
991
+ must be possible for anyone to recover the original data by
992
+ performing the corresponding decoding operation. Note that this
993
+ requirement effectively excludes all forms of lossy compression as
994
+ well as all forms of encryption from use as a transfer encoding.
995
+
996
+ 4.1.6. New Functionality Requirements
997
+
998
+ All transfer encodings must provide some sort of new functionality.
999
+ Some degree of functionality overlap with previously defined transfer
1000
+ encodings is acceptable, but any new transfer encoding must also
1001
+ offer something no other transfer encoding provides.
1002
+
1003
+
1004
+
1005
+
1006
+
1007
+
1008
+
1009
+
1010
+ Freed, et. al. Best Current Practice [Page 18]
1011
+
1012
+ RFC 2048 MIME Registration Procedures November 1996
1013
+
1014
+
1015
+ 4.2. Transfer Encoding Definition Procedure
1016
+
1017
+ Definition of a new transfer encoding starts with the construction of
1018
+ a draft of a standards-track RFC. The RFC must define the transfer
1019
+ encoding precisely and completely, and must also provide substantial
1020
+ justification for defining and standardizing a new transfer encoding.
1021
+ This specification must then be presented to the IESG for
1022
+ consideration. The IESG can
1023
+
1024
+ (1) reject the specification outright as being
1025
+ inappropriate for standardization,
1026
+
1027
+ (2) approve the formation of an IETF working group to work
1028
+ on the specification in accordance with IETF
1029
+ procedures, or,
1030
+
1031
+ (3) accept the specification as-is and put it directly on
1032
+ the standards track.
1033
+
1034
+ Transfer encoding specifications on the standards track follow normal
1035
+ IETF rules for standards track documents. A transfer encoding is
1036
+ considered to be defined and available for use once it is on the
1037
+ standards track.
1038
+
1039
+ 4.3. IANA Procedures for Transfer Encoding Registration
1040
+
1041
+ There is no need for a special procedure for registering Transfer
1042
+ Encodings with the IANA. All legitimate transfer encoding
1043
+ registrations must appear as a standards-track RFC, so it is the
1044
+ IESG's responsibility to notify the IANA when a new transfer encoding
1045
+ has been approved.
1046
+
1047
+ 4.4. Location of Registered Transfer Encodings List
1048
+
1049
+ Transfer encoding registrations will be posted in the anonymous FTP
1050
+ directory "ftp://ftp.isi.edu/in-notes/iana/assignments/transfer-
1051
+ encodings/" and all registered transfer encodings will be listed in
1052
+ the periodically issued "Assigned Numbers" RFC [currently RFC-1700].
1053
+
1054
+
1055
+
1056
+
1057
+
1058
+
1059
+
1060
+
1061
+
1062
+
1063
+
1064
+
1065
+
1066
+ Freed, et. al. Best Current Practice [Page 19]
1067
+
1068
+ RFC 2048 MIME Registration Procedures November 1996
1069
+
1070
+
1071
+ 5. Authors' Addresses
1072
+
1073
+ For more information, the authors of this document are best
1074
+ contacted via Internet mail:
1075
+
1076
+ Ned Freed
1077
+ Innosoft International, Inc.
1078
+ 1050 East Garvey Avenue South
1079
+ West Covina, CA 91790
1080
+ USA
1081
+
1082
+ Phone: +1 818 919 3600
1083
+ Fax: +1 818 919 3614
1084
+ EMail: ned@innosoft.com
1085
+
1086
+
1087
+ John Klensin
1088
+ MCI
1089
+ 2100 Reston Parkway
1090
+ Reston, VA 22091
1091
+
1092
+ Phone: +1 703 715-7361
1093
+ Fax: +1 703 715-7436
1094
+ EMail: klensin@mci.net
1095
+
1096
+
1097
+ Jon Postel
1098
+ USC/Information Sciences Institute
1099
+ 4676 Admiralty Way
1100
+ Marina del Rey, CA 90292
1101
+ USA
1102
+
1103
+
1104
+ Phone: +1 310 822 1511
1105
+ Fax: +1 310 823 6714
1106
+ EMail: Postel@ISI.EDU
1107
+
1108
+
1109
+
1110
+
1111
+
1112
+
1113
+
1114
+
1115
+
1116
+
1117
+
1118
+
1119
+
1120
+
1121
+
1122
+ Freed, et. al. Best Current Practice [Page 20]
1123
+
1124
+ RFC 2048 MIME Registration Procedures November 1996
1125
+
1126
+
1127
+ Appendix A -- Grandfathered Media Types
1128
+
1129
+ A number of media types, registered prior to 1996, would, if
1130
+ registered under the guidelines in this document, be placed into
1131
+ either the vendor or personal trees. Reregistration of those types
1132
+ to reflect the appropriate trees is encouraged, but not required.
1133
+ Ownership and change control principles outlined in this document
1134
+ apply to those types as if they had been registered in the trees
1135
+ described above.
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
+ Freed, et. al. Best Current Practice [Page 21]
1180
+