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,182 +0,0 @@
1
- module Sisimai
2
- module MTA
3
- # Sisimai::MTA::Exchange2007 parses a bounce email which created by Microsoft
4
- # Exchange Server 2007.
5
- # Methods in the module are called from only Sisimai::Message.
6
- module Exchange2007
7
- # Imported from p5-Sisimail/lib/Sisimai/MTA/Exchange2007.pm
8
- class << self
9
- require 'sisimai/mta'
10
- require 'sisimai/rfc5322'
11
-
12
- Re0 = {
13
- :'subject' => %r/\AUndeliverable:/,
14
- :'content-language' => %r/\A[a-z]{2}(?:[-][A-Z]{2})?\z/,
15
- }
16
- Re1 = {
17
- :begin => %r/[ ]Microsoft[ ]Exchange[ ]Server[ ]20\d{2}/,
18
- :error => %r/[ ]((?:RESOLVER|QUEUE)[.][A-Za-z]+(?:[.]\w+)?);/,
19
- :rhost => %r/\AGenerating[ ]server:[ ]?(.*)/,
20
- :rfc822 => %r/\AOriginal message headers:/,
21
- :endof => %r/\A__END_OF_EMAIL_MESSAGE__\z/,
22
- }
23
- NDRSubject = {
24
- :'SMTPSEND.DNS.NonExistentDomain'=> 'hostunknown', # 554 5.4.4 SMTPSEND.DNS.NonExistentDomain
25
- :'SMTPSEND.DNS.MxLoopback' => 'networkerror', # 554 5.4.4 SMTPSEND.DNS.MxLoopback
26
- :'RESOLVER.ADR.BadPrimary' => 'systemerror', # 550 5.2.0 RESOLVER.ADR.BadPrimary
27
- :'RESOLVER.ADR.RecipNotFound' => 'userunknown', # 550 5.1.1 RESOLVER.ADR.RecipNotFound
28
- :'RESOLVER.ADR.ExRecipNotFound' => 'userunknown', # 550 5.1.1 RESOLVER.ADR.ExRecipNotFound
29
- :'RESOLVER.ADR.RecipLimit' => 'toomanyconn', # 550 5.5.3 RESOLVER.ADR.RecipLimit
30
- :'RESOLVER.ADR.InvalidInSmtp' => 'systemerror', # 550 5.1.0 RESOLVER.ADR.InvalidInSmtp
31
- :'RESOLVER.ADR.Ambiguous' => 'systemerror', # 550 5.1.4 RESOLVER.ADR.Ambiguous, 420 4.2.0 RESOLVER.ADR.Ambiguous
32
- :'RESOLVER.RST.AuthRequired' => 'filtered', # 550 5.7.1 RESOLVER.RST.AuthRequired
33
- :'RESOLVER.RST.NotAuthorized' => 'rejected', # 550 5.7.1 RESOLVER.RST.NotAuthorized
34
- :'RESOLVER.RST.RecipSizeLimit' => 'mesgtoobig', # 550 5.2.3 RESOLVER.RST.RecipSizeLimit
35
- :'QUEUE.Expired' => 'expired', # 550 4.4.7 QUEUE.Expired
36
- }
37
- Indicators = Sisimai::MTA.INDICATORS
38
-
39
- def description; return 'Microsoft Exchange Server 2007'; end
40
- def smtpagent; return Sisimai::MTA.smtpagent(self); end
41
- def headerlist; return ['Content-Language']; end
42
- def pattern; return Re0; end
43
-
44
- # Parse bounce messages from Microsoft Exchange Server 2007
45
- # @param [Hash] mhead Message header of a bounce email
46
- # @options mhead [String] from From header
47
- # @options mhead [String] date Date header
48
- # @options mhead [String] subject Subject header
49
- # @options mhead [Array] received Received headers
50
- # @options mhead [String] others Other required headers
51
- # @param [String] mbody Message body of a bounce email
52
- # @return [Hash, Nil] Bounce data list and message/rfc822
53
- # part or nil if it failed to parse or
54
- # the arguments are missing
55
- def scan(mhead, mbody)
56
- return nil unless mhead
57
- return nil unless mbody
58
-
59
- return nil unless mhead['subject'] =~ Re0[:'subject']
60
- return nil unless mhead['content-language']
61
- return nil unless mhead['content-language'] =~ Re0[:'content-language']
62
-
63
- dscontents = [Sisimai::MTA.DELIVERYSTATUS]
64
- hasdivided = mbody.split("\n")
65
- rfc822list = [] # (Array) Each line in message/rfc822 part string
66
- blanklines = 0 # (Integer) The number of blank lines
67
- readcursor = 0 # (Integer) Points the current cursor position
68
- recipients = 0 # (Integer) The number of 'Final-Recipient' header
69
- connvalues = 0 # (Integer) Flag, 1 if all the value of $connheader have been set
70
- connheader = {
71
- 'rhost' => '', # The value of Reporting-MTA header or "Generating Server:"
72
- }
73
- v = nil
74
-
75
- hasdivided.each do |e|
76
- if readcursor.zero?
77
- # Beginning of the bounce message or delivery status part
78
- if e =~ Re1[:begin]
79
- readcursor |= Indicators[:deliverystatus]
80
- next
81
- end
82
- end
83
-
84
- if readcursor & Indicators[:'message-rfc822'] == 0
85
- # Beginning of the original message part
86
- if e =~ Re1[:rfc822]
87
- readcursor |= Indicators[:'message-rfc822']
88
- next
89
- end
90
- end
91
-
92
- if readcursor & Indicators[:'message-rfc822'] > 0
93
- # After "message/rfc822"
94
- if e.empty?
95
- blanklines += 1
96
- break if blanklines > 1
97
- next
98
- end
99
- rfc822list << e
100
-
101
- else
102
- # Before "message/rfc822"
103
- next if readcursor & Indicators[:deliverystatus] == 0
104
-
105
- if connvalues == connheader.keys.size
106
- # Diagnostic information for administrators:
107
- #
108
- # Generating server: mta2.neko.example.jp
109
- #
110
- # kijitora@example.jp
111
- # #550 5.1.1 RESOLVER.ADR.RecipNotFound; not found ##
112
- #
113
- # Original message headers:
114
- v = dscontents[-1]
115
-
116
- if cv = e.match(/\A([^ @]+[@][^ @]+)\z/)
117
- # kijitora@example.jp
118
- if v['recipient']
119
- # There are multiple recipient addresses in the message body.
120
- dscontents << Sisimai::MTA.DELIVERYSTATUS
121
- v = dscontents[-1]
122
- end
123
- v['recipient'] = cv[1]
124
- v['diagnosis'] = ''
125
- recipients += 1
126
-
127
- elsif cv = e.match(/\A[#]([45]\d{2})[ ]([45][.]\d[.]\d+)[ ].+\z/)
128
- # #550 5.1.1 RESOLVER.ADR.RecipNotFound; not found ##
129
- # #550 5.2.3 RESOLVER.RST.RecipSizeLimit; message too large for this recipien=
130
- # t ##
131
- v['replycode'] = cv[1]
132
- v['status'] = cv[2]
133
- v['diagnosis'] = e
134
-
135
- else
136
- if v['diagnosis'].to_s.size > 0 && v['diagnosis'] =~ /=\z/
137
- # Continued line of error messages
138
- v['diagnosis'] = v['diagnosis'].sub(/=\z/, '')
139
- v['diagnosis'] += e
140
- end
141
- end
142
- else
143
- # Diagnostic information for administrators:
144
- #
145
- # Generating server: mta22.neko.example.org
146
- if cv = e.match(Re1[:rhost])
147
- # Generating server: mta22.neko.example.org
148
- next if connheader['rhost'].size > 0
149
- connheader['rhost'] = cv[1]
150
- connvalues += 1
151
- end
152
- end
153
- end
154
- end
155
- return nil if recipients.zero?
156
-
157
- require 'sisimai/string'
158
- dscontents.map do |e|
159
- if cv = e['diagnosis'].match(Re1[:error])
160
- # #550 5.1.1 RESOLVER.ADR.RecipNotFound; not found ##
161
- f = cv[1]
162
- NDRSubject.each_key do |r|
163
- # Try to match with error subject strings
164
- next unless f == r.to_s
165
- e['reason'] = NDRSubject[r]
166
- break
167
- end
168
- end
169
- e['diagnosis'] = Sisimai::String.sweep(e['diagnosis'])
170
- e['agent'] = Sisimai::MTA::Exchange2007.smtpagent
171
- end
172
-
173
- rfc822part = Sisimai::RFC5322.weedout(rfc822list)
174
- return { 'ds' => dscontents, 'rfc822' => rfc822part }
175
- end
176
-
177
- end
178
- end
179
- end
180
- end
181
-
182
-
@@ -1,525 +0,0 @@
1
- module Sisimai
2
- module MTA
3
- # Sisimai::MTA::Exim parses a bounce email which created by Exim. Methods in
4
- # the module are called from only Sisimai::Message.
5
- module Exim
6
- # Imported from p5-Sisimail/lib/Sisimai/MTA/Exim.pm
7
- class << self
8
- require 'sisimai/mta'
9
- require 'sisimai/rfc5322'
10
-
11
- ReE = {
12
- :from => %r/[@].+[.]mail[.]ru[>]?/,
13
- }
14
- Re0 = {
15
- :from => %r/\AMail Delivery System/,
16
- :subject => %r{(?:
17
- Mail[ ]delivery[ ]failed(:[ ]returning[ ]message[ ]to[ ]sender)?
18
- |Warning:[ ]message[ ].+[ ]delayed[ ]+
19
- |Delivery[ ]Status[ ]Notification
20
- |Mail[ ]failure
21
- |Message[ ]frozen
22
- |error[(]s[)][ ]in[ ]forwarding[ ]or[ ]filtering
23
- )
24
- }x,
25
- # :'message-id' => %r/\A[<]\w+[-]\w+[-]\w+[@].+\z/,
26
- # Message-Id: <E1P1YNN-0003AD-Ga@example.org>
27
- }
28
-
29
- # Error text regular expressions which defined in exim/src/deliver.c
30
- #
31
- # deliver.c:6292| fprintf(f,
32
- # deliver.c:6293|"This message was created automatically by mail delivery software.\n");
33
- # deliver.c:6294| if (to_sender)
34
- # deliver.c:6295| {
35
- # deliver.c:6296| fprintf(f,
36
- # deliver.c:6297|"\nA message that you sent could not be delivered to one or more of its\n"
37
- # deliver.c:6298|"recipients. This is a permanent error. The following address(es) failed:\n");
38
- # deliver.c:6299| }
39
- # deliver.c:6300| else
40
- # deliver.c:6301| {
41
- # deliver.c:6302| fprintf(f,
42
- # deliver.c:6303|"\nA message sent by\n\n <%s>\n\n"
43
- # deliver.c:6304|"could not be delivered to one or more of its recipients. The following\n"
44
- # deliver.c:6305|"address(es) failed:\n", sender_address);
45
- # deliver.c:6306| }
46
- #
47
- # deliver.c:6423| if (bounce_return_body) fprintf(f,
48
- # deliver.c:6424|"------ This is a copy of the message, including all the headers. ------\n");
49
- # deliver.c:6425| else fprintf(f,
50
- # deliver.c:6426|"------ This is a copy of the message's headers. ------\n");
51
- Re1 = {
52
- :alias => %r/\A([ ]+an[ ]undisclosed[ ]address)\z/,
53
- :frozen => %r/\AMessage .+ (?:has been frozen|was frozen on arrival)/,
54
- :rfc822 => %r{\A(?:
55
- [-]+[ ]This[ ]is[ ]a[ ]copy[ ]of[ ]the[ ]message.+headers[.][ ][-]+
56
- |Content-Type:[ ]*message/rfc822
57
- )\z
58
- }x,
59
- :begin => %r{\A(?>
60
- This[ ]message[ ]was[ ]created[ ]automatically[ ]by[ ]mail[ ]delivery[ ]software[.]
61
- |A[ ]message[ ]that[ ]you[ ]sent[ ]was[ ]rejected[ ]by[ ]the[ ]local[ ]scanning[ ]code
62
- |Message[ ].+[ ](?:has[ ]been[ ]frozen|was[ ]frozen[ ]on[ ]arrival)
63
- |The[ ].+[ ]router[ ]encountered[ ]the[ ]following[ ]error[(]s[)]:
64
- )
65
- }x,
66
- :deliverystatus => %r|\AContent-type: message/delivery-status|,
67
- :endof => %r/\A__END_OF_EMAIL_MESSAGE__\z/,
68
- }
69
-
70
- ReCommand = [
71
- # transports/smtp.c:564| *message = US string_sprintf("SMTP error from remote mail server after %s%s: "
72
- # transports/smtp.c:837| string_sprintf("SMTP error from remote mail server after RCPT TO:<%s>: "
73
- %r/SMTP error from remote (?:mail server|mailer) after ([A-Za-z]{4})/,
74
- %r/SMTP error from remote (?:mail server|mailer) after end of ([A-Za-z]{4})/,
75
- %r/LMTP error after ([A-Za-z]{4})/,
76
- %r/LMTP error after end of ([A-Za-z]{4})/,
77
- ]
78
-
79
- # find exim/ -type f -exec grep 'message = US' {} /dev/null \;
80
- ReFailure = {
81
- # route.c:1158| DEBUG(D_uid) debug_printf("getpwnam() returned NULL (user not found)\n");
82
- userunknown: %r/user[ ]not[ ]found/x,
83
- # transports/smtp.c:3524| addr->message = US"all host address lookups failed permanently";
84
- # routers/dnslookup.c:331| addr->message = US"all relevant MX records point to non-existent hosts";
85
- # route.c:1826| uschar *message = US"Unrouteable address";
86
- hostunknown: %r{(?>
87
- all[ ](?:
88
- host[ ]address[ ]lookups[ ]failed[ ]permanently
89
- |relevant[ ]MX[ ]records[ ]point[ ]to[ ]non[-]existent[ ]hosts
90
- )
91
- |Unrouteable[ ]address
92
- )
93
- }x,
94
- # transports/appendfile.c:2567| addr->user_message = US"mailbox is full";
95
- # transports/appendfile.c:3049| addr->message = string_sprintf("mailbox is full "
96
- # transports/appendfile.c:3050| "(quota exceeded while writing to file %s)", filename);
97
- mailboxfull: %r/(?:mailbox[ ]is[ ]full:?|error:[ ]quota[ ]exceed)/x,
98
- # routers/dnslookup.c:328| addr->message = US"an MX or SRV record indicated no SMTP service";
99
- # transports/smtp.c:3502| addr->message = US"no host found for existing SMTP connection";
100
- notaccept: %r{(?:
101
- an[ ]MX[ ]or[ ]SRV[ ]record[ ]indicated[ ]no[ ]SMTP[ ]service
102
- |no[ ]host[ ]found[ ]for[ ]existing[ ]SMTP[ ]connection
103
- )
104
- }x,
105
- # deliver.c:5614| addr->message = US"delivery to file forbidden";
106
- # deliver.c:5624| addr->message = US"delivery to pipe forbidden";
107
- # transports/pipe.c:1156| addr->user_message = US"local delivery failed";
108
- systemerror: %r{(?>
109
- delivery[ ]to[ ](?:file|pipe)[ ]forbidden
110
- |local[ ]delivery[ ]failed
111
- |LMTP[ ]error[ ]after[ ]
112
- )
113
- }x,
114
- # deliver.c:5425| new->message = US"Too many \"Received\" headers - suspected mail loop";
115
- contenterror: %r/Too[ ]many[ ]["]Received["][ ]headers/x,
116
- }
117
-
118
- # retry.c:902| addr->message = (addr->message == NULL)? US"retry timeout exceeded" :
119
- # deliver.c:7475| "No action is required on your part. Delivery attempts will continue for\n"
120
- # smtp.c:3508| US"retry time not reached for any host after a long failure period" :
121
- # smtp.c:3508| US"all hosts have been failing for a long time and were last tried "
122
- # "after this message arrived";
123
- # deliver.c:7459| print_address_error(addr, f, US"Delay reason: ");
124
- # deliver.c:7586| "Message %s has been frozen%s.\nThe sender is <%s>.\n", message_id,
125
- # receive.c:4021| moan_tell_someone(freeze_tell, NULL, US"Message frozen on arrival",
126
- # receive.c:4022| "Message %s was frozen on arrival by %s.\nThe sender is <%s>.\n",
127
- ReDelayed = %r{(?:
128
- retry[ ]timeout[ ]exceeded
129
- |No[ ]action[ ]is[ ]required[ ]on[ ]your[ ]part
130
- |retry[ ]time[ ]not[ ]reached[ ]for[ ]any[ ]host[ ]after[ ]a[ ]long[ ]failure[ ]period
131
- |all[ ]hosts[ ]have[ ]been[ ]failing[ ]for[ ]a[ ]long[ ]time[ ]and[ ]were[ ]last[ ]tried
132
- |Delay[ ]reason:[ ]
133
- |Message[ ].+[ ](?:has[ ]been[ ]frozen|was[ ]frozen[ ]on[ ]arrival[ ]by[ ])
134
- )
135
- }x
136
- Indicators = Sisimai::MTA.INDICATORS
137
-
138
- def description; return 'Exim'; end
139
- def smtpagent; return Sisimai::MTA.smtpagent(self); end
140
- def headerlist; return ['X-Failed-Recipients']; end
141
- def pattern; return Re0; end
142
-
143
- # Parse bounce messages from Exim
144
- # @param [Hash] mhead Message header of a bounce email
145
- # @options mhead [String] from From header
146
- # @options mhead [String] date Date header
147
- # @options mhead [String] subject Subject header
148
- # @options mhead [Array] received Received headers
149
- # @options mhead [String] others Other required headers
150
- # @param [String] mbody Message body of a bounce email
151
- # @return [Hash, Nil] Bounce data list and message/rfc822
152
- # part or nil if it failed to parse or
153
- # the arguments are missing
154
- def scan(mhead, mbody)
155
- return nil unless mhead
156
- return nil unless mbody
157
- return nil if mhead['from'] =~ ReE[:from]
158
- return nil unless mhead['from'] =~ Re0[:from]
159
- return nil unless mhead['subject'] =~ Re0[:subject]
160
-
161
- dscontents = [Sisimai::MTA.DELIVERYSTATUS]
162
- hasdivided = mbody.split("\n")
163
- rfc822list = [] # (Array) Each line in message/rfc822 part string
164
- blanklines = 0 # (Integer) The number of blank lines
165
- readcursor = 0 # (Integer) Points the current cursor position
166
- recipients = 0 # (Integer) The number of 'Final-Recipient' header
167
- localhost0 = '' # (String) Local MTA
168
- boundary00 = '' # (String) Boundary string
169
- havepassed = {
170
- :deliverystatus => 0
171
- }
172
- v = nil
173
-
174
- if mhead['content-type']
175
- # Get the boundary string and set regular expression for matching with
176
- # the boundary string.
177
- require 'sisimai/mime'
178
- boundary00 = Sisimai::MIME.boundary(mhead['content-type']) || ''
179
- end
180
-
181
- hasdivided.each do |e|
182
- break if e =~ Re1[:endof]
183
-
184
- if readcursor.zero?
185
- # Beginning of the bounce message or delivery status part
186
- if e =~ Re1[:begin]
187
- readcursor |= Indicators[:deliverystatus]
188
- next unless e =~ Re1[:frozen]
189
- end
190
- end
191
-
192
- if readcursor & Indicators[:'message-rfc822'] == 0
193
- # Beginning of the original message part
194
- if e =~ Re1[:rfc822]
195
- readcursor |= Indicators[:'message-rfc822']
196
- next
197
- end
198
- end
199
-
200
- if readcursor & Indicators[:'message-rfc822'] > 0
201
- # After "message/rfc822"
202
- if e.empty?
203
- blanklines += 1
204
- break if blanklines > 1
205
- next
206
- end
207
- rfc822list << e
208
-
209
- else
210
- # Before "message/rfc822"
211
- next if readcursor & Indicators[:deliverystatus] == 0
212
- next if e.empty?
213
-
214
- # This message was created automatically by mail delivery software.
215
- #
216
- # A message that you sent could not be delivered to one or more of its
217
- # recipients. This is a permanent error. The following address(es) failed:
218
- #
219
- # kijitora@example.jp
220
- # SMTP error from remote mail server after RCPT TO:<kijitora@example.jp>:
221
- # host neko.example.jp [192.0.2.222]: 550 5.1.1 <kijitora@example.jp>... User Unknown
222
- v = dscontents[-1]
223
-
224
- if cv = e.match(/\A[ ][ ]+([^ \t]+[@][^ \t]+[.][a-zA-Z]+)(:.+)?\z/) || e.match(Re1[:alias])
225
- # kijitora@example.jp
226
- # sabineko@example.jp: forced freeze
227
- #
228
- # deliver.c:4549| printed = US"an undisclosed address";
229
- # an undisclosed address
230
- # (generated from kijitora@example.jp)
231
- if v['recipient']
232
- # There are multiple recipient addresses in the message body.
233
- dscontents << Sisimai::MTA.DELIVERYSTATUS
234
- v = dscontents[-1]
235
- end
236
- v['recipient'] = cv[1]
237
- recipients += 1
238
-
239
- elsif cv = e.match(/\A[ ]+[(]generated[ ]from[ ](.+)[)]\z/) ||
240
- e.match(/\A[ ]+generated[ ]by[ ]([^ \t]+[@][^ \t]+)/)
241
- # (generated from kijitora@example.jp)
242
- # pipe to |/bin/echo "Some pipe output"
243
- # generated by userx@myhost.test.ex
244
- v['alias'] = cv[1]
245
-
246
- else
247
- next if e.empty?
248
-
249
- if e =~ Re1[:frozen]
250
- # Message *** has been frozen by the system filter.
251
- # Message *** was frozen on arrival by ACL.
252
- v['alterrors'] ||= ''
253
- v['alterrors'] += e + ' '
254
-
255
- else
256
- if boundary00.size > 0
257
- # --NNNNNNNNNN-eximdsn-MMMMMMMMMM
258
- # Content-type: message/delivery-status
259
- # ...
260
- if cv = e.match(/\A[Rr]eporting-MTA:[ ]*(?:DNS|dns);[ ]*(.+)\z/)
261
- # Reporting-MTA: dns; mx.example.jp
262
- v['lhost'] = cv[1]
263
-
264
- elsif cv = e.match(/\A[Aa]ction:[ ]*(.+)\z/)
265
- # Action: failed
266
- v['action'] = cv[1].downcase
267
-
268
- elsif cv = e.match(/\A[Ss]tatus:[ ]*(\d[.]\d+[.]\d+)/)
269
- # Status: 5.0.0
270
- v['status'] = cv[1]
271
-
272
- elsif cv = e.match(/\A[Dd]iagnostic-[Cc]ode:[ ]*(.+?);[ ]*(.+)\z/)
273
- # Diagnostic-Code: SMTP; 550 5.1.1 <userunknown@example.jp>... User Unknown
274
- v['spec'] = cv[1].upcase
275
- v['diagnosis'] = cv[2]
276
-
277
- elsif cv = e.match(/\A[Ff]inal-[Rr]ecipient:[ ]*(?:RFC|rfc)822;[ ]*(.+)\z/)
278
- # Final-Recipient: rfc822;|/bin/echo "Some pipe output"
279
- v['spec'] ||= cv[1] =~ /[@]/ ? 'SMTP' : 'X-UNIX'
280
-
281
- else
282
- # Error message ?
283
- if havepassed[:deliverystatus].zero?
284
- # Content-type: message/delivery-status
285
- havepassed[:deliverystatus] = 1 if e =~ Re1[:deliverystatus]
286
- v['alterrors'] ||= ''
287
- v['alterrors'] += e + ' ' if e =~ /\A[ ]+/
288
- end
289
- end
290
- else
291
- if dscontents.size == recipients
292
- # Error message
293
- next unless e.size
294
- v['diagnosis'] ||= ''
295
- v['diagnosis'] += e + ' '
296
-
297
- else
298
- # Error message when email address above does not include '@'
299
- # and domain part.
300
- next unless e =~ /\A[ ]{4}/
301
- v['alterrors'] ||= ''
302
- v['alterrors'] += e + ' '
303
- end
304
- end
305
- end
306
- end
307
- end
308
- end
309
-
310
- if recipients > 0
311
- # Check "an undisclosed address", "unroutable address"
312
- dscontents.map do |q|
313
- # Replace the recipient address with the value of "alias"
314
- next unless q['alias']
315
- next unless q['alias'].size > 0
316
- if q['recipient'].empty? || q['recipient'] !~ /[@]/
317
- # The value of "recipient" is empty or does not include "@"
318
- q['recipient'] = q['alias']
319
- end
320
- end
321
-
322
- else
323
- # Fallback for getting recipient addresses
324
- if mhead['x-failed-recipients']
325
- # X-Failed-Recipients: kijitora@example.jp
326
- rcptinhead = mhead['x-failed-recipients'].split(',')
327
- rcptinhead.each do |a|
328
- # Remove space characters
329
- a.lstrip!
330
- a.rstrip!
331
- end
332
- recipients = rcptinhead.size
333
-
334
- rcptinhead.each do |e|
335
- # Insert each recipient address into @$dscontents
336
- dscontents[-1]['recipient'] = e
337
- next if dscontents.size == recipients
338
- dscontents << Sisimai::MTA.DELIVERYSTATUS
339
- end
340
- end
341
- end
342
- return nil if recipients.zero?
343
-
344
- if mhead['received'].size > 0
345
- # Get the name of local MTA
346
- # Received: from marutamachi.example.org (c192128.example.net [192.0.2.128])
347
- if cv = mhead['received'][-1].match(/from[ \t]([^ ]+)/)
348
- localhost0 = cv[1]
349
- end
350
- end
351
-
352
- require 'sisimai/string'
353
- require 'sisimai/smtp/reply'
354
- require 'sisimai/smtp/status'
355
-
356
- dscontents.map do |e|
357
- # Set default values if each value is empty.
358
- e['agent'] = Sisimai::MTA::Exim.smtpagent
359
- e['lhost'] ||= localhost0
360
-
361
- unless e['diagnosis']
362
- # Empty Diagnostic-Code: or error message
363
- if boundary00.size > 0
364
- # --NNNNNNNNNN-eximdsn-MMMMMMMMMM
365
- # Content-type: message/delivery-status
366
- #
367
- # Reporting-MTA: dns; the.local.host.name
368
- #
369
- # Action: failed
370
- # Final-Recipient: rfc822;/a/b/c
371
- # Status: 5.0.0
372
- #
373
- # Action: failed
374
- # Final-Recipient: rfc822;|/p/q/r
375
- # Status: 5.0.0
376
- e['diagnosis'] = dscontents[0]['diagnosis'] || ''
377
- e['spec'] ||= dscontents[0]['spec']
378
-
379
- if dscontents[0]['alterrors'] && dscontents[0]['alterrors'].size > 0
380
- # The value of "alterrors" is also copied
381
- e['alterrors'] = dscontents[0]['alterrors']
382
- end
383
- end
384
- end
385
-
386
- if e['alterrors'] && e['alterrors'].size > 0
387
- # Copy alternative error message
388
- if e['diagnosis'].nil? || e['diagnosis'].empty?
389
- e['diagnosis'] ||= e['alterrors']
390
- end
391
-
392
- if e['diagnosis'] =~ /\A[-]+/ || e['diagnosis'] =~ /__\z/
393
- # Override the value of diagnostic code message
394
- e['diagnosis'] = e['alterrors'] if e['alterrors'].size > 0
395
-
396
- else
397
- # Check the both value and try to match
398
- if e['diagnosis'].size < e['alterrors'].size
399
- # Check the value of alterrors
400
- rxdiagnosis = %r/#{e['diagnosis']}/i
401
- if e['alterrors'] =~ rxdiagnosis
402
- # Override the value of diagnostic code message because
403
- # the value of alterrors includes the value of diagnosis.
404
- e['diagnosis'] = e['alterrors']
405
- end
406
- end
407
- end
408
- e.delete('alterrors')
409
- end
410
- e['diagnosis'] = Sisimai::String.sweep(e['diagnosis']) || ''
411
- e['diagnosis'] = e['diagnosis'].sub(/\b__.+\z/, '')
412
-
413
- unless e['rhost']
414
- # Get the remote host name
415
- if cv = e['diagnosis'].match(/host[ \t]+([^ \t]+)[ \t]\[.+\]:[ \t]/)
416
- # host neko.example.jp [192.0.2.222]: 550 5.1.1 <kijitora@example.jp>... User Unknown
417
- e['rhost'] = cv[1]
418
- end
419
-
420
- unless e['rhost']
421
- if mhead['received'].size > 0
422
- # Get localhost and remote host name from Received header.
423
- e['rhost'] = Sisimai::RFC5322.received(mhead['received'][-1]).pop
424
- end
425
- end
426
- end
427
-
428
- unless e['command']
429
- # Get the SMTP command name for the session
430
- ReCommand.each do |r|
431
- # Verify each regular expression of SMTP commands
432
- if cv = e['diagnosis'].match(r)
433
- e['command'] = cv[1].upcase
434
- break
435
- end
436
- end
437
-
438
- # Detect the reason of bounce
439
- if e['command'] =~ /\A(?:HELO|EHLO)\z/
440
- # HELO | Connected to 192.0.2.135 but my name was rejected.
441
- e['reason'] = 'blocked'
442
-
443
- elsif e['command'] == 'MAIL'
444
- # MAIL | Connected to 192.0.2.135 but sender was rejected.
445
- e['reason'] = 'onhold'
446
-
447
- else
448
- # Verify each regular expression of session errors
449
- ReFailure.each_key do |r|
450
- # Check each regular expression
451
- next unless e['diagnosis'] =~ ReFailure[r]
452
- e['reason'] = r.to_s
453
- break
454
- end
455
-
456
- unless e['reason']
457
- # The reason "expired"
458
- e['reason'] = 'expired' if e['diagnosis'] =~ ReDelayed
459
- end
460
- end
461
- end
462
-
463
- # Prefer the value of smtp reply code in Diagnostic-Code:
464
- # See eg/maildir-as-a-sample/new/exim-20.eml
465
- # Action: failed
466
- # Final-Recipient: rfc822;userx@test.ex
467
- # Status: 5.0.0
468
- # Remote-MTA: dns; 127.0.0.1
469
- # Diagnostic-Code: smtp; 450 TEMPERROR: retry timeout exceeded
470
- # The value of "Status:" indicates permanent error but the value
471
- # of SMTP reply code in Diagnostic-Code: field is "TEMPERROR"!!!!
472
- sv = Sisimai::SMTP::Status.find(e['diagnosis'])
473
- rv = Sisimai::SMTP::Reply.find(e['diagnosis'])
474
- s1 = 0 # First character of Status as integer
475
- r1 = 0 # First character of SMTP reply code as integer
476
-
477
- # "Status:" field did not exist in the bounce message
478
- if sv.empty?
479
- # Check SMTP reply code
480
- if rv.size > 0
481
- # Generate pseudo DSN code from SMTP reply code
482
- r1 = rv[0, 1].to_i
483
- if r1 == 4
484
- # Get the internal DSN(temporary error)
485
- sv = Sisimai::SMTP::Status.code(e['reason'], true)
486
-
487
- elsif r1 == 5
488
- # Get the internal DSN(permanent error)
489
- sv = Sisimai::SMTP::Status.code(e['reason'], false)
490
- end
491
- end
492
- end
493
-
494
- s1 = sv[0, 1].to_i if sv.size > 0
495
- v1 = s1 + r1
496
- v1 += e['status'][0, 1].to_i if e['status']
497
-
498
- if v1 > 0
499
- # Status or SMTP reply code exists
500
- # Set pseudo DSN into the value of "status" accessor
501
- e['status'] = sv if r1 > 0
502
- else
503
- # Neither Status nor SMTP reply code exist
504
- if e['reason'] =~ /\A(?:expired|mailboxfull)/
505
- # Set pseudo DSN (temporary error)
506
- sv = Sisimai::SMTP::Status.code(e['reason'], true)
507
-
508
- else
509
- # Set pseudo DSN (permanent error)
510
- sv = Sisimai::SMTP::Status.code(e['reason'], false)
511
- end
512
- end
513
- e['status'] ||= sv
514
- e.each_key { |a| e[a] ||= '' }
515
- end
516
-
517
- rfc822part = Sisimai::RFC5322.weedout(rfc822list)
518
- return { 'ds' => dscontents, 'rfc822' => rfc822part }
519
- end
520
-
521
- end
522
- end
523
- end
524
- end
525
-