rack-mail_exception 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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
+