sisimai 4.25.0-java → 4.25.1-java
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of sisimai might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/ChangeLog.md +20 -0
- data/README-JA.md +8 -8
- data/README.md +8 -8
- data/lib/sisimai/bite/email/exim.rb +8 -4
- data/lib/sisimai/bite/email/sendmail.rb +7 -2
- data/lib/sisimai/data.rb +2 -2
- data/lib/sisimai/message/email.rb +18 -16
- data/lib/sisimai/reason/policyviolation.rb +6 -4
- data/lib/sisimai/reason/rejected.rb +1 -0
- data/lib/sisimai/reason/securityerror.rb +1 -1
- data/lib/sisimai/reason/suspend.rb +1 -0
- data/lib/sisimai/rhost.rb +2 -0
- data/lib/sisimai/rhost/exchangeonline.rb +1 -1
- data/lib/sisimai/rhost/googleapps.rb +29 -38
- data/lib/sisimai/string.rb +1 -2
- data/lib/sisimai/version.rb +1 -1
- data/set-of-emails/maildir/bsd/email-mfilter-04.eml +39 -0
- data/set-of-emails/maildir/bsd/email-office365-11.eml +425 -0
- data/set-of-emails/maildir/bsd/email-office365-12.eml +398 -0
- data/set-of-emails/maildir/bsd/email-postfix-57.eml +127 -0
- data/set-of-emails/maildir/bsd/email-postfix-58.eml +82 -0
- data/set-of-emails/maildir/bsd/{rfc3464-33.eml → rhost-franceptt-03.eml} +0 -0
- metadata +8 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6db6c4e44ac509561c439034227dabc3cd6f1c9d
|
4
|
+
data.tar.gz: 66edf604fc32a44ba203ccd6963635f4d5b1bd5d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b88676a692f29455c0791dd5197c265a7cef4f453355e574df57587c3893a525ca5c57d428185575c156691b19041c98a6559b84e470116f9f35e2ff2b6f07b7
|
7
|
+
data.tar.gz: 4af2ab72159e755035bda03dc5ce9d21ce0f96e9e1eb993d3d4d4420f2c14207b088e30db68649e18b3e87e307d2d4e8a05431f3d2e4549510194cba4c170395
|
data/ChangeLog.md
CHANGED
@@ -3,6 +3,26 @@ 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.1
|
7
|
+
--------------------------------------------------------------------------------
|
8
|
+
- release: "4.25.1"
|
9
|
+
- version: ""Tue, 23 Jul 2019 10:00:00 +0900 (JST)
|
10
|
+
- changes:
|
11
|
+
- Check the format of the value of `Message-Id` header for detecting a bounce
|
12
|
+
mail from Exim or not.
|
13
|
+
- Call `Sisimai::Rhost::FrancePTT` module when the value of `rhost` includes
|
14
|
+
`.wanadoo.fr`.
|
15
|
+
- Fix code at `Sisimai::Message::Email.takeapart` method to decode a Subject
|
16
|
+
header of the original message.
|
17
|
+
- #147 Update error messages for Low Reputation Error from Gmail.
|
18
|
+
- Parser code to read bounce mails from m-FILTER at `Sisimai::Message::Email`
|
19
|
+
has been improved.
|
20
|
+
- Status 5.4.1 from Exchange Online is classified into "rejected" reason.
|
21
|
+
- Callback method specified at `Sisimai::Message.new()` with `hook` is called
|
22
|
+
just before calling `scan()` method of each `Sisimai::Bite::Email` module.
|
23
|
+
- Code improvement in `Sisimai::Bite::Email::Sendmail` for getting error mes-
|
24
|
+
sages returned from Google.
|
25
|
+
|
6
26
|
v4.25.0
|
7
27
|
--------------------------------------------------------------------------------
|
8
28
|
- release: "Tue, 9 Apr 2019 11:22:22 +0900 (JST)"
|
data/README-JA.md
CHANGED
@@ -80,10 +80,10 @@ Install
|
|
80
80
|
|
81
81
|
```shell
|
82
82
|
$ sudo gem install sisimai
|
83
|
-
Fetching: sisimai-4.25.
|
84
|
-
Successfully installed sisimai-4.25.
|
85
|
-
Parsing documentation for sisimai-4.25.
|
86
|
-
Installing ri documentation for sisimai-4.25.
|
83
|
+
Fetching: sisimai-4.25.1.gem (100%)
|
84
|
+
Successfully installed sisimai-4.25.1
|
85
|
+
Parsing documentation for sisimai-4.25.1
|
86
|
+
Installing ri documentation for sisimai-4.25.1
|
87
87
|
Done installing documentation for sisimai after 6 seconds
|
88
88
|
1 gem installed
|
89
89
|
```
|
@@ -99,8 +99,8 @@ gem install bundle rake rspec coveralls
|
|
99
99
|
...
|
100
100
|
4 gems installed
|
101
101
|
bundle exec rake install
|
102
|
-
sisimai 4.25.
|
103
|
-
sisimai (4.25.
|
102
|
+
sisimai 4.25.1 built to pkg/sisimai-4.25.1.gem.
|
103
|
+
sisimai (4.25.1) installed.
|
104
104
|
```
|
105
105
|
|
106
106
|
Usage
|
@@ -245,9 +245,9 @@ Differences between Ruby version and Perl version
|
|
245
245
|
| インストール方法 | gem install | cpanm, cpm |
|
246
246
|
| 依存モジュール数(コアモジュールを除く) | 1モジュール | 2モジュール |
|
247
247
|
| LOC:ソースコードの行数 | 11700行 | 8200行 |
|
248
|
-
| テスト件数(spec/,t/,xt/ディレクトリ) |
|
248
|
+
| テスト件数(spec/,t/,xt/ディレクトリ) | 225000件 | 242000件 |
|
249
249
|
| ライセンス | 二条項BSD | 二条項BSD |
|
250
|
-
| 開発会社によるサポート契約 |
|
250
|
+
| 開発会社によるサポート契約 | 提供中 | 提供中 |
|
251
251
|
|
252
252
|
1. [./ANALYTICAL-PRECISION](https://github.com/sisimai/rb-Sisimai/blob/master/ANALYTICAL-PRECISION)を参照
|
253
253
|
2. Xeon E5-2640 2.5GHz x 2 cores | 5000 bogomips | 1GB RAM | Ruby 2.3.4p301
|
data/README.md
CHANGED
@@ -85,10 +85,10 @@ Install
|
|
85
85
|
|
86
86
|
```shell
|
87
87
|
$ sudo gem install sisimai
|
88
|
-
Fetching: sisimai-4.25.
|
89
|
-
Successfully installed sisimai-4.25.
|
90
|
-
Parsing documentation for sisimai-4.25.
|
91
|
-
Installing ri documentation for sisimai-4.25.
|
88
|
+
Fetching: sisimai-4.25.1.gem (100%)
|
89
|
+
Successfully installed sisimai-4.25.1
|
90
|
+
Parsing documentation for sisimai-4.25.1
|
91
|
+
Installing ri documentation for sisimai-4.25.1
|
92
92
|
Done installing documentation for sisimai after 6 seconds
|
93
93
|
1 gem installed
|
94
94
|
```
|
@@ -104,8 +104,8 @@ gem install bundle rake rspec coveralls
|
|
104
104
|
...
|
105
105
|
4 gems installed
|
106
106
|
bundle exec rake install
|
107
|
-
sisimai 4.25.
|
108
|
-
sisimai (4.25.
|
107
|
+
sisimai 4.25.1 built to pkg/sisimai-4.25.1.gem.
|
108
|
+
sisimai (4.25.1) installed.
|
109
109
|
```
|
110
110
|
|
111
111
|
Usage
|
@@ -249,9 +249,9 @@ and bounceHammer are available at
|
|
249
249
|
| How to install | gem install | cpanm, cpm |
|
250
250
|
| Dependencies (Except core modules) | 1 module | 2 modules |
|
251
251
|
| LOC:Source lines of code | 11700 lines | 8200 lines |
|
252
|
-
| The number of tests(spec/,t/,xt/) directory |
|
252
|
+
| The number of tests(spec/,t/,xt/) directory | 225000 tests | 242000 tests |
|
253
253
|
| License | BSD 2-Clause | BSD 2-Clause |
|
254
|
-
| Support Contract provided by Developer |
|
254
|
+
| Support Contract provided by Developer | Available | Available |
|
255
255
|
|
256
256
|
1. See [./ANALYTICAL-PRECISION](https://github.com/sisimai/rb-Sisimai/blob/master/ANALYTICAL-PRECISION)
|
257
257
|
2. Xeon E5-2640 2.5GHz x 2 cores | 5000 bogomips | 1GB RAM | Ruby 2.3.4p301
|
@@ -139,10 +139,13 @@ module Sisimai::Bite::Email
|
|
139
139
|
# part or nil if it failed to parse or
|
140
140
|
# the arguments are missing
|
141
141
|
def scan(mhead, mbody)
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
142
|
+
return nil if mhead['from'] =~ /[@].+[.]mail[.]ru[>]?/
|
143
|
+
|
144
|
+
# Message-Id: <E1P1YNN-0003AD-Ga@example.org>
|
145
|
+
match = 0
|
146
|
+
match += 1 if mhead['from'].start_with?('Mail Delivery System')
|
147
|
+
match += 1 if mhead['message-id'].to_s =~ %r/\A[<]\w{7}[-]\w{6}[-]\w{2}[@]/
|
148
|
+
match += 1 if mhead['subject'] =~ %r{(?:
|
146
149
|
Mail[ ]delivery[ ]failed(:[ ]returning[ ]message[ ]to[ ]sender)?
|
147
150
|
|Warning:[ ]message[ ].+[ ]delayed[ ]+
|
148
151
|
|Delivery[ ]Status[ ]Notification
|
@@ -151,6 +154,7 @@ module Sisimai::Bite::Email
|
|
151
154
|
|error[(]s[)][ ]in[ ]forwarding[ ]or[ ]filtering
|
152
155
|
)
|
153
156
|
}x
|
157
|
+
return nil if match < 2
|
154
158
|
|
155
159
|
require 'sisimai/rfc1894'
|
156
160
|
fieldtable = Sisimai::RFC1894.FIELDTABLE
|
@@ -56,7 +56,7 @@ module Sisimai::Bite::Email
|
|
56
56
|
readcursor = 0 # (Integer) Points the current cursor position
|
57
57
|
recipients = 0 # (Integer) The number of 'Final-Recipient' header
|
58
58
|
commandtxt = '' # (String) SMTP Command name begin with the string '>>>'
|
59
|
-
esmtpreply =
|
59
|
+
esmtpreply = [] # (Array) Reply from remote server on SMTP session
|
60
60
|
sessionerr = false # (Boolean) Flag, "true" if it is SMTP session error
|
61
61
|
anotherset = {} # Another error information
|
62
62
|
v = nil
|
@@ -147,7 +147,7 @@ module Sisimai::Bite::Email
|
|
147
147
|
|
148
148
|
elsif cv = e.match(/\A[<]{3}[ ]+(.+)\z/)
|
149
149
|
# <<< Response
|
150
|
-
esmtpreply
|
150
|
+
esmtpreply << cv[1] unless esmtpreply.index(cv[1])
|
151
151
|
else
|
152
152
|
# Detect SMTP session error or connection error
|
153
153
|
next if sessionerr
|
@@ -213,6 +213,11 @@ module Sisimai::Bite::Email
|
|
213
213
|
e['diagnosis'] = anotherset['diagnosis'] unless e['diagnosis']
|
214
214
|
e['diagnosis'] = anotherset['diagnosis'] if e['diagnosis'] =~ /\A\d+\z/
|
215
215
|
end
|
216
|
+
unless esmtpreply.empty?
|
217
|
+
# Replace the error message in "diagnosis" with the ESMTP Reply
|
218
|
+
r = esmtpreply.join(' ')
|
219
|
+
e['diagnosis'] = r if r.size > e['diagnosis'].to_s.size
|
220
|
+
end
|
216
221
|
e['diagnosis'] = Sisimai::String.sweep(e['diagnosis'])
|
217
222
|
|
218
223
|
if anotherset['status']
|
data/lib/sisimai/data.rb
CHANGED
@@ -288,10 +288,10 @@ module Sisimai
|
|
288
288
|
# 550-5.7.1 likely unsolicited mail. To reduce the amount of spam sent to Gmail,
|
289
289
|
# 550-5.7.1 this message has been blocked. Please visit
|
290
290
|
# 550 5.7.1 https://support.google.com/mail/answer/188131 for more information.
|
291
|
-
p['diagnosticcode'].gsub
|
292
|
-
p['diagnosticdoee'] = Sisimai::String.sweep(p['diagnosticcode'])
|
291
|
+
p['diagnosticcode'] = Sisimai::String.sweep(p['diagnosticcode'].gsub(re, ' '))
|
293
292
|
end
|
294
293
|
end
|
294
|
+
|
295
295
|
p['diagnostictype'] ||= 'X-UNIX' if p['reason'] == 'mailererror'
|
296
296
|
p['diagnostictype'] ||= 'SMTP' unless %w[feedback vacation].include?(p['reason'])
|
297
297
|
|
@@ -263,7 +263,7 @@ module Sisimai
|
|
263
263
|
|
264
264
|
# 1. Scrub to avoid "invalid byte sequence in UTF-8" exception (#82)
|
265
265
|
# 2. Convert from string to hash reference
|
266
|
-
heads = heads.scrub('?').gsub(/^[>]+[ ]/m, '')
|
266
|
+
heads = heads.scrub('?').gsub(/^[>]+[ ]/m, '').gsub(/=[ ]+=/, "=\n =")
|
267
267
|
|
268
268
|
previousfn = '' # Previous field name
|
269
269
|
asciiarmor = {} # Header names which has MIME encoded value
|
@@ -358,21 +358,6 @@ module Sisimai
|
|
358
358
|
mailheader['subject'] ||= ''
|
359
359
|
mailheader['content-type'] ||= ''
|
360
360
|
|
361
|
-
if hookmethod.is_a? Proc
|
362
|
-
# Call the hook method
|
363
|
-
begin
|
364
|
-
p = {
|
365
|
-
'datasrc' => 'email',
|
366
|
-
'headers' => mailheader,
|
367
|
-
'message' => bodystring,
|
368
|
-
'bounces' => nil
|
369
|
-
}
|
370
|
-
havecaught = hookmethod.call(p)
|
371
|
-
rescue StandardError => ce
|
372
|
-
warn ' ***warning: Something is wrong in hook method :' << ce.to_s
|
373
|
-
end
|
374
|
-
end
|
375
|
-
|
376
361
|
# Decode BASE64 Encoded message body, rewrite.
|
377
362
|
mesgformat = (mailheader['content-type'] || '').downcase
|
378
363
|
ctencoding = (mailheader['content-transfer-encoding'] || '').downcase
|
@@ -413,6 +398,23 @@ module Sisimai
|
|
413
398
|
mailheader['subject'] = Sisimai::MIME.mimedecode(mailheader['subject'].split(/[ ]/))
|
414
399
|
mailheader['subject'].scrub!('?')
|
415
400
|
end
|
401
|
+
bodystring = bodystring.scrub('?').delete("\r")
|
402
|
+
|
403
|
+
if hookmethod.is_a? Proc
|
404
|
+
# Call the hook method
|
405
|
+
begin
|
406
|
+
p = {
|
407
|
+
'datasrc' => 'email',
|
408
|
+
'headers' => mailheader,
|
409
|
+
'message' => bodystring,
|
410
|
+
'bounces' => nil
|
411
|
+
}
|
412
|
+
havecaught = hookmethod.call(p)
|
413
|
+
rescue StandardError => ce
|
414
|
+
warn ' ***warning: Something is wrong in hook method :' << ce.to_s
|
415
|
+
end
|
416
|
+
end
|
417
|
+
|
416
418
|
bodystring << EndOfEmail
|
417
419
|
haveloaded = {}
|
418
420
|
scannedset = nil
|
@@ -8,15 +8,16 @@ module Sisimai
|
|
8
8
|
# security policies, or multiple addresses exist in the From: header, Sisimai
|
9
9
|
# will set "policyviolation".
|
10
10
|
#
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
14
|
-
#
|
11
|
+
# Status: 5.7.0
|
12
|
+
# Remote-MTA: DNS; gmail-smtp-in.l.google.com
|
13
|
+
# Diagnostic-Code: SMTP; 552-5.7.0 Our system detected an illegal attachment on your message. Please
|
14
|
+
# Last-Attempt-Date: Tue, 28 Apr 2009 11:02:45 +0900 (JST)
|
15
15
|
#
|
16
16
|
module PolicyViolation
|
17
17
|
# Imported from p5-Sisimail/lib/Sisimai/Reason/PolicyViolation.pm
|
18
18
|
class << self
|
19
19
|
Index = [
|
20
|
+
'an illegal attachment on your message',
|
20
21
|
'because the recipient is not accepting mail with ', # AOL Phoenix
|
21
22
|
'closed mailing list',
|
22
23
|
'denied by policy',
|
@@ -32,6 +33,7 @@ module Sisimai
|
|
32
33
|
'rejected for policy reasons',
|
33
34
|
'protocol violation',
|
34
35
|
'the email address used to send your message is not subscribed to this group',
|
36
|
+
'this message was blocked because its content presents a potential',
|
35
37
|
'you have exceeded the allowable number of posts without solving a captcha',
|
36
38
|
'you have exceeded the the allowable number of posts without solving a captcha',
|
37
39
|
]
|
@@ -44,6 +44,7 @@ module Sisimai
|
|
44
44
|
'message rejected: email address is not verified',
|
45
45
|
'mx records for ',
|
46
46
|
'null sender is not allowed',
|
47
|
+
'recipient addresses rejected : access denied',
|
47
48
|
'recipient not accepted. (batv: no tag',
|
48
49
|
'returned mail not accepted here',
|
49
50
|
'rfc 1035 violation: recursive cname records for',
|
@@ -11,7 +11,7 @@ module Sisimai
|
|
11
11
|
# of email bounce if the value of Status: field in a bounce email is "5.7.*".
|
12
12
|
#
|
13
13
|
# Action: failed
|
14
|
-
# Status: 5.7.
|
14
|
+
# Status: 5.7.1
|
15
15
|
# Remote-MTA: DNS; gmail-smtp-in.l.google.com
|
16
16
|
# Diagnostic-Code: SMTP; 552-5.7.0 Our system detected an illegal attachment on your message. Please
|
17
17
|
# Last-Attempt-Date: Tue, 28 Apr 2009 11:02:45 +0900 (JST)
|
@@ -20,6 +20,7 @@ module Sisimai
|
|
20
20
|
'recipient rejected: temporarily inactive',
|
21
21
|
'recipient suspend the service',
|
22
22
|
'this account has been disabled or discontinued',
|
23
|
+
'this mailbox is disabled',
|
23
24
|
'user suspended', # http://mail.163.com/help/help_spam_16.htm
|
24
25
|
'vdelivermail: account is locked email bounced',
|
25
26
|
]
|
data/lib/sisimai/rhost.rb
CHANGED
@@ -8,12 +8,14 @@ module Sisimai
|
|
8
8
|
# Imported from p5-Sisimail/lib/Sisimai/Rhost.pm
|
9
9
|
RhostClass = {
|
10
10
|
'aspmx.l.google.com' => 'GoogleApps',
|
11
|
+
'gmail-smtp-in.l.google.com' => 'GoogleApps',
|
11
12
|
'.prod.outlook.com' => 'ExchangeOnline',
|
12
13
|
'.protection.outlook.com' => 'ExchangeOnline',
|
13
14
|
'smtp.secureserver.net' => 'GoDaddy',
|
14
15
|
'mailstore1.secureserver.net' => 'GoDaddy',
|
15
16
|
'laposte.net' => 'FrancePTT',
|
16
17
|
'orange.fr' => 'FrancePTT',
|
18
|
+
'wanadoo.fr' => 'FrancePTT',
|
17
19
|
'lsean.ezweb.ne.jp' => 'KDDI',
|
18
20
|
'msmx.au.com' => 'KDDI',
|
19
21
|
'.qq.com' => 'TencentQQ',
|
@@ -25,7 +25,7 @@ module Sisimai
|
|
25
25
|
'5.3.3' => [{ reason: 'systemfull', string: 'Unrecognized command' }],
|
26
26
|
'5.3.4' => [{ reason: 'mesgtoobig', string: 'Message too big for system' }],
|
27
27
|
'5.3.5' => [{ reason: 'systemerror', string: 'System incorrectly configured' }],
|
28
|
-
'5.4.1' => [{ reason: '
|
28
|
+
'5.4.1' => [{ reason: 'rejected', string: 'Recipient address rejected: Access denied' }],
|
29
29
|
'5.4.14' => [{ reason: 'networkerror',string: 'Hop count exceeded' }],
|
30
30
|
'5.5.2' => [{ reason: 'syntaxerror', string: 'Send hello first' }],
|
31
31
|
'5.5.3' => [{ reason: 'syntaxerror', string: 'Too many recipients' }],
|
@@ -28,9 +28,7 @@ module Sisimai
|
|
28
28
|
'X.5.0' => [{ reason: 'syntaxerror', string: ['SMTP protocol violation'] }],
|
29
29
|
'X.5.1' => [
|
30
30
|
{ reason: 'securityerror', string: ['Authentication Required.'] },
|
31
|
-
{
|
32
|
-
reason: 'syntaxerror',
|
33
|
-
string: [
|
31
|
+
{ reason: 'syntaxerror', string: [
|
34
32
|
'STARTTLS may not be repeated',
|
35
33
|
'Too many unrecognized commands, goodbye.',
|
36
34
|
'Unimplemented command.',
|
@@ -38,16 +36,15 @@ module Sisimai
|
|
38
36
|
'EHLO/HELO first.',
|
39
37
|
'MAIL first.',
|
40
38
|
'RCPT first.',
|
41
|
-
|
42
|
-
},
|
39
|
+
]},
|
43
40
|
],
|
44
41
|
'X.5.2' => [
|
45
42
|
{ reason: 'securityerror', string: ['Cannot Decode response.'] }, # 2FA related error, maybe.
|
46
43
|
{ reason: 'syntaxerror', string: ['Syntax error.'] },
|
47
44
|
],
|
48
45
|
'X.5.3' => [
|
49
|
-
{ reason: 'mailboxfull',
|
50
|
-
{ reason: 'policyviolation',string: ['Your message has too many recipients.'] },
|
46
|
+
{ reason: 'mailboxfull', string: ['Domain policy size per transaction exceeded,'] },
|
47
|
+
{ reason: 'policyviolation', string: ['Your message has too many recipients.'] },
|
51
48
|
],
|
52
49
|
'X.5.4' => [{ reason: 'syntaxerror', string: ['Optional Argument not permitted for that AUTH mode.'] }],
|
53
50
|
'X.6.0' => [
|
@@ -55,53 +52,47 @@ module Sisimai
|
|
55
52
|
{ reason: 'networkerror', string: ['Message exceeded 50 hops'] }
|
56
53
|
],
|
57
54
|
'X.7.0' => [
|
58
|
-
{
|
59
|
-
reason: 'blocked',
|
60
|
-
string: [
|
55
|
+
{ reason: 'blocked', string: [
|
61
56
|
'IP not in whitelist for RCPT domain, closing connection.',
|
62
|
-
'
|
63
|
-
|
64
|
-
|
65
|
-
{
|
66
|
-
reason: 'expired',
|
67
|
-
string: [
|
57
|
+
'unusual rate of unsolicited mail originating from your IP address.',
|
58
|
+
]},
|
59
|
+
{ reason: 'expired', string: [
|
68
60
|
'Temporary System Problem. Try again later.',
|
69
61
|
'Try again later, closing connection.',
|
70
|
-
|
71
|
-
|
72
|
-
{
|
73
|
-
reason: 'securityerror',
|
74
|
-
string: [
|
62
|
+
]},
|
63
|
+
{ reason: 'securityerror', string: [
|
75
64
|
'TLS required for RCPT domain, closing connection.',
|
76
65
|
'No identity changes permitted.',
|
77
66
|
'Must issue a STARTTLS command first.',
|
78
67
|
'Too Many Unauthenticated commands.',
|
79
|
-
|
80
|
-
|
68
|
+
]},
|
69
|
+
{ reason: 'policyviolation', string: [
|
70
|
+
'an illegal attachment on your message',
|
71
|
+
'This message was blocked because its content presents a potential',
|
72
|
+
]},
|
81
73
|
{ reason: 'systemerror', string: ['Cannot authenticate due to temporary system problem.'] },
|
82
74
|
{ reason: 'norelaying', string: ['Mail relay denied.'] },
|
83
75
|
{ reason: 'rejected', string: ['Mail Sending denied.'] },
|
84
76
|
],
|
85
77
|
'X.7.1' => [
|
86
|
-
{ reason: 'mailboxfull',
|
87
|
-
{
|
88
|
-
reason: 'securityerror',
|
89
|
-
string: [
|
78
|
+
{ reason: 'mailboxfull', string: ['Email quota exceeded.'] },
|
79
|
+
{ reason: 'securityerror', string: [
|
90
80
|
'Application-specific password required.',
|
91
81
|
'Please log in with your web browser and then try again.',
|
92
82
|
'Username and Password not accepted.',
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
reason: 'blocked',
|
97
|
-
string: [
|
98
|
-
'Our system has detected an unusual rate of unsolicited mail originating from your IP address.',
|
83
|
+
]},
|
84
|
+
{ reason: 'blocked', string: [
|
85
|
+
'The IP address sending this message does not have a PTR record setup.',
|
99
86
|
"The IP you're using to send mail is not authorized to send email directly to our servers.",
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
{ reason: '
|
104
|
-
{ reason: '
|
87
|
+
'this message is likely suspicious due to the very low reputation of the sending IP address',
|
88
|
+
'unusual rate of unsolicited mail originating from your IP address.',
|
89
|
+
]},
|
90
|
+
{ reason: 'spamdetected', string: ['this message is likely unsolicited mail.'] },
|
91
|
+
{ reason: 'policyviolation',string: [
|
92
|
+
'Messages with multiple addresses in From: header are not accepted.',
|
93
|
+
'The user or domain that you are sending to (or from) has a policy',
|
94
|
+
]},
|
95
|
+
{ reason: 'rejected', string: ['Unauthenticated email is not accepted from this domain.'] },
|
105
96
|
],
|
106
97
|
'X.7.4' => [{ reason: 'syntaxerror', string: ['Unrecognized Authentication Type.'] }],
|
107
98
|
}.freeze
|
data/lib/sisimai/string.rb
CHANGED
data/lib/sisimai/version.rb
CHANGED