sisimai 4.25.4-java → 4.25.10-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 (681) hide show
  1. checksums.yaml +5 -5
  2. data/.travis.yml +2 -2
  3. data/ANALYTICAL-PRECISION +60 -56
  4. data/Benchmarks.mk +5 -3
  5. data/ChangeLog.md +184 -1
  6. data/Developers.mk +2 -2
  7. data/Makefile +1 -1
  8. data/README-JA.md +30 -57
  9. data/README.md +31 -57
  10. data/Repository.mk +1 -1
  11. data/lib/sisimai.rb +17 -72
  12. data/lib/sisimai/address.rb +13 -17
  13. data/lib/sisimai/arf.rb +45 -47
  14. data/lib/sisimai/data.rb +15 -38
  15. data/lib/sisimai/datetime.rb +3 -3
  16. data/lib/sisimai/lhost.rb +25 -47
  17. data/lib/sisimai/lhost/activehunter.rb +37 -76
  18. data/lib/sisimai/lhost/amavis.rb +119 -86
  19. data/lib/sisimai/lhost/amazonses.rb +196 -256
  20. data/lib/sisimai/lhost/amazonworkmail.rb +56 -95
  21. data/lib/sisimai/lhost/aol.rb +64 -104
  22. data/lib/sisimai/lhost/apachejames.rb +66 -104
  23. data/lib/sisimai/lhost/barracuda.rb +94 -0
  24. data/lib/sisimai/lhost/bigfoot.rb +66 -102
  25. data/lib/sisimai/lhost/biglobe.rb +45 -78
  26. data/lib/sisimai/lhost/courier.rb +66 -101
  27. data/lib/sisimai/lhost/domino.rb +54 -92
  28. data/lib/sisimai/lhost/einsundeins.rb +61 -70
  29. data/lib/sisimai/lhost/exchange2003.rb +89 -120
  30. data/lib/sisimai/lhost/exchange2007.rb +79 -90
  31. data/lib/sisimai/lhost/exim.rb +130 -168
  32. data/lib/sisimai/lhost/ezweb.rb +58 -90
  33. data/lib/sisimai/lhost/facebook.rb +54 -91
  34. data/lib/sisimai/lhost/fml.rb +30 -69
  35. data/lib/sisimai/lhost/{google.rb → gmail.rb} +48 -87
  36. data/lib/sisimai/lhost/gmx.rb +64 -102
  37. data/lib/sisimai/lhost/googlegroups.rb +77 -0
  38. data/lib/sisimai/lhost/gsuite.rb +79 -111
  39. data/lib/sisimai/lhost/imailserver.rb +46 -91
  40. data/lib/sisimai/lhost/interscanmss.rb +40 -85
  41. data/lib/sisimai/lhost/kddi.rb +35 -68
  42. data/lib/sisimai/lhost/mailfoundry.rb +41 -78
  43. data/lib/sisimai/lhost/mailmarshalsmtp.rb +71 -109
  44. data/lib/sisimai/lhost/mailru.rb +56 -92
  45. data/lib/sisimai/lhost/mcafee.rb +59 -97
  46. data/lib/sisimai/lhost/messagelabs.rb +59 -97
  47. data/lib/sisimai/lhost/messagingserver.rb +96 -131
  48. data/lib/sisimai/lhost/mfilter.rb +57 -89
  49. data/lib/sisimai/lhost/mxlogic.rb +47 -85
  50. data/lib/sisimai/lhost/notes.rb +59 -100
  51. data/lib/sisimai/lhost/office365.rb +86 -113
  52. data/lib/sisimai/lhost/opensmtpd.rb +35 -71
  53. data/lib/sisimai/lhost/outlook.rb +56 -96
  54. data/lib/sisimai/lhost/postfix.rb +118 -137
  55. data/lib/sisimai/lhost/powermta.rb +120 -0
  56. data/lib/sisimai/lhost/qmail.rb +46 -79
  57. data/lib/sisimai/lhost/receivingses.rb +56 -97
  58. data/lib/sisimai/lhost/sendgrid.rb +75 -223
  59. data/lib/sisimai/lhost/sendmail.rb +108 -148
  60. data/lib/sisimai/lhost/surfcontrol.rb +62 -104
  61. data/lib/sisimai/lhost/v5sendmail.rb +64 -107
  62. data/lib/sisimai/lhost/verizon.rb +80 -141
  63. data/lib/sisimai/lhost/x1.rb +37 -73
  64. data/lib/sisimai/lhost/x2.rb +36 -75
  65. data/lib/sisimai/lhost/x3.rb +54 -86
  66. data/lib/sisimai/lhost/x4.rb +49 -85
  67. data/lib/sisimai/lhost/x5.rb +54 -93
  68. data/lib/sisimai/lhost/x6.rb +74 -0
  69. data/lib/sisimai/lhost/yahoo.rb +55 -92
  70. data/lib/sisimai/lhost/yandex.rb +72 -110
  71. data/lib/sisimai/lhost/zoho.rb +62 -106
  72. data/lib/sisimai/mail.rb +22 -31
  73. data/lib/sisimai/mail/maildir.rb +31 -36
  74. data/lib/sisimai/mail/mbox.rb +8 -12
  75. data/lib/sisimai/mail/memory.rb +18 -20
  76. data/lib/sisimai/mail/stdin.rb +8 -12
  77. data/lib/sisimai/mda.rb +8 -14
  78. data/lib/sisimai/message.rb +142 -415
  79. data/lib/sisimai/mime.rb +28 -33
  80. data/lib/sisimai/order.rb +150 -209
  81. data/lib/sisimai/reason.rb +28 -19
  82. data/lib/sisimai/reason/blocked.rb +24 -23
  83. data/lib/sisimai/reason/hostunknown.rb +2 -0
  84. data/lib/sisimai/reason/mailererror.rb +1 -1
  85. data/lib/sisimai/reason/notaccept.rb +1 -0
  86. data/lib/sisimai/reason/policyviolation.rb +1 -0
  87. data/lib/sisimai/reason/rejected.rb +1 -0
  88. data/lib/sisimai/reason/securityerror.rb +5 -6
  89. data/lib/sisimai/reason/spamdetected.rb +9 -12
  90. data/lib/sisimai/reason/userunknown.rb +31 -25
  91. data/lib/sisimai/rfc1894.rb +1 -1
  92. data/lib/sisimai/rfc3464.rb +38 -56
  93. data/lib/sisimai/rfc3834.rb +11 -23
  94. data/lib/sisimai/rfc5322.rb +20 -32
  95. data/lib/sisimai/rhost.rb +5 -8
  96. data/lib/sisimai/rhost/cox.rb +112 -0
  97. data/lib/sisimai/rhost/exchangeonline.rb +25 -22
  98. data/lib/sisimai/rhost/franceptt.rb +120 -24
  99. data/lib/sisimai/rhost/googleapps.rb +4 -1
  100. data/lib/sisimai/rhost/iua.rb +1 -1
  101. data/lib/sisimai/rhost/spectrum.rb +73 -0
  102. data/lib/sisimai/smtp.rb +0 -13
  103. data/lib/sisimai/smtp/error.rb +7 -7
  104. data/lib/sisimai/smtp/status.rb +1 -1
  105. data/lib/sisimai/string.rb +3 -11
  106. data/lib/sisimai/version.rb +1 -1
  107. data/set-of-emails/README.md +5 -4
  108. data/set-of-emails/maildir/bsd/arf-24.eml +50 -0
  109. data/set-of-emails/maildir/bsd/arf-25.eml +61 -0
  110. data/set-of-emails/maildir/bsd/{email-activehunter-01.eml → lhost-activehunter-01.eml} +0 -0
  111. data/set-of-emails/maildir/bsd/{email-activehunter-02.eml → lhost-activehunter-02.eml} +0 -0
  112. data/set-of-emails/maildir/bsd/{email-amavis-01.eml → lhost-amavis-01.eml} +0 -0
  113. data/set-of-emails/maildir/bsd/{email-amavis-02.eml → lhost-amavis-02.eml} +0 -0
  114. data/set-of-emails/maildir/bsd/lhost-amavis-03.eml +90 -0
  115. data/set-of-emails/maildir/bsd/{email-amazonses-01.eml → lhost-amazonses-01.eml} +0 -0
  116. data/set-of-emails/maildir/bsd/{email-amazonses-02.eml → lhost-amazonses-02.eml} +0 -0
  117. data/set-of-emails/maildir/bsd/{email-amazonses-03.eml → lhost-amazonses-03.eml} +0 -0
  118. data/set-of-emails/maildir/bsd/{email-amazonses-05.eml → lhost-amazonses-05.eml} +0 -0
  119. data/set-of-emails/maildir/bsd/{email-amazonses-06.eml → lhost-amazonses-06.eml} +0 -0
  120. data/set-of-emails/maildir/bsd/{email-amazonses-07.eml → lhost-amazonses-07.eml} +0 -0
  121. data/set-of-emails/maildir/bsd/{email-amazonses-08.eml → lhost-amazonses-08.eml} +0 -0
  122. data/set-of-emails/maildir/bsd/{email-amazonses-09.eml → lhost-amazonses-09.eml} +0 -0
  123. data/set-of-emails/maildir/bsd/{email-amazonses-10.eml → lhost-amazonses-10.eml} +0 -0
  124. data/set-of-emails/maildir/bsd/{email-amazonses-11.eml → lhost-amazonses-11.eml} +0 -0
  125. data/set-of-emails/maildir/bsd/{email-amazonses-12.eml → lhost-amazonses-12.eml} +0 -0
  126. data/set-of-emails/maildir/bsd/{email-amazonses-13.eml → lhost-amazonses-13.eml} +0 -0
  127. data/set-of-emails/maildir/bsd/{email-amazonses-14.eml → lhost-amazonses-14.eml} +0 -0
  128. data/set-of-emails/maildir/bsd/{email-amazonses-15.eml → lhost-amazonses-15.eml} +0 -0
  129. data/set-of-emails/maildir/bsd/{email-amazonses-16.eml → lhost-amazonses-16.eml} +0 -0
  130. data/set-of-emails/maildir/bsd/{email-amazonses-17.eml → lhost-amazonses-17.eml} +0 -0
  131. data/set-of-emails/maildir/bsd/{email-amazonses-18.eml → lhost-amazonses-18.eml} +0 -0
  132. data/set-of-emails/maildir/bsd/{email-amazonses-19.eml → lhost-amazonses-19.eml} +0 -0
  133. data/set-of-emails/maildir/bsd/{email-amazonses-20.eml → lhost-amazonses-20.eml} +0 -0
  134. data/set-of-emails/maildir/bsd/{email-amazonses-21.eml → lhost-amazonses-21.eml} +0 -0
  135. data/set-of-emails/maildir/bsd/{email-amazonworkmail-01.eml → lhost-amazonworkmail-01.eml} +0 -0
  136. data/set-of-emails/maildir/bsd/{email-amazonworkmail-02.eml → lhost-amazonworkmail-02.eml} +0 -0
  137. data/set-of-emails/maildir/bsd/{email-amazonworkmail-03.eml → lhost-amazonworkmail-03.eml} +0 -0
  138. data/set-of-emails/maildir/bsd/{email-amazonworkmail-04.eml → lhost-amazonworkmail-04.eml} +0 -0
  139. data/set-of-emails/maildir/bsd/{email-amazonworkmail-05.eml → lhost-amazonworkmail-05.eml} +0 -0
  140. data/set-of-emails/maildir/bsd/{email-amazonworkmail-07.eml → lhost-amazonworkmail-07.eml} +0 -0
  141. data/set-of-emails/maildir/bsd/{email-amazonworkmail-08.eml → lhost-amazonworkmail-08.eml} +0 -0
  142. data/set-of-emails/maildir/bsd/{email-aol-01.eml → lhost-aol-01.eml} +0 -0
  143. data/set-of-emails/maildir/bsd/{email-aol-02.eml → lhost-aol-02.eml} +0 -0
  144. data/set-of-emails/maildir/bsd/{email-aol-03.eml → lhost-aol-03.eml} +0 -0
  145. data/set-of-emails/maildir/bsd/{email-aol-04.eml → lhost-aol-04.eml} +0 -0
  146. data/set-of-emails/maildir/bsd/{email-aol-05.eml → lhost-aol-05.eml} +0 -0
  147. data/set-of-emails/maildir/bsd/{email-aol-06.eml → lhost-aol-06.eml} +0 -0
  148. data/set-of-emails/maildir/bsd/{email-apachejames-01.eml → lhost-apachejames-01.eml} +0 -0
  149. data/set-of-emails/maildir/bsd/lhost-barracuda-01.eml +67 -0
  150. data/set-of-emails/maildir/bsd/lhost-barracuda-02.eml +71 -0
  151. data/set-of-emails/maildir/bsd/{email-bigfoot-02.eml → lhost-bigfoot-02.eml} +0 -0
  152. data/set-of-emails/maildir/bsd/{email-biglobe-01.eml → lhost-biglobe-01.eml} +0 -0
  153. data/set-of-emails/maildir/bsd/{email-courier-01.eml → lhost-courier-01.eml} +0 -0
  154. data/set-of-emails/maildir/bsd/{email-courier-02.eml → lhost-courier-02.eml} +0 -0
  155. data/set-of-emails/maildir/bsd/{email-courier-03.eml → lhost-courier-03.eml} +0 -0
  156. data/set-of-emails/maildir/bsd/{email-courier-04.eml → lhost-courier-04.eml} +0 -0
  157. data/set-of-emails/maildir/bsd/{email-domino-01.eml → lhost-domino-01.eml} +0 -0
  158. data/set-of-emails/maildir/bsd/{email-domino-02.eml → lhost-domino-02.eml} +0 -0
  159. data/set-of-emails/maildir/bsd/{email-domino-03.eml → lhost-domino-03.eml} +0 -0
  160. data/set-of-emails/maildir/bsd/{email-einsundeins-02.eml → lhost-einsundeins-02.eml} +0 -0
  161. data/set-of-emails/maildir/bsd/lhost-einsundeins-03.eml +66 -0
  162. data/set-of-emails/maildir/bsd/{email-exchange2003-01.eml → lhost-exchange2003-01.eml} +0 -0
  163. data/set-of-emails/maildir/bsd/{email-exchange2003-02.eml → lhost-exchange2003-02.eml} +0 -0
  164. data/set-of-emails/maildir/bsd/{email-exchange2003-03.eml → lhost-exchange2003-03.eml} +0 -0
  165. data/set-of-emails/maildir/bsd/{email-exchange2003-04.eml → lhost-exchange2003-04.eml} +0 -0
  166. data/set-of-emails/maildir/bsd/{email-exchange2003-05.eml → lhost-exchange2003-05.eml} +0 -0
  167. data/set-of-emails/maildir/bsd/{email-exchange2003-07.eml → lhost-exchange2003-07.eml} +0 -0
  168. data/set-of-emails/maildir/bsd/{email-exchange2007-01.eml → lhost-exchange2007-01.eml} +0 -0
  169. data/set-of-emails/maildir/bsd/{email-exchange2007-02.eml → lhost-exchange2007-02.eml} +0 -0
  170. data/set-of-emails/maildir/bsd/{email-exchange2007-03.eml → lhost-exchange2007-03.eml} +0 -0
  171. data/set-of-emails/maildir/bsd/{email-exchange2007-04.eml → lhost-exchange2007-04.eml} +0 -0
  172. data/set-of-emails/maildir/bsd/lhost-exchange2007-05.eml +1469 -0
  173. data/set-of-emails/maildir/bsd/lhost-exchange2007-06.eml +764 -0
  174. data/set-of-emails/maildir/bsd/lhost-exchange2007-07.eml +128 -0
  175. data/set-of-emails/maildir/bsd/{email-exim-01.eml → lhost-exim-01.eml} +0 -0
  176. data/set-of-emails/maildir/bsd/{email-exim-02.eml → lhost-exim-02.eml} +0 -0
  177. data/set-of-emails/maildir/bsd/{email-exim-03.eml → lhost-exim-03.eml} +0 -0
  178. data/set-of-emails/maildir/bsd/{email-exim-04.eml → lhost-exim-04.eml} +0 -0
  179. data/set-of-emails/maildir/bsd/{email-exim-05.eml → lhost-exim-05.eml} +0 -0
  180. data/set-of-emails/maildir/bsd/{email-exim-06.eml → lhost-exim-06.eml} +0 -0
  181. data/set-of-emails/maildir/bsd/{email-exim-07.eml → lhost-exim-07.eml} +0 -0
  182. data/set-of-emails/maildir/bsd/{email-exim-08.eml → lhost-exim-08.eml} +0 -0
  183. data/set-of-emails/maildir/bsd/{email-exim-29.eml → lhost-exim-29.eml} +0 -0
  184. data/set-of-emails/maildir/bsd/{email-exim-30.eml → lhost-exim-30.eml} +0 -0
  185. data/set-of-emails/maildir/bsd/{email-exim-31.eml → lhost-exim-31.eml} +0 -0
  186. data/set-of-emails/maildir/bsd/{email-exim-32.eml → lhost-exim-32.eml} +0 -0
  187. data/set-of-emails/maildir/bsd/{email-exim-33.eml → lhost-exim-33.eml} +0 -0
  188. data/set-of-emails/maildir/bsd/{email-exim-34.eml → lhost-exim-34.eml} +0 -0
  189. data/set-of-emails/maildir/bsd/{email-exim-35.eml → lhost-exim-35.eml} +0 -0
  190. data/set-of-emails/maildir/bsd/{email-exim-36.eml → lhost-exim-36.eml} +0 -0
  191. data/set-of-emails/maildir/bsd/{email-exim-37.eml → lhost-exim-37.eml} +0 -0
  192. data/set-of-emails/maildir/bsd/{email-exim-38.eml → lhost-exim-38.eml} +0 -0
  193. data/set-of-emails/maildir/bsd/{email-exim-39.eml → lhost-exim-39.eml} +0 -0
  194. data/set-of-emails/maildir/bsd/{email-exim-40.eml → lhost-exim-40.eml} +0 -0
  195. data/set-of-emails/maildir/bsd/{email-exim-41.eml → lhost-exim-41.eml} +0 -0
  196. data/set-of-emails/maildir/bsd/{email-exim-42.eml → lhost-exim-42.eml} +0 -0
  197. data/set-of-emails/maildir/bsd/{email-exim-43.eml → lhost-exim-43.eml} +0 -0
  198. data/set-of-emails/maildir/bsd/{email-exim-44.eml → lhost-exim-44.eml} +0 -0
  199. data/set-of-emails/maildir/bsd/{email-exim-45.eml → lhost-exim-45.eml} +0 -0
  200. data/set-of-emails/maildir/bsd/{email-exim-46.eml → lhost-exim-46.eml} +0 -0
  201. data/set-of-emails/maildir/bsd/{email-exim-47.eml → lhost-exim-47.eml} +0 -0
  202. data/set-of-emails/maildir/bsd/{email-exim-48.eml → lhost-exim-48.eml} +0 -0
  203. data/set-of-emails/maildir/bsd/{email-exim-49.eml → lhost-exim-49.eml} +0 -0
  204. data/set-of-emails/maildir/bsd/{email-exim-50.eml → lhost-exim-50.eml} +0 -0
  205. data/set-of-emails/maildir/bsd/{email-exim-51.eml → lhost-exim-51.eml} +0 -0
  206. data/set-of-emails/maildir/bsd/{email-exim-52.eml → lhost-exim-52.eml} +0 -0
  207. data/set-of-emails/maildir/bsd/{email-exim-53.eml → lhost-exim-53.eml} +0 -0
  208. data/set-of-emails/maildir/bsd/{email-exim-54.eml → lhost-exim-54.eml} +0 -0
  209. data/set-of-emails/maildir/bsd/{email-exim-55.eml → lhost-exim-55.eml} +0 -0
  210. data/set-of-emails/maildir/bsd/{email-exim-56.eml → lhost-exim-56.eml} +0 -0
  211. data/set-of-emails/maildir/bsd/{email-exim-57.eml → lhost-exim-57.eml} +0 -0
  212. data/set-of-emails/maildir/bsd/{email-exim-58.eml → lhost-exim-58.eml} +0 -0
  213. data/set-of-emails/maildir/bsd/{email-exim-59.eml → lhost-exim-59.eml} +0 -0
  214. data/set-of-emails/maildir/bsd/{email-exim-60.eml → lhost-exim-60.eml} +0 -0
  215. data/set-of-emails/maildir/bsd/lhost-exim-61.eml +40 -0
  216. data/set-of-emails/maildir/bsd/{email-ezweb-01.eml → lhost-ezweb-01.eml} +0 -0
  217. data/set-of-emails/maildir/bsd/{email-ezweb-02.eml → lhost-ezweb-02.eml} +0 -0
  218. data/set-of-emails/maildir/bsd/{email-ezweb-03.eml → lhost-ezweb-03.eml} +0 -0
  219. data/set-of-emails/maildir/bsd/{email-ezweb-04.eml → lhost-ezweb-04.eml} +0 -0
  220. data/set-of-emails/maildir/bsd/{email-ezweb-05.eml → lhost-ezweb-05.eml} +0 -0
  221. data/set-of-emails/maildir/bsd/{email-ezweb-07.eml → lhost-ezweb-07.eml} +0 -0
  222. data/set-of-emails/maildir/bsd/{email-ezweb-08.eml → lhost-ezweb-08.eml} +0 -0
  223. data/set-of-emails/maildir/bsd/{email-facebook-03.eml → lhost-facebook-03.eml} +0 -0
  224. data/set-of-emails/maildir/bsd/{email-facebook-04.eml → lhost-facebook-04.eml} +0 -0
  225. data/set-of-emails/maildir/bsd/{email-fml-02.eml → lhost-fml-02.eml} +0 -0
  226. data/set-of-emails/maildir/bsd/{email-fml-03.eml → lhost-fml-03.eml} +0 -0
  227. data/set-of-emails/maildir/bsd/{email-google-01.eml → lhost-gmail-01.eml} +0 -0
  228. data/set-of-emails/maildir/bsd/{email-google-03.eml → lhost-gmail-03.eml} +0 -0
  229. data/set-of-emails/maildir/bsd/{email-google-04.eml → lhost-gmail-04.eml} +0 -0
  230. data/set-of-emails/maildir/bsd/{email-google-05.eml → lhost-gmail-05.eml} +0 -0
  231. data/set-of-emails/maildir/bsd/{email-google-06.eml → lhost-gmail-06.eml} +0 -0
  232. data/set-of-emails/maildir/bsd/{email-google-07.eml → lhost-gmail-07.eml} +0 -0
  233. data/set-of-emails/maildir/bsd/{email-google-08.eml → lhost-gmail-08.eml} +0 -0
  234. data/set-of-emails/maildir/bsd/{email-google-09.eml → lhost-gmail-09.eml} +0 -0
  235. data/set-of-emails/maildir/bsd/{email-google-10.eml → lhost-gmail-10.eml} +0 -0
  236. data/set-of-emails/maildir/bsd/{email-google-11.eml → lhost-gmail-11.eml} +0 -0
  237. data/set-of-emails/maildir/bsd/{email-google-15.eml → lhost-gmail-15.eml} +0 -0
  238. data/set-of-emails/maildir/bsd/{email-google-16.eml → lhost-gmail-16.eml} +0 -0
  239. data/set-of-emails/maildir/bsd/{email-google-17.eml → lhost-gmail-17.eml} +0 -0
  240. data/set-of-emails/maildir/bsd/{email-google-18.eml → lhost-gmail-18.eml} +0 -0
  241. data/set-of-emails/maildir/bsd/{email-google-19.eml → lhost-gmail-19.eml} +0 -0
  242. data/set-of-emails/maildir/bsd/{email-gmx-01.eml → lhost-gmx-01.eml} +0 -0
  243. data/set-of-emails/maildir/bsd/{email-gmx-02.eml → lhost-gmx-02.eml} +0 -0
  244. data/set-of-emails/maildir/bsd/{email-gmx-03.eml → lhost-gmx-03.eml} +0 -0
  245. data/set-of-emails/maildir/bsd/{email-gmx-04.eml → lhost-gmx-04.eml} +0 -0
  246. data/set-of-emails/maildir/bsd/lhost-googlegroups-01.eml +116 -0
  247. data/set-of-emails/maildir/bsd/lhost-googlegroups-02.eml +114 -0
  248. data/set-of-emails/maildir/bsd/lhost-googlegroups-03.eml +116 -0
  249. data/set-of-emails/maildir/bsd/lhost-googlegroups-04.eml +116 -0
  250. data/set-of-emails/maildir/bsd/lhost-googlegroups-05.eml +116 -0
  251. data/set-of-emails/maildir/bsd/lhost-googlegroups-06.eml +116 -0
  252. data/set-of-emails/maildir/bsd/lhost-googlegroups-07.eml +116 -0
  253. data/set-of-emails/maildir/bsd/lhost-googlegroups-08.eml +115 -0
  254. data/set-of-emails/maildir/bsd/lhost-googlegroups-09.eml +116 -0
  255. data/set-of-emails/maildir/bsd/lhost-googlegroups-10.eml +116 -0
  256. data/set-of-emails/maildir/bsd/lhost-googlegroups-11.eml +116 -0
  257. data/set-of-emails/maildir/bsd/lhost-googlegroups-12.eml +116 -0
  258. data/set-of-emails/maildir/bsd/lhost-googlegroups-13.eml +115 -0
  259. data/set-of-emails/maildir/bsd/lhost-googlegroups-14.eml +127 -0
  260. data/set-of-emails/maildir/bsd/{email-gsuite-01.eml → lhost-gsuite-01.eml} +0 -0
  261. data/set-of-emails/maildir/bsd/{email-gsuite-02.eml → lhost-gsuite-02.eml} +0 -0
  262. data/set-of-emails/maildir/bsd/{email-gsuite-03.eml → lhost-gsuite-03.eml} +0 -0
  263. data/set-of-emails/maildir/bsd/{email-gsuite-04.eml → lhost-gsuite-04.eml} +0 -0
  264. data/set-of-emails/maildir/bsd/{email-gsuite-05.eml → lhost-gsuite-05.eml} +0 -0
  265. data/set-of-emails/maildir/bsd/{email-gsuite-06.eml → lhost-gsuite-06.eml} +0 -0
  266. data/set-of-emails/maildir/bsd/{email-gsuite-07.eml → lhost-gsuite-07.eml} +0 -0
  267. data/set-of-emails/maildir/bsd/{email-gsuite-08.eml → lhost-gsuite-08.eml} +0 -0
  268. data/set-of-emails/maildir/bsd/{email-gsuite-09.eml → lhost-gsuite-09.eml} +0 -0
  269. data/set-of-emails/maildir/bsd/{email-gsuite-10.eml → lhost-gsuite-10.eml} +0 -0
  270. data/set-of-emails/maildir/bsd/{email-gsuite-11.eml → lhost-gsuite-11.eml} +0 -0
  271. data/set-of-emails/maildir/bsd/{email-gsuite-12.eml → lhost-gsuite-12.eml} +0 -0
  272. data/set-of-emails/maildir/bsd/{email-gsuite-13.eml → lhost-gsuite-13.eml} +0 -0
  273. data/set-of-emails/maildir/bsd/lhost-gsuite-14.eml +273 -0
  274. data/set-of-emails/maildir/bsd/{email-imailserver-01.eml → lhost-imailserver-01.eml} +0 -0
  275. data/set-of-emails/maildir/bsd/{email-imailserver-02.eml → lhost-imailserver-02.eml} +0 -0
  276. data/set-of-emails/maildir/bsd/{email-imailserver-03.eml → lhost-imailserver-03.eml} +0 -0
  277. data/set-of-emails/maildir/bsd/{email-imailserver-04.eml → lhost-imailserver-04.eml} +0 -0
  278. data/set-of-emails/maildir/bsd/{email-imailserver-06.eml → lhost-imailserver-06.eml} +0 -0
  279. data/set-of-emails/maildir/bsd/{email-interscanmss-01.eml → lhost-interscanmss-01.eml} +0 -0
  280. data/set-of-emails/maildir/bsd/lhost-interscanmss-02.eml +70 -0
  281. data/set-of-emails/maildir/bsd/lhost-interscanmss-03.eml +73 -0
  282. data/set-of-emails/maildir/bsd/{email-kddi-01.eml → lhost-kddi-01.eml} +0 -0
  283. data/set-of-emails/maildir/bsd/{email-kddi-02.eml → lhost-kddi-02.eml} +0 -0
  284. data/set-of-emails/maildir/bsd/{email-kddi-03.eml → lhost-kddi-03.eml} +0 -0
  285. data/set-of-emails/maildir/bsd/{email-mailfoundry-01.eml → lhost-mailfoundry-01.eml} +0 -0
  286. data/set-of-emails/maildir/bsd/{email-mailfoundry-02.eml → lhost-mailfoundry-02.eml} +0 -0
  287. data/set-of-emails/maildir/bsd/{email-mailmarshalsmtp-02.eml → lhost-mailmarshalsmtp-02.eml} +0 -0
  288. data/set-of-emails/maildir/bsd/{email-mailru-01.eml → lhost-mailru-01.eml} +0 -0
  289. data/set-of-emails/maildir/bsd/{email-mailru-02.eml → lhost-mailru-02.eml} +0 -0
  290. data/set-of-emails/maildir/bsd/{email-mailru-03.eml → lhost-mailru-03.eml} +0 -0
  291. data/set-of-emails/maildir/bsd/{email-mailru-04.eml → lhost-mailru-04.eml} +0 -0
  292. data/set-of-emails/maildir/bsd/{email-mailru-05.eml → lhost-mailru-05.eml} +0 -0
  293. data/set-of-emails/maildir/bsd/{email-mailru-06.eml → lhost-mailru-06.eml} +0 -0
  294. data/set-of-emails/maildir/bsd/{email-mailru-07.eml → lhost-mailru-07.eml} +0 -0
  295. data/set-of-emails/maildir/bsd/{email-mailru-08.eml → lhost-mailru-08.eml} +0 -0
  296. data/set-of-emails/maildir/bsd/{email-mailru-09.eml → lhost-mailru-09.eml} +0 -0
  297. data/set-of-emails/maildir/bsd/{email-mailru-10.eml → lhost-mailru-10.eml} +0 -0
  298. data/set-of-emails/maildir/bsd/{email-mcafee-01.eml → lhost-mcafee-01.eml} +0 -0
  299. data/set-of-emails/maildir/bsd/{email-mcafee-02.eml → lhost-mcafee-02.eml} +0 -0
  300. data/set-of-emails/maildir/bsd/{email-mcafee-03.eml → lhost-mcafee-03.eml} +0 -0
  301. data/set-of-emails/maildir/bsd/{email-mcafee-04.eml → lhost-mcafee-04.eml} +0 -0
  302. data/set-of-emails/maildir/bsd/{email-mcafee-05.eml → lhost-mcafee-05.eml} +0 -0
  303. data/set-of-emails/maildir/bsd/{email-messagelabs-01.eml → lhost-messagelabs-01.eml} +0 -0
  304. data/set-of-emails/maildir/bsd/{email-messagelabs-02.eml → lhost-messagelabs-02.eml} +0 -0
  305. data/set-of-emails/maildir/bsd/{email-messagelabs-03.eml → lhost-messagelabs-03.eml} +0 -0
  306. data/set-of-emails/maildir/bsd/{email-messagingserver-01.eml → lhost-messagingserver-01.eml} +0 -0
  307. data/set-of-emails/maildir/bsd/{email-messagingserver-02.eml → lhost-messagingserver-02.eml} +0 -0
  308. data/set-of-emails/maildir/bsd/{email-messagingserver-03.eml → lhost-messagingserver-03.eml} +0 -0
  309. data/set-of-emails/maildir/bsd/{email-messagingserver-04.eml → lhost-messagingserver-04.eml} +0 -0
  310. data/set-of-emails/maildir/bsd/{email-messagingserver-05.eml → lhost-messagingserver-05.eml} +0 -0
  311. data/set-of-emails/maildir/bsd/{email-messagingserver-06.eml → lhost-messagingserver-06.eml} +0 -0
  312. data/set-of-emails/maildir/bsd/{email-messagingserver-07.eml → lhost-messagingserver-07.eml} +0 -0
  313. data/set-of-emails/maildir/bsd/{email-messagingserver-08.eml → lhost-messagingserver-08.eml} +0 -0
  314. data/set-of-emails/maildir/bsd/{email-messagingserver-09.eml → lhost-messagingserver-09.eml} +0 -0
  315. data/set-of-emails/maildir/bsd/{email-messagingserver-10.eml → lhost-messagingserver-10.eml} +0 -0
  316. data/set-of-emails/maildir/bsd/{email-messagingserver-11.eml → lhost-messagingserver-11.eml} +0 -0
  317. data/set-of-emails/maildir/bsd/{email-messagingserver-12.eml → lhost-messagingserver-12.eml} +0 -0
  318. data/set-of-emails/maildir/bsd/{email-mfilter-01.eml → lhost-mfilter-01.eml} +0 -0
  319. data/set-of-emails/maildir/bsd/{email-mfilter-02.eml → lhost-mfilter-02.eml} +0 -0
  320. data/set-of-emails/maildir/bsd/{email-mfilter-03.eml → lhost-mfilter-03.eml} +0 -0
  321. data/set-of-emails/maildir/bsd/{email-mfilter-04.eml → lhost-mfilter-04.eml} +0 -0
  322. data/set-of-emails/maildir/bsd/{email-mxlogic-01.eml → lhost-mxlogic-01.eml} +0 -0
  323. data/set-of-emails/maildir/bsd/{email-mxlogic-02.eml → lhost-mxlogic-02.eml} +0 -0
  324. data/set-of-emails/maildir/bsd/{email-mxlogic-03.eml → lhost-mxlogic-03.eml} +0 -0
  325. data/set-of-emails/maildir/bsd/{email-notes-01.eml → lhost-notes-01.eml} +0 -0
  326. data/set-of-emails/maildir/bsd/{email-notes-02.eml → lhost-notes-02.eml} +0 -0
  327. data/set-of-emails/maildir/bsd/{email-notes-03.eml → lhost-notes-03.eml} +0 -0
  328. data/set-of-emails/maildir/bsd/{email-office365-01.eml → lhost-office365-01.eml} +0 -0
  329. data/set-of-emails/maildir/bsd/{email-office365-02.eml → lhost-office365-02.eml} +0 -0
  330. data/set-of-emails/maildir/bsd/{email-office365-03.eml → lhost-office365-03.eml} +0 -0
  331. data/set-of-emails/maildir/bsd/{email-office365-04.eml → lhost-office365-04.eml} +0 -0
  332. data/set-of-emails/maildir/bsd/{email-office365-05.eml → lhost-office365-05.eml} +0 -0
  333. data/set-of-emails/maildir/bsd/{email-office365-06.eml → lhost-office365-06.eml} +0 -0
  334. data/set-of-emails/maildir/bsd/{email-office365-07.eml → lhost-office365-07.eml} +0 -0
  335. data/set-of-emails/maildir/bsd/{email-office365-08.eml → lhost-office365-08.eml} +0 -0
  336. data/set-of-emails/maildir/bsd/{email-office365-09.eml → lhost-office365-09.eml} +0 -0
  337. data/set-of-emails/maildir/bsd/{email-office365-10.eml → lhost-office365-10.eml} +0 -0
  338. data/set-of-emails/maildir/bsd/{email-office365-11.eml → lhost-office365-11.eml} +0 -0
  339. data/set-of-emails/maildir/bsd/{email-office365-12.eml → lhost-office365-12.eml} +0 -0
  340. data/set-of-emails/maildir/bsd/lhost-office365-13.eml +259 -0
  341. data/set-of-emails/maildir/bsd/{email-opensmtpd-01.eml → lhost-opensmtpd-01.eml} +0 -0
  342. data/set-of-emails/maildir/bsd/{email-opensmtpd-02.eml → lhost-opensmtpd-02.eml} +0 -0
  343. data/set-of-emails/maildir/bsd/{email-opensmtpd-03.eml → lhost-opensmtpd-03.eml} +0 -0
  344. data/set-of-emails/maildir/bsd/{email-opensmtpd-04.eml → lhost-opensmtpd-04.eml} +0 -0
  345. data/set-of-emails/maildir/bsd/{email-opensmtpd-05.eml → lhost-opensmtpd-05.eml} +0 -0
  346. data/set-of-emails/maildir/bsd/{email-opensmtpd-06.eml → lhost-opensmtpd-06.eml} +0 -0
  347. data/set-of-emails/maildir/bsd/{email-outlook-01.eml → lhost-outlook-01.eml} +0 -0
  348. data/set-of-emails/maildir/bsd/{email-outlook-02.eml → lhost-outlook-02.eml} +0 -0
  349. data/set-of-emails/maildir/bsd/{email-outlook-03.eml → lhost-outlook-03.eml} +0 -0
  350. data/set-of-emails/maildir/bsd/{email-outlook-04.eml → lhost-outlook-04.eml} +0 -0
  351. data/set-of-emails/maildir/bsd/{email-outlook-06.eml → lhost-outlook-06.eml} +0 -0
  352. data/set-of-emails/maildir/bsd/{email-outlook-07.eml → lhost-outlook-07.eml} +0 -0
  353. data/set-of-emails/maildir/bsd/{email-outlook-08.eml → lhost-outlook-08.eml} +0 -0
  354. data/set-of-emails/maildir/bsd/{email-outlook-09.eml → lhost-outlook-09.eml} +0 -0
  355. data/set-of-emails/maildir/bsd/{email-postfix-01.eml → lhost-postfix-01.eml} +0 -0
  356. data/set-of-emails/maildir/bsd/{email-postfix-02.eml → lhost-postfix-02.eml} +0 -0
  357. data/set-of-emails/maildir/bsd/{email-postfix-03.eml → lhost-postfix-03.eml} +0 -0
  358. data/set-of-emails/maildir/bsd/{email-postfix-04.eml → lhost-postfix-04.eml} +0 -0
  359. data/set-of-emails/maildir/bsd/{email-postfix-05.eml → lhost-postfix-05.eml} +0 -0
  360. data/set-of-emails/maildir/bsd/{email-postfix-06.eml → lhost-postfix-06.eml} +0 -0
  361. data/set-of-emails/maildir/bsd/{email-postfix-07.eml → lhost-postfix-07.eml} +0 -0
  362. data/set-of-emails/maildir/bsd/{email-postfix-08.eml → lhost-postfix-08.eml} +0 -0
  363. data/set-of-emails/maildir/bsd/{email-postfix-09.eml → lhost-postfix-09.eml} +0 -0
  364. data/set-of-emails/maildir/bsd/{email-postfix-10.eml → lhost-postfix-10.eml} +0 -0
  365. data/set-of-emails/maildir/bsd/{email-postfix-11.eml → lhost-postfix-11.eml} +0 -0
  366. data/set-of-emails/maildir/bsd/{email-postfix-13.eml → lhost-postfix-13.eml} +0 -0
  367. data/set-of-emails/maildir/bsd/{email-postfix-14.eml → lhost-postfix-14.eml} +0 -0
  368. data/set-of-emails/maildir/bsd/{email-postfix-15.eml → lhost-postfix-15.eml} +0 -0
  369. data/set-of-emails/maildir/bsd/{email-postfix-16.eml → lhost-postfix-16.eml} +0 -0
  370. data/set-of-emails/maildir/bsd/{email-postfix-17.eml → lhost-postfix-17.eml} +0 -0
  371. data/set-of-emails/maildir/bsd/{email-postfix-28.eml → lhost-postfix-28.eml} +0 -0
  372. data/set-of-emails/maildir/bsd/{email-postfix-29.eml → lhost-postfix-29.eml} +0 -0
  373. data/set-of-emails/maildir/bsd/{email-postfix-30.eml → lhost-postfix-30.eml} +0 -0
  374. data/set-of-emails/maildir/bsd/{email-postfix-31.eml → lhost-postfix-31.eml} +0 -0
  375. data/set-of-emails/maildir/bsd/{email-postfix-32.eml → lhost-postfix-32.eml} +0 -0
  376. data/set-of-emails/maildir/bsd/{email-postfix-33.eml → lhost-postfix-33.eml} +0 -0
  377. data/set-of-emails/maildir/bsd/{email-postfix-34.eml → lhost-postfix-34.eml} +0 -0
  378. data/set-of-emails/maildir/bsd/{email-postfix-35.eml → lhost-postfix-35.eml} +0 -0
  379. data/set-of-emails/maildir/bsd/{email-postfix-36.eml → lhost-postfix-36.eml} +0 -0
  380. data/set-of-emails/maildir/bsd/{email-postfix-37.eml → lhost-postfix-37.eml} +0 -0
  381. data/set-of-emails/maildir/bsd/{email-postfix-38.eml → lhost-postfix-38.eml} +1 -1
  382. data/set-of-emails/maildir/bsd/{email-postfix-39.eml → lhost-postfix-39.eml} +0 -0
  383. data/set-of-emails/maildir/bsd/{email-postfix-40.eml → lhost-postfix-40.eml} +0 -0
  384. data/set-of-emails/maildir/bsd/{email-postfix-41.eml → lhost-postfix-41.eml} +0 -0
  385. data/set-of-emails/maildir/bsd/{email-postfix-42.eml → lhost-postfix-42.eml} +0 -0
  386. data/set-of-emails/maildir/bsd/{email-postfix-43.eml → lhost-postfix-43.eml} +0 -0
  387. data/set-of-emails/maildir/bsd/{email-postfix-44.eml → lhost-postfix-44.eml} +0 -0
  388. data/set-of-emails/maildir/bsd/{email-postfix-45.eml → lhost-postfix-45.eml} +0 -0
  389. data/set-of-emails/maildir/bsd/{email-postfix-46.eml → lhost-postfix-46.eml} +0 -0
  390. data/set-of-emails/maildir/bsd/{email-postfix-47.eml → lhost-postfix-47.eml} +0 -0
  391. data/set-of-emails/maildir/bsd/{email-postfix-48.eml → lhost-postfix-48.eml} +0 -0
  392. data/set-of-emails/maildir/bsd/{email-postfix-49.eml → lhost-postfix-49.eml} +0 -0
  393. data/set-of-emails/maildir/bsd/{email-postfix-50.eml → lhost-postfix-50.eml} +0 -0
  394. data/set-of-emails/maildir/bsd/{email-postfix-51.eml → lhost-postfix-51.eml} +0 -0
  395. data/set-of-emails/maildir/bsd/{email-postfix-52.eml → lhost-postfix-52.eml} +0 -0
  396. data/set-of-emails/maildir/bsd/{email-postfix-53.eml → lhost-postfix-53.eml} +0 -0
  397. data/set-of-emails/maildir/bsd/{email-postfix-54.eml → lhost-postfix-54.eml} +0 -0
  398. data/set-of-emails/maildir/bsd/{email-postfix-55.eml → lhost-postfix-55.eml} +0 -0
  399. data/set-of-emails/maildir/bsd/{email-postfix-56.eml → lhost-postfix-56.eml} +0 -0
  400. data/set-of-emails/maildir/bsd/{email-postfix-57.eml → lhost-postfix-57.eml} +0 -0
  401. data/set-of-emails/maildir/bsd/{email-postfix-58.eml → lhost-postfix-58.eml} +0 -0
  402. data/set-of-emails/maildir/bsd/{email-postfix-59.eml → lhost-postfix-59.eml} +0 -0
  403. data/set-of-emails/maildir/bsd/{email-postfix-60.eml → lhost-postfix-60.eml} +0 -0
  404. data/set-of-emails/maildir/bsd/{email-postfix-61.eml → lhost-postfix-61.eml} +0 -0
  405. data/set-of-emails/maildir/bsd/{email-postfix-62.eml → lhost-postfix-62.eml} +0 -0
  406. data/set-of-emails/maildir/bsd/{email-postfix-63.eml → lhost-postfix-63.eml} +0 -0
  407. data/set-of-emails/maildir/bsd/lhost-postfix-64.eml +96 -0
  408. data/set-of-emails/maildir/bsd/lhost-postfix-65.eml +69 -0
  409. data/set-of-emails/maildir/bsd/lhost-postfix-66.eml +80 -0
  410. data/set-of-emails/maildir/bsd/lhost-postfix-67.eml +80 -0
  411. data/set-of-emails/maildir/bsd/lhost-postfix-68.eml +82 -0
  412. data/set-of-emails/maildir/bsd/lhost-postfix-69.eml +80 -0
  413. data/set-of-emails/maildir/bsd/lhost-postfix-70.eml +87 -0
  414. data/set-of-emails/maildir/bsd/lhost-postfix-71.eml +81 -0
  415. data/set-of-emails/maildir/bsd/lhost-postfix-72.eml +81 -0
  416. data/set-of-emails/maildir/bsd/lhost-postfix-73.eml +79 -0
  417. data/set-of-emails/maildir/bsd/lhost-postfix-74.eml +83 -0
  418. data/set-of-emails/maildir/bsd/{rfc3464-05.eml → lhost-powermta-01.eml} +19 -18
  419. data/set-of-emails/maildir/bsd/lhost-powermta-02.eml +58 -0
  420. data/set-of-emails/maildir/bsd/lhost-powermta-03.eml +71 -0
  421. data/set-of-emails/maildir/bsd/{email-qmail-01.eml → lhost-qmail-01.eml} +0 -0
  422. data/set-of-emails/maildir/bsd/{email-qmail-02.eml → lhost-qmail-02.eml} +0 -0
  423. data/set-of-emails/maildir/bsd/{email-qmail-03.eml → lhost-qmail-03.eml} +0 -0
  424. data/set-of-emails/maildir/bsd/{email-qmail-04.eml → lhost-qmail-04.eml} +0 -0
  425. data/set-of-emails/maildir/bsd/{email-qmail-05.eml → lhost-qmail-05.eml} +0 -0
  426. data/set-of-emails/maildir/bsd/{email-qmail-06.eml → lhost-qmail-06.eml} +0 -0
  427. data/set-of-emails/maildir/bsd/{email-qmail-07.eml → lhost-qmail-07.eml} +0 -0
  428. data/set-of-emails/maildir/bsd/{email-qmail-08.eml → lhost-qmail-08.eml} +0 -0
  429. data/set-of-emails/maildir/bsd/{email-qmail-09.eml → lhost-qmail-09.eml} +0 -0
  430. data/set-of-emails/maildir/bsd/{email-qmail-10.eml → lhost-qmail-10.eml} +0 -0
  431. data/set-of-emails/maildir/bsd/{email-receivingses-01.eml → lhost-receivingses-01.eml} +0 -0
  432. data/set-of-emails/maildir/bsd/{email-receivingses-02.eml → lhost-receivingses-02.eml} +0 -0
  433. data/set-of-emails/maildir/bsd/{email-receivingses-03.eml → lhost-receivingses-03.eml} +0 -0
  434. data/set-of-emails/maildir/bsd/{email-receivingses-04.eml → lhost-receivingses-04.eml} +0 -0
  435. data/set-of-emails/maildir/bsd/{email-receivingses-05.eml → lhost-receivingses-05.eml} +0 -0
  436. data/set-of-emails/maildir/bsd/{email-receivingses-06.eml → lhost-receivingses-06.eml} +0 -0
  437. data/set-of-emails/maildir/bsd/{email-receivingses-07.eml → lhost-receivingses-07.eml} +0 -0
  438. data/set-of-emails/maildir/bsd/{email-sendgrid-01.eml → lhost-sendgrid-01.eml} +0 -0
  439. data/set-of-emails/maildir/bsd/{email-sendgrid-02.eml → lhost-sendgrid-02.eml} +0 -0
  440. data/set-of-emails/maildir/bsd/{email-sendgrid-03.eml → lhost-sendgrid-03.eml} +0 -0
  441. data/set-of-emails/maildir/bsd/{email-sendmail-01.eml → lhost-sendmail-01.eml} +0 -0
  442. data/set-of-emails/maildir/bsd/{email-sendmail-02.eml → lhost-sendmail-02.eml} +0 -0
  443. data/set-of-emails/maildir/bsd/{email-sendmail-03.eml → lhost-sendmail-03.eml} +0 -0
  444. data/set-of-emails/maildir/bsd/{email-sendmail-04.eml → lhost-sendmail-04.eml} +0 -0
  445. data/set-of-emails/maildir/bsd/{email-sendmail-05.eml → lhost-sendmail-05.eml} +0 -0
  446. data/set-of-emails/maildir/bsd/{email-sendmail-06.eml → lhost-sendmail-06.eml} +0 -0
  447. data/set-of-emails/maildir/bsd/{email-sendmail-07.eml → lhost-sendmail-07.eml} +0 -0
  448. data/set-of-emails/maildir/bsd/{email-sendmail-08.eml → lhost-sendmail-08.eml} +0 -0
  449. data/set-of-emails/maildir/bsd/{email-sendmail-09.eml → lhost-sendmail-09.eml} +0 -0
  450. data/set-of-emails/maildir/bsd/{email-sendmail-10.eml → lhost-sendmail-10.eml} +0 -0
  451. data/set-of-emails/maildir/bsd/{email-sendmail-11.eml → lhost-sendmail-11.eml} +0 -0
  452. data/set-of-emails/maildir/bsd/{email-sendmail-12.eml → lhost-sendmail-12.eml} +0 -0
  453. data/set-of-emails/maildir/bsd/{email-sendmail-13.eml → lhost-sendmail-13.eml} +0 -0
  454. data/set-of-emails/maildir/bsd/{email-sendmail-14.eml → lhost-sendmail-14.eml} +0 -0
  455. data/set-of-emails/maildir/bsd/{email-sendmail-15.eml → lhost-sendmail-15.eml} +0 -0
  456. data/set-of-emails/maildir/bsd/{email-sendmail-16.eml → lhost-sendmail-16.eml} +0 -0
  457. data/set-of-emails/maildir/bsd/{email-sendmail-17.eml → lhost-sendmail-17.eml} +0 -0
  458. data/set-of-emails/maildir/bsd/{email-sendmail-18.eml → lhost-sendmail-18.eml} +0 -0
  459. data/set-of-emails/maildir/bsd/{email-sendmail-19.eml → lhost-sendmail-19.eml} +0 -0
  460. data/set-of-emails/maildir/bsd/{email-sendmail-20.eml → lhost-sendmail-20.eml} +0 -0
  461. data/set-of-emails/maildir/bsd/{email-sendmail-21.eml → lhost-sendmail-21.eml} +0 -0
  462. data/set-of-emails/maildir/bsd/{email-sendmail-22.eml → lhost-sendmail-22.eml} +0 -0
  463. data/set-of-emails/maildir/bsd/{email-sendmail-24.eml → lhost-sendmail-24.eml} +0 -0
  464. data/set-of-emails/maildir/bsd/{email-sendmail-25.eml → lhost-sendmail-25.eml} +0 -0
  465. data/set-of-emails/maildir/bsd/{email-sendmail-26.eml → lhost-sendmail-26.eml} +0 -0
  466. data/set-of-emails/maildir/bsd/{email-sendmail-27.eml → lhost-sendmail-27.eml} +0 -0
  467. data/set-of-emails/maildir/bsd/{email-sendmail-28.eml → lhost-sendmail-28.eml} +0 -0
  468. data/set-of-emails/maildir/bsd/{email-sendmail-29.eml → lhost-sendmail-29.eml} +0 -0
  469. data/set-of-emails/maildir/bsd/{email-sendmail-30.eml → lhost-sendmail-30.eml} +0 -0
  470. data/set-of-emails/maildir/bsd/{email-sendmail-31.eml → lhost-sendmail-31.eml} +0 -0
  471. data/set-of-emails/maildir/bsd/{email-sendmail-32.eml → lhost-sendmail-32.eml} +0 -0
  472. data/set-of-emails/maildir/bsd/{email-sendmail-33.eml → lhost-sendmail-33.eml} +0 -0
  473. data/set-of-emails/maildir/bsd/{email-sendmail-34.eml → lhost-sendmail-34.eml} +0 -0
  474. data/set-of-emails/maildir/bsd/{email-sendmail-35.eml → lhost-sendmail-35.eml} +0 -0
  475. data/set-of-emails/maildir/bsd/{email-sendmail-36.eml → lhost-sendmail-36.eml} +0 -0
  476. data/set-of-emails/maildir/bsd/{email-sendmail-37.eml → lhost-sendmail-37.eml} +0 -0
  477. data/set-of-emails/maildir/bsd/{email-sendmail-38.eml → lhost-sendmail-38.eml} +0 -0
  478. data/set-of-emails/maildir/bsd/{email-sendmail-39.eml → lhost-sendmail-39.eml} +0 -0
  479. data/set-of-emails/maildir/bsd/{email-sendmail-40.eml → lhost-sendmail-40.eml} +0 -0
  480. data/set-of-emails/maildir/bsd/{email-sendmail-41.eml → lhost-sendmail-41.eml} +0 -0
  481. data/set-of-emails/maildir/bsd/{email-sendmail-42.eml → lhost-sendmail-42.eml} +0 -0
  482. data/set-of-emails/maildir/bsd/{email-sendmail-43.eml → lhost-sendmail-43.eml} +0 -0
  483. data/set-of-emails/maildir/bsd/{email-sendmail-44.eml → lhost-sendmail-44.eml} +0 -0
  484. data/set-of-emails/maildir/bsd/{email-sendmail-45.eml → lhost-sendmail-45.eml} +0 -0
  485. data/set-of-emails/maildir/bsd/{email-sendmail-46.eml → lhost-sendmail-46.eml} +0 -0
  486. data/set-of-emails/maildir/bsd/{email-sendmail-47.eml → lhost-sendmail-47.eml} +0 -0
  487. data/set-of-emails/maildir/bsd/{email-sendmail-48.eml → lhost-sendmail-48.eml} +0 -0
  488. data/set-of-emails/maildir/bsd/{email-sendmail-49.eml → lhost-sendmail-49.eml} +0 -0
  489. data/set-of-emails/maildir/bsd/{email-sendmail-50.eml → lhost-sendmail-50.eml} +0 -0
  490. data/set-of-emails/maildir/bsd/{email-sendmail-51.eml → lhost-sendmail-51.eml} +0 -0
  491. data/set-of-emails/maildir/bsd/{email-sendmail-52.eml → lhost-sendmail-52.eml} +0 -0
  492. data/set-of-emails/maildir/bsd/{email-sendmail-53.eml → lhost-sendmail-53.eml} +0 -0
  493. data/set-of-emails/maildir/bsd/{email-sendmail-54.eml → lhost-sendmail-54.eml} +0 -0
  494. data/set-of-emails/maildir/bsd/{email-sendmail-55.eml → lhost-sendmail-55.eml} +0 -0
  495. data/set-of-emails/maildir/bsd/{email-sendmail-56.eml → lhost-sendmail-56.eml} +0 -0
  496. data/set-of-emails/maildir/bsd/lhost-sendmail-57.eml +59 -0
  497. data/set-of-emails/maildir/bsd/lhost-sendmail-58.eml +70 -0
  498. data/set-of-emails/maildir/bsd/lhost-sendmail-59.eml +68 -0
  499. data/set-of-emails/maildir/bsd/{email-surfcontrol-01.eml → lhost-surfcontrol-01.eml} +0 -0
  500. data/set-of-emails/maildir/bsd/{email-surfcontrol-02.eml → lhost-surfcontrol-02.eml} +0 -0
  501. data/set-of-emails/maildir/bsd/{email-surfcontrol-03.eml → lhost-surfcontrol-03.eml} +0 -0
  502. data/set-of-emails/maildir/bsd/{email-v5sendmail-01.eml → lhost-v5sendmail-01.eml} +0 -0
  503. data/set-of-emails/maildir/bsd/{email-v5sendmail-02.eml → lhost-v5sendmail-02.eml} +0 -0
  504. data/set-of-emails/maildir/bsd/{email-v5sendmail-03.eml → lhost-v5sendmail-03.eml} +0 -0
  505. data/set-of-emails/maildir/bsd/{email-v5sendmail-04.eml → lhost-v5sendmail-04.eml} +0 -0
  506. data/set-of-emails/maildir/bsd/{email-v5sendmail-05.eml → lhost-v5sendmail-05.eml} +0 -0
  507. data/set-of-emails/maildir/bsd/{email-v5sendmail-06.eml → lhost-v5sendmail-06.eml} +0 -0
  508. data/set-of-emails/maildir/bsd/{email-v5sendmail-07.eml → lhost-v5sendmail-07.eml} +0 -0
  509. data/set-of-emails/maildir/bsd/{email-verizon-01.eml → lhost-verizon-01.eml} +0 -0
  510. data/set-of-emails/maildir/bsd/{email-verizon-02.eml → lhost-verizon-02.eml} +0 -0
  511. data/set-of-emails/maildir/bsd/{email-x1-01.eml → lhost-x1-01.eml} +0 -0
  512. data/set-of-emails/maildir/bsd/{email-x1-02.eml → lhost-x1-02.eml} +0 -0
  513. data/set-of-emails/maildir/bsd/{email-x2-01.eml → lhost-x2-01.eml} +0 -0
  514. data/set-of-emails/maildir/bsd/{email-x2-02.eml → lhost-x2-02.eml} +0 -0
  515. data/set-of-emails/maildir/bsd/{email-x2-03.eml → lhost-x2-03.eml} +0 -0
  516. data/set-of-emails/maildir/bsd/{email-x2-04.eml → lhost-x2-04.eml} +0 -0
  517. data/set-of-emails/maildir/bsd/{email-x2-05.eml → lhost-x2-05.eml} +0 -0
  518. data/set-of-emails/maildir/bsd/{email-x3-01.eml → lhost-x3-01.eml} +0 -0
  519. data/set-of-emails/maildir/bsd/{email-x3-02.eml → lhost-x3-02.eml} +0 -0
  520. data/set-of-emails/maildir/bsd/{email-x3-03.eml → lhost-x3-03.eml} +0 -0
  521. data/set-of-emails/maildir/bsd/{email-x3-05.eml → lhost-x3-05.eml} +0 -0
  522. data/set-of-emails/maildir/bsd/lhost-x3-06.eml +53 -0
  523. data/set-of-emails/maildir/bsd/{email-x4-01.eml → lhost-x4-01.eml} +0 -0
  524. data/set-of-emails/maildir/bsd/{email-x4-08.eml → lhost-x4-08.eml} +0 -0
  525. data/set-of-emails/maildir/bsd/{email-x5-01.eml → lhost-x5-01.eml} +0 -0
  526. data/set-of-emails/maildir/bsd/lhost-x6-01.eml +71 -0
  527. data/set-of-emails/maildir/bsd/lhost-x6-02.eml +68 -0
  528. data/set-of-emails/maildir/bsd/{email-yahoo-01.eml → lhost-yahoo-01.eml} +0 -0
  529. data/set-of-emails/maildir/bsd/{email-yahoo-02.eml → lhost-yahoo-02.eml} +0 -0
  530. data/set-of-emails/maildir/bsd/{email-yahoo-03.eml → lhost-yahoo-03.eml} +0 -0
  531. data/set-of-emails/maildir/bsd/{email-yahoo-04.eml → lhost-yahoo-04.eml} +0 -0
  532. data/set-of-emails/maildir/bsd/{email-yahoo-05.eml → lhost-yahoo-05.eml} +0 -0
  533. data/set-of-emails/maildir/bsd/{email-yahoo-06.eml → lhost-yahoo-06.eml} +0 -0
  534. data/set-of-emails/maildir/bsd/{email-yahoo-07.eml → lhost-yahoo-07.eml} +0 -0
  535. data/set-of-emails/maildir/bsd/{email-yahoo-08.eml → lhost-yahoo-08.eml} +0 -0
  536. data/set-of-emails/maildir/bsd/{email-yahoo-09.eml → lhost-yahoo-09.eml} +0 -0
  537. data/set-of-emails/maildir/bsd/{email-yahoo-10.eml → lhost-yahoo-10.eml} +0 -0
  538. data/set-of-emails/maildir/bsd/{email-yahoo-11.eml → lhost-yahoo-11.eml} +0 -0
  539. data/set-of-emails/maildir/bsd/{email-yahoo-12.eml → lhost-yahoo-12.eml} +0 -0
  540. data/set-of-emails/maildir/bsd/{email-yahoo-13.eml → lhost-yahoo-13.eml} +0 -0
  541. data/set-of-emails/maildir/bsd/{email-yahoo-14.eml → lhost-yahoo-14.eml} +0 -0
  542. data/set-of-emails/maildir/bsd/{email-yandex-01.eml → lhost-yandex-01.eml} +0 -0
  543. data/set-of-emails/maildir/bsd/{email-yandex-02.eml → lhost-yandex-02.eml} +0 -0
  544. data/set-of-emails/maildir/bsd/{email-yandex-03.eml → lhost-yandex-03.eml} +0 -0
  545. data/set-of-emails/maildir/bsd/{email-zoho-01.eml → lhost-zoho-01.eml} +0 -0
  546. data/set-of-emails/maildir/bsd/{email-zoho-02.eml → lhost-zoho-02.eml} +0 -0
  547. data/set-of-emails/maildir/bsd/{email-zoho-03.eml → lhost-zoho-03.eml} +0 -0
  548. data/set-of-emails/maildir/bsd/{email-zoho-04.eml → lhost-zoho-04.eml} +0 -0
  549. data/set-of-emails/maildir/bsd/{email-zoho-05.eml → lhost-zoho-05.eml} +0 -0
  550. data/set-of-emails/maildir/bsd/rfc3834-03.eml +26 -0
  551. data/set-of-emails/maildir/bsd/{rfc3464-41.eml → rfc3834-04.eml} +0 -0
  552. data/set-of-emails/maildir/bsd/rhost-cox-01.eml +192 -0
  553. data/set-of-emails/maildir/bsd/rhost-franceptt-04.eml +66 -0
  554. data/set-of-emails/maildir/bsd/rhost-franceptt-05.eml +96 -0
  555. data/set-of-emails/maildir/bsd/rhost-franceptt-06.eml +100 -0
  556. data/set-of-emails/maildir/bsd/rhost-franceptt-07.eml +97 -0
  557. data/set-of-emails/maildir/bsd/rhost-franceptt-08.eml +78 -0
  558. data/set-of-emails/maildir/bsd/rhost-franceptt-10.eml +79 -0
  559. data/set-of-emails/maildir/bsd/rhost-franceptt-11.eml +96 -0
  560. data/set-of-emails/maildir/bsd/rhost-spectrum-01.eml +111 -0
  561. data/set-of-emails/maildir/dos/{email-activehunter-01.eml → lhost-activehunter-01.eml} +0 -0
  562. data/set-of-emails/maildir/dos/{email-amavis-01.eml → lhost-amavis-01.eml} +0 -0
  563. data/set-of-emails/maildir/dos/{email-amazonses-01.eml → lhost-amazonses-01.eml} +0 -0
  564. data/set-of-emails/maildir/dos/{email-amazonworkmail-01.eml → lhost-amazonworkmail-01.eml} +0 -0
  565. data/set-of-emails/maildir/dos/{email-aol-01.eml → lhost-aol-01.eml} +0 -0
  566. data/set-of-emails/maildir/dos/{email-apachejames-01.eml → lhost-apachejames-01.eml} +0 -0
  567. data/set-of-emails/maildir/dos/lhost-barracuda-01.eml +67 -0
  568. data/set-of-emails/maildir/dos/{email-bigfoot-01.eml → lhost-bigfoot-01.eml} +0 -0
  569. data/set-of-emails/maildir/dos/{email-biglobe-01.eml → lhost-biglobe-01.eml} +0 -0
  570. data/set-of-emails/maildir/dos/{email-courier-01.eml → lhost-courier-01.eml} +0 -0
  571. data/set-of-emails/maildir/dos/{email-domino-01.eml → lhost-domino-01.eml} +0 -0
  572. data/set-of-emails/maildir/dos/{email-einsundeins-01.eml → lhost-einsundeins-01.eml} +0 -0
  573. data/set-of-emails/maildir/dos/{email-exchange-01.eml → lhost-exchange-01.eml} +0 -0
  574. data/set-of-emails/maildir/dos/{email-exchange2003-01.eml → lhost-exchange2003-01.eml} +0 -0
  575. data/set-of-emails/maildir/dos/{email-exchange2007-01.eml → lhost-exchange2007-01.eml} +0 -0
  576. data/set-of-emails/maildir/dos/{email-exim-01.eml → lhost-exim-01.eml} +0 -0
  577. data/set-of-emails/maildir/dos/{email-ezweb-01.eml → lhost-ezweb-01.eml} +0 -0
  578. data/set-of-emails/maildir/dos/{email-facebook-01.eml → lhost-facebook-01.eml} +0 -0
  579. data/set-of-emails/maildir/dos/{email-google-01.eml → lhost-gmail-01.eml} +0 -0
  580. data/set-of-emails/maildir/dos/{email-gmx-01.eml → lhost-gmx-01.eml} +0 -0
  581. data/set-of-emails/maildir/dos/lhost-googlegroups-01.eml +116 -0
  582. data/set-of-emails/maildir/dos/{email-gsuite-01.eml → lhost-gsuite-01.eml} +0 -0
  583. data/set-of-emails/maildir/dos/{email-imailserver-01.eml → lhost-imailserver-01.eml} +0 -0
  584. data/set-of-emails/maildir/dos/{email-interscanmss-01.eml → lhost-interscanmss-01.eml} +0 -0
  585. data/set-of-emails/maildir/dos/{email-kddi-01.eml → lhost-kddi-01.eml} +0 -0
  586. data/set-of-emails/maildir/dos/{email-mailfoundry-01.eml → lhost-mailfoundry-01.eml} +0 -0
  587. data/set-of-emails/maildir/dos/{email-mailmarshalsmtp-01.eml → lhost-mailmarshalsmtp-01.eml} +0 -0
  588. data/set-of-emails/maildir/dos/{email-mailru-01.eml → lhost-mailru-01.eml} +0 -0
  589. data/set-of-emails/maildir/dos/{email-mcafee-01.eml → lhost-mcafee-01.eml} +0 -0
  590. data/set-of-emails/maildir/dos/{email-messagelabs-01.eml → lhost-messagelabs-01.eml} +0 -0
  591. data/set-of-emails/maildir/dos/{email-messagingserver-01.eml → lhost-messagingserver-01.eml} +0 -0
  592. data/set-of-emails/maildir/dos/{email-mfilter-01.eml → lhost-mfilter-01.eml} +0 -0
  593. data/set-of-emails/maildir/dos/{email-mxlogic-01.eml → lhost-mxlogic-01.eml} +0 -0
  594. data/set-of-emails/maildir/dos/{email-notes-01.eml → lhost-notes-01.eml} +0 -0
  595. data/set-of-emails/maildir/dos/{email-office365-01.eml → lhost-office365-01.eml} +0 -0
  596. data/set-of-emails/maildir/dos/{email-opensmtpd-01.eml → lhost-opensmtpd-01.eml} +0 -0
  597. data/set-of-emails/maildir/dos/{email-outlook-01.eml → lhost-outlook-01.eml} +0 -0
  598. data/set-of-emails/maildir/dos/{email-postfix-01.eml → lhost-postfix-01.eml} +0 -0
  599. data/set-of-emails/maildir/dos/lhost-powermta-01.eml +64 -0
  600. data/set-of-emails/maildir/dos/{email-qmail-01.eml → lhost-qmail-01.eml} +0 -0
  601. data/set-of-emails/maildir/dos/{email-receivingses-01.eml → lhost-receivingses-01.eml} +0 -0
  602. data/set-of-emails/maildir/dos/{email-sendgrid-01.eml → lhost-sendgrid-01.eml} +0 -0
  603. data/set-of-emails/maildir/dos/{email-sendmail-01.eml → lhost-sendmail-01.eml} +0 -0
  604. data/set-of-emails/maildir/dos/{email-surfcontrol-01.eml → lhost-surfcontrol-01.eml} +0 -0
  605. data/set-of-emails/maildir/dos/{email-v5sendmail-01.eml → lhost-v5sendmail-01.eml} +0 -0
  606. data/set-of-emails/maildir/dos/{email-verizon-01.eml → lhost-verizon-01.eml} +0 -0
  607. data/set-of-emails/maildir/dos/{email-x1-01.eml → lhost-x1-01.eml} +0 -0
  608. data/set-of-emails/maildir/dos/{email-x2-01.eml → lhost-x2-01.eml} +0 -0
  609. data/set-of-emails/maildir/dos/{email-x3-01.eml → lhost-x3-01.eml} +0 -0
  610. data/set-of-emails/maildir/dos/{email-x4-01.eml → lhost-x4-01.eml} +0 -0
  611. data/set-of-emails/maildir/dos/{email-x5-01.eml → lhost-x5-01.eml} +0 -0
  612. data/set-of-emails/maildir/dos/lhost-x6-01.eml +71 -0
  613. data/set-of-emails/maildir/dos/{email-yahoo-01.eml → lhost-yahoo-01.eml} +0 -0
  614. data/set-of-emails/maildir/dos/{email-yandex-01.eml → lhost-yandex-01.eml} +0 -0
  615. data/set-of-emails/maildir/dos/{email-zoho-01.eml → lhost-zoho-01.eml} +0 -0
  616. data/set-of-emails/maildir/dos/rhost-iua-01.eml +70 -0
  617. data/set-of-emails/maildir/mac/{email-activehunter-01.eml → lhost-activehunter-01.eml} +0 -0
  618. data/set-of-emails/maildir/mac/{email-amavis-01.eml → lhost-amavis-01.eml} +0 -0
  619. data/set-of-emails/maildir/mac/{email-amazonses-01.eml → lhost-amazonses-01.eml} +0 -0
  620. data/set-of-emails/maildir/mac/{email-amazonworkmail-01.eml → lhost-amazonworkmail-01.eml} +0 -0
  621. data/set-of-emails/maildir/mac/{email-aol-01.eml → lhost-aol-01.eml} +0 -0
  622. data/set-of-emails/maildir/mac/{email-apachejames-01.eml → lhost-apachejames-01.eml} +0 -0
  623. data/set-of-emails/maildir/mac/lhost-barracuda-01.eml +1 -4
  624. data/set-of-emails/maildir/mac/{email-bigfoot-01.eml → lhost-bigfoot-01.eml} +0 -0
  625. data/set-of-emails/maildir/mac/{email-biglobe-01.eml → lhost-biglobe-01.eml} +0 -0
  626. data/set-of-emails/maildir/mac/{email-courier-01.eml → lhost-courier-01.eml} +0 -0
  627. data/set-of-emails/maildir/mac/{email-domino-01.eml → lhost-domino-01.eml} +0 -0
  628. data/set-of-emails/maildir/mac/{email-einsundeins-01.eml → lhost-einsundeins-01.eml} +0 -0
  629. data/set-of-emails/maildir/mac/{email-exchange-01.eml → lhost-exchange-01.eml} +0 -0
  630. data/set-of-emails/maildir/mac/{email-exchange2003-01.eml → lhost-exchange2003-01.eml} +0 -0
  631. data/set-of-emails/maildir/mac/{email-exchange2007-01.eml → lhost-exchange2007-01.eml} +0 -0
  632. data/set-of-emails/maildir/mac/{email-exim-01.eml → lhost-exim-01.eml} +0 -0
  633. data/set-of-emails/maildir/mac/{email-ezweb-01.eml → lhost-ezweb-01.eml} +0 -0
  634. data/set-of-emails/maildir/mac/{email-facebook-01.eml → lhost-facebook-01.eml} +0 -0
  635. data/set-of-emails/maildir/mac/{email-google-01.eml → lhost-gmail-01.eml} +0 -0
  636. data/set-of-emails/maildir/mac/{email-gmx-01.eml → lhost-gmx-01.eml} +0 -0
  637. data/set-of-emails/maildir/mac/lhost-googlegroups-01.eml +1 -1
  638. data/set-of-emails/maildir/mac/{email-gsuite-01.eml → lhost-gsuite-01.eml} +0 -0
  639. data/set-of-emails/maildir/mac/{email-imailserver-01.eml → lhost-imailserver-01.eml} +0 -0
  640. data/set-of-emails/maildir/mac/{email-interscanmss-01.eml → lhost-interscanmss-01.eml} +0 -0
  641. data/set-of-emails/maildir/mac/{email-kddi-01.eml → lhost-kddi-01.eml} +0 -0
  642. data/set-of-emails/maildir/mac/{email-mailfoundry-01.eml → lhost-mailfoundry-01.eml} +0 -0
  643. data/set-of-emails/maildir/mac/{email-mailmarshalsmtp-01.eml → lhost-mailmarshalsmtp-01.eml} +0 -0
  644. data/set-of-emails/maildir/mac/{email-mailru-01.eml → lhost-mailru-01.eml} +0 -0
  645. data/set-of-emails/maildir/mac/{email-mcafee-01.eml → lhost-mcafee-01.eml} +0 -0
  646. data/set-of-emails/maildir/mac/{email-messagelabs-01.eml → lhost-messagelabs-01.eml} +0 -0
  647. data/set-of-emails/maildir/mac/{email-messagingserver-01.eml → lhost-messagingserver-01.eml} +0 -0
  648. data/set-of-emails/maildir/mac/{email-mfilter-01.eml → lhost-mfilter-01.eml} +0 -0
  649. data/set-of-emails/maildir/mac/{email-mxlogic-01.eml → lhost-mxlogic-01.eml} +0 -0
  650. data/set-of-emails/maildir/mac/{email-notes-01.eml → lhost-notes-01.eml} +0 -0
  651. data/set-of-emails/maildir/mac/{email-office365-01.eml → lhost-office365-01.eml} +0 -0
  652. data/set-of-emails/maildir/mac/{email-opensmtpd-01.eml → lhost-opensmtpd-01.eml} +0 -0
  653. data/set-of-emails/maildir/mac/{email-outlook-01.eml → lhost-outlook-01.eml} +0 -0
  654. data/set-of-emails/maildir/mac/{email-postfix-01.eml → lhost-postfix-01.eml} +0 -0
  655. data/set-of-emails/maildir/mac/lhost-powermta-01.eml +1 -4
  656. data/set-of-emails/maildir/mac/{email-qmail-01.eml → lhost-qmail-01.eml} +0 -0
  657. data/set-of-emails/maildir/mac/{email-receivingses-01.eml → lhost-receivingses-01.eml} +0 -0
  658. data/set-of-emails/maildir/mac/{email-sendgrid-01.eml → lhost-sendgrid-01.eml} +0 -0
  659. data/set-of-emails/maildir/mac/{email-sendmail-01.eml → lhost-sendmail-01.eml} +0 -0
  660. data/set-of-emails/maildir/mac/{email-surfcontrol-01.eml → lhost-surfcontrol-01.eml} +0 -0
  661. data/set-of-emails/maildir/mac/{email-v5sendmail-01.eml → lhost-v5sendmail-01.eml} +0 -0
  662. data/set-of-emails/maildir/mac/{email-verizon-01.eml → lhost-verizon-01.eml} +0 -0
  663. data/set-of-emails/maildir/mac/{email-x1-01.eml → lhost-x1-01.eml} +0 -0
  664. data/set-of-emails/maildir/mac/{email-x2-01.eml → lhost-x2-01.eml} +0 -0
  665. data/set-of-emails/maildir/mac/{email-x3-01.eml → lhost-x3-01.eml} +0 -0
  666. data/set-of-emails/maildir/mac/{email-x4-01.eml → lhost-x4-01.eml} +0 -0
  667. data/set-of-emails/maildir/mac/{email-x5-01.eml → lhost-x5-01.eml} +0 -0
  668. data/set-of-emails/maildir/mac/lhost-x6-01.eml +1 -3
  669. data/set-of-emails/maildir/mac/{email-yahoo-01.eml → lhost-yahoo-01.eml} +0 -0
  670. data/set-of-emails/maildir/mac/{email-yandex-01.eml → lhost-yandex-01.eml} +0 -0
  671. data/set-of-emails/maildir/mac/{email-zoho-01.eml → lhost-zoho-01.eml} +0 -0
  672. data/set-of-emails/maildir/mac/rhost-iua-01.eml +1 -4
  673. metadata +587 -521
  674. data/lib/sisimai/bite.rb +0 -42
  675. data/lib/sisimai/bite/email.rb +0 -18
  676. data/lib/sisimai/bite/json.rb +0 -16
  677. data/lib/sisimai/lhost/userdefined.rb +0 -115
  678. data/lib/sisimai/message/email.rb +0 -26
  679. data/lib/sisimai/message/json.rb +0 -24
  680. data/lib/sisimai/order/email.rb +0 -20
  681. data/lib/sisimai/order/json.rb +0 -16
@@ -8,7 +8,7 @@ module Sisimai::Lhost
8
8
 
9
9
  # Postfix manual - bounce(5) - http://www.postfix.org/bounce.5.html
10
10
  Indicators = Sisimai::Lhost.INDICATORS
11
- StartingOf = { rfc822: ['Content-Type: message/rfc822', 'Content-Type: text/rfc822-headers'] }.freeze
11
+ ReBackbone = %r<^Content-Type:[ ](?:message/rfc822|text/rfc822-headers)>.freeze
12
12
  MarkingsOf = {
13
13
  message: %r{\A(?>
14
14
  [ ]+The[ ](?:
@@ -28,173 +28,157 @@ module Sisimai::Lhost
28
28
  )
29
29
  )
30
30
  }x,
31
+ # :from => %r/ [(]Mail Delivery System[)]\z/,
31
32
  }.freeze
32
33
 
33
- def description; return 'Postfix'; end
34
- def smtpagent; return Sisimai::Lhost.smtpagent(self); end
35
- def headerlist; return []; end
36
-
37
34
  # Parse bounce messages from Postfix
38
- # @param [Hash] mhead Message headers of a bounce email
39
- # @options mhead [String] from From header
40
- # @options mhead [String] date Date header
41
- # @options mhead [String] subject Subject header
42
- # @options mhead [Array] received Received headers
43
- # @options mhead [String] others Other required headers
44
- # @param [String] mbody Message body of a bounce email
45
- # @return [Hash, Nil] Bounce data list and message/rfc822
46
- # part or nil if it failed to parse or
47
- # the arguments are missing
35
+ # @param [Hash] mhead Message headers of a bounce email
36
+ # @param [String] mbody Message body of a bounce email
37
+ # @return [Hash] Bounce data list and message/rfc822 part
38
+ # @return [Nil] it failed to parse or the arguments are missing
48
39
  def make(mhead, mbody)
49
- # :from => %r/ [(]Mail Delivery System[)]\z/,
50
40
  return nil unless mhead['subject'] == 'Undelivered Mail Returned to Sender'
41
+ return nil if mhead['x-aol-ip']
51
42
 
52
43
  require 'sisimai/rfc1894'
44
+ require 'sisimai/address'
53
45
  fieldtable = Sisimai::RFC1894.FIELDTABLE
54
46
  permessage = {} # (Hash) Store values of each Per-Message field
55
47
 
56
48
  dscontents = [Sisimai::Lhost.DELIVERYSTATUS]
57
- hasdivided = mbody.split("\n")
58
- havepassed = ['']
59
- rfc822list = [] # (Array) Each line in message/rfc822 part string
60
- blanklines = 0 # (Integer) The number of blank lines
49
+ emailsteak = Sisimai::RFC5322.fillet(mbody, ReBackbone)
50
+ bodyslices = emailsteak[0].split("\n")
51
+ readslices = ['']
61
52
  readcursor = 0 # (Integer) Points the current cursor position
62
53
  recipients = 0 # (Integer) The number of 'Final-Recipient' header
54
+ nomessages = false # (Boolean) Delivery report unavailable
63
55
  commandset = [] # (Array) ``in reply to * command'' list
64
56
  anotherset = {} # Another error information
65
57
  v = nil
66
58
 
67
- while e = hasdivided.shift do
68
- # Save the current line for the next loop
69
- havepassed << e
70
- p = havepassed[-2]
59
+ while e = bodyslices.shift do
60
+ # Read error messages and delivery status lines from the head of the email
61
+ # to the previous line of the beginning of the original message.
62
+ readslices << e # Save the current line for the next loop
71
63
 
72
64
  if readcursor == 0
73
65
  # Beginning of the bounce message or message/delivery-status part
74
- if e =~ MarkingsOf[:message]
75
- readcursor |= Indicators[:deliverystatus]
76
- next
77
- end
78
- end
79
-
80
- if (readcursor & Indicators[:'message-rfc822']) == 0
81
- # Beginning of the original message part(message/rfc822)
82
- if e.start_with?(StartingOf[:rfc822][0], StartingOf[:rfc822][1])
83
- readcursor |= Indicators[:'message-rfc822']
84
- next
85
- end
66
+ readcursor |= Indicators[:deliverystatus] if e =~ MarkingsOf[:message]
67
+ next
86
68
  end
87
-
88
- if readcursor & Indicators[:'message-rfc822'] > 0
89
- # message/rfc822 OR text/rfc822-headers part
90
- if e.empty?
91
- blanklines += 1
92
- break if blanklines > 1
93
- next
94
- end
95
- rfc822list << e
96
- else
97
- # message/delivery-status part
98
- next if (readcursor & Indicators[:deliverystatus]) == 0
99
- next if e.empty?
100
-
101
- if f = Sisimai::RFC1894.match(e)
102
- # "e" matched with any field defined in RFC3464
103
- next unless o = Sisimai::RFC1894.field(e)
104
- v = dscontents[-1]
105
-
106
- if o[-1] == 'addr'
69
+ next if (readcursor & Indicators[:deliverystatus]) == 0
70
+ next if e.empty?
71
+
72
+ if f = Sisimai::RFC1894.match(e)
73
+ # "e" matched with any field defined in RFC3464
74
+ next unless o = Sisimai::RFC1894.field(e)
75
+ v = dscontents[-1]
76
+
77
+ if o[-1] == 'addr'
78
+ # Final-Recipient: rfc822; kijitora@example.jp
79
+ # X-Actual-Recipient: rfc822; kijitora@example.co.jp
80
+ if o[0] == 'final-recipient'
107
81
  # Final-Recipient: rfc822; kijitora@example.jp
108
- # X-Actual-Recipient: rfc822; kijitora@example.co.jp
109
- if o[0] == 'final-recipient'
110
- # Final-Recipient: rfc822; kijitora@example.jp
111
- if v['recipient']
112
- # There are multiple recipient addresses in the message body.
113
- dscontents << Sisimai::Lhost.DELIVERYSTATUS
114
- v = dscontents[-1]
115
- end
116
- v['recipient'] = o[2]
117
- recipients += 1
118
- else
119
- # X-Actual-Recipient: rfc822; kijitora@example.co.jp
120
- v['alias'] = o[2]
82
+ if v['recipient']
83
+ # There are multiple recipient addresses in the message body.
84
+ dscontents << Sisimai::Lhost.DELIVERYSTATUS
85
+ v = dscontents[-1]
121
86
  end
122
- elsif o[-1] == 'code'
123
- # Diagnostic-Code: SMTP; 550 5.1.1 <userunknown@example.jp>... User Unknown
124
- v['spec'] = o[1]
125
- v['spec'] = 'SMTP' if v['spec'] == 'X-POSTFIX'
126
- v['diagnosis'] = o[2]
87
+ v['recipient'] = o[2]
88
+ recipients += 1
127
89
  else
128
- # Other DSN fields defined in RFC3464
129
- next unless fieldtable.key?(o[0])
130
- v[fieldtable[o[0]]] = o[2]
131
-
132
- next unless f == 1
133
- permessage[fieldtable[o[0]]] = o[2]
90
+ # X-Actual-Recipient: rfc822; kijitora@example.co.jp
91
+ v['alias'] = o[2]
134
92
  end
93
+ elsif o[-1] == 'code'
94
+ # Diagnostic-Code: SMTP; 550 5.1.1 <userunknown@example.jp>... User Unknown
95
+ v['spec'] = o[1]
96
+ v['spec'] = 'SMTP' if v['spec'] == 'X-POSTFIX'
97
+ v['diagnosis'] = o[2]
135
98
  else
136
- # If you do so, please include this problem report. You can
137
- # delete your own text from the attached returned message.
138
- #
139
- # The mail system
140
- #
141
- # <userunknown@example.co.jp>: host mx.example.co.jp[192.0.2.153] said: 550
142
- # 5.1.1 <userunknown@example.co.jp>... User Unknown (in reply to RCPT TO
143
- # command)
144
- if p.start_with?('Diagnostic-Code:') && cv = e.match(/\A[ \t]+(.+)\z/)
145
- # Continued line of the value of Diagnostic-Code header
146
- v['diagnosis'] << ' ' << cv[1]
147
- havepassed[-1] = 'Diagnostic-Code: ' << e
99
+ # Other DSN fields defined in RFC3464
100
+ next unless fieldtable[o[0]]
101
+ v[fieldtable[o[0]]] = o[2]
148
102
 
149
- elsif cv = e.match(/\A(X-Postfix-Sender):[ ]*rfc822;[ ]*(.+)\z/)
150
- # X-Postfix-Sender: rfc822; shironeko@example.org
151
- rfc822list << cv[1] << ': ' << cv[2]
103
+ next unless f == 1
104
+ permessage[fieldtable[o[0]]] = o[2]
105
+ end
106
+ else
107
+ # If you do so, please include this problem report. You can
108
+ # delete your own text from the attached returned message.
109
+ #
110
+ # The mail system
111
+ #
112
+ # <userunknown@example.co.jp>: host mx.example.co.jp[192.0.2.153] said: 550
113
+ # 5.1.1 <userunknown@example.co.jp>... User Unknown (in reply to RCPT TO command)
114
+ if readslices[-2].start_with?('Diagnostic-Code:') && cv = e.match(/\A[ \t]+(.+)\z/)
115
+ # Continued line of the value of Diagnostic-Code header
116
+ v['diagnosis'] << ' ' << cv[1]
117
+ readslices[-1] = 'Diagnostic-Code: ' << e
118
+
119
+ elsif cv = e.match(/\A(X-Postfix-Sender):[ ]*rfc822;[ ]*(.+)\z/)
120
+ # X-Postfix-Sender: rfc822; shironeko@example.org
121
+ emailsteak[1] << cv[1] << ': ' << cv[2] << "\n"
152
122
 
123
+ else
124
+ if cv = e.match(/[ \t][(]in reply to (?:end of )?([A-Z]{4}).*/) ||
125
+ cv = e.match(/([A-Z]{4})[ \t]*.*command[)]\z/)
126
+ # 5.1.1 <userunknown@example.co.jp>... User Unknown (in reply to RCPT TO
127
+ commandset << cv[1]
128
+ anotherset['diagnosis'] ||= ''
129
+ anotherset['diagnosis'] << ' ' << e
153
130
  else
154
- if cv = e.match(/[ \t][(]in reply to ([A-Z]{4}).*/)
155
- # 5.1.1 <userunknown@example.co.jp>... User Unknown (in reply to RCPT TO
156
- commandset << cv[1]
157
- anotherset['diagnosis'] ||= ''
158
- anotherset['diagnosis'] << ' ' << e
159
-
160
- elsif cv = e.match(/([A-Z]{4})[ \t]*.*command[)]\z/)
161
- # to MAIL command)
162
- commandset << cv[1]
163
- anotherset['diagnosis'] ||= ''
164
- anotherset['diagnosis'] << ' ' << e
165
-
131
+ # Alternative error message and recipient
132
+ if cv = e.match(/\A[<]([^ ]+[@][^ ]+)[>] [(]expanded from [<](.+)[>][)]:[ \t]*(.+)\z/)
133
+ # <r@example.ne.jp> (expanded from <kijitora@example.org>): user ...
134
+ anotherset['recipient'] = cv[1]
135
+ anotherset['alias'] = cv[2]
136
+ anotherset['diagnosis'] = cv[3]
137
+
138
+ elsif cv = e.match(/\A[<]([^ ]+[@][^ ]+)[>]:(.*)\z/)
139
+ # <kijitora@exmaple.jp>: ...
140
+ anotherset['recipient'] = cv[1]
141
+ anotherset['diagnosis'] = cv[2]
142
+
143
+ elsif e.include?('--- Delivery report unavailable ---')
144
+ # postfix-3.1.4/src/bounce/bounce_notify_util.c
145
+ # bounce_notify_util.c:602|if (bounce_info->log_handle == 0
146
+ # bounce_notify_util.c:602||| bounce_log_rewind(bounce_info->log_handle)) {
147
+ # bounce_notify_util.c:602|if (IS_FAILURE_TEMPLATE(bounce_info->template)) {
148
+ # bounce_notify_util.c:602| post_mail_fputs(bounce, "");
149
+ # bounce_notify_util.c:602| post_mail_fputs(bounce, "\t--- delivery report unavailable ---");
150
+ # bounce_notify_util.c:602| count = 1; /* xxx don't abort */
151
+ # bounce_notify_util.c:602|}
152
+ # bounce_notify_util.c:602|} else {
153
+ nomessages = true
166
154
  else
167
- # Alternative error message and recipient
168
- if cv = e.match(/\A[<]([^ ]+[@][^ ]+)[>] [(]expanded from [<](.+)[>][)]:[ \t]*(.+)\z/)
169
- # <r@example.ne.jp> (expanded from <kijitora@example.org>): user ...
170
- anotherset['recipient'] = cv[1]
171
- anotherset['alias'] = cv[2]
172
- anotherset['diagnosis'] = cv[3]
173
-
174
- elsif cv = e.match(/\A[<]([^ ]+[@][^ ]+)[>]:(.*)\z/)
175
- # <kijitora@exmaple.jp>: ...
176
- anotherset['recipient'] = cv[1]
177
- anotherset['diagnosis'] = cv[2]
178
- else
179
- # Get error message continued from the previous line
180
- next unless anotherset['diagnosis']
181
- if e =~ /\A[ \t]{4}(.+)\z/
182
- # host mx.example.jp said:...
183
- anotherset['diagnosis'] << ' ' << e
184
- end
185
- end
155
+ # Get error message continued from the previous line
156
+ next unless anotherset['diagnosis']
157
+ if e =~ /\A[ \t]{4}(.+)\z/
158
+ # host mx.example.jp said:...
159
+ anotherset['diagnosis'] << ' ' << e
186
160
  end
161
+ end
187
162
  end
188
163
  end
189
- end # End of message/delivery-status
164
+ end
190
165
  end
191
166
 
192
167
  unless recipients > 0
193
- # Fallback: set recipient address from error message
194
- unless anotherset['recipient'].to_s.empty?
195
- # Set recipient address
168
+ # Fallback: get a recipient address from error messages
169
+ if anotherset['recipient'].to_s.size > 0
170
+ # Set a recipient address
196
171
  dscontents[-1]['recipient'] = anotherset['recipient']
197
172
  recipients += 1
173
+ else
174
+ # Get a recipient address from message/rfc822 part if the delivery
175
+ # report was unavailable: '--- Delivery report unavailable ---'
176
+ if nomessages && cv = emailsteak[1].match(/^To:[ ]*(.+)$/)
177
+ # Try to get a recipient address from To: field in the original
178
+ # message at message/rfc822 part
179
+ dscontents[-1]['recipient'] = Sisimai::Address.s3s4(cv[1])
180
+ recipients += 1
181
+ end
198
182
  end
199
183
  end
200
184
  return nil unless recipients > 0
@@ -204,9 +188,6 @@ module Sisimai::Lhost
204
188
  e['lhost'] ||= permessage['rhost']
205
189
  permessage.each_key { |a| e[a] ||= permessage[a] || '' }
206
190
 
207
- e['agent'] = self.smtpagent
208
- e['command'] = commandset.shift || ''
209
-
210
191
  if anotherset['diagnosis']
211
192
  # Copy alternative error message
212
193
  e['diagnosis'] = anotherset['diagnosis'] unless e['diagnosis']
@@ -247,14 +228,14 @@ module Sisimai::Lhost
247
228
  end
248
229
 
249
230
  e['diagnosis'] = Sisimai::String.sweep(e['diagnosis'])
231
+ e['command'] = commandset.shift || nil
232
+ e['command'] ||= 'HELO' if e['diagnosis'] =~ /refused to talk to me:/
250
233
  e['spec'] ||= 'SMTP' if e['diagnosis'] =~ /host .+ said:/
251
- e.each_key { |a| e[a] ||= '' }
252
234
  end
253
235
 
254
- rfc822part = Sisimai::RFC5322.weedout(rfc822list)
255
- return { 'ds' => dscontents, 'rfc822' => rfc822part }
236
+ return { 'ds' => dscontents, 'rfc822' => emailsteak[1] }
256
237
  end
257
-
238
+ def description; return 'Postfix'; end
258
239
  end
259
240
  end
260
241
  end
@@ -0,0 +1,120 @@
1
+ module Sisimai::Lhost
2
+ # Sisimai::Lhost::PowerMTA parses a bounce email which created by
3
+ # amavsid-new. Methods in the module are called from only Sisimai::Message.
4
+ module PowerMTA
5
+ class << self
6
+ # Imported from p5-Sisimail/lib/Sisimai/Lhost/PowerMTA.pm
7
+ require 'sisimai/lhost'
8
+
9
+ Indicators = Sisimai::Lhost.INDICATORS
10
+ ReBackbone = %r|^Content-Type:[ ]text/rfc822-headers|.freeze
11
+ StartingOf = { message: ['Hello, this is the mail server on '] }.freeze
12
+ Categories = {
13
+ 'bad-domain' => 'hostunknown',
14
+ 'bad-mailbox' => 'userunknown',
15
+ 'inactive-mailbox' => 'disabled',
16
+ 'message-expired' => 'expired',
17
+ 'no-answer-from-host' => 'networkerror',
18
+ 'policy-related' => 'policyviolation',
19
+ 'quota-issues' => 'mailboxfull',
20
+ 'routing-errors' => 'systemerror',
21
+ 'spam-related' => 'spamdetected',
22
+ }.freeze
23
+
24
+ # Parse bounce messages from PowerMTA
25
+ # @param [Hash] mhead Message headers of a bounce email
26
+ # @param [String] mbody Message body of a bounce email
27
+ # @return [Hash] Bounce data list and message/rfc822 part
28
+ # @return [Nil] it failed to parse or the arguments are missing
29
+ # @since v4.25.6
30
+ def make(mhead, mbody)
31
+ return nil unless mhead['subject'].to_s.start_with?('Delivery report')
32
+
33
+ require 'sisimai/rfc1894'
34
+ fieldtable = Sisimai::RFC1894.FIELDTABLE
35
+ permessage = {} # (Hash) Store values of each Per-Message field
36
+
37
+ dscontents = [Sisimai::Lhost.DELIVERYSTATUS]
38
+ emailsteak = Sisimai::RFC5322.fillet(mbody, ReBackbone)
39
+ bodyslices = emailsteak[0].split("\n")
40
+ readcursor = 0 # (Integer) Points the current cursor position
41
+ recipients = 0 # (Integer) The number of 'Final-Recipient' header
42
+ v = nil
43
+
44
+ while e = bodyslices.shift do
45
+ # Read error messages and delivery status lines from the head of the email
46
+ # to the previous line of the beginning of the original message.
47
+ if readcursor == 0
48
+ # Beginning of the bounce message or message/delivery-status part
49
+ readcursor |= Indicators[:deliverystatus] if e.start_with?(StartingOf[:message][0])
50
+ next
51
+ end
52
+ next if (readcursor & Indicators[:deliverystatus]) == 0
53
+ next if e.empty?
54
+
55
+ if f = Sisimai::RFC1894.match(e)
56
+ # "e" matched with any field defined in RFC3464
57
+ next unless o = Sisimai::RFC1894.field(e)
58
+ v = dscontents[-1]
59
+
60
+ if o[-1] == 'addr'
61
+ # Final-Recipient: rfc822; kijitora@example.jp
62
+ # X-Actual-Recipient: rfc822; kijitora@example.co.jp
63
+ if o[0] == 'final-recipient'
64
+ # Final-Recipient: rfc822; kijitora@example.jp
65
+ if v['recipient']
66
+ # There are multiple recipient addresses in the message body.
67
+ dscontents << Sisimai::Lhost.DELIVERYSTATUS
68
+ v = dscontents[-1]
69
+ end
70
+ v['recipient'] = o[2]
71
+ recipients += 1
72
+ else
73
+ # X-Actual-Recipient: rfc822; kijitora@example.co.jp
74
+ v['alias'] = o[2]
75
+ end
76
+ elsif o[-1] == 'code'
77
+ # Diagnostic-Code: SMTP; 550 5.1.1 <userunknown@example.jp>... User Unknown
78
+ v['spec'] = o[1]
79
+ v['diagnosis'] = o[2]
80
+ else
81
+ # Other DSN fields defined in RFC3464
82
+ next unless fieldtable[o[0]]
83
+ v[fieldtable[o[0]]] = o[2]
84
+
85
+ next unless f == 1
86
+ permessage[fieldtable[o[0]]] = o[2]
87
+ end
88
+ else
89
+ # Hello, this is the mail server on neko2.example.org.
90
+ #
91
+ # I am sending you this message to inform you on the delivery status of a
92
+ # message you previously sent. Immediately below you will find a list of
93
+ # the affected recipients; also attached is a Delivery Status Notification
94
+ # (DSN) report in standard format, as well as the headers of the original
95
+ # message.
96
+ #
97
+ # <kijitora@example.jp> delivery failed; will not continue trying
98
+ #
99
+ if cv = e.match(/\AX-PowerMTA-BounceCategory:[ ]*(.+)\z/)
100
+ # X-PowerMTA-BounceCategory: bad-mailbox
101
+ v['category'] = cv[1]
102
+ end
103
+ end
104
+ end
105
+ return nil unless recipients > 0
106
+
107
+ dscontents.each do |e|
108
+ # Set default values if each value is empty.
109
+ permessage.each_key { |a| e[a] ||= permessage[a] || '' }
110
+ e['diagnosis'] = Sisimai::String.sweep(e['diagnosis'].to_s.tr("\n", ' '))
111
+ e['reason'] = Categories[e['category']] || ''
112
+ end
113
+
114
+ return { 'ds' => dscontents, 'rfc822' => emailsteak[1] }
115
+ end
116
+ def description; return 'PowerMTA: https://www.sparkpost.com/powermta/'; end
117
+ end
118
+ end
119
+ end
120
+
@@ -7,6 +7,7 @@ module Sisimai::Lhost
7
7
  require 'sisimai/lhost'
8
8
 
9
9
  Indicators = Sisimai::Lhost.INDICATORS
10
+ ReBackbone = %r|^--- Below this line is a copy of the message[.]|.freeze
10
11
  StartingOf = {
11
12
  # qmail-remote.c:248| if (code >= 500) {
12
13
  # qmail-remote.c:249| out("h"); outhost(); out(" does not like recipient.\n");
@@ -16,36 +17,35 @@ module Sisimai::Lhost
16
17
  # Characters: K,Z,D in qmail-qmqpc.c, qmail-send.c, qmail-rspawn.c
17
18
  # K = success, Z = temporary error, D = permanent error
18
19
  message: ['Hi. This is the qmail'],
19
- rfc822: ['--- Below this line is a copy of the message.'],
20
20
  error: ['Remote host said:'],
21
21
  }.freeze
22
22
 
23
23
  ReSMTP = {
24
24
  # Error text regular expressions which defined in qmail-remote.c
25
25
  # qmail-remote.c:225| if (smtpcode() != 220) quit("ZConnected to "," but greeting failed");
26
- 'conn' => %r/(?:Error:)?Connected to .+ but greeting failed[.]/,
26
+ 'conn' => %r/(?:Error:)?Connected to [^ ]+ but greeting failed[.]/,
27
27
  # qmail-remote.c:231| if (smtpcode() != 250) quit("ZConnected to "," but my name was rejected");
28
- 'ehlo' => %r/(?:Error:)?Connected to .+ but my name was rejected[.]/,
28
+ 'ehlo' => %r/(?:Error:)?Connected to [^ ]+ but my name was rejected[.]/,
29
29
  # qmail-remote.c:238| if (code >= 500) quit("DConnected to "," but sender was rejected");
30
30
  # reason = rejected
31
- 'mail' => %r/(?:Error:)?Connected to .+ but sender was rejected[.]/,
31
+ 'mail' => %r/(?:Error:)?Connected to [^ ]+ but sender was rejected[.]/,
32
32
  # qmail-remote.c:249| out("h"); outhost(); out(" does not like recipient.\n");
33
33
  # qmail-remote.c:253| out("s"); outhost(); out(" does not like recipient.\n");
34
34
  # reason = userunknown
35
- 'rcpt' => %r/(?:Error:)?.+ does not like recipient[.]/,
35
+ 'rcpt' => %r/(?:Error:)?[^ ]+ does not like recipient[.]/,
36
36
  # qmail-remote.c:265| if (code >= 500) quit("D"," failed on DATA command");
37
37
  # qmail-remote.c:266| if (code >= 400) quit("Z"," failed on DATA command");
38
38
  # qmail-remote.c:271| if (code >= 500) quit("D"," failed after I sent the message");
39
39
  # qmail-remote.c:272| if (code >= 400) quit("Z"," failed after I sent the message");
40
40
  'data' => %r{(?:
41
- (?:Error:)?.+[ ]failed[ ]on[ ]DATA[ ]command[.]
42
- |(?:Error:)?.+[ ]failed[ ]after[ ]I[ ]sent[ ]the[ ]message[.]
41
+ (?:Error:)?[^ ]+[ ]failed[ ]on[ ]DATA[ ]command[.]
42
+ |(?:Error:)?[^ ]+[ ]failed[ ]after[ ]I[ ]sent[ ]the[ ]message[.]
43
43
  )
44
44
  }x,
45
45
  }.freeze
46
46
  # qmail-remote.c:261| if (!flagbother) quit("DGiving up on ","");
47
47
  ReHost = %r{(?:
48
- Giving[ ]up[ ]on[ ](.+[0-9a-zA-Z])[.]?\z
48
+ Giving[ ]up[ ]on[ ]([^ ]+[0-9a-zA-Z])[.]?\z
49
49
  |Connected[ ]to[ ]([-0-9a-zA-Z.]+[0-9a-zA-Z])[ ]
50
50
  |remote[ ]host[ ]([-0-9a-zA-Z.]+[0-9a-zA-Z])[ ]said:
51
51
  )
@@ -99,21 +99,11 @@ module Sisimai::Lhost
99
99
  ],
100
100
  }.freeze
101
101
 
102
- def description; return 'qmail'; end
103
- def smtpagent; return 'Email::qmail'; end
104
- def headerlist; return []; end
105
-
106
102
  # Parse bounce messages from qmail
107
- # @param [Hash] mhead Message headers of a bounce email
108
- # @options mhead [String] from From header
109
- # @options mhead [String] date Date header
110
- # @options mhead [String] subject Subject header
111
- # @options mhead [Array] received Received headers
112
- # @options mhead [String] others Other required headers
113
- # @param [String] mbody Message body of a bounce email
114
- # @return [Hash, Nil] Bounce data list and message/rfc822
115
- # part or nil if it failed to parse or
116
- # the arguments are missing
103
+ # @param [Hash] mhead Message headers of a bounce email
104
+ # @param [String] mbody Message body of a bounce email
105
+ # @return [Hash] Bounce data list and message/rfc822 part
106
+ # @return [Nil] it failed to parse or the arguments are missing
117
107
  def make(mhead, mbody)
118
108
  # Pre process email headers and the body part of the message which generated
119
109
  # by qmail, see https://cr.yp.to/qmail.html
@@ -126,76 +116,55 @@ module Sisimai::Lhost
126
116
  return nil unless match > 0
127
117
 
128
118
  dscontents = [Sisimai::Lhost.DELIVERYSTATUS]
129
- hasdivided = mbody.split("\n")
130
- rfc822list = [] # (Array) Each line in message/rfc822 part string
131
- blanklines = 0 # (Integer) The number of blank lines
119
+ emailsteak = Sisimai::RFC5322.fillet(mbody, ReBackbone)
120
+ bodyslices = emailsteak[0].split("\n")
132
121
  readcursor = 0 # (Integer) Points the current cursor position
133
122
  recipients = 0 # (Integer) The number of 'Final-Recipient' header
134
123
  v = nil
135
124
 
136
- while e = hasdivided.shift do
125
+ while e = bodyslices.shift do
126
+ # Read error messages and delivery status lines from the head of the email
127
+ # to the previous line of the beginning of the original message.
137
128
  if readcursor == 0
138
129
  # Beginning of the bounce message or delivery status part
139
- if e.start_with?(StartingOf[:message][0])
140
- readcursor |= Indicators[:deliverystatus]
141
- next
142
- end
143
- end
144
-
145
- if (readcursor & Indicators[:'message-rfc822']) == 0
146
- # Beginning of the original message part
147
- if e == StartingOf[:rfc822][0]
148
- readcursor |= Indicators[:'message-rfc822']
149
- next
150
- end
130
+ readcursor |= Indicators[:deliverystatus] if e.start_with?(StartingOf[:message][0])
131
+ next
151
132
  end
133
+ next if (readcursor & Indicators[:deliverystatus]) == 0
134
+ next if e.empty?
152
135
 
153
- if readcursor & Indicators[:'message-rfc822'] > 0
154
- # Inside of the original message part
155
- if e.empty?
156
- blanklines += 1
157
- break if blanklines > 1
158
- next
159
- end
160
- rfc822list << e
161
- else
162
- # Error message part
163
- next if (readcursor & Indicators[:deliverystatus]) == 0
164
- next if e.empty?
136
+ # <kijitora@example.jp>:
137
+ # 192.0.2.153 does not like recipient.
138
+ # Remote host said: 550 5.1.1 <kijitora@example.jp>... User Unknown
139
+ # Giving up on 192.0.2.153.
140
+ v = dscontents[-1]
165
141
 
142
+ if cv = e.match(/\A(?:To[ ]*:)?[<](.+[@].+)[>]:[ \t]*\z/)
166
143
  # <kijitora@example.jp>:
167
- # 192.0.2.153 does not like recipient.
168
- # Remote host said: 550 5.1.1 <kijitora@example.jp>... User Unknown
169
- # Giving up on 192.0.2.153.
170
- v = dscontents[-1]
171
-
172
- if cv = e.match(/\A(?:To[ ]*:)?[<](.+[@].+)[>]:[ \t]*\z/)
173
- # <kijitora@example.jp>:
174
- if v['recipient']
175
- # There are multiple recipient addresses in the message body.
176
- dscontents << Sisimai::Lhost.DELIVERYSTATUS
177
- v = dscontents[-1]
178
- end
179
- v['recipient'] = cv[1]
180
- recipients += 1
144
+ if v['recipient']
145
+ # There are multiple recipient addresses in the message body.
146
+ dscontents << Sisimai::Lhost.DELIVERYSTATUS
147
+ v = dscontents[-1]
148
+ end
149
+ v['recipient'] = cv[1]
150
+ recipients += 1
181
151
 
182
- elsif dscontents.size == recipients
183
- # Append error message
184
- next if e.empty?
185
- v['diagnosis'] ||= ''
186
- v['diagnosis'] << e + ' '
187
- v['alterrors'] = e if e.start_with?(StartingOf[:error][0])
152
+ elsif dscontents.size == recipients
153
+ # Append error message
154
+ next if e.empty?
155
+ v['diagnosis'] ||= ''
156
+ v['diagnosis'] << e + ' '
157
+ v['alterrors'] = e if e.start_with?(StartingOf[:error][0])
188
158
 
189
- next if v['rhost']
190
- next unless cv = e.match(ReHost)
191
- v['rhost'] = cv[1]
192
- end
159
+ next if v['rhost']
160
+ next unless cv = e.match(ReHost)
161
+ v['rhost'] = cv[1]
193
162
  end
194
163
  end
195
164
  return nil unless recipients > 0
196
165
 
197
166
  dscontents.each do |e|
198
- e['agent'] = self.smtpagent
167
+ e['agent'] = 'qmail'
199
168
  e['diagnosis'] = Sisimai::String.sweep(e['diagnosis']) || ''
200
169
 
201
170
  unless e['command']
@@ -259,13 +228,11 @@ module Sisimai::Lhost
259
228
  end
260
229
 
261
230
  e['status'] = Sisimai::SMTP::Status.find(e['diagnosis']) || ''
262
- e.each_key { |a| e[a] ||= '' }
263
231
  end
264
232
 
265
- rfc822part = Sisimai::RFC5322.weedout(rfc822list)
266
- return { 'ds' => dscontents, 'rfc822' => rfc822part }
233
+ return { 'ds' => dscontents, 'rfc822' => emailsteak[1] }
267
234
  end
268
-
235
+ def description; return 'qmail'; end
269
236
  end
270
237
  end
271
238
  end