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