sisimai 4.21.1-java → 4.22.0-java

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

Potentially problematic release.


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

Files changed (571) hide show
  1. checksums.yaml +4 -4
  2. data/ANALYTICAL-PRECISION +56 -56
  3. data/ChangeLog.md +16 -0
  4. data/Developers.mk +15 -33
  5. data/LICENSE +1 -1
  6. data/README-JA.md +11 -11
  7. data/README.md +11 -11
  8. data/fig/sisimai-architecture.png +0 -0
  9. data/lib/sisimai.rb +4 -4
  10. data/lib/sisimai/address.rb +254 -5
  11. data/lib/sisimai/arf.rb +6 -6
  12. data/lib/sisimai/bite.rb +37 -0
  13. data/lib/sisimai/bite/email.rb +53 -0
  14. data/lib/sisimai/bite/email/activehunter.rb +124 -0
  15. data/lib/sisimai/bite/email/amazonses.rb +247 -0
  16. data/lib/sisimai/bite/email/amazonworkmail.rb +192 -0
  17. data/lib/sisimai/bite/email/aol.rb +208 -0
  18. data/lib/sisimai/bite/email/apachejames.rb +169 -0
  19. data/lib/sisimai/bite/email/bigfoot.rb +207 -0
  20. data/lib/sisimai/bite/email/biglobe.rb +148 -0
  21. data/lib/sisimai/bite/email/courier.rb +265 -0
  22. data/lib/sisimai/bite/email/domino.rb +174 -0
  23. data/lib/sisimai/bite/email/einsundeins.rb +143 -0
  24. data/lib/sisimai/bite/email/exchange2003.rb +284 -0
  25. data/lib/sisimai/bite/email/exchange2007.rb +178 -0
  26. data/lib/sisimai/bite/email/exim.rb +522 -0
  27. data/lib/sisimai/bite/email/ezweb.rb +260 -0
  28. data/lib/sisimai/bite/email/facebook.rb +274 -0
  29. data/lib/sisimai/bite/email/gmx.rb +167 -0
  30. data/lib/sisimai/bite/email/google.rb +320 -0
  31. data/lib/sisimai/bite/email/gsuite.rb +273 -0
  32. data/lib/sisimai/bite/email/imailserver.rb +181 -0
  33. data/lib/sisimai/bite/email/interscanmss.rb +146 -0
  34. data/lib/sisimai/bite/email/kddi.rb +166 -0
  35. data/lib/sisimai/bite/email/mailfoundry.rb +133 -0
  36. data/lib/sisimai/bite/email/mailmarshalsmtp.rb +173 -0
  37. data/lib/sisimai/bite/email/mailru.rb +271 -0
  38. data/lib/sisimai/bite/email/mcafee.rb +169 -0
  39. data/lib/sisimai/bite/email/messagelabs.rb +213 -0
  40. data/lib/sisimai/bite/email/messagingserver.rb +206 -0
  41. data/lib/sisimai/bite/email/mfilter.rb +165 -0
  42. data/lib/sisimai/bite/email/mxlogic.rb +253 -0
  43. data/lib/sisimai/bite/email/notes.rb +181 -0
  44. data/lib/sisimai/bite/email/office365.rb +262 -0
  45. data/lib/sisimai/bite/email/opensmtpd.rb +192 -0
  46. data/lib/sisimai/bite/email/outlook.rb +207 -0
  47. data/lib/sisimai/bite/email/postfix.rb +310 -0
  48. data/lib/sisimai/bite/email/qmail.rb +304 -0
  49. data/lib/sisimai/bite/email/receivingses.rb +221 -0
  50. data/lib/sisimai/bite/email/sendgrid.rb +223 -0
  51. data/lib/sisimai/bite/email/sendmail.rb +290 -0
  52. data/lib/sisimai/bite/email/surfcontrol.rb +162 -0
  53. data/lib/sisimai/bite/email/userdefined.rb +129 -0
  54. data/lib/sisimai/bite/email/v5sendmail.rb +208 -0
  55. data/lib/sisimai/bite/email/verizon.rb +265 -0
  56. data/lib/sisimai/bite/email/x1.rb +124 -0
  57. data/lib/sisimai/bite/email/x2.rb +125 -0
  58. data/lib/sisimai/bite/email/x3.rb +141 -0
  59. data/lib/sisimai/bite/email/x4.rb +325 -0
  60. data/lib/sisimai/bite/email/x5.rb +178 -0
  61. data/lib/sisimai/bite/email/yahoo.rb +148 -0
  62. data/lib/sisimai/bite/email/yandex.rb +204 -0
  63. data/lib/sisimai/bite/email/zoho.rb +167 -0
  64. data/lib/sisimai/bite/json.rb +38 -0
  65. data/lib/sisimai/bite/json/amazonses.rb +255 -0
  66. data/lib/sisimai/bite/json/sendgrid.rb +79 -0
  67. data/lib/sisimai/ced.rb +30 -6
  68. data/lib/sisimai/data.rb +5 -5
  69. data/lib/sisimai/message.rb +6 -6
  70. data/lib/sisimai/message/email.rb +12 -11
  71. data/lib/sisimai/message/json.rb +20 -19
  72. data/lib/sisimai/msp.rb +15 -3
  73. data/lib/sisimai/mta.rb +15 -3
  74. data/lib/sisimai/order.rb +1 -1
  75. data/lib/sisimai/order/email.rb +113 -119
  76. data/lib/sisimai/order/json.rb +11 -10
  77. data/lib/sisimai/reason.rb +5 -4
  78. data/lib/sisimai/reason/policyviolation.rb +64 -0
  79. data/lib/sisimai/reason/securityerror.rb +13 -23
  80. data/lib/sisimai/reason/spamdetected.rb +1 -0
  81. data/lib/sisimai/reason/syntaxerror.rb +1 -0
  82. data/lib/sisimai/reason/virusdetected.rb +56 -0
  83. data/lib/sisimai/rfc3464.rb +8 -8
  84. data/lib/sisimai/rfc3834.rb +2 -2
  85. data/lib/sisimai/rfc5322.rb +1 -1
  86. data/lib/sisimai/skeleton.rb +1 -1
  87. data/lib/sisimai/smtp/error.rb +3 -3
  88. data/lib/sisimai/smtp/status.rb +26 -24
  89. data/lib/sisimai/version.rb +1 -1
  90. data/set-of-emails/README.md +1 -0
  91. data/set-of-emails/{jsonapi/ced-us-amazonses-01.json → jsonobj/json-amazonses-01.json} +0 -0
  92. data/set-of-emails/{jsonapi/ced-us-amazonses-02.json → jsonobj/json-amazonses-02.json} +0 -0
  93. data/set-of-emails/{jsonapi/ced-us-amazonses-03.json → jsonobj/json-amazonses-03.json} +0 -0
  94. data/set-of-emails/{jsonapi/ced-us-amazonses-04.json → jsonobj/json-amazonses-04.json} +0 -0
  95. data/set-of-emails/{jsonapi/ced-us-amazonses-05.json → jsonobj/json-amazonses-05.json} +0 -0
  96. data/set-of-emails/{jsonapi/ced-us-sendgrid-01.json → jsonobj/json-sendgrid-01.json} +0 -0
  97. data/set-of-emails/{jsonapi/ced-us-sendgrid-02.json → jsonobj/json-sendgrid-02.json} +0 -0
  98. data/set-of-emails/{jsonapi/ced-us-sendgrid-03.json → jsonobj/json-sendgrid-03.json} +0 -0
  99. data/set-of-emails/{jsonapi/ced-us-sendgrid-04.json → jsonobj/json-sendgrid-04.json} +0 -0
  100. data/set-of-emails/{jsonapi/ced-us-sendgrid-05.json → jsonobj/json-sendgrid-05.json} +0 -0
  101. data/set-of-emails/{jsonapi/ced-us-sendgrid-06.json → jsonobj/json-sendgrid-06.json} +0 -0
  102. data/set-of-emails/{jsonapi/ced-us-sendgrid-07.json → jsonobj/json-sendgrid-07.json} +0 -0
  103. data/set-of-emails/{jsonapi/ced-us-sendgrid-08.json → jsonobj/json-sendgrid-08.json} +0 -0
  104. data/set-of-emails/{jsonapi/ced-us-sendgrid-09.json → jsonobj/json-sendgrid-09.json} +0 -0
  105. data/set-of-emails/{jsonapi/ced-us-sendgrid-10.json → jsonobj/json-sendgrid-10.json} +0 -0
  106. data/set-of-emails/{jsonapi/ced-us-sendgrid-11.json → jsonobj/json-sendgrid-11.json} +0 -0
  107. data/set-of-emails/maildir/bsd/README.md +25 -17
  108. data/set-of-emails/maildir/bsd/{mta-activehunter-01.eml → email-activehunter-01.eml} +0 -0
  109. data/set-of-emails/maildir/bsd/{mta-activehunter-02.eml → email-activehunter-02.eml} +0 -0
  110. data/set-of-emails/maildir/bsd/{msp-us-amazonses-01.eml → email-amazonses-01.eml} +0 -0
  111. data/set-of-emails/maildir/bsd/{msp-us-amazonses-02.eml → email-amazonses-02.eml} +0 -0
  112. data/set-of-emails/maildir/bsd/{msp-us-amazonses-03.eml → email-amazonses-03.eml} +0 -0
  113. data/set-of-emails/maildir/bsd/{msp-us-amazonses-04.eml → email-amazonses-04.eml} +0 -0
  114. data/set-of-emails/maildir/bsd/{msp-us-amazonses-05.eml → email-amazonses-05.eml} +0 -0
  115. data/set-of-emails/maildir/bsd/{msp-us-amazonses-06.eml → email-amazonses-06.eml} +0 -0
  116. data/set-of-emails/maildir/bsd/{msp-us-amazonses-07.eml → email-amazonses-07.eml} +0 -0
  117. data/set-of-emails/maildir/bsd/{msp-us-amazonses-08.eml → email-amazonses-08.eml} +0 -0
  118. data/set-of-emails/maildir/bsd/{ced-us-amazonses-01.eml → email-amazonses-09.eml} +0 -0
  119. data/set-of-emails/maildir/bsd/{ced-us-amazonses-02.eml → email-amazonses-10.eml} +0 -0
  120. data/set-of-emails/maildir/bsd/{ced-us-amazonses-03.eml → email-amazonses-11.eml} +0 -0
  121. data/set-of-emails/maildir/bsd/{ced-us-amazonses-04.eml → email-amazonses-12.eml} +0 -0
  122. data/set-of-emails/maildir/bsd/{ced-us-amazonses-05.eml → email-amazonses-13.eml} +0 -0
  123. data/set-of-emails/maildir/bsd/{msp-us-amazonworkmail-01.eml → email-amazonworkmail-01.eml} +0 -0
  124. data/set-of-emails/maildir/bsd/{msp-us-amazonworkmail-02.eml → email-amazonworkmail-02.eml} +0 -0
  125. data/set-of-emails/maildir/bsd/{msp-us-amazonworkmail-03.eml → email-amazonworkmail-03.eml} +0 -0
  126. data/set-of-emails/maildir/bsd/{msp-us-amazonworkmail-04.eml → email-amazonworkmail-04.eml} +0 -0
  127. data/set-of-emails/maildir/bsd/{msp-us-amazonworkmail-05.eml → email-amazonworkmail-05.eml} +0 -0
  128. data/set-of-emails/maildir/bsd/{msp-us-amazonworkmail-06.eml → email-amazonworkmail-06.eml} +0 -0
  129. data/set-of-emails/maildir/bsd/{msp-us-amazonworkmail-07.eml → email-amazonworkmail-07.eml} +0 -0
  130. data/set-of-emails/maildir/bsd/{msp-us-aol-01.eml → email-aol-01.eml} +0 -0
  131. data/set-of-emails/maildir/bsd/{msp-us-aol-02.eml → email-aol-02.eml} +0 -0
  132. data/set-of-emails/maildir/bsd/{msp-us-aol-03.eml → email-aol-03.eml} +0 -0
  133. data/set-of-emails/maildir/bsd/{msp-us-aol-04.eml → email-aol-04.eml} +0 -0
  134. data/set-of-emails/maildir/bsd/{msp-us-aol-05.eml → email-aol-05.eml} +0 -0
  135. data/set-of-emails/maildir/bsd/{msp-us-aol-06.eml → email-aol-06.eml} +0 -0
  136. data/set-of-emails/maildir/bsd/{mta-apachejames-01.eml → email-apachejames-01.eml} +0 -0
  137. data/set-of-emails/maildir/bsd/{msp-us-bigfoot-01.eml → email-bigfoot-01.eml} +0 -0
  138. data/set-of-emails/maildir/bsd/{msp-jp-biglobe-01.eml → email-biglobe-01.eml} +0 -0
  139. data/set-of-emails/maildir/bsd/{mta-courier-01.eml → email-courier-01.eml} +0 -0
  140. data/set-of-emails/maildir/bsd/{mta-courier-02.eml → email-courier-02.eml} +0 -0
  141. data/set-of-emails/maildir/bsd/{mta-courier-03.eml → email-courier-03.eml} +0 -0
  142. data/set-of-emails/maildir/bsd/{mta-courier-04.eml → email-courier-04.eml} +0 -0
  143. data/set-of-emails/maildir/bsd/{mta-domino-01.eml → email-domino-01.eml} +0 -0
  144. data/set-of-emails/maildir/bsd/{mta-domino-02.eml → email-domino-02.eml} +0 -0
  145. data/set-of-emails/maildir/bsd/{msp-de-einsundeins-01.eml → email-einsundeins-01.eml} +0 -0
  146. data/set-of-emails/maildir/bsd/{mta-exchange2003-01.eml → email-exchange2003-01.eml} +0 -0
  147. data/set-of-emails/maildir/bsd/{mta-exchange2003-02.eml → email-exchange2003-02.eml} +0 -0
  148. data/set-of-emails/maildir/bsd/{mta-exchange2003-03.eml → email-exchange2003-03.eml} +0 -0
  149. data/set-of-emails/maildir/bsd/{mta-exchange2003-04.eml → email-exchange2003-04.eml} +0 -0
  150. data/set-of-emails/maildir/bsd/{mta-exchange2003-05.eml → email-exchange2003-05.eml} +0 -0
  151. data/set-of-emails/maildir/bsd/{mta-exchange2003-06.eml → email-exchange2003-06.eml} +0 -0
  152. data/set-of-emails/maildir/bsd/{mta-exchange2007-01.eml → email-exchange2007-01.eml} +0 -0
  153. data/set-of-emails/maildir/bsd/{mta-exchange2007-02.eml → email-exchange2007-02.eml} +0 -0
  154. data/set-of-emails/maildir/bsd/{mta-exchange2007-03.eml → email-exchange2007-03.eml} +0 -0
  155. data/set-of-emails/maildir/bsd/{mta-exim-01.eml → email-exim-01.eml} +0 -0
  156. data/set-of-emails/maildir/bsd/{mta-exim-02.eml → email-exim-02.eml} +0 -0
  157. data/set-of-emails/maildir/bsd/{mta-exim-03.eml → email-exim-03.eml} +0 -0
  158. data/set-of-emails/maildir/bsd/{mta-exim-04.eml → email-exim-04.eml} +0 -0
  159. data/set-of-emails/maildir/bsd/{mta-exim-05.eml → email-exim-05.eml} +0 -0
  160. data/set-of-emails/maildir/bsd/{mta-exim-06.eml → email-exim-06.eml} +0 -0
  161. data/set-of-emails/maildir/bsd/{mta-exim-07.eml → email-exim-07.eml} +0 -0
  162. data/set-of-emails/maildir/bsd/{mta-exim-08.eml → email-exim-08.eml} +0 -0
  163. data/set-of-emails/maildir/bsd/{mta-exim-09.eml → email-exim-09.eml} +0 -0
  164. data/set-of-emails/maildir/bsd/{mta-exim-10.eml → email-exim-10.eml} +0 -0
  165. data/set-of-emails/maildir/bsd/{mta-exim-11.eml → email-exim-11.eml} +0 -0
  166. data/set-of-emails/maildir/bsd/{mta-exim-12.eml → email-exim-12.eml} +0 -0
  167. data/set-of-emails/maildir/bsd/{mta-exim-13.eml → email-exim-13.eml} +0 -0
  168. data/set-of-emails/maildir/bsd/{mta-exim-14.eml → email-exim-14.eml} +0 -0
  169. data/set-of-emails/maildir/bsd/{mta-exim-15.eml → email-exim-15.eml} +0 -0
  170. data/set-of-emails/maildir/bsd/{mta-exim-16.eml → email-exim-16.eml} +0 -0
  171. data/set-of-emails/maildir/bsd/{mta-exim-17.eml → email-exim-17.eml} +0 -0
  172. data/set-of-emails/maildir/bsd/{mta-exim-18.eml → email-exim-18.eml} +0 -0
  173. data/set-of-emails/maildir/bsd/{mta-exim-19.eml → email-exim-19.eml} +0 -0
  174. data/set-of-emails/maildir/bsd/{mta-exim-20.eml → email-exim-20.eml} +0 -0
  175. data/set-of-emails/maildir/bsd/{mta-exim-21.eml → email-exim-21.eml} +0 -0
  176. data/set-of-emails/maildir/bsd/{mta-exim-22.eml → email-exim-22.eml} +0 -0
  177. data/set-of-emails/maildir/bsd/{mta-exim-23.eml → email-exim-23.eml} +0 -0
  178. data/set-of-emails/maildir/bsd/{mta-exim-24.eml → email-exim-24.eml} +0 -0
  179. data/set-of-emails/maildir/bsd/{mta-exim-25.eml → email-exim-25.eml} +0 -0
  180. data/set-of-emails/maildir/bsd/{mta-exim-26.eml → email-exim-26.eml} +0 -0
  181. data/set-of-emails/maildir/bsd/{mta-exim-27.eml → email-exim-27.eml} +0 -0
  182. data/set-of-emails/maildir/bsd/{mta-exim-28.eml → email-exim-28.eml} +0 -0
  183. data/set-of-emails/maildir/bsd/{mta-exim-29.eml → email-exim-29.eml} +0 -0
  184. data/set-of-emails/maildir/bsd/{mta-exim-30.eml → email-exim-30.eml} +0 -0
  185. data/set-of-emails/maildir/bsd/{msp-jp-ezweb-01.eml → email-ezweb-01.eml} +0 -0
  186. data/set-of-emails/maildir/bsd/{msp-jp-ezweb-02.eml → email-ezweb-02.eml} +0 -0
  187. data/set-of-emails/maildir/bsd/{msp-jp-ezweb-03.eml → email-ezweb-03.eml} +0 -0
  188. data/set-of-emails/maildir/bsd/{msp-jp-ezweb-04.eml → email-ezweb-04.eml} +0 -0
  189. data/set-of-emails/maildir/bsd/{msp-jp-ezweb-05.eml → email-ezweb-05.eml} +0 -0
  190. data/set-of-emails/maildir/bsd/{msp-jp-ezweb-06.eml → email-ezweb-06.eml} +0 -0
  191. data/set-of-emails/maildir/bsd/{msp-us-facebook-01.eml → email-facebook-01.eml} +0 -0
  192. data/set-of-emails/maildir/bsd/{msp-us-facebook-02.eml → email-facebook-02.eml} +0 -0
  193. data/set-of-emails/maildir/bsd/{msp-de-gmx-01.eml → email-gmx-01.eml} +0 -0
  194. data/set-of-emails/maildir/bsd/{msp-de-gmx-02.eml → email-gmx-02.eml} +0 -0
  195. data/set-of-emails/maildir/bsd/{msp-de-gmx-03.eml → email-gmx-03.eml} +0 -0
  196. data/set-of-emails/maildir/bsd/{msp-de-gmx-04.eml → email-gmx-04.eml} +0 -0
  197. data/set-of-emails/maildir/bsd/{msp-us-google-01.eml → email-google-01.eml} +0 -0
  198. data/set-of-emails/maildir/bsd/{msp-us-google-02.eml → email-google-02.eml} +0 -0
  199. data/set-of-emails/maildir/bsd/{msp-us-google-03.eml → email-google-03.eml} +0 -0
  200. data/set-of-emails/maildir/bsd/{msp-us-google-04.eml → email-google-04.eml} +0 -0
  201. data/set-of-emails/maildir/bsd/{msp-us-google-05.eml → email-google-05.eml} +0 -0
  202. data/set-of-emails/maildir/bsd/{msp-us-google-06.eml → email-google-06.eml} +0 -0
  203. data/set-of-emails/maildir/bsd/{msp-us-google-07.eml → email-google-07.eml} +0 -0
  204. data/set-of-emails/maildir/bsd/{msp-us-google-08.eml → email-google-08.eml} +0 -0
  205. data/set-of-emails/maildir/bsd/{msp-us-google-09.eml → email-google-09.eml} +0 -0
  206. data/set-of-emails/maildir/bsd/{msp-us-google-10.eml → email-google-10.eml} +0 -0
  207. data/set-of-emails/maildir/bsd/{msp-us-google-11.eml → email-google-11.eml} +0 -0
  208. data/set-of-emails/maildir/bsd/{msp-us-google-12.eml → email-google-12.eml} +0 -0
  209. data/set-of-emails/maildir/bsd/{msp-us-google-13.eml → email-google-13.eml} +0 -0
  210. data/set-of-emails/maildir/bsd/{msp-us-google-14.eml → email-google-14.eml} +0 -0
  211. data/set-of-emails/maildir/bsd/{msp-us-google-15.eml → email-google-15.eml} +0 -0
  212. data/set-of-emails/maildir/bsd/{msp-us-google-16.eml → email-google-16.eml} +0 -0
  213. data/set-of-emails/maildir/bsd/{msp-us-google-17.eml → email-google-17.eml} +0 -0
  214. data/set-of-emails/maildir/bsd/{msp-us-gsuite-01.eml → email-gsuite-01.eml} +0 -0
  215. data/set-of-emails/maildir/bsd/{msp-us-gsuite-02.eml → email-gsuite-02.eml} +0 -0
  216. data/set-of-emails/maildir/bsd/{msp-us-gsuite-03.eml → email-gsuite-03.eml} +0 -0
  217. data/set-of-emails/maildir/bsd/{msp-us-gsuite-04.eml → email-gsuite-04.eml} +0 -0
  218. data/set-of-emails/maildir/bsd/{msp-us-gsuite-05.eml → email-gsuite-05.eml} +0 -0
  219. data/set-of-emails/maildir/bsd/{msp-us-gsuite-06.eml → email-gsuite-06.eml} +0 -0
  220. data/set-of-emails/maildir/bsd/{msp-us-gsuite-07.eml → email-gsuite-07.eml} +0 -0
  221. data/set-of-emails/maildir/bsd/{mta-imailserver-01.eml → email-imailserver-01.eml} +0 -0
  222. data/set-of-emails/maildir/bsd/{mta-imailserver-02.eml → email-imailserver-02.eml} +0 -0
  223. data/set-of-emails/maildir/bsd/{mta-imailserver-03.eml → email-imailserver-03.eml} +0 -0
  224. data/set-of-emails/maildir/bsd/{mta-imailserver-04.eml → email-imailserver-04.eml} +0 -0
  225. data/set-of-emails/maildir/bsd/{mta-imailserver-05.eml → email-imailserver-05.eml} +0 -0
  226. data/set-of-emails/maildir/bsd/{mta-imailserver-06.eml → email-imailserver-06.eml} +0 -0
  227. data/set-of-emails/maildir/bsd/{mta-interscanmss-01.eml → email-interscanmss-01.eml} +0 -0
  228. data/set-of-emails/maildir/bsd/{mta-interscanmss-02.eml → email-interscanmss-02.eml} +0 -0
  229. data/set-of-emails/maildir/bsd/{msp-jp-kddi-01.eml → email-kddi-01.eml} +0 -0
  230. data/set-of-emails/maildir/bsd/{msp-jp-kddi-02.eml → email-kddi-02.eml} +0 -0
  231. data/set-of-emails/maildir/bsd/{msp-jp-kddi-03.eml → email-kddi-03.eml} +0 -0
  232. data/set-of-emails/maildir/bsd/{mta-mailfoundry-01.eml → email-mailfoundry-01.eml} +0 -0
  233. data/set-of-emails/maildir/bsd/{mta-mailfoundry-02.eml → email-mailfoundry-02.eml} +0 -0
  234. data/set-of-emails/maildir/bsd/{mta-mailmarshalsmtp-01.eml → email-mailmarshalsmtp-01.eml} +0 -0
  235. data/set-of-emails/maildir/bsd/{msp-ru-mailru-01.eml → email-mailru-01.eml} +0 -0
  236. data/set-of-emails/maildir/bsd/{msp-ru-mailru-02.eml → email-mailru-02.eml} +0 -0
  237. data/set-of-emails/maildir/bsd/{msp-ru-mailru-03.eml → email-mailru-03.eml} +0 -0
  238. data/set-of-emails/maildir/bsd/{msp-ru-mailru-04.eml → email-mailru-04.eml} +0 -0
  239. data/set-of-emails/maildir/bsd/{msp-ru-mailru-05.eml → email-mailru-05.eml} +0 -0
  240. data/set-of-emails/maildir/bsd/{msp-ru-mailru-06.eml → email-mailru-06.eml} +0 -0
  241. data/set-of-emails/maildir/bsd/{mta-mcafee-01.eml → email-mcafee-01.eml} +0 -0
  242. data/set-of-emails/maildir/bsd/{mta-mcafee-02.eml → email-mcafee-02.eml} +0 -0
  243. data/set-of-emails/maildir/bsd/{mta-mcafee-03.eml → email-mcafee-03.eml} +0 -0
  244. data/set-of-emails/maildir/bsd/{msp-uk-messagelabs-01.eml → email-messagelabs-01.eml} +0 -0
  245. data/set-of-emails/maildir/bsd/{mta-messagingserver-01.eml → email-messagingserver-01.eml} +0 -0
  246. data/set-of-emails/maildir/bsd/{mta-messagingserver-02.eml → email-messagingserver-02.eml} +0 -0
  247. data/set-of-emails/maildir/bsd/{mta-messagingserver-03.eml → email-messagingserver-03.eml} +0 -0
  248. data/set-of-emails/maildir/bsd/{mta-messagingserver-04.eml → email-messagingserver-04.eml} +0 -0
  249. data/set-of-emails/maildir/bsd/{mta-messagingserver-05.eml → email-messagingserver-05.eml} +0 -0
  250. data/set-of-emails/maildir/bsd/{mta-messagingserver-06.eml → email-messagingserver-06.eml} +0 -0
  251. data/set-of-emails/maildir/bsd/{mta-messagingserver-07.eml → email-messagingserver-07.eml} +0 -0
  252. data/set-of-emails/maildir/bsd/{mta-mfilter-01.eml → email-mfilter-01.eml} +0 -0
  253. data/set-of-emails/maildir/bsd/{mta-mfilter-02.eml → email-mfilter-02.eml} +0 -0
  254. data/set-of-emails/maildir/bsd/{mta-mfilter-03.eml → email-mfilter-03.eml} +0 -0
  255. data/set-of-emails/maildir/bsd/{mta-mxlogic-01.eml → email-mxlogic-01.eml} +0 -0
  256. data/set-of-emails/maildir/bsd/{mta-mxlogic-02.eml → email-mxlogic-02.eml} +0 -0
  257. data/set-of-emails/maildir/bsd/{mta-mxlogic-03.eml → email-mxlogic-03.eml} +0 -0
  258. data/set-of-emails/maildir/bsd/{mta-notes-01.eml → email-notes-01.eml} +0 -0
  259. data/set-of-emails/maildir/bsd/{mta-notes-02.eml → email-notes-02.eml} +0 -0
  260. data/set-of-emails/maildir/bsd/{mta-notes-03.eml → email-notes-03.eml} +0 -0
  261. data/set-of-emails/maildir/bsd/{mta-notes-04.eml → email-notes-04.eml} +0 -0
  262. data/set-of-emails/maildir/bsd/{msp-us-office365-01.eml → email-office365-01.eml} +0 -0
  263. data/set-of-emails/maildir/bsd/{msp-us-office365-02.eml → email-office365-02.eml} +0 -0
  264. data/set-of-emails/maildir/bsd/{mta-opensmtpd-01.eml → email-opensmtpd-01.eml} +0 -0
  265. data/set-of-emails/maildir/bsd/{mta-opensmtpd-02.eml → email-opensmtpd-02.eml} +0 -0
  266. data/set-of-emails/maildir/bsd/{mta-opensmtpd-03.eml → email-opensmtpd-03.eml} +0 -0
  267. data/set-of-emails/maildir/bsd/{mta-opensmtpd-04.eml → email-opensmtpd-04.eml} +0 -0
  268. data/set-of-emails/maildir/bsd/{mta-opensmtpd-05.eml → email-opensmtpd-05.eml} +0 -0
  269. data/set-of-emails/maildir/bsd/{mta-opensmtpd-06.eml → email-opensmtpd-06.eml} +0 -0
  270. data/set-of-emails/maildir/bsd/{msp-us-outlook-01.eml → email-outlook-01.eml} +0 -0
  271. data/set-of-emails/maildir/bsd/{msp-us-outlook-02.eml → email-outlook-02.eml} +0 -0
  272. data/set-of-emails/maildir/bsd/{msp-us-outlook-03.eml → email-outlook-03.eml} +0 -0
  273. data/set-of-emails/maildir/bsd/{msp-us-outlook-04.eml → email-outlook-04.eml} +0 -0
  274. data/set-of-emails/maildir/bsd/{msp-us-outlook-05.eml → email-outlook-05.eml} +0 -0
  275. data/set-of-emails/maildir/bsd/{msp-us-outlook-06.eml → email-outlook-06.eml} +0 -0
  276. data/set-of-emails/maildir/bsd/{msp-us-outlook-07.eml → email-outlook-07.eml} +0 -0
  277. data/set-of-emails/maildir/bsd/{mta-postfix-01.eml → email-postfix-01.eml} +0 -0
  278. data/set-of-emails/maildir/bsd/{mta-postfix-02.eml → email-postfix-02.eml} +0 -0
  279. data/set-of-emails/maildir/bsd/{mta-postfix-03.eml → email-postfix-03.eml} +0 -0
  280. data/set-of-emails/maildir/bsd/{mta-postfix-04.eml → email-postfix-04.eml} +0 -0
  281. data/set-of-emails/maildir/bsd/{mta-postfix-05.eml → email-postfix-05.eml} +0 -0
  282. data/set-of-emails/maildir/bsd/{mta-postfix-06.eml → email-postfix-06.eml} +0 -0
  283. data/set-of-emails/maildir/bsd/{mta-postfix-07.eml → email-postfix-07.eml} +0 -0
  284. data/set-of-emails/maildir/bsd/{mta-postfix-08.eml → email-postfix-08.eml} +0 -0
  285. data/set-of-emails/maildir/bsd/{mta-postfix-09.eml → email-postfix-09.eml} +0 -0
  286. data/set-of-emails/maildir/bsd/{mta-postfix-10.eml → email-postfix-10.eml} +0 -0
  287. data/set-of-emails/maildir/bsd/{mta-postfix-11.eml → email-postfix-11.eml} +0 -0
  288. data/set-of-emails/maildir/bsd/{mta-postfix-12.eml → email-postfix-12.eml} +0 -0
  289. data/set-of-emails/maildir/bsd/{mta-postfix-13.eml → email-postfix-13.eml} +0 -0
  290. data/set-of-emails/maildir/bsd/{mta-postfix-14.eml → email-postfix-14.eml} +0 -0
  291. data/set-of-emails/maildir/bsd/{mta-postfix-15.eml → email-postfix-15.eml} +0 -0
  292. data/set-of-emails/maildir/bsd/{mta-postfix-16.eml → email-postfix-16.eml} +0 -0
  293. data/set-of-emails/maildir/bsd/{mta-postfix-17.eml → email-postfix-17.eml} +0 -0
  294. data/set-of-emails/maildir/bsd/{mta-postfix-18.eml → email-postfix-18.eml} +0 -0
  295. data/set-of-emails/maildir/bsd/{mta-postfix-19.eml → email-postfix-19.eml} +0 -0
  296. data/set-of-emails/maildir/bsd/{mta-postfix-20.eml → email-postfix-20.eml} +0 -0
  297. data/set-of-emails/maildir/bsd/{mta-postfix-21.eml → email-postfix-21.eml} +0 -0
  298. data/set-of-emails/maildir/bsd/{mta-postfix-22.eml → email-postfix-22.eml} +0 -0
  299. data/set-of-emails/maildir/bsd/{mta-postfix-23.eml → email-postfix-23.eml} +0 -0
  300. data/set-of-emails/maildir/bsd/{mta-postfix-24.eml → email-postfix-24.eml} +0 -0
  301. data/set-of-emails/maildir/bsd/{mta-postfix-25.eml → email-postfix-25.eml} +0 -0
  302. data/set-of-emails/maildir/bsd/{mta-postfix-26.eml → email-postfix-26.eml} +0 -0
  303. data/set-of-emails/maildir/bsd/{mta-postfix-27.eml → email-postfix-27.eml} +0 -0
  304. data/set-of-emails/maildir/bsd/{mta-postfix-28.eml → email-postfix-28.eml} +0 -0
  305. data/set-of-emails/maildir/bsd/{mta-postfix-29.eml → email-postfix-29.eml} +0 -0
  306. data/set-of-emails/maildir/bsd/{mta-qmail-01.eml → email-qmail-01.eml} +0 -0
  307. data/set-of-emails/maildir/bsd/{mta-qmail-02.eml → email-qmail-02.eml} +0 -0
  308. data/set-of-emails/maildir/bsd/{mta-qmail-03.eml → email-qmail-03.eml} +0 -0
  309. data/set-of-emails/maildir/bsd/{mta-qmail-04.eml → email-qmail-04.eml} +0 -0
  310. data/set-of-emails/maildir/bsd/{mta-qmail-05.eml → email-qmail-05.eml} +0 -0
  311. data/set-of-emails/maildir/bsd/{mta-qmail-06.eml → email-qmail-06.eml} +0 -0
  312. data/set-of-emails/maildir/bsd/{mta-qmail-07.eml → email-qmail-07.eml} +0 -0
  313. data/set-of-emails/maildir/bsd/{mta-qmail-08.eml → email-qmail-08.eml} +0 -0
  314. data/set-of-emails/maildir/bsd/{mta-qmail-09.eml → email-qmail-09.eml} +0 -0
  315. data/set-of-emails/maildir/bsd/{mta-qmail-10.eml → email-qmail-10.eml} +0 -0
  316. data/set-of-emails/maildir/bsd/{mta-qmail-11.eml → email-qmail-11.eml} +0 -0
  317. data/set-of-emails/maildir/bsd/{mta-qmail-12.eml → email-qmail-12.eml} +0 -0
  318. data/set-of-emails/maildir/bsd/{msp-us-receivingses-01.eml → email-receivingses-01.eml} +0 -0
  319. data/set-of-emails/maildir/bsd/{msp-us-receivingses-02.eml → email-receivingses-02.eml} +0 -0
  320. data/set-of-emails/maildir/bsd/{msp-us-receivingses-03.eml → email-receivingses-03.eml} +0 -0
  321. data/set-of-emails/maildir/bsd/{msp-us-receivingses-04.eml → email-receivingses-04.eml} +0 -0
  322. data/set-of-emails/maildir/bsd/{msp-us-receivingses-05.eml → email-receivingses-05.eml} +0 -0
  323. data/set-of-emails/maildir/bsd/{msp-us-receivingses-06.eml → email-receivingses-06.eml} +0 -0
  324. data/set-of-emails/maildir/bsd/{msp-us-receivingses-07.eml → email-receivingses-07.eml} +0 -0
  325. data/set-of-emails/maildir/bsd/{msp-us-sendgrid-01.eml → email-sendgrid-01.eml} +0 -0
  326. data/set-of-emails/maildir/bsd/{msp-us-sendgrid-02.eml → email-sendgrid-02.eml} +0 -0
  327. data/set-of-emails/maildir/bsd/{msp-us-sendgrid-03.eml → email-sendgrid-03.eml} +0 -0
  328. data/set-of-emails/maildir/bsd/{mta-sendmail-01.eml → email-sendmail-01.eml} +0 -0
  329. data/set-of-emails/maildir/bsd/{mta-sendmail-02.eml → email-sendmail-02.eml} +0 -0
  330. data/set-of-emails/maildir/bsd/{mta-sendmail-03.eml → email-sendmail-03.eml} +0 -0
  331. data/set-of-emails/maildir/bsd/{mta-sendmail-04.eml → email-sendmail-04.eml} +0 -0
  332. data/set-of-emails/maildir/bsd/{mta-sendmail-05.eml → email-sendmail-05.eml} +0 -0
  333. data/set-of-emails/maildir/bsd/{mta-sendmail-06.eml → email-sendmail-06.eml} +0 -0
  334. data/set-of-emails/maildir/bsd/{mta-sendmail-07.eml → email-sendmail-07.eml} +0 -0
  335. data/set-of-emails/maildir/bsd/{mta-sendmail-08.eml → email-sendmail-08.eml} +0 -0
  336. data/set-of-emails/maildir/bsd/{mta-sendmail-09.eml → email-sendmail-09.eml} +0 -0
  337. data/set-of-emails/maildir/bsd/{mta-sendmail-10.eml → email-sendmail-10.eml} +0 -0
  338. data/set-of-emails/maildir/bsd/{mta-sendmail-11.eml → email-sendmail-11.eml} +0 -0
  339. data/set-of-emails/maildir/bsd/{mta-sendmail-12.eml → email-sendmail-12.eml} +0 -0
  340. data/set-of-emails/maildir/bsd/{mta-sendmail-13.eml → email-sendmail-13.eml} +0 -0
  341. data/set-of-emails/maildir/bsd/{mta-sendmail-14.eml → email-sendmail-14.eml} +0 -0
  342. data/set-of-emails/maildir/bsd/{mta-sendmail-15.eml → email-sendmail-15.eml} +0 -0
  343. data/set-of-emails/maildir/bsd/{mta-sendmail-16.eml → email-sendmail-16.eml} +0 -0
  344. data/set-of-emails/maildir/bsd/{mta-sendmail-17.eml → email-sendmail-17.eml} +0 -0
  345. data/set-of-emails/maildir/bsd/{mta-sendmail-18.eml → email-sendmail-18.eml} +0 -0
  346. data/set-of-emails/maildir/bsd/{mta-sendmail-19.eml → email-sendmail-19.eml} +0 -0
  347. data/set-of-emails/maildir/bsd/{mta-sendmail-20.eml → email-sendmail-20.eml} +0 -0
  348. data/set-of-emails/maildir/bsd/{mta-sendmail-21.eml → email-sendmail-21.eml} +0 -0
  349. data/set-of-emails/maildir/bsd/{mta-sendmail-22.eml → email-sendmail-22.eml} +0 -0
  350. data/set-of-emails/maildir/bsd/{mta-sendmail-23.eml → email-sendmail-23.eml} +0 -0
  351. data/set-of-emails/maildir/bsd/{mta-sendmail-24.eml → email-sendmail-24.eml} +0 -0
  352. data/set-of-emails/maildir/bsd/{mta-sendmail-25.eml → email-sendmail-25.eml} +0 -0
  353. data/set-of-emails/maildir/bsd/{mta-sendmail-26.eml → email-sendmail-26.eml} +0 -0
  354. data/set-of-emails/maildir/bsd/{mta-sendmail-27.eml → email-sendmail-27.eml} +0 -0
  355. data/set-of-emails/maildir/bsd/{mta-sendmail-28.eml → email-sendmail-28.eml} +0 -0
  356. data/set-of-emails/maildir/bsd/{mta-sendmail-29.eml → email-sendmail-29.eml} +0 -0
  357. data/set-of-emails/maildir/bsd/{mta-sendmail-30.eml → email-sendmail-30.eml} +0 -0
  358. data/set-of-emails/maildir/bsd/{mta-sendmail-31.eml → email-sendmail-31.eml} +0 -0
  359. data/set-of-emails/maildir/bsd/{mta-sendmail-32.eml → email-sendmail-32.eml} +0 -0
  360. data/set-of-emails/maildir/bsd/{mta-sendmail-33.eml → email-sendmail-33.eml} +0 -0
  361. data/set-of-emails/maildir/bsd/{mta-sendmail-34.eml → email-sendmail-34.eml} +0 -0
  362. data/set-of-emails/maildir/bsd/{mta-sendmail-35.eml → email-sendmail-35.eml} +0 -0
  363. data/set-of-emails/maildir/bsd/{mta-sendmail-36.eml → email-sendmail-36.eml} +0 -0
  364. data/set-of-emails/maildir/bsd/{mta-sendmail-37.eml → email-sendmail-37.eml} +0 -0
  365. data/set-of-emails/maildir/bsd/{mta-sendmail-38.eml → email-sendmail-38.eml} +0 -0
  366. data/set-of-emails/maildir/bsd/{mta-sendmail-39.eml → email-sendmail-39.eml} +0 -0
  367. data/set-of-emails/maildir/bsd/{mta-sendmail-40.eml → email-sendmail-40.eml} +0 -0
  368. data/set-of-emails/maildir/bsd/{mta-sendmail-41.eml → email-sendmail-41.eml} +0 -0
  369. data/set-of-emails/maildir/bsd/{mta-sendmail-42.eml → email-sendmail-42.eml} +0 -0
  370. data/set-of-emails/maildir/bsd/{mta-sendmail-43.eml → email-sendmail-43.eml} +0 -0
  371. data/set-of-emails/maildir/bsd/email-sendmail-44.eml +67 -0
  372. data/set-of-emails/maildir/bsd/{mta-surfcontrol-01.eml → email-surfcontrol-01.eml} +0 -0
  373. data/set-of-emails/maildir/bsd/{mta-surfcontrol-02.eml → email-surfcontrol-02.eml} +0 -0
  374. data/set-of-emails/maildir/bsd/{mta-surfcontrol-03.eml → email-surfcontrol-03.eml} +0 -0
  375. data/set-of-emails/maildir/bsd/{mta-v5sendmail-01.eml → email-v5sendmail-01.eml} +0 -0
  376. data/set-of-emails/maildir/bsd/{mta-v5sendmail-02.eml → email-v5sendmail-02.eml} +0 -0
  377. data/set-of-emails/maildir/bsd/{mta-v5sendmail-03.eml → email-v5sendmail-03.eml} +0 -0
  378. data/set-of-emails/maildir/bsd/{mta-v5sendmail-04.eml → email-v5sendmail-04.eml} +0 -0
  379. data/set-of-emails/maildir/bsd/{mta-v5sendmail-05.eml → email-v5sendmail-05.eml} +0 -0
  380. data/set-of-emails/maildir/bsd/{mta-v5sendmail-06.eml → email-v5sendmail-06.eml} +0 -0
  381. data/set-of-emails/maildir/bsd/{mta-v5sendmail-07.eml → email-v5sendmail-07.eml} +0 -0
  382. data/set-of-emails/maildir/bsd/{msp-us-verizon-01.eml → email-verizon-01.eml} +0 -0
  383. data/set-of-emails/maildir/bsd/{msp-us-verizon-02.eml → email-verizon-02.eml} +0 -0
  384. data/set-of-emails/maildir/bsd/{mta-x1-01.eml → email-x1-01.eml} +0 -0
  385. data/set-of-emails/maildir/bsd/{mta-x1-02.eml → email-x1-02.eml} +0 -0
  386. data/set-of-emails/maildir/bsd/{mta-x2-01.eml → email-x2-01.eml} +0 -0
  387. data/set-of-emails/maildir/bsd/{mta-x2-02.eml → email-x2-02.eml} +0 -0
  388. data/set-of-emails/maildir/bsd/{mta-x2-03.eml → email-x2-03.eml} +0 -0
  389. data/set-of-emails/maildir/bsd/{mta-x2-04.eml → email-x2-04.eml} +0 -0
  390. data/set-of-emails/maildir/bsd/{mta-x2-05.eml → email-x2-05.eml} +0 -0
  391. data/set-of-emails/maildir/bsd/{mta-x3-01.eml → email-x3-01.eml} +0 -0
  392. data/set-of-emails/maildir/bsd/{mta-x3-02.eml → email-x3-02.eml} +0 -0
  393. data/set-of-emails/maildir/bsd/{mta-x3-03.eml → email-x3-03.eml} +0 -0
  394. data/set-of-emails/maildir/bsd/{mta-x3-04.eml → email-x3-04.eml} +0 -0
  395. data/set-of-emails/maildir/bsd/{mta-x4-01.eml → email-x4-01.eml} +0 -0
  396. data/set-of-emails/maildir/bsd/{mta-x4-02.eml → email-x4-02.eml} +0 -0
  397. data/set-of-emails/maildir/bsd/{mta-x4-03.eml → email-x4-03.eml} +0 -0
  398. data/set-of-emails/maildir/bsd/{mta-x4-04.eml → email-x4-04.eml} +0 -0
  399. data/set-of-emails/maildir/bsd/{mta-x4-05.eml → email-x4-05.eml} +0 -0
  400. data/set-of-emails/maildir/bsd/{mta-x4-06.eml → email-x4-06.eml} +0 -0
  401. data/set-of-emails/maildir/bsd/{mta-x4-07.eml → email-x4-07.eml} +0 -0
  402. data/set-of-emails/maildir/bsd/{mta-x5-01.eml → email-x5-01.eml} +0 -0
  403. data/set-of-emails/maildir/bsd/{msp-us-yahoo-01.eml → email-yahoo-01.eml} +0 -0
  404. data/set-of-emails/maildir/bsd/{msp-us-yahoo-02.eml → email-yahoo-02.eml} +0 -0
  405. data/set-of-emails/maildir/bsd/{msp-us-yahoo-03.eml → email-yahoo-03.eml} +0 -0
  406. data/set-of-emails/maildir/bsd/{msp-us-yahoo-04.eml → email-yahoo-04.eml} +0 -0
  407. data/set-of-emails/maildir/bsd/{msp-us-yahoo-05.eml → email-yahoo-05.eml} +0 -0
  408. data/set-of-emails/maildir/bsd/{msp-ru-yandex-01.eml → email-yandex-01.eml} +0 -0
  409. data/set-of-emails/maildir/bsd/{msp-ru-yandex-02.eml → email-yandex-02.eml} +0 -0
  410. data/set-of-emails/maildir/bsd/{msp-ru-yandex-03.eml → email-yandex-03.eml} +0 -0
  411. data/set-of-emails/maildir/bsd/{msp-us-zoho-01.eml → email-zoho-01.eml} +0 -0
  412. data/set-of-emails/maildir/bsd/{msp-us-zoho-02.eml → email-zoho-02.eml} +0 -0
  413. data/set-of-emails/maildir/bsd/{msp-us-zoho-03.eml → email-zoho-03.eml} +0 -0
  414. data/set-of-emails/maildir/bsd/{msp-us-zoho-04.eml → email-zoho-04.eml} +0 -0
  415. data/set-of-emails/maildir/bsd/{msp-us-zoho-05.eml → email-zoho-05.eml} +0 -0
  416. data/set-of-emails/maildir/bsd/rfc3464-31.eml +141 -0
  417. data/set-of-emails/maildir/bsd/rfc3464-32.eml +158 -0
  418. data/set-of-emails/maildir/dos/{mta-activehunter-01.eml → email-activehunter-01.eml} +0 -0
  419. data/set-of-emails/maildir/dos/{msp-us-amazonses-01.eml → email-amazonses-01.eml} +0 -0
  420. data/set-of-emails/maildir/dos/{msp-us-amazonworkmail-01.eml → email-amazonworkmail-01.eml} +0 -0
  421. data/set-of-emails/maildir/dos/{msp-us-aol-01.eml → email-aol-01.eml} +0 -0
  422. data/set-of-emails/maildir/dos/{mta-apachejames-01.eml → email-apachejames-01.eml} +0 -0
  423. data/set-of-emails/maildir/dos/{msp-us-bigfoot-01.eml → email-bigfoot-01.eml} +0 -0
  424. data/set-of-emails/maildir/dos/{msp-jp-biglobe-01.eml → email-biglobe-01.eml} +0 -0
  425. data/set-of-emails/maildir/dos/{mta-courier-01.eml → email-courier-01.eml} +0 -0
  426. data/set-of-emails/maildir/dos/{mta-domino-01.eml → email-domino-01.eml} +0 -0
  427. data/set-of-emails/maildir/dos/{msp-de-einsundeins-01.eml → email-einsundeins-01.eml} +0 -0
  428. data/set-of-emails/maildir/dos/{mta-exchange-01.eml → email-exchange-01.eml} +0 -0
  429. data/set-of-emails/maildir/dos/{mta-exchange2003-01.eml → email-exchange2003-01.eml} +0 -0
  430. data/set-of-emails/maildir/dos/{mta-exchange2007-01.eml → email-exchange2007-01.eml} +0 -0
  431. data/set-of-emails/maildir/dos/{mta-exim-01.eml → email-exim-01.eml} +0 -0
  432. data/set-of-emails/maildir/dos/{msp-jp-ezweb-01.eml → email-ezweb-01.eml} +0 -0
  433. data/set-of-emails/maildir/dos/{msp-us-facebook-01.eml → email-facebook-01.eml} +0 -0
  434. data/set-of-emails/maildir/dos/{msp-de-gmx-01.eml → email-gmx-01.eml} +0 -0
  435. data/set-of-emails/maildir/dos/{msp-us-google-01.eml → email-google-01.eml} +0 -0
  436. data/set-of-emails/maildir/dos/{mta-imailserver-01.eml → email-imailserver-01.eml} +0 -0
  437. data/set-of-emails/maildir/dos/{mta-interscanmss-01.eml → email-interscanmss-01.eml} +0 -0
  438. data/set-of-emails/maildir/dos/{msp-jp-kddi-01.eml → email-kddi-01.eml} +0 -0
  439. data/set-of-emails/maildir/dos/{mta-mailfoundry-01.eml → email-mailfoundry-01.eml} +0 -0
  440. data/set-of-emails/maildir/dos/{mta-mailmarshalsmtp-01.eml → email-mailmarshalsmtp-01.eml} +0 -0
  441. data/set-of-emails/maildir/dos/{msp-ru-mailru-01.eml → email-mailru-01.eml} +0 -0
  442. data/set-of-emails/maildir/dos/{mta-mcafee-01.eml → email-mcafee-01.eml} +0 -0
  443. data/set-of-emails/maildir/dos/{msp-uk-messagelabs-01.eml → email-messagelabs-01.eml} +0 -0
  444. data/set-of-emails/maildir/dos/{mta-messagingserver-01.eml → email-messagingserver-01.eml} +0 -0
  445. data/set-of-emails/maildir/dos/{mta-mfilter-01.eml → email-mfilter-01.eml} +0 -0
  446. data/set-of-emails/maildir/dos/{mta-mxlogic-01.eml → email-mxlogic-01.eml} +0 -0
  447. data/set-of-emails/maildir/dos/{mta-notes-01.eml → email-notes-01.eml} +0 -0
  448. data/set-of-emails/maildir/dos/{msp-us-office365-01.eml → email-office365-01.eml} +0 -0
  449. data/set-of-emails/maildir/dos/{mta-opensmtpd-01.eml → email-opensmtpd-01.eml} +0 -0
  450. data/set-of-emails/maildir/dos/{msp-us-outlook-01.eml → email-outlook-01.eml} +0 -0
  451. data/set-of-emails/maildir/dos/{mta-postfix-01.eml → email-postfix-01.eml} +0 -0
  452. data/set-of-emails/maildir/dos/{mta-qmail-01.eml → email-qmail-01.eml} +0 -0
  453. data/set-of-emails/maildir/dos/{msp-us-receivingses-01.eml → email-receivingses-01.eml} +0 -0
  454. data/set-of-emails/maildir/dos/{msp-us-sendgrid-01.eml → email-sendgrid-01.eml} +0 -0
  455. data/set-of-emails/maildir/dos/{mta-sendmail-01.eml → email-sendmail-01.eml} +0 -0
  456. data/set-of-emails/maildir/dos/{mta-surfcontrol-01.eml → email-surfcontrol-01.eml} +0 -0
  457. data/set-of-emails/maildir/dos/{mta-v5sendmail-01.eml → email-v5sendmail-01.eml} +0 -0
  458. data/set-of-emails/maildir/dos/{msp-us-verizon-01.eml → email-verizon-01.eml} +0 -0
  459. data/set-of-emails/maildir/dos/{mta-x1-01.eml → email-x1-01.eml} +0 -0
  460. data/set-of-emails/maildir/dos/{mta-x2-01.eml → email-x2-01.eml} +0 -0
  461. data/set-of-emails/maildir/dos/{mta-x3-01.eml → email-x3-01.eml} +0 -0
  462. data/set-of-emails/maildir/dos/{mta-x4-01.eml → email-x4-01.eml} +0 -0
  463. data/set-of-emails/maildir/dos/{mta-x5-01.eml → email-x5-01.eml} +0 -0
  464. data/set-of-emails/maildir/dos/{msp-us-yahoo-01.eml → email-yahoo-01.eml} +0 -0
  465. data/set-of-emails/maildir/dos/{msp-ru-yandex-01.eml → email-yandex-01.eml} +0 -0
  466. data/set-of-emails/maildir/dos/{msp-us-zoho-01.eml → email-zoho-01.eml} +0 -0
  467. data/set-of-emails/maildir/mac/{mta-activehunter-01.eml → email-activehunter-01.eml} +0 -0
  468. data/set-of-emails/maildir/mac/{msp-us-amazonses-01.eml → email-amazonses-01.eml} +0 -0
  469. data/set-of-emails/maildir/mac/{msp-us-amazonworkmail-01.eml → email-amazonworkmail-01.eml} +0 -0
  470. data/set-of-emails/maildir/mac/{msp-us-aol-01.eml → email-aol-01.eml} +0 -0
  471. data/set-of-emails/maildir/mac/{mta-apachejames-01.eml → email-apachejames-01.eml} +0 -0
  472. data/set-of-emails/maildir/mac/{msp-us-bigfoot-01.eml → email-bigfoot-01.eml} +0 -0
  473. data/set-of-emails/maildir/mac/{msp-jp-biglobe-01.eml → email-biglobe-01.eml} +0 -0
  474. data/set-of-emails/maildir/mac/{mta-courier-01.eml → email-courier-01.eml} +0 -0
  475. data/set-of-emails/maildir/mac/{mta-domino-01.eml → email-domino-01.eml} +0 -0
  476. data/set-of-emails/maildir/mac/{msp-de-einsundeins-01.eml → email-einsundeins-01.eml} +0 -0
  477. data/set-of-emails/maildir/mac/{mta-exchange-01.eml → email-exchange-01.eml} +0 -0
  478. data/set-of-emails/maildir/mac/{mta-exchange2003-01.eml → email-exchange2003-01.eml} +0 -0
  479. data/set-of-emails/maildir/mac/{mta-exchange2007-01.eml → email-exchange2007-01.eml} +0 -0
  480. data/set-of-emails/maildir/mac/{mta-exim-01.eml → email-exim-01.eml} +0 -0
  481. data/set-of-emails/maildir/mac/{msp-jp-ezweb-01.eml → email-ezweb-01.eml} +0 -0
  482. data/set-of-emails/maildir/mac/{msp-us-facebook-01.eml → email-facebook-01.eml} +0 -0
  483. data/set-of-emails/maildir/mac/{msp-de-gmx-01.eml → email-gmx-01.eml} +0 -0
  484. data/set-of-emails/maildir/mac/{msp-us-google-01.eml → email-google-01.eml} +0 -0
  485. data/set-of-emails/maildir/mac/{mta-imailserver-01.eml → email-imailserver-01.eml} +0 -0
  486. data/set-of-emails/maildir/mac/{mta-interscanmss-01.eml → email-interscanmss-01.eml} +0 -0
  487. data/set-of-emails/maildir/mac/{msp-jp-kddi-01.eml → email-kddi-01.eml} +0 -0
  488. data/set-of-emails/maildir/mac/{mta-mailfoundry-01.eml → email-mailfoundry-01.eml} +0 -0
  489. data/set-of-emails/maildir/mac/{mta-mailmarshalsmtp-01.eml → email-mailmarshalsmtp-01.eml} +0 -0
  490. data/set-of-emails/maildir/mac/{msp-ru-mailru-01.eml → email-mailru-01.eml} +0 -0
  491. data/set-of-emails/maildir/mac/{mta-mcafee-01.eml → email-mcafee-01.eml} +0 -0
  492. data/set-of-emails/maildir/mac/{msp-uk-messagelabs-01.eml → email-messagelabs-01.eml} +0 -0
  493. data/set-of-emails/maildir/mac/{mta-messagingserver-01.eml → email-messagingserver-01.eml} +0 -0
  494. data/set-of-emails/maildir/mac/{mta-mfilter-01.eml → email-mfilter-01.eml} +0 -0
  495. data/set-of-emails/maildir/mac/{mta-mxlogic-01.eml → email-mxlogic-01.eml} +0 -0
  496. data/set-of-emails/maildir/mac/{mta-notes-01.eml → email-notes-01.eml} +0 -0
  497. data/set-of-emails/maildir/mac/{msp-us-office365-01.eml → email-office365-01.eml} +0 -0
  498. data/set-of-emails/maildir/mac/{mta-opensmtpd-01.eml → email-opensmtpd-01.eml} +0 -0
  499. data/set-of-emails/maildir/mac/{msp-us-outlook-01.eml → email-outlook-01.eml} +0 -0
  500. data/set-of-emails/maildir/mac/{mta-postfix-01.eml → email-postfix-01.eml} +0 -0
  501. data/set-of-emails/maildir/mac/{mta-qmail-01.eml → email-qmail-01.eml} +0 -0
  502. data/set-of-emails/maildir/mac/{msp-us-receivingses-01.eml → email-receivingses-01.eml} +0 -0
  503. data/set-of-emails/maildir/mac/{msp-us-sendgrid-01.eml → email-sendgrid-01.eml} +0 -0
  504. data/set-of-emails/maildir/mac/{mta-sendmail-01.eml → email-sendmail-01.eml} +0 -0
  505. data/set-of-emails/maildir/mac/{mta-surfcontrol-01.eml → email-surfcontrol-01.eml} +0 -0
  506. data/set-of-emails/maildir/mac/{mta-v5sendmail-01.eml → email-v5sendmail-01.eml} +0 -0
  507. data/set-of-emails/maildir/mac/{msp-us-verizon-01.eml → email-verizon-01.eml} +0 -0
  508. data/set-of-emails/maildir/mac/{mta-x1-01.eml → email-x1-01.eml} +0 -0
  509. data/set-of-emails/maildir/mac/{mta-x2-01.eml → email-x2-01.eml} +0 -0
  510. data/set-of-emails/maildir/mac/{mta-x3-01.eml → email-x3-01.eml} +0 -0
  511. data/set-of-emails/maildir/mac/{mta-x4-01.eml → email-x4-01.eml} +0 -0
  512. data/set-of-emails/maildir/mac/{mta-x5-01.eml → email-x5-01.eml} +0 -0
  513. data/set-of-emails/maildir/mac/{msp-us-yahoo-01.eml → email-yahoo-01.eml} +0 -0
  514. data/set-of-emails/maildir/mac/{msp-ru-yandex-01.eml → email-yandex-01.eml} +0 -0
  515. data/set-of-emails/maildir/mac/{msp-us-zoho-01.eml → email-zoho-01.eml} +0 -0
  516. metadata +483 -478
  517. data/lib/sisimai/ced/us/amazonses.rb +0 -269
  518. data/lib/sisimai/ced/us/sendgrid.rb +0 -86
  519. data/lib/sisimai/msp/de/einsundeins.rb +0 -146
  520. data/lib/sisimai/msp/de/gmx.rb +0 -170
  521. data/lib/sisimai/msp/jp/biglobe.rb +0 -150
  522. data/lib/sisimai/msp/jp/ezweb.rb +0 -262
  523. data/lib/sisimai/msp/jp/kddi.rb +0 -168
  524. data/lib/sisimai/msp/ru/mailru.rb +0 -274
  525. data/lib/sisimai/msp/ru/yandex.rb +0 -207
  526. data/lib/sisimai/msp/uk/messagelabs.rb +0 -216
  527. data/lib/sisimai/msp/us/amazonses.rb +0 -237
  528. data/lib/sisimai/msp/us/amazonworkmail.rb +0 -195
  529. data/lib/sisimai/msp/us/aol.rb +0 -211
  530. data/lib/sisimai/msp/us/bigfoot.rb +0 -210
  531. data/lib/sisimai/msp/us/facebook.rb +0 -277
  532. data/lib/sisimai/msp/us/google.rb +0 -323
  533. data/lib/sisimai/msp/us/gsuite.rb +0 -277
  534. data/lib/sisimai/msp/us/office365.rb +0 -264
  535. data/lib/sisimai/msp/us/outlook.rb +0 -209
  536. data/lib/sisimai/msp/us/receivingses.rb +0 -224
  537. data/lib/sisimai/msp/us/sendgrid.rb +0 -226
  538. data/lib/sisimai/msp/us/verizon.rb +0 -267
  539. data/lib/sisimai/msp/us/yahoo.rb +0 -150
  540. data/lib/sisimai/msp/us/zoho.rb +0 -170
  541. data/lib/sisimai/mta/activehunter.rb +0 -126
  542. data/lib/sisimai/mta/apachejames.rb +0 -172
  543. data/lib/sisimai/mta/courier.rb +0 -268
  544. data/lib/sisimai/mta/domino.rb +0 -177
  545. data/lib/sisimai/mta/exchange2003.rb +0 -287
  546. data/lib/sisimai/mta/exchange2007.rb +0 -182
  547. data/lib/sisimai/mta/exim.rb +0 -525
  548. data/lib/sisimai/mta/imailserver.rb +0 -182
  549. data/lib/sisimai/mta/interscanmss.rb +0 -149
  550. data/lib/sisimai/mta/mailfoundry.rb +0 -137
  551. data/lib/sisimai/mta/mailmarshalsmtp.rb +0 -176
  552. data/lib/sisimai/mta/mcafee.rb +0 -172
  553. data/lib/sisimai/mta/messagingserver.rb +0 -208
  554. data/lib/sisimai/mta/mfilter.rb +0 -167
  555. data/lib/sisimai/mta/mxlogic.rb +0 -255
  556. data/lib/sisimai/mta/notes.rb +0 -183
  557. data/lib/sisimai/mta/opensmtpd.rb +0 -195
  558. data/lib/sisimai/mta/postfix.rb +0 -312
  559. data/lib/sisimai/mta/qmail.rb +0 -307
  560. data/lib/sisimai/mta/sendmail.rb +0 -293
  561. data/lib/sisimai/mta/surfcontrol.rb +0 -164
  562. data/lib/sisimai/mta/userdefined.rb +0 -132
  563. data/lib/sisimai/mta/v5sendmail.rb +0 -210
  564. data/lib/sisimai/mta/x1.rb +0 -127
  565. data/lib/sisimai/mta/x2.rb +0 -128
  566. data/lib/sisimai/mta/x3.rb +0 -144
  567. data/lib/sisimai/mta/x4.rb +0 -328
  568. data/lib/sisimai/mta/x5.rb +0 -181
  569. data/set-of-emails/maildir/bsd/mta-README.md +0 -319
  570. data/set-of-emails/maildir/dos/ced-us-amazonses-01.eml +0 -47
  571. data/set-of-emails/maildir/mac/ced-us-amazonses-01.eml +0 -2
@@ -1,127 +0,0 @@
1
- module Sisimai
2
- module MTA
3
- # Sisimai::MTA::X1 parses a bounce email which created by Unknown MTA #1.
4
- # Methods in the module are called from only Sisimai::Message.
5
- module X1
6
- # Imported from p5-Sisimail/lib/Sisimai/MTA/X1.pm
7
- class << self
8
- require 'sisimai/mta'
9
- require 'sisimai/rfc5322'
10
-
11
- Re0 = {
12
- :from => %r/["]Mail Deliver System["] /,
13
- :subject => %r/\AReturned Mail: /,
14
- }
15
- Re1 = {
16
- :begin => %r/\AThe original message was received at (.+)\z/,
17
- :endof => %r/\A__END_OF_EMAIL_MESSAGE__\z/,
18
- :rfc822 => %r/\AReceived: from \d+[.]\d+[.]\d+[.]\d/,
19
- }
20
- Indicators = Sisimai::MTA.INDICATORS
21
-
22
- def description; return 'Unknown MTA #1'; end
23
- def smtpagent; return Sisimai::MTA.smtpagent(self); end
24
- def headerlist; return []; end
25
- def pattern; return Re0; end
26
-
27
- # Parse bounce messages from Unknown MTA #1
28
- # @param [Hash] mhead Message header of a bounce email
29
- # @options mhead [String] from From header
30
- # @options mhead [String] date Date header
31
- # @options mhead [String] subject Subject header
32
- # @options mhead [Array] received Received headers
33
- # @options mhead [String] others Other required headers
34
- # @param [String] mbody Message body of a bounce email
35
- # @return [Hash, Nil] Bounce data list and message/rfc822
36
- # part or nil if it failed to parse or
37
- # the arguments are missing
38
- def scan(mhead, mbody)
39
- return nil unless mhead
40
- return nil unless mbody
41
- return nil unless mhead['subject'] =~ Re0[:subject]
42
- return nil unless mhead['from'] =~ Re0[:from]
43
-
44
- dscontents = [Sisimai::MTA.DELIVERYSTATUS]
45
- hasdivided = mbody.split("\n")
46
- rfc822list = [] # (Array) Each line in message/rfc822 part string
47
- blanklines = 0 # (Integer) The number of blank lines
48
- readcursor = 0 # (Integer) Points the current cursor position
49
- recipients = 0 # (Integer) The number of 'Final-Recipient' header
50
- datestring = '' # (String) Date string
51
- v = nil
52
-
53
- hasdivided.each do |e|
54
- if readcursor.zero?
55
- # Beginning of the bounce message or delivery status part
56
- if e =~ Re1[:begin]
57
- readcursor |= Indicators[:deliverystatus]
58
- next
59
- end
60
- end
61
-
62
- if readcursor & Indicators[:'message-rfc822'] == 0
63
- # Beginning of the original message part
64
- if e =~ Re1[:rfc822]
65
- readcursor |= Indicators[:'message-rfc822']
66
- next
67
- end
68
- end
69
-
70
- if readcursor & Indicators[:'message-rfc822'] > 0
71
- # After "message/rfc822"
72
- if e.empty?
73
- blanklines += 1
74
- break if blanklines > 1
75
- next
76
- end
77
- rfc822list << e
78
-
79
- else
80
- # Before "message/rfc822"
81
- next if readcursor & Indicators[:deliverystatus] == 0
82
- next if e.empty?
83
-
84
- # The original message was received at Thu, 29 Apr 2010 23:34:45 +0900 (JST)
85
- # from shironeko@example.jp
86
- #
87
- # ---The following addresses had delivery errors---
88
- #
89
- # kijitora@example.co.jp [User unknown]
90
- v = dscontents[-1]
91
-
92
- if cv = e.match(/\A([^ ]+?[@][^ ]+?)[ ]+\[(.+)\]\z/)
93
- # kijitora@example.co.jp [User unknown]
94
- if v['recipient']
95
- # There are multiple recipient addresses in the message body.
96
- dscontents << Sisimai::MTA.DELIVERYSTATUS
97
- v = dscontents[-1]
98
- end
99
- v['recipient'] = cv[1]
100
- v['diagnosis'] = cv[2]
101
- recipients += 1
102
-
103
- elsif cv = e.match(Re1[:begin])
104
- # The original message was received at Thu, 29 Apr 2010 23:34:45 +0900 (JST)
105
- datestring = cv[1]
106
- end
107
- end
108
- end
109
- return nil if recipients.zero?
110
- require 'sisimai/string'
111
-
112
- dscontents.map do |e|
113
- e['agent'] = Sisimai::MTA::X1.smtpagent
114
- e['diagnosis'] = Sisimai::String.sweep(e['diagnosis'])
115
- e['date'] = datestring || ''
116
- e.each_key { |a| e[a] ||= '' }
117
- end
118
-
119
- rfc822part = Sisimai::RFC5322.weedout(rfc822list)
120
- return { 'ds' => dscontents, 'rfc822' => rfc822part }
121
- end
122
-
123
- end
124
- end
125
- end
126
- end
127
-
@@ -1,128 +0,0 @@
1
- module Sisimai
2
- module MTA
3
- # Sisimai::MTA::X2 parses a bounce email which created by Unknown MTA #2.
4
- # Methods in the module are called from only Sisimai::Message.
5
- module X2
6
- # Imported from p5-Sisimail/lib/Sisimai/MTA/X2.pm
7
- class << self
8
- require 'sisimai/mta'
9
- require 'sisimai/rfc5322'
10
-
11
- Re0 = {
12
- :from => %r/MAILER-DAEMON[@]/,
13
- :subject => %r{\A(?>
14
- Delivery[ ]failure
15
- |fail(?:ure|ed)[ ]delivery
16
- )
17
- }x,
18
- }
19
- Re1 = {
20
- :begin => %r/\AUnable to deliver message to the following address/,
21
- :rfc822 => %r/\A--- Original message follows/,
22
- :endof => %r/\A__END_OF_EMAIL_MESSAGE__\z/,
23
- }
24
- Indicators = Sisimai::MTA.INDICATORS
25
-
26
- def description; return 'Unknown MTA #2'; end
27
- def smtpagent; return Sisimai::MTA.smtpagent(self); end
28
- def headerlist; return []; end
29
- def pattern; return Re0; end
30
-
31
- # Parse bounce messages from Unknown MTA #2
32
- # @param [Hash] mhead Message header of a bounce email
33
- # @options mhead [String] from From header
34
- # @options mhead [String] date Date header
35
- # @options mhead [String] subject Subject header
36
- # @options mhead [Array] received Received headers
37
- # @options mhead [String] others Other required headers
38
- # @param [String] mbody Message body of a bounce email
39
- # @return [Hash, Nil] Bounce data list and message/rfc822
40
- # part or nil if it failed to parse or
41
- # the arguments are missing
42
- def scan(mhead, mbody)
43
- return nil unless mhead
44
- return nil unless mbody
45
- return nil unless mhead['subject'] =~ Re0[:subject]
46
- return nil unless mhead['from'] =~ Re0[:from]
47
-
48
- dscontents = [Sisimai::MTA.DELIVERYSTATUS]
49
- hasdivided = mbody.split("\n")
50
- rfc822list = [] # (Array) Each line in message/rfc822 part string
51
- blanklines = 0 # (Integer) The number of blank lines
52
- readcursor = 0 # (Integer) Points the current cursor position
53
- recipients = 0 # (Integer) The number of 'Final-Recipient' header
54
- v = nil
55
-
56
- hasdivided.each do |e|
57
- if readcursor.zero?
58
- # Beginning of the bounce message or delivery status part
59
- if e =~ Re1[:begin]
60
- readcursor |= Indicators[:deliverystatus]
61
- next
62
- end
63
- end
64
-
65
- if readcursor & Indicators[:'message-rfc822'] == 0
66
- # Beginning of the original message part
67
- if e =~ Re1[:rfc822]
68
- readcursor |= Indicators[:'message-rfc822']
69
- next
70
- end
71
- end
72
-
73
- if readcursor & Indicators[:'message-rfc822'] > 0
74
- # After "message/rfc822"
75
- if e.empty?
76
- blanklines += 1
77
- break if blanklines > 2
78
- next
79
- end
80
- rfc822list << e
81
-
82
- else
83
- # Before "message/rfc822"
84
- next if readcursor & Indicators[:deliverystatus] == 0
85
- next if e.empty?
86
-
87
- # Message from example.com.
88
- # Unable to deliver message to the following address(es).
89
- #
90
- # <kijitora@example.com>:
91
- # This user doesn't have a example.com account (kijitora@example.com) [0]
92
- v = dscontents[-1]
93
-
94
- if cv = e.match(/\A[<]([^ ]+[@][^ ]+)[>]:\z/)
95
- # <kijitora@example.com>:
96
- if v['recipient']
97
- # There are multiple recipient addresses in the message body.
98
- dscontents << Sisimai::MTA.DELIVERYSTATUS
99
- v = dscontents[-1]
100
- end
101
- v['recipient'] = cv[1]
102
- recipients += 1
103
-
104
- else
105
- # This user doesn't have a example.com account (kijitora@example.com) [0]
106
- v['diagnosis'] ||= ''
107
- v['diagnosis'] += ' ' + e
108
- end
109
- end
110
- end
111
- return nil if recipients.zero?
112
- require 'sisimai/string'
113
-
114
- dscontents.map do |e|
115
- e['agent'] = Sisimai::MTA::X2.smtpagent
116
- e['diagnosis'] = Sisimai::String.sweep(e['diagnosis'])
117
- e.each_key { |a| e[a] ||= '' }
118
- end
119
-
120
- rfc822part = Sisimai::RFC5322.weedout(rfc822list)
121
- return { 'ds' => dscontents, 'rfc822' => rfc822part }
122
- end
123
-
124
- end
125
- end
126
- end
127
- end
128
-
@@ -1,144 +0,0 @@
1
- module Sisimai
2
- module MTA
3
- # Sisimai::MTA::X3 parses a bounce email which created by Unknown MTA #3.
4
- # Methods in the module are called from only Sisimai::Message.
5
- module X3
6
- # Imported from p5-Sisimail/lib/Sisimai/MTA/X3.pm
7
- class << self
8
- require 'sisimai/mta'
9
- require 'sisimai/rfc5322'
10
-
11
- Re0 = {
12
- :from => %r/\AMail Delivery System/,
13
- :subject => %r/\ADelivery status notification/,
14
- }
15
- Re1 = {
16
- :begin => %r/\A[ \t]+This is an automatically generated Delivery Status Notification/,
17
- :rfc822 => %r|\AContent-Type: message/rfc822|,
18
- :endof => %r/\A__END_OF_EMAIL_MESSAGE__\z/,
19
- }
20
- Indicators = Sisimai::MTA.INDICATORS
21
-
22
- def description; return 'Unknown MTA #3'; end
23
- def smtpagent; return Sisimai::MTA.smtpagent(self); end
24
- def headerlist; return []; end
25
- def pattern; return Re0; end
26
-
27
- # Parse bounce messages from Unknown MTA #3
28
- # @param [Hash] mhead Message header of a bounce email
29
- # @options mhead [String] from From header
30
- # @options mhead [String] date Date header
31
- # @options mhead [String] subject Subject header
32
- # @options mhead [Array] received Received headers
33
- # @options mhead [String] others Other required headers
34
- # @param [String] mbody Message body of a bounce email
35
- # @return [Hash, Nil] Bounce data list and message/rfc822
36
- # part or nil if it failed to parse or
37
- # the arguments are missing
38
- def scan(mhead, mbody)
39
- return nil unless mhead
40
- return nil unless mbody
41
- return nil unless mhead['subject'] =~ Re0[:subject]
42
- return nil unless mhead['from'] =~ Re0[:from]
43
-
44
- dscontents = [Sisimai::MTA.DELIVERYSTATUS]
45
- hasdivided = mbody.split("\n")
46
- rfc822list = [] # (Array) Each line in message/rfc822 part string
47
- blanklines = 0 # (Integer) The number of blank lines
48
- readcursor = 0 # (Integer) Points the current cursor position
49
- recipients = 0 # (Integer) The number of 'Final-Recipient' header
50
- v = nil
51
-
52
- hasdivided.each do |e|
53
- if readcursor.zero?
54
- # Beginning of the bounce message or delivery status part
55
- if e =~ Re1[:begin]
56
- readcursor |= Indicators[:deliverystatus]
57
- next
58
- end
59
- end
60
-
61
- if readcursor & Indicators[:'message-rfc822'] == 0
62
- # Beginning of the original message part
63
- if e =~ Re1[:rfc822]
64
- readcursor |= Indicators[:'message-rfc822']
65
- next
66
- end
67
- end
68
-
69
- if readcursor & Indicators[:'message-rfc822'] > 0
70
- # After "message/rfc822"
71
- if e.empty?
72
- blanklines += 1
73
- break if blanklines > 1
74
- next
75
- end
76
- rfc822list << e
77
-
78
- else
79
- # Before "message/rfc822"
80
- next if readcursor & Indicators[:deliverystatus] == 0
81
- next if e.empty?
82
-
83
- # ============================================================================
84
- # This is an automatically generated Delivery Status Notification.
85
- #
86
- # Delivery to the following recipients failed permanently:
87
- #
88
- # * kijitora@example.com
89
- #
90
- #
91
- # ============================================================================
92
- # Technical details:
93
- #
94
- # SMTP:RCPT host 192.0.2.8: 553 5.3.0 <kijitora@example.com>... No such user here
95
- #
96
- #
97
- # ============================================================================
98
- v = dscontents[-1]
99
-
100
- if cv = e.match(/\A[ \t]+[*][ ]([^ ]+[@][^ ]+)\z/)
101
- # * kijitora@example.com
102
- if v['recipient']
103
- # There are multiple recipient addresses in the message body.
104
- dscontents << Sisimai::MTA.DELIVERYSTATUS
105
- v = dscontents[-1]
106
- end
107
- v['recipient'] = cv[1]
108
- recipients += 1
109
-
110
- else
111
- # Detect error message
112
- if cv = e.match(/\ASMTP:([^ ]+)[ ](.+)\z/)
113
- # SMTP:RCPT host 192.0.2.8: 553 5.3.0 <kijitora@example.com>... No such user here
114
- v['command'] = cv[1].upcase
115
- v['diagnosis'] = cv[2]
116
-
117
- elsif cv = e.match(/\ARouting: (.+)/)
118
- # Routing: Could not find a gateway for kijitora@example.co.jp
119
- v['diagnosis'] = cv[1]
120
- end
121
- end
122
- end
123
- end
124
-
125
- return nil if recipients.zero?
126
- require 'sisimai/string'
127
- require 'sisimai/smtp/status'
128
-
129
- dscontents.map do |e|
130
- e['agent'] = Sisimai::MTA::X3.smtpagent
131
- e['diagnosis'] = Sisimai::String.sweep(e['diagnosis'])
132
- e['status'] = Sisimai::SMTP::Status.find(e['diagnosis'])
133
- e.each_key { |a| e[a] ||= '' }
134
- end
135
-
136
- rfc822part = Sisimai::RFC5322.weedout(rfc822list)
137
- return { 'ds' => dscontents, 'rfc822' => rfc822part }
138
- end
139
-
140
- end
141
- end
142
- end
143
- end
144
-
@@ -1,328 +0,0 @@
1
- module Sisimai
2
- module MTA
3
- # Sisimai::MTA::X4 parses a bounce email which created by some qmail clone.
4
- # Methods in the module are called from only Sisimai::Message.
5
- module X4
6
- # Imported from p5-Sisimail/lib/Sisimai/MTA/X4.pm
7
- class << self
8
- require 'sisimai/mta'
9
- require 'sisimai/rfc5322'
10
- Re0 = {
11
- :subject => %r{\A(?:
12
- failure[ ]notice
13
- |Permanent[ ]Delivery[ ]Failure
14
- )
15
- }xi,
16
- :received => %r/\A[(]qmail[ ]+\d+[ ]+invoked[ ]+for[ ]+bounce[)]/,
17
- }
18
- # qmail-remote.c:248| if (code >= 500) {
19
- # qmail-remote.c:249| out("h"); outhost(); out(" does not like recipient.\n");
20
- # qmail-remote.c:265| if (code >= 500) quit("D"," failed on DATA command");
21
- # qmail-remote.c:271| if (code >= 500) quit("D"," failed after I sent the message");
22
- #
23
- # Characters: K,Z,D in qmail-qmqpc.c, qmail-send.c, qmail-rspawn.c
24
- # K = success, Z = temporary error, D = permanent error
25
- #
26
- # MTA module for qmail clones
27
- Re1 = {
28
- :begin => %r{\A(?>
29
- He/Her[ ]is[ ]not.+[ ]user
30
- |Hi[.][ ].+[ ]unable[ ]to[ ]deliver[ ]your[ ]message[ ]to[ ]
31
- the[ ]following[ ]addresses
32
- |Su[ ]mensaje[ ]no[ ]pudo[ ]ser[ ]entregado
33
- |This[ ]is[ ]the[ ](?:
34
- machine[ ]generated[ ]message[ ]from[ ]mail[ ]service
35
- |mail[ ]delivery[ ]agent[ ]at
36
- )
37
- |Unable[ ]to[ ]deliver[ ]message[ ]to[ ]the[ ]following[ ]address
38
- |Unfortunately,[ ]your[ ]mail[ ]was[ ]not[ ]delivered[ ]to[ ]the[ ]following[ ]address:
39
- |Your[ ](?:
40
- mail[ ]message[ ]to[ ]the[ ]following[ ]address
41
- |message[ ]to[ ]the[ ]following[ ]addresses
42
- )
43
- |We're[ ]sorry[.]
44
- )
45
- }ix,
46
- :rfc822 => %r{\A(?:
47
- ---[ ]Below[ ]this[ ]line[ ]is[ ]a[ ]copy[ ]of[ ]the[ ]message[.]
48
- |---[ ]Original[ ]message[ ]follows[.]
49
- )
50
- }xi,
51
- :error => %r/\ARemote host said:/,
52
- :sorry => %r/\A[Ss]orry[,.][ ]/,
53
- :endof => %r/\A__END_OF_EMAIL_MESSAGE__\z/,
54
- }
55
- ReSMTP = {
56
- # Error text regular expressions which defined in qmail-remote.c
57
- # qmail-remote.c:225| if (smtpcode() != 220) quit("ZConnected to "," but greeting failed");
58
- conn: %r/(?:Error:)?Connected[ ]to[ ].+[ ]but[ ]greeting[ ]failed[.]/x,
59
- # qmail-remote.c:231| if (smtpcode() != 250) quit("ZConnected to "," but my name was rejected");
60
- ehlo: %r/(?:Error:)?Connected[ ]to[ ].+[ ]but[ ]my[ ]name[ ]was[ ]rejected[.]/x,
61
- # qmail-remote.c:238| if (code >= 500) quit("DConnected to "," but sender was rejected");
62
- # reason = rejected
63
- mail: %r/(?:Error:)?Connected[ ]to[ ].+[ ]but[ ]sender[ ]was[ ]rejected[.]/x,
64
- # qmail-remote.c:249| out("h"); outhost(); out(" does not like recipient.\n");
65
- # qmail-remote.c:253| out("s"); outhost(); out(" does not like recipient.\n");
66
- # reason = userunknown
67
- rcpt: %r/(?:Error:)?.+[ ]does[ ]not[ ]like[ ]recipient[.]/x,
68
- # qmail-remote.c:265| if (code >= 500) quit("D"," failed on DATA command");
69
- # qmail-remote.c:266| if (code >= 400) quit("Z"," failed on DATA command");
70
- # qmail-remote.c:271| if (code >= 500) quit("D"," failed after I sent the message");
71
- # qmail-remote.c:272| if (code >= 400) quit("Z"," failed after I sent the message");
72
- data: %r{(?:
73
- (?:Error:)?.+[ ]failed[ ]on[ ]DATA[ ]command[.]
74
- |(?:Error:)?.+[ ]failed[ ]after[ ]I[ ]sent[ ]the[ ]message[.]
75
- )
76
- }x,
77
- }
78
- # qmail-remote.c:261| if (!flagbother) quit("DGiving up on ","");
79
- ReHost = %r{(?:
80
- Giving[ ]up[ ]on[ ](.+[0-9a-zA-Z])[.]?\z
81
- |Connected[ ]to[ ]([-0-9a-zA-Z.]+[0-9a-zA-Z])[ ]
82
- |remote[ ]host[ ]([-0-9a-zA-Z.]+[0-9a-zA-Z])[ ]said:
83
- )
84
- }x
85
- # qmail-ldap-1.03-20040101.patch:19817 - 19866
86
- ReLDAP = {
87
- suspend: %r/Mailaddress is administrative?le?y disabled/, # 5.2.1
88
- userunknown: %r/[Ss]orry, no mailbox here by that name/, # 5.1.1
89
- exceedlimit: %r/The message exeeded the maximum size the user accepts/, # 5.2.3
90
- systemerror: %r{(?>
91
- Automatic[ ]homedir[ ]creator[ ]crashed # 4.3.0
92
- |Illegal[ ]value[ ]in[ ]LDAP[ ]attribute # 5.3.5
93
- |LDAP[ ]attribute[ ]is[ ]not[ ]given[ ]but[ ]mandatory # 5.3.5
94
- |Timeout[ ]while[ ]performing[ ]search[ ]on[ ]LDAP[ ]server # 4.4.3
95
- |Too[ ]many[ ]results[ ]returned[ ]but[ ]needs[ ]to[ ]be[ ]unique # 5.3.5
96
- |Permanent[ ]error[ ]while[ ]executing[ ]qmail[-]forward # 5.4.4
97
- |Temporary[ ](?:
98
- error[ ](?:
99
- in[ ]automatic[ ]homedir[ ]creation # 4.3.0 or 5.3.0
100
- |while[ ]executing[ ]qmail[-]forward # 4.4.4
101
- )
102
- |failure[ ]in[ ]LDAP[ ]lookup # 4.4.3
103
- )
104
- |Unable[ ]to[ ](?:
105
- contact[ ]LDAP[ ]server # 4.4.3
106
- |login[ ]into[ ]LDAP[ ]server,[ ]bad[ ]credentials # 4.4.3
107
- )
108
- )
109
- }x,
110
- }
111
- # userunknown + expired
112
- ReOnHold = %r/\A[^ ]+ does not like recipient[.][ ]+.+this message has been in the queue too long[.]\z/
113
- # qmail-remote-fallback.patch
114
- ReCommand = %r/Sorry,[ ]no[ ]SMTP[ ]connection[ ]got[ ]far[ ]enough;[ ]most[ ]progress[ ]was[ ]([A-Z]{4})[ ]/x
115
- ReFailure = {
116
- # qmail-local.c:589| strerr_die1x(100,"Sorry, no mailbox here by that name. (#5.1.1)");
117
- # qmail-remote.c:253| out("s"); outhost(); out(" does not like recipient.\n");
118
- userunknown: %r{(?:
119
- no[ ]mailbox[ ]here[ ]by[ ]that[ ]name
120
- |[ ]does[ ]not[ ]like[ ]recipient[.]
121
- )
122
- }x,
123
- # error_str.c:192| X(EDQUOT,"disk quota exceeded")
124
- mailboxfull: %r/disk[ ]quota[ ]exceeded/x,
125
- # qmail-qmtpd.c:233| ... result = "Dsorry, that message size exceeds my databytes limit (#5.3.4)";
126
- # qmail-smtpd.c:391| ... out("552 sorry, that message size exceeds my databytes limit (#5.3.4)\r\n"); return;
127
- mesgtoobig: %r/Message[ ]size[ ]exceeds[ ]fixed[ ]maximum[ ]message[ ]size:/x,
128
- # qmail-remote.c:68| Sorry, I couldn't find any host by that name. (#4.1.2)\n"); zerodie();
129
- # qmail-remote.c:78| Sorry, I couldn't find any host named ");
130
- hostunknown: %r/\ASorry[,][ ]I[ ]couldn[']t[ ]find[ ]any[ ]host[ ]/x,
131
- systemerror: %r{(?>
132
- bad[ ]interpreter:[ ]No[ ]such[ ]file[ ]or[ ]directory
133
- |system[ ]error
134
- |Unable[ ]to\b
135
- )
136
- }x,
137
- networkerror: %r{Sorry(?:
138
- [,][ ]I[ ]wasn[']t[ ]able[ ]to[ ]establish[ ]an[ ]SMTP[ ]connection
139
- |[,][ ]I[ ]couldn[']t[ ]find[ ]a[ ]mail[ ]exchanger[ ]or[ ]IP[ ]address
140
- |[.][ ]Although[ ]I[']m[ ]listed[ ]as[ ]a[ ]best[-]preference[ ]MX[ ]or[ ]A[ ]for[ ]that[ ]host
141
- )
142
- }x,
143
- systemfull: %r/Requested action not taken: mailbox unavailable [(]not enough free space[)]/,
144
- }
145
- # qmail-send.c:922| ... (&dline[c],"I'm not going to try again; this message has been in the queue too long.\n")) nomem();
146
- ReDelayed = %r/this[ ]message[ ]has[ ]been[ ]in[ ]the[ ]queue[ ]too[ ]long[.]\z/x
147
- Indicators = Sisimai::MTA.INDICATORS
148
-
149
- def description; return 'Unknown MTA #4'; end
150
- def smtpagent; return Sisimai::MTA.smtpagent(self); end
151
- def headerlist; return []; end
152
- def pattern; return Re0; end
153
-
154
- # Parse bounce messages from Unknown MTA #4
155
- # @param [Hash] mhead Message header of a bounce email
156
- # @options mhead [String] from From header
157
- # @options mhead [String] date Date header
158
- # @options mhead [String] subject Subject header
159
- # @options mhead [Array] received Received headers
160
- # @options mhead [String] others Other required headers
161
- # @param [String] mbody Message body of a bounce email
162
- # @return [Hash, Nil] Bounce data list and message/rfc822
163
- # part or nil if it failed to parse or
164
- # the arguments are missing
165
- def scan(mhead, mbody)
166
- return nil unless mhead
167
- return nil unless mbody
168
-
169
- # Pre process email headers and the body part of the message which generated
170
- # by qmail, see http://cr.yp.to/qmail.html
171
- # e.g.) Received: (qmail 12345 invoked for bounce); 29 Apr 2009 12:34:56 -0000
172
- # Subject: failure notice
173
- match = 0
174
- match += 1 if mhead['subject'] =~ Re0[:subject]
175
- match += 1 if mhead['received'].find { |a| a =~ Re0[:received] }
176
- return nil if match.zero?
177
-
178
- dscontents = [Sisimai::MTA.DELIVERYSTATUS]
179
- hasdivided = mbody.split("\n")
180
- rfc822list = [] # (Array) Each line in message/rfc822 part string
181
- blanklines = 0 # (Integer) The number of blank lines
182
- readcursor = 0 # (Integer) Points the current cursor position
183
- recipients = 0 # (Integer) The number of 'Final-Recipient' header
184
- v = nil
185
-
186
- hasdivided.each do |e|
187
- if readcursor.zero?
188
- # Beginning of the bounce message or delivery status part
189
- if e =~ Re1[:begin]
190
- readcursor |= Indicators[:deliverystatus]
191
- next
192
- end
193
- end
194
-
195
- if readcursor & Indicators[:'message-rfc822'] == 0
196
- # Beginning of the original message part
197
- if e =~ Re1[:rfc822]
198
- readcursor |= Indicators[:'message-rfc822']
199
- next
200
- end
201
- end
202
-
203
- if readcursor & Indicators[:'message-rfc822'] > 0
204
- # After "message/rfc822"
205
- if e.empty?
206
- blanklines += 1
207
- break if blanklines > 1
208
- next
209
- end
210
- rfc822list << e
211
-
212
- else
213
- # Before "message/rfc822"
214
- next if readcursor & Indicators[:deliverystatus] == 0
215
- next if e.empty?
216
-
217
- # <kijitora@example.jp>:
218
- # 192.0.2.153 does not like recipient.
219
- # Remote host said: 550 5.1.1 <kijitora@example.jp>... User Unknown
220
- # Giving up on 192.0.2.153.
221
- v = dscontents[-1]
222
-
223
- if cv = e.match(/\A(?:To[ ]*:)?[<](.+[@].+)[>]:[ ]*\z/)
224
- # <kijitora@example.jp>:
225
- if v['recipient']
226
- # There are multiple recipient addresses in the message body.
227
- dscontents << Sisimai::MTA.DELIVERYSTATUS
228
- v = dscontents[-1]
229
- end
230
- v['recipient'] = cv[1]
231
- recipients += 1
232
-
233
- elsif dscontents.size == recipients
234
- # Append error message
235
- next if e.empty?
236
- v['diagnosis'] ||= ''
237
- v['diagnosis'] += e + ' '
238
- v['alterrors'] = e if e =~ Re1[:error]
239
-
240
- next if v['rhost']
241
- if cv = e.match(ReHost)
242
- v['rhost'] = cv[1]
243
- end
244
- end
245
- end
246
- end
247
- return nil if recipients.zero?
248
- require 'sisimai/string'
249
-
250
- dscontents.map do |e|
251
- e['agent'] = Sisimai::MTA::X4.smtpagent
252
- e['diagnosis'] = Sisimai::String.sweep(e['diagnosis'])
253
-
254
- unless e['command']
255
- # Get the SMTP command name for the session
256
- ReSMTP.each_key do |r|
257
- # Verify each regular expression of SMTP commands
258
- next unless e['diagnosis'] =~ ReSMTP[r]
259
- e['command'] = r.to_s.upcase
260
- break
261
- end
262
-
263
- unless e['command']
264
- # Verify each regular expression of patches
265
- if cv = e['diagnosis'].match(ReCommand)
266
- e['command'] = cv[1].upcase
267
- end
268
- e['command'] ||= ''
269
- end
270
- end
271
-
272
- # Detect the reason of bounce
273
- if e['command'] == 'MAIL'
274
- # MAIL | Connected to 192.0.2.135 but sender was rejected.
275
- e['reason'] = 'rejected'
276
-
277
- elsif e['command'] =~ /\A(?:HELO|EHLO)\z/
278
- # HELO | Connected to 192.0.2.135 but my name was rejected.
279
- e['reason'] = 'blocked'
280
-
281
- else
282
- # Try to match with each error message in the table
283
- if e['diagnosis'] =~ ReOnHold
284
- # To decide the reason require pattern match with
285
- # Sisimai::Reason::* modules
286
- e['reason'] = 'onhold'
287
-
288
- else
289
- ReFailure.each_key do |r|
290
- # Verify each regular expression of session errors
291
- if e['alterrors']
292
- # Check the value of "alterrors"
293
- next unless e['alterrors'] =~ ReFailure[r]
294
- e['reason'] = r.to_s
295
- end
296
- break if e['reason']
297
-
298
- next unless e['diagnosis'] =~ ReFailure[r]
299
- e['reason'] = r.to_s
300
- break
301
- end
302
-
303
- unless e['reason']
304
- ReLDAP.each_key do |r|
305
- # Verify each regular expression of LDAP errors
306
- next unless e['diagnosis'] =~ ReLDAP[r]
307
- e['reason'] = r.to_s
308
- break
309
- end
310
- end
311
-
312
- unless e['reason']
313
- e['reason'] = 'expired' if e['diagnosis'] =~ ReDelayed
314
- end
315
- end
316
- end
317
- e.each_key { |a| e[a] ||= '' }
318
- end
319
-
320
- rfc822part = Sisimai::RFC5322.weedout(rfc822list)
321
- return { 'ds' => dscontents, 'rfc822' => rfc822part }
322
- end
323
-
324
- end
325
- end
326
- end
327
- end
328
-