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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f3238e983863da3933d103f71358b6015485303c
4
- data.tar.gz: 4dadbefe26b2ad27ea767b5191c01dd217059b12
3
+ metadata.gz: 4aa57e1cf8c2d9527a687e5d7898a45c7614fd26
4
+ data.tar.gz: 2f1e6693b52cce3ea971bc63bc473929c7f1bd8f
5
5
  SHA512:
6
- metadata.gz: a1ee9bd67a47080a2a659ee67dca6fa49ce4bf1928b9b29feb39cdbe440f02f8a44f70bd15142e487d66b9a11aa77a45b6e61cda3a2ddee777dd6569749ee31b
7
- data.tar.gz: 3bd272ffc64c71f5e0c2a231835b99a99bca330fb71df5e825709690f9d972828b58adc48b781dc731a967ba497e1fcbe8de20c1d1acc57159934cd58a0c551e
6
+ metadata.gz: f6e3a09494458a23b719264207ff0a77c283578a4fcb4452d9f1446f6f2c2311639014033452d2a6bfb28ff4e482bd905d7f13b3faf47460cd17a6478190bb69
7
+ data.tar.gz: 6a6ccffbf4f81b16fc547a6cb0f129161bab038d4e3bc0c15512f9d816593191eda91f6f714b052a9a2493ad726af5872db74aa7feb9ce721e9d1ae9d9e003ee
data/.travis.yml CHANGED
@@ -4,6 +4,7 @@ rvm:
4
4
  - 2.2.2
5
5
  - 2.2.4
6
6
  - 2.3.0
7
+ - 2.4.0
7
8
  - jruby-9.0.4.0
8
9
  - jruby-9.0.5.0
9
10
  before_install:
data/ANALYTICAL-PRECISION CHANGED
@@ -16,9 +16,9 @@ MTA::MailMarshalSMTP .... 0/0003 0.0000 Trustwave Secure Email Gateway
16
16
  MTA::McAfee ............. 0/0010 0.0000 McAfee Email Appliance
17
17
  MTA::MessagingServer .... 19/0022 0.8636 Oracle Communications Messaging Server
18
18
  MTA::Notes .............. 0/0012 0.0000 Lotus Notes
19
- MTA::OpenSMTPD .......... 5/0023 0.2174 OpenSMTPD
19
+ MTA::OpenSMTPD .......... 6/0024 0.2500 OpenSMTPD
20
20
  MTA::Postfix ............ 171/0189 0.9048 Postfix
21
- MTA::Sendmail ........... 331/0253 1.0000 V8Sendmail: /usr/sbin/sendmail
21
+ MTA::Sendmail ........... 332/0255 1.0000 V8Sendmail: /usr/sbin/sendmail
22
22
  MTA::SurfControl ........ 6/0008 0.7500 WebSense SurfControl
23
23
  MTA::V5sendmail ......... 0/0386 0.0000 Sendmail version 5
24
24
  MTA::X1 ................. 0/0007 0.0000 Unknown MTA #1
@@ -46,12 +46,14 @@ MSP::US::Office365 ...... 8/0011 0.7273 Microsoft Office 365: http://office
46
46
  MSP::US::Outlook ........ 19/0021 0.9048 Microsoft Outlook.com: https://www.outlook.com/
47
47
  MSP::US::ReceivingSES ... 0/0007 0.0000 Amazon SES(Receiving): http://aws.amazon.com/ses/
48
48
  MSP::US::SendGrid ....... 7/0012 0.5833 SendGrid: http://sendgrid.com/
49
- MSP::US::Verizon ........ 3/0003 1.0000 Verizon Wireless: http://www.verizonwireless.com
49
+ MSP::US::Verizon ........ 4/0004 1.0000 Verizon Wireless: http://www.verizonwireless.com
50
50
  MSP::US::Yahoo .......... 0/0009 0.0000 Yahoo! MAIL: https://www.yahoo.com
51
51
  MSP::US::Zoho ........... 0/0011 0.0000 Zoho Mail: https://www.zoho.com
52
+ CED::US::AmazonSES ...... 0/0009 0.0000 Amazon SES(JSON): http://aws.amazon.com/ses/
53
+ CED::US::SendGrid ....... 0/0000 1.0000 SendGrid(JSON): http://sendgrid.com/
52
54
  ARF ..................... 9/0050 0.1800 Abuse Feedback Reporting Format
53
- RFC3464 ................. 136/0277 0.4910 Fallback Module for MTAs
55
+ RFC3464 ................. 136/0278 0.4892 Fallback Module for MTAs
54
56
  RFC3834 ................. 0/0006 0.0000 Detector for auto replied message
55
57
  -------------------------------------------------------------------------------
56
- bounceHammer 2.7.13p3 1201/2178 0.5514
57
- Sisimai 4.19.0 2178/2178 1.0000
58
+ bounceHammer 2.7.13p3 1204/2192 0.5493
59
+ Sisimai 4.20.0 2192/2192 1.0000
data/Changes CHANGED
@@ -1,5 +1,20 @@
1
1
  Revision history for Ruby version of Sisimai
2
2
 
3
+ 4.20.0 Sat, 31 Dec 2016 13:36:22 +0900 (JST)
4
+ - Experimental implementation: New MTA modules for 2 Cloud Email Deliveries,
5
+ Sisimai::CED::US::AmazonSES and Sisimai::CED::US::SendGrid. These modules
6
+ can parse JSON formatted bounce objects and can convert to Sisimai::Data
7
+ object.
8
+ - Format of "smtpagent" in the parsed result has been changed. It includes
9
+ the category name of MTA/MSP modules like "MTA::Sendmail", "MTA::Exim",
10
+ and "MSP::US::SendGrid".
11
+ - The Domain part of dummy email address defined in Sisimai::Address module
12
+ has been changed from "dummy-domain.invalid" to "libsisimai.org.invalid".
13
+ - Sisimai::SMTP.is_softbounce() method has been deleted.
14
+ - Improved code for avoid "Invalid byte sequence in UTF-8 (ArgumentError)"
15
+ error in Sisimai::String.to_plain method reported from M.R.
16
+ - Sisimai works on Ruby 2.4.0.
17
+
3
18
  4.19.0 Tue, 18 Oct 2016 14:19:10 +0900 (JST)
4
19
  - Implement a callback feature at Sisimai.make and Sisimai.dump methods.
5
20
  More imformation about the feature are available at the following pages:
data/Developers.mk CHANGED
@@ -9,7 +9,7 @@
9
9
  SHELL := /bin/sh
10
10
  HERE := $(shell pwd)
11
11
  NAME := Sisimai
12
- RUBY := ruby
12
+ RUBY ?= ruby
13
13
  MKDIR := mkdir -p
14
14
  LS := ls -1
15
15
  CP := cp
@@ -21,6 +21,7 @@ PERL_SISIMAI := p5-Sisimai
21
21
  PRECISIONTAB := ANALYTICAL-PRECISION
22
22
  BENCHMARKDIR := tmp/benchmark
23
23
  PARSERLOGDIR := var/log
24
+ CEDMODULEDIR := lib/sisimai/ced
24
25
  MTAMODULEDIR := lib/sisimai/mta
25
26
  MSPMODULEDIR := lib/sisimai/msp
26
27
  MTARELATIVES := ARF rfc3464 rfc3834
@@ -28,11 +29,13 @@ EMAIL_PARSER := sbin/emparser
28
29
  BENCHMARKEMP := sbin/mp
29
30
  VELOCITYTEST := tmp/emails-for-velocity-measurement
30
31
  BENCHMARKSET := tmp/sample
32
+
31
33
  SET_OF_EMAIL := set-of-emails
32
34
  PRIVATEMAILS := $(SET_OF_EMAIL)/private
33
35
  PUBLICEMAILS := $(SET_OF_EMAIL)/maildir/bsd
34
36
  DOSFORMATSET := $(SET_OF_EMAIL)/maildir/dos
35
37
  MACFORMATSET := $(SET_OF_EMAIL)/maildir/mac
38
+
36
39
  INDEX_LENGTH := 24
37
40
  DESCR_LENGTH := 48
38
41
  BH_CAN_PARSE := courier exim messagingserver postfix sendmail surfcontrol x5 \
@@ -74,6 +77,15 @@ sample:
74
77
  $(CP) $(PRIVATEMAILS)/$$DIR-$$MSP/* $(BENCHMARKSET)/$$DIR-$$MSP/ ;\
75
78
  done ;\
76
79
  done
80
+ for c in `$(LS) ./$(CEDMODULEDIR)`; do \
81
+ for v in `$(LS) ./$(CEDMODULEDIR)/$$c/*.rb`; do \
82
+ DIR=`echo $$c | tr '[A-Z]' '[a-z]' | tr -d '/'` ;\
83
+ CED="`echo $$v | cut -d/ -f6 | tr '[A-Z]' '[a-z]' | sed 's/.rb//g'`" ;\
84
+ $(MKDIR) $(BENCHMARKSET)/$$DIR-$$CED ;\
85
+ $(CP) $(PUBLICEMAILS)/$$DIR-$$CED-*.eml $(BENCHMARKSET)/$$DIR-$$CED/ ;\
86
+ $(CP) $(PRIVATEMAILS)/$$DIR-$$CED/* $(BENCHMARKSET)/$$DIR-$$CED/ ;\
87
+ done ;\
88
+ done
77
89
  for v in arf rfc3464 rfc3834; do \
78
90
  $(MKDIR) $(BENCHMARKSET)/$$v ;\
79
91
  $(CP) $(PUBLICEMAILS)/$$v*.eml $(BENCHMARKSET)/$$v/ ;\
data/Makefile CHANGED
@@ -8,9 +8,9 @@
8
8
  SHELL := /bin/sh
9
9
  TIME := $(shell date '+%s')
10
10
  NAME := sisimai
11
- RUBY := ruby
12
- JRUBY := /usr/local/jr
13
- RAKE := rake
11
+ RUBY ?= ruby
12
+ JRUBY ?= /usr/local/jr
13
+ RAKE ?= rake
14
14
  MKDIR := mkdir -p
15
15
  RSPEC := rspec -Ilib -f progress
16
16
  CP := cp
data/README-JA.md CHANGED
@@ -97,7 +97,7 @@ v = Sisimai.make('/path/to/mbox') # or path to Maildir/
97
97
  # option to make() method like the following:
98
98
  v = Sisimai.make('/path/to/mbox', delivered: true)
99
99
 
100
- unless v.void
100
+ if v.is_a? Array
101
101
  v.each do |e|
102
102
  puts e.class # Sisimai::Data
103
103
  puts e.recipient.class # Sisimai::Address
@@ -123,9 +123,28 @@ puts Sisimai.dump('/path/to/mbox') # or path to Maildir/
123
123
  puts Sisimai.dump('/path/to/mbox', delivered: true)
124
124
  ```
125
125
 
126
- ```json
127
- [{"recipient": "kijitora@example.jp", "addresser": "shironeko@1jo.example.org", "feedbacktype": "", "action": "failed", "subject": "Nyaaaaan", "smtpcommand": "DATA", "diagnosticcode": "550 Unknown user kijitora@example.jp", "listid": "", "destination": "example.jp", "smtpagent": "Courier", "lhost": "1jo.example.org", "deliverystatus": "5.0.0", "timestamp": 1291954879, "messageid": "201012100421.oBA4LJFU042012@1jo.example.org", "diagnostictype": "SMTP", "timezoneoffset": "+0900", "reason": "filtered", "token": "ce999a4c869e3f5e4d8a77b2e310b23960fb32ab", "alias": "", "senderdomain": "1jo.example.org", "rhost": "mfsmax.example.jp"}, {"diagnostictype": "SMTP", "timezoneoffset": "+0900", "reason": "userunknown", "timestamp": 1381900535, "messageid": "E1C50F1B-1C83-4820-BC36-AC6FBFBE8568@example.org", "token": "9fe754876e9133aae5d20f0fd8dd7f05b4e9d9f0", "alias": "", "senderdomain": "example.org", "rhost": "mx.bouncehammer.jp", "action": "failed", "addresser": "kijitora@example.org", "recipient": "userunknown@bouncehammer.jp", "feedbacktype": "", "smtpcommand": "DATA", "subject": "バウンスメールのテスト(日本語)", "destination": "bouncehammer.jp", "listid": "", "diagnosticcode": "550 5.1.1 <userunknown@bouncehammer.jp>... User Unknown", "deliverystatus": "5.1.1", "lhost": "p0000-ipbfpfx00kyoto.kyoto.example.co.jp", "smtpagent": "Sendmail"}]
126
+ バウンスオブジェクト(JSON)を読む
127
+ --------------------------------
128
+ メール配信クラウドからAPIで取得したバウンスオブジェクト(JSON)を読んで解析する
129
+ 場合は、次のようなコードを書いてください。この機能はSisimai v4.20.0で実装され
130
+ ました。
131
+
132
+ ```ruby
133
+ #! /usr/bin/env ruby
134
+ require 'json'
135
+ require 'sisimai'
136
+
137
+ j = JSON.load('{"notificationType"=>"Bounce", "bounce"=>{"...') # JSON String
138
+ v = Sisimai.make(j, input: 'json')
139
+
140
+ if v.is_a? Array
141
+ v.each do |e|
142
+ ...
143
+ end
144
+ end
128
145
  ```
146
+ 現時点ではAmazon SESとSendGridのみをサポートしています。
147
+
129
148
 
130
149
  コールバック機能
131
150
  ----------------
@@ -163,6 +182,15 @@ puts data[0].catch['x-mailer'] # Apple Mail (2.1283)
163
182
  % ruby -rsisimai -e 'puts Sisimai.dump($*.shift)' /path/to/mbox
164
183
  ```
165
184
 
185
+ 解析結果の例(JSON)
186
+ ------------------
187
+ ```json
188
+ [{"recipient": "kijitora@example.jp", "addresser": "shironeko@1jo.example.org", "feedbacktype": "", "action": "failed", "subject": "Nyaaaaan", "smtpcommand": "DATA", "diagnosticcode": "550 Unknown user kijitora@example.jp", "listid": "", "destination": "example.jp", "smtpagent": "Courier", "lhost": "1jo.example.org", "deliverystatus": "5.0.0", "timestamp": 1291954879, "messageid": "201012100421.oBA4LJFU042012@1jo.example.org", "diagnostictype": "SMTP", "timezoneoffset": "+0900", "reason": "filtered", "token": "ce999a4c869e3f5e4d8a77b2e310b23960fb32ab", "alias": "", "senderdomain": "1jo.example.org", "rhost": "mfsmax.example.jp"}, {"diagnostictype": "SMTP", "timezoneoffset": "+0900", "reason": "userunknown", "timestamp": 1381900535, "messageid": "E1C50F1B-1C83-4820-BC36-AC6FBFBE8568@example.org", "token": "9fe754876e9133aae5d20f0fd8dd7f05b4e9d9f0", "alias": "", "senderdomain": "example.org", "rhost": "mx.bouncehammer.jp", "action": "failed", "addresser": "kijitora@example.org", "recipient": "userunknown@bouncehammer.jp", "feedbacktype": "", "smtpcommand": "DATA", "subject": "バウンスメールのテスト(日本語)", "destination": "bouncehammer.jp", "listid": "", "diagnosticcode": "550 5.1.1 <userunknown@bouncehammer.jp>... User Unknown", "deliverystatus": "5.1.1", "lhost": "p0000-ipbfpfx00kyoto.kyoto.example.co.jp", "smtpagent": "Sendmail"}]
189
+ ```
190
+
191
+ シシマイの仕様
192
+ ==============
193
+
166
194
  Perl版Sisimaiとの違い
167
195
  ---------------------
168
196
  公開中のPerl版Sisimai(p5-Sisimai)とRuby版Sisimai(rb-Sisimai)は下記のような違いが
@@ -171,14 +199,14 @@ Perl版Sisimaiとの違い
171
199
 
172
200
  | 機能 | Ruby version | Perl version |
173
201
  |---------------------------------------------|----------------|---------------|
174
- | 動作環境 | Ruby 2.1-2.3 | Perl 5.10 - |
202
+ | 動作環境 | Ruby 2.1 - 2.4 | Perl 5.10 - |
175
203
  | | JRuby 9.0.4.0- | |
176
204
  | 解析精度の割合(2000通のメール)[1] | 1.00 | 1.00 |
177
205
  | メール解析速度(1000通のメール) | 3.30秒 | 2.33秒 |
178
206
  | インストール方法 | gem install | cpanm |
179
207
  | 依存モジュール数(コアモジュールを除く) | 1モジュール | 2モジュール |
180
- | LOC:ソースコードの行数 | 11700行 | 8600行 |
181
- | テスト件数(spec/,t/,xt/ディレクトリ) | 103800件 | 184100件 |
208
+ | LOC:ソースコードの行数 | 12200行 | 8800行 |
209
+ | テスト件数(spec/,t/,xt/ディレクトリ) | 106600件 | 188000件 |
182
210
  | ライセンス | 二条項BSD | 二条項BSD |
183
211
  | 開発会社によるサポート契約 | 準備中 | 提供中 |
184
212
 
@@ -292,6 +320,7 @@ Sisimaiは下記のエラー27種を検出します。バウンス理由につ
292
320
  | action | Action:ヘッダの値 |
293
321
  | addresser | 送信者のアドレス |
294
322
  | alias | 受信者アドレスのエイリアス |
323
+ | catch | 引数に指定したフックメソッドが返すデータ |
295
324
  | destination | "recipient"のドメイン部分 |
296
325
  | deliverystatus | 配信状態(DSN)の値(例: 5.1.1, 4.4.7) |
297
326
  | diagnosticcode | エラーメッセージ |
data/README.md CHANGED
@@ -24,6 +24,7 @@ Key Features
24
24
  * 2 times higher than bounceHammer
25
25
  * Support 22 known MTAs and 5 unknown MTAs
26
26
  * Support 21 major MSPs(Mail Service Providers)
27
+ * Support 2 major Cloud Email Delivery Services(JSON format)
27
28
  * Support Feedback Loop Message(ARF)
28
29
  * Can detect 27 error reasons
29
30
 
@@ -46,10 +47,10 @@ Install
46
47
 
47
48
  ```shell
48
49
  % sudo gem install sisimai
49
- Fetching: sisimai-4.16.0.gem (100%)
50
- Successfully installed sisimai-4.16.0
51
- Parsing documentation for sisimai-4.16.0
52
- Installing ri documentation for sisimai-4.16.0
50
+ Fetching: sisimai-4.20.0.gem (100%)
51
+ Successfully installed sisimai-4.20.0
52
+ Parsing documentation for sisimai-4.20.0
53
+ Installing ri documentation for sisimai-4.20.0
53
54
  Done installing documentation for sisimai after 6 seconds
54
55
  1 gem installed
55
56
  ```
@@ -62,22 +63,11 @@ Done installing documentation for sisimai after 6 seconds
62
63
  % cd ./rb-Sisimai
63
64
  % sudo make depend install-from-local
64
65
  gem install bundle rake rspec coveralls
65
- Successfully installed bundle-0.0.1
66
- Parsing documentation for bundle-0.0.1
67
- Done installing documentation for bundle after 0 seconds
68
- Successfully installed rake-10.5.0
69
- Parsing documentation for rake-10.5.0
70
- Done installing documentation for rake after 1 seconds
71
- Successfully installed rspec-3.4.0
72
- Parsing documentation for rspec-3.4.0
73
- Done installing documentation for rspec after 0 seconds
74
- Successfully installed coveralls-0.8.10
75
- Parsing documentation for coveralls-0.8.10
76
- Done installing documentation for coveralls after 0 seconds
66
+ ...
77
67
  4 gems installed
78
68
  bundle exec rake install
79
- sisimai 4.14.2 built to pkg/sisimai-4.16.0.gem.
80
- sisimai (4.14.2) installed.
69
+ sisimai 4.20.0 built to pkg/sisimai-4.20.0.gem.
70
+ sisimai (4.20.0) installed.
81
71
  ```
82
72
 
83
73
  Usage
@@ -96,7 +86,7 @@ v = Sisimai.make('/path/to/mbox') # or path to Maildir/
96
86
  # option to make() method like the following:
97
87
  v = Sisimai.make('/path/to/mbox', delivered: true)
98
88
 
99
- unless v.void
89
+ if v.is_a? Array
100
90
  v.each do |e|
101
91
  puts e.class # Sisimai::Data
102
92
  puts e.recipient.class # Sisimai::Address
@@ -122,9 +112,27 @@ puts Sisimai.dump('/path/to/mbox') # or path to Maildir/
122
112
  puts Sisimai.dump('/path/to/mbox', delivered: true)
123
113
  ```
124
114
 
125
- ```json
126
- [{"recipient": "kijitora@example.jp", "addresser": "shironeko@1jo.example.org", "feedbacktype": "", "action": "failed", "subject": "Nyaaaaan", "smtpcommand": "DATA", "diagnosticcode": "550 Unknown user kijitora@example.jp", "listid": "", "destination": "example.jp", "smtpagent": "Courier", "lhost": "1jo.example.org", "deliverystatus": "5.0.0", "timestamp": 1291954879, "messageid": "201012100421.oBA4LJFU042012@1jo.example.org", "diagnostictype": "SMTP", "timezoneoffset": "+0900", "reason": "filtered", "token": "ce999a4c869e3f5e4d8a77b2e310b23960fb32ab", "alias": "", "senderdomain": "1jo.example.org", "rhost": "mfsmax.example.jp"}, {"diagnostictype": "SMTP", "timezoneoffset": "+0900", "reason": "userunknown", "timestamp": 1381900535, "messageid": "E1C50F1B-1C83-4820-BC36-AC6FBFBE8568@example.org", "token": "9fe754876e9133aae5d20f0fd8dd7f05b4e9d9f0", "alias": "", "senderdomain": "example.org", "rhost": "mx.bouncehammer.jp", "action": "failed", "addresser": "kijitora@example.org", "recipient": "userunknown@bouncehammer.jp", "feedbacktype": "", "smtpcommand": "DATA", "subject": "バウンスメールのテスト(日本語)", "destination": "bouncehammer.jp", "listid": "", "diagnosticcode": "550 5.1.1 <userunknown@bouncehammer.jp>... User Unknown", "deliverystatus": "5.1.1", "lhost": "p0000-ipbfpfx00kyoto.kyoto.example.co.jp", "smtpagent": "Sendmail"}]
115
+ Read bounce object(JSON)
116
+ ------------------------
117
+ The way to read a bounce object retrived from Cloud Email Services as JSON using
118
+ their API is the following code. This feature is available at Sisimai 4.20.0 or
119
+ later.
120
+
121
+ ```ruby
122
+ #! /usr/bin/env ruby
123
+ require 'json'
124
+ require 'sisimai'
125
+
126
+ j = JSON.load('{"notificationType"=>"Bounce", "bounce"=>{"...') # JSON String
127
+ v = Sisimai.make(j, input: 'json')
128
+
129
+ if v.is_a? Array
130
+ v.each do |e|
131
+ ...
132
+ end
133
+ end
127
134
  ```
135
+ As of present, Only Amazon SES and SendGrid are supported.
128
136
 
129
137
  Callback Feature
130
138
  ----------------
@@ -154,7 +162,6 @@ More information about the callback feature is available at
154
162
  [Sisimai | How To Parse - Callback](http://libsisimai.org/en/usage/#callback)
155
163
  Page.
156
164
 
157
-
158
165
  One-Liner
159
166
  ---------
160
167
 
@@ -162,6 +169,15 @@ One-Liner
162
169
  % ruby -rsisimai -e 'puts Sisimai.dump($*.shift)' /path/to/mbox
163
170
  ```
164
171
 
172
+ Parsed results as JSON
173
+ ----------------------
174
+ ```json
175
+ [{"recipient": "kijitora@example.jp", "addresser": "shironeko@1jo.example.org", "feedbacktype": "", "action": "failed", "subject": "Nyaaaaan", "smtpcommand": "DATA", "diagnosticcode": "550 Unknown user kijitora@example.jp", "listid": "", "destination": "example.jp", "smtpagent": "Courier", "lhost": "1jo.example.org", "deliverystatus": "5.0.0", "timestamp": 1291954879, "messageid": "201012100421.oBA4LJFU042012@1jo.example.org", "diagnostictype": "SMTP", "timezoneoffset": "+0900", "reason": "filtered", "token": "ce999a4c869e3f5e4d8a77b2e310b23960fb32ab", "alias": "", "senderdomain": "1jo.example.org", "rhost": "mfsmax.example.jp"}, {"diagnostictype": "SMTP", "timezoneoffset": "+0900", "reason": "userunknown", "timestamp": 1381900535, "messageid": "E1C50F1B-1C83-4820-BC36-AC6FBFBE8568@example.org", "token": "9fe754876e9133aae5d20f0fd8dd7f05b4e9d9f0", "alias": "", "senderdomain": "example.org", "rhost": "mx.bouncehammer.jp", "action": "failed", "addresser": "kijitora@example.org", "recipient": "userunknown@bouncehammer.jp", "feedbacktype": "", "smtpcommand": "DATA", "subject": "バウンスメールのテスト(日本語)", "destination": "bouncehammer.jp", "listid": "", "diagnosticcode": "550 5.1.1 <userunknown@bouncehammer.jp>... User Unknown", "deliverystatus": "5.1.1", "lhost": "p0000-ipbfpfx00kyoto.kyoto.example.co.jp", "smtpagent": "Sendmail"}]
176
+ ```
177
+
178
+ Sisimai Specification
179
+ =====================
180
+
165
181
  Differences between Perl version and Ruby version
166
182
  -------------------------------------------------
167
183
  The following table show the differences between Perl version of Sisimai
@@ -171,14 +187,14 @@ and bounceHammer are available at
171
187
 
172
188
  | Features | Ruby version | Perl version |
173
189
  |---------------------------------------------|----------------|---------------|
174
- | System requirements | Ruby 2.1-2.3 | Perl 5.10 - |
190
+ | System requirements | Ruby 2.1 - 2.4 | Perl 5.10 - |
175
191
  | | JRuby 9.0.4.0- | |
176
192
  | Analytical precision ratio(2000 emails)[1] | 1.00 | 1.00 |
177
193
  | The speed of parsing email(1000 emails) | 3.30s | 2.33s |
178
194
  | How to install | gem install | cpanm |
179
195
  | Dependencies (Except core modules) | 1 module | 2 modules |
180
- | LOC:Source lines of code | 11750 lines | 8600 lines |
181
- | The number of tests(spec/,t/,xt/) directory | 103800 tests | 184100 tests |
196
+ | LOC:Source lines of code | 12200 lines | 8800 lines |
197
+ | The number of tests(spec/,t/,xt/) directory | 106400 tests | 188000 tests |
182
198
  | License | BSD 2-Clause | BSD 2-Clause |
183
199
  | Support Contract provided by Developer | Coming soon | Available |
184
200
 
@@ -240,6 +256,8 @@ details about these modules are available at
240
256
  | MSP::US::Verizon | Verizon Wireless: http://www.verizonwireless.com |
241
257
  | MSP::US::Yahoo | Yahoo! MAIL: https://www.yahoo.com |
242
258
  | MSP::US::Zoho | Zoho Mail: https://www.zoho.com |
259
+ | CED::US::AmazonSES | AmazonSES(JSON): http://aws.amazon.com/ses/ |
260
+ | CED::US::SendGrid | SendGrid(JSON): http://sendgrid.com/ |
243
261
  | ARF | Abuse Feedback Reporting Format |
244
262
  | RFC3464 | Fallback Module for MTAs |
245
263
  | RFC3834 | Detector for auto replied message |
@@ -293,6 +311,7 @@ More details about data structure are available at available at
293
311
  | action | The value of Action: header |
294
312
  | addresser | The sender's email address (From:) |
295
313
  | alias | Alias of the recipient |
314
+ | catch | Data returned from a hook mehotd |
296
315
  | destination | The domain part of the "recipinet" |
297
316
  | deliverystatus | Delivery Status(DSN), ex) 5.1.1, 4.4.7 |
298
317
  | diagnosticcode | Error message |
data/Repository.mk CHANGED
@@ -7,7 +7,7 @@
7
7
  # |_| |___/
8
8
  # -----------------------------------------------------------------------------
9
9
  SHELL := /bin/sh
10
- GIT := /usr/bin/git
10
+ GIT ?= git
11
11
  CP := cp
12
12
  B = master
13
13
  V = neko
data/lib/sisimai.rb CHANGED
@@ -13,49 +13,109 @@ module Sisimai
13
13
  def libname(); return 'Sisimai'; end
14
14
 
15
15
  # Wrapper method for parsing mailbox/maidir
16
- # @param [String] path Path to mbox or Maildir/
17
- # @param [Hash] argvs Parser options(delivered=false)
18
- # @options argvs [Boolean] delivered true: Include "delivered" reason
19
- # @options argvs [Lambda] hook Lambda object to be called back
16
+ # @param [String] argv0 Path to mbox or Maildir/
17
+ # @param [Hash] argv0 or Hash (decoded JSON)
18
+ # @param [IO] argv0 or STDIN object
19
+ # @param [Hash] argv1 Parser options(delivered=false)
20
+ # @options argv1 [Boolean] delivered true: Include "delivered" reason
21
+ # @options argv1 [Lambda] hook Lambda object to be called back
22
+ # @options argv1 [String] input Input data format: 'email', 'json'
20
23
  # @return [Array] Parsed objects
21
24
  # @return [nil] nil if the argument was wrong or an empty array
22
- def make(path, **argvs)
23
- return nil unless path
25
+ def make(argv0, **argv1)
26
+ return nil unless argv0
24
27
 
25
- require 'sisimai/mail'
26
- mail = Sisimai::Mail.new(path)
27
- list = []
28
-
29
- return nil unless mail
30
28
  require 'sisimai/data'
31
29
  require 'sisimai/message'
32
30
 
33
- methodargv = { :delivered => argvs[:delivered] || false }
34
- hookmethod = argvs[:hook] || nil
31
+ input = argv1[:input] || nil
32
+ rtype = nil
33
+
34
+ unless input
35
+ # "input" did not specified, try to detect automatically.
36
+ rtype = argv0.class.to_s
37
+ if rtype == 'String'
38
+ # The argument may be a path to email
39
+ input = 'email'
40
+
41
+ elsif rtype =~ /\A(?:Array|Hash)\z/
42
+ # The argument may be a decoded JSON object
43
+ input = 'json'
44
+ end
45
+ end
35
46
 
36
- while r = mail.read do
37
- # Read and parse each mail file
38
- mesg = Sisimai::Message.new(data: r, hook: hookmethod)
39
- next if mesg.void
40
- data = Sisimai::Data.make(data: mesg, delivered: methodargv)
41
- next unless data
42
- list.concat(data) if data.size > 0
47
+ methodargv = {}
48
+ delivered1 = argv1[:delivered] || false
49
+ hookmethod = argv1[:hook] || nil
50
+ bouncedata = []
51
+
52
+ if input == 'email'
53
+ # Path to mailbox or Maildir/, or STDIN: 'input' => 'email'
54
+ require 'sisimai/mail'
55
+ mail = Sisimai::Mail.new(argv0)
56
+ return nil unless mail
57
+
58
+ while r = mail.read do
59
+ # Read and parse each mail file
60
+ methodargv = { data: r, hook: hookmethod, input: 'email' }
61
+ mesg = Sisimai::Message.new(methodargv)
62
+ next if mesg.void
63
+
64
+ methodargv = { data: mesg, hook: hookmethod, input: 'email', delivered: delivered1 }
65
+ data = Sisimai::Data.make(methodargv)
66
+ next unless data
67
+ bouncedata.concat(data) if data.size > 0
68
+ end
69
+
70
+ elsif input == 'json'
71
+ # Decoded JSON object: 'input' => 'json'
72
+ type = argv0.class.to_s
73
+ list = []
74
+
75
+ if type == 'Array'
76
+ # [ {...}, {...}, ... ]
77
+ argv0.each do |e|
78
+ next unless e.class.to_s == 'Hash'
79
+ list << e
80
+ end
81
+ else
82
+ list << argv0
83
+ end
84
+
85
+ list.each do |e|
86
+ methodargv = { data: e, hook: hookmethod, input: 'json' }
87
+ mesg = Sisimai::Message.new(methodargv)
88
+ next if mesg.void
89
+
90
+ methodargv = { data: mesg, hook: hookmethod, input: 'json', delivered: delivered1 }
91
+ data = Sisimai::Data.make(methodargv)
92
+
93
+ next unless data
94
+ bouncedata.concat(data) if data.size > 0
95
+ end
96
+
97
+ else
98
+ # The value of "input" neither "email" nor "json"
99
+ fail ' ***error: invalid value of "input"'
43
100
  end
44
101
 
45
- return nil if list.size == 0
46
- return list
102
+ return nil if bouncedata.size == 0
103
+ return bouncedata
47
104
  end
48
105
 
49
106
  # Wrapper method to parse mailbox/Maildir and dump as JSON
50
- # @param [String] path Path to mbox or Maildir/
51
- # @param [Hash] argvs Parser options
52
- # @options argvs [Integer] delivered true: Include "delivered" reason
53
- # @options argvs [Lambda] hook Lambda object to be called back
107
+ # @param [String] argv0 Path to mbox or Maildir/
108
+ # @param [Hash] argv0 or Hash (decoded JSON)
109
+ # @param [IO] argv0 or STDIN object
110
+ # @param [Hash] argv1 Parser options
111
+ # @options argv1 [Integer] delivered true: Include "delivered" reason
112
+ # @options argv1 [Lambda] hook Lambda object to be called back
113
+ # @options argv1 [String] input Input data format: 'email', 'json'
54
114
  # @return [String] Parsed data as JSON text
55
- def dump(path, **argvs)
56
- return nil unless path
115
+ def dump(argv0, **argv1)
116
+ return nil unless argv0
57
117
 
58
- nyaan = Sisimai.make(path, argvs) || []
118
+ nyaan = Sisimai.make(argv0, argv1) || []
59
119
  if RUBY_PLATFORM =~ /java/
60
120
  # java-based ruby environment like JRuby.
61
121
  require 'jrjackson'
@@ -70,15 +130,15 @@ module Sisimai
70
130
  # Parser engine list (MTA/MSP modules)
71
131
  # @return [Hash] Parser engine table
72
132
  def engine
73
- names = %w|MTA MSP ARF RFC3464 RFC3834|
133
+ names = %w|MTA MSP CED ARF RFC3464 RFC3834|
74
134
  table = {}
75
135
 
76
136
  names.each do |e|
77
137
  r = 'Sisimai::' + e
78
138
  require r.gsub('::', '/').downcase
79
139
 
80
- if e == 'MTA' || e == 'MSP'
81
- # Sisimai::MTA or Sisimai::MSP
140
+ if e == 'MTA' || e == 'MSP' || e == 'CED'
141
+ # Sisimai::MTA or Sisimai::MSP or Sisimai::CED
82
142
  Module.const_get(r).send(:index).each do |ee|
83
143
  # Load and get the value of "description" from each module
84
144
  rr = sprintf('Sisimai::%s::%s', e, ee)