sisimai 4.25.5 → 4.25.6

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 (624) hide show
  1. checksums.yaml +4 -4
  2. data/ANALYTICAL-PRECISION +60 -56
  3. data/Benchmarks.mk +4 -2
  4. data/ChangeLog.md +78 -0
  5. data/README-JA.md +9 -9
  6. data/README.md +10 -9
  7. data/lib/sisimai.rb +5 -11
  8. data/lib/sisimai/arf.rb +17 -23
  9. data/lib/sisimai/data.rb +4 -4
  10. data/lib/sisimai/lhost.rb +25 -33
  11. data/lib/sisimai/lhost/activehunter.rb +6 -21
  12. data/lib/sisimai/lhost/amavis.rb +78 -20
  13. data/lib/sisimai/lhost/amazonses.rb +10 -24
  14. data/lib/sisimai/lhost/amazonworkmail.rb +8 -24
  15. data/lib/sisimai/lhost/aol.rb +15 -29
  16. data/lib/sisimai/lhost/apachejames.rb +6 -21
  17. data/lib/sisimai/lhost/barracuda.rb +94 -0
  18. data/lib/sisimai/lhost/bigfoot.rb +5 -17
  19. data/lib/sisimai/lhost/biglobe.rb +5 -16
  20. data/lib/sisimai/lhost/courier.rb +6 -19
  21. data/lib/sisimai/lhost/domino.rb +5 -17
  22. data/lib/sisimai/lhost/einsundeins.rb +5 -16
  23. data/lib/sisimai/lhost/exchange2003.rb +10 -19
  24. data/lib/sisimai/lhost/exchange2007.rb +16 -19
  25. data/lib/sisimai/lhost/exim.rb +9 -25
  26. data/lib/sisimai/lhost/ezweb.rb +5 -17
  27. data/lib/sisimai/lhost/facebook.rb +5 -16
  28. data/lib/sisimai/lhost/fml.rb +6 -18
  29. data/lib/sisimai/lhost/{google.rb → gmail.rb} +9 -21
  30. data/lib/sisimai/lhost/gmx.rb +9 -23
  31. data/lib/sisimai/lhost/googlegroups.rb +77 -0
  32. data/lib/sisimai/lhost/gsuite.rb +5 -17
  33. data/lib/sisimai/lhost/imailserver.rb +12 -24
  34. data/lib/sisimai/lhost/interscanmss.rb +11 -22
  35. data/lib/sisimai/lhost/kddi.rb +5 -16
  36. data/lib/sisimai/lhost/mailfoundry.rb +6 -21
  37. data/lib/sisimai/lhost/mailmarshalsmtp.rb +6 -21
  38. data/lib/sisimai/lhost/mailru.rb +5 -16
  39. data/lib/sisimai/lhost/mcafee.rb +6 -18
  40. data/lib/sisimai/lhost/messagelabs.rb +10 -22
  41. data/lib/sisimai/lhost/messagingserver.rb +5 -18
  42. data/lib/sisimai/lhost/mfilter.rb +7 -19
  43. data/lib/sisimai/lhost/mxlogic.rb +8 -21
  44. data/lib/sisimai/lhost/notes.rb +6 -18
  45. data/lib/sisimai/lhost/office365.rb +24 -34
  46. data/lib/sisimai/lhost/opensmtpd.rb +5 -19
  47. data/lib/sisimai/lhost/outlook.rb +7 -21
  48. data/lib/sisimai/lhost/postfix.rb +6 -17
  49. data/lib/sisimai/lhost/powermta.rb +120 -0
  50. data/lib/sisimai/lhost/qmail.rb +6 -17
  51. data/lib/sisimai/lhost/receivingses.rb +7 -22
  52. data/lib/sisimai/lhost/sendgrid.rb +7 -20
  53. data/lib/sisimai/lhost/sendmail.rb +6 -22
  54. data/lib/sisimai/lhost/surfcontrol.rb +9 -25
  55. data/lib/sisimai/lhost/v5sendmail.rb +5 -18
  56. data/lib/sisimai/lhost/verizon.rb +5 -17
  57. data/lib/sisimai/lhost/x1.rb +7 -19
  58. data/lib/sisimai/lhost/x2.rb +8 -23
  59. data/lib/sisimai/lhost/x3.rb +7 -19
  60. data/lib/sisimai/lhost/x4.rb +7 -19
  61. data/lib/sisimai/lhost/x5.rb +8 -23
  62. data/lib/sisimai/lhost/x6.rb +74 -0
  63. data/lib/sisimai/lhost/yahoo.rb +11 -24
  64. data/lib/sisimai/lhost/yandex.rb +14 -26
  65. data/lib/sisimai/lhost/zoho.rb +8 -28
  66. data/lib/sisimai/mail.rb +35 -20
  67. data/lib/sisimai/mail/maildir.rb +27 -28
  68. data/lib/sisimai/mail/memory.rb +18 -16
  69. data/lib/sisimai/mail/stdin.rb +5 -5
  70. data/lib/sisimai/mda.rb +4 -10
  71. data/lib/sisimai/message.rb +97 -231
  72. data/lib/sisimai/mime.rb +26 -31
  73. data/lib/sisimai/order.rb +149 -183
  74. data/lib/sisimai/reason.rb +25 -14
  75. data/lib/sisimai/reason/rejected.rb +1 -0
  76. data/lib/sisimai/reason/userunknown.rb +12 -5
  77. data/lib/sisimai/rfc3464.rb +6 -23
  78. data/lib/sisimai/rfc3834.rb +5 -18
  79. data/lib/sisimai/rhost/exchangeonline.rb +25 -22
  80. data/lib/sisimai/smtp.rb +0 -13
  81. data/lib/sisimai/string.rb +3 -11
  82. data/lib/sisimai/version.rb +1 -1
  83. data/set-of-emails/maildir/bsd/arf-24.eml +50 -0
  84. data/set-of-emails/maildir/bsd/{email-activehunter-01.eml → lhost-activehunter-01.eml} +0 -0
  85. data/set-of-emails/maildir/bsd/{email-activehunter-02.eml → lhost-activehunter-02.eml} +0 -0
  86. data/set-of-emails/maildir/bsd/{email-amavis-01.eml → lhost-amavis-01.eml} +0 -0
  87. data/set-of-emails/maildir/bsd/{email-amavis-02.eml → lhost-amavis-02.eml} +0 -0
  88. data/set-of-emails/maildir/bsd/lhost-amavis-03.eml +90 -0
  89. data/set-of-emails/maildir/bsd/{email-amazonses-01.eml → lhost-amazonses-01.eml} +0 -0
  90. data/set-of-emails/maildir/bsd/{email-amazonses-02.eml → lhost-amazonses-02.eml} +0 -0
  91. data/set-of-emails/maildir/bsd/{email-amazonses-03.eml → lhost-amazonses-03.eml} +0 -0
  92. data/set-of-emails/maildir/bsd/{email-amazonses-05.eml → lhost-amazonses-05.eml} +0 -0
  93. data/set-of-emails/maildir/bsd/{email-amazonses-06.eml → lhost-amazonses-06.eml} +0 -0
  94. data/set-of-emails/maildir/bsd/{email-amazonses-07.eml → lhost-amazonses-07.eml} +0 -0
  95. data/set-of-emails/maildir/bsd/{email-amazonses-08.eml → lhost-amazonses-08.eml} +0 -0
  96. data/set-of-emails/maildir/bsd/{email-amazonses-09.eml → lhost-amazonses-09.eml} +0 -0
  97. data/set-of-emails/maildir/bsd/{email-amazonses-10.eml → lhost-amazonses-10.eml} +0 -0
  98. data/set-of-emails/maildir/bsd/{email-amazonses-11.eml → lhost-amazonses-11.eml} +0 -0
  99. data/set-of-emails/maildir/bsd/{email-amazonses-12.eml → lhost-amazonses-12.eml} +0 -0
  100. data/set-of-emails/maildir/bsd/{email-amazonses-13.eml → lhost-amazonses-13.eml} +0 -0
  101. data/set-of-emails/maildir/bsd/{email-amazonses-14.eml → lhost-amazonses-14.eml} +0 -0
  102. data/set-of-emails/maildir/bsd/{email-amazonses-15.eml → lhost-amazonses-15.eml} +0 -0
  103. data/set-of-emails/maildir/bsd/{email-amazonses-16.eml → lhost-amazonses-16.eml} +0 -0
  104. data/set-of-emails/maildir/bsd/{email-amazonses-17.eml → lhost-amazonses-17.eml} +0 -0
  105. data/set-of-emails/maildir/bsd/{email-amazonses-18.eml → lhost-amazonses-18.eml} +0 -0
  106. data/set-of-emails/maildir/bsd/{email-amazonses-19.eml → lhost-amazonses-19.eml} +0 -0
  107. data/set-of-emails/maildir/bsd/{email-amazonses-20.eml → lhost-amazonses-20.eml} +0 -0
  108. data/set-of-emails/maildir/bsd/{email-amazonses-21.eml → lhost-amazonses-21.eml} +0 -0
  109. data/set-of-emails/maildir/bsd/{email-amazonworkmail-01.eml → lhost-amazonworkmail-01.eml} +0 -0
  110. data/set-of-emails/maildir/bsd/{email-amazonworkmail-02.eml → lhost-amazonworkmail-02.eml} +0 -0
  111. data/set-of-emails/maildir/bsd/{email-amazonworkmail-03.eml → lhost-amazonworkmail-03.eml} +0 -0
  112. data/set-of-emails/maildir/bsd/{email-amazonworkmail-04.eml → lhost-amazonworkmail-04.eml} +0 -0
  113. data/set-of-emails/maildir/bsd/{email-amazonworkmail-05.eml → lhost-amazonworkmail-05.eml} +0 -0
  114. data/set-of-emails/maildir/bsd/{email-amazonworkmail-07.eml → lhost-amazonworkmail-07.eml} +0 -0
  115. data/set-of-emails/maildir/bsd/{email-amazonworkmail-08.eml → lhost-amazonworkmail-08.eml} +0 -0
  116. data/set-of-emails/maildir/bsd/{email-aol-01.eml → lhost-aol-01.eml} +0 -0
  117. data/set-of-emails/maildir/bsd/{email-aol-02.eml → lhost-aol-02.eml} +0 -0
  118. data/set-of-emails/maildir/bsd/{email-aol-03.eml → lhost-aol-03.eml} +0 -0
  119. data/set-of-emails/maildir/bsd/{email-aol-04.eml → lhost-aol-04.eml} +0 -0
  120. data/set-of-emails/maildir/bsd/{email-aol-05.eml → lhost-aol-05.eml} +0 -0
  121. data/set-of-emails/maildir/bsd/{email-aol-06.eml → lhost-aol-06.eml} +0 -0
  122. data/set-of-emails/maildir/bsd/{email-apachejames-01.eml → lhost-apachejames-01.eml} +0 -0
  123. data/set-of-emails/maildir/bsd/lhost-barracuda-01.eml +67 -0
  124. data/set-of-emails/maildir/bsd/lhost-barracuda-02.eml +71 -0
  125. data/set-of-emails/maildir/bsd/{email-bigfoot-02.eml → lhost-bigfoot-02.eml} +0 -0
  126. data/set-of-emails/maildir/bsd/{email-biglobe-01.eml → lhost-biglobe-01.eml} +0 -0
  127. data/set-of-emails/maildir/bsd/{email-courier-01.eml → lhost-courier-01.eml} +0 -0
  128. data/set-of-emails/maildir/bsd/{email-courier-02.eml → lhost-courier-02.eml} +0 -0
  129. data/set-of-emails/maildir/bsd/{email-courier-03.eml → lhost-courier-03.eml} +0 -0
  130. data/set-of-emails/maildir/bsd/{email-courier-04.eml → lhost-courier-04.eml} +0 -0
  131. data/set-of-emails/maildir/bsd/{email-domino-01.eml → lhost-domino-01.eml} +0 -0
  132. data/set-of-emails/maildir/bsd/{email-domino-02.eml → lhost-domino-02.eml} +0 -0
  133. data/set-of-emails/maildir/bsd/{email-domino-03.eml → lhost-domino-03.eml} +0 -0
  134. data/set-of-emails/maildir/bsd/{email-einsundeins-02.eml → lhost-einsundeins-02.eml} +0 -0
  135. data/set-of-emails/maildir/bsd/{email-einsundeins-03.eml → lhost-einsundeins-03.eml} +0 -0
  136. data/set-of-emails/maildir/bsd/{email-exchange2003-01.eml → lhost-exchange2003-01.eml} +0 -0
  137. data/set-of-emails/maildir/bsd/{email-exchange2003-02.eml → lhost-exchange2003-02.eml} +0 -0
  138. data/set-of-emails/maildir/bsd/{email-exchange2003-03.eml → lhost-exchange2003-03.eml} +0 -0
  139. data/set-of-emails/maildir/bsd/{email-exchange2003-04.eml → lhost-exchange2003-04.eml} +0 -0
  140. data/set-of-emails/maildir/bsd/{email-exchange2003-05.eml → lhost-exchange2003-05.eml} +0 -0
  141. data/set-of-emails/maildir/bsd/{email-exchange2003-07.eml → lhost-exchange2003-07.eml} +0 -0
  142. data/set-of-emails/maildir/bsd/{email-exchange2007-01.eml → lhost-exchange2007-01.eml} +0 -0
  143. data/set-of-emails/maildir/bsd/{email-exchange2007-02.eml → lhost-exchange2007-02.eml} +0 -0
  144. data/set-of-emails/maildir/bsd/{email-exchange2007-03.eml → lhost-exchange2007-03.eml} +0 -0
  145. data/set-of-emails/maildir/bsd/{email-exchange2007-04.eml → lhost-exchange2007-04.eml} +0 -0
  146. data/set-of-emails/maildir/bsd/{email-exchange2007-05.eml → lhost-exchange2007-05.eml} +0 -0
  147. data/set-of-emails/maildir/bsd/{email-exchange2007-06.eml → lhost-exchange2007-06.eml} +0 -0
  148. data/set-of-emails/maildir/bsd/lhost-exchange2007-07.eml +128 -0
  149. data/set-of-emails/maildir/bsd/{email-exim-01.eml → lhost-exim-01.eml} +0 -0
  150. data/set-of-emails/maildir/bsd/{email-exim-02.eml → lhost-exim-02.eml} +0 -0
  151. data/set-of-emails/maildir/bsd/{email-exim-03.eml → lhost-exim-03.eml} +0 -0
  152. data/set-of-emails/maildir/bsd/{email-exim-04.eml → lhost-exim-04.eml} +0 -0
  153. data/set-of-emails/maildir/bsd/{email-exim-05.eml → lhost-exim-05.eml} +0 -0
  154. data/set-of-emails/maildir/bsd/{email-exim-06.eml → lhost-exim-06.eml} +0 -0
  155. data/set-of-emails/maildir/bsd/{email-exim-07.eml → lhost-exim-07.eml} +0 -0
  156. data/set-of-emails/maildir/bsd/{email-exim-08.eml → lhost-exim-08.eml} +0 -0
  157. data/set-of-emails/maildir/bsd/{email-exim-29.eml → lhost-exim-29.eml} +0 -0
  158. data/set-of-emails/maildir/bsd/{email-exim-30.eml → lhost-exim-30.eml} +0 -0
  159. data/set-of-emails/maildir/bsd/{email-exim-31.eml → lhost-exim-31.eml} +0 -0
  160. data/set-of-emails/maildir/bsd/{email-exim-32.eml → lhost-exim-32.eml} +0 -0
  161. data/set-of-emails/maildir/bsd/{email-exim-33.eml → lhost-exim-33.eml} +0 -0
  162. data/set-of-emails/maildir/bsd/{email-exim-34.eml → lhost-exim-34.eml} +0 -0
  163. data/set-of-emails/maildir/bsd/{email-exim-35.eml → lhost-exim-35.eml} +0 -0
  164. data/set-of-emails/maildir/bsd/{email-exim-36.eml → lhost-exim-36.eml} +0 -0
  165. data/set-of-emails/maildir/bsd/{email-exim-37.eml → lhost-exim-37.eml} +0 -0
  166. data/set-of-emails/maildir/bsd/{email-exim-38.eml → lhost-exim-38.eml} +0 -0
  167. data/set-of-emails/maildir/bsd/{email-exim-39.eml → lhost-exim-39.eml} +0 -0
  168. data/set-of-emails/maildir/bsd/{email-exim-40.eml → lhost-exim-40.eml} +0 -0
  169. data/set-of-emails/maildir/bsd/{email-exim-41.eml → lhost-exim-41.eml} +0 -0
  170. data/set-of-emails/maildir/bsd/{email-exim-42.eml → lhost-exim-42.eml} +0 -0
  171. data/set-of-emails/maildir/bsd/{email-exim-43.eml → lhost-exim-43.eml} +0 -0
  172. data/set-of-emails/maildir/bsd/{email-exim-44.eml → lhost-exim-44.eml} +0 -0
  173. data/set-of-emails/maildir/bsd/{email-exim-45.eml → lhost-exim-45.eml} +0 -0
  174. data/set-of-emails/maildir/bsd/{email-exim-46.eml → lhost-exim-46.eml} +0 -0
  175. data/set-of-emails/maildir/bsd/{email-exim-47.eml → lhost-exim-47.eml} +0 -0
  176. data/set-of-emails/maildir/bsd/{email-exim-48.eml → lhost-exim-48.eml} +0 -0
  177. data/set-of-emails/maildir/bsd/{email-exim-49.eml → lhost-exim-49.eml} +0 -0
  178. data/set-of-emails/maildir/bsd/{email-exim-50.eml → lhost-exim-50.eml} +0 -0
  179. data/set-of-emails/maildir/bsd/{email-exim-51.eml → lhost-exim-51.eml} +0 -0
  180. data/set-of-emails/maildir/bsd/{email-exim-52.eml → lhost-exim-52.eml} +0 -0
  181. data/set-of-emails/maildir/bsd/{email-exim-53.eml → lhost-exim-53.eml} +0 -0
  182. data/set-of-emails/maildir/bsd/{email-exim-54.eml → lhost-exim-54.eml} +0 -0
  183. data/set-of-emails/maildir/bsd/{email-exim-55.eml → lhost-exim-55.eml} +0 -0
  184. data/set-of-emails/maildir/bsd/{email-exim-56.eml → lhost-exim-56.eml} +0 -0
  185. data/set-of-emails/maildir/bsd/{email-exim-57.eml → lhost-exim-57.eml} +0 -0
  186. data/set-of-emails/maildir/bsd/{email-exim-58.eml → lhost-exim-58.eml} +0 -0
  187. data/set-of-emails/maildir/bsd/{email-exim-59.eml → lhost-exim-59.eml} +0 -0
  188. data/set-of-emails/maildir/bsd/{email-exim-60.eml → lhost-exim-60.eml} +0 -0
  189. data/set-of-emails/maildir/bsd/{email-ezweb-01.eml → lhost-ezweb-01.eml} +0 -0
  190. data/set-of-emails/maildir/bsd/{email-ezweb-02.eml → lhost-ezweb-02.eml} +0 -0
  191. data/set-of-emails/maildir/bsd/{email-ezweb-03.eml → lhost-ezweb-03.eml} +0 -0
  192. data/set-of-emails/maildir/bsd/{email-ezweb-04.eml → lhost-ezweb-04.eml} +0 -0
  193. data/set-of-emails/maildir/bsd/{email-ezweb-05.eml → lhost-ezweb-05.eml} +0 -0
  194. data/set-of-emails/maildir/bsd/{email-ezweb-07.eml → lhost-ezweb-07.eml} +0 -0
  195. data/set-of-emails/maildir/bsd/{email-ezweb-08.eml → lhost-ezweb-08.eml} +0 -0
  196. data/set-of-emails/maildir/bsd/{email-facebook-03.eml → lhost-facebook-03.eml} +0 -0
  197. data/set-of-emails/maildir/bsd/{email-facebook-04.eml → lhost-facebook-04.eml} +0 -0
  198. data/set-of-emails/maildir/bsd/{email-fml-02.eml → lhost-fml-02.eml} +0 -0
  199. data/set-of-emails/maildir/bsd/{email-fml-03.eml → lhost-fml-03.eml} +0 -0
  200. data/set-of-emails/maildir/bsd/{email-google-01.eml → lhost-gmail-01.eml} +0 -0
  201. data/set-of-emails/maildir/bsd/{email-google-03.eml → lhost-gmail-03.eml} +0 -0
  202. data/set-of-emails/maildir/bsd/{email-google-04.eml → lhost-gmail-04.eml} +0 -0
  203. data/set-of-emails/maildir/bsd/{email-google-05.eml → lhost-gmail-05.eml} +0 -0
  204. data/set-of-emails/maildir/bsd/{email-google-06.eml → lhost-gmail-06.eml} +0 -0
  205. data/set-of-emails/maildir/bsd/{email-google-07.eml → lhost-gmail-07.eml} +0 -0
  206. data/set-of-emails/maildir/bsd/{email-google-08.eml → lhost-gmail-08.eml} +0 -0
  207. data/set-of-emails/maildir/bsd/{email-google-09.eml → lhost-gmail-09.eml} +0 -0
  208. data/set-of-emails/maildir/bsd/{email-google-10.eml → lhost-gmail-10.eml} +0 -0
  209. data/set-of-emails/maildir/bsd/{email-google-11.eml → lhost-gmail-11.eml} +0 -0
  210. data/set-of-emails/maildir/bsd/{email-google-15.eml → lhost-gmail-15.eml} +0 -0
  211. data/set-of-emails/maildir/bsd/{email-google-16.eml → lhost-gmail-16.eml} +0 -0
  212. data/set-of-emails/maildir/bsd/{email-google-17.eml → lhost-gmail-17.eml} +0 -0
  213. data/set-of-emails/maildir/bsd/{email-google-18.eml → lhost-gmail-18.eml} +0 -0
  214. data/set-of-emails/maildir/bsd/{email-google-19.eml → lhost-gmail-19.eml} +0 -0
  215. data/set-of-emails/maildir/bsd/{email-gmx-01.eml → lhost-gmx-01.eml} +0 -0
  216. data/set-of-emails/maildir/bsd/{email-gmx-02.eml → lhost-gmx-02.eml} +0 -0
  217. data/set-of-emails/maildir/bsd/{email-gmx-03.eml → lhost-gmx-03.eml} +0 -0
  218. data/set-of-emails/maildir/bsd/{email-gmx-04.eml → lhost-gmx-04.eml} +0 -0
  219. data/set-of-emails/maildir/bsd/lhost-googlegroups-01.eml +116 -0
  220. data/set-of-emails/maildir/bsd/lhost-googlegroups-02.eml +114 -0
  221. data/set-of-emails/maildir/bsd/lhost-googlegroups-03.eml +116 -0
  222. data/set-of-emails/maildir/bsd/lhost-googlegroups-04.eml +116 -0
  223. data/set-of-emails/maildir/bsd/lhost-googlegroups-05.eml +116 -0
  224. data/set-of-emails/maildir/bsd/lhost-googlegroups-06.eml +116 -0
  225. data/set-of-emails/maildir/bsd/lhost-googlegroups-07.eml +116 -0
  226. data/set-of-emails/maildir/bsd/lhost-googlegroups-08.eml +115 -0
  227. data/set-of-emails/maildir/bsd/lhost-googlegroups-09.eml +116 -0
  228. data/set-of-emails/maildir/bsd/lhost-googlegroups-10.eml +116 -0
  229. data/set-of-emails/maildir/bsd/lhost-googlegroups-11.eml +116 -0
  230. data/set-of-emails/maildir/bsd/lhost-googlegroups-12.eml +116 -0
  231. data/set-of-emails/maildir/bsd/lhost-googlegroups-13.eml +115 -0
  232. data/set-of-emails/maildir/bsd/lhost-googlegroups-14.eml +127 -0
  233. data/set-of-emails/maildir/bsd/{email-gsuite-01.eml → lhost-gsuite-01.eml} +0 -0
  234. data/set-of-emails/maildir/bsd/{email-gsuite-02.eml → lhost-gsuite-02.eml} +0 -0
  235. data/set-of-emails/maildir/bsd/{email-gsuite-03.eml → lhost-gsuite-03.eml} +0 -0
  236. data/set-of-emails/maildir/bsd/{email-gsuite-04.eml → lhost-gsuite-04.eml} +0 -0
  237. data/set-of-emails/maildir/bsd/{email-gsuite-05.eml → lhost-gsuite-05.eml} +0 -0
  238. data/set-of-emails/maildir/bsd/{email-gsuite-06.eml → lhost-gsuite-06.eml} +0 -0
  239. data/set-of-emails/maildir/bsd/{email-gsuite-07.eml → lhost-gsuite-07.eml} +0 -0
  240. data/set-of-emails/maildir/bsd/{email-gsuite-08.eml → lhost-gsuite-08.eml} +0 -0
  241. data/set-of-emails/maildir/bsd/{email-gsuite-09.eml → lhost-gsuite-09.eml} +0 -0
  242. data/set-of-emails/maildir/bsd/{email-gsuite-10.eml → lhost-gsuite-10.eml} +0 -0
  243. data/set-of-emails/maildir/bsd/{email-gsuite-11.eml → lhost-gsuite-11.eml} +0 -0
  244. data/set-of-emails/maildir/bsd/{email-gsuite-12.eml → lhost-gsuite-12.eml} +0 -0
  245. data/set-of-emails/maildir/bsd/{email-gsuite-13.eml → lhost-gsuite-13.eml} +0 -0
  246. data/set-of-emails/maildir/bsd/lhost-gsuite-14.eml +273 -0
  247. data/set-of-emails/maildir/bsd/{email-imailserver-01.eml → lhost-imailserver-01.eml} +0 -0
  248. data/set-of-emails/maildir/bsd/{email-imailserver-02.eml → lhost-imailserver-02.eml} +0 -0
  249. data/set-of-emails/maildir/bsd/{email-imailserver-03.eml → lhost-imailserver-03.eml} +0 -0
  250. data/set-of-emails/maildir/bsd/{email-imailserver-04.eml → lhost-imailserver-04.eml} +0 -0
  251. data/set-of-emails/maildir/bsd/{email-imailserver-06.eml → lhost-imailserver-06.eml} +0 -0
  252. data/set-of-emails/maildir/bsd/{email-interscanmss-01.eml → lhost-interscanmss-01.eml} +0 -0
  253. data/set-of-emails/maildir/bsd/lhost-interscanmss-02.eml +70 -0
  254. data/set-of-emails/maildir/bsd/lhost-interscanmss-03.eml +73 -0
  255. data/set-of-emails/maildir/bsd/{email-kddi-01.eml → lhost-kddi-01.eml} +0 -0
  256. data/set-of-emails/maildir/bsd/{email-kddi-02.eml → lhost-kddi-02.eml} +0 -0
  257. data/set-of-emails/maildir/bsd/{email-kddi-03.eml → lhost-kddi-03.eml} +0 -0
  258. data/set-of-emails/maildir/bsd/{email-mailfoundry-01.eml → lhost-mailfoundry-01.eml} +0 -0
  259. data/set-of-emails/maildir/bsd/{email-mailfoundry-02.eml → lhost-mailfoundry-02.eml} +0 -0
  260. data/set-of-emails/maildir/bsd/{email-mailmarshalsmtp-02.eml → lhost-mailmarshalsmtp-02.eml} +0 -0
  261. data/set-of-emails/maildir/bsd/{email-mailru-01.eml → lhost-mailru-01.eml} +0 -0
  262. data/set-of-emails/maildir/bsd/{email-mailru-02.eml → lhost-mailru-02.eml} +0 -0
  263. data/set-of-emails/maildir/bsd/{email-mailru-03.eml → lhost-mailru-03.eml} +0 -0
  264. data/set-of-emails/maildir/bsd/{email-mailru-04.eml → lhost-mailru-04.eml} +0 -0
  265. data/set-of-emails/maildir/bsd/{email-mailru-05.eml → lhost-mailru-05.eml} +0 -0
  266. data/set-of-emails/maildir/bsd/{email-mailru-06.eml → lhost-mailru-06.eml} +0 -0
  267. data/set-of-emails/maildir/bsd/{email-mailru-07.eml → lhost-mailru-07.eml} +0 -0
  268. data/set-of-emails/maildir/bsd/{email-mailru-08.eml → lhost-mailru-08.eml} +0 -0
  269. data/set-of-emails/maildir/bsd/{email-mailru-09.eml → lhost-mailru-09.eml} +0 -0
  270. data/set-of-emails/maildir/bsd/{email-mailru-10.eml → lhost-mailru-10.eml} +0 -0
  271. data/set-of-emails/maildir/bsd/{email-mcafee-01.eml → lhost-mcafee-01.eml} +0 -0
  272. data/set-of-emails/maildir/bsd/{email-mcafee-02.eml → lhost-mcafee-02.eml} +0 -0
  273. data/set-of-emails/maildir/bsd/{email-mcafee-03.eml → lhost-mcafee-03.eml} +0 -0
  274. data/set-of-emails/maildir/bsd/{email-mcafee-04.eml → lhost-mcafee-04.eml} +0 -0
  275. data/set-of-emails/maildir/bsd/{email-mcafee-05.eml → lhost-mcafee-05.eml} +0 -0
  276. data/set-of-emails/maildir/bsd/{email-messagelabs-01.eml → lhost-messagelabs-01.eml} +0 -0
  277. data/set-of-emails/maildir/bsd/{email-messagelabs-02.eml → lhost-messagelabs-02.eml} +0 -0
  278. data/set-of-emails/maildir/bsd/{email-messagelabs-03.eml → lhost-messagelabs-03.eml} +0 -0
  279. data/set-of-emails/maildir/bsd/{email-messagingserver-01.eml → lhost-messagingserver-01.eml} +0 -0
  280. data/set-of-emails/maildir/bsd/{email-messagingserver-02.eml → lhost-messagingserver-02.eml} +0 -0
  281. data/set-of-emails/maildir/bsd/{email-messagingserver-03.eml → lhost-messagingserver-03.eml} +0 -0
  282. data/set-of-emails/maildir/bsd/{email-messagingserver-04.eml → lhost-messagingserver-04.eml} +0 -0
  283. data/set-of-emails/maildir/bsd/{email-messagingserver-05.eml → lhost-messagingserver-05.eml} +0 -0
  284. data/set-of-emails/maildir/bsd/{email-messagingserver-06.eml → lhost-messagingserver-06.eml} +0 -0
  285. data/set-of-emails/maildir/bsd/{email-messagingserver-07.eml → lhost-messagingserver-07.eml} +0 -0
  286. data/set-of-emails/maildir/bsd/{email-messagingserver-08.eml → lhost-messagingserver-08.eml} +0 -0
  287. data/set-of-emails/maildir/bsd/{email-messagingserver-09.eml → lhost-messagingserver-09.eml} +0 -0
  288. data/set-of-emails/maildir/bsd/{email-messagingserver-10.eml → lhost-messagingserver-10.eml} +0 -0
  289. data/set-of-emails/maildir/bsd/{email-messagingserver-11.eml → lhost-messagingserver-11.eml} +0 -0
  290. data/set-of-emails/maildir/bsd/{email-messagingserver-12.eml → lhost-messagingserver-12.eml} +0 -0
  291. data/set-of-emails/maildir/bsd/{email-mfilter-01.eml → lhost-mfilter-01.eml} +0 -0
  292. data/set-of-emails/maildir/bsd/{email-mfilter-02.eml → lhost-mfilter-02.eml} +0 -0
  293. data/set-of-emails/maildir/bsd/{email-mfilter-03.eml → lhost-mfilter-03.eml} +0 -0
  294. data/set-of-emails/maildir/bsd/{email-mfilter-04.eml → lhost-mfilter-04.eml} +0 -0
  295. data/set-of-emails/maildir/bsd/{email-mxlogic-01.eml → lhost-mxlogic-01.eml} +0 -0
  296. data/set-of-emails/maildir/bsd/{email-mxlogic-02.eml → lhost-mxlogic-02.eml} +0 -0
  297. data/set-of-emails/maildir/bsd/{email-mxlogic-03.eml → lhost-mxlogic-03.eml} +0 -0
  298. data/set-of-emails/maildir/bsd/{email-notes-01.eml → lhost-notes-01.eml} +0 -0
  299. data/set-of-emails/maildir/bsd/{email-notes-02.eml → lhost-notes-02.eml} +0 -0
  300. data/set-of-emails/maildir/bsd/{email-notes-03.eml → lhost-notes-03.eml} +0 -0
  301. data/set-of-emails/maildir/bsd/{email-office365-01.eml → lhost-office365-01.eml} +0 -0
  302. data/set-of-emails/maildir/bsd/{email-office365-02.eml → lhost-office365-02.eml} +0 -0
  303. data/set-of-emails/maildir/bsd/{email-office365-03.eml → lhost-office365-03.eml} +0 -0
  304. data/set-of-emails/maildir/bsd/{email-office365-04.eml → lhost-office365-04.eml} +0 -0
  305. data/set-of-emails/maildir/bsd/{email-office365-05.eml → lhost-office365-05.eml} +0 -0
  306. data/set-of-emails/maildir/bsd/{email-office365-06.eml → lhost-office365-06.eml} +0 -0
  307. data/set-of-emails/maildir/bsd/{email-office365-07.eml → lhost-office365-07.eml} +0 -0
  308. data/set-of-emails/maildir/bsd/{email-office365-08.eml → lhost-office365-08.eml} +0 -0
  309. data/set-of-emails/maildir/bsd/{email-office365-09.eml → lhost-office365-09.eml} +0 -0
  310. data/set-of-emails/maildir/bsd/{email-office365-10.eml → lhost-office365-10.eml} +0 -0
  311. data/set-of-emails/maildir/bsd/{email-office365-11.eml → lhost-office365-11.eml} +0 -0
  312. data/set-of-emails/maildir/bsd/{email-office365-12.eml → lhost-office365-12.eml} +0 -0
  313. data/set-of-emails/maildir/bsd/lhost-office365-13.eml +259 -0
  314. data/set-of-emails/maildir/bsd/{email-opensmtpd-01.eml → lhost-opensmtpd-01.eml} +0 -0
  315. data/set-of-emails/maildir/bsd/{email-opensmtpd-02.eml → lhost-opensmtpd-02.eml} +0 -0
  316. data/set-of-emails/maildir/bsd/{email-opensmtpd-03.eml → lhost-opensmtpd-03.eml} +0 -0
  317. data/set-of-emails/maildir/bsd/{email-opensmtpd-04.eml → lhost-opensmtpd-04.eml} +0 -0
  318. data/set-of-emails/maildir/bsd/{email-opensmtpd-05.eml → lhost-opensmtpd-05.eml} +0 -0
  319. data/set-of-emails/maildir/bsd/{email-opensmtpd-06.eml → lhost-opensmtpd-06.eml} +0 -0
  320. data/set-of-emails/maildir/bsd/{email-outlook-01.eml → lhost-outlook-01.eml} +0 -0
  321. data/set-of-emails/maildir/bsd/{email-outlook-02.eml → lhost-outlook-02.eml} +0 -0
  322. data/set-of-emails/maildir/bsd/{email-outlook-03.eml → lhost-outlook-03.eml} +0 -0
  323. data/set-of-emails/maildir/bsd/{email-outlook-04.eml → lhost-outlook-04.eml} +0 -0
  324. data/set-of-emails/maildir/bsd/{email-outlook-06.eml → lhost-outlook-06.eml} +0 -0
  325. data/set-of-emails/maildir/bsd/{email-outlook-07.eml → lhost-outlook-07.eml} +0 -0
  326. data/set-of-emails/maildir/bsd/{email-outlook-08.eml → lhost-outlook-08.eml} +0 -0
  327. data/set-of-emails/maildir/bsd/{email-outlook-09.eml → lhost-outlook-09.eml} +0 -0
  328. data/set-of-emails/maildir/bsd/{email-postfix-01.eml → lhost-postfix-01.eml} +0 -0
  329. data/set-of-emails/maildir/bsd/{email-postfix-02.eml → lhost-postfix-02.eml} +0 -0
  330. data/set-of-emails/maildir/bsd/{email-postfix-03.eml → lhost-postfix-03.eml} +0 -0
  331. data/set-of-emails/maildir/bsd/{email-postfix-04.eml → lhost-postfix-04.eml} +0 -0
  332. data/set-of-emails/maildir/bsd/{email-postfix-05.eml → lhost-postfix-05.eml} +0 -0
  333. data/set-of-emails/maildir/bsd/{email-postfix-06.eml → lhost-postfix-06.eml} +0 -0
  334. data/set-of-emails/maildir/bsd/{email-postfix-07.eml → lhost-postfix-07.eml} +0 -0
  335. data/set-of-emails/maildir/bsd/{email-postfix-08.eml → lhost-postfix-08.eml} +0 -0
  336. data/set-of-emails/maildir/bsd/{email-postfix-09.eml → lhost-postfix-09.eml} +0 -0
  337. data/set-of-emails/maildir/bsd/{email-postfix-10.eml → lhost-postfix-10.eml} +0 -0
  338. data/set-of-emails/maildir/bsd/{email-postfix-11.eml → lhost-postfix-11.eml} +0 -0
  339. data/set-of-emails/maildir/bsd/{email-postfix-13.eml → lhost-postfix-13.eml} +0 -0
  340. data/set-of-emails/maildir/bsd/{email-postfix-14.eml → lhost-postfix-14.eml} +0 -0
  341. data/set-of-emails/maildir/bsd/{email-postfix-15.eml → lhost-postfix-15.eml} +0 -0
  342. data/set-of-emails/maildir/bsd/{email-postfix-16.eml → lhost-postfix-16.eml} +0 -0
  343. data/set-of-emails/maildir/bsd/{email-postfix-17.eml → lhost-postfix-17.eml} +0 -0
  344. data/set-of-emails/maildir/bsd/{email-postfix-28.eml → lhost-postfix-28.eml} +0 -0
  345. data/set-of-emails/maildir/bsd/{email-postfix-29.eml → lhost-postfix-29.eml} +0 -0
  346. data/set-of-emails/maildir/bsd/{email-postfix-30.eml → lhost-postfix-30.eml} +0 -0
  347. data/set-of-emails/maildir/bsd/{email-postfix-31.eml → lhost-postfix-31.eml} +0 -0
  348. data/set-of-emails/maildir/bsd/{email-postfix-32.eml → lhost-postfix-32.eml} +0 -0
  349. data/set-of-emails/maildir/bsd/{email-postfix-33.eml → lhost-postfix-33.eml} +0 -0
  350. data/set-of-emails/maildir/bsd/{email-postfix-34.eml → lhost-postfix-34.eml} +0 -0
  351. data/set-of-emails/maildir/bsd/{email-postfix-35.eml → lhost-postfix-35.eml} +0 -0
  352. data/set-of-emails/maildir/bsd/{email-postfix-36.eml → lhost-postfix-36.eml} +0 -0
  353. data/set-of-emails/maildir/bsd/{email-postfix-37.eml → lhost-postfix-37.eml} +0 -0
  354. data/set-of-emails/maildir/bsd/{email-postfix-38.eml → lhost-postfix-38.eml} +0 -0
  355. data/set-of-emails/maildir/bsd/{email-postfix-39.eml → lhost-postfix-39.eml} +0 -0
  356. data/set-of-emails/maildir/bsd/{email-postfix-40.eml → lhost-postfix-40.eml} +0 -0
  357. data/set-of-emails/maildir/bsd/{email-postfix-41.eml → lhost-postfix-41.eml} +0 -0
  358. data/set-of-emails/maildir/bsd/{email-postfix-42.eml → lhost-postfix-42.eml} +0 -0
  359. data/set-of-emails/maildir/bsd/{email-postfix-43.eml → lhost-postfix-43.eml} +0 -0
  360. data/set-of-emails/maildir/bsd/{email-postfix-44.eml → lhost-postfix-44.eml} +0 -0
  361. data/set-of-emails/maildir/bsd/{email-postfix-45.eml → lhost-postfix-45.eml} +0 -0
  362. data/set-of-emails/maildir/bsd/{email-postfix-46.eml → lhost-postfix-46.eml} +0 -0
  363. data/set-of-emails/maildir/bsd/{email-postfix-47.eml → lhost-postfix-47.eml} +0 -0
  364. data/set-of-emails/maildir/bsd/{email-postfix-48.eml → lhost-postfix-48.eml} +0 -0
  365. data/set-of-emails/maildir/bsd/{email-postfix-49.eml → lhost-postfix-49.eml} +0 -0
  366. data/set-of-emails/maildir/bsd/{email-postfix-50.eml → lhost-postfix-50.eml} +0 -0
  367. data/set-of-emails/maildir/bsd/{email-postfix-51.eml → lhost-postfix-51.eml} +0 -0
  368. data/set-of-emails/maildir/bsd/{email-postfix-52.eml → lhost-postfix-52.eml} +0 -0
  369. data/set-of-emails/maildir/bsd/{email-postfix-53.eml → lhost-postfix-53.eml} +0 -0
  370. data/set-of-emails/maildir/bsd/{email-postfix-54.eml → lhost-postfix-54.eml} +0 -0
  371. data/set-of-emails/maildir/bsd/{email-postfix-55.eml → lhost-postfix-55.eml} +0 -0
  372. data/set-of-emails/maildir/bsd/{email-postfix-56.eml → lhost-postfix-56.eml} +0 -0
  373. data/set-of-emails/maildir/bsd/{email-postfix-57.eml → lhost-postfix-57.eml} +0 -0
  374. data/set-of-emails/maildir/bsd/{email-postfix-58.eml → lhost-postfix-58.eml} +0 -0
  375. data/set-of-emails/maildir/bsd/{email-postfix-59.eml → lhost-postfix-59.eml} +0 -0
  376. data/set-of-emails/maildir/bsd/{email-postfix-60.eml → lhost-postfix-60.eml} +0 -0
  377. data/set-of-emails/maildir/bsd/{email-postfix-61.eml → lhost-postfix-61.eml} +0 -0
  378. data/set-of-emails/maildir/bsd/{email-postfix-62.eml → lhost-postfix-62.eml} +0 -0
  379. data/set-of-emails/maildir/bsd/{email-postfix-63.eml → lhost-postfix-63.eml} +0 -0
  380. data/set-of-emails/maildir/bsd/{email-postfix-64.eml → lhost-postfix-64.eml} +0 -0
  381. data/set-of-emails/maildir/bsd/lhost-postfix-65.eml +69 -0
  382. data/set-of-emails/maildir/bsd/{rfc3464-05.eml → lhost-powermta-01.eml} +19 -18
  383. data/set-of-emails/maildir/bsd/lhost-powermta-02.eml +58 -0
  384. data/set-of-emails/maildir/bsd/lhost-powermta-03.eml +71 -0
  385. data/set-of-emails/maildir/bsd/{email-qmail-01.eml → lhost-qmail-01.eml} +0 -0
  386. data/set-of-emails/maildir/bsd/{email-qmail-02.eml → lhost-qmail-02.eml} +0 -0
  387. data/set-of-emails/maildir/bsd/{email-qmail-03.eml → lhost-qmail-03.eml} +0 -0
  388. data/set-of-emails/maildir/bsd/{email-qmail-04.eml → lhost-qmail-04.eml} +0 -0
  389. data/set-of-emails/maildir/bsd/{email-qmail-05.eml → lhost-qmail-05.eml} +0 -0
  390. data/set-of-emails/maildir/bsd/{email-qmail-06.eml → lhost-qmail-06.eml} +0 -0
  391. data/set-of-emails/maildir/bsd/{email-qmail-07.eml → lhost-qmail-07.eml} +0 -0
  392. data/set-of-emails/maildir/bsd/{email-qmail-08.eml → lhost-qmail-08.eml} +0 -0
  393. data/set-of-emails/maildir/bsd/{email-qmail-09.eml → lhost-qmail-09.eml} +0 -0
  394. data/set-of-emails/maildir/bsd/{email-qmail-10.eml → lhost-qmail-10.eml} +0 -0
  395. data/set-of-emails/maildir/bsd/{email-receivingses-01.eml → lhost-receivingses-01.eml} +0 -0
  396. data/set-of-emails/maildir/bsd/{email-receivingses-02.eml → lhost-receivingses-02.eml} +0 -0
  397. data/set-of-emails/maildir/bsd/{email-receivingses-03.eml → lhost-receivingses-03.eml} +0 -0
  398. data/set-of-emails/maildir/bsd/{email-receivingses-04.eml → lhost-receivingses-04.eml} +0 -0
  399. data/set-of-emails/maildir/bsd/{email-receivingses-05.eml → lhost-receivingses-05.eml} +0 -0
  400. data/set-of-emails/maildir/bsd/{email-receivingses-06.eml → lhost-receivingses-06.eml} +0 -0
  401. data/set-of-emails/maildir/bsd/{email-receivingses-07.eml → lhost-receivingses-07.eml} +0 -0
  402. data/set-of-emails/maildir/bsd/{email-sendgrid-01.eml → lhost-sendgrid-01.eml} +0 -0
  403. data/set-of-emails/maildir/bsd/{email-sendgrid-02.eml → lhost-sendgrid-02.eml} +0 -0
  404. data/set-of-emails/maildir/bsd/{email-sendgrid-03.eml → lhost-sendgrid-03.eml} +0 -0
  405. data/set-of-emails/maildir/bsd/{email-sendmail-01.eml → lhost-sendmail-01.eml} +0 -0
  406. data/set-of-emails/maildir/bsd/{email-sendmail-02.eml → lhost-sendmail-02.eml} +0 -0
  407. data/set-of-emails/maildir/bsd/{email-sendmail-03.eml → lhost-sendmail-03.eml} +0 -0
  408. data/set-of-emails/maildir/bsd/{email-sendmail-04.eml → lhost-sendmail-04.eml} +0 -0
  409. data/set-of-emails/maildir/bsd/{email-sendmail-05.eml → lhost-sendmail-05.eml} +0 -0
  410. data/set-of-emails/maildir/bsd/{email-sendmail-06.eml → lhost-sendmail-06.eml} +0 -0
  411. data/set-of-emails/maildir/bsd/{email-sendmail-07.eml → lhost-sendmail-07.eml} +0 -0
  412. data/set-of-emails/maildir/bsd/{email-sendmail-08.eml → lhost-sendmail-08.eml} +0 -0
  413. data/set-of-emails/maildir/bsd/{email-sendmail-09.eml → lhost-sendmail-09.eml} +0 -0
  414. data/set-of-emails/maildir/bsd/{email-sendmail-10.eml → lhost-sendmail-10.eml} +0 -0
  415. data/set-of-emails/maildir/bsd/{email-sendmail-11.eml → lhost-sendmail-11.eml} +0 -0
  416. data/set-of-emails/maildir/bsd/{email-sendmail-12.eml → lhost-sendmail-12.eml} +0 -0
  417. data/set-of-emails/maildir/bsd/{email-sendmail-13.eml → lhost-sendmail-13.eml} +0 -0
  418. data/set-of-emails/maildir/bsd/{email-sendmail-14.eml → lhost-sendmail-14.eml} +0 -0
  419. data/set-of-emails/maildir/bsd/{email-sendmail-15.eml → lhost-sendmail-15.eml} +0 -0
  420. data/set-of-emails/maildir/bsd/{email-sendmail-16.eml → lhost-sendmail-16.eml} +0 -0
  421. data/set-of-emails/maildir/bsd/{email-sendmail-17.eml → lhost-sendmail-17.eml} +0 -0
  422. data/set-of-emails/maildir/bsd/{email-sendmail-18.eml → lhost-sendmail-18.eml} +0 -0
  423. data/set-of-emails/maildir/bsd/{email-sendmail-19.eml → lhost-sendmail-19.eml} +0 -0
  424. data/set-of-emails/maildir/bsd/{email-sendmail-20.eml → lhost-sendmail-20.eml} +0 -0
  425. data/set-of-emails/maildir/bsd/{email-sendmail-21.eml → lhost-sendmail-21.eml} +0 -0
  426. data/set-of-emails/maildir/bsd/{email-sendmail-22.eml → lhost-sendmail-22.eml} +0 -0
  427. data/set-of-emails/maildir/bsd/{email-sendmail-24.eml → lhost-sendmail-24.eml} +0 -0
  428. data/set-of-emails/maildir/bsd/{email-sendmail-25.eml → lhost-sendmail-25.eml} +0 -0
  429. data/set-of-emails/maildir/bsd/{email-sendmail-26.eml → lhost-sendmail-26.eml} +0 -0
  430. data/set-of-emails/maildir/bsd/{email-sendmail-27.eml → lhost-sendmail-27.eml} +0 -0
  431. data/set-of-emails/maildir/bsd/{email-sendmail-28.eml → lhost-sendmail-28.eml} +0 -0
  432. data/set-of-emails/maildir/bsd/{email-sendmail-29.eml → lhost-sendmail-29.eml} +0 -0
  433. data/set-of-emails/maildir/bsd/{email-sendmail-30.eml → lhost-sendmail-30.eml} +0 -0
  434. data/set-of-emails/maildir/bsd/{email-sendmail-31.eml → lhost-sendmail-31.eml} +0 -0
  435. data/set-of-emails/maildir/bsd/{email-sendmail-32.eml → lhost-sendmail-32.eml} +0 -0
  436. data/set-of-emails/maildir/bsd/{email-sendmail-33.eml → lhost-sendmail-33.eml} +0 -0
  437. data/set-of-emails/maildir/bsd/{email-sendmail-34.eml → lhost-sendmail-34.eml} +0 -0
  438. data/set-of-emails/maildir/bsd/{email-sendmail-35.eml → lhost-sendmail-35.eml} +0 -0
  439. data/set-of-emails/maildir/bsd/{email-sendmail-36.eml → lhost-sendmail-36.eml} +0 -0
  440. data/set-of-emails/maildir/bsd/{email-sendmail-37.eml → lhost-sendmail-37.eml} +0 -0
  441. data/set-of-emails/maildir/bsd/{email-sendmail-38.eml → lhost-sendmail-38.eml} +0 -0
  442. data/set-of-emails/maildir/bsd/{email-sendmail-39.eml → lhost-sendmail-39.eml} +0 -0
  443. data/set-of-emails/maildir/bsd/{email-sendmail-40.eml → lhost-sendmail-40.eml} +0 -0
  444. data/set-of-emails/maildir/bsd/{email-sendmail-41.eml → lhost-sendmail-41.eml} +0 -0
  445. data/set-of-emails/maildir/bsd/{email-sendmail-42.eml → lhost-sendmail-42.eml} +0 -0
  446. data/set-of-emails/maildir/bsd/{email-sendmail-43.eml → lhost-sendmail-43.eml} +0 -0
  447. data/set-of-emails/maildir/bsd/{email-sendmail-44.eml → lhost-sendmail-44.eml} +0 -0
  448. data/set-of-emails/maildir/bsd/{email-sendmail-45.eml → lhost-sendmail-45.eml} +0 -0
  449. data/set-of-emails/maildir/bsd/{email-sendmail-46.eml → lhost-sendmail-46.eml} +0 -0
  450. data/set-of-emails/maildir/bsd/{email-sendmail-47.eml → lhost-sendmail-47.eml} +0 -0
  451. data/set-of-emails/maildir/bsd/{email-sendmail-48.eml → lhost-sendmail-48.eml} +0 -0
  452. data/set-of-emails/maildir/bsd/{email-sendmail-49.eml → lhost-sendmail-49.eml} +0 -0
  453. data/set-of-emails/maildir/bsd/{email-sendmail-50.eml → lhost-sendmail-50.eml} +0 -0
  454. data/set-of-emails/maildir/bsd/{email-sendmail-51.eml → lhost-sendmail-51.eml} +0 -0
  455. data/set-of-emails/maildir/bsd/{email-sendmail-52.eml → lhost-sendmail-52.eml} +0 -0
  456. data/set-of-emails/maildir/bsd/{email-sendmail-53.eml → lhost-sendmail-53.eml} +0 -0
  457. data/set-of-emails/maildir/bsd/{email-sendmail-54.eml → lhost-sendmail-54.eml} +0 -0
  458. data/set-of-emails/maildir/bsd/{email-sendmail-55.eml → lhost-sendmail-55.eml} +0 -0
  459. data/set-of-emails/maildir/bsd/{email-sendmail-56.eml → lhost-sendmail-56.eml} +0 -0
  460. data/set-of-emails/maildir/bsd/{email-surfcontrol-01.eml → lhost-surfcontrol-01.eml} +0 -0
  461. data/set-of-emails/maildir/bsd/{email-surfcontrol-02.eml → lhost-surfcontrol-02.eml} +0 -0
  462. data/set-of-emails/maildir/bsd/{email-surfcontrol-03.eml → lhost-surfcontrol-03.eml} +0 -0
  463. data/set-of-emails/maildir/bsd/{email-v5sendmail-01.eml → lhost-v5sendmail-01.eml} +0 -0
  464. data/set-of-emails/maildir/bsd/{email-v5sendmail-02.eml → lhost-v5sendmail-02.eml} +0 -0
  465. data/set-of-emails/maildir/bsd/{email-v5sendmail-03.eml → lhost-v5sendmail-03.eml} +0 -0
  466. data/set-of-emails/maildir/bsd/{email-v5sendmail-04.eml → lhost-v5sendmail-04.eml} +0 -0
  467. data/set-of-emails/maildir/bsd/{email-v5sendmail-05.eml → lhost-v5sendmail-05.eml} +0 -0
  468. data/set-of-emails/maildir/bsd/{email-v5sendmail-06.eml → lhost-v5sendmail-06.eml} +0 -0
  469. data/set-of-emails/maildir/bsd/{email-v5sendmail-07.eml → lhost-v5sendmail-07.eml} +0 -0
  470. data/set-of-emails/maildir/bsd/{email-verizon-01.eml → lhost-verizon-01.eml} +0 -0
  471. data/set-of-emails/maildir/bsd/{email-verizon-02.eml → lhost-verizon-02.eml} +0 -0
  472. data/set-of-emails/maildir/bsd/{email-x1-01.eml → lhost-x1-01.eml} +0 -0
  473. data/set-of-emails/maildir/bsd/{email-x1-02.eml → lhost-x1-02.eml} +0 -0
  474. data/set-of-emails/maildir/bsd/{email-x2-01.eml → lhost-x2-01.eml} +0 -0
  475. data/set-of-emails/maildir/bsd/{email-x2-02.eml → lhost-x2-02.eml} +0 -0
  476. data/set-of-emails/maildir/bsd/{email-x2-03.eml → lhost-x2-03.eml} +0 -0
  477. data/set-of-emails/maildir/bsd/{email-x2-04.eml → lhost-x2-04.eml} +0 -0
  478. data/set-of-emails/maildir/bsd/{email-x2-05.eml → lhost-x2-05.eml} +0 -0
  479. data/set-of-emails/maildir/bsd/{email-x3-01.eml → lhost-x3-01.eml} +0 -0
  480. data/set-of-emails/maildir/bsd/{email-x3-02.eml → lhost-x3-02.eml} +0 -0
  481. data/set-of-emails/maildir/bsd/{email-x3-03.eml → lhost-x3-03.eml} +0 -0
  482. data/set-of-emails/maildir/bsd/{email-x3-05.eml → lhost-x3-05.eml} +0 -0
  483. data/set-of-emails/maildir/bsd/{email-x4-01.eml → lhost-x4-01.eml} +0 -0
  484. data/set-of-emails/maildir/bsd/{email-x4-08.eml → lhost-x4-08.eml} +0 -0
  485. data/set-of-emails/maildir/bsd/{email-x5-01.eml → lhost-x5-01.eml} +0 -0
  486. data/set-of-emails/maildir/bsd/lhost-x6-01.eml +71 -0
  487. data/set-of-emails/maildir/bsd/lhost-x6-02.eml +68 -0
  488. data/set-of-emails/maildir/bsd/{email-yahoo-01.eml → lhost-yahoo-01.eml} +0 -0
  489. data/set-of-emails/maildir/bsd/{email-yahoo-02.eml → lhost-yahoo-02.eml} +0 -0
  490. data/set-of-emails/maildir/bsd/{email-yahoo-03.eml → lhost-yahoo-03.eml} +0 -0
  491. data/set-of-emails/maildir/bsd/{email-yahoo-04.eml → lhost-yahoo-04.eml} +0 -0
  492. data/set-of-emails/maildir/bsd/{email-yahoo-05.eml → lhost-yahoo-05.eml} +0 -0
  493. data/set-of-emails/maildir/bsd/{email-yahoo-06.eml → lhost-yahoo-06.eml} +0 -0
  494. data/set-of-emails/maildir/bsd/{email-yahoo-07.eml → lhost-yahoo-07.eml} +0 -0
  495. data/set-of-emails/maildir/bsd/{email-yahoo-08.eml → lhost-yahoo-08.eml} +0 -0
  496. data/set-of-emails/maildir/bsd/{email-yahoo-09.eml → lhost-yahoo-09.eml} +0 -0
  497. data/set-of-emails/maildir/bsd/{email-yahoo-10.eml → lhost-yahoo-10.eml} +0 -0
  498. data/set-of-emails/maildir/bsd/{email-yahoo-11.eml → lhost-yahoo-11.eml} +0 -0
  499. data/set-of-emails/maildir/bsd/{email-yahoo-12.eml → lhost-yahoo-12.eml} +0 -0
  500. data/set-of-emails/maildir/bsd/{email-yahoo-13.eml → lhost-yahoo-13.eml} +0 -0
  501. data/set-of-emails/maildir/bsd/{email-yahoo-14.eml → lhost-yahoo-14.eml} +0 -0
  502. data/set-of-emails/maildir/bsd/{email-yandex-01.eml → lhost-yandex-01.eml} +0 -0
  503. data/set-of-emails/maildir/bsd/{email-yandex-02.eml → lhost-yandex-02.eml} +0 -0
  504. data/set-of-emails/maildir/bsd/{email-yandex-03.eml → lhost-yandex-03.eml} +0 -0
  505. data/set-of-emails/maildir/bsd/{email-zoho-01.eml → lhost-zoho-01.eml} +0 -0
  506. data/set-of-emails/maildir/bsd/{email-zoho-02.eml → lhost-zoho-02.eml} +0 -0
  507. data/set-of-emails/maildir/bsd/{email-zoho-03.eml → lhost-zoho-03.eml} +0 -0
  508. data/set-of-emails/maildir/bsd/{email-zoho-04.eml → lhost-zoho-04.eml} +0 -0
  509. data/set-of-emails/maildir/bsd/{email-zoho-05.eml → lhost-zoho-05.eml} +0 -0
  510. data/set-of-emails/maildir/bsd/{rfc3464-41.eml → rfc3834-04.eml} +0 -0
  511. data/set-of-emails/maildir/dos/{email-activehunter-01.eml → lhost-activehunter-01.eml} +0 -0
  512. data/set-of-emails/maildir/dos/{email-amavis-01.eml → lhost-amavis-01.eml} +0 -0
  513. data/set-of-emails/maildir/dos/{email-amazonses-01.eml → lhost-amazonses-01.eml} +0 -0
  514. data/set-of-emails/maildir/dos/{email-amazonworkmail-01.eml → lhost-amazonworkmail-01.eml} +0 -0
  515. data/set-of-emails/maildir/dos/{email-aol-01.eml → lhost-aol-01.eml} +0 -0
  516. data/set-of-emails/maildir/dos/{email-apachejames-01.eml → lhost-apachejames-01.eml} +0 -0
  517. data/set-of-emails/maildir/dos/lhost-barracuda-01.eml +67 -0
  518. data/set-of-emails/maildir/dos/{email-bigfoot-01.eml → lhost-bigfoot-01.eml} +0 -0
  519. data/set-of-emails/maildir/dos/{email-biglobe-01.eml → lhost-biglobe-01.eml} +0 -0
  520. data/set-of-emails/maildir/dos/{email-courier-01.eml → lhost-courier-01.eml} +0 -0
  521. data/set-of-emails/maildir/dos/{email-domino-01.eml → lhost-domino-01.eml} +0 -0
  522. data/set-of-emails/maildir/dos/{email-einsundeins-01.eml → lhost-einsundeins-01.eml} +0 -0
  523. data/set-of-emails/maildir/dos/{email-exchange-01.eml → lhost-exchange-01.eml} +0 -0
  524. data/set-of-emails/maildir/dos/{email-exchange2003-01.eml → lhost-exchange2003-01.eml} +0 -0
  525. data/set-of-emails/maildir/dos/{email-exchange2007-01.eml → lhost-exchange2007-01.eml} +0 -0
  526. data/set-of-emails/maildir/dos/{email-exim-01.eml → lhost-exim-01.eml} +0 -0
  527. data/set-of-emails/maildir/dos/{email-ezweb-01.eml → lhost-ezweb-01.eml} +0 -0
  528. data/set-of-emails/maildir/dos/{email-facebook-01.eml → lhost-facebook-01.eml} +0 -0
  529. data/set-of-emails/maildir/dos/{email-google-01.eml → lhost-gmail-01.eml} +0 -0
  530. data/set-of-emails/maildir/dos/{email-gmx-01.eml → lhost-gmx-01.eml} +0 -0
  531. data/set-of-emails/maildir/dos/lhost-googlegroups-01.eml +116 -0
  532. data/set-of-emails/maildir/dos/{email-gsuite-01.eml → lhost-gsuite-01.eml} +0 -0
  533. data/set-of-emails/maildir/dos/{email-imailserver-01.eml → lhost-imailserver-01.eml} +0 -0
  534. data/set-of-emails/maildir/dos/{email-interscanmss-01.eml → lhost-interscanmss-01.eml} +0 -0
  535. data/set-of-emails/maildir/dos/{email-kddi-01.eml → lhost-kddi-01.eml} +0 -0
  536. data/set-of-emails/maildir/dos/{email-mailfoundry-01.eml → lhost-mailfoundry-01.eml} +0 -0
  537. data/set-of-emails/maildir/dos/{email-mailmarshalsmtp-01.eml → lhost-mailmarshalsmtp-01.eml} +0 -0
  538. data/set-of-emails/maildir/dos/{email-mailru-01.eml → lhost-mailru-01.eml} +0 -0
  539. data/set-of-emails/maildir/dos/{email-mcafee-01.eml → lhost-mcafee-01.eml} +0 -0
  540. data/set-of-emails/maildir/dos/{email-messagelabs-01.eml → lhost-messagelabs-01.eml} +0 -0
  541. data/set-of-emails/maildir/dos/{email-messagingserver-01.eml → lhost-messagingserver-01.eml} +0 -0
  542. data/set-of-emails/maildir/dos/{email-mfilter-01.eml → lhost-mfilter-01.eml} +0 -0
  543. data/set-of-emails/maildir/dos/{email-mxlogic-01.eml → lhost-mxlogic-01.eml} +0 -0
  544. data/set-of-emails/maildir/dos/{email-notes-01.eml → lhost-notes-01.eml} +0 -0
  545. data/set-of-emails/maildir/dos/{email-office365-01.eml → lhost-office365-01.eml} +0 -0
  546. data/set-of-emails/maildir/dos/{email-opensmtpd-01.eml → lhost-opensmtpd-01.eml} +0 -0
  547. data/set-of-emails/maildir/dos/{email-outlook-01.eml → lhost-outlook-01.eml} +0 -0
  548. data/set-of-emails/maildir/dos/{email-postfix-01.eml → lhost-postfix-01.eml} +0 -0
  549. data/set-of-emails/maildir/dos/lhost-powermta-01.eml +64 -0
  550. data/set-of-emails/maildir/dos/{email-qmail-01.eml → lhost-qmail-01.eml} +0 -0
  551. data/set-of-emails/maildir/dos/{email-receivingses-01.eml → lhost-receivingses-01.eml} +0 -0
  552. data/set-of-emails/maildir/dos/{email-sendgrid-01.eml → lhost-sendgrid-01.eml} +0 -0
  553. data/set-of-emails/maildir/dos/{email-sendmail-01.eml → lhost-sendmail-01.eml} +0 -0
  554. data/set-of-emails/maildir/dos/{email-surfcontrol-01.eml → lhost-surfcontrol-01.eml} +0 -0
  555. data/set-of-emails/maildir/dos/{email-v5sendmail-01.eml → lhost-v5sendmail-01.eml} +0 -0
  556. data/set-of-emails/maildir/dos/{email-verizon-01.eml → lhost-verizon-01.eml} +0 -0
  557. data/set-of-emails/maildir/dos/{email-x1-01.eml → lhost-x1-01.eml} +0 -0
  558. data/set-of-emails/maildir/dos/{email-x2-01.eml → lhost-x2-01.eml} +0 -0
  559. data/set-of-emails/maildir/dos/{email-x3-01.eml → lhost-x3-01.eml} +0 -0
  560. data/set-of-emails/maildir/dos/{email-x4-01.eml → lhost-x4-01.eml} +0 -0
  561. data/set-of-emails/maildir/dos/{email-x5-01.eml → lhost-x5-01.eml} +0 -0
  562. data/set-of-emails/maildir/dos/lhost-x6-01.eml +71 -0
  563. data/set-of-emails/maildir/dos/{email-yahoo-01.eml → lhost-yahoo-01.eml} +0 -0
  564. data/set-of-emails/maildir/dos/{email-yandex-01.eml → lhost-yandex-01.eml} +0 -0
  565. data/set-of-emails/maildir/dos/{email-zoho-01.eml → lhost-zoho-01.eml} +0 -0
  566. data/set-of-emails/maildir/dos/rhost-iua-01.eml +70 -0
  567. data/set-of-emails/maildir/mac/{email-activehunter-01.eml → lhost-activehunter-01.eml} +0 -0
  568. data/set-of-emails/maildir/mac/{email-amavis-01.eml → lhost-amavis-01.eml} +0 -0
  569. data/set-of-emails/maildir/mac/{email-amazonses-01.eml → lhost-amazonses-01.eml} +0 -0
  570. data/set-of-emails/maildir/mac/{email-amazonworkmail-01.eml → lhost-amazonworkmail-01.eml} +0 -0
  571. data/set-of-emails/maildir/mac/{email-aol-01.eml → lhost-aol-01.eml} +0 -0
  572. data/set-of-emails/maildir/mac/{email-apachejames-01.eml → lhost-apachejames-01.eml} +0 -0
  573. data/set-of-emails/maildir/mac/lhost-barracuda-01.eml +1 -4
  574. data/set-of-emails/maildir/mac/{email-bigfoot-01.eml → lhost-bigfoot-01.eml} +0 -0
  575. data/set-of-emails/maildir/mac/{email-biglobe-01.eml → lhost-biglobe-01.eml} +0 -0
  576. data/set-of-emails/maildir/mac/{email-courier-01.eml → lhost-courier-01.eml} +0 -0
  577. data/set-of-emails/maildir/mac/{email-domino-01.eml → lhost-domino-01.eml} +0 -0
  578. data/set-of-emails/maildir/mac/{email-einsundeins-01.eml → lhost-einsundeins-01.eml} +0 -0
  579. data/set-of-emails/maildir/mac/{email-exchange-01.eml → lhost-exchange-01.eml} +0 -0
  580. data/set-of-emails/maildir/mac/{email-exchange2003-01.eml → lhost-exchange2003-01.eml} +0 -0
  581. data/set-of-emails/maildir/mac/{email-exchange2007-01.eml → lhost-exchange2007-01.eml} +0 -0
  582. data/set-of-emails/maildir/mac/{email-exim-01.eml → lhost-exim-01.eml} +0 -0
  583. data/set-of-emails/maildir/mac/{email-ezweb-01.eml → lhost-ezweb-01.eml} +0 -0
  584. data/set-of-emails/maildir/mac/{email-facebook-01.eml → lhost-facebook-01.eml} +0 -0
  585. data/set-of-emails/maildir/mac/{email-google-01.eml → lhost-gmail-01.eml} +0 -0
  586. data/set-of-emails/maildir/mac/{email-gmx-01.eml → lhost-gmx-01.eml} +0 -0
  587. data/set-of-emails/maildir/mac/lhost-googlegroups-01.eml +1 -1
  588. data/set-of-emails/maildir/mac/{email-gsuite-01.eml → lhost-gsuite-01.eml} +0 -0
  589. data/set-of-emails/maildir/mac/{email-imailserver-01.eml → lhost-imailserver-01.eml} +0 -0
  590. data/set-of-emails/maildir/mac/{email-interscanmss-01.eml → lhost-interscanmss-01.eml} +0 -0
  591. data/set-of-emails/maildir/mac/{email-kddi-01.eml → lhost-kddi-01.eml} +0 -0
  592. data/set-of-emails/maildir/mac/{email-mailfoundry-01.eml → lhost-mailfoundry-01.eml} +0 -0
  593. data/set-of-emails/maildir/mac/{email-mailmarshalsmtp-01.eml → lhost-mailmarshalsmtp-01.eml} +0 -0
  594. data/set-of-emails/maildir/mac/{email-mailru-01.eml → lhost-mailru-01.eml} +0 -0
  595. data/set-of-emails/maildir/mac/{email-mcafee-01.eml → lhost-mcafee-01.eml} +0 -0
  596. data/set-of-emails/maildir/mac/{email-messagelabs-01.eml → lhost-messagelabs-01.eml} +0 -0
  597. data/set-of-emails/maildir/mac/{email-messagingserver-01.eml → lhost-messagingserver-01.eml} +0 -0
  598. data/set-of-emails/maildir/mac/{email-mfilter-01.eml → lhost-mfilter-01.eml} +0 -0
  599. data/set-of-emails/maildir/mac/{email-mxlogic-01.eml → lhost-mxlogic-01.eml} +0 -0
  600. data/set-of-emails/maildir/mac/{email-notes-01.eml → lhost-notes-01.eml} +0 -0
  601. data/set-of-emails/maildir/mac/{email-office365-01.eml → lhost-office365-01.eml} +0 -0
  602. data/set-of-emails/maildir/mac/{email-opensmtpd-01.eml → lhost-opensmtpd-01.eml} +0 -0
  603. data/set-of-emails/maildir/mac/{email-outlook-01.eml → lhost-outlook-01.eml} +0 -0
  604. data/set-of-emails/maildir/mac/{email-postfix-01.eml → lhost-postfix-01.eml} +0 -0
  605. data/set-of-emails/maildir/mac/lhost-powermta-01.eml +1 -4
  606. data/set-of-emails/maildir/mac/{email-qmail-01.eml → lhost-qmail-01.eml} +0 -0
  607. data/set-of-emails/maildir/mac/{email-receivingses-01.eml → lhost-receivingses-01.eml} +0 -0
  608. data/set-of-emails/maildir/mac/{email-sendgrid-01.eml → lhost-sendgrid-01.eml} +0 -0
  609. data/set-of-emails/maildir/mac/{email-sendmail-01.eml → lhost-sendmail-01.eml} +0 -0
  610. data/set-of-emails/maildir/mac/{email-surfcontrol-01.eml → lhost-surfcontrol-01.eml} +0 -0
  611. data/set-of-emails/maildir/mac/{email-v5sendmail-01.eml → lhost-v5sendmail-01.eml} +0 -0
  612. data/set-of-emails/maildir/mac/{email-verizon-01.eml → lhost-verizon-01.eml} +0 -0
  613. data/set-of-emails/maildir/mac/{email-x1-01.eml → lhost-x1-01.eml} +0 -0
  614. data/set-of-emails/maildir/mac/{email-x2-01.eml → lhost-x2-01.eml} +0 -0
  615. data/set-of-emails/maildir/mac/{email-x3-01.eml → lhost-x3-01.eml} +0 -0
  616. data/set-of-emails/maildir/mac/{email-x4-01.eml → lhost-x4-01.eml} +0 -0
  617. data/set-of-emails/maildir/mac/{email-x5-01.eml → lhost-x5-01.eml} +0 -0
  618. data/set-of-emails/maildir/mac/lhost-x6-01.eml +1 -3
  619. data/set-of-emails/maildir/mac/{email-yahoo-01.eml → lhost-yahoo-01.eml} +0 -0
  620. data/set-of-emails/maildir/mac/{email-yandex-01.eml → lhost-yandex-01.eml} +0 -0
  621. data/set-of-emails/maildir/mac/{email-zoho-01.eml → lhost-zoho-01.eml} +0 -0
  622. data/set-of-emails/maildir/mac/rhost-iua-01.eml +1 -4
  623. metadata +547 -506
  624. data/lib/sisimai/lhost/userdefined.rb +0 -95
@@ -1,23 +1,22 @@
1
1
  module Sisimai
2
2
  class Mail
3
- # Sisimai::Mail::Maildir is a reader for getting contents of each email in the
4
- # Maildir/ directory.
3
+ # Sisimai::Mail::Maildir is a reader for getting contents of each email in
4
+ # the Maildir/ directory.
5
5
  class Maildir
6
6
  # Imported from p5-Sisimail/lib/Sisimai/Mail/Maildir.pm
7
7
  # :dir [String] Path to Maildir/
8
- # :size [Integer] The number of entires in the directory
8
+ # :size [Integer] The number of files/directories in the Maildir/
9
9
  # :path [String] Path to each file
10
10
  # :file, [String] Each file name of a mail in the Maildir/
11
- # :inodes [Array] i-node List of files in the Maildir/
12
- # :count [Integer] The number of file has read
11
+ # :offset [Integer] The number of email files in the Maildir/
13
12
  # :handle [IO::Dir] Directory handle
14
- attr_reader :dir, :size
15
- attr_accessor :path, :file, :inodes, :count, :handle
13
+ attr_reader :dir
14
+ attr_accessor :size, :path, :file, :offset, :handle
16
15
 
17
16
  # Constructor of Sisimai::Mail::Maildir
18
- # @param [String] argvs Path to Maildir/
19
- # @return [Sisimai::Mail::Maildir,Nil] Object or nil if the argument is
20
- # not a directory or does not exist
17
+ # @param [String] argvs Path to Maildir/
18
+ # @return [Sisimai::Mail::Maildir] Object
19
+ # [Nil] is not a directory or does not exist
21
20
  def initialize(argv1)
22
21
  raise Errno::ENOENT unless File.exist?(argv1)
23
22
  raise Errno::ENOTDIR unless File.ftype(argv1) == 'directory'
@@ -26,45 +25,45 @@ module Sisimai
26
25
  @size = Dir.entries(argv1).size
27
26
  @dir = argv1
28
27
  @file = nil
29
- @inodes = {}
30
- @count = 0
28
+ @offset = 0
31
29
  @handle = Dir.open(argv1)
32
30
  end
33
31
 
34
32
  # Maildir reader, works as a iterator.
35
33
  # @return [String] Contents of file in Maildir/
36
34
  def read
37
- return nil unless self.count < self.size
38
-
35
+ return nil unless self.offset < self.size
39
36
  seekhandle = self.handle
40
37
  readbuffer = ''
41
38
 
42
39
  begin
43
40
  while r = seekhandle.read do
44
41
  # Read each file in the directory
45
- next if r == '.' || r == '..'
42
+ if r == '.' || r == '..'
43
+ # Is a directory
44
+ self.offset += 1
45
+ next
46
+ end
46
47
 
47
48
  emailindir = (self.dir + '/' + r).squeeze('/')
48
- next unless File.ftype(emailindir) == 'file'
49
- next unless File.size(emailindir) > 0
50
- next unless File.readable?(emailindir)
51
-
52
- emailinode = File.stat(emailindir).ino
53
- next if self.inodes[emailinode]
49
+ if File.ftype(emailindir) != 'file' ||
50
+ File.size(emailindir) == 0 ||
51
+ File.readable?(emailindir) == false
52
+ # The file is not a file, is empty, is not readable
53
+ self.offset += 1
54
+ next
55
+ end
54
56
 
55
57
  File.open(emailindir, 'r:UTF-8') do |f|
56
58
  readbuffer = f.read
57
59
  end
58
60
 
59
- self.inodes[emailinode] = 1
60
- self.path = emailindir
61
- self.file = r
62
-
61
+ self.offset += 1
62
+ self.path = emailindir
63
+ self.file = r
63
64
  break
64
65
  end
65
-
66
- self.count += 1
67
- seekhandle.close unless self.count < self.size
66
+ seekhandle.close unless self.offset < self.size
68
67
  end
69
68
 
70
69
  return readbuffer
@@ -3,39 +3,41 @@ module Sisimai
3
3
  # Sisimai::Mail::Memory is a class for reading an email string
4
4
  class Memory
5
5
  # Imported from p5-Sisimail/lib/Sisimai/Mail/Memory.pm
6
- # :size [Integer] data size of the email text
7
- # :data [Array] Entire bounce mail message
8
- # :offset [Integer] Index of ":data"
9
- attr_reader :size
10
- attr_accessor :data, :offset
6
+ # :path [String] Fixed string "<MEMORY>"
7
+ # :size [Integer] data size of the email text
8
+ # :payload [Array] Entire bounce mail message
9
+ # :offset [Integer] Index of ":payload"
10
+ attr_reader :path, :size
11
+ attr_accessor :payload, :offset
11
12
 
12
13
  # Constructor of Sisimai::Mail::Memory
13
- # @param [String] argv1 Entire email string
14
- # @return [Sisimai::Mail::Memory,Nil] Object or nil if the argument is
15
- # not specified or does not exist
14
+ # @param [String] argv1 Entire email string
15
+ # @return [Sisimai::Mail::Memory] Object
16
+ # [Nil] is not specified or does not exist
16
17
  def initialize(argv1)
17
18
  raise 'is not a String' unless argv1.is_a? ::String
18
19
  raise 'is empty' if argv1.empty?
19
20
 
20
- @size = argv1.size
21
- @data = []
22
- @offset = 0
21
+ @path = '<MEMORY>'
22
+ @size = argv1.size
23
+ @payload = []
24
+ @offset = 0
23
25
 
24
26
  if argv1.start_with?('From ')
25
27
  # UNIX mbox
26
- @data = argv1.split(/^From /).map! { |e| e = 'From ' + e }
27
- @data.shift
28
+ @payload = argv1.split(/^From /).map! { |e| e = 'From ' + e }
29
+ @payload.shift
28
30
  else
29
- @data = [argv1]
31
+ @payload = [argv1]
30
32
  end
31
33
  end
32
34
 
33
35
  # Memory reader, works as an iterator.
34
36
  # @return [String] Contents of a bounce mail
35
37
  def read
36
- return nil if self.data.empty?
38
+ return nil if self.payload.empty?
37
39
  self.offset += 1
38
- return self.data.shift
40
+ return self.payload.shift
39
41
  end
40
42
  end
41
43
  end
@@ -4,10 +4,9 @@ module Sisimai
4
4
  # STDIN
5
5
  class STDIN
6
6
  # Imported from p5-Sisimail/lib/Sisimai/Mail/STDIN.pm
7
- # :path [String] Path to mbox
8
- # :name [String] File name of the mbox
9
- # :size [Integer] File size of the mbox
10
- # :offset [Integer] Offset position for seeking
7
+ # :path [String] Fixed string "<STDIN>"
8
+ # :size [Integer] Data size which has been read
9
+ # :offset [Integer] The number of emails which have neen read
11
10
  # :handle [IO::File] File handle
12
11
  attr_reader :path, :name, :size
13
12
  attr_accessor :offset, :handle
@@ -19,7 +18,6 @@ module Sisimai
19
18
  raise 'is not an IO object' unless stdin.is_a?(IO)
20
19
 
21
20
  @path = '<STDIN>'
22
- @name = '<STDIN>'
23
21
  @size = nil
24
22
  @offset = 0
25
23
  @handle = stdin
@@ -45,6 +43,8 @@ module Sisimai
45
43
  readhandle.close
46
44
  end
47
45
 
46
+ self.size += readbuffer.size
47
+ self.offset += 1
48
48
  return readbuffer
49
49
  end
50
50
  end
data/lib/sisimai/mda.rb CHANGED
@@ -75,16 +75,10 @@ module Sisimai
75
75
  }.freeze
76
76
 
77
77
  # Parse message body and return reason and text
78
- # @param [Hash] mhead Message header of a bounce email
79
- # @options mhead [String] from From header
80
- # @options mhead [String] date Date header
81
- # @options mhead [String] subject Subject header
82
- # @options mhead [Array] received Received headers
83
- # @options mhead [String] others Other required headers
84
- # @param [String] mbody Message body of a bounce email
85
- # @return [Hash, Nil] Bounce data list and message/rfc822 part
86
- # or nil if it failed to parse or the
87
- # arguments are missing
78
+ # @param [Hash] mhead Message headers of a bounce email
79
+ # @param [String] mbody Message body of a bounce email
80
+ # @return [Hash] Bounce data list and message/rfc822 part
81
+ # @return [Nil] it failed to parse or the arguments are missing
88
82
  def make(mhead, mbody)
89
83
  return nil unless mhead['from'].downcase.start_with?('mail delivery subsystem','mailer-daemon', 'postmaster')
90
84
 
@@ -12,49 +12,29 @@ module Sisimai
12
12
  # :catch [Any] The results returned by hook method
13
13
  attr_accessor :from, :header, :ds, :rfc822, :catch
14
14
 
15
- require 'sisimai/arf'
16
15
  require 'sisimai/mime'
17
16
  require 'sisimai/order'
17
+ require 'sisimai/lhost'
18
18
  require 'sisimai/string'
19
19
  require 'sisimai/address'
20
20
  require 'sisimai/rfc5322'
21
- require 'sisimai/rfc3834'
22
- require 'sisimai/smtp/error'
23
-
24
21
  DefaultSet = Sisimai::Order.another
25
- ExtHeaders = Sisimai::Order.headers
26
- SubjectTab = Sisimai::Order.by('subject')
27
- RFC822Head = Sisimai::RFC5322.HEADERFIELDS
28
- RFC3834Set = Sisimai::RFC3834.headerlist
29
- HeaderList = %w[from to date subject content-type reply-to message-id
30
- received content-transfer-encoding return-path x-mailer]
31
- IsMultiple = { 'received' => true }
32
- EndOfEmail = Sisimai::String.EOM
33
- BorderLine = '__MIME_ENCODED_BOUNDARY__'
22
+ LhostTable = Sisimai::Lhost.path
34
23
 
35
24
  # Constructor of Sisimai::Message
36
25
  # @param [String] data Email text data
37
26
  # @param [Hash] argvs Module to be loaded
38
27
  # @options argvs [String] :data Entire email message
39
28
  # @options argvs [Array] :load User defined MTA module list
40
- # @options argvs [Array] :field Email header names to be captured
41
29
  # @options argvs [Array] :order The order of MTA modules
42
30
  # @options argvs [Code] :hook Reference to callback method
43
31
  # @return [Sisimai::Message] Structured email data or nil if each
44
32
  # value of the arguments are missing
45
33
  def initialize(data: '', **argvs)
46
34
  return nil if data.empty?
47
-
48
35
  email = data.scrub('?').gsub("\r\n", "\n")
49
- field = argvs[:field] || []
50
-
51
- unless field.is_a? Array
52
- # Unsupported value in "field"
53
- warn ' ***warning: "field" accepts an array reference only'
54
- return nil
55
- end
56
36
 
57
- methodargv = { 'data' => email, 'hook' => argvs[:hook] || nil, 'field' => field }
37
+ methodargv = { 'data' => email, 'hook' => argvs[:hook] || nil }
58
38
  [:load, :order].each do |e|
59
39
  # Order of MTA modules
60
40
  next unless argvs[e]
@@ -85,7 +65,6 @@ module Sisimai
85
65
  # @param [Hash] argvs Email data
86
66
  # @options argvs [String] data Entire email message
87
67
  # @options argvs [Array] load User defined MTA module list
88
- # @options argvs [Array] field Email header names to be captured
89
68
  # @options argvs [Array] order The order of MTA modules
90
69
  # @options argvs [Code] hook Reference to callback method
91
70
  # @return [Hash] Resolved data structure
@@ -110,35 +89,41 @@ module Sisimai
110
89
  return nil unless aftersplit = Sisimai::Message.divideup(email)
111
90
 
112
91
  # 2. Convert email headers from text to hash reference
113
- headerargv = {
114
- 'extheaders' => ExtHeaders,
115
- 'tryonfirst' => [],
116
- 'extrafield' => argvs['field'] || [],
117
- }
118
92
  processing['from'] = aftersplit['from']
119
- processing['header'] = Sisimai::Message.headers(aftersplit['header'], headerargv)
93
+ processing['header'] = Sisimai::Message.makemap(aftersplit['header'])
120
94
 
121
- # 3. Check headers for detecting MTA modules
122
- if headerargv['tryonfirst'].empty?
123
- headerargv['tryonfirst'] += Sisimai::Message.makeorder(processing['header'])
95
+ # 3. Decode and rewrite the "Subject:" header
96
+ unless processing['header']['subject'].empty?
97
+ # Decode MIME-Encoded "Subject:" header
98
+ s = processing['header']['subject']
99
+ q = Sisimai::MIME.is_mimeencoded(s) ? Sisimai::MIME.mimedecode(s.split(/[ ]/)) : s
100
+
101
+ # Remove "Fwd:" string from the Subject: header
102
+ if cv = q.downcase.match(/\A[ \t]*fwd?:[ ]*(.*)\z/)
103
+ # Delete quoted strings, quote symbols(>)
104
+ q = cv[1]
105
+ aftersplit['body'] = aftersplit['body'].gsub(/^[>]+[ ]/, '').gsub(/^[>]$/, '')
106
+ end
107
+ processing['header']['subject'] = q
124
108
  end
125
109
 
126
110
  # 4. Rewrite message body for detecting the bounce reason
111
+ tryonfirst = Sisimai::Order.make(processing['header']['subject'])
127
112
  methodargv = {
128
113
  'hook' => hookmethod,
129
114
  'mail' => processing,
130
115
  'body' => aftersplit['body'],
131
- 'tryonfirst' => headerargv['tryonfirst'],
116
+ 'tryonfirst' => tryonfirst,
132
117
  'tobeloaded' => tobeloaded,
133
118
  }
134
119
  return nil unless bouncedata = Sisimai::Message.parse(methodargv)
135
120
  return nil if bouncedata.empty?
136
- %w|ds catch rfc822|.each { |e| processing[e] = bouncedata[e] }
137
121
 
138
122
  # 5. Rewrite headers of the original message in the body part
123
+ %w|ds catch rfc822|.each { |e| processing[e] = bouncedata[e] }
139
124
  p = bouncedata['rfc822']
140
125
  p = aftersplit['body'] if p.empty?
141
- processing['rfc822'] = p.is_a?(::String) ? Sisimai::Message.takeapart(p) : p
126
+ processing['rfc822'] = p.is_a?(::String) ? Sisimai::Message.makemap(p, true) : p
142
127
 
143
128
  return processing
144
129
  end
@@ -171,12 +156,6 @@ module Sisimai
171
156
  warn ' ***warning: Failed to load ' << v
172
157
  next
173
158
  end
174
-
175
- Module.const_get(v).headerlist.each do |w|
176
- # Get header name which required user defined MTA module
177
- ExtHeaders[w] ||= {}
178
- ExtHeaders[w][v] = 1
179
- end
180
159
  tobeloaded << v
181
160
  end
182
161
  end
@@ -190,92 +169,6 @@ module Sisimai
190
169
  return tobeloaded
191
170
  end
192
171
 
193
- # Check headers for detecting MTA module and returns the order of modules
194
- # @param [Hash] heads Email header data
195
- # @return [Array] Order of MTA modules
196
- def self.makeorder(heads)
197
- return [] unless heads
198
- return [] unless heads['subject']
199
- return [] if heads['subject'].empty?
200
- order = []
201
-
202
- # Try to match the value of "Subject" with patterns generated by
203
- # Sisimai::Order->by('subject') method
204
- title = heads['subject'].downcase
205
- SubjectTab.each_key do |e|
206
- # Get MTA list from the subject header
207
- next unless title.include?(e)
208
- order += SubjectTab[e] # Matched and push MTA list
209
- break
210
- end
211
- return order
212
- end
213
-
214
- # Convert email headers from text to hash reference
215
- # @param [String] heads Email header data
216
- # @param [Hash] argvs
217
- # @param options extheaders [Array] External header table
218
- # @return [Hash] Structured email header data
219
- def self.headers(heads, argvs = {})
220
- return nil unless heads
221
-
222
- currheader = ''
223
- allheaders = {}
224
- structured = {}
225
- extheaders = argvs['extheaders'] || []
226
- extrafield = argvs['extrafield'] || []
227
- headslices = heads.split("\n")
228
-
229
- HeaderList.each { |e| structured[e] = nil }
230
- HeaderList.each { |e| allheaders[e] = true }
231
- RFC3834Set.each { |e| allheaders[e] = true }
232
- IsMultiple.each_key { |e| structured[e] = [] }
233
- extheaders.each_key { |e| allheaders[e] = true }
234
- unless extrafield.empty?
235
- extrafield.each { |e| allheaders[e] = true }
236
- end
237
-
238
- while e = headslices.shift do
239
- # Convert email headers to hash
240
- if cv = e.match(/\A[ \t]+(.+)\z/)
241
- # Continued (foled) header value from the previous line
242
- next unless allheaders[currheader]
243
-
244
- # Header line continued from the previous line
245
- if structured[currheader].is_a? Array
246
- # Concatenate a header which have multi-lines such as 'Received'
247
- structured[currheader][-1] << ' ' << cv[1]
248
- else
249
- structured[currheader] ||= ''
250
- structured[currheader] << ' ' << cv[1]
251
- end
252
- else
253
- # split the line into a header name and a header content
254
- (lhs, rhs) = e.split(/:[ ]*/, 2)
255
- currheader = lhs ? lhs.downcase : ''
256
- next unless allheaders[currheader]
257
-
258
- if IsMultiple[currheader]
259
- # Such as 'Received' header, there are multiple headers in a single
260
- # email message.
261
- rhs = rhs.tr("\t", ' ')
262
- structured[currheader] << rhs
263
- else
264
- # Other headers except "Received" and so on
265
- if extheaders[currheader]
266
- # MTA specific header
267
- extheaders[currheader].each do |r|
268
- next if argvs['tryonfirst'].index(r)
269
- argvs['tryonfirst'] << r
270
- end
271
- end
272
- structured[currheader] = rhs
273
- end
274
- end
275
- end
276
- return structured
277
- end
278
-
279
172
  # Divide email data up headers and a body part.
280
173
  # @param [String] email Email data
281
174
  # @return [Hash] Email data after split
@@ -283,7 +176,6 @@ module Sisimai
283
176
  return nil if email.empty?
284
177
 
285
178
  block = { 'from' => '', 'header' => '', 'body' => '' }
286
- email.scrub!('?')
287
179
  email.gsub!(/\r\n/, "\n") if email.include?("\r\n")
288
180
  email.gsub!(/[ \t]+$/, '') if email =~ /[ \t]+$/
289
181
 
@@ -299,82 +191,59 @@ module Sisimai
299
191
  block['from'] = 'MAILER-DAEMON Tue Feb 11 00:00:00 2014'
300
192
  end
301
193
 
302
- block['body'] << "\n"
194
+ block['header'] << "\n" unless block['header'].end_with?("\n")
195
+ block['body'] << "\n"
303
196
  return block
304
197
  end
305
198
 
306
- # Take each email header in the original message apart
307
- # @param [String] heads The original message header
308
- # @return [Hash] Structured message headers
309
- def self.takeapart(heads)
310
- return {} unless heads
311
-
312
- # 1. Scrub to avoid "invalid byte sequence in UTF-8" exception (#82)
313
- # 2. Convert from string to hash reference
314
- heads = heads.scrub('?').gsub(/^[>]+[ ]/m, '').gsub(/=[ ]+=/, "=\n =")
315
-
316
- previousfn = '' # Previous field name
317
- asciiarmor = {} # Header names which has MIME encoded value
318
- headerpart = {} # Required headers in the original message part
319
- headslices = heads.split("\n")
320
-
321
- while e = headslices.shift do
322
- # Header name as a key, The value of header as a value
323
- if e.start_with?(' ', "\t")
324
- # Continued (foled) header value from the previous line
325
- next if previousfn.empty?
326
-
327
- # Concatenate the line if it is the value of required header
328
- if Sisimai::MIME.is_mimeencoded(e)
329
- # The line is MIME-Encoded test
330
- headerpart[previousfn] << if previousfn == 'subject'
331
- # Subject: header
332
- BorderLine + e
333
- else
334
- # Is not Subject header
335
- e
336
- end
337
- asciiarmor[previousfn] = true
338
- else
339
- # ASCII Characters only: Not MIME-Encoded
340
- headerpart[previousfn] << e.lstrip
341
- asciiarmor[previousfn] ||= false
342
- end
343
- else
344
- # Header name as a key, The value of header as a value
345
- (lhs, rhs) = e.split(/:[ ]*/, 2)
346
- next unless lhs
347
- lhs.downcase!
348
- previousfn = ''
349
-
350
- next unless RFC822Head[lhs]
351
- previousfn = lhs
352
- headerpart[previousfn] = rhs unless headerpart[previousfn]
353
- end
199
+ # Convert a text including email headers to a hash reference
200
+ # @param [String] argv0 Email header data
201
+ # @param [Bool] argv1 Decode "Subject:" header
202
+ # @return [Hash] Structured email header data
203
+ # @since v4.25.6
204
+ def self.makemap(argv0 = '', argv1 = nil)
205
+ return {} if argv0.empty?
206
+ argv0.gsub!(/^[>]+[ ]/m, '') # Remove '>' indent symbol of forwarded message
207
+
208
+ # Select and convert all the headers in $argv0. The following regular expression
209
+ # is based on https://gist.github.com/xtetsuji/b080e1f5551d17242f6415aba8a00239
210
+ headermaps = { 'subject' => '' }
211
+ recvheader = []
212
+ argv0.scan(/^([\w-]+):[ ]*(.*?)\n(?![\s\t])/m) { |e| headermaps[e[0].downcase] = e[1] }
213
+ headermaps.delete('received')
214
+ headermaps.each_key { |e| headermaps[e].gsub!(/\n[\s\t]+/, ' ') }
215
+
216
+ if argv0.include?('Received:')
217
+ # Capture values of each Received: header
218
+ recvheader = argv0.scan(/^Received:[ ]*(.*?)\n(?![\s\t])/m).flatten
219
+ recvheader.each { |e| e.gsub!(/\n[\s\t]+/, ' ') }
354
220
  end
355
- return headerpart unless headerpart['subject']
221
+ headermaps['received'] = recvheader
222
+
223
+ return headermaps unless argv1
224
+ return headermaps if headermaps['subject'].empty?
356
225
 
357
226
  # Convert MIME-Encoded subject
358
- if Sisimai::String.is_8bit(headerpart['subject'])
227
+ if Sisimai::String.is_8bit(headermaps['subject'])
359
228
  # The value of ``Subject'' header is including multibyte character,
360
229
  # is not MIME-Encoded text.
361
- headerpart['subject'].scrub!('?')
230
+ headermaps['subject'].scrub!('?')
362
231
  else
363
232
  # MIME-Encoded subject field or ASCII characters only
364
233
  r = []
365
- if asciiarmor['subject']
234
+ if Sisimai::MIME.is_mimeencoded(headermaps['subject'])
366
235
  # split the value of Subject by borderline
367
- headerpart['subject'].split(BorderLine).each do |v|
236
+ headermaps['subject'].split(/ /).each do |v|
368
237
  # Insert value to the array if the string is MIME encoded text
369
238
  r << v if Sisimai::MIME.is_mimeencoded(v)
370
239
  end
371
240
  else
372
241
  # Subject line is not MIME encoded
373
- r << headerpart['subject']
242
+ r << headermaps['subject']
374
243
  end
375
- headerpart['subject'] = Sisimai::MIME.mimedecode(r)
244
+ headermaps['subject'] = Sisimai::MIME.mimedecode(r)
376
245
  end
377
- return headerpart
246
+ return headermaps
378
247
  end
379
248
 
380
249
  # @abstract Parse bounce mail with each MTA module
@@ -396,7 +265,6 @@ module Sisimai
396
265
  bodystring = argvs['body']
397
266
  hookmethod = argvs['hook'] || nil
398
267
  havecaught = nil
399
-
400
268
  return nil unless mailheader
401
269
 
402
270
  # PRECHECK_EACH_HEADER:
@@ -408,7 +276,6 @@ module Sisimai
408
276
  # Decode BASE64 Encoded message body, rewrite.
409
277
  mesgformat = (mailheader['content-type'] || '').downcase
410
278
  ctencoding = (mailheader['content-transfer-encoding'] || '').downcase
411
-
412
279
  if mesgformat.start_with?('text/plain', 'text/html')
413
280
  # Content-Type: text/plain; charset=UTF-8
414
281
  if ctencoding == 'base64'
@@ -432,21 +299,11 @@ module Sisimai
432
299
  bodystring = p unless p.empty?
433
300
  end
434
301
  end
435
-
436
- # EXPAND_FORWARDED_MESSAGE:
437
- # Check whether or not the message is a bounce mail.
438
- # Pre-Process email body if it is a forwarded bounce message.
439
- # Get the original text when the subject begins from 'fwd:' or 'fw:'
440
- if mailheader['subject'].downcase =~ /\A[ \t]*fwd?:/
441
- # Delete quoted strings, quote symbols(>)
442
- bodystring = bodystring.gsub(/^[>]+[ ]/m, '').gsub(/^[>]$/m, '')
443
- elsif Sisimai::MIME.is_mimeencoded(mailheader['subject'])
444
- # Decode MIME-Encoded "Subject:" header
445
- mailheader['subject'] = Sisimai::MIME.mimedecode(mailheader['subject'].split(/[ ]/))
446
- mailheader['subject'].scrub!('?')
447
- end
448
302
  bodystring = bodystring.scrub('?').delete("\r")
449
303
 
304
+ haveloaded = {}
305
+ parseddata = nil
306
+ modulename = ''
450
307
  if hookmethod.is_a? Proc
451
308
  # Call the hook method
452
309
  begin
@@ -462,59 +319,68 @@ module Sisimai
462
319
  end
463
320
  end
464
321
 
465
- bodystring << EndOfEmail
466
- haveloaded = {}
467
- parseddata = nil
468
-
469
322
  catch :PARSER do
470
323
  while true
471
- # 1. Sisimai::ARF
472
- # 2. User-Defined Module
473
- # 3. MTA Module Candidates to be tried on first
474
- # 4. Sisimai::Lhost::*
475
- # 5. Sisimai::RFC3464
324
+ # 1. User-Defined Module
325
+ # 2. MTA Module Candidates to be tried on first
326
+ # 3. Sisimai::Lhost::*
327
+ # 4. Sisimai::RFC3464
328
+ # 5. Sisimai::ARF
476
329
  # 6. Sisimai::RFC3834
477
- if Sisimai::ARF.is_arf(mailheader)
478
- # Feedback Loop message
479
- parseddata = Sisimai::ARF.make(mailheader, bodystring)
480
- throw :PARSER if parseddata
481
- end
482
-
483
330
  while r = argvs['tobeloaded'].shift do
484
331
  # Call user defined MTA modules
485
332
  next if haveloaded[r]
486
333
  parseddata = Module.const_get(r).make(mailheader, bodystring)
487
334
  haveloaded[r] = true
335
+ modulename = r
488
336
  throw :PARSER if parseddata
489
337
  end
490
338
 
491
- argvs['tryonfirst'].concat(DefaultSet)
492
- while r = argvs['tryonfirst'].shift do
339
+ [argvs['tryonfirst'], DefaultSet].flatten.each do |r|
493
340
  # Try MTA module candidates
494
341
  next if haveloaded[r]
495
- require r.gsub('::', '/').downcase
342
+ require LhostTable[r]
496
343
  parseddata = Module.const_get(r).make(mailheader, bodystring)
497
344
  haveloaded[r] = true
345
+ modulename = r
346
+ throw :PARSER if parseddata
347
+ end
348
+
349
+ unless haveloaded['Sisimai::RFC3464']
350
+ # When the all of Sisimai::Lhost::* modules did not return bounce
351
+ # data, call Sisimai::RFC3464;
352
+ require 'sisimai/rfc3464'
353
+ parseddata = Sisimai::RFC3464.make(mailheader, bodystring)
354
+ modulename = 'RFC3464'
498
355
  throw :PARSER if parseddata
499
356
  end
500
357
 
501
- # When the all of Sisimai::Lhost::* modules did not return bounce
502
- # data, call Sisimai::RFC3464;
503
- require 'sisimai/rfc3464'
504
- parseddata = Sisimai::RFC3464.make(mailheader, bodystring)
505
- break if parseddata
358
+ unless haveloaded['Sisimai::ARF']
359
+ # Feedback Loop message
360
+ require 'sisimai/arf'
361
+ parseddata = Sisimai::ARF.make(mailheader, bodystring) if Sisimai::ARF.is_arf(mailheader)
362
+ throw :PARSER if parseddata
363
+ end
506
364
 
507
- # Try to parse the message as auto reply message defined in RFC3834
508
- require 'sisimai/rfc3834'
509
- parseddata = Sisimai::RFC3834.make(mailheader, bodystring)
510
- break if parseddata
365
+ unless haveloaded['Sisimai::RFC3834']
366
+ # Try to parse the message as auto reply message defined in RFC3834
367
+ require 'sisimai/rfc3834'
368
+ parseddata = Sisimai::RFC3834.make(mailheader, bodystring)
369
+ modulename = 'RFC3834'
370
+ throw :PARSER if parseddata
371
+ end
511
372
 
512
- # as of now, we have no sample email for coding this block
513
- break
373
+ break # as of now, we have no sample email for coding this block
514
374
  end
515
375
  end
376
+ return nil unless parseddata
516
377
 
517
- parseddata['catch'] = havecaught if parseddata
378
+ parseddata['catch'] = havecaught
379
+ modulename = modulename.sub(/\A.+::/, '')
380
+ parseddata['ds'].each do |e|
381
+ e['agent'] = modulename unless e['agent']
382
+ e.each_key { |a| e[a] ||= '' } # Replace nil with ""
383
+ end
518
384
  return parseddata
519
385
  end
520
386