sisimai 5.0.3-java → 5.2.0-java

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (258) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/codecovio.yml +3 -1
  3. data/.github/workflows/rake-test.yml +7 -3
  4. data/ChangeLog.md +136 -0
  5. data/Makefile +4 -2
  6. data/README-JA.md +32 -22
  7. data/README.md +31 -21
  8. data/lib/sisimai/arf.rb +124 -213
  9. data/lib/sisimai/fact/json.rb +2 -2
  10. data/lib/sisimai/fact/yaml.rb +2 -2
  11. data/lib/sisimai/fact.rb +208 -173
  12. data/lib/sisimai/lda.rb +98 -0
  13. data/lib/sisimai/lhost/activehunter.rb +5 -4
  14. data/lib/sisimai/lhost/amazonses.rb +189 -305
  15. data/lib/sisimai/lhost/apachejames.rb +52 -55
  16. data/lib/sisimai/lhost/biglobe.rb +5 -6
  17. data/lib/sisimai/lhost/courier.rb +14 -12
  18. data/lib/sisimai/lhost/domino.rb +29 -29
  19. data/lib/sisimai/lhost/dragonfly.rb +113 -0
  20. data/lib/sisimai/lhost/einsundeins.rb +7 -8
  21. data/lib/sisimai/lhost/exchange2003.rb +10 -11
  22. data/lib/sisimai/lhost/exchange2007.rb +115 -104
  23. data/lib/sisimai/lhost/exim.rb +236 -246
  24. data/lib/sisimai/lhost/ezweb.rb +47 -55
  25. data/lib/sisimai/lhost/fml.rb +6 -7
  26. data/lib/sisimai/lhost/gmail.rb +36 -32
  27. data/lib/sisimai/lhost/gmx.rb +8 -20
  28. data/lib/sisimai/lhost/googlegroups.rb +13 -12
  29. data/lib/sisimai/lhost/googleworkspace.rb +94 -0
  30. data/lib/sisimai/lhost/imailserver.rb +11 -19
  31. data/lib/sisimai/lhost/interscanmss.rb +6 -5
  32. data/lib/sisimai/lhost/kddi.rb +7 -8
  33. data/lib/sisimai/lhost/mailfoundry.rb +6 -9
  34. data/lib/sisimai/lhost/mailmarshalsmtp.rb +6 -6
  35. data/lib/sisimai/lhost/messagingserver.rb +19 -17
  36. data/lib/sisimai/lhost/mfilter.rb +8 -7
  37. data/lib/sisimai/lhost/notes.rb +6 -8
  38. data/lib/sisimai/lhost/opensmtpd.rb +11 -9
  39. data/lib/sisimai/lhost/postfix.rb +29 -31
  40. data/lib/sisimai/lhost/qmail.rb +136 -112
  41. data/lib/sisimai/lhost/sendmail.rb +23 -22
  42. data/lib/sisimai/lhost/v5sendmail.rb +93 -64
  43. data/lib/sisimai/lhost/verizon.rb +6 -6
  44. data/lib/sisimai/lhost/x1.rb +4 -4
  45. data/lib/sisimai/lhost/x2.rb +4 -5
  46. data/lib/sisimai/lhost/x3.rb +5 -5
  47. data/lib/sisimai/lhost/x6.rb +4 -4
  48. data/lib/sisimai/lhost/zoho.rb +6 -6
  49. data/lib/sisimai/lhost.rb +21 -24
  50. data/lib/sisimai/mail/maildir.rb +1 -1
  51. data/lib/sisimai/mail/stdin.rb +1 -1
  52. data/lib/sisimai/message.rb +100 -153
  53. data/lib/sisimai/order.rb +22 -77
  54. data/lib/sisimai/reason/authfailure.rb +1 -4
  55. data/lib/sisimai/reason/badreputation.rb +3 -3
  56. data/lib/sisimai/reason/blocked.rb +7 -10
  57. data/lib/sisimai/reason/contenterror.rb +7 -1
  58. data/lib/sisimai/reason/exceedlimit.rb +1 -4
  59. data/lib/sisimai/reason/failedstarttls.rb +42 -0
  60. data/lib/sisimai/reason/filtered.rb +5 -4
  61. data/lib/sisimai/reason/hasmoved.rb +1 -2
  62. data/lib/sisimai/reason/hostunknown.rb +3 -3
  63. data/lib/sisimai/reason/mailboxfull.rb +2 -4
  64. data/lib/sisimai/reason/mailererror.rb +1 -2
  65. data/lib/sisimai/reason/mesgtoobig.rb +2 -4
  66. data/lib/sisimai/reason/norelaying.rb +3 -3
  67. data/lib/sisimai/reason/notaccept.rb +2 -3
  68. data/lib/sisimai/reason/notcompliantrfc.rb +10 -4
  69. data/lib/sisimai/reason/rejected.rb +2 -1
  70. data/lib/sisimai/reason/requireptr.rb +2 -2
  71. data/lib/sisimai/reason/securityerror.rb +1 -3
  72. data/lib/sisimai/reason/spamdetected.rb +6 -8
  73. data/lib/sisimai/reason/speeding.rb +1 -2
  74. data/lib/sisimai/reason/suppressed.rb +36 -0
  75. data/lib/sisimai/reason/suspend.rb +1 -3
  76. data/lib/sisimai/reason/systemerror.rb +5 -0
  77. data/lib/sisimai/reason/toomanyconn.rb +1 -2
  78. data/lib/sisimai/reason/userunknown.rb +1 -1
  79. data/lib/sisimai/reason/virusdetected.rb +5 -6
  80. data/lib/sisimai/reason.rb +82 -78
  81. data/lib/sisimai/rfc1123.rb +152 -0
  82. data/lib/sisimai/rfc1894.rb +102 -62
  83. data/lib/sisimai/rfc2045.rb +2 -1
  84. data/lib/sisimai/rfc3464/thirdparty.rb +102 -0
  85. data/lib/sisimai/rfc3464.rb +224 -345
  86. data/lib/sisimai/rfc3834.rb +3 -3
  87. data/lib/sisimai/rfc5322.rb +7 -17
  88. data/lib/sisimai/rfc791.rb +69 -0
  89. data/lib/sisimai/rhost/aol.rb +36 -0
  90. data/lib/sisimai/rhost/apple.rb +95 -0
  91. data/lib/sisimai/rhost/cox.rb +84 -34
  92. data/lib/sisimai/rhost/facebook.rb +100 -0
  93. data/lib/sisimai/rhost/franceptt.rb +87 -83
  94. data/lib/sisimai/rhost/godaddy.rb +208 -45
  95. data/lib/sisimai/rhost/google.rb +22 -22
  96. data/lib/sisimai/rhost/gsuite.rb +42 -0
  97. data/lib/sisimai/rhost/iua.rb +5 -5
  98. data/lib/sisimai/rhost/kddi.rb +9 -7
  99. data/lib/sisimai/rhost/messagelabs.rb +37 -0
  100. data/lib/sisimai/rhost/microsoft.rb +60 -54
  101. data/lib/sisimai/rhost/mimecast.rb +44 -31
  102. data/lib/sisimai/rhost/nttdocomo.rb +5 -4
  103. data/lib/sisimai/rhost/outlook.rb +36 -0
  104. data/lib/sisimai/rhost/spectrum.rb +102 -41
  105. data/lib/sisimai/rhost/tencent.rb +48 -26
  106. data/lib/sisimai/rhost/yahooinc.rb +111 -0
  107. data/lib/sisimai/rhost.rb +65 -42
  108. data/lib/sisimai/smtp/command.rb +31 -21
  109. data/lib/sisimai/smtp/failure.rb +103 -0
  110. data/lib/sisimai/smtp/reply.rb +29 -24
  111. data/lib/sisimai/smtp/status.rb +36 -19
  112. data/lib/sisimai/smtp/transcript.rb +18 -18
  113. data/lib/sisimai/string.rb +0 -46
  114. data/lib/sisimai/version.rb +1 -1
  115. data/lib/sisimai.rb +0 -6
  116. data/set-of-emails/maildir/bsd/lhost-dragonfly-01.eml +36 -0
  117. data/set-of-emails/maildir/bsd/lhost-dragonfly-02.eml +32 -0
  118. data/set-of-emails/maildir/bsd/lhost-dragonfly-03.eml +32 -0
  119. data/set-of-emails/maildir/bsd/lhost-dragonfly-04.eml +31 -0
  120. data/set-of-emails/maildir/bsd/lhost-dragonfly-05.eml +32 -0
  121. data/set-of-emails/maildir/bsd/lhost-dragonfly-06.eml +32 -0
  122. data/set-of-emails/maildir/bsd/lhost-dragonfly-07.eml +32 -0
  123. data/set-of-emails/maildir/bsd/lhost-dragonfly-08.eml +32 -0
  124. data/set-of-emails/maildir/bsd/lhost-dragonfly-09.eml +32 -0
  125. data/set-of-emails/maildir/bsd/lhost-dragonfly-10.eml +32 -0
  126. data/set-of-emails/maildir/bsd/lhost-dragonfly-11.eml +32 -0
  127. data/set-of-emails/maildir/bsd/lhost-dragonfly-12.eml +32 -0
  128. data/set-of-emails/maildir/bsd/lhost-dragonfly-13.eml +32 -0
  129. data/set-of-emails/maildir/bsd/lhost-dragonfly-14.eml +32 -0
  130. data/set-of-emails/maildir/bsd/lhost-dragonfly-15.eml +32 -0
  131. data/set-of-emails/maildir/bsd/lhost-dragonfly-16.eml +32 -0
  132. data/set-of-emails/maildir/bsd/lhost-dragonfly-17.eml +32 -0
  133. data/set-of-emails/maildir/bsd/lhost-dragonfly-18.eml +32 -0
  134. data/set-of-emails/maildir/bsd/lhost-dragonfly-19.eml +32 -0
  135. data/set-of-emails/maildir/bsd/lhost-dragonfly-20.eml +32 -0
  136. data/set-of-emails/maildir/bsd/lhost-dragonfly-21.eml +33 -0
  137. data/set-of-emails/maildir/bsd/lhost-dragonfly-22.eml +32 -0
  138. data/set-of-emails/maildir/bsd/lhost-dragonfly-23.eml +32 -0
  139. data/set-of-emails/maildir/bsd/lhost-dragonfly-24.eml +32 -0
  140. data/set-of-emails/maildir/bsd/lhost-dragonfly-25.eml +33 -0
  141. data/set-of-emails/maildir/bsd/lhost-dragonfly-26.eml +33 -0
  142. data/set-of-emails/maildir/bsd/lhost-dragonfly-27.eml +47 -0
  143. data/set-of-emails/maildir/bsd/lhost-dragonfly-28.eml +47 -0
  144. data/set-of-emails/maildir/bsd/lhost-dragonfly-29.eml +32 -0
  145. data/set-of-emails/maildir/bsd/lhost-dragonfly-30.eml +32 -0
  146. data/set-of-emails/maildir/bsd/lhost-opensmtpd-10.eml +58 -0
  147. data/set-of-emails/maildir/bsd/lhost-opensmtpd-11.eml +58 -0
  148. data/set-of-emails/maildir/bsd/lhost-opensmtpd-12.eml +62 -0
  149. data/set-of-emails/maildir/bsd/lhost-opensmtpd-13.eml +62 -0
  150. data/set-of-emails/maildir/bsd/lhost-opensmtpd-14.eml +58 -0
  151. data/set-of-emails/maildir/bsd/lhost-opensmtpd-15.eml +63 -0
  152. data/set-of-emails/maildir/bsd/lhost-opensmtpd-16.eml +62 -0
  153. data/set-of-emails/maildir/bsd/lhost-opensmtpd-17.eml +63 -0
  154. data/set-of-emails/maildir/bsd/lhost-postfix-30.eml +81 -81
  155. data/set-of-emails/maildir/bsd/lhost-qmail-11.eml +29 -0
  156. data/set-of-emails/maildir/bsd/lhost-qmail-12.eml +29 -0
  157. data/set-of-emails/maildir/bsd/lhost-qmail-13.eml +29 -0
  158. data/set-of-emails/maildir/bsd/lhost-qmail-14.eml +34 -0
  159. data/set-of-emails/maildir/bsd/lhost-qmail-15.eml +30 -0
  160. data/set-of-emails/maildir/bsd/lhost-qmail-16.eml +31 -0
  161. data/set-of-emails/maildir/bsd/lhost-qmail-17.eml +38 -0
  162. data/set-of-emails/maildir/bsd/lhost-qmail-18.eml +31 -0
  163. data/set-of-emails/maildir/bsd/lhost-qmail-19.eml +31 -0
  164. data/set-of-emails/maildir/bsd/lhost-qmail-20.eml +46 -0
  165. data/set-of-emails/maildir/bsd/lhost-qmail-21.eml +41 -0
  166. data/set-of-emails/maildir/bsd/lhost-qmail-22.eml +42 -0
  167. data/set-of-emails/maildir/bsd/lhost-qmail-23.eml +43 -0
  168. data/set-of-emails/maildir/bsd/lhost-qmail-24.eml +43 -0
  169. data/set-of-emails/maildir/bsd/lhost-qmail-25.eml +54 -0
  170. data/set-of-emails/maildir/bsd/{lhost-aol-03.eml → rhost-aol-03.eml} +1264 -1264
  171. data/set-of-emails/maildir/bsd/{lhost-aol-04.eml → rhost-aol-04.eml} +1260 -1260
  172. data/set-of-emails/maildir/bsd/{lhost-aol-05.eml → rhost-aol-05.eml} +105 -105
  173. data/set-of-emails/maildir/bsd/{lhost-aol-06.eml → rhost-aol-06.eml} +105 -105
  174. data/set-of-emails/maildir/bsd/rhost-apple-01.eml +79 -0
  175. data/set-of-emails/maildir/bsd/rhost-apple-02.eml +81 -0
  176. data/set-of-emails/maildir/bsd/rhost-apple-03.eml +75 -0
  177. data/set-of-emails/maildir/bsd/rhost-apple-04.eml +74 -0
  178. data/set-of-emails/maildir/bsd/rhost-gsuite-01.eml +189 -0
  179. data/set-of-emails/maildir/bsd/rhost-gsuite-02.eml +180 -0
  180. data/set-of-emails/maildir/bsd/rhost-gsuite-03.eml +251 -0
  181. data/set-of-emails/maildir/bsd/rhost-gsuite-04.eml +211 -0
  182. data/set-of-emails/maildir/bsd/rhost-gsuite-05.eml +226 -0
  183. data/set-of-emails/maildir/bsd/rhost-gsuite-06.eml +257 -0
  184. data/set-of-emails/maildir/bsd/rhost-gsuite-07.eml +289 -0
  185. data/set-of-emails/maildir/bsd/rhost-gsuite-08.eml +231 -0
  186. data/set-of-emails/maildir/bsd/rhost-gsuite-09.eml +231 -0
  187. data/set-of-emails/maildir/bsd/rhost-gsuite-10.eml +254 -0
  188. data/set-of-emails/maildir/bsd/rhost-gsuite-11.eml +228 -0
  189. data/set-of-emails/maildir/bsd/rhost-gsuite-12.eml +271 -0
  190. data/set-of-emails/maildir/bsd/rhost-gsuite-13.eml +261 -0
  191. data/set-of-emails/maildir/bsd/rhost-gsuite-14.eml +273 -0
  192. data/set-of-emails/maildir/bsd/rhost-gsuite-15.eml +229 -0
  193. data/set-of-emails/maildir/bsd/{lhost-messagelabs-01.eml → rhost-messagelabs-01.eml} +93 -93
  194. data/set-of-emails/maildir/bsd/rhost-outlook-01.eml +72 -0
  195. data/set-of-emails/maildir/bsd/rhost-outlook-02.eml +72 -0
  196. data/set-of-emails/maildir/bsd/rhost-outlook-03.eml +72 -0
  197. data/set-of-emails/maildir/bsd/rhost-outlook-04.eml +79 -0
  198. data/set-of-emails/maildir/bsd/rhost-outlook-06.eml +75 -0
  199. data/set-of-emails/maildir/bsd/rhost-outlook-07.eml +70 -0
  200. data/set-of-emails/maildir/bsd/rhost-outlook-08.eml +70 -0
  201. data/set-of-emails/maildir/bsd/rhost-outlook-09.eml +56 -0
  202. data/set-of-emails/maildir/bsd/rhost-yahooinc-01.eml +80 -0
  203. data/set-of-emails/maildir/bsd/rhost-yahooinc-02.eml +83 -0
  204. data/set-of-emails/maildir/bsd/rhost-yahooinc-03.eml +125 -0
  205. data/set-of-emails/maildir/tmp/arf-22.eml +49 -0
  206. data/set-of-emails/maildir/tmp/arf-23.eml +49 -0
  207. data/set-of-emails/maildir/tmp/arf-24.eml +50 -0
  208. data/set-of-emails/maildir/tmp/lhost-exim-07.eml +28 -0
  209. metadata +136 -56
  210. data/lib/sisimai/lhost/amavis.rb +0 -163
  211. data/lib/sisimai/lhost/amazonworkmail.rb +0 -127
  212. data/lib/sisimai/lhost/aol.rb +0 -125
  213. data/lib/sisimai/lhost/barracuda.rb +0 -92
  214. data/lib/sisimai/lhost/bigfoot.rb +0 -125
  215. data/lib/sisimai/lhost/facebook.rb +0 -188
  216. data/lib/sisimai/lhost/gsuite.rb +0 -194
  217. data/lib/sisimai/lhost/mailru.rb +0 -214
  218. data/lib/sisimai/lhost/mcafee.rb +0 -109
  219. data/lib/sisimai/lhost/messagelabs.rb +0 -119
  220. data/lib/sisimai/lhost/mxlogic.rb +0 -198
  221. data/lib/sisimai/lhost/office365.rb +0 -252
  222. data/lib/sisimai/lhost/outlook.rb +0 -129
  223. data/lib/sisimai/lhost/powermta.rb +0 -118
  224. data/lib/sisimai/lhost/receivingses.rb +0 -126
  225. data/lib/sisimai/lhost/sendgrid.rb +0 -150
  226. data/lib/sisimai/lhost/surfcontrol.rb +0 -105
  227. data/lib/sisimai/lhost/x4.rb +0 -269
  228. data/lib/sisimai/lhost/x5.rb +0 -112
  229. data/lib/sisimai/lhost/yahoo.rb +0 -102
  230. data/lib/sisimai/lhost/yandex.rb +0 -118
  231. data/lib/sisimai/mda.rb +0 -121
  232. data/lib/sisimai/smtp/error.rb +0 -119
  233. /data/set-of-emails/maildir/bsd/{lhost-googlegroups-15.eml → lhost-googleworkspace-01.eml} +0 -0
  234. /data/set-of-emails/maildir/bsd/{lhost-x4-08.eml → lhost-x2-06.eml} +0 -0
  235. /data/set-of-emails/maildir/bsd/{lhost-gsuite-01.eml → rfc3464-51.eml} +0 -0
  236. /data/set-of-emails/maildir/bsd/{lhost-gsuite-03.eml → rfc3464-52.eml} +0 -0
  237. /data/set-of-emails/maildir/bsd/{lhost-gsuite-04.eml → rfc3464-53.eml} +0 -0
  238. /data/set-of-emails/maildir/bsd/{lhost-gsuite-05.eml → rfc3464-54.eml} +0 -0
  239. /data/set-of-emails/maildir/bsd/{lhost-gsuite-06.eml → rfc3464-55.eml} +0 -0
  240. /data/set-of-emails/maildir/bsd/{lhost-gsuite-07.eml → rfc3464-56.eml} +0 -0
  241. /data/set-of-emails/maildir/bsd/{lhost-gsuite-08.eml → rfc3464-57.eml} +0 -0
  242. /data/set-of-emails/maildir/bsd/{lhost-gsuite-09.eml → rfc3464-58.eml} +0 -0
  243. /data/set-of-emails/maildir/bsd/{lhost-gsuite-10.eml → rfc3464-59.eml} +0 -0
  244. /data/set-of-emails/maildir/bsd/{lhost-gsuite-11.eml → rfc3464-60.eml} +0 -0
  245. /data/set-of-emails/maildir/bsd/{lhost-gsuite-12.eml → rfc3464-61.eml} +0 -0
  246. /data/set-of-emails/maildir/bsd/{lhost-gsuite-13.eml → rfc3464-62.eml} +0 -0
  247. /data/set-of-emails/maildir/bsd/{lhost-gsuite-14.eml → rfc3464-63.eml} +0 -0
  248. /data/set-of-emails/maildir/bsd/{lhost-gsuite-15.eml → rfc3464-64.eml} +0 -0
  249. /data/set-of-emails/maildir/bsd/{lhost-gsuite-02.eml → rfc3464-65.eml} +0 -0
  250. /data/set-of-emails/maildir/bsd/{lhost-aol-01.eml → rhost-aol-01.eml} +0 -0
  251. /data/set-of-emails/maildir/bsd/{lhost-aol-02.eml → rhost-aol-02.eml} +0 -0
  252. /data/set-of-emails/maildir/bsd/{lhost-facebook-03.eml → rhost-facebook-03.eml} +0 -0
  253. /data/set-of-emails/maildir/bsd/{lhost-facebook-04.eml → rhost-facebook-04.eml} +0 -0
  254. /data/set-of-emails/maildir/bsd/{lhost-messagelabs-02.eml → rhost-messagelabs-02.eml} +0 -0
  255. /data/set-of-emails/maildir/bsd/{lhost-messagelabs-03.eml → rhost-messagelabs-03.eml} +0 -0
  256. /data/set-of-emails/maildir/{bsd → tmp}/rfc3464-37.eml +0 -0
  257. /data/set-of-emails/maildir/{bsd → tmp}/rfc3464-38.eml +0 -0
  258. /data/set-of-emails/maildir/{bsd → tmp}/rfc3464-39.eml +0 -0
@@ -1,149 +1,153 @@
1
1
  module Sisimai
2
2
  module Rhost
3
3
  # Sisimai::Rhost detects the bounce reason from the content of Sisimai::Fact object as an argument
4
- # of get() method when the value of "rhost" of the object is "*.laposte.net" or "*.orange.fr".
4
+ # of find() method when the value of "rhost" of the object is "*.laposte.net" or "*.orange.fr".
5
5
  # This class is called only Sisimai::Fact class.
6
6
  module FrancePTT
7
7
  class << self
8
8
  ErrorCodes = {
9
- # 550 5.7.1 Service unavailable; client [X.X.X.X] blocked using Spamhaus
10
- # Les emails envoyes vers la messagerie Laposte.net ont ete bloques par nos services.
11
- # Afin de regulariser votre situation, nous vous invitons a cliquer sur le lien ci-dessous et a suivre la procedure.
12
- # The emails sent to the mail host Laposte.net were blocked by our services.
13
- # To regularize your situation please click on the link below and follow the procedure
14
- # https://www.spamhaus.org/lookup/ LPNAAA_101 (in reply to RCPT TO command))
9
+ # - 550 5.7.1 Service unavailable; client [192.0.2.1] blocked using Spamhaus
10
+ # Les emails envoyes vers la messagerie Laposte.net ont ete bloques par nos services.
11
+ # Afin de regulariser votre situation, nous vous invitons a cliquer sur le lien ci-dessous
12
+ # et a suivre la procedure.
13
+ # - The emails sent to the mail host Laposte.net were blocked by our services. To regularize
14
+ # your situation please click on the link below and follow the procedure
15
+ # https://www.spamhaus.org/lookup/ LPNAAA_101 (in reply to RCPT TO command))
15
16
  '101' => 'blocked',
16
17
 
17
- # 550 mwinf5c04 ME Adresse IP source bloquee pour incident de spam.
18
- # Client host blocked for spamming issues. OFR006_102 Ref
19
- #
20
- # refused to talk to me: 550 5.5.0 Les emails envoyes vers la messagerie Laposte.net ont ete bloques par nos services.
21
- # Afin de regulariser votre situation, nous vous invitons a cliquer sur le lien ci-dessous et a suivre la procedure.
22
- # The emails sent to the mail host Laposte.net were blocked by our services.
23
- # To regularize your situation please click on the link below and follow the procedure
24
- # https://senderscore.org/blacklistlookup/ LPN007_102
18
+ # - 550 mwinf5c04 ME Adresse IP source bloquee pour incident de spam.
19
+ # - Client host blocked for spamming issues. OFR006_102 Ref http://csi.cloudmark.com ...
20
+ # - 550 5.5.0 Les emails envoyes vers la messagerie Laposte.net ont ete bloques par nos
21
+ # services. Afin de regulariser votre situation, nous vous invitons a cliquer sur le lien
22
+ # ci-dessous et a suivre la procedure.
23
+ # - The emails sent to the mail host Laposte.net were blocked by our services. To regularize
24
+ # your situation please click on the link below and follow the procedure
25
+ # https://senderscore.org/blacklistlookup/ LPN007_102
25
26
  '102' => 'blocked',
26
27
 
27
- # refused to talk to me: 550 mwinf5c10 ME Service refuse. Veuillez essayer plus tard.
28
- # Service refused, please try later. OFR006_103 X.X.X.X [103]
28
+ # - 550 mwinf5c10 ME Service refuse. Veuillez essayer plus tard.
29
+ # - Service refused, please try later. OFR006_103 192.0.2.1 [103]
29
30
  '103' => 'blocked',
30
31
 
31
- # refused to talk to me: 421 mwinf5c79 ME Trop de connexions, veuillez verifier votre configuration.
32
- # Too many connections, slow down. OFR005_104 [104]
33
- # Too many connections, slow down. LPN105_104
32
+ # - 421 mwinf5c79 ME Trop de connexions, veuillez verifier votre configuration.
33
+ # - Too many connections, slow down. OFR005_104 [104]
34
+ # - Too many connections, slow down. LPN105_104
34
35
  '104' => 'toomanyconn',
35
36
 
36
- # Veuillez essayer plus tard.
37
- '105' => nil,
37
+ '105' => nil, # Veuillez essayer plus tard.
38
+ '107' => nil, # Service refused, please try later. LPN006_107
39
+ '108' => nil, # service refused, please try later. LPN001_108
40
+ '109' => nil, # Veuillez essayer plus tard. LPN003_109
41
+ '201' => nil, # Veuillez essayer plus tard. OFR004_201
38
42
 
39
- # refused to talk to me: 421 4.2.1 Service refuse. Veuillez essayer plus tard.
40
- # Service refused, please try later. LPN006_107)
41
- '107' => nil,
42
-
43
- # refused to talk to me: 550 5.5.0 Service refuse. Veuillez essayer plus tard.
44
- # service refused, please try later. LPN001_108
45
- '108' => nil,
46
-
47
- # Veuillez essayer plus tard. LPN003_109
48
- '109' => nil,
49
-
50
- # Veuillez essayer plus tard. OFR004_201
51
- '201' => nil,
52
-
53
- # 550 5.7.0 Code d'authentification invalide OFR_305
43
+ # - 550 5.7.0 Code d'authentification invalide OFR_305
54
44
  '305' => 'securityerror',
55
45
 
56
- # 550 5.5.0 SPF: *** is not allowed to send mail. LPN004_401
57
- '401' => 'blocked',
46
+ # - 550 5.5.0 SPF: *** is not allowed to send mail. LPN004_401
47
+ '401' => 'authfailure',
58
48
 
59
- # 550 5.5.0 Authentification requise. Authentication Required. LPN105_402
49
+ # - 550 5.5.0 Authentification requise. Authentication Required. LPN105_402
60
50
  '402' => 'securityerror',
61
51
 
62
- # 5.0.1 Emetteur invalide. Invalid Sender.
52
+ # - 5.0.1 Emetteur invalide. Invalid Sender.
63
53
  '403' => 'rejected',
64
54
 
65
- # 5.0.1 Emetteur invalide. Invalid Sender. LPN105_405
66
- # 501 5.1.0 Emetteur invalide. Invalid Sender. OFR004_405 [405] (in reply to MAIL FROM command))
55
+ # - 5.0.1 Emetteur invalide. Invalid Sender. LPN105_405
56
+ # - 501 5.1.0 Emetteur invalide. Invalid Sender. OFR004_405 [405] (in reply to MAIL FROM command))
67
57
  '405' => 'rejected',
68
58
 
69
59
  # Emetteur invalide. Invalid Sender. OFR_415
70
60
  '415' => 'rejected',
71
61
 
72
- # 550 5.1.1 Adresse d au moins un destinataire invalide.
73
- # Invalid recipient. LPN416 (in reply to RCPT TO command)
74
- # Invalid recipient. OFR_416 [416] (in reply to RCPT TO command)
62
+ # - 550 5.1.1 Adresse d au moins un destinataire invalide.
63
+ # - Invalid recipient. LPN416 (in reply to RCPT TO command)
64
+ # - Invalid recipient. OFR_416 [416] (in reply to RCPT TO command)
75
65
  '416' => 'userunknown',
76
66
 
77
- # 552 5.1.1 Boite du destinataire pleine.
78
- # Recipient overquota. OFR_417 [417] (in reply to RCPT TO command))
67
+ # - 552 5.1.1 Boite du destinataire pleine.
68
+ # - Recipient overquota. OFR_417 [417] (in reply to RCPT TO command))
79
69
  '417' => 'mailboxfull',
80
70
 
81
- # Adresse d au moins un destinataire invalide
82
- '418' => 'userunknown',
71
+ # - Adresse d au moins un destinataire invalide
83
72
 
84
- # 550 5.5.0 Boite du destinataire archivee.
85
- # Archived recipient. LPN007_420 (in reply to RCPT TO command)
73
+ # - 550 5.5.0 Boite du destinataire archivee.
74
+ # - Archived recipient. LPN007_420 (in reply to RCPT TO command)
86
75
  '420' => 'suspend',
87
76
 
88
- # 5.5.3 Mail from not owned by user. LPN105_421.
77
+ # - 5.5.3 Mail from not owned by user. LPN105_421.
89
78
  '421' => 'rejected',
90
79
 
91
- # Service refused, please try later. LPN105_423
92
- '423' => nil,
80
+ '423' => nil, # Service refused, please try later. LPN105_423
81
+ '424' => nil, # Veuillez essayer plus tard. LPN105_424
93
82
 
94
- # Veuillez essayer plus tard. LPN105_424
95
- '424' => nil,
96
-
97
- # 550 5.5.0 Le compte du destinataire est bloque. The recipient account isblocked. LPN007_426 (in reply to RCPT TO command)
83
+ # - 550 5.5.0 Le compte du destinataire est bloque. The recipient account isblocked.
84
+ # LPN007_426 (in reply to RCPT TO command)
98
85
  '426' => 'suspend',
99
86
 
100
- # 421 4.2.0 Service refuse. Veuillez essayer plus tard.
101
- # Service refused, please try later. OFR005_505 [505] (in reply to end of DATA command)
102
- #
103
- # 421 4.2.1 Service refuse. Veuillez essayer plus tard.
104
- # Service refused, please try later. LPN007_505 (in reply to end of DATA command)
87
+ # - 421 4.2.0 Service refuse. Veuillez essayer plus tard. Service refused, please try later.
88
+ # OFR005_505 [505] (in reply to end of DATA command)
89
+ # - 421 4.2.1 Service refuse. Veuillez essayer plus tard. Service refused, please try later.
90
+ # LPN007_505 (in reply to end of DATA command)
105
91
  '505' => 'systemerror',
106
92
 
107
- # Mail rejete. Mail rejected. OFR_506 [506]
93
+ # - Mail rejete. Mail rejected. OFR_506 [506]
108
94
  '506' => 'spamdetected',
109
95
 
110
- # 550 5.5.0 Service refuse. Veuillez essayer plus tard.
111
- # service refused, please try later. LPN005_510 (in reply to end of DATA command)
96
+ # - 550 5.5.0 Service refuse. Veuillez essayer plus tard. service refused, please try later.
97
+ # LPN005_510 (in reply to end of DATA command)
112
98
  '510' => 'blocked',
113
99
 
114
- # Mail rejete. Mail rejected. OUK_513
115
- '513' => nil,
100
+ '513' => nil, # Mail rejete. Mail rejected. OUK_513
116
101
 
117
- # Taille limite du message atteinte
102
+ # - Taille limite du message atteinte
118
103
  '514' => 'mesgtoobig',
119
104
 
120
- # 571 5.7.1 Message refused, DMARC verification Failed.
121
- # Message refuse, verification DMARC en echec LPN007_517
122
- '517' => 'policyviolation',
105
+ # - 571 5.7.1 Message refused, DMARC verification Failed.
106
+ # - Message refuse, verification DMARC en echec LPN007_517
107
+ '517' => 'authfailure',
123
108
 
124
- # 554 5.7.1 Client host rejected
125
- # LPN000_630
109
+ # - 554 5.7.1 Client host rejected LPN000_630
126
110
  '630' => 'policyviolation',
127
111
 
128
- # 421 mwinf5c77 ME Service refuse. Veuillez essayer plus tard.
129
- # Service refused, please try later. OFR_999 [999]
112
+ # - 421 mwinf5c77 ME Service refuse. Veuillez essayer plus tard. Service refused, please try
113
+ # later. OFR_999 [999]
130
114
  '999' => 'blocked',
131
115
  }.freeze
116
+ MessagesOf = {
117
+ 'authfailure' => [
118
+ # - 421 smtp.orange.fr [192.0.2.1] Emetteur invalide, Veuillez verifier la configuration
119
+ # SPF/DNS de votre nom de domaine. Invalid Sender. SPF check failed, please verify the
120
+ # SPF/DNS configuration for your domain name.
121
+ 'spf/dns de votre nom de domaine',
122
+ ],
123
+ }.freeze
132
124
 
133
125
  # Detect bounce reason from Oranage or La Poste
134
- # @param [Sisimai::Fact] argvs Parsed email object
126
+ # @param [Sisimai::Fact] argvs Decoded email object
135
127
  # @return [String] The bounce reason for Orange or La Poste
136
- def get(argvs)
137
- return argvs['reason'] unless argvs['reason'].empty?
138
-
139
- statusmesg = argvs['diagnosticcode']
128
+ # @see https://www.postmastery.com/orange-postmaster-smtp-error-codes-ofr/
129
+ # https://smtpfieldmanual.com/provider/orange
130
+ def find(argvs)
131
+ return "" if argvs["diagnosticcode"].empty?
132
+ issuedcode = argvs['diagnosticcode']
140
133
  reasontext = ''
141
134
 
142
- if cv = statusmesg.match(/\b(LPN|LPNAAA|OFR|OUK)(_[0-9]{3}|[0-9]{3}[-_][0-9]{3})\b/i)
135
+ if cv = issuedcode.match(/\b(LPN|LPNAAA|OFR|OUK)(_[0-9]{3}|[0-9]{3}[-_][0-9]{3})\b/i)
143
136
  # OUK_513, LPN105-104, OFR102-104, ofr_506
144
137
  v = sprintf("%03d", (cv[1] + cv[2])[-3, 3])
145
138
  reasontext = ErrorCodes[v] || 'undefined'
146
139
  end
140
+ return reasontext if reasontext.size > 0
141
+
142
+ issuedcode = issuedcode.downcase
143
+ MessagesOf.each_key do |e|
144
+ MessagesOf[e].each do |f|
145
+ next unless issuedcode.include?(f)
146
+ reasontext = e
147
+ break
148
+ end
149
+ break if reasontext.size > 0
150
+ end
147
151
  return reasontext
148
152
  end
149
153
 
@@ -1,65 +1,228 @@
1
1
  module Sisimai
2
2
  module Rhost
3
3
  # Sisimai::Rhost detects the bounce reason from the content of Sisimai::Fact object as an argument
4
- # of get() method when the value of "rhost" of the object is "*.secureserver.net". This class is
4
+ # of find() method when the value of "rhost" of the object is "*.secureserver.net". This class is
5
5
  # called only Sisimai::Fact class.
6
6
  module GoDaddy
7
7
  class << self
8
8
  # https://www.godaddy.com/help/what-does-my-email-bounceback-mean-3568
9
9
  ErrorCodes = {
10
- 'IB103' => 'badreputation', # 554 Connection refused. This IP has a poor reputation on Cloudmark Sender Intelligence (CSI). IB103
11
- 'IB104' => 'blocked', # 554 Connection refused. This IP is listed on the Spamhaus Block List (SBL). IB104
12
- 'IB105' => 'blocked', # 554 Connection refused. This IP is listed on the Exploits Block List (XBL). IB105
13
- 'IB106' => 'blocked', # 554 Connection refused. This IP is listed on the Policy Block List (PBL). IB106
14
- 'IB007' => 'toomanyconn', # 421 Connection refused, too many sessions from This IP. Please lower the number of concurrent sessions. IB007
15
- 'IB101' => 'expired', # 421 Server temporarily unavailable. Try again later. IB101
16
- 'IB108' => 'blocked', # 421 Temporarily rejected. Reverse DNS for this IP failed. IB108
17
- 'IB110' => 'blocked', # 554 This IP has been temporarily blocked for attempting to send too many messages containing content judged to be spam by the Internet community. IB110
18
- 'IB111' => 'blocked', # 554 This IP has been blocked for the day, for attempting to send too many messages containing content judged to be spam by the Internet community. IB111
19
- 'IB112' => 'blocked', # 554 This IP has been temporarily blocked for attempting to mail too many invalid recipients. IB112
20
- 'IB113' => 'blocked', # 554 This IP has been blocked for the day, for attempting to mail too many invalid recipients. IB113
21
- 'IB212' => 'spamdetected', # 552 This message has been rejected due to content judged to be spam by the Internet community. IB212
22
- 'IB401' => 'securityerror', # 535 Authentication not allowed on IBSMTP Servers. IB401
23
- 'IB501' => 'rejected', # 550 holly@coolexample.com Blank From: addresses are not allowed. Please provide a valid From. IB501
24
- 'IB502' => 'rejected', # 550 holly@coolexample.com IP addresses are not allowed as a From: Address. Please provide a valid From. IB502
25
- 'IB504' => 'toomanyconn', # 550 This IP has sent too many messages this hour. IB504
26
- 'IB506' => 'rejected', # 550 coolexample.com From: Domain is invalid. Please provide a valid From: IB506
27
- 'IB508' => 'rejected', # 550 holly@coolexample.com Invalid SPF record. Please inspect your SPF settings, and try again. IB508
28
- 'IB510' => 'toomanyconn', # 550 This message has exceeded the max number of messages per session. Please open a new session and try again. IB510
29
- 'IB607' => 'toomanyconn', # 550 This IP has sent too many to too many recipients this hour. IB607
30
- 'IB705' => 'virusdetected', # 552 Virus infected message rejected. IB705
10
+ # Sender bounces
11
+ # ---------------------------------------------------------------------------------------
12
+ # - 535 Authentication not allowed on IBSMTP Servers. IB401
13
+ # - Authentication is not allowed on inbound mail. This happens when you have incorrect
14
+ # outgoing SMTP server settings set up in your email client, like Outlook or Gmail.
15
+ # - Set up your email client using the SMTP server setting smtpout.secureserver.net.
16
+ 'IB401' => 'securityerror',
17
+
18
+ # - 550 jane@coolexample.com Blank From: addresses are not allowed. Provide a valid From.
19
+ # IB501
20
+ # - The email message "from" field is blank.
21
+ # - Add a valid "from" address and try to send the email again.
22
+ 'IB501' => 'notcompliantrfc',
23
+
24
+ # - 550 jane@coolexample.com IP addresses are not allowed as a From: Address. Provide a
25
+ # valid From. IB502
26
+ # - Email messages can't be sent "from" an IP address.
27
+ # - Add a valid "from" address and try to send the email again.
28
+ 'IB502' => 'notcompliantrfc',
29
+
30
+ # - 550 coolexample.com From: Domain is invalid. Provide a valid From: IB506
31
+ # - The domain doesn't have valid MX Records, an IP address, or there were issues during
32
+ # the DNS lookup when the email was sent.
33
+ # - Verify that you're sending from a valid domain. Then verify that the domain has valid
34
+ # DNS records by checking your zone file. If the DNS isn't valid, it must be fixed
35
+ # before you resend the email.
36
+ 'IB506' => 'rejected',
37
+
38
+ # - 550 jane@coolexample.com Invalid SPF record. Inspect your SPF settings, and try again.
39
+ # IB508
40
+ # - The sending email address's domain has an SPF record that does not authorize the
41
+ # sending email server to send email from the domain.
42
+ # - Modify the SPF record to include the server you're trying to send from or remove the
43
+ # SPF record from the domain.
44
+ 'IB508' => 'authfailure',
45
+
46
+ # - 421 Temporarily rejected. Reverse DNS for this IP failed. IB108
47
+ # - The IP address attempting to send mail does not have reverse DNS setup, or the DNS
48
+ # lookup failed.
49
+ # - Verify the sending IP address has reverse DNS set up before resending the email.
50
+ # GoDaddy manages reverse DNS when using our email services. We do not support custom
51
+ # reverse DNS.
52
+ 'IB108' => 'requireptr',
53
+
54
+ # Content bounces
55
+ # ---------------------------------------------------------------------------------------
56
+ # - 552 This message has been rejected due to content judged to be spam by the internet
57
+ # community. IB212
58
+ # - The email message contains a link, attachment or pattern caught by our filters as spam.
59
+ 'IB212' => 'spamdetected',
60
+
61
+ # - 552 Virus infected message rejected. IB705
62
+ # - The email message containing a link, attachment or pattern caught by our filters as a
63
+ # possible virus.
64
+ 'IB705' => 'virusdetected',
65
+
66
+ # Rate limiting bounces
67
+ # ---------------------------------------------------------------------------------------
68
+ # - 452 This message contains too many recipients. Reduce the number of recipients and
69
+ # retry. IB605
70
+ # - The message has attempted to mail too many recipients.
71
+ # - Reduce the number of recipients and try again.
72
+ 'IB605' => 'toomanyconn',
73
+
74
+ # - 421 Connection refused, too many sessions from This IP. Lower the number of concurrent
75
+ # sessions. IB007
76
+ # - This IP address currently has too many sessions open.
77
+ # - Check with your email provider to reduce the number of open sessions on your IP
78
+ # address and then try again.
79
+ 'IB007' => 'toomanyconn',
80
+
81
+ # - 421 Server temporarily unavailable. Try again later. IB101
82
+ # - The email queue is experiencing higher than normal email volume.
83
+ # - Try again later.
84
+ 'IB101' => 'speeding',
85
+
86
+ # - 554 This IP has been temporarily blocked for attempting to send too many messages
87
+ # containing content judged to be spam by the Internet community. IB110
88
+ # - This IP address has attempted to send too many messages containing content judged to
89
+ # be spam and has been blocked for an hour.
90
+ # - If you're not sending spam, you'll need to contact your Internet Service Provider
91
+ # (ISP) to see why your IP address is sending so many emails. Something in your system
92
+ # is causing the issue, and you'll need to troubleshoot.
93
+ 'IB110' => 'blocked',
94
+
95
+ # - 554 This IP has been blocked for the day, for attempting to send too many messages
96
+ # containing content judged to be spam by the Internet community. IB111
97
+ # - This IP address has attempted to send too many messages containing content judged to
98
+ # be spam and has been blocked for the remainder of the day.
99
+ 'IB111' => 'blocked',
100
+
101
+ # - 554 This IP has been temporarily blocked for attempting to mail too many invalid
102
+ # recipients. IB112
103
+ # - This IP address has attempted to email too many invalid recipients and has been
104
+ # blocked for an hour.
105
+ 'IB112' => 'blocked',
106
+
107
+ # - 554 This IP has been blocked for the day, for attempting to mail too many invalid
108
+ # recipients. IB113
109
+ # - This IP address has attempted to email too many invalid recipients and has been
110
+ # blocked for the remainder of the day.
111
+ 'IB113' => 'blocked',
112
+
113
+ # - 550 This IP has sent too many messages this hour. IB504
114
+ # - This IP address has reached the maximum allowed messages for that hour.
115
+ 'IB504' => 'speeding',
116
+
117
+ # - 550 This message has exceeded the max number of messages per session. Open a new
118
+ # session and try again. IB510
119
+ # - This IP address has reached the maximum allowed messages for that session.
120
+ 'IB510' => 'speeding',
121
+
122
+ # - 550 This IP has sent too many to too many recipients this hour. IB607
123
+ # - This IP address has reached the maximum allowed recipients for that hour.
124
+ 'IB607' => 'speeding',
125
+
126
+ # Remote block list (RBL) bounces
127
+ # ---------------------------------------------------------------------------------------
128
+ # - 554 Connection refused. This IP has a poor reputation on Cloudmark Sender Intelligence
129
+ # (CSI). IB103
130
+ # - This IP address has a poor reputation on Cloudmark Sender Intelligence (CSI).
131
+ 'IB103' => 'badreputation',
132
+
133
+ # - 554 Connection refused. This IP address is listed on the Spamhaus Block List (SBL). IB104
134
+ # - This IP address is listed on the Spamhaus Block List.
135
+ 'IB104' => 'blocked',
136
+
137
+ # - 554 Connection refused. This IP address is listed on the Exploits Block List (XBL). IB105
138
+ # - This IP address is listed on the Spamhaus Exploits Block List.
139
+ 'IB105' => 'blocked',
140
+
141
+ # - 554 Connection refused. This IP address is listed on the Policy Block List (PBL). IB106
142
+ # - This IP address is listed on the Spamhaus Policy Block List.
143
+ 'IB106' => 'blocked',
31
144
  }.freeze
32
145
  MessagesOf = {
33
- 'blocked' => ['www.spamhaus.org/query/bl?ip=', '554 RBL Reject.'],
34
- 'expired' => ['Delivery timeout', "451 Sorry, I wasn't able to establish an SMTP connection."],
35
- 'suspend' => ['Account disabled'],
36
- 'mailboxfull' => ['Account storage limit'],
37
- 'userunknown' => ['Account does not exist', '550 Recipient not found.'],
146
+ 'blocked' => [
147
+ # - 554 RBL Reject.
148
+ # - This IP address was blocked from our internal RBL.
149
+ # - Use the link provided in the bounceback to submit a request to remove this IP address.
150
+ 'rbl reject',
151
+ 'www.spamhaus.org/query/bl?ip='
152
+ ],
153
+ 'expired' => [
154
+ # - 451 Sorry, I wasn't able to establish an SMTP connection.
155
+ # I'm not going to try again; this message has been in the queue too long.
156
+ # - The recipient's email address has been misspelled or the recipient's email provider
157
+ # has blocked sending from your address.
158
+ 'has been in the queue too long',
159
+
160
+ # - Delivery timeout
161
+ # - This could happen for several reasons.
162
+ 'delivery timeout',
163
+ ],
164
+ 'mailboxfull' => [
165
+ # - Account storage limit
166
+ # - The recipient's account has reached its storage limit and can't receive email right
167
+ # now.
168
+ # - The recipient needs to delete messages from their inbox or the receiving folder to
169
+ # make space for more email.
170
+ 'account storage limit',
171
+ ],
172
+ 'spamdetected' => [
173
+ # - 552 Message rejected for spam or virus content
174
+ # - The email message contains a link, attachment, or pattern caught by our filters as spam.
175
+ 'message rejected for spam or virus content',
176
+ ],
177
+ 'suspend' => [
178
+ # - Account disabled
179
+ # - The recipient account exists but its ability to receive mail was disabled.
180
+ # - Typically, these accounts remain permanently disabled, but you can try sending the
181
+ # email again later.
182
+ 'account disabled',
183
+ ],
184
+ 'systemerror' => [
185
+ # - This message is looping: it already has my Delivered-To line. (#5.4.6)
186
+ # - The recipient account is forwarding the message in a loop.
187
+ # - This is oftentimes because the receiver has two addresses that forward to each
188
+ # other. They need to correct their forwarding settings.
189
+ 'message is looping',
190
+ ],
191
+ 'userunknown' => [
192
+ # - 550 Recipient not found
193
+ # - The recipient is not a valid email address.
194
+ # - Remove the invalid recipient from your email.
195
+ 'recipient not found',
196
+
197
+ # - Account does not exist
198
+ # - The email address that you sent to does not exist.
199
+ # - Verify that the recipient email address was entered correctly.
200
+ 'account does not exist'
201
+ ],
38
202
  }.freeze
39
203
 
40
204
  # Detect bounce reason from GoDaddy
41
- # @param [Sisimai::Fact] argvs Parsed email object
205
+ # @param [Sisimai::Fact] argvs Decoded email object
42
206
  # @return [String] The bounce reason for GoDaddy
43
- # @see https://www.godaddy.com/help/what-does-my-email-bounceback-mean-3568
44
- def get(argvs)
45
- return argvs['reason'] unless argvs['reason'].empty?
46
-
47
- statusmesg = argvs['diagnosticcode']
48
- positionib = statusmesg.index(' IB') || -1
207
+ # @see https://ca.godaddy.com/help/fix-rejected-email-with-a-bounce-error-40685
208
+ # @since v4.22.2
209
+ def find(argvs)
210
+ return "" if argvs["diagnosticcode"].empty?
211
+ issuedcode = argvs['diagnosticcode']
212
+ positionib = issuedcode.index(' IB') || -1
49
213
  reasontext = ''
50
214
 
51
- # 192.0.2.22 has sent to too many recipients this hour. IB607 ...
52
- reasontext = ErrorCodes[statusmesg[positionib + 1, 5]] || '' if positionib > 1
53
- if reasontext.empty?
54
- # 553 http://www.spamhaus.org/query/bl?ip=192.0.0.222
55
- MessagesOf.each_key do |e|
56
- MessagesOf[e].each do |f|
57
- next unless statusmesg.include?(f)
58
- reasontext = e
59
- break
60
- end
61
- break unless reasontext.empty?
215
+ reasontext = ErrorCodes[issuedcode[positionib + 1, 5]] || '' if positionib > 1
216
+ return reasontext if reasontext.size > 0
217
+
218
+ issuedcode = issuedcode.downcase
219
+ MessagesOf.each_key do |e|
220
+ MessagesOf[e].each do |f|
221
+ next unless issuedcode.include?(f)
222
+ reasontext = e
223
+ break
62
224
  end
225
+ break if reasontext.size > 0
63
226
  end
64
227
 
65
228
  return reasontext
@@ -1,7 +1,7 @@
1
1
  module Sisimai
2
2
  module Rhost
3
3
  # Sisimai::Rhost detects the bounce reason from the content of Sisimai::Fact object as an argument
4
- # of get() method when the value of "rhost" of the object is "aspmx.l.google.com". This class is
4
+ # of find() method when the value of "rhost" of the object is "aspmx.l.google.com". This class is
5
5
  # called only Sisimai::Fact class.
6
6
  module Google
7
7
  class << self
@@ -165,6 +165,22 @@ module Sisimai
165
165
  # error messages. https://support.google.com/a/answer/3221692
166
166
  ['451', '4.4.2', 'timeout - closing connection'],
167
167
  ],
168
+ 'failedstarttls' => [
169
+ # - 530 5.7.0 Must issue a STARTTLS command first. For more information, go to About
170
+ # SMTP error messages and review RFC 3207 specifications.
171
+ ['530', '5.7.0', 'must issue a starttls command first'],
172
+ ['454', '5.5.1', 'starttls may not be repeated'],
173
+
174
+ # - 421 4.7.0 TLS required for RCPT domain, closing connection. For more information,
175
+ # go to Email encryption in transit. https://support.google.com/mail/answer/6330403
176
+ ['421', '4.7.0', 'tls required for rcpt domain'],
177
+
178
+ # - 421 4.7.29 Your email has been rate limited because this message wasn't sent over a
179
+ # TLS connection. Gmail requires all bulk email senders to use TLS/SSL for SMTP conn-
180
+ # ections.
181
+ ['421', '4.7.29', 'senders to use tls/ssl for smtp'],
182
+ ['550', '5.7.29', 'senders to use tls/ssl for smtp'],
183
+ ],
168
184
  'mailboxfull' => [
169
185
  # - 452 4.2.2 The recipient's inbox is out of storage space.
170
186
  # Please direct the recipient to https://support.google.com/mail/?p=OverQuotaTemp
@@ -322,12 +338,8 @@ module Sisimai
322
338
  ['550', '5.7.25', 'does not match the ip address of the hostname'],
323
339
  ],
324
340
  'securityerror' => [
325
- # - 421 4.7.0 TLS required for RCPT domain, closing connection. For more information,
326
- # go to Email encryption in transit. https://support.google.com/mail/answer/6330403
327
- #
328
341
  # - 454 4.7.0 Too many login attempts, please try again later. For more information, go
329
342
  # to Add Gmail to another email client. https://support.google.com/mail/answer/7126229
330
- ['421', '4.7.0', 'tls required for rcpt domain'],
331
343
  ['454', '4.7.0', 'too many login attempts'],
332
344
 
333
345
  # - 503 5.7.0 No identity changes permitted. For more information, go to About SMTP
@@ -356,12 +368,6 @@ module Sisimai
356
368
  # https://support.google.com/accounts/troubleshooter/2402620
357
369
  ['535', '5.7.1', 'username and password not accepted'],
358
370
  ['535', '5.7.8', 'username and password not accepted'],
359
-
360
- # - 421 4.7.29 Your email has been rate limited because this message wasn't sent over a
361
- # TLS connection. Gmail requires all bulk email senders to use TLS/SSL for SMTP conn-
362
- # ections.
363
- ['421', '4.7.29', 'senders to use tls/ssl for smtp'],
364
- ['550', '5.7.29', 'senders to use tls/ssl for smtp'],
365
371
  ],
366
372
  'spamdetected' => [
367
373
  # - 421 4.7.0 This message is suspicious due to the nature of the content or the links
@@ -422,7 +428,6 @@ module Sisimai
422
428
  ['454', '4.5.0', 'smtp protocol violation'],
423
429
  ['525', '5.7.10', 'smtp protocol violation'],
424
430
  ['535', '5.5.4', 'optional argument not permitted'],
425
- ['454', '5.5.1', 'starttls may not be repeated'],
426
431
 
427
432
  # - 501 5.5.2 Syntax error, cannot decode response. For more information, go to About
428
433
  # SMTP error messages.
@@ -451,10 +456,6 @@ module Sisimai
451
456
  ['503', '5.5.1', 'no data after bdat'],
452
457
  ['504', '5.7.4', 'unrecognized authentication type'],
453
458
  ['504', '5.7.4', 'xoauth is no longer supported'],
454
-
455
- # - 530 5.7.0 Must issue a STARTTLS command first. For more information, go to About
456
- # SMTP error messages and review RFC 3207 specifications.
457
- ['530', '5.7.0', 'must issue a starttls command first'],
458
459
  ['554', '5.7.0', 'too many unauthenticated commands'],
459
460
  ],
460
461
  'systemerror' => [
@@ -509,25 +510,24 @@ module Sisimai
509
510
  }.freeze
510
511
 
511
512
  # Detect bounce reason from Google Workspace
512
- # @param [Sisimai::Fact] argvs Parsed email object
513
+ # @param [Sisimai::Fact] argvs Decoded email object
513
514
  # @return [String] The bounce reason for Google Workspace
514
515
  # @see https://support.google.com/a/answer/3726730?hl=en
515
- def get(argvs)
516
- return argvs['reason'] unless argvs['reason'].empty?
517
- return '' if argvs['diagnosticcode'].empty?
516
+ def find(argvs)
517
+ return "" if argvs["diagnosticcode"].empty?
518
518
  return '' unless Sisimai::SMTP::Reply.test(argvs['replycode'])
519
519
  return '' unless Sisimai::SMTP::Status.test(argvs['deliverystatus'])
520
520
 
521
521
  statuscode = argvs['deliverystatus'][2,6]
522
522
  esmtpreply = argvs['replycode'][1,2]
523
- esmtperror = argvs['diagnosticcode'].downcase
523
+ issuedcode = argvs['diagnosticcode'].downcase
524
524
  reasontext = ''
525
525
 
526
526
  MessagesOf.each_key do |e|
527
527
  # Each key is a reason name
528
528
  MessagesOf[e].each do |f|
529
529
  # Try to match an SMTP reply code, a D.S.N, and an error message
530
- next unless esmtperror.include?(f[2])
530
+ next unless issuedcode.include?(f[2])
531
531
  next unless f[0].end_with?(esmtpreply)
532
532
  next unless f[1].end_with?(statuscode)
533
533
  reasontext = e