sisimai 4.19.0-java → 4.20.0-java

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of sisimai might be problematic. Click here for more details.

Files changed (503) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -0
  3. data/ANALYTICAL-PRECISION +8 -6
  4. data/Changes +15 -0
  5. data/Developers.mk +13 -1
  6. data/Makefile +3 -3
  7. data/README-JA.md +35 -6
  8. data/README.md +44 -25
  9. data/Repository.mk +1 -1
  10. data/lib/sisimai.rb +92 -32
  11. data/lib/sisimai/address.rb +1 -1
  12. data/lib/sisimai/arf.rb +1 -1
  13. data/lib/sisimai/ced.rb +24 -0
  14. data/lib/sisimai/ced/us/amazonses.rb +270 -0
  15. data/lib/sisimai/ced/us/sendgrid.rb +86 -0
  16. data/lib/sisimai/data.rb +19 -4
  17. data/lib/sisimai/data/json.rb +4 -4
  18. data/lib/sisimai/data/yaml.rb +3 -2
  19. data/lib/sisimai/mail/maildir.rb +1 -1
  20. data/lib/sisimai/mail/mbox.rb +1 -1
  21. data/lib/sisimai/message.rb +43 -510
  22. data/lib/sisimai/message/email.rb +556 -0
  23. data/lib/sisimai/message/json.rb +201 -0
  24. data/lib/sisimai/msp.rb +4 -31
  25. data/lib/sisimai/msp/de/einsundeins.rb +1 -1
  26. data/lib/sisimai/msp/de/gmx.rb +1 -1
  27. data/lib/sisimai/msp/jp/biglobe.rb +1 -1
  28. data/lib/sisimai/msp/jp/ezweb.rb +1 -1
  29. data/lib/sisimai/msp/jp/kddi.rb +1 -1
  30. data/lib/sisimai/msp/ru/mailru.rb +1 -1
  31. data/lib/sisimai/msp/ru/yandex.rb +1 -1
  32. data/lib/sisimai/msp/uk/messagelabs.rb +1 -1
  33. data/lib/sisimai/msp/us/amazonses.rb +1 -1
  34. data/lib/sisimai/msp/us/amazonworkmail.rb +1 -1
  35. data/lib/sisimai/msp/us/aol.rb +1 -1
  36. data/lib/sisimai/msp/us/bigfoot.rb +1 -1
  37. data/lib/sisimai/msp/us/facebook.rb +1 -1
  38. data/lib/sisimai/msp/us/google.rb +1 -1
  39. data/lib/sisimai/msp/us/office365.rb +1 -1
  40. data/lib/sisimai/msp/us/outlook.rb +1 -1
  41. data/lib/sisimai/msp/us/receivingses.rb +1 -1
  42. data/lib/sisimai/msp/us/sendgrid.rb +1 -1
  43. data/lib/sisimai/msp/us/verizon.rb +1 -1
  44. data/lib/sisimai/msp/us/yahoo.rb +1 -1
  45. data/lib/sisimai/msp/us/zoho.rb +1 -1
  46. data/lib/sisimai/mta.rb +4 -32
  47. data/lib/sisimai/mta/activehunter.rb +1 -1
  48. data/lib/sisimai/mta/apachejames.rb +1 -1
  49. data/lib/sisimai/mta/courier.rb +1 -1
  50. data/lib/sisimai/mta/domino.rb +1 -1
  51. data/lib/sisimai/mta/exchange2003.rb +1 -1
  52. data/lib/sisimai/mta/exchange2007.rb +1 -1
  53. data/lib/sisimai/mta/exim.rb +1 -1
  54. data/lib/sisimai/mta/imailserver.rb +1 -1
  55. data/lib/sisimai/mta/interscanmss.rb +1 -1
  56. data/lib/sisimai/mta/mailfoundry.rb +1 -1
  57. data/lib/sisimai/mta/mailmarshalsmtp.rb +1 -1
  58. data/lib/sisimai/mta/mcafee.rb +1 -1
  59. data/lib/sisimai/mta/messagingserver.rb +1 -1
  60. data/lib/sisimai/mta/mfilter.rb +1 -1
  61. data/lib/sisimai/mta/mxlogic.rb +1 -1
  62. data/lib/sisimai/mta/notes.rb +1 -1
  63. data/lib/sisimai/mta/opensmtpd.rb +2 -2
  64. data/lib/sisimai/mta/postfix.rb +1 -1
  65. data/lib/sisimai/mta/qmail.rb +1 -1
  66. data/lib/sisimai/mta/sendmail.rb +2 -1
  67. data/lib/sisimai/mta/surfcontrol.rb +1 -1
  68. data/lib/sisimai/mta/userdefined.rb +1 -1
  69. data/lib/sisimai/mta/v5sendmail.rb +1 -1
  70. data/lib/sisimai/mta/x1.rb +1 -1
  71. data/lib/sisimai/mta/x2.rb +1 -1
  72. data/lib/sisimai/mta/x3.rb +1 -1
  73. data/lib/sisimai/mta/x4.rb +1 -1
  74. data/lib/sisimai/mta/x5.rb +1 -1
  75. data/lib/sisimai/order.rb +7 -216
  76. data/lib/sisimai/order/email.rb +231 -0
  77. data/lib/sisimai/order/json.rb +56 -0
  78. data/lib/sisimai/reason/hostunknown.rb +1 -0
  79. data/lib/sisimai/reason/norelaying.rb +2 -0
  80. data/lib/sisimai/reason/notaccept.rb +5 -1
  81. data/lib/sisimai/rfc3464.rb +1 -1
  82. data/lib/sisimai/skeleton.rb +43 -0
  83. data/lib/sisimai/smtp.rb +11 -48
  84. data/lib/sisimai/smtp/error.rb +3 -1
  85. data/lib/sisimai/string.rb +1 -0
  86. data/lib/sisimai/version.rb +1 -1
  87. data/set-of-emails/jsonapi/ced-us-amazonses-01.json +1 -0
  88. data/set-of-emails/jsonapi/ced-us-amazonses-02.json +11 -0
  89. data/set-of-emails/jsonapi/ced-us-amazonses-03.json +1 -0
  90. data/set-of-emails/jsonapi/ced-us-amazonses-04.json +1 -0
  91. data/set-of-emails/jsonapi/ced-us-amazonses-05.json +1 -0
  92. data/set-of-emails/jsonapi/ced-us-sendgrid-01.json +1 -0
  93. data/set-of-emails/jsonapi/ced-us-sendgrid-02.json +1 -0
  94. data/set-of-emails/jsonapi/ced-us-sendgrid-03.json +1 -0
  95. data/set-of-emails/jsonapi/ced-us-sendgrid-04.json +1 -0
  96. data/set-of-emails/jsonapi/ced-us-sendgrid-05.json +1 -0
  97. data/set-of-emails/jsonapi/ced-us-sendgrid-06.json +1 -0
  98. data/set-of-emails/jsonapi/ced-us-sendgrid-07.json +1 -0
  99. data/set-of-emails/jsonapi/ced-us-sendgrid-08.json +1 -0
  100. data/set-of-emails/jsonapi/ced-us-sendgrid-09.json +1 -0
  101. data/set-of-emails/jsonapi/ced-us-sendgrid-10.json +1 -0
  102. data/set-of-emails/jsonapi/ced-us-sendgrid-11.json +1 -0
  103. data/set-of-emails/maildir/bsd/README.md +50 -50
  104. data/set-of-emails/maildir/bsd/ced-us-amazonses-01.eml +47 -0
  105. data/set-of-emails/maildir/bsd/ced-us-amazonses-02.eml +51 -0
  106. data/set-of-emails/maildir/bsd/ced-us-amazonses-03.eml +47 -0
  107. data/set-of-emails/maildir/bsd/ced-us-amazonses-04.eml +46 -0
  108. data/set-of-emails/maildir/bsd/ced-us-amazonses-05.eml +46 -0
  109. data/set-of-emails/maildir/bsd/{de-einsundeins-01.eml → msp-de-einsundeins-01.eml} +0 -0
  110. data/set-of-emails/maildir/bsd/{de-gmx-01.eml → msp-de-gmx-01.eml} +0 -0
  111. data/set-of-emails/maildir/bsd/{de-gmx-02.eml → msp-de-gmx-02.eml} +0 -0
  112. data/set-of-emails/maildir/bsd/{de-gmx-03.eml → msp-de-gmx-03.eml} +0 -0
  113. data/set-of-emails/maildir/bsd/{de-gmx-04.eml → msp-de-gmx-04.eml} +0 -0
  114. data/set-of-emails/maildir/bsd/{jp-biglobe-01.eml → msp-jp-biglobe-01.eml} +0 -0
  115. data/set-of-emails/maildir/bsd/{jp-ezweb-01.eml → msp-jp-ezweb-01.eml} +0 -0
  116. data/set-of-emails/maildir/bsd/{jp-ezweb-02.eml → msp-jp-ezweb-02.eml} +0 -0
  117. data/set-of-emails/maildir/bsd/{jp-ezweb-03.eml → msp-jp-ezweb-03.eml} +0 -0
  118. data/set-of-emails/maildir/bsd/{jp-ezweb-04.eml → msp-jp-ezweb-04.eml} +0 -0
  119. data/set-of-emails/maildir/bsd/{jp-ezweb-05.eml → msp-jp-ezweb-05.eml} +0 -0
  120. data/set-of-emails/maildir/bsd/{jp-ezweb-06.eml → msp-jp-ezweb-06.eml} +0 -0
  121. data/set-of-emails/maildir/bsd/{jp-kddi-01.eml → msp-jp-kddi-01.eml} +0 -0
  122. data/set-of-emails/maildir/bsd/{jp-kddi-02.eml → msp-jp-kddi-02.eml} +0 -0
  123. data/set-of-emails/maildir/bsd/{jp-kddi-03.eml → msp-jp-kddi-03.eml} +0 -0
  124. data/set-of-emails/maildir/bsd/{ru-mailru-01.eml → msp-ru-mailru-01.eml} +0 -0
  125. data/set-of-emails/maildir/bsd/{ru-mailru-02.eml → msp-ru-mailru-02.eml} +0 -0
  126. data/set-of-emails/maildir/bsd/{ru-mailru-03.eml → msp-ru-mailru-03.eml} +0 -0
  127. data/set-of-emails/maildir/bsd/{ru-mailru-04.eml → msp-ru-mailru-04.eml} +0 -0
  128. data/set-of-emails/maildir/bsd/{ru-yandex-01.eml → msp-ru-yandex-01.eml} +0 -0
  129. data/set-of-emails/maildir/bsd/{ru-yandex-02.eml → msp-ru-yandex-02.eml} +0 -0
  130. data/set-of-emails/maildir/bsd/{ru-yandex-03.eml → msp-ru-yandex-03.eml} +0 -0
  131. data/set-of-emails/maildir/bsd/{uk-messagelabs-01.eml → msp-uk-messagelabs-01.eml} +0 -0
  132. data/set-of-emails/maildir/bsd/{us-amazonses-01.eml → msp-us-amazonses-01.eml} +0 -0
  133. data/set-of-emails/maildir/bsd/{us-amazonses-02.eml → msp-us-amazonses-02.eml} +0 -0
  134. data/set-of-emails/maildir/bsd/{us-amazonses-03.eml → msp-us-amazonses-03.eml} +0 -0
  135. data/set-of-emails/maildir/bsd/{us-amazonses-04.eml → msp-us-amazonses-04.eml} +0 -0
  136. data/set-of-emails/maildir/bsd/{us-amazonses-05.eml → msp-us-amazonses-05.eml} +0 -0
  137. data/set-of-emails/maildir/bsd/{us-amazonses-06.eml → msp-us-amazonses-06.eml} +0 -0
  138. data/set-of-emails/maildir/bsd/{us-amazonses-07.eml → msp-us-amazonses-07.eml} +0 -0
  139. data/set-of-emails/maildir/bsd/{us-amazonses-08.eml → msp-us-amazonses-08.eml} +0 -0
  140. data/set-of-emails/maildir/bsd/{us-amazonworkmail-01.eml → msp-us-amazonworkmail-01.eml} +0 -0
  141. data/set-of-emails/maildir/bsd/{us-amazonworkmail-02.eml → msp-us-amazonworkmail-02.eml} +0 -0
  142. data/set-of-emails/maildir/bsd/{us-amazonworkmail-03.eml → msp-us-amazonworkmail-03.eml} +0 -0
  143. data/set-of-emails/maildir/bsd/{us-amazonworkmail-04.eml → msp-us-amazonworkmail-04.eml} +0 -0
  144. data/set-of-emails/maildir/bsd/{us-amazonworkmail-05.eml → msp-us-amazonworkmail-05.eml} +0 -0
  145. data/set-of-emails/maildir/bsd/{us-amazonworkmail-06.eml → msp-us-amazonworkmail-06.eml} +0 -0
  146. data/set-of-emails/maildir/bsd/{us-amazonworkmail-07.eml → msp-us-amazonworkmail-07.eml} +0 -0
  147. data/set-of-emails/maildir/bsd/{us-aol-01.eml → msp-us-aol-01.eml} +0 -0
  148. data/set-of-emails/maildir/bsd/{us-aol-02.eml → msp-us-aol-02.eml} +0 -0
  149. data/set-of-emails/maildir/bsd/{us-aol-03.eml → msp-us-aol-03.eml} +0 -0
  150. data/set-of-emails/maildir/bsd/{us-aol-04.eml → msp-us-aol-04.eml} +0 -0
  151. data/set-of-emails/maildir/bsd/{us-bigfoot-01.eml → msp-us-bigfoot-01.eml} +0 -0
  152. data/set-of-emails/maildir/bsd/{us-facebook-01.eml → msp-us-facebook-01.eml} +0 -0
  153. data/set-of-emails/maildir/bsd/{us-facebook-02.eml → msp-us-facebook-02.eml} +0 -0
  154. data/set-of-emails/maildir/bsd/{us-google-01.eml → msp-us-google-01.eml} +0 -0
  155. data/set-of-emails/maildir/bsd/{us-google-02.eml → msp-us-google-02.eml} +0 -0
  156. data/set-of-emails/maildir/bsd/{us-google-03.eml → msp-us-google-03.eml} +0 -0
  157. data/set-of-emails/maildir/bsd/{us-google-04.eml → msp-us-google-04.eml} +0 -0
  158. data/set-of-emails/maildir/bsd/{us-google-05.eml → msp-us-google-05.eml} +0 -0
  159. data/set-of-emails/maildir/bsd/{us-google-06.eml → msp-us-google-06.eml} +0 -0
  160. data/set-of-emails/maildir/bsd/{us-google-07.eml → msp-us-google-07.eml} +0 -0
  161. data/set-of-emails/maildir/bsd/{us-google-08.eml → msp-us-google-08.eml} +0 -0
  162. data/set-of-emails/maildir/bsd/{us-google-09.eml → msp-us-google-09.eml} +0 -0
  163. data/set-of-emails/maildir/bsd/{us-google-10.eml → msp-us-google-10.eml} +0 -0
  164. data/set-of-emails/maildir/bsd/{us-google-11.eml → msp-us-google-11.eml} +0 -0
  165. data/set-of-emails/maildir/bsd/{us-google-12.eml → msp-us-google-12.eml} +0 -0
  166. data/set-of-emails/maildir/bsd/{us-google-13.eml → msp-us-google-13.eml} +0 -0
  167. data/set-of-emails/maildir/bsd/{us-google-14.eml → msp-us-google-14.eml} +0 -0
  168. data/set-of-emails/maildir/bsd/{us-google-15.eml → msp-us-google-15.eml} +0 -0
  169. data/set-of-emails/maildir/bsd/{us-google-16.eml → msp-us-google-16.eml} +0 -0
  170. data/set-of-emails/maildir/bsd/{us-google-17.eml → msp-us-google-17.eml} +0 -0
  171. data/set-of-emails/maildir/bsd/{us-office365-01.eml → msp-us-office365-01.eml} +0 -0
  172. data/set-of-emails/maildir/bsd/{us-office365-02.eml → msp-us-office365-02.eml} +0 -0
  173. data/set-of-emails/maildir/bsd/{us-outlook-01.eml → msp-us-outlook-01.eml} +0 -0
  174. data/set-of-emails/maildir/bsd/{us-outlook-02.eml → msp-us-outlook-02.eml} +0 -0
  175. data/set-of-emails/maildir/bsd/{us-outlook-03.eml → msp-us-outlook-03.eml} +0 -0
  176. data/set-of-emails/maildir/bsd/{us-outlook-04.eml → msp-us-outlook-04.eml} +0 -0
  177. data/set-of-emails/maildir/bsd/{us-outlook-05.eml → msp-us-outlook-05.eml} +0 -0
  178. data/set-of-emails/maildir/bsd/{us-outlook-06.eml → msp-us-outlook-06.eml} +0 -0
  179. data/set-of-emails/maildir/bsd/{us-outlook-07.eml → msp-us-outlook-07.eml} +0 -0
  180. data/set-of-emails/maildir/bsd/{us-receivingses-01.eml → msp-us-receivingses-01.eml} +0 -0
  181. data/set-of-emails/maildir/bsd/{us-receivingses-02.eml → msp-us-receivingses-02.eml} +0 -0
  182. data/set-of-emails/maildir/bsd/{us-receivingses-03.eml → msp-us-receivingses-03.eml} +0 -0
  183. data/set-of-emails/maildir/bsd/{us-receivingses-04.eml → msp-us-receivingses-04.eml} +0 -0
  184. data/set-of-emails/maildir/bsd/{us-receivingses-05.eml → msp-us-receivingses-05.eml} +0 -0
  185. data/set-of-emails/maildir/bsd/{us-receivingses-06.eml → msp-us-receivingses-06.eml} +0 -0
  186. data/set-of-emails/maildir/bsd/{us-receivingses-07.eml → msp-us-receivingses-07.eml} +0 -0
  187. data/set-of-emails/maildir/bsd/{us-sendgrid-01.eml → msp-us-sendgrid-01.eml} +0 -0
  188. data/set-of-emails/maildir/bsd/{us-sendgrid-02.eml → msp-us-sendgrid-02.eml} +0 -0
  189. data/set-of-emails/maildir/bsd/{us-sendgrid-03.eml → msp-us-sendgrid-03.eml} +0 -0
  190. data/set-of-emails/maildir/bsd/{us-verizon-01.eml → msp-us-verizon-01.eml} +0 -0
  191. data/set-of-emails/maildir/bsd/msp-us-verizon-02.eml +46 -0
  192. data/set-of-emails/maildir/bsd/{us-yahoo-01.eml → msp-us-yahoo-01.eml} +0 -0
  193. data/set-of-emails/maildir/bsd/{us-yahoo-02.eml → msp-us-yahoo-02.eml} +0 -0
  194. data/set-of-emails/maildir/bsd/{us-yahoo-03.eml → msp-us-yahoo-03.eml} +0 -0
  195. data/set-of-emails/maildir/bsd/{us-yahoo-04.eml → msp-us-yahoo-04.eml} +0 -0
  196. data/set-of-emails/maildir/bsd/{us-yahoo-05.eml → msp-us-yahoo-05.eml} +0 -0
  197. data/set-of-emails/maildir/bsd/{us-zoho-01.eml → msp-us-zoho-01.eml} +0 -0
  198. data/set-of-emails/maildir/bsd/{us-zoho-02.eml → msp-us-zoho-02.eml} +0 -0
  199. data/set-of-emails/maildir/bsd/{us-zoho-03.eml → msp-us-zoho-03.eml} +0 -0
  200. data/set-of-emails/maildir/bsd/{us-zoho-04.eml → msp-us-zoho-04.eml} +0 -0
  201. data/set-of-emails/maildir/bsd/{us-zoho-05.eml → msp-us-zoho-05.eml} +0 -0
  202. data/set-of-emails/maildir/bsd/mta-README.md +319 -0
  203. data/set-of-emails/maildir/bsd/{activehunter-01.eml → mta-activehunter-01.eml} +0 -0
  204. data/set-of-emails/maildir/bsd/{activehunter-02.eml → mta-activehunter-02.eml} +0 -0
  205. data/set-of-emails/maildir/bsd/{apachejames-01.eml → mta-apachejames-01.eml} +0 -0
  206. data/set-of-emails/maildir/bsd/{courier-01.eml → mta-courier-01.eml} +0 -0
  207. data/set-of-emails/maildir/bsd/{courier-02.eml → mta-courier-02.eml} +0 -0
  208. data/set-of-emails/maildir/bsd/{courier-03.eml → mta-courier-03.eml} +0 -0
  209. data/set-of-emails/maildir/bsd/{courier-04.eml → mta-courier-04.eml} +0 -0
  210. data/set-of-emails/maildir/bsd/{domino-01.eml → mta-domino-01.eml} +0 -0
  211. data/set-of-emails/maildir/bsd/{domino-02.eml → mta-domino-02.eml} +0 -0
  212. data/set-of-emails/maildir/bsd/{exchange2003-01.eml → mta-exchange2003-01.eml} +0 -0
  213. data/set-of-emails/maildir/bsd/{exchange2003-02.eml → mta-exchange2003-02.eml} +0 -0
  214. data/set-of-emails/maildir/bsd/{exchange2003-03.eml → mta-exchange2003-03.eml} +0 -0
  215. data/set-of-emails/maildir/bsd/{exchange2003-04.eml → mta-exchange2003-04.eml} +0 -0
  216. data/set-of-emails/maildir/bsd/{exchange2003-05.eml → mta-exchange2003-05.eml} +0 -0
  217. data/set-of-emails/maildir/bsd/{exchange2003-06.eml → mta-exchange2003-06.eml} +0 -0
  218. data/set-of-emails/maildir/bsd/{exchange2007-01.eml → mta-exchange2007-01.eml} +0 -0
  219. data/set-of-emails/maildir/bsd/{exchange2007-02.eml → mta-exchange2007-02.eml} +0 -0
  220. data/set-of-emails/maildir/bsd/{exchange2007-03.eml → mta-exchange2007-03.eml} +0 -0
  221. data/set-of-emails/maildir/bsd/{exim-01.eml → mta-exim-01.eml} +0 -0
  222. data/set-of-emails/maildir/bsd/{exim-02.eml → mta-exim-02.eml} +0 -0
  223. data/set-of-emails/maildir/bsd/{exim-03.eml → mta-exim-03.eml} +0 -0
  224. data/set-of-emails/maildir/bsd/{exim-04.eml → mta-exim-04.eml} +0 -0
  225. data/set-of-emails/maildir/bsd/{exim-05.eml → mta-exim-05.eml} +0 -0
  226. data/set-of-emails/maildir/bsd/{exim-06.eml → mta-exim-06.eml} +0 -0
  227. data/set-of-emails/maildir/bsd/{exim-07.eml → mta-exim-07.eml} +0 -0
  228. data/set-of-emails/maildir/bsd/{exim-08.eml → mta-exim-08.eml} +0 -0
  229. data/set-of-emails/maildir/bsd/{exim-09.eml → mta-exim-09.eml} +0 -0
  230. data/set-of-emails/maildir/bsd/{exim-10.eml → mta-exim-10.eml} +0 -0
  231. data/set-of-emails/maildir/bsd/{exim-11.eml → mta-exim-11.eml} +0 -0
  232. data/set-of-emails/maildir/bsd/{exim-12.eml → mta-exim-12.eml} +0 -0
  233. data/set-of-emails/maildir/bsd/{exim-13.eml → mta-exim-13.eml} +0 -0
  234. data/set-of-emails/maildir/bsd/{exim-14.eml → mta-exim-14.eml} +0 -0
  235. data/set-of-emails/maildir/bsd/{exim-15.eml → mta-exim-15.eml} +0 -0
  236. data/set-of-emails/maildir/bsd/{exim-16.eml → mta-exim-16.eml} +0 -0
  237. data/set-of-emails/maildir/bsd/{exim-17.eml → mta-exim-17.eml} +0 -0
  238. data/set-of-emails/maildir/bsd/{exim-18.eml → mta-exim-18.eml} +0 -0
  239. data/set-of-emails/maildir/bsd/{exim-19.eml → mta-exim-19.eml} +0 -0
  240. data/set-of-emails/maildir/bsd/{exim-20.eml → mta-exim-20.eml} +0 -0
  241. data/set-of-emails/maildir/bsd/{exim-21.eml → mta-exim-21.eml} +0 -0
  242. data/set-of-emails/maildir/bsd/{exim-22.eml → mta-exim-22.eml} +0 -0
  243. data/set-of-emails/maildir/bsd/{exim-23.eml → mta-exim-23.eml} +0 -0
  244. data/set-of-emails/maildir/bsd/{exim-24.eml → mta-exim-24.eml} +0 -0
  245. data/set-of-emails/maildir/bsd/{exim-25.eml → mta-exim-25.eml} +0 -0
  246. data/set-of-emails/maildir/bsd/{exim-26.eml → mta-exim-26.eml} +0 -0
  247. data/set-of-emails/maildir/bsd/{exim-27.eml → mta-exim-27.eml} +0 -0
  248. data/set-of-emails/maildir/bsd/{exim-28.eml → mta-exim-28.eml} +0 -0
  249. data/set-of-emails/maildir/bsd/{exim-29.eml → mta-exim-29.eml} +0 -0
  250. data/set-of-emails/maildir/bsd/{imailserver-01.eml → mta-imailserver-01.eml} +0 -0
  251. data/set-of-emails/maildir/bsd/{imailserver-02.eml → mta-imailserver-02.eml} +0 -0
  252. data/set-of-emails/maildir/bsd/{imailserver-03.eml → mta-imailserver-03.eml} +0 -0
  253. data/set-of-emails/maildir/bsd/{imailserver-04.eml → mta-imailserver-04.eml} +0 -0
  254. data/set-of-emails/maildir/bsd/{imailserver-05.eml → mta-imailserver-05.eml} +0 -0
  255. data/set-of-emails/maildir/bsd/{imailserver-06.eml → mta-imailserver-06.eml} +0 -0
  256. data/set-of-emails/maildir/bsd/{interscanmss-01.eml → mta-interscanmss-01.eml} +0 -0
  257. data/set-of-emails/maildir/bsd/{interscanmss-02.eml → mta-interscanmss-02.eml} +0 -0
  258. data/set-of-emails/maildir/bsd/{mailfoundry-01.eml → mta-mailfoundry-01.eml} +0 -0
  259. data/set-of-emails/maildir/bsd/{mailfoundry-02.eml → mta-mailfoundry-02.eml} +0 -0
  260. data/set-of-emails/maildir/bsd/{mailmarshalsmtp-01.eml → mta-mailmarshalsmtp-01.eml} +0 -0
  261. data/set-of-emails/maildir/bsd/{mcafee-01.eml → mta-mcafee-01.eml} +0 -0
  262. data/set-of-emails/maildir/bsd/{mcafee-02.eml → mta-mcafee-02.eml} +0 -0
  263. data/set-of-emails/maildir/bsd/{mcafee-03.eml → mta-mcafee-03.eml} +0 -0
  264. data/set-of-emails/maildir/bsd/{messagingserver-01.eml → mta-messagingserver-01.eml} +0 -0
  265. data/set-of-emails/maildir/bsd/{messagingserver-02.eml → mta-messagingserver-02.eml} +0 -0
  266. data/set-of-emails/maildir/bsd/{messagingserver-03.eml → mta-messagingserver-03.eml} +0 -0
  267. data/set-of-emails/maildir/bsd/{messagingserver-04.eml → mta-messagingserver-04.eml} +0 -0
  268. data/set-of-emails/maildir/bsd/{messagingserver-05.eml → mta-messagingserver-05.eml} +0 -0
  269. data/set-of-emails/maildir/bsd/{messagingserver-06.eml → mta-messagingserver-06.eml} +0 -0
  270. data/set-of-emails/maildir/bsd/{messagingserver-07.eml → mta-messagingserver-07.eml} +0 -0
  271. data/set-of-emails/maildir/bsd/{mfilter-01.eml → mta-mfilter-01.eml} +0 -0
  272. data/set-of-emails/maildir/bsd/{mfilter-02.eml → mta-mfilter-02.eml} +0 -0
  273. data/set-of-emails/maildir/bsd/{mfilter-03.eml → mta-mfilter-03.eml} +0 -0
  274. data/set-of-emails/maildir/bsd/{mxlogic-01.eml → mta-mxlogic-01.eml} +0 -0
  275. data/set-of-emails/maildir/bsd/{mxlogic-02.eml → mta-mxlogic-02.eml} +0 -0
  276. data/set-of-emails/maildir/bsd/{mxlogic-03.eml → mta-mxlogic-03.eml} +0 -0
  277. data/set-of-emails/maildir/bsd/{notes-01.eml → mta-notes-01.eml} +0 -0
  278. data/set-of-emails/maildir/bsd/{notes-02.eml → mta-notes-02.eml} +0 -0
  279. data/set-of-emails/maildir/bsd/{notes-03.eml → mta-notes-03.eml} +0 -0
  280. data/set-of-emails/maildir/bsd/{notes-04.eml → mta-notes-04.eml} +0 -0
  281. data/set-of-emails/maildir/bsd/{opensmtpd-01.eml → mta-opensmtpd-01.eml} +0 -0
  282. data/set-of-emails/maildir/bsd/{opensmtpd-02.eml → mta-opensmtpd-02.eml} +0 -0
  283. data/set-of-emails/maildir/bsd/{opensmtpd-03.eml → mta-opensmtpd-03.eml} +0 -0
  284. data/set-of-emails/maildir/bsd/{opensmtpd-04.eml → mta-opensmtpd-04.eml} +0 -0
  285. data/set-of-emails/maildir/bsd/{opensmtpd-05.eml → mta-opensmtpd-05.eml} +0 -0
  286. data/set-of-emails/maildir/bsd/mta-opensmtpd-06.eml +67 -0
  287. data/set-of-emails/maildir/bsd/{postfix-01.eml → mta-postfix-01.eml} +0 -0
  288. data/set-of-emails/maildir/bsd/{postfix-02.eml → mta-postfix-02.eml} +0 -0
  289. data/set-of-emails/maildir/bsd/{postfix-03.eml → mta-postfix-03.eml} +0 -0
  290. data/set-of-emails/maildir/bsd/{postfix-04.eml → mta-postfix-04.eml} +0 -0
  291. data/set-of-emails/maildir/bsd/{postfix-05.eml → mta-postfix-05.eml} +0 -0
  292. data/set-of-emails/maildir/bsd/{postfix-06.eml → mta-postfix-06.eml} +0 -0
  293. data/set-of-emails/maildir/bsd/{postfix-07.eml → mta-postfix-07.eml} +0 -0
  294. data/set-of-emails/maildir/bsd/{postfix-08.eml → mta-postfix-08.eml} +0 -0
  295. data/set-of-emails/maildir/bsd/{postfix-09.eml → mta-postfix-09.eml} +0 -0
  296. data/set-of-emails/maildir/bsd/{postfix-10.eml → mta-postfix-10.eml} +0 -0
  297. data/set-of-emails/maildir/bsd/{postfix-11.eml → mta-postfix-11.eml} +0 -0
  298. data/set-of-emails/maildir/bsd/{postfix-12.eml → mta-postfix-12.eml} +0 -0
  299. data/set-of-emails/maildir/bsd/{postfix-13.eml → mta-postfix-13.eml} +0 -0
  300. data/set-of-emails/maildir/bsd/{postfix-14.eml → mta-postfix-14.eml} +0 -0
  301. data/set-of-emails/maildir/bsd/{postfix-15.eml → mta-postfix-15.eml} +0 -0
  302. data/set-of-emails/maildir/bsd/{postfix-16.eml → mta-postfix-16.eml} +0 -0
  303. data/set-of-emails/maildir/bsd/{postfix-17.eml → mta-postfix-17.eml} +0 -0
  304. data/set-of-emails/maildir/bsd/{postfix-18.eml → mta-postfix-18.eml} +0 -0
  305. data/set-of-emails/maildir/bsd/{postfix-19.eml → mta-postfix-19.eml} +0 -0
  306. data/set-of-emails/maildir/bsd/{postfix-20.eml → mta-postfix-20.eml} +0 -0
  307. data/set-of-emails/maildir/bsd/{postfix-21.eml → mta-postfix-21.eml} +0 -0
  308. data/set-of-emails/maildir/bsd/{postfix-22.eml → mta-postfix-22.eml} +0 -0
  309. data/set-of-emails/maildir/bsd/{postfix-23.eml → mta-postfix-23.eml} +0 -0
  310. data/set-of-emails/maildir/bsd/{postfix-24.eml → mta-postfix-24.eml} +0 -0
  311. data/set-of-emails/maildir/bsd/{postfix-25.eml → mta-postfix-25.eml} +0 -0
  312. data/set-of-emails/maildir/bsd/{postfix-26.eml → mta-postfix-26.eml} +0 -0
  313. data/set-of-emails/maildir/bsd/{postfix-27.eml → mta-postfix-27.eml} +0 -0
  314. data/set-of-emails/maildir/bsd/{qmail-01.eml → mta-qmail-01.eml} +0 -0
  315. data/set-of-emails/maildir/bsd/{qmail-02.eml → mta-qmail-02.eml} +0 -0
  316. data/set-of-emails/maildir/bsd/{qmail-03.eml → mta-qmail-03.eml} +0 -0
  317. data/set-of-emails/maildir/bsd/{qmail-04.eml → mta-qmail-04.eml} +0 -0
  318. data/set-of-emails/maildir/bsd/{qmail-05.eml → mta-qmail-05.eml} +0 -0
  319. data/set-of-emails/maildir/bsd/{qmail-06.eml → mta-qmail-06.eml} +0 -0
  320. data/set-of-emails/maildir/bsd/{qmail-07.eml → mta-qmail-07.eml} +0 -0
  321. data/set-of-emails/maildir/bsd/{qmail-08.eml → mta-qmail-08.eml} +0 -0
  322. data/set-of-emails/maildir/bsd/{qmail-09.eml → mta-qmail-09.eml} +0 -0
  323. data/set-of-emails/maildir/bsd/{qmail-10.eml → mta-qmail-10.eml} +0 -0
  324. data/set-of-emails/maildir/bsd/{qmail-11.eml → mta-qmail-11.eml} +0 -0
  325. data/set-of-emails/maildir/bsd/{qmail-12.eml → mta-qmail-12.eml} +0 -0
  326. data/set-of-emails/maildir/bsd/{sendmail-01.eml → mta-sendmail-01.eml} +0 -0
  327. data/set-of-emails/maildir/bsd/{sendmail-02.eml → mta-sendmail-02.eml} +0 -0
  328. data/set-of-emails/maildir/bsd/{sendmail-03.eml → mta-sendmail-03.eml} +0 -0
  329. data/set-of-emails/maildir/bsd/{sendmail-04.eml → mta-sendmail-04.eml} +0 -0
  330. data/set-of-emails/maildir/bsd/{sendmail-05.eml → mta-sendmail-05.eml} +0 -0
  331. data/set-of-emails/maildir/bsd/{sendmail-06.eml → mta-sendmail-06.eml} +0 -0
  332. data/set-of-emails/maildir/bsd/{sendmail-07.eml → mta-sendmail-07.eml} +0 -0
  333. data/set-of-emails/maildir/bsd/{sendmail-08.eml → mta-sendmail-08.eml} +0 -0
  334. data/set-of-emails/maildir/bsd/{sendmail-09.eml → mta-sendmail-09.eml} +0 -0
  335. data/set-of-emails/maildir/bsd/{sendmail-10.eml → mta-sendmail-10.eml} +0 -0
  336. data/set-of-emails/maildir/bsd/{sendmail-11.eml → mta-sendmail-11.eml} +0 -0
  337. data/set-of-emails/maildir/bsd/{sendmail-12.eml → mta-sendmail-12.eml} +0 -0
  338. data/set-of-emails/maildir/bsd/{sendmail-13.eml → mta-sendmail-13.eml} +0 -0
  339. data/set-of-emails/maildir/bsd/{sendmail-14.eml → mta-sendmail-14.eml} +0 -0
  340. data/set-of-emails/maildir/bsd/{sendmail-15.eml → mta-sendmail-15.eml} +0 -0
  341. data/set-of-emails/maildir/bsd/{sendmail-16.eml → mta-sendmail-16.eml} +0 -0
  342. data/set-of-emails/maildir/bsd/{sendmail-17.eml → mta-sendmail-17.eml} +0 -0
  343. data/set-of-emails/maildir/bsd/{sendmail-18.eml → mta-sendmail-18.eml} +0 -0
  344. data/set-of-emails/maildir/bsd/{sendmail-19.eml → mta-sendmail-19.eml} +0 -0
  345. data/set-of-emails/maildir/bsd/{sendmail-20.eml → mta-sendmail-20.eml} +0 -0
  346. data/set-of-emails/maildir/bsd/{sendmail-21.eml → mta-sendmail-21.eml} +0 -0
  347. data/set-of-emails/maildir/bsd/{sendmail-22.eml → mta-sendmail-22.eml} +0 -0
  348. data/set-of-emails/maildir/bsd/{sendmail-23.eml → mta-sendmail-23.eml} +0 -0
  349. data/set-of-emails/maildir/bsd/{sendmail-24.eml → mta-sendmail-24.eml} +0 -0
  350. data/set-of-emails/maildir/bsd/{sendmail-25.eml → mta-sendmail-25.eml} +0 -0
  351. data/set-of-emails/maildir/bsd/{sendmail-26.eml → mta-sendmail-26.eml} +0 -0
  352. data/set-of-emails/maildir/bsd/{sendmail-27.eml → mta-sendmail-27.eml} +0 -0
  353. data/set-of-emails/maildir/bsd/{sendmail-28.eml → mta-sendmail-28.eml} +0 -0
  354. data/set-of-emails/maildir/bsd/{sendmail-29.eml → mta-sendmail-29.eml} +0 -0
  355. data/set-of-emails/maildir/bsd/{sendmail-30.eml → mta-sendmail-30.eml} +0 -0
  356. data/set-of-emails/maildir/bsd/{sendmail-31.eml → mta-sendmail-31.eml} +0 -0
  357. data/set-of-emails/maildir/bsd/{sendmail-32.eml → mta-sendmail-32.eml} +0 -0
  358. data/set-of-emails/maildir/bsd/{sendmail-33.eml → mta-sendmail-33.eml} +0 -0
  359. data/set-of-emails/maildir/bsd/{sendmail-34.eml → mta-sendmail-34.eml} +0 -0
  360. data/set-of-emails/maildir/bsd/{sendmail-35.eml → mta-sendmail-35.eml} +0 -0
  361. data/set-of-emails/maildir/bsd/{sendmail-36.eml → mta-sendmail-36.eml} +0 -0
  362. data/set-of-emails/maildir/bsd/{sendmail-37.eml → mta-sendmail-37.eml} +0 -0
  363. data/set-of-emails/maildir/bsd/{sendmail-38.eml → mta-sendmail-38.eml} +0 -0
  364. data/set-of-emails/maildir/bsd/{sendmail-39.eml → mta-sendmail-39.eml} +0 -0
  365. data/set-of-emails/maildir/bsd/{sendmail-40.eml → mta-sendmail-40.eml} +0 -0
  366. data/set-of-emails/maildir/bsd/{sendmail-41.eml → mta-sendmail-41.eml} +0 -0
  367. data/set-of-emails/maildir/bsd/mta-sendmail-42.eml +64 -0
  368. data/set-of-emails/maildir/bsd/{surfcontrol-01.eml → mta-surfcontrol-01.eml} +0 -0
  369. data/set-of-emails/maildir/bsd/{surfcontrol-02.eml → mta-surfcontrol-02.eml} +0 -0
  370. data/set-of-emails/maildir/bsd/{surfcontrol-03.eml → mta-surfcontrol-03.eml} +0 -0
  371. data/set-of-emails/maildir/bsd/{v5sendmail-01.eml → mta-v5sendmail-01.eml} +0 -0
  372. data/set-of-emails/maildir/bsd/{v5sendmail-02.eml → mta-v5sendmail-02.eml} +0 -0
  373. data/set-of-emails/maildir/bsd/{v5sendmail-03.eml → mta-v5sendmail-03.eml} +0 -0
  374. data/set-of-emails/maildir/bsd/{v5sendmail-04.eml → mta-v5sendmail-04.eml} +0 -0
  375. data/set-of-emails/maildir/bsd/{v5sendmail-05.eml → mta-v5sendmail-05.eml} +0 -0
  376. data/set-of-emails/maildir/bsd/{v5sendmail-06.eml → mta-v5sendmail-06.eml} +0 -0
  377. data/set-of-emails/maildir/bsd/{v5sendmail-07.eml → mta-v5sendmail-07.eml} +0 -0
  378. data/set-of-emails/maildir/bsd/{x1-01.eml → mta-x1-01.eml} +0 -0
  379. data/set-of-emails/maildir/bsd/{x1-02.eml → mta-x1-02.eml} +0 -0
  380. data/set-of-emails/maildir/bsd/{x2-01.eml → mta-x2-01.eml} +0 -0
  381. data/set-of-emails/maildir/bsd/{x2-02.eml → mta-x2-02.eml} +0 -0
  382. data/set-of-emails/maildir/bsd/{x2-03.eml → mta-x2-03.eml} +0 -0
  383. data/set-of-emails/maildir/bsd/{x2-04.eml → mta-x2-04.eml} +0 -0
  384. data/set-of-emails/maildir/bsd/{x2-05.eml → mta-x2-05.eml} +0 -0
  385. data/set-of-emails/maildir/bsd/{x3-01.eml → mta-x3-01.eml} +0 -0
  386. data/set-of-emails/maildir/bsd/{x3-02.eml → mta-x3-02.eml} +0 -0
  387. data/set-of-emails/maildir/bsd/{x3-03.eml → mta-x3-03.eml} +0 -0
  388. data/set-of-emails/maildir/bsd/{x3-04.eml → mta-x3-04.eml} +0 -0
  389. data/set-of-emails/maildir/bsd/{x4-01.eml → mta-x4-01.eml} +0 -0
  390. data/set-of-emails/maildir/bsd/{x4-02.eml → mta-x4-02.eml} +0 -0
  391. data/set-of-emails/maildir/bsd/{x4-03.eml → mta-x4-03.eml} +0 -0
  392. data/set-of-emails/maildir/bsd/{x4-04.eml → mta-x4-04.eml} +0 -0
  393. data/set-of-emails/maildir/bsd/{x4-05.eml → mta-x4-05.eml} +0 -0
  394. data/set-of-emails/maildir/bsd/{x4-06.eml → mta-x4-06.eml} +0 -0
  395. data/set-of-emails/maildir/bsd/{x4-07.eml → mta-x4-07.eml} +0 -0
  396. data/set-of-emails/maildir/bsd/{x5-01.eml → mta-x5-01.eml} +0 -0
  397. data/set-of-emails/maildir/bsd/{exchange-online-01.eml → rhost-exchange-online-01.eml} +0 -0
  398. data/set-of-emails/maildir/bsd/{google-apps-01.eml → rhost-google-apps-01.eml} +0 -0
  399. data/set-of-emails/maildir/dos/ced-us-amazonses-01.eml +47 -0
  400. data/set-of-emails/maildir/dos/{de-einsundeins-01.eml → msp-de-einsundeins-01.eml} +0 -0
  401. data/set-of-emails/maildir/dos/{de-gmx-01.eml → msp-de-gmx-01.eml} +0 -0
  402. data/set-of-emails/maildir/dos/{jp-biglobe-01.eml → msp-jp-biglobe-01.eml} +0 -0
  403. data/set-of-emails/maildir/dos/{jp-ezweb-01.eml → msp-jp-ezweb-01.eml} +0 -0
  404. data/set-of-emails/maildir/dos/{jp-kddi-01.eml → msp-jp-kddi-01.eml} +0 -0
  405. data/set-of-emails/maildir/dos/{ru-mailru-01.eml → msp-ru-mailru-01.eml} +0 -0
  406. data/set-of-emails/maildir/dos/{ru-yandex-01.eml → msp-ru-yandex-01.eml} +0 -0
  407. data/set-of-emails/maildir/dos/{uk-messagelabs-01.eml → msp-uk-messagelabs-01.eml} +0 -0
  408. data/set-of-emails/maildir/dos/{us-amazonses-01.eml → msp-us-amazonses-01.eml} +0 -0
  409. data/set-of-emails/maildir/dos/{us-amazonworkmail-01.eml → msp-us-amazonworkmail-01.eml} +0 -0
  410. data/set-of-emails/maildir/dos/{us-aol-01.eml → msp-us-aol-01.eml} +0 -0
  411. data/set-of-emails/maildir/dos/{us-bigfoot-01.eml → msp-us-bigfoot-01.eml} +0 -0
  412. data/set-of-emails/maildir/dos/{us-facebook-01.eml → msp-us-facebook-01.eml} +0 -0
  413. data/set-of-emails/maildir/dos/{us-google-01.eml → msp-us-google-01.eml} +0 -0
  414. data/set-of-emails/maildir/dos/{us-office365-01.eml → msp-us-office365-01.eml} +0 -0
  415. data/set-of-emails/maildir/dos/{us-outlook-01.eml → msp-us-outlook-01.eml} +0 -0
  416. data/set-of-emails/maildir/dos/{us-receivingses-01.eml → msp-us-receivingses-01.eml} +0 -0
  417. data/set-of-emails/maildir/dos/{us-sendgrid-01.eml → msp-us-sendgrid-01.eml} +0 -0
  418. data/set-of-emails/maildir/dos/{us-verizon-01.eml → msp-us-verizon-01.eml} +0 -0
  419. data/set-of-emails/maildir/dos/{us-yahoo-01.eml → msp-us-yahoo-01.eml} +0 -0
  420. data/set-of-emails/maildir/dos/{us-zoho-01.eml → msp-us-zoho-01.eml} +0 -0
  421. data/set-of-emails/maildir/dos/{activehunter-01.eml → mta-activehunter-01.eml} +0 -0
  422. data/set-of-emails/maildir/dos/{apachejames-01.eml → mta-apachejames-01.eml} +0 -0
  423. data/set-of-emails/maildir/dos/{courier-01.eml → mta-courier-01.eml} +0 -0
  424. data/set-of-emails/maildir/dos/{domino-01.eml → mta-domino-01.eml} +0 -0
  425. data/set-of-emails/maildir/dos/{exchange-01.eml → mta-exchange-01.eml} +0 -0
  426. data/set-of-emails/maildir/dos/{exchange2003-01.eml → mta-exchange2003-01.eml} +0 -0
  427. data/set-of-emails/maildir/dos/{exchange2007-01.eml → mta-exchange2007-01.eml} +0 -0
  428. data/set-of-emails/maildir/dos/{exim-01.eml → mta-exim-01.eml} +0 -0
  429. data/set-of-emails/maildir/dos/{imailserver-01.eml → mta-imailserver-01.eml} +0 -0
  430. data/set-of-emails/maildir/dos/{interscanmss-01.eml → mta-interscanmss-01.eml} +0 -0
  431. data/set-of-emails/maildir/dos/{mailfoundry-01.eml → mta-mailfoundry-01.eml} +0 -0
  432. data/set-of-emails/maildir/dos/{mailmarshalsmtp-01.eml → mta-mailmarshalsmtp-01.eml} +0 -0
  433. data/set-of-emails/maildir/dos/{mcafee-01.eml → mta-mcafee-01.eml} +0 -0
  434. data/set-of-emails/maildir/dos/{messagingserver-01.eml → mta-messagingserver-01.eml} +0 -0
  435. data/set-of-emails/maildir/dos/{mfilter-01.eml → mta-mfilter-01.eml} +0 -0
  436. data/set-of-emails/maildir/dos/{mxlogic-01.eml → mta-mxlogic-01.eml} +0 -0
  437. data/set-of-emails/maildir/dos/{notes-01.eml → mta-notes-01.eml} +0 -0
  438. data/set-of-emails/maildir/dos/{opensmtpd-01.eml → mta-opensmtpd-01.eml} +0 -0
  439. data/set-of-emails/maildir/dos/{postfix-01.eml → mta-postfix-01.eml} +0 -0
  440. data/set-of-emails/maildir/dos/{qmail-01.eml → mta-qmail-01.eml} +0 -0
  441. data/set-of-emails/maildir/dos/{sendmail-01.eml → mta-sendmail-01.eml} +0 -0
  442. data/set-of-emails/maildir/dos/{surfcontrol-01.eml → mta-surfcontrol-01.eml} +0 -0
  443. data/set-of-emails/maildir/dos/{v5sendmail-01.eml → mta-v5sendmail-01.eml} +0 -0
  444. data/set-of-emails/maildir/dos/{x1-01.eml → mta-x1-01.eml} +0 -0
  445. data/set-of-emails/maildir/dos/{x2-01.eml → mta-x2-01.eml} +0 -0
  446. data/set-of-emails/maildir/dos/{x3-01.eml → mta-x3-01.eml} +0 -0
  447. data/set-of-emails/maildir/dos/{x4-01.eml → mta-x4-01.eml} +0 -0
  448. data/set-of-emails/maildir/dos/{x5-01.eml → mta-x5-01.eml} +0 -0
  449. data/set-of-emails/maildir/dos/{exchange-online-01.eml → rhost-exchange-online-01.eml} +0 -0
  450. data/set-of-emails/maildir/dos/{google-apps-01.eml → rhost-google-apps-01.eml} +0 -0
  451. data/set-of-emails/maildir/mac/ced-us-amazonses-01.eml +1 -1
  452. data/set-of-emails/maildir/mac/{de-einsundeins-01.eml → msp-de-einsundeins-01.eml} +0 -0
  453. data/set-of-emails/maildir/mac/{de-gmx-01.eml → msp-de-gmx-01.eml} +0 -0
  454. data/set-of-emails/maildir/mac/{jp-biglobe-01.eml → msp-jp-biglobe-01.eml} +0 -0
  455. data/set-of-emails/maildir/mac/{jp-ezweb-01.eml → msp-jp-ezweb-01.eml} +0 -0
  456. data/set-of-emails/maildir/mac/{jp-kddi-01.eml → msp-jp-kddi-01.eml} +0 -0
  457. data/set-of-emails/maildir/mac/{ru-mailru-01.eml → msp-ru-mailru-01.eml} +0 -0
  458. data/set-of-emails/maildir/mac/{ru-yandex-01.eml → msp-ru-yandex-01.eml} +0 -0
  459. data/set-of-emails/maildir/mac/{uk-messagelabs-01.eml → msp-uk-messagelabs-01.eml} +0 -0
  460. data/set-of-emails/maildir/mac/{us-amazonses-01.eml → msp-us-amazonses-01.eml} +0 -0
  461. data/set-of-emails/maildir/mac/{us-amazonworkmail-01.eml → msp-us-amazonworkmail-01.eml} +0 -0
  462. data/set-of-emails/maildir/mac/{us-aol-01.eml → msp-us-aol-01.eml} +0 -0
  463. data/set-of-emails/maildir/mac/{us-bigfoot-01.eml → msp-us-bigfoot-01.eml} +0 -0
  464. data/set-of-emails/maildir/mac/{us-facebook-01.eml → msp-us-facebook-01.eml} +0 -0
  465. data/set-of-emails/maildir/mac/{us-google-01.eml → msp-us-google-01.eml} +0 -0
  466. data/set-of-emails/maildir/mac/{us-office365-01.eml → msp-us-office365-01.eml} +0 -0
  467. data/set-of-emails/maildir/mac/{us-outlook-01.eml → msp-us-outlook-01.eml} +0 -0
  468. data/set-of-emails/maildir/mac/{us-receivingses-01.eml → msp-us-receivingses-01.eml} +0 -0
  469. data/set-of-emails/maildir/mac/{us-sendgrid-01.eml → msp-us-sendgrid-01.eml} +0 -0
  470. data/set-of-emails/maildir/mac/{us-verizon-01.eml → msp-us-verizon-01.eml} +0 -0
  471. data/set-of-emails/maildir/mac/{us-yahoo-01.eml → msp-us-yahoo-01.eml} +0 -0
  472. data/set-of-emails/maildir/mac/{us-zoho-01.eml → msp-us-zoho-01.eml} +0 -0
  473. data/set-of-emails/maildir/mac/{activehunter-01.eml → mta-activehunter-01.eml} +0 -0
  474. data/set-of-emails/maildir/mac/{apachejames-01.eml → mta-apachejames-01.eml} +0 -0
  475. data/set-of-emails/maildir/mac/{courier-01.eml → mta-courier-01.eml} +0 -0
  476. data/set-of-emails/maildir/mac/{domino-01.eml → mta-domino-01.eml} +0 -0
  477. data/set-of-emails/maildir/mac/{exchange-01.eml → mta-exchange-01.eml} +0 -0
  478. data/set-of-emails/maildir/mac/{exchange2003-01.eml → mta-exchange2003-01.eml} +0 -0
  479. data/set-of-emails/maildir/mac/{exchange2007-01.eml → mta-exchange2007-01.eml} +0 -0
  480. data/set-of-emails/maildir/mac/{exim-01.eml → mta-exim-01.eml} +0 -0
  481. data/set-of-emails/maildir/mac/{imailserver-01.eml → mta-imailserver-01.eml} +0 -0
  482. data/set-of-emails/maildir/mac/{interscanmss-01.eml → mta-interscanmss-01.eml} +0 -0
  483. data/set-of-emails/maildir/mac/{mailfoundry-01.eml → mta-mailfoundry-01.eml} +0 -0
  484. data/set-of-emails/maildir/mac/{mailmarshalsmtp-01.eml → mta-mailmarshalsmtp-01.eml} +0 -0
  485. data/set-of-emails/maildir/mac/{mcafee-01.eml → mta-mcafee-01.eml} +0 -0
  486. data/set-of-emails/maildir/mac/{messagingserver-01.eml → mta-messagingserver-01.eml} +0 -0
  487. data/set-of-emails/maildir/mac/{mfilter-01.eml → mta-mfilter-01.eml} +0 -0
  488. data/set-of-emails/maildir/mac/{mxlogic-01.eml → mta-mxlogic-01.eml} +0 -0
  489. data/set-of-emails/maildir/mac/{notes-01.eml → mta-notes-01.eml} +0 -0
  490. data/set-of-emails/maildir/mac/{opensmtpd-01.eml → mta-opensmtpd-01.eml} +0 -0
  491. data/set-of-emails/maildir/mac/{postfix-01.eml → mta-postfix-01.eml} +0 -0
  492. data/set-of-emails/maildir/mac/{qmail-01.eml → mta-qmail-01.eml} +0 -0
  493. data/set-of-emails/maildir/mac/{sendmail-01.eml → mta-sendmail-01.eml} +0 -0
  494. data/set-of-emails/maildir/mac/{surfcontrol-01.eml → mta-surfcontrol-01.eml} +0 -0
  495. data/set-of-emails/maildir/mac/{v5sendmail-01.eml → mta-v5sendmail-01.eml} +0 -0
  496. data/set-of-emails/maildir/mac/{x1-01.eml → mta-x1-01.eml} +0 -0
  497. data/set-of-emails/maildir/mac/{x2-01.eml → mta-x2-01.eml} +0 -0
  498. data/set-of-emails/maildir/mac/{x3-01.eml → mta-x3-01.eml} +0 -0
  499. data/set-of-emails/maildir/mac/{x4-01.eml → mta-x4-01.eml} +0 -0
  500. data/set-of-emails/maildir/mac/{x5-01.eml → mta-x5-01.eml} +0 -0
  501. data/set-of-emails/maildir/mac/{exchange-online-01.eml → rhost-exchange-online-01.eml} +0 -0
  502. data/set-of-emails/maildir/mac/{google-apps-01.eml → rhost-google-apps-01.eml} +0 -0
  503. metadata +444 -408
@@ -0,0 +1,556 @@
1
+ module Sisimai
2
+ # Sisimai::Message::Email convert bounce email text to data structure. It
3
+ # resolves an email text into an UNIX From line, the header part of the mail,
4
+ # delivery status, and RFC822 header part. When the email given as a argument
5
+ # of "new" method is not a bounce email, the method returns nil.
6
+ class Message
7
+ class Email
8
+ # Imported from p5-Sisimail/lib/Sisimai/Message/Email.pm
9
+ require 'sisimai/arf'
10
+ require 'sisimai/mime'
11
+ require 'sisimai/string'
12
+ require 'sisimai/rfc3834'
13
+ require 'sisimai/rfc5322'
14
+ require 'sisimai/order/email'
15
+
16
+ @@ToBeLoaded = []
17
+ @@TryOnFirst = []
18
+
19
+ EndOfEmail = Sisimai::String.EOM
20
+ RFC822Head = Sisimai::RFC5322.HEADERFIELDS
21
+ RFC3834Set = Sisimai::RFC3834.headerlist.map { |e| e.downcase }
22
+ HeaderList = [
23
+ 'from', 'to', 'date', 'subject', 'content-type', 'reply-to', 'message-id',
24
+ 'received', 'content-transfer-encoding', 'return-path', 'x-mailer',
25
+ ]
26
+ MultiHeads = { 'received' => true }
27
+ IgnoreList = { 'dkim-signature' => true }
28
+ Indicators = {
29
+ :begin => (1 << 1),
30
+ :endof => (1 << 2),
31
+ }
32
+ DefaultSet = Sisimai::Order::Email.another
33
+ SubjectTab = Sisimai::Order::Email.by('subject')
34
+ ExtHeaders = Sisimai::Order::Email.headers
35
+ ReEncoding = Sisimai::MIME.patterns
36
+
37
+ # Make data structure from the email message(a body part and headers)
38
+ # @param [Hash] argvs Email data
39
+ # @options argvs [String] data Entire email message
40
+ # @options argvs [Array] load User defined MTA module list
41
+ # @options argvs [Array] order The order of MTA modules
42
+ # @options argvs [Code] hook Reference to callback method
43
+ # @return [Hash] Resolved data structure
44
+ def self.make(argvs)
45
+ email = argvs['data']
46
+
47
+ hookmethod = argvs['hook'] || nil
48
+ processing = {
49
+ 'from' => '', # From_ line
50
+ 'header' => {}, # Email header
51
+ 'rfc822' => '', # Original message part
52
+ 'ds' => [], # Parsed data, Delivery Status
53
+ 'catch' => nil, # Data parsed by callback method
54
+ }
55
+ methodargv = {
56
+ 'load' => argvs['load'] || [],
57
+ 'order' => argvs['order'] || []
58
+ }
59
+ tobeloaded = Sisimai::Message::Email.load(methodargv)
60
+
61
+ # 1. Split email data to headers and a body part.
62
+ aftersplit = Sisimai::Message::Email.divideup(email)
63
+ return nil if aftersplit.empty?
64
+
65
+ # 2. Convert email headers from text to hash reference
66
+ headerargv = {}
67
+ headerargv['extheaders'] = ExtHeaders
68
+ headerargv['tryonfirst'] = []
69
+ processing['from'] = aftersplit['from']
70
+ processing['header'] = Sisimai::Message::Email.headers(aftersplit['header'], headerargv)
71
+
72
+ # 3. Check headers for detecting MTA/MSP module
73
+ if headerargv['tryonfirst'].empty?
74
+ headerargv['tryonfirst'].concat(Sisimai::Message::Email.makeorder(processing['header']))
75
+ end
76
+
77
+ # 4. Rewrite message body for detecting the bounce reason
78
+ methodargv = {
79
+ 'hook' => hookmethod,
80
+ 'mail' => processing,
81
+ 'body' => aftersplit['body'],
82
+ 'tryonfirst' => headerargv['tryonfirst'],
83
+ 'tobeloaded' => tobeloaded,
84
+ }
85
+ bouncedata = Sisimai::Message::Email.parse(methodargv)
86
+
87
+ return nil unless bouncedata
88
+ return nil if bouncedata.empty?
89
+ processing['ds'] = bouncedata['ds']
90
+ processing['catch'] = bouncedata['catch']
91
+
92
+ # 5. Rewrite headers of the original message in the body part
93
+ rfc822part = bouncedata['rfc822']
94
+ rfc822part = aftersplit['body'] if rfc822part.empty?
95
+
96
+ if rfc822part.is_a? ::String
97
+ # The value returned from Sisimai::MTA::* or Sisimai::MSP::* modules
98
+ processing['rfc822'] = Sisimai::Message::Email.takeapart(rfc822part)
99
+ else
100
+ # The value returned from Sisimai::CED::* modules
101
+ processing['rfc822'] = rfc822part
102
+ end
103
+
104
+ return processing
105
+ end
106
+
107
+ # Load MTA modules which specified at 'order' and 'load' in the argument
108
+ # @param [Hash] argvs Module information to be loaded
109
+ # @options argvs [Array] load User defined MTA module list
110
+ # @options argvs [Array] order The order of MTA modules
111
+ # @return [Array] Module list
112
+ # @since v4.20.0
113
+ def self.load(argvs)
114
+ modulelist = []
115
+ tobeloaded = []
116
+
117
+ %w|load order|.each do |e|
118
+ # The order of MTA modules specified by user
119
+ next unless argvs.key?(e)
120
+ next unless argvs[e].is_a? Array
121
+ next if argvs[e].empty?
122
+
123
+ modulelist.concat(argvs['order']) if e == 'order'
124
+ next unless e == 'load'
125
+
126
+ # Load user defined MTA module
127
+ argvs['load'].each do |v|
128
+ # Load user defined MTA module
129
+ begin
130
+ require v.to_s.gsub('::', '/').downcase
131
+ rescue LoadError
132
+ warn ' ***warning: Failed to load ' + v
133
+ next
134
+ end
135
+
136
+ Module.const_get(v).headerlist.each do |w|
137
+ # Get header name which required user defined MTA module
138
+ ExtHeaders[w] ||= {}
139
+ ExtHeaders[w][v] = 1
140
+ end
141
+ tobeloaded << v
142
+ end
143
+ end
144
+
145
+ modulelist.each do |e|
146
+ # Append the custom order of MTA modules
147
+ next if tobeloaded.index(e)
148
+ tobeloaded << e
149
+ end
150
+
151
+ return tobeloaded
152
+ end
153
+
154
+ # Divide email data up headers and a body part.
155
+ # @param [String] email Email data
156
+ # @return [Hash] Email data after split
157
+ def self.divideup(email)
158
+ return {} if email.empty?
159
+
160
+ email = email.scrub('?')
161
+ email = email.gsub(/\r\n/, "\n") if email =~ /\r\n/
162
+ email = email.gsub(/[ \t]+$/, '') if email =~ /[ \t]+$/
163
+
164
+ hasdivided = email.split("\n")
165
+ return {} if hasdivided.empty?
166
+
167
+ readcursor = 0
168
+ aftersplit = { 'from' => '', 'header' => '', 'body' => '' }
169
+ pseudofrom = 'MAILER-DAEMON Tue Feb 11 00:00:00 2014'
170
+
171
+ if hasdivided[0][0, 5] == 'From '
172
+ # From MAILER-DAEMON Tue Feb 11 00:00:00 2014
173
+ aftersplit['from'] = hasdivided.shift
174
+ aftersplit['from'] = aftersplit['from'].delete("\n").delete("\r")
175
+ end
176
+
177
+ # Split email data to headers and a body part.
178
+ hasdivided.each do |e|
179
+ # Split email data to headers and a body part.
180
+ if readcursor & Indicators[:endof] > 0
181
+ # The body part of the email
182
+ aftersplit['body'] += e + "\n"
183
+
184
+ else
185
+ # The boundary for splitting headers and a body part does not
186
+ # appeare yet.
187
+ if e.empty?
188
+ # Blank line, it is a boundary of headers and a body part
189
+ readcursor |= Indicators[:endof] if readcursor & Indicators[:begin] > 0
190
+
191
+ else
192
+ # The header part of the email
193
+ aftersplit['header'] += e + "\n"
194
+ readcursor |= Indicators[:begin]
195
+ end
196
+ end
197
+ end
198
+ return {} if aftersplit['header'].empty?
199
+ return {} if aftersplit['body'].empty?
200
+
201
+ aftersplit['from'] = pseudofrom if aftersplit['from'].empty?
202
+ return aftersplit
203
+ end
204
+
205
+ # Convert email headers from text to hash reference
206
+ # @param [String] heads Email header data
207
+ # @param [Hash] argvs
208
+ # @param options extheaders [Array] External header table
209
+ # @return [Hash] Structured email header data
210
+ def self.headers(heads, argvs = {})
211
+ return nil unless heads
212
+
213
+ currheader = ''
214
+ allheaders = {}
215
+ structured = {}
216
+ extheaders = argvs['extheaders'] || []
217
+
218
+ HeaderList.each { |e| structured[e] = nil }
219
+ HeaderList.each { |e| allheaders[e] = true }
220
+ RFC3834Set.each { |e| allheaders[e] = true }
221
+ MultiHeads.each_key { |e| structured[e.downcase] = [] }
222
+ extheaders.each_key { |e| allheaders[e] = true }
223
+
224
+ heads.split("\n").each do |e|
225
+ # Convert email headers to hash
226
+ if cv = e.match(/\A([^ ]+?)[:][ ]*(.+?)\z/)
227
+ # split the line into a header name and a header content
228
+ lhs = cv[1]
229
+ rhs = cv[2]
230
+
231
+ currheader = lhs.downcase
232
+ next unless allheaders.key?(currheader)
233
+
234
+ if MultiHeads.key?(currheader)
235
+ # Such as 'Received' header, there are multiple headers in a single
236
+ # email message.
237
+ rhs = rhs.tr("\t", ' ')
238
+ rhs = rhs.squeeze(' ')
239
+ structured[currheader] << rhs
240
+
241
+ else
242
+ # Other headers except "Received" and so on
243
+ if extheaders[currheader]
244
+ # MTA specific header
245
+ extheaders[currheader].keys.each do |r|
246
+ next if argvs['tryonfirst'].index(r)
247
+ argvs['tryonfirst'] << r
248
+ end
249
+ end
250
+ structured[currheader] = rhs
251
+ end
252
+
253
+ elsif cv = e.match(/\A[ \t]+(.+?)\z/)
254
+ # Ignore header?
255
+ next if IgnoreList[currheader]
256
+
257
+ # Header line continued from the previous line
258
+ if structured[currheader].is_a? Array
259
+ # Concatenate a header which have multi-lines such as 'Received'
260
+ structured[currheader][-1] += ' ' + cv[1]
261
+
262
+ else
263
+ structured[currheader] ||= ''
264
+ structured[currheader] += ' ' + cv[1]
265
+ end
266
+ end
267
+ end
268
+ return structured
269
+ end
270
+
271
+ # Check headers for detecting MTA/MSP module and returns the order of modules
272
+ # @param [Hash] heads Email header data
273
+ # @return [Array] Order of MTA/MSP modules
274
+ def self.makeorder(heads)
275
+ return [] unless heads
276
+ return [] unless heads['subject']
277
+ return [] if heads['subject'].empty?
278
+ order = []
279
+
280
+ # Try to match the value of "Subject" with patterns generated by
281
+ # Sisimai::Order->by('subject') method
282
+ SubjectTab.each_key do |e|
283
+ # Get MTA list from the subject header
284
+ next unless heads['subject'] =~ e
285
+
286
+ # Matched and push MTA list
287
+ order.concat(SubjectTab[e])
288
+ break
289
+ end
290
+ return order
291
+ end
292
+
293
+ # Take each email header in the original message apart
294
+ # @param [String] heads The original message header
295
+ # @return [Hash] Structured message headers
296
+ def self.takeapart(heads)
297
+ return {} unless heads
298
+
299
+ # Convert from string to hash reference
300
+ heads = heads.gsub(/^[>]+[ ]/m, '')
301
+
302
+ takenapart = {}
303
+ hasdivided = heads.split("\n")
304
+ previousfn = '' # Previous field name
305
+ borderline = '__MIME_ENCODED_BOUNDARY__'
306
+ mimeborder = {}
307
+
308
+ hasdivided.each do |e|
309
+ # Header name as a key, The value of header as a value
310
+ if cv = e.match(/\A([-0-9A-Za-z]+?)[:][ ]*(.*)\z/)
311
+ # Header
312
+ lhs = cv[1].downcase
313
+ rhs = cv[2]
314
+ previousfn = ''
315
+
316
+ next unless RFC822Head.key?(lhs)
317
+ previousfn = lhs
318
+ takenapart[previousfn] = rhs unless takenapart[previousfn]
319
+
320
+ else
321
+ # Continued line from the previous line
322
+ next unless e =~ /\A[ \t]+/
323
+ next if previousfn.empty?
324
+
325
+ # Concatenate the line if it is the value of required header
326
+ if Sisimai::MIME.is_mimeencoded(e)
327
+ # The line is MIME-Encoded test
328
+ if previousfn == 'subject'
329
+ # Subject: header
330
+ takenapart[previousfn] += borderline + e
331
+
332
+ else
333
+ # Is not Subject header
334
+ takenapart[previousfn] += e
335
+ end
336
+ mimeborder[previousfn] = true
337
+
338
+ else
339
+ # ASCII Characters only: Not MIME-Encoded
340
+ e = e.lstrip
341
+ takenapart[previousfn] += e
342
+ mimeborder[previousfn] ||= false
343
+ end
344
+ end
345
+ end
346
+
347
+ if takenapart['subject']
348
+ # Convert MIME-Encoded subject
349
+ v = takenapart['subject']
350
+
351
+ if Sisimai::String.is_8bit(v)
352
+ # The value of ``Subject'' header is including multibyte character,
353
+ # is not MIME-Encoded text.
354
+ v = 'MULTIBYTE CHARACTERS HAVE BEEN REMOVED'
355
+
356
+ else
357
+ # MIME-Encoded subject field or ASCII characters only
358
+ r = []
359
+ if mimeborder['subject']
360
+ # split the value of Subject by $borderline
361
+ v.split(borderline).each do |m|
362
+ # Insert value to the array if the string is MIME encoded text
363
+ r << m if Sisimai::MIME.is_mimeencoded(m)
364
+ end
365
+ else
366
+ # Subject line is not MIME encoded
367
+ r << v
368
+ end
369
+ v = Sisimai::MIME.mimedecode(r)
370
+ end
371
+ takenapart['subject'] = v
372
+ end
373
+ return takenapart
374
+ end
375
+
376
+ # Parse bounce mail with each MTA/MSP module
377
+ # @param [Hash] argvs Processing message entity.
378
+ # @param options argvs [Hash] mail Email message entity
379
+ # @param options mail [String] from From line of mbox
380
+ # @param options mail [Hash] header Email header data
381
+ # @param options mail [String] rfc822 Original message part
382
+ # @param options mail [Array] ds Delivery status list(parsed data)
383
+ # @param options argvs [String] body Email message body
384
+ # @param options argvs [Array] tryonfirst MTA/MSP module list to load on first
385
+ # @param options argvs [Array] tobeloaded User defined MTA module list
386
+ # @return [Hash] Parsed and structured bounce mails
387
+ def self.parse(argvs)
388
+ mesgentity = argvs['mail']
389
+ bodystring = argvs['body']
390
+ hookmethod = argvs['hook'] || nil
391
+ havecaught = nil
392
+ tryonfirst = argvs['tryonfirst'] || []
393
+ tobeloaded = argvs['tobeloaded'] || []
394
+ mailheader = mesgentity['header']
395
+
396
+ return nil unless argvs['mail']
397
+ return nil unless argvs['body']
398
+
399
+ # PRECHECK_EACH_HEADER:
400
+ # Set empty string if the value is nil
401
+ mailheader['from'] ||= ''
402
+ mailheader['subject'] ||= ''
403
+ mailheader['content-type'] ||= ''
404
+
405
+ # Decode BASE64 Encoded message body, rewrite.
406
+ mesgformat = (mailheader['content-type'] || '').downcase
407
+ ctencoding = (mailheader['content-transfer-encoding'] || '').downcase
408
+
409
+ if mesgformat =~ %r{text/(?:plain|html);?}
410
+ # Content-Type: text/plain; charset=UTF-8
411
+ if ctencoding == 'base64' || ctencoding == 'quoted-printable'
412
+ # Content-Transfer-Encoding: base64
413
+ # Content-Transfer-Encoding: quoted-printable
414
+ if ctencoding == 'base64'
415
+ # Content-Transfer-Encoding: base64
416
+ bodystring = Sisimai::MIME.base64d(bodystring)
417
+
418
+ else
419
+ # Content-Transfer-Encoding: quoted-printable
420
+ bodystring = Sisimai::MIME.qprintd(bodystring)
421
+ end
422
+ end
423
+
424
+ if mesgformat =~ %r|text/html;?|
425
+ # Content-Type: text/html;...
426
+ bodystring = Sisimai::String.to_plain(bodystring, true)
427
+ end
428
+
429
+ else
430
+ # NOT text/plain
431
+ if bodystring =~ ReEncoding[:'quoted-print']
432
+ # Content-Transfer-Encoding: quoted-printable
433
+ bodystring = Sisimai::MIME.qprintd(bodystring, mailheader)
434
+ end
435
+
436
+ if bodystring =~ ReEncoding[:'7bit-encoded'] &&
437
+ cv = bodystring.match(ReEncoding[:'some-iso2022'])
438
+ # Content-Transfer-Encoding: 7bit
439
+ # Content-Type: text/plain; charset=ISO-2022-JP
440
+ unless cv[1].downcase =~ /(?:us-ascii|utf[-]?8)/
441
+ bodystring = Sisimai::String.to_utf8(bodystring, cv[1])
442
+ end
443
+ end
444
+ end
445
+
446
+ # Call the hook method
447
+ if hookmethod.is_a? Proc
448
+ # Execute hook method
449
+ begin
450
+ p = {
451
+ 'datasrc' => 'email',
452
+ 'headers' => mailheader,
453
+ 'message' => bodystring,
454
+ 'bounces' => nil
455
+ }
456
+ havecaught = hookmethod.call(p)
457
+ rescue StandardError => ce
458
+ warn sprintf(" ***warning: Something is wrong in hook method :%s", ce.to_s)
459
+ end
460
+ end
461
+
462
+ # EXPAND_FORWARDED_MESSAGE:
463
+ # Check whether or not the message is a bounce mail.
464
+ # Pre-Process email body if it is a forwarded bounce message.
465
+ # Get the original text when the subject begins from 'fwd:' or 'fw:'
466
+ if mailheader['subject'] =~ /\A[ \t]*fwd?:/i
467
+ # Delete quoted strings, quote symbols(>)
468
+ bodystring = bodystring.gsub(/^[>]+[ ]/m, '')
469
+ bodystring = bodystring.gsub(/^[>]$/m, '')
470
+ end
471
+ bodystring += EndOfEmail
472
+ haveloaded = {}
473
+ scannedset = nil
474
+
475
+ catch :SCANNER do
476
+ loop do
477
+ # 1. Sisimai::ARF
478
+ # 2. User-Defined Module
479
+ # 3. MTA Module Candidates to be tried on first
480
+ # 4. Sisimai::MTA::* and MSP::*
481
+ # 5. Sisimai::RFC3464
482
+ # 6. Sisimai::RFC3834
483
+ #
484
+ if Sisimai::ARF.is_arf(mailheader)
485
+ # Feedback Loop message
486
+ scannedset = Sisimai::ARF.scan(mailheader, bodystring)
487
+ throw :SCANNER if scannedset
488
+ end
489
+
490
+ tobeloaded.each do |r|
491
+ # Call user defined MTA modules
492
+ next if haveloaded[r]
493
+ begin
494
+ require r.gsub('::', '/').downcase
495
+ rescue LoadError => ce
496
+ warn ' ***warning: Failed to load ' + ce.to_s
497
+ next
498
+ end
499
+ scannedset = Module.const_get(r).scan(mailheader, bodystring)
500
+ haveloaded[r] = true
501
+ throw :SCANNER if scannedset
502
+ end
503
+
504
+ tryonfirst.each do |r|
505
+ # Try MTA module candidates which are detected from MTA specific
506
+ # mail headers on first
507
+ next if haveloaded.key?(r)
508
+ begin
509
+ require r.gsub('::', '/').downcase
510
+ rescue LoadError => ce
511
+ warn ' ***warning: ' + ce.to_s
512
+ next
513
+ end
514
+ scannedset = Module.const_get(r).scan(mailheader, bodystring)
515
+ haveloaded[r] = true
516
+ throw :SCANNER if scannedset
517
+ end
518
+
519
+ DefaultSet.each do |r|
520
+ # MTA/MSP modules which does not have MTA specific header and did
521
+ # not match with any regular expressions of Subject header.
522
+ next if haveloaded.key?(r)
523
+ begin
524
+ scannedset = Module.const_get(r).scan(mailheader, bodystring)
525
+ haveloaded[r] = true
526
+ throw :SCANNER if scannedset
527
+ rescue => ce
528
+ warn ' ***warning: ' + ce.to_s
529
+ next
530
+ end
531
+
532
+ end
533
+
534
+ # When the all of Sisimai::MTA::* modules did not return bounce data,
535
+ # call Sisimai::RFC3464;
536
+ require 'sisimai/rfc3464'
537
+ scannedset = Sisimai::RFC3464.scan(mailheader, bodystring)
538
+ break if scannedset
539
+
540
+ # Try to parse the message as auto reply message defined in RFC3834
541
+ require 'sisimai/rfc3834'
542
+ scannedset = Sisimai::RFC3834.scan(mailheader, bodystring)
543
+ break if scannedset
544
+
545
+ # as of now, we have no sample email for coding this block
546
+ break
547
+ end
548
+ end
549
+
550
+ scannedset['catch'] = havecaught if scannedset
551
+ return scannedset
552
+ end
553
+
554
+ end
555
+ end
556
+ end