sisimai 4.25.16-java → 5.0.2-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (180) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/rake-test.yml +55 -0
  3. data/.travis.yml +3 -3
  4. data/ANALYTICAL-PRECISION +2 -2
  5. data/Benchmarks.mk +3 -3
  6. data/CONTRIBUTING +1 -1
  7. data/ChangeLog.md +451 -393
  8. data/Developers.mk +5 -6
  9. data/Gemfile +1 -1
  10. data/Makefile +15 -15
  11. data/README-JA.md +323 -149
  12. data/README.md +319 -149
  13. data/Rakefile +9 -3
  14. data/Repository.mk +2 -3
  15. data/lib/sisimai/address.rb +118 -74
  16. data/lib/sisimai/arf.rb +84 -82
  17. data/lib/sisimai/datetime.rb +5 -52
  18. data/lib/sisimai/{data → fact}/json.rb +7 -9
  19. data/lib/sisimai/fact/yaml.rb +31 -0
  20. data/lib/sisimai/fact.rb +506 -0
  21. data/lib/sisimai/lhost/activehunter.rb +12 -14
  22. data/lib/sisimai/lhost/amavis.rb +11 -14
  23. data/lib/sisimai/lhost/amazonses.rb +37 -42
  24. data/lib/sisimai/lhost/amazonworkmail.rb +15 -19
  25. data/lib/sisimai/lhost/aol.rb +12 -15
  26. data/lib/sisimai/lhost/apachejames.rb +19 -21
  27. data/lib/sisimai/lhost/barracuda.rb +10 -12
  28. data/lib/sisimai/lhost/bigfoot.rb +21 -22
  29. data/lib/sisimai/lhost/biglobe.rb +15 -16
  30. data/lib/sisimai/lhost/courier.rb +20 -20
  31. data/lib/sisimai/lhost/domino.rb +23 -20
  32. data/lib/sisimai/lhost/einsundeins.rb +23 -18
  33. data/lib/sisimai/lhost/exchange2003.rb +30 -29
  34. data/lib/sisimai/lhost/exchange2007.rb +70 -58
  35. data/lib/sisimai/lhost/exim.rb +179 -174
  36. data/lib/sisimai/lhost/ezweb.rb +31 -56
  37. data/lib/sisimai/lhost/facebook.rb +21 -34
  38. data/lib/sisimai/lhost/fml.rb +43 -48
  39. data/lib/sisimai/lhost/gmail.rb +29 -29
  40. data/lib/sisimai/lhost/gmx.rb +18 -17
  41. data/lib/sisimai/lhost/googlegroups.rb +11 -11
  42. data/lib/sisimai/lhost/gsuite.rb +21 -28
  43. data/lib/sisimai/lhost/imailserver.rb +25 -39
  44. data/lib/sisimai/lhost/interscanmss.rb +28 -31
  45. data/lib/sisimai/lhost/kddi.rb +22 -28
  46. data/lib/sisimai/lhost/mailfoundry.rb +11 -12
  47. data/lib/sisimai/lhost/mailmarshalsmtp.rb +25 -29
  48. data/lib/sisimai/lhost/mailru.rb +37 -40
  49. data/lib/sisimai/lhost/mcafee.rb +21 -31
  50. data/lib/sisimai/lhost/messagelabs.rb +17 -21
  51. data/lib/sisimai/lhost/messagingserver.rb +40 -37
  52. data/lib/sisimai/lhost/mfilter.rb +16 -17
  53. data/lib/sisimai/lhost/mxlogic.rb +24 -33
  54. data/lib/sisimai/lhost/notes.rb +17 -17
  55. data/lib/sisimai/lhost/office365.rb +64 -28
  56. data/lib/sisimai/lhost/opensmtpd.rb +12 -13
  57. data/lib/sisimai/lhost/outlook.rb +12 -16
  58. data/lib/sisimai/lhost/postfix.rb +179 -130
  59. data/lib/sisimai/lhost/powermta.rb +12 -14
  60. data/lib/sisimai/lhost/qmail.rb +44 -47
  61. data/lib/sisimai/lhost/receivingses.rb +15 -21
  62. data/lib/sisimai/lhost/sendgrid.rb +34 -34
  63. data/lib/sisimai/lhost/sendmail.rb +65 -53
  64. data/lib/sisimai/lhost/surfcontrol.rb +19 -19
  65. data/lib/sisimai/lhost/v5sendmail.rb +45 -39
  66. data/lib/sisimai/lhost/verizon.rb +35 -39
  67. data/lib/sisimai/lhost/x1.rb +18 -17
  68. data/lib/sisimai/lhost/x2.rb +17 -14
  69. data/lib/sisimai/lhost/x3.rb +19 -19
  70. data/lib/sisimai/lhost/x4.rb +72 -57
  71. data/lib/sisimai/lhost/x5.rb +17 -19
  72. data/lib/sisimai/lhost/x6.rb +41 -17
  73. data/lib/sisimai/lhost/yahoo.rb +17 -16
  74. data/lib/sisimai/lhost/yandex.rb +16 -21
  75. data/lib/sisimai/lhost/zoho.rb +16 -15
  76. data/lib/sisimai/lhost.rb +8 -10
  77. data/lib/sisimai/mail/maildir.rb +1 -3
  78. data/lib/sisimai/mail/mbox.rb +3 -4
  79. data/lib/sisimai/mail/memory.rb +0 -1
  80. data/lib/sisimai/mail/stdin.rb +1 -3
  81. data/lib/sisimai/mail.rb +3 -7
  82. data/lib/sisimai/mda.rb +28 -42
  83. data/lib/sisimai/message.rb +444 -326
  84. data/lib/sisimai/order.rb +5 -5
  85. data/lib/sisimai/reason/authfailure.rb +65 -0
  86. data/lib/sisimai/reason/badreputation.rb +53 -0
  87. data/lib/sisimai/reason/blocked.rb +96 -160
  88. data/lib/sisimai/reason/contenterror.rb +8 -9
  89. data/lib/sisimai/reason/delivered.rb +4 -6
  90. data/lib/sisimai/reason/exceedlimit.rb +10 -12
  91. data/lib/sisimai/reason/expired.rb +7 -8
  92. data/lib/sisimai/reason/feedback.rb +2 -3
  93. data/lib/sisimai/reason/filtered.rb +17 -19
  94. data/lib/sisimai/reason/hasmoved.rb +9 -10
  95. data/lib/sisimai/reason/hostunknown.rb +15 -15
  96. data/lib/sisimai/reason/mailboxfull.rb +11 -12
  97. data/lib/sisimai/reason/mailererror.rb +18 -20
  98. data/lib/sisimai/reason/mesgtoobig.rb +9 -11
  99. data/lib/sisimai/reason/networkerror.rb +5 -8
  100. data/lib/sisimai/reason/norelaying.rb +8 -11
  101. data/lib/sisimai/reason/notaccept.rb +13 -14
  102. data/lib/sisimai/reason/notcompliantrfc.rb +43 -0
  103. data/lib/sisimai/reason/onhold.rb +6 -9
  104. data/lib/sisimai/reason/policyviolation.rb +14 -12
  105. data/lib/sisimai/reason/rejected.rb +26 -24
  106. data/lib/sisimai/reason/requireptr.rb +69 -0
  107. data/lib/sisimai/reason/securityerror.rb +34 -36
  108. data/lib/sisimai/reason/spamdetected.rb +115 -147
  109. data/lib/sisimai/reason/speeding.rb +49 -0
  110. data/lib/sisimai/reason/suspend.rb +12 -11
  111. data/lib/sisimai/reason/syntaxerror.rb +11 -10
  112. data/lib/sisimai/reason/systemerror.rb +7 -9
  113. data/lib/sisimai/reason/systemfull.rb +7 -8
  114. data/lib/sisimai/reason/toomanyconn.rb +9 -11
  115. data/lib/sisimai/reason/undefined.rb +2 -3
  116. data/lib/sisimai/reason/userunknown.rb +129 -146
  117. data/lib/sisimai/reason/vacation.rb +3 -4
  118. data/lib/sisimai/reason/virusdetected.rb +10 -11
  119. data/lib/sisimai/reason.rb +59 -64
  120. data/lib/sisimai/rfc1894.rb +55 -28
  121. data/lib/sisimai/rfc2045.rb +373 -0
  122. data/lib/sisimai/rfc3464.rb +250 -308
  123. data/lib/sisimai/rfc3834.rb +42 -45
  124. data/lib/sisimai/rfc5322.rb +177 -146
  125. data/lib/sisimai/rfc5965.rb +31 -0
  126. data/lib/sisimai/rhost/cox.rb +5 -6
  127. data/lib/sisimai/rhost/franceptt.rb +6 -8
  128. data/lib/sisimai/rhost/godaddy.rb +12 -12
  129. data/lib/sisimai/rhost/google.rb +530 -0
  130. data/lib/sisimai/rhost/iua.rb +9 -10
  131. data/lib/sisimai/rhost/kddi.rb +6 -8
  132. data/lib/sisimai/rhost/{exchangeonline.rb → microsoft.rb} +115 -114
  133. data/lib/sisimai/rhost/mimecast.rb +51 -42
  134. data/lib/sisimai/rhost/nttdocomo.rb +12 -12
  135. data/lib/sisimai/rhost/spectrum.rb +10 -12
  136. data/lib/sisimai/rhost/{tencentqq.rb → tencent.rb} +7 -8
  137. data/lib/sisimai/rhost.rb +23 -31
  138. data/lib/sisimai/smtp/command.rb +59 -0
  139. data/lib/sisimai/smtp/error.rb +4 -7
  140. data/lib/sisimai/smtp/reply.rb +161 -74
  141. data/lib/sisimai/smtp/status.rb +507 -393
  142. data/lib/sisimai/smtp/transcript.rb +124 -0
  143. data/lib/sisimai/smtp.rb +0 -1
  144. data/lib/sisimai/string.rb +74 -5
  145. data/lib/sisimai/time.rb +1 -2
  146. data/lib/sisimai/version.rb +1 -1
  147. data/lib/sisimai.rb +46 -31
  148. data/set-of-emails/maildir/bsd/lhost-domino-02.eml +6 -3
  149. data/set-of-emails/maildir/bsd/lhost-googlegroups-15.eml +174 -0
  150. data/set-of-emails/maildir/bsd/lhost-gsuite-15.eml +229 -0
  151. data/set-of-emails/maildir/bsd/lhost-postfix-75.eml +51 -0
  152. data/set-of-emails/maildir/bsd/lhost-postfix-76.eml +101 -0
  153. data/set-of-emails/maildir/bsd/lhost-postfix-77.eml +74 -0
  154. data/set-of-emails/maildir/bsd/lhost-postfix-78.eml +91 -0
  155. data/set-of-emails/maildir/bsd/lhost-receivingses-08.eml +88 -0
  156. data/set-of-emails/maildir/bsd/lhost-sendmail-60.eml +85 -0
  157. data/set-of-emails/maildir/bsd/rfc3464-43.eml +88 -0
  158. data/set-of-emails/maildir/bsd/rhost-google-03.eml +101 -0
  159. data/set-of-emails/maildir/bsd/rhost-google-04.eml +102 -0
  160. data/set-of-emails/maildir/bsd/rhost-google-05.eml +82 -0
  161. data/set-of-emails/maildir/bsd/rhost-google-06.eml +102 -0
  162. data/set-of-emails/maildir/bsd/rhost-google-07.eml +69 -0
  163. data/set-of-emails/maildir/bsd/rhost-google-08.eml +99 -0
  164. data/sisimai-java.gemspec +1 -1
  165. data/sisimai.gemspec +1 -1
  166. metadata +48 -26
  167. data/.rspec +0 -2
  168. data/lib/sisimai/data/yaml.rb +0 -33
  169. data/lib/sisimai/data.rb +0 -411
  170. data/lib/sisimai/mime.rb +0 -456
  171. data/lib/sisimai/rhost/googleapps.rb +0 -261
  172. /data/set-of-emails/maildir/bsd/{rfc3464-41.eml → rfc3834-05.eml} +0 -0
  173. /data/set-of-emails/maildir/bsd/{rhost-googleapps-01.eml → rhost-google-01.eml} +0 -0
  174. /data/set-of-emails/maildir/bsd/{rhost-googleapps-02.eml → rhost-google-02.eml} +0 -0
  175. /data/set-of-emails/maildir/bsd/{rhost-exchangeonline-01.eml → rhost-microsoft-01.eml} +0 -0
  176. /data/set-of-emails/maildir/bsd/{rhost-exchangeonline-02.eml → rhost-microsoft-02.eml} +0 -0
  177. /data/set-of-emails/maildir/bsd/{rhost-exchangeonline-03.eml → rhost-microsoft-03.eml} +0 -0
  178. /data/set-of-emails/maildir/bsd/{rhost-tencentqq-01.eml → rhost-tencent-01.eml} +0 -0
  179. /data/set-of-emails/maildir/bsd/{rhost-tencentqq-02.eml → rhost-tencent-02.eml} +0 -0
  180. /data/set-of-emails/maildir/bsd/{rhost-tencentqq-03.eml → rhost-tencent-03.eml} +0 -0
@@ -1,261 +0,0 @@
1
- module Sisimai
2
- module Rhost
3
- # Sisimai::Rhost detects the bounce reason from the content of Sisimai::Data
4
- # object as an argument of get() method when the value of "rhost" of the object
5
- # is "aspmx.l.google.com". This class is called only Sisimai::Data class.
6
- module GoogleApps
7
- class << self
8
- MessagesOf = {
9
- 'blocked' => [
10
- ['421', '4.7.0', 'ip not in whitelist for rcpt domain, closing connection.'],
11
-
12
- # - 421 4.7.0 Our system has detected an unusual rate of unsolicited mail originating
13
- # from your IP address. To protect our users from spam, mail sent from your IP ad-
14
- # dress has been temporarily blocked.
15
- # For more information, visit https://support.google.com/mail/answer/81126
16
- ['421', '4.7.0', 'our system has detected an unusual rate of unsolicited mail originating from your ip address'],
17
-
18
- # - 421 4.7.0 Try again later, closing connection. This usually indicates a Denial of
19
- # Service (DoS) for the SMTP relay at the HELO stage.
20
- ['421', '4.7.0', 'try again later, closing connection.'],
21
-
22
- # - 501 5.5.4 HELO/EHLO argument is invalid. For more information, visit [HELO/EHLO e-
23
- # mail error].
24
- ['501', '5.5.4', 'helo/ehlo argument is invalid'],
25
-
26
- # - 550 5.7.1 Our system has detected an unusual rate of unsolicited mail originating
27
- # from your IP address. To protect our users from spam, mail sent from your IP ad-
28
- # dress has been blocked. Review https://support.google.com/mail/answer/81126
29
- ['550', '5.7.1', 'our system has detected an unusual rate of unsolicited mail originating from your ip address'],
30
-
31
- # - 550 5.7.1 The IP you're using to send mail is not authorized to send email directly
32
- # to our servers. Please use the SMTP relay at your service provider instead. For
33
- # more information, visit https://support.google.com/mail/answer/10336
34
- ['550', '5.7.1', "the ip you're using to send mail is not authorized to send email directly to our servers"],
35
-
36
- # - 550 5.7.25 The IP address sending this message does not have a PTR record setup, or
37
- # the corresponding forward DNS entry does not point to the sending IP. As a policy,
38
- # Gmail does not accept messages from IPs with missing PTR records.
39
- ['550', '5.7.25', 'the ip address sending this message does not have a ptr record setup'],
40
-
41
- # - 550 5.7.26 Unauthenticated email from domain-name is not accepted due to domain's
42
- # DMARC policy. Please contact the administrator of domain-name domain. If this was
43
- # a legitimate mail please visit [Control unauthenticated mail from your domain] to
44
- # learn about the DMARC initiative. If the messages are valid and aren't spam, con-
45
- # tact the administrator of the receiving mail server to determine why your outgoing
46
- # messages don't pass authentication checks.
47
- ['550', '5.7.26', "is not accepted due to domain's dmarc policy"],
48
-
49
- # - 550 5.7.26 This message does not have authentication information or fails to pass
50
- # authentication checks (SPF or DKIM). To best protect our users from spam, the mes-
51
- # sage has been blocked. Please visit https://support.google.com/mail/answer/81126
52
- # for more information.
53
- ['550', '5.7.1', 'fails to pass authentication checks'],
54
- ['550', '5.7.26', 'fails to pass authentication checks'],
55
-
56
- # - 550 5.7.26 This message fails to pass SPF checks for an SPF record with a hard fail
57
- # policy (-all). To best protect our users from spam and phishing, the message has
58
- # been blocked. Please visit https://support.google.com/mail/answer/81126 for more
59
- # information.
60
- ['550', '5.7.26', 'this message fails to pass spf checks for an spf record with a hard fail'],
61
- # - 550 5.7.1 Our system has detected that this message is likely suspicious due to the
62
- # very low reputation of the sending IP address. To best protect our users from spam,
63
- # the message has been blocked.
64
- # Please visit https://support.google.com/mail/answer/188131 for more information.
65
- ['550', '5.7.1', 'this message is likely suspicious due to the very low reputation of the sending ip address'],
66
- ],
67
- 'contenterror' => [
68
- ['554', '5.6.0', 'mail message is malformed. Not accepted'],
69
- ],
70
- 'exceedlimit' => [
71
- # - 552 5.2.3 Your message exceeded Google's message size limits. For more information,
72
- # visit https://support.google.com/mail/answer/6584
73
- ['552', '5.2.3', "your message exceeded Google's message size limits"],
74
- ],
75
- 'expired' => [
76
- ['451', '4.4.2', 'timeout - closing connection'],
77
- ],
78
- 'mailboxfull' => [
79
- # - 452 4.2.2 The email account that you tried to reach is over quota. Please direct
80
- # the recipient to Clear Google Drive space & increase storage.
81
- ['452', '4.2.2', 'the email account that you tried to reach is over quota'],
82
- ['552', '5.2.2', 'the email account that you tried to reach is over quota'],
83
- ['550', '5.7.1', 'email quota exceeded'],
84
- ],
85
- 'networkerror' => [
86
- ['554', '5.6.0', 'message exceeded 50 hops, this may indicate a mail loop'],
87
- ],
88
- 'norelaying' => [
89
- ['550', '5.7.0', 'mail relay denied'],
90
- ],
91
- 'policyviolation' => [
92
- ['550', '5.7.1', 'messages with multiple addresses in from: header are not accepted'],
93
-
94
- # - 550 5.7.1 The user or domain that you are sending to (or from) has a policy that
95
- # prohibited the mail that you sent. Please contact your domain administrator for
96
- # further details.
97
- # For more information, visit https://support.google.com/a/answer/172179
98
- ['550', '5.7.1', 'the user or domain that you are sending to (or from) has a policy that prohibited'],
99
-
100
- # - 552 5.7.0 Our system detected an illegal attachment on your message. Please visit
101
- # http://mail.google.com/support/bin/answer.py?answer=6590 to review our attachment
102
- # guidelines.
103
- ['552', '5.7.0', 'our system detected an illegal attachment on your message'],
104
-
105
- # - 552 5.7.0 This message was blocked because its content presents a potential securi-
106
- # ty issue. Please visit https://support.google.com/mail/?p=BlockedMessage to review
107
- # our message content and attachment content guidelines.
108
- ['552', '5.7.0', 'this message was blocked because its content presents a potential security issue'],
109
- ],
110
- 'rejected' => [
111
- # - 550 5.7.0, Mail Sending denied. This error occurs if the sender account is disabled
112
- # or not registered within your Google Workspace domain.
113
- ['550', '5.7.0', 'mail sending denied'],
114
-
115
- ['550', '5.7.1', 'unauthenticated email is not accepted from this domain'],
116
- ],
117
- 'securityerror' => [
118
- ['421', '4.7.0', 'tls required for rcpt domain, closing connection'],
119
- ['501', '5.5.2', 'cannot decode response'], # 2FA related error, maybe.
120
-
121
- # - 530 5.5.1 Authentication Required. For more information, visit
122
- # https://support.google.com/accounts/troubleshooter/2402620
123
- ['530', '5.5.1', 'authentication required.'],
124
-
125
- # - 535 5.7.1 Application-specific password required.
126
- # For more information, visit https://support.google.com/accounts/answer/185833
127
- ['535', '5.7.1', 'application-specific password required'],
128
-
129
- # - 535 5.7.1 Please log in with your web browser and then try again. For more infor-
130
- # mation, visit https://support.google.com/mail/bin/accounts/answer/78754
131
- ['535', '5.7.1', 'please log in with your web browser and then try again'],
132
-
133
- # - 535 5.7.1 Username and Password not accepted. For more information, visit
134
- # https://support.google.com/accounts/troubleshooter/2402620
135
- ['535', '5.7.1', 'username and password not accepted'],
136
-
137
- ['550', '5.7.1', 'invalid credentials for relay'],
138
- ],
139
- 'spamdetected' => [
140
- # - 550 5.7.1 Our system has detected that this message is likely unsolicited mail. To
141
- # reduce the amount of spam sent to Gmail, this message has been blocked.
142
- # For more information, visit https://support.google.com/mail/answer/188131
143
- ['550', '5.7.1', 'our system has detected that this message is likely unsolicited mail'],
144
- ],
145
- 'suspend' => [
146
- ['550', '5.2.1', 'the email account that you tried to reach is disabled'],
147
- ],
148
- 'syntaxerror' => [
149
- ['451', '4.5.0', 'smtp protocol violation, visit rfc 2821'],
150
- ['454', '4.5.0', 'smtp protocol violation, no commands allowed to pipeline after starttls'],
151
- ['454', '5.5.1', 'starttls may not be repeated'],
152
- ['502', '5.5.1', 'too many unrecognized commands, goodbye'],
153
- ['502', '5.5.1', 'unimplemented command'],
154
- ['502', '5.5.1', 'unrecognized command'],
155
- ['503', '5.5.1', 'ehlo/helo first'],
156
- ['503', '5.5.1', 'mail first'],
157
- ['503', '5.5.1', 'rcpt first'],
158
- ['503', '5.7.0', 'no identity changes permitted'],
159
- ['504', '5.7.4', 'unrecognized authentication type'],
160
- ['530', '5.7.0', 'must issue a starttls command first'],
161
- ['535', '5.5.4', 'optional argument not permitted for that auth mode'],
162
- ['554', '5.7.0', 'too many unauthenticated commands'],
163
- ['555', '5.5.2', 'syntax error'],
164
- ],
165
- 'systemerror' => [
166
- ['421', '4.3.0', 'temporary system problem'],
167
- ['421', '4.7.0', 'temporary system problem'],
168
- ['421', '4.4.5', 'server busy'],
169
- ['451', '4.3.0', 'mail server temporarily rejected message'],
170
- ['454', '4.7.0', 'cannot authenticate due to temporary system problem'],
171
-
172
- # - 452 4.5.3 Domain policy size per transaction exceeded, please try this recipient in
173
- # a separate transaction. This message means the email policy size (size of policies,
174
- # number of policies, or both) for the recipient domain has been exceeded.
175
- ['452', '4.5.3', 'domain policy size per transaction exceeded'],
176
- ],
177
- 'toomanyconn' => [
178
- ['451', '4.3.0', 'multiple destination domains per transaction is unsupported'],
179
-
180
- # - 452 4.5.3 Your message has too many recipients. For more information regarding
181
- # Google's sending limits, visit https://support.google.com/mail/answer/6592
182
- ['452', '4.5.3', 'your message has too many recipients'],
183
-
184
- # - 450 4.2.1 The user you are trying to contact is receiving mail too quickly. Please
185
- # resend your message at a later time. If the user is able to receive mail at that
186
- # time, your message will be delivered.
187
- # For more information, visit https://support.google.com/mail/answer/22839
188
- ['450', '4.2.1', 'is receiving mail too quickly'],
189
-
190
- # - 450 4.2.1 The user you are trying to contact is receiving mail at a rate that pre-
191
- # vents additional messages from being delivered. Please resend your message at a
192
- # later time. If the user is able to receive mail at that time, your message will be
193
- # delivered. For more information, visit https://support.google.com/mail/answer/6592
194
- ['450', '4.2.1', 'is receiving mail at a rate that prevents additional messages from being delivered'],
195
- ['550', '5.2.1', 'is receiving mail at a rate that prevents additional messages from being delivered'],
196
-
197
- # - 450 4.2.1 Peak SMTP relay limit exceeded for customer. This is a temporary error.
198
- # For more information on SMTP relay limits, please contact your administrator or
199
- # visit https://support.google.com/a/answer/6140680
200
- ['450', '4.2.1', 'peak smtp relay limit exceeded for customer'],
201
-
202
- # - 550 5.4.5 Daily SMTP relay limit exceeded for user. For more information on SMTP
203
- # relay sending limits please contact your administrator or visit SMTP relay service
204
- # error messages.
205
- ['550', '5.4.5', 'daily smtp relay limit exceeded for user'],
206
- ['550', '5.4.5', 'daily sending quota exceeded'],
207
-
208
- # - 550 5.7.1 Daily SMTP relay limit exceeded for customer. For more information on
209
- # SMTP relay sending limits please contact your administrator or visit
210
- # https://support.google.com/a/answer/6140680
211
- ['550', '5.7.1', 'daily smtp relay limit exceeded for customer'],
212
- ],
213
- 'userunknown' => [
214
- # - 550 5.1.1 The email account that you tried to reach does not exist. Please try dou-
215
- # ble-checking the recipient's email address for typos or unnecessary spaces.
216
- # For more information, visit https://support.google.com/mail/answer/6596
217
- ['550', '5.1.1', 'the email account that you tried to reach does not exist'],
218
-
219
- # - 553 5.1.2 We weren't able to find the recipient domain. Please check for any spell-
220
- # ing errors, and make sure you didn't enter any spaces, periods, or other punctua-
221
- # tion after the recipient's email address.
222
- ['553', '5.1.2', "we weren't able to find the recipient domain"],
223
- ],
224
- }.freeze
225
-
226
- # Detect bounce reason from Google Workspace
227
- # @param [Sisimai::Fact] argvs Parsed email object
228
- # @return [String] The bounce reason for Google Workspace
229
- # @see https://support.google.com/a/answer/3726730?hl=en
230
- def get(argvs)
231
- return argvs.reason unless argvs.reason.empty?
232
- return '' if argvs.diagnosticcode.empty?
233
- return '' if argvs.replycode.empty?
234
- return '' if argvs.deliverystatus.empty?
235
- return '' unless argvs.deliverystatus =~ /\A[245][.]\d[.]\d+\z/
236
-
237
- statuscode = argvs.deliverystatus[2,6]
238
- esmtpreply = argvs.replycode[1,2]
239
- esmtperror = argvs.diagnosticcode.downcase
240
- reasontext = ''
241
-
242
- MessagesOf.each_key do |e|
243
- # Each key is a reason name
244
- MessagesOf[e].each do |f|
245
- # Try to match an SMTP reply code, a D.S.N, and an error message
246
- next unless esmtperror.include?(f[2])
247
- next unless f[0].end_with?(esmtpreply)
248
- next unless f[1].end_with?(statuscode)
249
- reasontext = e
250
- break
251
- end
252
- break unless reasontext.empty?
253
- end
254
-
255
- return reasontext
256
- end
257
-
258
- end
259
- end
260
- end
261
- end