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,451 @@
1
+
2
+
3
+
4
+
5
+
6
+
7
+ Network Working Group M. Sirbu
8
+ Request for Comments: 1049 CMU
9
+ March 1988
10
+
11
+ A CONTENT-TYPE HEADER FIELD FOR INTERNET MESSAGES
12
+
13
+ STATUS OF THIS MEMO
14
+
15
+ This RFC suggests proposed additions to the Internet Mail Protocol,
16
+ RFC-822, for the Internet community, and requests discussion and
17
+ suggestions for improvements. Distribution of this memo is
18
+ unlimited.
19
+
20
+ ABSTRACT
21
+
22
+ A standardized Content-type field allows mail reading systems to
23
+ automatically identify the type of a structured message body and to
24
+ process it for display accordingly. The structured message body must
25
+ still conform to the RFC-822 requirements concerning allowable
26
+ characters. A mail reading system need not take any specific action
27
+ upon receiving a message with a valid Content-Type header field. The
28
+ ability to recognize this field and invoke the appropriate display
29
+ process accordingly will, however, improve the readability of
30
+ messages, and allow the exchange of messages containing mathematical
31
+ symbols, or foreign language characters.
32
+
33
+ Table of Contents
34
+
35
+ 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 1
36
+ 2. Problems with Structured Messages . . . . . . . . . . . . . . . 3
37
+ 3. The Content-type Header Field . . . . . . . . . . . . . . . . . 5
38
+ 3.1. Type Values . . . . . . . . . . . . . . . . . . . . . . 5
39
+ 3.2. Version Number . . . . . . . . . . . . . . . . . . . . . 6
40
+ 3.3. Resource Reference . . . . . . . . . . . . . . . . . . . 6
41
+ 3.4. Comment. . . . . . . . . . . . . . . . . . . . . . . . . 7
42
+ 4. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . 7
43
+
44
+ 1. Introduction
45
+
46
+ As defined in RFC-822, [2], an electronic mail message consists of a
47
+ number of defined header fields, some containing structured
48
+ information (e.g., date, addresses), and a message body consisting of
49
+ an unstructured string of ASCII characters.
50
+
51
+ The success of the Internet mail system has led to a desire to use
52
+ the mail system for sending around information with a greater degree
53
+ of structure, while remaining within the constraints imposed by the
54
+ limited character set. A prime example is the use of mail to send a
55
+
56
+
57
+
58
+ Sirbu [Page 1]
59
+
60
+ RFC 1049 Mail Content Type March 1988
61
+
62
+
63
+ document with embedded TROFF formatting commands. A more
64
+ sophisticated example would be a message body encoded in a Page
65
+ Description Language (PDL) such as Postscript. In both cases, simply
66
+ mapping the ASCII characters to the screen or printer in the usual
67
+ fashion will not render the document image intended by the sender; an
68
+ additional processing step is required to produce an image of the
69
+ message text on a display device or a piece of paper.
70
+
71
+ In both of these examples, the message body contains only the legal
72
+ character set, but the content has a structure which produces some
73
+ desirable result after appropriate processing by the recipient. If a
74
+ message header field could be used to indicate the structuring
75
+ technique used in the message body, then a sophisticated mail system
76
+ could use such a field to automatically invoke the appropriate
77
+ processing of the message body. For example, a header field which
78
+ indicated that the message body was encoded using Postscript could be
79
+ used to direct a mail system running under Sun Microsystem's NEWS
80
+ window manager to process the Postscript to produce the appropriate
81
+ page image on the screen.
82
+
83
+ Private header fields (beginning with "X-") are already being used by
84
+ some systems to affect such a result (e.g., the Andrew Message System
85
+ developed at Carnegie Mellon University). However, the widespread
86
+ use of such techniques will require general agreement on the name and
87
+ allowed parameter values for a header field to be used for this
88
+ purpose.
89
+
90
+ We propose that a new header field, "Content-type:" be recognized as
91
+ the standard field for indicating the structure of the message body.
92
+ The contents of the "Content-Type:" field are parameters which
93
+ specify what type of structure is used in the message body.
94
+
95
+ Note that we are not proposing that the message body contain anything
96
+ other than ASCII characters as specified in RFC-822. Whatever
97
+ structuring is contained in the message body must be represented
98
+ using only the allowed ASCII characters. Thus, this proposal should
99
+ have no impact on existing mailers, only on mail reading systems.
100
+
101
+ At the same time, this restriction eliminates the use of more general
102
+ structuring techniques such as Abstract Syntax Notation, (CCITT
103
+ Recommendation X.409) as used in the X.400 messaging standard, which
104
+ are octet-oriented.
105
+
106
+ This is not the first proposal for structuring message bodies.
107
+ RFC-767 discusses a proposed technique for structuring multi-media
108
+ mail messages. We are also aware that many users already employ mail
109
+ to send TROFF, SCRIBE, TEX, Postscript or other structured
110
+ information. Such postprocessing as is required must be invoked
111
+
112
+
113
+
114
+ Sirbu [Page 2]
115
+
116
+ RFC 1049 Mail Content Type March 1988
117
+
118
+
119
+ manually by the message recipient who looks at the message text
120
+ displayed as conventional ASCII and recognizes that it is structured
121
+ in some way that requires additional processing to be properly
122
+ rendered. Our proposal is designed to facilitate automatic
123
+ processing of messages by a mail reading system.
124
+
125
+ 2. Problems with Structured Messages
126
+
127
+ Once we introduce the notion that a message body might require some
128
+ processing other than simply painting the characters to the screen we
129
+ raise a number of fundamental questions. These generally arise due
130
+ to the certainty that some receiving systems will have the facilities
131
+ to process the received message and some will not. The problem is
132
+ what to do in the presence of systems with different levels of
133
+ capability.
134
+
135
+ First, we must recognize that the purpose of structured messages is
136
+ to be able to send types of information, ultimately intended for
137
+ human consumption, not expressable in plain ASCII. Thus, there is no
138
+ way in plain ASCII to send the italics, boldface, or greek characters
139
+ that can be expressed in Postscript. If some different processing is
140
+ necessary to render these glyphs, then that is the minimum price to
141
+ be paid in order to send them at all.
142
+
143
+ Second, by insisting that the message body contain only ASCII, we
144
+ insure that it will not "break" current mail reading systems which
145
+ are not equipped to process the structure; the result on the screen
146
+ may not be readily interpretable by the human reader, however.
147
+
148
+ If a message sender knows that the recipient cannot process
149
+ Postscript, he or she may prefer that the message be revised to
150
+ eliminate the use of italics and boldface, rather than appear
151
+ incomprehensible. If Postscript is being used because the message
152
+ contains passages in Greek, there may be no suitable ASCII
153
+ equivalent, however.
154
+
155
+ Ideally, the details of structuring the message (or not) to conform
156
+ to the capabilities of the recipient system could be completely
157
+ hidden from the message sender. The distributed Internet mail system
158
+ would somehow determine the capabilities of the recipient system, and
159
+ convert the message automatically; or, if there was no way to send
160
+ Greek text in ASCII, inform the sender that his message could not be
161
+ transmitted.
162
+
163
+
164
+
165
+
166
+
167
+
168
+
169
+
170
+ Sirbu [Page 3]
171
+
172
+ RFC 1049 Mail Content Type March 1988
173
+
174
+
175
+ In practice, this is a difficult task. There are three possible
176
+ approaches:
177
+
178
+ 1. Each mail system maintains a database of capabilities of
179
+ remote systems it knows how to send to. Such a database
180
+ would be very difficult to keep up to date.
181
+
182
+ 2. The mail transport service negotiates with the receiving
183
+ system as to its capabilities. If the receiving system
184
+ cannot support the specified content type, the mail is
185
+ transformed into conventional ASCII before transmission.
186
+ This would require changes to all existing SMTP
187
+ implementations, and could not be implemented in the case
188
+ where RFC-822 type messages are being forwarded via Bitnet or
189
+ other networks which do not implement SMTP.
190
+
191
+ 3. An expanded directory service maintains information on mail
192
+ processing capabilities of receiving hosts. This eliminates
193
+ the need for real-time negotiation with the final
194
+ destination, but still requires direct interaction with the
195
+ directory service. Since directory querying is part of mail
196
+ sending as opposed to mail composing/reading systems, this
197
+ requires changes to existing mailers as well as a major
198
+ change to the domain name directory service.
199
+
200
+ We note in passing that the X.400 protocol implements approach number
201
+ 2, and that the Draft Recommendations for X.DS, the Directory
202
+ Service, would support option 3.
203
+
204
+ In the interest of facilitating early usage of structured messages,
205
+ we choose not to recommend any of the three approaches described
206
+ above at the present time. In a forthcoming RFC we will propose a
207
+ solution based on option 2, requiring modification to mailers to
208
+ support negotiation over capabilities. For the present, then, users
209
+ would be obliged to keep their own private list of capabilities of
210
+ recipients and to take care that they do not send Postscript, TROFF
211
+ or other structured messages to recipients who cannot process them.
212
+ The penalty for failure to do so will be the frustration of the
213
+ recipient in trying to read a raw Postscript or TROFF file painted on
214
+ his or her screen. Some System Administrators may attempt to
215
+ implement option 1 for the benefit of their users, but this does not
216
+ impose a requirement for changes on any other mail system.
217
+
218
+ We recognize that the long-term solution must require changes to
219
+ mailers. However, in order to begin now to standardize the header
220
+ fields, and to facilitate experimentation, we issue the present RFC.
221
+
222
+
223
+
224
+
225
+
226
+ Sirbu [Page 4]
227
+
228
+ RFC 1049 Mail Content Type March 1988
229
+
230
+
231
+ 3. The Content-type Header Field
232
+
233
+ Whatever structuring technique is specified by the Content-type
234
+ field, it must be known precisely to both the sender and the
235
+ recipient of the message in order for the message to be properly
236
+ interpreted. In general, this means that the allowed parameter
237
+ values for the Content-type: field must identify a well-defined,
238
+ standardized, document structuring technique. We do not preclude,
239
+ however, the use of a Content-type: parameter value to specify a
240
+ private structuring technique known only to the sender and the
241
+ recipient.
242
+
243
+ More precisely, we propose that the Content-type: header field
244
+ consist of up to four parameter values. The first, or type parameter
245
+ names the structuring technique; the second, optional, parameter is a
246
+ version number, ver-num, which indicates a particular version or
247
+ revision of the standardized structuring technique. The third
248
+ parameter is a resource reference, resource-ref, which may indicate a
249
+ standard database of information to be used in interpreting the
250
+ structured document. The last parameter is a comment.
251
+
252
+ In the Extended Backus Naur Form of RFC-822, we have:
253
+
254
+ Content-Type:= type [";" ver-num [";" 1#resource-ref]] [comment]
255
+
256
+ 3.1. Type Values
257
+
258
+ Initially, the type parameter would be limited to the following set
259
+ of values:
260
+
261
+ type:= "POSTSCRIPT"/"SCRIBE"/"SGML"/"TEX"/"TROFF"/
262
+ "DVI"/"X-"atom
263
+
264
+ These values are not case sensitive. POSTSCRIPT, Postscript, and
265
+ POStscriPT are all equivalent.
266
+
267
+ POSTSCRIPT Indicates the enclosed document consists of
268
+ information encoded using the Postscript Page
269
+ Definition Language developed by Adobe Systems,
270
+ Inc. [1]
271
+
272
+ SCRIBE Indicates the document contains embedded formatting
273
+ information according to the syntax used by the
274
+ Scribe document formatting language distributed by
275
+ the Unilogic Corporation. [6]
276
+
277
+ SGML Indicates the document contains structuring
278
+ information to according the rules specified for
279
+
280
+
281
+
282
+ Sirbu [Page 5]
283
+
284
+ RFC 1049 Mail Content Type March 1988
285
+
286
+
287
+ the Standard Generalized Markup Language, IS 8879,
288
+ as published by the International Organization for
289
+ Standardization. [3] Documents structured according
290
+ to the ISO DIS 8613--Office Docment Architecture and
291
+ Interchange Format--may also be encoded using SGML
292
+ syntax.
293
+
294
+ TEX Indicates the document contains embedded formatting
295
+ information according to the syntax of the TEX
296
+ document production language. [4]
297
+
298
+ TROFF Indicates the document contains embedded formatting
299
+ information according to the syntax specified for the
300
+ TROFF formatting package developed by AT&T Bell
301
+ Laboratories. [5]
302
+
303
+ DVI Indicates the document contains information according
304
+ to the device independent file format produced by
305
+ TROFF or TEX.
306
+
307
+ "X-"atom Any type value beginning with the characters "X-" is
308
+ a private value.
309
+
310
+ 3.2. Version Number
311
+
312
+ Since standard structuring techniques in fact evolve over time, we
313
+ leave room for specifying a version number for the content type.
314
+ Valid values will depend upon the type parameter.
315
+
316
+ ver-num:= local-part
317
+
318
+ In particular, we have the following valid values:
319
+
320
+ For type=POSTSCRIPT
321
+
322
+ ver-num:= "1.0"/"2.0"/"null"
323
+
324
+ For type=SCRIBE
325
+
326
+ ver-num:= "3"/"4"/"5"/"null"
327
+
328
+ For type=SGML
329
+
330
+ ver-num:="IS.8879.1986"/"null"
331
+
332
+ 3.3. Resource Reference
333
+
334
+ resource-ref:= local-part
335
+
336
+
337
+
338
+ Sirbu [Page 6]
339
+
340
+ RFC 1049 Mail Content Type March 1988
341
+
342
+
343
+ As Apple has demonstrated with their implementation of the
344
+ Laserwriter, a very general document structuring technique can be
345
+ made more efficient by defining a set of macros or other similar
346
+ resources to be used in interpreting any transmitted stream. The
347
+ Macintosh transmits a LaserPrep file to the Laserwriter containing
348
+ font and macro definitions which can be called upon by subsequent
349
+ documents. The result is that documents as sent to the Laserwriter
350
+ are considerably more compact than if they had to include the
351
+ LaserPrep file each time. The Resource Reference parameter allows
352
+ specification of a well known resource, such as a LaserPrep file,
353
+ which should be used by the receiving system when processing the
354
+ message.
355
+
356
+ Resource references could also include macro packages for use with
357
+ TEX or references to preprocessors such as eqn and tbl for use with
358
+ troff. Allowed values will vary according to the type parameter.
359
+
360
+ In particular, we propose the following values:
361
+
362
+ For type = POSTSCRIPT
363
+
364
+ resource-ref:= "laserprep2.9"/"laserprep3.0"/"laserprep3.1"/
365
+ "laserprep4.0"/local-part
366
+
367
+ For type = TROFF
368
+
369
+ resource-ref:= "eqn"/"tbl"/"me"/local-part
370
+
371
+ 3.4. Comment
372
+
373
+ The comment field can be any additional comment text the user
374
+ desires. Comments are enclosed in parentheses as specified in
375
+ RFC-822.
376
+
377
+ 4. Conclusion
378
+
379
+ A standardized Content-type field allows mail reading systems to
380
+ automatically identify the type of a structured message body and to
381
+ process it for display accordingly. The strcutured message body must
382
+ still conform to the RFC-822 requirements concerning allowable
383
+ characters. A mail reading system need not take any specific action
384
+ upon receiving a message with valid Content-Type header field. The
385
+ ability to recognize this field and invoke the appropriate display
386
+ process accordingly will, however, improve the readability of
387
+ messages, and allow the exchange of messages containing mathematical
388
+ symbols, or foreign language characters.
389
+
390
+
391
+
392
+
393
+
394
+ Sirbu [Page 7]
395
+
396
+ RFC 1049 Mail Content Type March 1988
397
+
398
+
399
+ In the near term, the major use of a Content-Type: header field is
400
+ likely to be for designating the message body as containing a Page
401
+ Definition Language representation such as Postscript.
402
+
403
+ Additional type values shall be registered with Internet Assigned
404
+ Numbers Coordinator at USC-ISI. Please contact:
405
+
406
+ Joyce K. Reynolds
407
+ USC Information Sciences Institute
408
+ 4676 Admiralty Way
409
+ Marina del Rey, CA 90292-6695
410
+
411
+ 213-822-1511 JKReynolds@ISI.EDU
412
+
413
+ REFERENCES
414
+
415
+ 1. Adobe Systems, Inc. Postscript Language Reference Manual.
416
+ Addison-Wesley, Reading, Mass., 1985.
417
+
418
+ 2. Crocker, David H. RFC-822: Standard for the Format of ARPA
419
+ Internet Text Messages. Network Information Center,
420
+ August 13, 1982.
421
+
422
+ 3. ISO TC97/SC18. Standard Generalized Markup Language.
423
+ Tech. Rept. DIS 8879, ISO, 1986.
424
+
425
+ 4. Knuth, Donald E. The TEXbook. Addison-Wesley, Reading, Mass.,
426
+ 1984.
427
+
428
+ 5. Ossanna, Joseph F. NROFF/TROFF User's Manual. Bell
429
+ Laboratories, Murray Hill, New Jersey, 1976. Computing Science
430
+ Technical Report No.54.
431
+
432
+ 6. Unilogic. SCRIBE Document Production Software. Unilogic, 1985.
433
+ Fourth Edition.
434
+
435
+
436
+
437
+
438
+
439
+
440
+
441
+
442
+
443
+
444
+
445
+
446
+
447
+
448
+
449
+
450
+ Sirbu [Page 8]
451
+
@@ -0,0 +1,586 @@
1
+
2
+
3
+
4
+
5
+
6
+
7
+ Network Working Group N. Borenstein, Bellcore
8
+ Request for Comments: 1344 June 1992
9
+
10
+ Implications of MIME for Internet Mail Gateways
11
+
12
+
13
+ Status of This Memo
14
+
15
+ This is an informational memo for the Internet community,
16
+ and requests discussion and suggestions for improvements.
17
+ This memo does not specify an Internet standard.
18
+ Distribution of this memo is unlimited.
19
+
20
+ Abstract
21
+
22
+ The recent development of MIME (Multipurpose Internet Mail
23
+ Extensions) offers a wide range of new opportunities for
24
+ electronic mail system systems. Most of these opportunites
25
+ are relevant only to user agents, the programs that interact
26
+ with human users when they send and receive mail. However,
27
+ some opportunities are also opened up for mail transport
28
+ systems. While MIME was carefully designed so that it does
29
+ not require any changes to Internet electronic message
30
+ transport facilities, there are several ways in which
31
+ message transport systems may want to take advantage of
32
+ MIME. These opportunities are the subject of this memo.
33
+
34
+ Background -- The MIME Format
35
+
36
+ Recently, a new standardized format has been defined for
37
+ enhanced electronic mail messages on the Internet. This
38
+ format, known as MIME, permits messages to include, in a
39
+ standardized manner, non-ASCII text, images, audio, and a
40
+ variety of other kinds of interesting data.
41
+
42
+ The MIME effort was explicitly focused on requiring
43
+ absolutely no changes at the message transport level.
44
+ Because of this fact, MIME-format mail runs transparently on
45
+ all known Internet or Internet-style mail systems. This
46
+ means that those concerned solely with the maintenance and
47
+ development of message transport services can safely ignore
48
+ MIME completely, if they so choose.
49
+
50
+ However, the fact that MIME can be ignored, for the purpose
51
+ of message transport, does not necessarily mean that it
52
+ should be ignored. In particular, MIME offers several
53
+ features that should be of interest to those responsible for
54
+ message transport services. By exploiting these features,
55
+ transport systems can provide certain additional kinds of
56
+ service that are currently unavailable, and can alleviate a
57
+ few existing problems.
58
+
59
+ The remainder of this document is an attempt to briefly
60
+ point out and summarize some important ways in which MIME
61
+
62
+
63
+
64
+ Borenstein [Page 1]
65
+
66
+
67
+
68
+
69
+ RFC 1344 MIME and Mail Gateways June 1992
70
+
71
+
72
+ may be of use for message transport systems. This document
73
+ makes no attempt to present a complete technical description
74
+ of MIME, however. For that, the reader is refered to the
75
+ MIME document itself [RFC-1341].
76
+
77
+ Mail Transport and Gateway Services: A Key Distinction
78
+
79
+ Before implementing any of the mechanisms discussed in this
80
+ memo, one should be familiar with the distinction between
81
+ mail transport service and mail gateway service. Basically,
82
+ mail transport software is responsible for moving a message
83
+ within a homogeneous electronic mail service network. Mail
84
+ gateways, on the other hand, exchange mail between two
85
+ significantly different mail environments, including via
86
+ non-electronic services, such as postal mail.
87
+
88
+ In general, it is widely considered unacceptable for mail
89
+ transport services to alter the contents of messages. In
90
+ the case of mail gateways, however, such alteration is often
91
+ inevitable. Thus, strictly speaking, many of the mechanisms
92
+ described here apply only to gateways, and should not be
93
+ used in simple mail transport systems. However, it is
94
+ possible that some very special situations -- e.g., an SMTP
95
+ relay that transports mail across extremely expensive
96
+ intercontinental network links -- might need to modify
97
+ messages, in order to provide appropriate service for those
98
+ situations, and hence must redefine its role to be that of a
99
+ gateway.
100
+
101
+ In this memo, it is assumed that transformations which alter
102
+ a message's contents will be performed only by gateways, but
103
+ it is recognized that some existing mail transport agents
104
+ may choose to reclassify themselves as gateways in order to
105
+ perform the functions described here.
106
+
107
+ Rejected Messages
108
+
109
+ An unfortunately frequent duty of message transport services
110
+ is the rejection of mail to the sender. This may happen
111
+ because the mail was undeliverable, or because it did not
112
+ conform to the requirements of a gateway (e.g., it was too
113
+ large).
114
+
115
+ There has never been a standard format for rejected messages
116
+ in the past. This has been an annoyance, but not a major
117
+ problem for text messages. For non-text messages, however,
118
+ the lack of a standard rejection format is more crucial,
119
+ because rejected messages typically appear to be text, and
120
+ the user who finds himself viewing images or audio as if
121
+ they were text is rarely happy with the result.
122
+
123
+ MIME makes it very easy to encapsulate messages in such a
124
+ way that their semantics are completely preserved. The
125
+ simplest way to do this is to make each rejection notice a
126
+
127
+
128
+
129
+ Borenstein [Page 2]
130
+
131
+
132
+
133
+
134
+ RFC 1344 MIME and Mail Gateways June 1992
135
+
136
+
137
+ MIME "multipart/mixed" message. That multipart message
138
+ would contain two parts, a text part explaining the reason
139
+ for the rejection, and an encapsulated message part that
140
+ contained the rejected message itself.
141
+
142
+ It should be stressed that the transport software does not
143
+ need to understand the structure of the rejected message at
144
+ all. It merely needs to encapsulate it properly. The
145
+ following, for example, shows how any MIME message may be
146
+ encapsulated in a rejection message in such a way that all
147
+ information will be immediately visible in the correct form
148
+ if the recipient reads it with a MIME-conformant mail
149
+ reader:
150
+
151
+ From: Mailer-Daemon <daemon@somewhere.com>
152
+ Subject: Rejected Message
153
+ Content-type: multipart/mixed; boundary=unique-boundary
154
+
155
+ --unique-boundary
156
+ Content-type: text/plain; charset=us-ascii
157
+
158
+ A mail message you sent was rejected. The details of
159
+ the rejected message are as follows:
160
+
161
+ From: Nathainel Borenstein <nsb@bellcore.com>
162
+ Message-ID: <12345@bellcore.com>
163
+ To: bush@whitehouse.gov
164
+ Subject: I know my rights!
165
+ Rejection-reason: No mail from libertarians is
166
+ accepted.
167
+
168
+ The original message follows below.
169
+ --unique-boundary
170
+ Content-type: message/rfc822
171
+
172
+ The ENTIRE REJECTED MESSAGE, starting with the headers,
173
+ goes here.
174
+
175
+ --unique-boundary--
176
+ In the above example, the ONLY thing that is not
177
+ 'boilerplate" is the choice of boundary string. The phrase
178
+ "unique-boundary" should be replaced by a string that does
179
+ not appear (prefixed by two hyphens) in any of the body
180
+ parts.
181
+
182
+ Encapsulating a message in this manner is very easily done,
183
+ and will constitute a significant service that message
184
+ transport services can perform for MIME users.
185
+
186
+ IMPORTANT NOTE: The format given above is simply one of
187
+ many possible ways to format a rejection message using MIME.
188
+ Independent IETF efforts are needed in order to standardize
189
+ the format of rejections and acknowledgements.
190
+
191
+
192
+
193
+
194
+ Borenstein [Page 3]
195
+
196
+
197
+
198
+
199
+ RFC 1344 MIME and Mail Gateways June 1992
200
+
201
+
202
+ Fragmenting and Reassembling Large Messages
203
+
204
+ One problem that occurs with increasing frequency in
205
+ Internet mail is the rejection of messages because of size
206
+ limitations. This problem can be expected to grow
207
+ substantially more severe with the acceptance of MIME, as
208
+ MIME invites the use of very large objects such as images
209
+ and audio clips. Fortunately, MIME also provides mechanisms
210
+ that can help alleviate the problem.
211
+
212
+ One particularly relevant MIME type is "message/partial",
213
+ which can be used for the automatic fragmentation and
214
+ reassembly of large mail messages. The message/partial type
215
+ can be handled entirely at the user agent level, but message
216
+ transport services can also make use of this type to provide
217
+ more intelligent behavior at gateways.
218
+
219
+ In particular, when gatewaying mail to or from a system or
220
+ network known to enforce size limitations that are more or
221
+ less stringent than are enforced locally, message transport
222
+ services might choose either to break a large message into
223
+ fragments, or (perhaps less likely) to reassemble fragments
224
+ into a larger message. The combination of these two
225
+ behaviors can make the overall Internet mail environment
226
+ appear more complete and seamless than it actually is.
227
+
228
+ Details on the message/partial format may be found in the
229
+ MIME document. What follows is an example of how a simple
230
+ short message might be broken into two message/partial
231
+ messages. In practice, of course, the message/partial
232
+ facility would only be likely to be used for much longer
233
+ messages.
234
+
235
+ The following initial message:
236
+
237
+ From: Nathaniel Borenstein <nsb@bellcore.com>
238
+ To: Ned Freed: <ned@innosoft.com>
239
+ Subject: a test message
240
+ Content-type: image/gif
241
+ Content-Transfer-Encoding: base64
242
+
243
+ R0lGODdhQAGMAbMAAAAAAP/u7swzIu6ZiLsiEd1EM+5VRGaI3WYAAO67qkRV
244
+ uwARd6q7/ywAAAAAQAGMAUME/hDISau9OOvNu/9gKI6kRJwoUa5s675wLM90l
245
+ XW5YKxqPyKRygxv2dr4czwlMCZrQLFTYHBJ2hlyQYFiaz+i0WWBou7fOq1x8vXWfU
246
+ qU1fJ2qEhYaHGjhZQmJ2QT1xBW1ak1xUdV0/VjtsbpUEDaEJCQOIpqeoNV+LXo5W
247
+ fVN3dZKceAQPvgyhwQ2lqcXGxx5wja59eJIGUNCszF90sYp50CoqFZ4DoqMMo6M
248
+
249
+ can be transformed, invertibly, into the following two
250
+ message/partial messages:
251
+
252
+
253
+ From: Nathaniel Borenstein <nsb@bellcore.com>
254
+
255
+
256
+
257
+
258
+
259
+ Borenstein [Page 4]
260
+
261
+
262
+
263
+
264
+ RFC 1344 MIME and Mail Gateways June 1992
265
+
266
+
267
+ To: Ned Freed <ned@innosoft.com>
268
+ Subject: a test message
269
+ Content-type: message/partial; id="xyx@host.com";
270
+ number=1; total=2
271
+
272
+ Content-type: image/gif
273
+ Content-Transfer-Encoding: base64
274
+
275
+ R0lGODdhQAGMAbMAAAAAAP/u7swzIu6ZiLsiEd1EM+5VRGaI3WYAAO67qkRV
276
+
277
+ and
278
+
279
+ From: Nathaniel Borenstein <nsb@bellcore.com>
280
+ To: Ned Freed <ned@innosoft.com>
281
+ Subject: a test message
282
+ Content-type: message/partial; id="xyx@host.com";
283
+ number=2; total=2
284
+
285
+ uwARd6q7/ywAAAAAQAGMAUME/hDISau9OOvNu/9gKI6kRJwoUa5s675wLM90l
286
+ XW5YKxqPyKRygxv2dr4czwlMCZrQLFTYHBJ2hlyQYFiaz+i0WWBou7fOq1x8vXWfU
287
+ qU1fJ2qEhYaHGjhZQmJ2QT1xBW1ak1xUdV0/VjtsbpUEDaEJCQOIpqeoNV+LXo5W
288
+ fVN3dZKceAQPvgyhwQ2lqcXGxx5wja59eJIGUNCszF90sYp50CoqFZ4DoqMMo6M
289
+
290
+ Fragmenting such messages rather than rejecting them might
291
+ be a reasonable option for some gateway services, at least
292
+ for a certain range of message sizes. Of course, it is
293
+ often difficult for a gateway to know what size limitations
294
+ will be encountered "downstream", but intelligent guesses
295
+ are often possible. Moreover, an IETF working group on SMTP
296
+ extensions has proposed augmenting SMTP with a "SIZE" verb
297
+ that would facilitate this process, thereby possibly
298
+ requiring fragmentation on the fly during message
299
+ transmission.
300
+
301
+ Note also that fragmentation or reassembly might reasonably
302
+ be performed, in differing circumstances, by either the
303
+ sending or receiving gateway systems, depending on which
304
+ system knew more about the capabilities of the other.
305
+
306
+ Using or Removing External-Body Pointers
307
+
308
+ Another MIME type oriented to extremely large messages is
309
+ the "message/external-body" type. In this type of message,
310
+ all or part of the body data is not included in the actual
311
+ message itself. Instead, the Content-Type header field
312
+ includes information that tells how the body data can be
313
+ retrieved -- either via a file system, via anonymous ftp, or
314
+ via other mechanisms.
315
+
316
+ The message/external-body type provides a new option for
317
+ mail transport services that wishes to optimize the way
318
+ bandwidth resources are used in a given environment. For
319
+ example, the basic use of message/external-body is to reduce
320
+ bandwidth in email traffic. However, when email crosses a
321
+
322
+
323
+
324
+ Borenstein [Page 5]
325
+
326
+
327
+
328
+
329
+ RFC 1344 MIME and Mail Gateways June 1992
330
+
331
+
332
+ slow and expensive boundary -- e.g., a satellite link across
333
+ the Pacific -- it might make sense to retrieve the data
334
+ itself and transform the external-body reference into the
335
+ actual data. Alternately, it might make sense to copy the
336
+ data itself to a new location, closer to the message
337
+ recipients, and change the location pointed to in the
338
+ message. Because the external-body specification can
339
+ include an expiration date, message transport services can
340
+ trade off storage and bandwidth capabilities to try to
341
+ optimize the overall use of resources for very large
342
+ messages.
343
+
344
+ Such behaviors by a gateway require careful analysis of
345
+ cost/benefit tradeoffs and would be a dramatic departure
346
+ from typical mail transport services. However, the
347
+ potential benefits are quite significant, so that such the
348
+ appropriate use of these service options should be explored.
349
+
350
+ For example, the following message includes PostScript data
351
+ by external reference:
352
+
353
+ From: Nathaniel Borenstein <nsb@bellcore.com>
354
+ To: Ned Freed <ned@innosoft.com>
355
+ Subject: The latest MIME draft
356
+ Content-Type: message/external-body;
357
+ name="BodyFormats.ps";
358
+ site="thumper.bellcore.com";
359
+ access-type=ANON-FTP;
360
+ directory="pub";
361
+ mode="image";
362
+ expiration="Fri, 14 Jun 1991 19:13:14 -0400 (EDT)"
363
+
364
+ Content-type: application/postscript
365
+
366
+ A gateway to Australia might choose to copy the file to an
367
+ Australian FTP archive, changing the relevant parameters on
368
+ the Content-type header field. Alternately, it might choose
369
+ simply to transform the message into one in which all the
370
+ data were included:
371
+
372
+ From: Nathaniel Borenstein <nsb@bellcore.com>
373
+ To: Ned Freed <ned@innosoft.com>
374
+ Subject: The latest MIME draft
375
+ Content-type: application/postscript
376
+
377
+ %!PS-Adobe-1.0
378
+ %%Creator: greenbush:nsb (Nathaniel Borenstein,MRE 2A-
379
+ 274,4270,9938586,21462)
380
+ etc...
381
+
382
+ This is an example which suggests both the benefits and the
383
+ dangers. There is considerable benefit to having a copy of
384
+ the data immediately available, but there also may be
385
+ considerable expense involved in transporting it to all of
386
+
387
+
388
+
389
+ Borenstein [Page 6]
390
+
391
+
392
+
393
+
394
+ RFC 1344 MIME and Mail Gateways June 1992
395
+
396
+
397
+ a the members of a list, if only a few will use the data
398
+ anytime soon.
399
+
400
+ Alternatively, instead of replacing an external-body message
401
+ with its real contents, it might make sense to transform it
402
+ into a "multipart/alternative" message containing both the
403
+ external body reference and the expanded version. This
404
+ means that only the external body part can be forwarded if
405
+ desired, and the recipient doesn't lose the information as
406
+ to where the data was fetched from, if they want to fetch an
407
+ up-to-date version in the future. Such information could be
408
+ represented, in MIME, in the following form:
409
+
410
+ From: Nathaniel Borenstein <nsb@bellcore.com>
411
+ To: Ned Freed <ned@innosoft.com>
412
+ Subject: The latest MIME draft
413
+ Content-type: multipart/alternative; boundary=foo
414
+
415
+ --foo
416
+ Content-Type: message/external-body;
417
+ name="BodyFormats.ps";
418
+ site="thumper.bellcore.com";
419
+ access-type=ANON-FTP;
420
+ directory="pub";
421
+ mode="image";
422
+ expiration="Fri, 14 Jun 1991 19:13:14 -0400 (EDT)"
423
+
424
+ Content-type: application/postscript
425
+ --foo
426
+ Content-type: application/postscript
427
+
428
+ %!PS-Adobe-1.0
429
+ %%Creator: greenbush:nsb (Nathaniel Borenstein,MRE 2A-
430
+ 274,4270,9938586,21462)
431
+ etc...
432
+ --foo--
433
+
434
+ Similarly for the case where a message is copied to a local
435
+ FTP site, one could offer two external body parts as the
436
+ alternatives, allowing the user agent to choose which FTP
437
+ site is preferred.
438
+
439
+ Image and other Format Conversions
440
+
441
+ MIME currently defines two image formats, image/gif and
442
+ image/jpeg. The former is much more convenient for many
443
+ users, and can be displayed more quickly on many systems.
444
+ The latter is a much more compact representation, and
445
+ therfore places less stress on mail transport facilities.
446
+
447
+ Message transport services can optimize both transport
448
+ bandwidth and user convenience by intelligent translation
449
+ between these formats (and other formats that might be added
450
+ later). When a message of type image/gif is submitted for
451
+
452
+
453
+
454
+ Borenstein [Page 7]
455
+
456
+
457
+
458
+
459
+ RFC 1344 MIME and Mail Gateways June 1992
460
+
461
+
462
+ long-haul delivery, it might reasonably be translated to
463
+ image/jpeg. Conversely, when image/jpeg data is received
464
+ for final delivery on a system with adequate storage
465
+ resources, it might be translated to image/gif for the
466
+ convenience of the recipient. Software to perform these
467
+ translations is widely available. It should be noted,
468
+ however, that performance of such conversions presumes
469
+ support for the new format by the recipient.
470
+
471
+ Although MIME currently only defines one audio format, more
472
+ are likely to be defined and registered with IANA in the
473
+ future. In that case, similar format conversion facilities
474
+ might be appropriate for audio.
475
+
476
+ If format conversion is done, it is STRONGLY RECOMMENDED
477
+ that some kind of trace information (probably in the form of
478
+ a Received header field) should be added to a message to
479
+ document the conversion that has been performed.
480
+
481
+ Some people have expressed concerns, or even the opinion
482
+ that conversions should never be done. To accomodate the
483
+ desires of those who dislike the idea of automatic format
484
+ conversion. For this reason, it is suggested that such
485
+ transformations be generally restricted to gateways rather
486
+ than general message transport services, and that services
487
+ which perform such conversions should be sensitive to a
488
+ header field that indicates that the sender does not wish to
489
+ have any such conversions performed. A suggested value for
490
+ this header field is:
491
+
492
+ Content-Conversion: prohibited
493
+
494
+ User agents that wish to explicitly indicate a willingness
495
+ for such conversions to be performed may use:
496
+
497
+ Content-Conversion: permitted
498
+
499
+ However, this will be the default assumption of many
500
+ gateways, so this header field is not strictly necessary.
501
+ It also should be noted that such control of conversion
502
+ would only be available to the sender, rather than to any of
503
+ the recipients.
504
+
505
+
506
+
507
+
508
+
509
+
510
+
511
+
512
+
513
+
514
+
515
+
516
+
517
+
518
+
519
+ Borenstein [Page 8]
520
+
521
+
522
+
523
+
524
+ RFC 1344 MIME and Mail Gateways June 1992
525
+
526
+
527
+ Robust Encoding of Data
528
+
529
+ In addition to all the reasons given above for possible
530
+ transformation of body data, it will sometimes be the case
531
+ that a gateway can tell that the body data, as given, will
532
+ not robustly survive the next step of transport. For
533
+ example, mail crossing an ASCII-to-EBCDIC gateway will lose
534
+ information if certain characters are used. In such cases,
535
+ a gateway can make the data more robust simply by applying
536
+ one of the MIME Content-Transfer-Encoding algorithms (base64
537
+ or quoted-printable) to the body or body part. This will
538
+ generally be a loss-less transformation, but care must be
539
+ taken to ensure that the resulting message is MIME-
540
+ conformant if the inital message was not. (For example, a
541
+ MIME-Version header field may need to be added.)
542
+
543
+ User-oriented concerns
544
+
545
+ If a gateway is going to perform major transformations on a
546
+ mail message, such as translating image formats or mapping
547
+ between included data and external-reference data, it seems
548
+ inevitable that there will be situations in which users will
549
+ object to these transformations. This is, in large part, an
550
+ implementation issue, but it seems advisable, wherever
551
+ possible, to provide a mechanism whereby users can specify,
552
+ to the transport system, whether or not they want such
553
+ services performed automatically on their behalf. The use of
554
+ the "Content-Conversion" header field, as mentioned above,
555
+ is suggested for this purpose, since it it least provides
556
+ some control by the sender, if not the recipient.
557
+
558
+ References
559
+
560
+ [RFC-1341] Borenstein, N., and N. Freed, "MIME
561
+ (Multipurpose Internet Mail Extensions): Mechanisms for
562
+ Specifying and Describing the Format of Internet Message
563
+ Bodies", RFC 1341, Bellcore, June, 1992.
564
+
565
+ Security Considerations
566
+
567
+ Security issues are not discussed in this memo.
568
+
569
+ Author's Address
570
+
571
+ Nathaniel S. Borenstein
572
+ MRE 2D-296, Bellcore
573
+ 445 South St.
574
+ Morristown, NJ 07962-1910
575
+
576
+ Email: nsb@bellcore.com
577
+ Phone: +1 201 829 4270
578
+ Fax: +1 201 829 7019
579
+
580
+
581
+
582
+
583
+
584
+ Borenstein [Page 9]
585
+
586
+