sisimai 5.0.2-java → 5.1.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 (168) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/codecovio.yml +35 -0
  3. data/.github/workflows/rake-test.yml +27 -24
  4. data/ChangeLog.md +62 -0
  5. data/Gemfile +2 -0
  6. data/README-JA.md +21 -18
  7. data/README.md +23 -20
  8. data/lib/sisimai/arf.rb +27 -8
  9. data/lib/sisimai/fact/json.rb +2 -2
  10. data/lib/sisimai/fact/yaml.rb +2 -2
  11. data/lib/sisimai/fact.rb +4 -19
  12. data/lib/sisimai/lhost/activehunter.rb +4 -3
  13. data/lib/sisimai/lhost/amavis.rb +4 -4
  14. data/lib/sisimai/lhost/amazonses.rb +6 -6
  15. data/lib/sisimai/lhost/amazonworkmail.rb +4 -4
  16. data/lib/sisimai/lhost/aol.rb +4 -4
  17. data/lib/sisimai/lhost/apachejames.rb +4 -4
  18. data/lib/sisimai/lhost/barracuda.rb +4 -4
  19. data/lib/sisimai/lhost/bigfoot.rb +4 -4
  20. data/lib/sisimai/lhost/biglobe.rb +4 -4
  21. data/lib/sisimai/lhost/courier.rb +4 -4
  22. data/lib/sisimai/lhost/domino.rb +4 -4
  23. data/lib/sisimai/lhost/dragonfly.rb +114 -0
  24. data/lib/sisimai/lhost/einsundeins.rb +4 -4
  25. data/lib/sisimai/lhost/exchange2003.rb +4 -3
  26. data/lib/sisimai/lhost/exchange2007.rb +4 -3
  27. data/lib/sisimai/lhost/exim.rb +4 -4
  28. data/lib/sisimai/lhost/ezweb.rb +4 -4
  29. data/lib/sisimai/lhost/facebook.rb +4 -4
  30. data/lib/sisimai/lhost/fml.rb +4 -4
  31. data/lib/sisimai/lhost/gmail.rb +4 -4
  32. data/lib/sisimai/lhost/gmx.rb +4 -4
  33. data/lib/sisimai/lhost/googlegroups.rb +4 -4
  34. data/lib/sisimai/lhost/gsuite.rb +4 -4
  35. data/lib/sisimai/lhost/imailserver.rb +4 -3
  36. data/lib/sisimai/lhost/interscanmss.rb +5 -4
  37. data/lib/sisimai/lhost/kddi.rb +4 -4
  38. data/lib/sisimai/lhost/mailfoundry.rb +4 -4
  39. data/lib/sisimai/lhost/mailmarshalsmtp.rb +6 -5
  40. data/lib/sisimai/lhost/mailru.rb +4 -4
  41. data/lib/sisimai/lhost/mcafee.rb +4 -4
  42. data/lib/sisimai/lhost/messagelabs.rb +4 -3
  43. data/lib/sisimai/lhost/messagingserver.rb +5 -4
  44. data/lib/sisimai/lhost/mfilter.rb +4 -4
  45. data/lib/sisimai/lhost/mxlogic.rb +3 -3
  46. data/lib/sisimai/lhost/notes.rb +4 -4
  47. data/lib/sisimai/lhost/office365.rb +4 -4
  48. data/lib/sisimai/lhost/opensmtpd.rb +9 -7
  49. data/lib/sisimai/lhost/outlook.rb +4 -4
  50. data/lib/sisimai/lhost/postfix.rb +4 -4
  51. data/lib/sisimai/lhost/powermta.rb +4 -4
  52. data/lib/sisimai/lhost/qmail.rb +10 -10
  53. data/lib/sisimai/lhost/receivingses.rb +4 -4
  54. data/lib/sisimai/lhost/sendgrid.rb +4 -4
  55. data/lib/sisimai/lhost/sendmail.rb +4 -4
  56. data/lib/sisimai/lhost/surfcontrol.rb +4 -4
  57. data/lib/sisimai/lhost/v5sendmail.rb +5 -4
  58. data/lib/sisimai/lhost/verizon.rb +4 -4
  59. data/lib/sisimai/lhost/x1.rb +3 -3
  60. data/lib/sisimai/lhost/x2.rb +3 -3
  61. data/lib/sisimai/lhost/x3.rb +3 -3
  62. data/lib/sisimai/lhost/x4.rb +3 -3
  63. data/lib/sisimai/lhost/x5.rb +3 -3
  64. data/lib/sisimai/lhost/x6.rb +3 -3
  65. data/lib/sisimai/lhost/yahoo.rb +4 -4
  66. data/lib/sisimai/lhost/yandex.rb +4 -4
  67. data/lib/sisimai/lhost/zoho.rb +4 -4
  68. data/lib/sisimai/lhost.rb +5 -5
  69. data/lib/sisimai/mail/maildir.rb +1 -1
  70. data/lib/sisimai/mail/stdin.rb +1 -1
  71. data/lib/sisimai/mda.rb +3 -3
  72. data/lib/sisimai/message.rb +9 -9
  73. data/lib/sisimai/order.rb +1 -0
  74. data/lib/sisimai/reason/badreputation.rb +1 -1
  75. data/lib/sisimai/reason/blocked.rb +1 -0
  76. data/lib/sisimai/reason/expired.rb +7 -0
  77. data/lib/sisimai/reason/filtered.rb +1 -0
  78. data/lib/sisimai/reason/mailboxfull.rb +3 -0
  79. data/lib/sisimai/reason/norelaying.rb +2 -0
  80. data/lib/sisimai/reason/rejected.rb +2 -1
  81. data/lib/sisimai/reason/suspend.rb +4 -0
  82. data/lib/sisimai/reason/userunknown.rb +4 -1
  83. data/lib/sisimai/reason.rb +8 -8
  84. data/lib/sisimai/rfc3464.rb +3 -3
  85. data/lib/sisimai/rfc3834.rb +2 -2
  86. data/lib/sisimai/rhost/apple.rb +92 -0
  87. data/lib/sisimai/rhost/cox.rb +81 -32
  88. data/lib/sisimai/rhost/franceptt.rb +84 -81
  89. data/lib/sisimai/rhost/godaddy.rb +205 -43
  90. data/lib/sisimai/rhost/google.rb +85 -72
  91. data/lib/sisimai/rhost/iua.rb +2 -2
  92. data/lib/sisimai/rhost/kddi.rb +6 -5
  93. data/lib/sisimai/rhost/microsoft.rb +12 -5
  94. data/lib/sisimai/rhost/mimecast.rb +15 -4
  95. data/lib/sisimai/rhost/nttdocomo.rb +4 -4
  96. data/lib/sisimai/rhost/spectrum.rb +100 -40
  97. data/lib/sisimai/rhost/tencent.rb +46 -25
  98. data/lib/sisimai/rhost/yahooinc.rb +110 -0
  99. data/lib/sisimai/rhost.rb +28 -35
  100. data/lib/sisimai/smtp/reply.rb +4 -3
  101. data/lib/sisimai/smtp/transcript.rb +3 -3
  102. data/lib/sisimai/version.rb +1 -1
  103. data/lib/sisimai.rb +0 -6
  104. data/set-of-emails/maildir/bsd/arf-26.eml +27 -0
  105. data/set-of-emails/maildir/bsd/lhost-dragonfly-01.eml +36 -0
  106. data/set-of-emails/maildir/bsd/lhost-dragonfly-02.eml +32 -0
  107. data/set-of-emails/maildir/bsd/lhost-dragonfly-03.eml +32 -0
  108. data/set-of-emails/maildir/bsd/lhost-dragonfly-04.eml +31 -0
  109. data/set-of-emails/maildir/bsd/lhost-dragonfly-05.eml +32 -0
  110. data/set-of-emails/maildir/bsd/lhost-dragonfly-06.eml +32 -0
  111. data/set-of-emails/maildir/bsd/lhost-dragonfly-07.eml +32 -0
  112. data/set-of-emails/maildir/bsd/lhost-dragonfly-08.eml +32 -0
  113. data/set-of-emails/maildir/bsd/lhost-dragonfly-09.eml +32 -0
  114. data/set-of-emails/maildir/bsd/lhost-dragonfly-10.eml +32 -0
  115. data/set-of-emails/maildir/bsd/lhost-dragonfly-11.eml +32 -0
  116. data/set-of-emails/maildir/bsd/lhost-dragonfly-12.eml +32 -0
  117. data/set-of-emails/maildir/bsd/lhost-dragonfly-13.eml +32 -0
  118. data/set-of-emails/maildir/bsd/lhost-dragonfly-14.eml +32 -0
  119. data/set-of-emails/maildir/bsd/lhost-dragonfly-15.eml +32 -0
  120. data/set-of-emails/maildir/bsd/lhost-dragonfly-16.eml +32 -0
  121. data/set-of-emails/maildir/bsd/lhost-dragonfly-17.eml +32 -0
  122. data/set-of-emails/maildir/bsd/lhost-dragonfly-18.eml +32 -0
  123. data/set-of-emails/maildir/bsd/lhost-dragonfly-19.eml +32 -0
  124. data/set-of-emails/maildir/bsd/lhost-dragonfly-20.eml +32 -0
  125. data/set-of-emails/maildir/bsd/lhost-dragonfly-21.eml +33 -0
  126. data/set-of-emails/maildir/bsd/lhost-dragonfly-22.eml +32 -0
  127. data/set-of-emails/maildir/bsd/lhost-dragonfly-23.eml +32 -0
  128. data/set-of-emails/maildir/bsd/lhost-dragonfly-24.eml +32 -0
  129. data/set-of-emails/maildir/bsd/lhost-dragonfly-25.eml +33 -0
  130. data/set-of-emails/maildir/bsd/lhost-dragonfly-26.eml +33 -0
  131. data/set-of-emails/maildir/bsd/lhost-dragonfly-27.eml +47 -0
  132. data/set-of-emails/maildir/bsd/lhost-dragonfly-28.eml +47 -0
  133. data/set-of-emails/maildir/bsd/lhost-dragonfly-29.eml +32 -0
  134. data/set-of-emails/maildir/bsd/lhost-dragonfly-30.eml +32 -0
  135. data/set-of-emails/maildir/bsd/lhost-opensmtpd-10.eml +58 -0
  136. data/set-of-emails/maildir/bsd/lhost-opensmtpd-11.eml +58 -0
  137. data/set-of-emails/maildir/bsd/lhost-opensmtpd-12.eml +62 -0
  138. data/set-of-emails/maildir/bsd/lhost-opensmtpd-13.eml +62 -0
  139. data/set-of-emails/maildir/bsd/lhost-opensmtpd-14.eml +58 -0
  140. data/set-of-emails/maildir/bsd/lhost-opensmtpd-15.eml +63 -0
  141. data/set-of-emails/maildir/bsd/lhost-opensmtpd-16.eml +62 -0
  142. data/set-of-emails/maildir/bsd/lhost-opensmtpd-17.eml +63 -0
  143. data/set-of-emails/maildir/bsd/lhost-qmail-11.eml +29 -0
  144. data/set-of-emails/maildir/bsd/lhost-qmail-12.eml +29 -0
  145. data/set-of-emails/maildir/bsd/lhost-qmail-13.eml +29 -0
  146. data/set-of-emails/maildir/bsd/lhost-qmail-14.eml +34 -0
  147. data/set-of-emails/maildir/bsd/lhost-qmail-15.eml +30 -0
  148. data/set-of-emails/maildir/bsd/lhost-qmail-16.eml +31 -0
  149. data/set-of-emails/maildir/bsd/lhost-qmail-17.eml +38 -0
  150. data/set-of-emails/maildir/bsd/lhost-qmail-18.eml +31 -0
  151. data/set-of-emails/maildir/bsd/lhost-qmail-19.eml +31 -0
  152. data/set-of-emails/maildir/bsd/lhost-qmail-20.eml +46 -0
  153. data/set-of-emails/maildir/bsd/lhost-qmail-21.eml +41 -0
  154. data/set-of-emails/maildir/bsd/lhost-qmail-22.eml +42 -0
  155. data/set-of-emails/maildir/bsd/lhost-qmail-23.eml +43 -0
  156. data/set-of-emails/maildir/bsd/lhost-qmail-24.eml +43 -0
  157. data/set-of-emails/maildir/bsd/lhost-qmail-25.eml +54 -0
  158. data/set-of-emails/maildir/bsd/rhost-apple-01.eml +79 -0
  159. data/set-of-emails/maildir/bsd/rhost-apple-02.eml +81 -0
  160. data/set-of-emails/maildir/bsd/rhost-apple-03.eml +75 -0
  161. data/set-of-emails/maildir/bsd/rhost-apple-04.eml +74 -0
  162. data/set-of-emails/maildir/bsd/rhost-microsoft-04.eml +86 -0
  163. data/set-of-emails/maildir/bsd/rhost-microsoft-05.eml +83 -0
  164. data/set-of-emails/maildir/bsd/rhost-yahooinc-01.eml +80 -0
  165. data/set-of-emails/maildir/bsd/rhost-yahooinc-02.eml +83 -0
  166. data/set-of-emails/maildir/bsd/rhost-yahooinc-03.eml +125 -0
  167. metadata +69 -3
  168. data/.travis.yml +0 -23
@@ -6,16 +6,54 @@ module Sisimai
6
6
  module Cox
7
7
  class << self
8
8
  ErrorCodes = {
9
- # https://www.cox.com/residential/support/email-error-codes.html
10
- 'CXBL' => 'blocked', # The sending IP address has been blocked by Cox due to exhibiting spam-like behavior.
9
+ # CXBL
10
+ # - The sending IP address has been blocked by Cox due to exhibiting spam-like behavior.
11
+ # - Send an email request to Cox to ask for a sending IP address be unblocked.
12
+ # Note: Cox has sole discretion whether to unblock the sending IP address.
13
+ 'CXBL' => 'blocked',
14
+
15
+ # CXDNS
16
+ # - There was an issue with the connecting IP address Domain Name System (DNS).
17
+ # - The Reverse DNS (rDNS) lookup for your IP address is failing.
18
+ # - Confirm the IP address that sends your email.
19
+ # - Check the rDNS of that IP address. If it passes, then wait 24 hours and try resending
20
+ # your email.
21
+ 'CXDNS' => 'requireptr',
22
+
23
+ # CXSNDR
24
+ # - There was a problem with the sender's domain.
25
+ # - Your email failed authentication checks against your sending domain's SPF, DomainKeys,
26
+ # or DKIM policy.
27
+ 'CXSNDR' => 'authfailure',
28
+
29
+ # CXSMTP
30
+ # - There was a violation of SMTP protocol.
31
+ # - Your email wasn't delivered because Cox was unable to verify that it came from a
32
+ # legitimate email sender.
33
+ 'CXSMTP' => 'rejected',
34
+
35
+ # CXCNCT
36
+ # - There was a connection issue from the IP address.
37
+ # - There is a limit to the number of concurrent SMTP connections per IP address to
38
+ # protect the systems against attack. Ensure that the sending email server is not
39
+ # opening more than 10 concurrent connections to avoid reaching this limit.
40
+ 'CXCNCT' => 'toomanyconn',
41
+
42
+ # CXMXRT
43
+ # - The sender has sent email to too many recipients and needs to wait before sending
44
+ # more email.
45
+ # - The email sender has exceeded the maximum number of sent email allowed.
46
+ 'CXMXRT' => 'toomanyconn',
47
+
48
+ # CDRBL
49
+ # - The sending IP address has been temporarily blocked by Cox due to exhibiting spam-like
50
+ # behavior.
51
+ # - The block duration varies depending on reputation and other factors, but will not exceed
52
+ # 24 hours. Inspect email traffic for potential spam, and retry email delivery.
53
+ 'CDRBL' => 'blocked',
54
+
11
55
  'CXTHRT' => 'securityerror', # Email sending limited due to suspicious account activity.
12
56
  'CXMJ' => 'securityerror', # Email sending blocked due to suspicious account activity on primary Cox account.
13
- 'CXDNS' => 'blocked', # There was an issue with the connecting IP address Domain Name System (DNS).
14
- 'CXSNDR' => 'rejected', # There was a problem with the sender's domain.
15
- 'CXSMTP' => 'rejected', # Your email wasn't delivered because Cox was unable to verify that it came from a legitimate email sender.
16
- 'CXCNCT' => 'toomanyconn', # There is a limit to the number of concurrent SMTP connections per IP address
17
- 'CXMXRT' => 'toomanyconn', # The email sender has exceeded the maximum number of sent email allowed.
18
- 'CDRBL' => 'blocked', # The sending IP address has been temporarily blocked by Cox due to exhibiting spam-like behavior.
19
57
  'IPBL0001' => 'blocked', # The sending IP address is listed in the Spamhaus Zen DNSBL.
20
58
  'IPBL0010' => 'blocked', # The sending IP is listed in the Return Path DNSBL.
21
59
  'IPBL0100' => 'blocked', # The sending IP is listed in the Invaluement ivmSIP DNSBL.
@@ -32,6 +70,7 @@ module Sisimai
32
70
  'IPBL1110' => 'blocked', # The sending IP is in the Cloudmark CSI, Return Path and Invaluement ivmSIP DNSBLs.
33
71
  'IPBL1111' => 'blocked', # The sending IP is in the Cloudmark CSI, Spamhaus Zen, Return Path and Invaluement ivmSIP DNSBLs.
34
72
  'IPBL00001' => 'blocked', # The sending IP address is listed on a Spamhaus blacklist. Check your status at Spamhaus.
73
+
35
74
  'URLBL011' => 'spamdetected', # A URL within the body of the message was found on blocklists SURBL and Spamhaus DBL.
36
75
  'URLBL101' => 'spamdetected', # A URL within the body of the message was found on blocklists SURBL and ivmURI.
37
76
  'URLBL110' => 'spamdetected', # A URL within the body of the message was found on blocklists Spamhaus DBL and ivmURI.
@@ -39,63 +78,73 @@ module Sisimai
39
78
  }.freeze
40
79
  MessagesOf = {
41
80
  'blocked' => [
42
- # Cox requires that all connecting email servers contain valid reverse DNS PTR records.
43
- 'rejected - no rDNS',
44
- # An email client has repeatedly sent bad commands or invalid passwords resulting in a three-hour block of the client's IP address.
81
+ # - An email client has repeatedly sent bad commands or invalid passwords resulting in
82
+ # a three-hour block of the client's IP address.
83
+ # - The sending IP address has exceeded the threshold of invalid recipients and has
84
+ # been blocked.
45
85
  'cox too many bad commands from',
46
- # The reverse DNS check of the sending server IP address has failed.
47
- 'DNS check failure - try again later',
48
- # The sending IP address has exceeded the threshold of invalid recipients and has been blocked.
49
- 'Too many invalid recipients',
86
+ 'too many invalid recipients',
50
87
  ],
51
- 'notaccept' => [
52
- # Our systems are experiencing an issue which is causing a temporary inability to accept new email.
53
- 'ESMTP server temporarily not available',
88
+ 'requireptr' => [
89
+ # - The reverse DNS check of the sending server IP address has failed.
90
+ # - Cox requires that all connecting email servers contain valid reverse DNS PTR records.
91
+ 'dns check failure - try again later',
92
+ 'rejected - no rdns',
54
93
  ],
55
94
  'policyviolation' => [
56
- # The sending server has attempted to communicate too soon within the SMTP transaction
57
- 'ESMTP no data before greeting',
58
- # The message has been rejected because it contains an attachment with one of the following prohibited
59
- # file types, which commonly contain viruses: .shb, .shs, .vbe, .vbs, .wsc, .wsf, .wsh, .pif, .msc,
60
- # .msi, .msp, .reg, .sct, .bat, .chm, .isp, .cpl, .js, .jse, .scr, .exe.
95
+ # - The sending server has attempted to communicate too soon within the SMTP transaction
96
+ # - The message has been rejected because it contains an attachment with one of the
97
+ # following prohibited file types, which commonly contain viruses: .shb, .shs, .vbe,
98
+ # .vbs, .wsc, .wsf, .wsh, .pif, .msc, .msi, .msp, .reg, .sct, .bat, .chm, .isp, .cpl,
99
+ # .js, .jse, .scr, .exe.
100
+ 'esmtp no data before greeting',
61
101
  'attachment extension is forbidden',
62
102
  ],
63
103
  'rejected' => [
64
104
  # Cox requires that all sender domains resolve to a valid MX or A-record within DNS.
65
105
  'sender rejected',
66
106
  ],
107
+ 'systemerror' => [
108
+ # - Our systems are experiencing an issue which is causing a temporary inability to
109
+ # accept new email.
110
+ 'esmtp server temporarily not available',
111
+ ],
67
112
  'toomanyconn' => [
68
- # The sending IP address has exceeded the five maximum concurrent connection limit.
113
+ # - The sending IP address has exceeded the five maximum concurrent connection limit.
114
+ # - The SMTP connection has exceeded the 100 email message threshold and was disconnected.
115
+ # - The sending IP address has exceeded one of these rate limits and has been temporarily
116
+ # blocked.
69
117
  'too many sessions from',
70
- # The SMTP connection has exceeded the 100 email message threshold and was disconnected.
71
118
  'requested action aborted: try again later',
72
- # The sending IP address has exceeded one of these rate limits and has been temporarily blocked.
73
- 'Message threshold exceeded',
119
+ 'message threshold exceeded',
74
120
  ],
75
121
  'userunknown' => [
76
- 'recipient rejected', # The intended recipient is not a valid Cox Email account.
122
+ # - The intended recipient is not a valid Cox Email account.
123
+ 'recipient rejected',
77
124
  ],
78
125
  }.freeze
79
126
 
80
127
  # Detect bounce reason from https://cox.com/
81
- # @param [Sisimai::Fact] argvs Parsed email object
128
+ # @param [Sisimai::Fact] argvs Decoded email object
82
129
  # @return [String, Nil] The bounce reason at Cox
130
+ # @see https://www.cox.com/residential/support/email-error-codes.html
83
131
  # @since v4.25.8
84
132
  def get(argvs)
85
- statusmesg = argvs['diagnosticcode']
133
+ issuedcode = argvs['diagnosticcode']
86
134
  codenumber = 0
87
135
 
88
- if cv = statusmesg.match(/AUP#([0-9A-Z]+)/)
136
+ if cv = issuedcode.match(/AUP#([0-9A-Z]+)/)
89
137
  # Capture the numeric part of the error code
90
138
  codenumber = cv[1]
91
139
  end
92
140
  reasontext = ErrorCodes[codenumber] || ''
93
141
 
142
+ issuedcode = argvs['diagnosticcode'].downcase
94
143
  if reasontext.empty?
95
144
  # The error code was not found in ErrorCodes
96
145
  MessagesOf.each_key do |e|
97
146
  # Try to find with each error message defined in MessagesOf
98
- next unless MessagesOf[e].any? { |a| statusmesg.include?(a) }
147
+ next unless MessagesOf[e].any? { |a| issuedcode.include?(a) }
99
148
  reasontext = e
100
149
  break
101
150
  end
@@ -6,144 +6,147 @@ module Sisimai
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
128
+ # @see https://www.postmastery.com/orange-postmaster-smtp-error-codes-ofr/
129
+ # https://smtpfieldmanual.com/provider/orange
136
130
  def get(argvs)
137
- return argvs['reason'] unless argvs['reason'].empty?
138
-
139
- statusmesg = argvs['diagnosticcode']
131
+ issuedcode = argvs['diagnosticcode']
140
132
  reasontext = ''
141
133
 
142
- if cv = statusmesg.match(/\b(LPN|LPNAAA|OFR|OUK)(_[0-9]{3}|[0-9]{3}[-_][0-9]{3})\b/i)
134
+ if cv = issuedcode.match(/\b(LPN|LPNAAA|OFR|OUK)(_[0-9]{3}|[0-9]{3}[-_][0-9]{3})\b/i)
143
135
  # OUK_513, LPN105-104, OFR102-104, ofr_506
144
136
  v = sprintf("%03d", (cv[1] + cv[2])[-3, 3])
145
137
  reasontext = ErrorCodes[v] || 'undefined'
146
138
  end
139
+ return reasontext if reasontext.size > 0
140
+
141
+ issuedcode = issuedcode.downcase
142
+ MessagesOf.each_key do |e|
143
+ MessagesOf[e].each do |f|
144
+ next unless issuedcode.include?(f)
145
+ reasontext = e
146
+ break
147
+ end
148
+ break if reasontext.size > 0
149
+ end
147
150
  return reasontext
148
151
  end
149
152