sisimai 4.25.14-java → 4.25.15-java

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 44a59a8c29e1aed16238ad767faeb2f1f3ead742
4
- data.tar.gz: 434a9f0e30a5c6257794aa628215faad448f4532
3
+ metadata.gz: 9d89dd2f4e8e0109134dcac00b7717d814fb0414
4
+ data.tar.gz: 93dabd9d8f6be60c32345b4d8d77128dc713de5e
5
5
  SHA512:
6
- metadata.gz: e86e13a188372837ab2f7a4180e771c41ef68338e277f109e3edd007a8fc4ffe771586582163b359406359bc4b5e649de13081a38d54a9ac7b06bad6ea3bdbf5
7
- data.tar.gz: 28cfe1bfaef9b1e984b03c5f86a71e425ce1b2327ba38c2d381bfdd2926a15054c9b8387d26a50977f20c9b100e1802d922fff3a66dc5ac93849dfa562107993
6
+ metadata.gz: d5f93246b27ad5ca2087b2c01bc46efb5d1181b1edc758ab42d4cbef42b1ecee0a891855216281eb1f0c1887d4e652c5ea4660c1b1053b6ced70e6d268c6df28
7
+ data.tar.gz: 372715bcccd25217142df9b03822304b6bc88a1d2dd0d513481e124cde30aafc9ae9feab56ea82057209e90cdbed53673c2ff4d914ad1ee5e8802d431d6f1361
data/ChangeLog.md CHANGED
@@ -3,6 +3,45 @@ RELEASE NOTES for Ruby version of Sisimai
3
3
  - releases: "https://github.com/sisimai/rb-sisimai/releases"
4
4
  - download: "https://rubygems.org/gems/sisimai"
5
5
 
6
+ v4.25.15
7
+ --------------------------------------------------------------------------------
8
+ - release: "Thu, 22 Dec 2022 13:13:13 +0900 (JST)"
9
+ - version: "4.25.15"
10
+ - changes:
11
+ - Prevent ReDOS: Regex Denial of Service in `Sisimai::String.to_plain` #244.
12
+ Thanks to @gmcabrita
13
+ - Fix an error reason "5.2.1 exceedlimit" of an error message: "450-4.2.1 The
14
+ user you are trying to contact is receiving mail at a rate that prevents ad-
15
+ ditional messages from being delivered" to "toomanyconn" at Rhost::GoogleApp
16
+ class, imported from sisimai/p5-sisimai#465.
17
+ - Bug fix: getting a "name" part of an email address at Sisimai::Address.find
18
+ - Add many error message patterns at the following classes in `Sisimai/Reason`
19
+ - `Blocked`
20
+ - `ContentError`
21
+ - `Filtered`
22
+ - `NetworkError`
23
+ - `NotAccept`
24
+ - `PolicyViolation`
25
+ - `Rejected`
26
+ - `SpamDetected`
27
+ - `TooManyConn`
28
+ - `UserUnknown`
29
+ - When the value of `diagnosticcode` has enough error message for detecting a
30
+ bounce reason, `expired` will change to `networkerror`
31
+ - Update code in `Sisimai::Lhost::GoogleGroups` module to parse well a bounce
32
+ mail even if an email address of `X-Failed-Recipients:` header does not in-
33
+ clude a domain `@googlegroups.com` #234
34
+ - Import #235 from Sisimai v5, Implement `Sisimai::Rhost::NTTDOCOMO` to parse
35
+ more strictly a bounce mail returned from `mfsmax.docomo.ne.jp`
36
+ - Import #241 from Sisimai v5, Implement `Sisimai::Rhost::Mimecast`
37
+ - Add the following error messages at `Sisimai::Rhost::ExchangeOnline:
38
+ - 451 4.7.650 The mail server [...] has been temporarily rate limited due to
39
+ IP reputation ... (S775)
40
+ - 550 5.7.1 ... Please contact your Internet service provider since part of
41
+ their network is on our block list (S3150)
42
+ - Error messages of Exchange Server 2019 #242
43
+ - Add many error messages at `Sisimai::Rhost::GoogleApps`, Import #243
44
+
6
45
  v4.25.14
7
46
  --------------------------------------------------------------------------------
8
47
  - release: "Mon, 15 Aug 2022 14:22:22 +0900 (JST)"
data/README-JA.md CHANGED
@@ -220,7 +220,7 @@ Differences between Ruby version and Perl version
220
220
  | メール解析速度(1000通のメール) | 2.22秒[2] | 1.35秒 |
221
221
  | インストール方法 | gem install | cpanm, cpm |
222
222
  | 依存モジュール数(コアモジュールを除く) | 1モジュール | 2モジュール |
223
- | LOC:ソースコードの行数 | 10400行 | 10500行 |
223
+ | LOC:ソースコードの行数 | 10600行 | 10800行 |
224
224
  | テスト件数(spec/,t/,xt/ディレクトリ) | 241000件 | 270000件 |
225
225
  | ライセンス | 二条項BSD | 二条項BSD |
226
226
  | 開発会社によるサポート契約 | 提供中 | 提供中 |
@@ -276,7 +276,7 @@ Author
276
276
 
277
277
  Copyright
278
278
  ===============================================================================
279
- Copyright (C) 2015-2020 azumakuniyuki, All Rights Reserved.
279
+ Copyright (C) 2015-2022 azumakuniyuki, All Rights Reserved.
280
280
 
281
281
  License
282
282
  ===============================================================================
data/README.md CHANGED
@@ -225,7 +225,7 @@ and bounceHammer are available at
225
225
  | The speed of parsing email(1000 emails) | 2.22s[2] | 1.35s |
226
226
  | How to install | gem install | cpanm, cpm |
227
227
  | Dependencies (Except core modules) | 1 module | 2 modules |
228
- | LOC:Source lines of code | 10400 lines | 10500 lines |
228
+ | LOC:Source lines of code | 10600 lines | 10800 lines |
229
229
  | The number of tests(spec/,t/,xt/) directory | 241000 tests | 270000 tests |
230
230
  | License | BSD 2-Clause | BSD 2-Clause |
231
231
  | Support Contract provided by Developer | Available | Available |
@@ -283,7 +283,7 @@ Author
283
283
 
284
284
  Copyright
285
285
  ===============================================================================
286
- Copyright (C) 2015-2021 azumakuniyuki, All Rights Reserved.
286
+ Copyright (C) 2015-2022 azumakuniyuki, All Rights Reserved.
287
287
 
288
288
  License
289
289
  ===============================================================================
@@ -176,7 +176,7 @@ module Sisimai
176
176
  else
177
177
  # Deal as a display name
178
178
  readcursor &= ~Indicators[:'comment-block']
179
- v[:name] = e
179
+ v[:name] << e
180
180
  p = ''
181
181
  end
182
182
  next
data/lib/sisimai/data.rb CHANGED
@@ -256,13 +256,17 @@ module Sisimai
256
256
  if vm > 2
257
257
  # Build regular expression for removing string like '550-5.1.1'
258
258
  # from the value of "diagnosticcode"
259
- re = %r/[ ]#{vr}[- ](?:#{vs})?/
259
+ re0 = %r/;?[ ]#{vr}[- ](?:#{vs})?/
260
+ re1 = %r/;?[ ][45]\d\d[- ](?:#{vs})?/
261
+ re2 = %r/;?[ ]#{vr}[- ](?:[45][.]\d[.]\d+)?/
260
262
 
261
263
  # 550-5.7.1 [192.0.2.222] Our system has detected that this message is
262
264
  # 550-5.7.1 likely unsolicited mail. To reduce the amount of spam sent to Gmail,
263
265
  # 550-5.7.1 this message has been blocked. Please visit
264
266
  # 550 5.7.1 https://support.google.com/mail/answer/188131 for more information.
265
- p['diagnosticcode'] = p['diagnosticcode'].gsub(re, ' ')
267
+ p['diagnosticcode'] = p['diagnosticcode'].gsub(re0, ' ')
268
+ p['diagnosticcode'] = p['diagnosticcode'].gsub(re1, ' ')
269
+ p['diagnosticcode'] = p['diagnosticcode'].gsub(re2, ' ')
266
270
  p['diagnosticcode'] = Sisimai::String.sweep(p['diagnosticcode'].sub(%r|<html>.+</html>|i, ''))
267
271
  end
268
272
  end
@@ -22,20 +22,21 @@ module Sisimai::Lhost
22
22
  'RCP-P2', # The attempted recipient's preferences prevent messages from being delivered.
23
23
  'RCP-P3', # The attempted recipient's privacy settings blocked the delivery.
24
24
  ],
25
+ 'blocked' => [
26
+ 'POL-P1', # Your mail server's IP Address is listed on the Spamhaus PBL.
27
+ 'POL-P2', # Facebook will no longer accept mail from your mail server's IP Address.
28
+ ],
25
29
  'mesgtoobig' => [
26
30
  'MSG-P1', # The message exceeds Facebook's maximum allowed size.
27
31
  'INT-P2', # The message exceeds Facebook's maximum allowed size.
28
32
  ],
29
33
  'contenterror' => [
30
34
  'MSG-P2', # The message contains an attachment type that Facebook does not accept.
31
- 'MSG-P3', # The message contains multiple instances of a header field that can only be present once. Please see RFC 5322, section 3.6 for more information
35
+ 'MSG-P3', # The message contains multiple instances of a header field that can only be present once.
32
36
  'POL-P6', # The message contains a url that has been blocked by Facebook.
33
37
  'POL-P7', # The message does not comply with Facebook's abuse policies and will not be accepted.
34
38
  ],
35
39
  'securityerror' => [
36
- 'POL-P1', # Your mail server's IP Address is listed on the Spamhaus PBL.
37
- 'POL-P2', # Facebook will no longer accept mail from your mail server's IP Address.
38
- 'POL-P5', # The message contains a virus.
39
40
  'POL-P7', # The message does not comply with Facebook's Domain Authentication requirements.
40
41
  ],
41
42
  'notaccept' => [
@@ -54,17 +55,20 @@ module Sisimai::Lhost
54
55
  ],
55
56
  'systemerror' => [
56
57
  'CON-T1', # Facebook's mail server currently has too many connections open to allow another one.
58
+ 'RCP-T1', # The attempted recipient address is not currently available due to an internal system issue. This is a temporary condition.
59
+ ],
60
+ 'virusdetected' => [
61
+ 'POL-P5', # The message contains a virus.
57
62
  ],
58
63
  'toomanyconn' => [
64
+ 'CON-T2', # Your mail server currently has too many connections open to Facebook's mail servers.
59
65
  'CON-T3', # Your mail server has opened too many new connections to Facebook's mail servers in a short period of time.
60
66
  ],
61
67
  'suspend' => [
62
68
  'RCP-T4', # The attempted recipient address is currently deactivated. The user may or may not reactivate it.
63
69
  ],
64
70
  'undefined' => [
65
- 'RCP-T1', # The attempted recipient address is not currently available due to an internal system issue. This is a temporary condition.
66
71
  'MSG-T1', # The number of recipients on the message exceeds Facebook's allowed maximum.
67
- 'CON-T2', # Your mail server currently has too many connections open to Facebook's mail servers.
68
72
  'CON-T4', # Your mail server has exceeded the maximum number of recipients for its current connection.
69
73
  ],
70
74
  }.freeze
@@ -19,7 +19,7 @@ module Sisimai::Lhost
19
19
  return nil unless mhead['from'].end_with?('<mailer-daemon@googlemail.com>')
20
20
  return nil unless mhead['subject'].start_with?('Delivery Status Notification')
21
21
  return nil unless mhead['x-failed-recipients']
22
- return nil unless mhead['x-failed-recipients'].include?('@googlegroups.com')
22
+ return nil unless mhead['x-google-smtp-source']
23
23
 
24
24
  # Hello kijitora@libsisimai.org,
25
25
  #
@@ -55,7 +55,6 @@ module Sisimai::Lhost
55
55
 
56
56
  mhead['x-failed-recipients'].split(',').each do |e|
57
57
  # X-Failed-Recipients: neko@example.jp, nyaan@example.org, ...
58
- next unless e.end_with?('@googlegroups.com')
59
58
  next unless Sisimai::RFC5322.is_emailaddress(e)
60
59
 
61
60
  if v['recipient']
@@ -21,7 +21,7 @@ module Sisimai::Lhost
21
21
  'hostunknown' => %r/Unknown host/,
22
22
  'userunknown' => %r/\A(?:Unknown user|Invalid final delivery userid)/,
23
23
  'mailboxfull' => %r/\AUser mailbox exceeds allowed size/,
24
- 'securityerror' => %r/\ARequested action not taken: virus detected/,
24
+ 'virusdetected' => %r/\ARequested action not taken: virus detected/,
25
25
  'undefined' => %r/\Aundeliverable to /,
26
26
  'expired' => %r/\ADelivery failed \d+ attempts/,
27
27
  }.freeze
@@ -245,7 +245,7 @@ module Sisimai
245
245
  # Decode BASE64 Encoded message body, rewrite.
246
246
  mesgformat = (mailheader['content-type'] || '').downcase
247
247
  ctencoding = (mailheader['content-transfer-encoding'] || '').downcase
248
- if mesgformat.start_with?('text/plain', 'text/html')
248
+ if mesgformat.start_with?('text/')
249
249
  # Content-Type: text/plain; charset=UTF-8
250
250
  if ctencoding == 'base64'
251
251
  # Content-Transfer-Encoding: base64
@@ -51,11 +51,12 @@ module Sisimai
51
51
  |does[ ]not[ ]exist:
52
52
  )
53
53
  |dns[ ]lookup[ ]failure:[ ][^ ]+[ ]try[ ]again[ ]later
54
- |dnsbl:attrbl
54
+ |dnsbl:(?:attrbl|rbl[ ]\d+[<][ ].+[ ][>]_is_blocked)
55
55
  |dynamic/zombied/spam[ ]ips[ ]blocked
56
56
  |email[ ]blocked[ ]by[ ](?:[^ ]+[.]barracudacentral[.]org|spamhaus)
57
57
  |error:[ ]no[ ]valid[ ]recipients[ ]from[ ]
58
58
  |esmtp[ ]not[ ]accepting[ ]connections # icloud.com
59
+ |extreme[ ]bad[ ]ip[ ]profile
59
60
  |fix[ ]reverse[ ]dns[ ]for[ ][^ ]+
60
61
  |go[ ]away
61
62
  |helo[ ]command[ ]rejected:
@@ -11,6 +11,7 @@ module Sisimai
11
11
  # Imported from p5-Sisimail/lib/Sisimai/Reason/ContentError.pm
12
12
  class << self
13
13
  Index = [
14
+ 'header size exceeds maximum permitted',
14
15
  'improper use of 8-bit data in message header',
15
16
  'message header size, or recipient list, exceeds policy limit',
16
17
  'message mime complexity exceeds the policy maximum',
@@ -19,6 +19,7 @@ module Sisimai
19
19
  'has restricted sms e-mail', # AT&T
20
20
  'is not accepting any mail',
21
21
  'message rejected due to user rules',
22
+ 'not found recipient account',
22
23
  'refused due to recipient preferences', # Facebook
23
24
  'resolver.rst.notauthorized', # Microsoft Exchange
24
25
  'this account is protected by',
@@ -18,6 +18,7 @@ module Sisimai
18
18
  'dns records for the destination computer could not be found',
19
19
  'hop count exceeded - possible mail loop',
20
20
  'host is unreachable',
21
+ 'host name lookup failure',
21
22
  'host not found, try again',
22
23
  'mail forwarding loop for ',
23
24
  'malformed name server reply',
@@ -13,6 +13,7 @@ module Sisimai
13
13
  class << self
14
14
  # Destination mail server does not accept any message
15
15
  Index = [
16
+ 'does not accept mail (nullmx)',
16
17
  'host/domain does not accept mail', # iCloud
17
18
  'host does not accept mail', # Sendmail
18
19
  'name server: .: host not found', # Sendmail
@@ -32,10 +32,12 @@ module Sisimai
32
32
  'message bounced due to organizational settings',
33
33
  'message given low priority',
34
34
  'message not accepted for policy reasons',
35
+ 'message rejected due to local policy',
35
36
  'messages with multiple addresses',
36
37
  'rejected for policy reasons',
37
38
  'protocol violation',
38
39
  'the email address used to send your message is not subscribed to this group',
40
+ 'the message was rejected by organization policy',
39
41
  'this message was blocked because its content presents a potential',
40
42
  'we do not accept messages containing images or other attachments',
41
43
  'you have exceeded the allowable number of posts without solving a captcha',
@@ -28,6 +28,7 @@ module Sisimai
28
28
  'batv failed to verify', # SoniWall
29
29
  'batv validation failure', # SoniWall
30
30
  'backscatter protection detected an invalid or expired email address', # MDaemon
31
+ "because the sender isn't on the recipient's list of senders to accept mail from",
31
32
  'bogus mail from', # IMail - block empty sender
32
33
  'connections not accepted from servers without a valid sender domain',
33
34
  'denied [bouncedeny]', # McAfee
@@ -35,6 +36,7 @@ module Sisimai
35
36
  'delivery not authorized, message refused',
36
37
  'does not exist e2110',
37
38
  'domain of sender address ',
39
+ 'email address is on senderfilterconfig list',
38
40
  'emetteur invalide',
39
41
  'empty envelope senders not allowed',
40
42
  'envelope blocked – ',
@@ -55,6 +57,7 @@ module Sisimai
55
57
  'rule imposed mailbox access for', # MailMarshal
56
58
  'sender address has been blacklisted',
57
59
  'sender email address rejected',
60
+ 'sender is in my black list',
58
61
  'sender is spammer',
59
62
  'sender not pre-approved',
60
63
  'sender rejected',
@@ -65,7 +68,9 @@ module Sisimai
65
68
  'this server does not accept mail from',
66
69
  'transaction failed unsigned dsn for',
67
70
  'unroutable sender address',
71
+ 'you are not allowed to post to this mailing list',
68
72
  'you are sending to/from an address that has been blacklisted',
73
+ 'your access to submit messages to this e-mail system has been rejected'
69
74
  ]
70
75
 
71
76
  def text; return 'rejected'; end
@@ -46,12 +46,15 @@ module Sisimai
46
46
  |may[ ]consider[ ]spam
47
47
  |message[ ](?:
48
48
  considered[ ]as[ ]spam[ ]or[ ]virus
49
+ |contains[ ]spam[ ]or[ ]virus
49
50
  |content[ ]rejected
51
+ |detected[ ]as[ ]spam
50
52
  |filtered
51
53
  |filtered[.][ ](?:
52
54
  please[ ]see[ ]the[ ]faqs[ ]section[ ]on[ ]spam
53
55
  |refer[ ]to[ ]the[ ]troubleshooting[ ]page[ ]at[ ]
54
56
  )
57
+ |is[ ]being[ ]rejected[ ]as[ ]it[ ]seems[ ]to[ ]be[ ]a[ ]spam
55
58
  |looks[ ]like[ ]spam
56
59
  |refused[ ]by[ ](?:
57
60
  mailmarshal[ ]spamprofiler
@@ -99,6 +102,7 @@ module Sisimai
99
102
  |spambouncer[ ]identified[ ]spam # SpamBouncer identified SPAM
100
103
  |spamming[ ]not[ ]allowed
101
104
  |too[ ]much[ ]spam[.] # Earthlink
105
+ |the[ ]email[ ]message[ ]was[ ]detected[ ]as[ ]spam
102
106
  |the[ ]message[ ](?:
103
107
  has[ ]been[ ]rejected[ ]by[ ]spam[ ]filtering[ ]engine
104
108
  |was[ ]rejected[ ]due[ ]to[ ]classification[ ]as[ ]bulk[ ]mail
@@ -16,13 +16,14 @@ module Sisimai
16
16
  module UserUnknown
17
17
  # Imported from p5-Sisimail/lib/Sisimai/Reason/UserUnknown.pm
18
18
  class << self
19
- PreMatches = %w[NoRelaying Blocked MailboxFull HasMoved Rejected]
19
+ PreMatches = %w[NoRelaying Blocked MailboxFull HasMoved Rejected NotAccept]
20
20
  ModulePath = {
21
21
  'Sisimai::Reason::NoRelaying' => 'sisimai/reason/norelaying',
22
22
  'Sisimai::Reason::Blocked' => 'sisimai/reason/blocked',
23
23
  'Sisimai::Reason::MailboxFull' => 'sisimai/reason/mailboxfull',
24
24
  'Sisimai::Reason::HasMoved' => 'sisimai/reason/hasmoved',
25
25
  'Sisimai::Reason::Rejected' => 'sisimai/reason/rejected',
26
+ 'Sisimai::Reason::NotAccept' => 'sisimai/reason/notaccept',
26
27
  }
27
28
  Regex = %r{(?>
28
29
  [#]5[.]1[.]1[ ]bad[ ]address
@@ -98,6 +99,7 @@ module Sisimai
98
99
  |address[ ]rejected:[ ](?:
99
100
  access[ ]denied
100
101
  |invalid[ ]user
102
+ |invalid-recipient
101
103
  |user[ ][^ ]+[ ]does[ ]not[ ]exist
102
104
  |user[ ]unknown[ ]in[ ][^ ]+[ ]table
103
105
  |unknown[ ]user
@@ -105,6 +107,7 @@ module Sisimai
105
107
  |does[ ]not[ ]exist(?:[ ]on[ ]this[ ]system)?
106
108
  |is[ ]not[ ]local
107
109
  |not[ ](?:exist|found|ok)
110
+ |refuses[ ]to[ ]accept[ ]your[ ]mail
108
111
  |unknown
109
112
  )
110
113
  |requested[ ]action[ ]not[ ]taken:[ ]mailbox[ ]unavailable
@@ -114,7 +117,9 @@ module Sisimai
114
117
  user[ ]unknown
115
118
  |badrcptto
116
119
  |no[ ]mailbox[ ]here[ ]by[ ]that[ ]name
120
+ |your[ ]envelope[ ]recipient[ ]has[ ]been[ ]denied
117
121
  )
122
+ |that[ ]domain[ ]or[ ]user[ ]isn't[ ]in[ ]my[ ]list[ ]of[ ]allowed[ ]rcpthosts
118
123
  |the[ ](?:
119
124
  email[ ]account[ ]that[ ]you[ ]tried[ ]to[ ]reach[ ]does[ ]not[ ]exist
120
125
  |following[ ]recipients[ ]was[ ]undeliverable
@@ -124,6 +129,8 @@ module Sisimai
124
129
  |this[ ](?:
125
130
  address[ ]no[ ]longer[ ]accepts[ ]mail
126
131
  |email[ ]address[ ]is[ ]wrong[ ]or[ ]no[ ]longer[ ]valid
132
+ |recipient[ ]is[ ]in[ ]my[ ]badrecipientto[ ]list
133
+ |recipient[ ]is[ ]not[ ]in[ ]my[ ]validrcptto[ ]list
127
134
  |spectator[ ]does[ ]not[ ]exist
128
135
  |user[ ]doesn[']?t[ ]have[ ]a[ ][^ ]+[ ]account
129
136
  )
@@ -83,7 +83,7 @@ module Sisimai
83
83
  |SMTP[ ]Server[ ][<].+[>][ ]rejected[ ]recipient[ ]
84
84
  |The[ ]following[ ]recipients[ ]returned[ ]permanent[ ]errors:[ ]
85
85
  |The[ ]following[ ]message[ ]to[ ]
86
- |Unknown[ ]User:[ ]
86
+ |Unknown[ ]user:[ ]
87
87
  |undeliverable[ ]to[ ]
88
88
  |Undeliverable[ ]Address:[ ]*
89
89
  |You[ ]sent[ ]mail[ ]to[ ]