sisimai 5.6.0-java → 5.7.1-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 (130) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rake-test.yml +0 -4
  3. data/ChangeLog.md +47 -0
  4. data/README-JA.md +19 -16
  5. data/README.md +23 -21
  6. data/lib/sisimai/address.rb +8 -31
  7. data/lib/sisimai/arf.rb +5 -6
  8. data/lib/sisimai/eb.rb +116 -0
  9. data/lib/sisimai/fact.rb +33 -51
  10. data/lib/sisimai/lda.rb +20 -18
  11. data/lib/sisimai/lhost/activehunter.rb +0 -2
  12. data/lib/sisimai/lhost/amazonses.rb +17 -18
  13. data/lib/sisimai/lhost/apachejames.rb +0 -1
  14. data/lib/sisimai/lhost/biglobe.rb +0 -16
  15. data/lib/sisimai/lhost/courier.rb +9 -7
  16. data/lib/sisimai/lhost/deutschetelekom.rb +120 -0
  17. data/lib/sisimai/lhost/domino.rb +2 -4
  18. data/lib/sisimai/lhost/dragonfly.rb +0 -27
  19. data/lib/sisimai/lhost/einsundeins.rb +4 -12
  20. data/lib/sisimai/lhost/exchange2003.rb +12 -11
  21. data/lib/sisimai/lhost/exchange2007.rb +17 -17
  22. data/lib/sisimai/lhost/exim.rb +34 -81
  23. data/lib/sisimai/lhost/ezweb.rb +15 -51
  24. data/lib/sisimai/lhost/fml.rb +8 -32
  25. data/lib/sisimai/lhost/gmail.rb +10 -32
  26. data/lib/sisimai/lhost/gmx.rb +7 -24
  27. data/lib/sisimai/lhost/googlegroups.rb +6 -5
  28. data/lib/sisimai/lhost/googleworkspace.rb +2 -5
  29. data/lib/sisimai/lhost/imailserver.rb +4 -9
  30. data/lib/sisimai/lhost/kddi.rb +8 -21
  31. data/lib/sisimai/lhost/mailfoundry.rb +0 -2
  32. data/lib/sisimai/lhost/mailmarshal.rb +1 -3
  33. data/lib/sisimai/lhost/messagingserver.rb +4 -15
  34. data/lib/sisimai/lhost/mfilter.rb +0 -1
  35. data/lib/sisimai/lhost/mimecast.rb +0 -1
  36. data/lib/sisimai/lhost/notes.rb +3 -3
  37. data/lib/sisimai/lhost/opensmtpd.rb +0 -40
  38. data/lib/sisimai/lhost/postfix.rb +14 -14
  39. data/lib/sisimai/lhost/qmail.rb +23 -89
  40. data/lib/sisimai/lhost/sendmail.rb +8 -7
  41. data/lib/sisimai/lhost/trendmicro.rb +5 -4
  42. data/lib/sisimai/lhost/v5sendmail.rb +2 -2
  43. data/lib/sisimai/lhost/verizon.rb +4 -4
  44. data/lib/sisimai/lhost/x1.rb +1 -2
  45. data/lib/sisimai/lhost/x2.rb +0 -2
  46. data/lib/sisimai/lhost/x3.rb +4 -9
  47. data/lib/sisimai/lhost/x6.rb +0 -1
  48. data/lib/sisimai/lhost/zoho.rb +0 -12
  49. data/lib/sisimai/lhost.rb +38 -19
  50. data/lib/sisimai/message.rb +1 -1
  51. data/lib/sisimai/order.rb +4 -1
  52. data/lib/sisimai/reason/authfailure.rb +8 -7
  53. data/lib/sisimai/reason/badreputation.rb +5 -4
  54. data/lib/sisimai/reason/blocked.rb +6 -5
  55. data/lib/sisimai/reason/contenterror.rb +8 -5
  56. data/lib/sisimai/reason/delivered.rb +3 -2
  57. data/lib/sisimai/reason/emailtoolarge.rb +7 -6
  58. data/lib/sisimai/reason/expired.rb +16 -4
  59. data/lib/sisimai/reason/failedstarttls.rb +5 -3
  60. data/lib/sisimai/reason/feedback.rb +2 -1
  61. data/lib/sisimai/reason/filtered.rb +9 -8
  62. data/lib/sisimai/reason/hasmoved.rb +5 -4
  63. data/lib/sisimai/reason/hostunknown.rb +14 -4
  64. data/lib/sisimai/reason/mailboxfull.rb +10 -8
  65. data/lib/sisimai/reason/mailererror.rb +3 -2
  66. data/lib/sisimai/reason/networkerror.rb +16 -3
  67. data/lib/sisimai/reason/norelaying.rb +8 -6
  68. data/lib/sisimai/reason/notaccept.rb +15 -7
  69. data/lib/sisimai/reason/notcompliantrfc.rb +5 -3
  70. data/lib/sisimai/reason/onhold.rb +8 -7
  71. data/lib/sisimai/reason/policyviolation.rb +11 -5
  72. data/lib/sisimai/reason/ratelimited.rb +5 -4
  73. data/lib/sisimai/reason/rejected.rb +24 -14
  74. data/lib/sisimai/reason/requireptr.rb +5 -4
  75. data/lib/sisimai/reason/securityerror.rb +5 -3
  76. data/lib/sisimai/reason/spamdetected.rb +6 -5
  77. data/lib/sisimai/reason/suppressed.rb +4 -3
  78. data/lib/sisimai/reason/suspend.rb +8 -3
  79. data/lib/sisimai/reason/syntaxerror.rb +5 -11
  80. data/lib/sisimai/reason/systemerror.rb +21 -2
  81. data/lib/sisimai/reason/systemfull.rb +4 -3
  82. data/lib/sisimai/reason/undefined.rb +2 -1
  83. data/lib/sisimai/reason/userunknown.rb +15 -9
  84. data/lib/sisimai/reason/vacation.rb +2 -1
  85. data/lib/sisimai/reason/virusdetected.rb +6 -5
  86. data/lib/sisimai/reason.rb +47 -42
  87. data/lib/sisimai/rfc1123.rb +1 -1
  88. data/lib/sisimai/rfc1894.rb +15 -8
  89. data/lib/sisimai/rfc2045.rb +8 -5
  90. data/lib/sisimai/rfc3464/thirdparty.rb +11 -10
  91. data/lib/sisimai/rfc3464.rb +10 -14
  92. data/lib/sisimai/rfc3834.rb +6 -5
  93. data/lib/sisimai/rfc791.rb +3 -38
  94. data/lib/sisimai/rhost/aol.rb +3 -2
  95. data/lib/sisimai/rhost/apple.rb +12 -11
  96. data/lib/sisimai/rhost/cloudflare.rb +3 -2
  97. data/lib/sisimai/rhost/cox.rb +38 -37
  98. data/lib/sisimai/rhost/facebook.rb +17 -16
  99. data/lib/sisimai/rhost/franceptt.rb +39 -38
  100. data/lib/sisimai/rhost/godaddy.rb +35 -34
  101. data/lib/sisimai/rhost/google.rb +22 -21
  102. data/lib/sisimai/rhost/gsuite.rb +8 -7
  103. data/lib/sisimai/rhost/iua.rb +11 -10
  104. data/lib/sisimai/rhost/kddi.rb +3 -2
  105. data/lib/sisimai/rhost/messagelabs.rb +13 -12
  106. data/lib/sisimai/rhost/microsoft.rb +37 -32
  107. data/lib/sisimai/rhost/mimecast.rb +18 -17
  108. data/lib/sisimai/rhost/nttdocomo.rb +10 -9
  109. data/lib/sisimai/rhost/outlook.rb +3 -2
  110. data/lib/sisimai/rhost/spectrum.rb +19 -18
  111. data/lib/sisimai/rhost/tencent.rb +10 -9
  112. data/lib/sisimai/rhost/yahooinc.rb +11 -10
  113. data/lib/sisimai/rhost/zoho.rb +8 -7
  114. data/lib/sisimai/rhost.rb +1 -1
  115. data/lib/sisimai/smtp/command.rb +13 -8
  116. data/lib/sisimai/smtp/failure.rb +9 -8
  117. data/lib/sisimai/smtp/reply.rb +23 -22
  118. data/lib/sisimai/smtp/status.rb +164 -159
  119. data/lib/sisimai/smtp/transcript.rb +3 -2
  120. data/lib/sisimai/string.rb +0 -12
  121. data/lib/sisimai/version.rb +1 -1
  122. data/lib/sisimai.rb +2 -1
  123. data/set-of-emails/maildir/bsd/lhost-deutschetelekom-01.eml +66 -0
  124. data/set-of-emails/maildir/bsd/lhost-deutschetelekom-02.eml +68 -0
  125. data/set-of-emails/maildir/bsd/lhost-deutschetelekom-03.eml +50 -0
  126. data/set-of-emails/maildir/bsd/lhost-postfix-81.eml +130 -0
  127. data/set-of-emails/should-not-crash/go-423-deeply-nested-mime-parts.eml +20050 -0
  128. data/set-of-emails/should-not-crash/p5-664-iomart-mail-filter.eml +258 -0
  129. data/set-of-emails/to-be-debugged-because/sisimai-cannot-parse-yet/.gitkeep +0 -0
  130. metadata +11 -2
@@ -5,13 +5,14 @@ module Sisimai
5
5
  # This class is called only Sisimai::Fact class.
6
6
  module YahooInc
7
7
  class << self
8
+ require 'sisimai/eb'
8
9
  MessagesOf = {
9
- 'authfailure' => [
10
+ Sisimai::Eb::ReAUTH => [
10
11
  # - 550 5.7.9 This mail has been blocked because the sender is unauthenticated. Yahoo
11
12
  # requires all senders to authenticate with either SPF or DKIM.
12
13
  'yahoo requires all senders to authenticate with either spf or dkim',
13
14
  ],
14
- 'blocked' => [
15
+ Sisimai::Eb::ReBLOC => [
15
16
  # - 553 5.7.1 [BL21] Connections will not be accepted from 192.0.2.25,
16
17
  # because the ip is in Spamhaus's list; see http://postmaster.yahoo.com/550-bl23.html
17
18
  # - 553 5.7.1 [BL23] Connections not accepted from IP addresses on Spamhaus XBL;
@@ -19,26 +20,26 @@ module Sisimai
19
20
  " because the ip is in spamhaus's list;",
20
21
  'not accepted from ip addresses on spamhaus xbl',
21
22
  ],
22
- 'norelaying' => [
23
+ Sisimai::Eb::RePASS => [
23
24
  # - 550 relaying denied for <***@yahoo.com>
24
25
  'relaying denied for ',
25
26
  ],
26
- 'notcompliantrfc' => ['headers are not rfc compliant'],
27
- 'policyviolation' => [
27
+ Sisimai::Eb::ReNRFC => ['headers are not rfc compliant'],
28
+ Sisimai::Eb::ReWONT => [
28
29
  # - 554 Message not allowed - [PH01] Email not accepted for policy reasons.
29
30
  # Please visit https://postmaster.yahooinc.com/error-codes
30
31
  # - 554 5.7.9 Message not accepted for policy reasons.
31
32
  # See https://postmaster.yahooinc.com/error-codes
32
33
  'not accepted for policy reasons',
33
34
  ],
34
- 'ratelimited' => [
35
+ Sisimai::Eb::ReRATE => [
35
36
  # - 421 Max message per connection reached, closing transmission channel
36
37
  'max message per connection reached',
37
38
 
38
39
  # - 450 User is receiving mail too quickly
39
40
  'user is receiving mail too quickly',
40
41
  ],
41
- 'rejected' => [
42
+ Sisimai::Eb::ReFROM => [
42
43
  # Observed the following error message since around March 2024:
43
44
  #
44
45
  # - 421 4.7.0 [TSS04] Messages from 192.0.2.25 temporarily deferred due to unexpected
@@ -60,18 +61,18 @@ module Sisimai
60
61
  # Retrying will NOT succeed. See https://postmaster.yahooinc.com/error-codes
61
62
  ' will be permanently deferred',
62
63
  ],
63
- 'suspend' => [
64
+ Sisimai::Eb::ReQUIT => [
64
65
  # - 554 delivery error: dd ****@yahoo.com is no longer valid.
65
66
  # - 554 30 Sorry, your message to *****@aol.jp cannot be delivered.
66
67
  # This mailbox is disabled (554.30)
67
68
  ' is no longer valid.',
68
69
  'this mailbox is disabled',
69
70
  ],
70
- 'syntaxerror' => [
71
+ Sisimai::Eb::ReCOMM => [
71
72
  # - 501 Syntax error in parameters or arguments
72
73
  'syntax error in parameters or arguments',
73
74
  ],
74
- 'userunknown' => [
75
+ Sisimai::Eb::ReUSER => [
75
76
  # - 554 delivery error: dd This user doesn't have a yahoo.com account (***@yahoo.com)
76
77
  # - 552 1 Requested mail action aborted, mailbox not found (in reply to end of DATA command)
77
78
  "dd this user doesn't have a ",
@@ -5,19 +5,20 @@ module Sisimai
5
5
  # This class is called only Sisimai::Fact class.
6
6
  module Zoho
7
7
  class << self
8
+ require 'sisimai/eb'
8
9
  MessagesOf = {
9
- 'authfailure' => [
10
+ Sisimai::Eb::ReAUTH => [
10
11
  # - <*******@zoho.com>: host smtpin.zoho.com[204.141.33.23] said: 550 5.7.1 Email
11
12
  # rejected per DMARC policy for zoho.com
12
13
  "Email rejected per DMARC policy",
13
14
  ],
14
- 'blocked' => [
15
+ Sisimai::Eb::ReBLOC => [
15
16
  # - mx.zoho.com[204.141.33.44]:25, delay=1202, delays=1200/0/0.91/0.30, dsn=4.7.1,
16
17
  # status=deferred (host mx.zoho.com[204.141.33.44] said:
17
18
  # 451 4.7.1 Greylisted, try again after some time (in reply to RCPT TO command))
18
19
  "Greylisted, try again after some time",
19
20
  ],
20
- 'rejected' => [
21
+ Sisimai::Eb::ReFROM => [
21
22
  # - <*******@zoho.com>: host smtpin.zoho.com[204.141.33.23] said: 554 5.7.1 Email
22
23
  # cannot be delivered. Reason: Email flagged as Spam. (in reply to RCPT TO command)
23
24
  # - <***@zoho.com>: host mx.zoho.com[136.143.183.44] said: 541 5.4.1 Mail rejected
@@ -25,24 +26,24 @@ module Sisimai
25
26
  "Email cannot be delivered. Reason: Email flagged as Spam",
26
27
  "Mail rejected by destination domain",
27
28
  ],
28
- 'policyviolation' => [
29
+ Sisimai::Eb::ReWONT => [
29
30
  # - <*******@zoho.com>: host smtpin.zoho.com[204.141.33.23] said: 554 5.7.7 Email
30
31
  # policy violation detected (in reply to end of DATA command)
31
32
  "Email policy violation detected",
32
33
  "Mailbox delivery restricted by policy error",
33
34
  ],
34
- 'systemerror' => [
35
+ Sisimai::Eb::RePROC => [
35
36
  # - https://github.com/zoho/zohodesk-oas/blob/main/v1.0/EmailFailureAlert.json#L168
36
37
  # 452 4.3.1 Temporary System Error
37
38
  "Temporary System Error",
38
39
  ],
39
- 'userunknown' => [
40
+ Sisimai::Eb::ReUSER => [
40
41
  # - <*******@zoho.com>: host smtpin.zoho.com[204.141.33.23] said:
41
42
  # 550 5.1.1 User does not exist - <***@zoho.com> (in reply to RCPT TO command)
42
43
  # - 552 5.1.1 <****@zoho.com> Mailbox delivery failure policy error
43
44
  "User does not exist",
44
45
  ],
45
- 'virusdetected' => [
46
+ Sisimai::Eb::ReEXEC => [
46
47
  # - 552 5.7.1 virus **** detected by Zoho Mail
47
48
  " detected by Zoho Mail",
48
49
  ],
data/lib/sisimai/rhost.rb CHANGED
@@ -24,7 +24,7 @@ module Sisimai
24
24
  "Spectrum" => ["charter.net"],
25
25
  "Tencent" => [".qq.com"],
26
26
  "YahooInc" => [".yahoodns.net"],
27
- "Zoho" => [".zoho.com", ".zoho.eu"],
27
+ "Zoho" => [".zoho.com", ".zoho.eu", ".zoho.jp", ".zoho.com.au", ".zoho.com.cn", ".zoho.in"],
28
28
  }.freeze
29
29
 
30
30
  # Returns the rhost class name
@@ -2,17 +2,22 @@ module Sisimai
2
2
  module SMTP
3
3
  # Sisimai::SMTP::Transcript is an SMTP Command related utilities
4
4
  module Command
5
- ExceptDATA = ["CONN", "EHLO", "HELO", "MAIL", "RCPT"].freeze
6
- BeforeRCPT = ["CONN", "EHLO", "EHLO", "MAIL", "AUTH", "STARTTLS"].freeze
5
+ require 'sisimai/eb'
6
+ ExceptDATA = [Sisimai::Eb::CeCONN, Sisimai::Eb::CeEHLO, Sisimai::Eb::CeHELO,
7
+ Sisimai::Eb::CeMAIL, Sisimai::Eb::CeRCPT].freeze
8
+ BeforeRCPT = [Sisimai::Eb::CeCONN, Sisimai::Eb::CeEHLO, Sisimai::Eb::CeHELO,
9
+ Sisimai::Eb::CeMAIL, Sisimai::Eb::CeAUTH, Sisimai::Eb::CeTTLS].freeze
7
10
  class << self
8
11
  Availables = [
9
- "HELO", "EHLO", "MAIL", "RCPT", "DATA", "QUIT", "RSET", "NOOP", "VRFY", "ETRN", "EXPN",
10
- "HELP", "AUTH", "STARTTLS", "XFORWARD",
11
- "CONN", # CONN is a pseudo SMTP command used only in Sisimai
12
+ Sisimai::Eb::CeEHLO, Sisimai::Eb::CeHELO, Sisimai::Eb::CeMAIL, Sisimai::Eb::CeRCPT, Sisimai::Eb::CeDATA,
13
+ Sisimai::Eb::CeQUIT, Sisimai::Eb::CeRSET, Sisimai::Eb::CeNOOP, Sisimai::Eb::CeVRFY, Sisimai::Eb::CeETRN,
14
+ Sisimai::Eb::CeEXPN, Sisimai::Eb::CeHELP, Sisimai::Eb::CeAUTH, Sisimai::Eb::CeTTLS, Sisimai::Eb::CeXFWD,
15
+ Sisimai::Eb::CeCONN, # CONN is a pseudo SMTP command used only in Sisimai
12
16
  ].freeze
13
17
  Detectable = [
14
- "HELO", "EHLO", "STARTTLS", "AUTH PLAIN", "AUTH LOGIN", "AUTH CRAM-", "AUTH DIGEST-",
15
- "MAIL F", "RCPT", "RCPT T", "DATA", "QUIT", "XFORWARD",
18
+ Sisimai::Eb::CeHELO, Sisimai::Eb::CeEHLO, Sisimai::Eb::CeTTLS, "AUTH PLAIN", "AUTH LOGIN",
19
+ "AUTH CRAM-", "AUTH DIGEST-", "MAIL F", Sisimai::Eb::CeRCPT, "RCPT T", Sisimai::Eb::CeDATA,
20
+ Sisimai::Eb::CeQUIT, Sisimai::Eb::CeXFWD,
16
21
  ].freeze
17
22
 
18
23
  # Check that an SMTP command in the argument is valid or not
@@ -33,7 +38,7 @@ module Sisimai
33
38
  return "" if Sisimai::SMTP::Command.test(argv0) == false
34
39
 
35
40
  issuedcode = " " + argv0.downcase + " "
36
- commandmap = {"STAR" => "STARTTLS", "XFOR" => "XFORWARD"}
41
+ commandmap = {"STAR" => Sisimai::Eb::CeTTLS, "XFOR" => Sisimai::Eb::CeXFWD}
37
42
  commandset = []
38
43
 
39
44
  Detectable.each do |e|
@@ -3,6 +3,7 @@ module Sisimai
3
3
  # Sisimai::SMTP::Failure is utilities for checking SMTP Errors from error message text.
4
4
  module Failure
5
5
  class << self
6
+ require 'sisimai/eb'
6
7
  require 'sisimai/smtp/reply'
7
8
  require 'sisimai/smtp/status'
8
9
 
@@ -44,10 +45,10 @@ module Sisimai
44
45
  # @return [Boolean] true: is a hard bounce
45
46
  def is_hardbounce(argv1 = '', argv2 = '')
46
47
  return false if argv1.to_s == ""
47
- return false if argv1 == "undefined" || argv1 == "onhold"
48
- return false if argv1 == "delivered" || argv1 == "feedback" || argv1 == "vacation"
49
- return true if argv1 == "hasmoved" || argv1 == "userunknown" || argv1 == "hostunknown"
50
- return false if argv1 != "notaccept"
48
+ return false if argv1 == Sisimai::Eb::Re___0 || argv1 == Sisimai::Eb::Re___1
49
+ return false if argv1 == Sisimai::Eb::ReSENT || argv1 == Sisimai::Eb::ReFEED || argv1 == Sisimai::Eb::ReAWAY
50
+ return true if argv1 == Sisimai::Eb::ReMOVE || argv1 == Sisimai::Eb::ReUSER || argv1 == Sisimai::Eb::ReHOST
51
+ return false if argv1 != Sisimai::Eb::Re00MX
51
52
 
52
53
  # NotAccept: 5xx => hard bounce, 4xx => soft bounce
53
54
  hardbounce = false
@@ -72,10 +73,10 @@ module Sisimai
72
73
  # @return [Boolean] true: is a soft bounce
73
74
  def is_softbounce(argv1 = '', argv2 = '')
74
75
  return false if argv1.to_s == ""
75
- return false if argv1 == "delivered" || argv1 == "feedback" || argv1 == "vacation"
76
- return false if argv1 == "hasmoved" || argv1 == "userunknown" || argv1 == "hostunknown"
77
- return true if argv1 == "undefined" || argv1 == "onhold"
78
- return true if argv1 != "notaccept"
76
+ return false if argv1 == Sisimai::Eb::ReSENT || argv1 == Sisimai::Eb::ReFEED || argv1 == Sisimai::Eb::ReAWAY
77
+ return false if argv1 == Sisimai::Eb::ReMOVE || argv1 == Sisimai::Eb::ReUSER || argv1 == Sisimai::Eb::ReHOST
78
+ return true if argv1 == Sisimai::Eb::Re___0 || argv1 == Sisimai::Eb::Re___0
79
+ return true if argv1 != Sisimai::Eb::Re00MX
79
80
 
80
81
  # NotAccept: 5xx => hard bounce, 4xx => soft bounce
81
82
  softbounce = false
@@ -46,6 +46,7 @@ module Sisimai
46
46
  # Sisimai::SMTP::Reply is utilities for getting SMTP Reply Code value from error message text.
47
47
  module Reply
48
48
  class << self
49
+ require 'sisimai/eb'
49
50
  ReplyCode2 = [
50
51
  # http://www.ietf.org/rfc/rfc5321.txt
51
52
  # 211 System status, or system help reply
@@ -111,28 +112,28 @@ module Sisimai
111
112
  ].freeze
112
113
  CodeOfSMTP = {'2' => ReplyCode2, '4' => ReplyCode4, '5' => ReplyCode5}.freeze
113
114
  Associated = {
114
- "422" => ["AUTH", "4.7.12", "securityerror"], # RFC5238
115
- "432" => ["AUTH", "4.7.12", "securityerror"], # RFC4954, RFC5321
116
- "451" => ["", "", "systemerror"], # RFC2465, RFC5321
117
- "452" => ["", "", "systemfull"], # RFC5321
118
- "454" => ["AUTH", "4.7.0", "securityerror"], # RFC3027, RFC4954
119
- "455" => ["", "", "syntaxerror"], # RFC5321
120
- "500" => ["", "", "syntaxerror"], # RFC5321
121
- "501" => ["", "", "syntaxerror"], # RFC5321
122
- "502" => ["", "", "syntaxerror"], # RFC5321
123
- "503" => ["", "", "syntaxerror"], # RFC5321
124
- "504" => ["", "", "syntaxerror"], # RFC5321
125
- "521" => ["CONN", "", "notaccept"], # RFC7504
126
- "523" => ["AUTH", "5.7.10", "securityerror"], # RFC5248
127
- "524" => ["AUTH", "5.7.11", "securityerror"], # RFC5248
128
- "525" => ["AUTH", "5.7.13", "securityerror"], # RFC5248
129
- "534" => ["AUTH", "5.7.9", "securityerror"], # RFC4954, RFC5248
130
- "535" => ["AUTH", "5.7.8", "securityerror"], # RFC4954, RFC5248
131
- "538" => ["AUTH", "5.7.11", "securityerror"], # RFC4954, RFC5248
132
- "551" => ["", "", "hasmoved"], # RFC5321, RFC5336, RFC6531
133
- "552" => ["", "", "mailboxfull"], # RFC5321
134
- "555" => ["", "", "syntaxerror"], # RFC5321
135
- "556" => ["RCPT", "", "notaccept"], # RFC7504
115
+ "422" => [Sisimai::Eb::CeAUTH, "4.7.12", Sisimai::Eb::ReSAFE], # RFC5238
116
+ "432" => [Sisimai::Eb::CeAUTH, "4.7.12", Sisimai::Eb::ReSAFE], # RFC4954, RFC5321
117
+ "451" => ["", "", Sisimai::Eb::RePROC], # RFC2465, RFC5321
118
+ "452" => ["", "", Sisimai::Eb::ReDISK], # RFC5321
119
+ "454" => [Sisimai::Eb::CeAUTH, "4.7.0", Sisimai::Eb::ReSAFE], # RFC3027, RFC4954
120
+ "455" => ["", "", Sisimai::Eb::ReCOMM], # RFC5321
121
+ "500" => ["", "", Sisimai::Eb::ReCOMM], # RFC5321
122
+ "501" => ["", "", Sisimai::Eb::ReCOMM], # RFC5321
123
+ "502" => ["", "", Sisimai::Eb::ReCOMM], # RFC5321
124
+ "503" => ["", "", Sisimai::Eb::ReCOMM], # RFC5321
125
+ "504" => ["", "", Sisimai::Eb::ReCOMM], # RFC5321
126
+ "521" => [Sisimai::Eb::CeCONN, "", Sisimai::Eb::Re00MX], # RFC7504
127
+ "523" => [Sisimai::Eb::CeAUTH, "5.7.10", Sisimai::Eb::ReSAFE], # RFC5248
128
+ "524" => [Sisimai::Eb::CeAUTH, "5.7.11", Sisimai::Eb::ReSAFE], # RFC5248
129
+ "525" => [Sisimai::Eb::CeAUTH, "5.7.13", Sisimai::Eb::ReSAFE], # RFC5248
130
+ "534" => [Sisimai::Eb::CeAUTH, "5.7.9", Sisimai::Eb::ReSAFE], # RFC4954, RFC5248
131
+ "535" => [Sisimai::Eb::CeAUTH, "5.7.8", Sisimai::Eb::ReSAFE], # RFC4954, RFC5248
132
+ "538" => [Sisimai::Eb::CeAUTH, "5.7.11", Sisimai::Eb::ReSAFE], # RFC4954, RFC5248
133
+ "551" => ["", "", Sisimai::Eb::ReMOVE], # RFC5321, RFC5336, RFC6531
134
+ "552" => ["", "", Sisimai::Eb::ReFULL], # RFC5321
135
+ "555" => ["", "", Sisimai::Eb::ReCOMM], # RFC5321
136
+ "556" => [Sisimai::Eb::CeRCPT, "", Sisimai::Eb::Re00MX], # RFC7504
136
137
  }.freeze
137
138
 
138
139
  # Check whether a reply code is a valid code or not