sisimai 4.25.8 → 4.25.9
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/ANALYTICAL-PRECISION +1 -1
- data/ChangeLog.md +12 -0
- data/README-JA.md +3 -3
- data/README.md +3 -3
- data/lib/sisimai.rb +3 -3
- data/lib/sisimai/arf.rb +8 -6
- data/lib/sisimai/lhost/exchange2007.rb +1 -1
- data/lib/sisimai/lhost/exim.rb +6 -6
- data/lib/sisimai/lhost/ezweb.rb +1 -1
- data/lib/sisimai/lhost/mxlogic.rb +1 -1
- data/lib/sisimai/lhost/qmail.rb +7 -7
- data/lib/sisimai/lhost/sendmail.rb +1 -1
- data/lib/sisimai/lhost/x4.rb +8 -8
- data/lib/sisimai/mda.rb +2 -2
- data/lib/sisimai/reason/blocked.rb +23 -23
- data/lib/sisimai/reason/hostunknown.rb +2 -0
- data/lib/sisimai/reason/mailererror.rb +1 -1
- data/lib/sisimai/reason/notaccept.rb +1 -0
- data/lib/sisimai/reason/securityerror.rb +5 -6
- data/lib/sisimai/reason/spamdetected.rb +9 -12
- data/lib/sisimai/reason/userunknown.rb +19 -20
- data/lib/sisimai/smtp/status.rb +1 -1
- data/lib/sisimai/version.rb +1 -1
- data/set-of-emails/maildir/bsd/lhost-sendmail-57.eml +59 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 225f65e4f6104d3dabbdd50eb6882b5e9c40ab335cda2ba49014ba3d04fa7ed3
|
4
|
+
data.tar.gz: a484a4d9b98000743fcf583afb4f4c47e4828c7a0dd7892d41b236ff0861807d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6311de5fc2ba1e9968b6ab83b9e78fd5505c4d39bfe7641a122ac69d2c26ac77ee41ec90ba13c6dbb130f66b7af600c07778a42263765ddfe165ed5b92b692ad
|
7
|
+
data.tar.gz: 04c8779ffa5b03ff564cd671e40c50ea9342adc19e47ff77e4942e201b730fffbc9d5a41299c2717e1b479e3403d6c7644d6830014a99cc49ef5cf5bf822a87d
|
data/ANALYTICAL-PRECISION
CHANGED
@@ -61,4 +61,4 @@ RFC3464 .......... 151/0322 0.4689 Fallback Module for MTAs
|
|
61
61
|
RFC3834 .......... 0/0014 0.0000 Detector for auto replied message
|
62
62
|
--------------------------------------------------------------------------------
|
63
63
|
bounceHammer 1523/2635 0.5779
|
64
|
-
Sisimai 4.25.
|
64
|
+
Sisimai 4.25.8 2635/2635 1.0000
|
data/ChangeLog.md
CHANGED
@@ -3,6 +3,18 @@ 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.9
|
7
|
+
--------------------------------------------------------------------------------
|
8
|
+
- release: "Sat, 3 Oct 2020 22:00:00 +0900 (JST)"
|
9
|
+
- version: ""
|
10
|
+
- changes:
|
11
|
+
- Suppress warning messages on Ruby 2.7. Thanks to @koic
|
12
|
+
- Suppress keyword argument warnings in Ruby 2.7 #200
|
13
|
+
- Suppress a Ruby warning for `Object#=~` and bug fix to match patterns #201
|
14
|
+
- #203 Replace `.+` with `[^ ]` on some large regular expressions for serious
|
15
|
+
performance reason.
|
16
|
+
- #204 Suport Null MX (RFC7505) on Sendmail sisimai/set-of-emails#4
|
17
|
+
|
6
18
|
v4.25.8
|
7
19
|
--------------------------------------------------------------------------------
|
8
20
|
- release: "Fri, 17 Jul 2020 11:59:49 +0900 (JST)"
|
data/README-JA.md
CHANGED
@@ -53,7 +53,7 @@ Key features
|
|
53
53
|
* git clone & make
|
54
54
|
* __高い解析精度__
|
55
55
|
* 解析精度はbounceHammerの2倍
|
56
|
-
*
|
56
|
+
* 68種類のMTA/MDA/ESPに対応
|
57
57
|
* Feedback Loopにも対応
|
58
58
|
* 29種類のエラー理由を検出
|
59
59
|
|
@@ -220,8 +220,8 @@ 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:ソースコードの行数 |
|
224
|
-
| テスト件数(spec/,t/,xt/ディレクトリ) | 236000件 |
|
223
|
+
| LOC:ソースコードの行数 | 10300行 | 10500行 |
|
224
|
+
| テスト件数(spec/,t/,xt/ディレクトリ) | 236000件 | 265000件 |
|
225
225
|
| ライセンス | 二条項BSD | 二条項BSD |
|
226
226
|
| 開発会社によるサポート契約 | 提供中 | 提供中 |
|
227
227
|
|
data/README.md
CHANGED
@@ -52,7 +52,7 @@ Key Features
|
|
52
52
|
* git clone & make
|
53
53
|
* __High Precision of Analysis__
|
54
54
|
* 2 times higher than bounceHammer
|
55
|
-
* Support
|
55
|
+
* Support 68 MTAs/MDAs/ESPs
|
56
56
|
* Support Feedback Loop Message(ARF)
|
57
57
|
* Can detect 29 error reasons
|
58
58
|
|
@@ -225,8 +225,8 @@ 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 |
|
229
|
-
| The number of tests(spec/,t/,xt/) directory | 236000 tests |
|
228
|
+
| LOC:Source lines of code | 10300 lines | 10500 lines |
|
229
|
+
| The number of tests(spec/,t/,xt/) directory | 236000 tests | 265000 tests |
|
230
230
|
| License | BSD 2-Clause | BSD 2-Clause |
|
231
231
|
| Support Contract provided by Developer | Available | Available |
|
232
232
|
|
data/lib/sisimai.rb
CHANGED
@@ -31,11 +31,11 @@ module Sisimai
|
|
31
31
|
while r = mail.data.read do
|
32
32
|
# Read and parse each email file
|
33
33
|
methodargv = { data: r, hook: argv1[:hook] }
|
34
|
-
mesg = Sisimai::Message.new(methodargv)
|
34
|
+
mesg = Sisimai::Message.new(**methodargv)
|
35
35
|
next if mesg.void
|
36
36
|
|
37
37
|
methodargv = { data: mesg, delivered: argv1[:delivered], origin: mail.data.path }
|
38
|
-
next unless data = Sisimai::Data.make(methodargv)
|
38
|
+
next unless data = Sisimai::Data.make(**methodargv)
|
39
39
|
list += data unless data.empty?
|
40
40
|
end
|
41
41
|
|
@@ -54,7 +54,7 @@ module Sisimai
|
|
54
54
|
def dump(argv0, **argv1)
|
55
55
|
return nil unless argv0
|
56
56
|
|
57
|
-
nyaan = Sisimai.make(argv0, argv1) || []
|
57
|
+
nyaan = Sisimai.make(argv0, **argv1) || []
|
58
58
|
if RUBY_PLATFORM.start_with?('java')
|
59
59
|
# java-based ruby environment like JRuby.
|
60
60
|
require 'jrjackson'
|
data/lib/sisimai/arf.rb
CHANGED
@@ -17,12 +17,14 @@ module Sisimai
|
|
17
17
|
StartingOf = { rfc822: ['Content-Type: message/rfc822', 'Content-Type: text/rfc822-headers'] }.freeze
|
18
18
|
MarkingsOf = {
|
19
19
|
message: %r{\A(?>
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
20
|
+
[Tt]his[ ]is[ ]a[ ][^ ]+[ ]email[ ]abuse[ ]report
|
21
|
+
|[Tt]his[ ]is[ ]an[ ]email[ ]abuse[ ]report
|
22
|
+
|[Tt]his[ ]is[ ](?:
|
23
|
+
a[ ][^ ]+[ ]authentication[ -]failure[ ]report
|
24
|
+
|an[ ]authentication[ -]failure[ ]report
|
25
|
+
|an[ ]autogenerated[ ]email[ ]abuse[ ]complaint
|
26
|
+
|an?[ ][^ ]+[ ]report[ ]for
|
27
|
+
)
|
26
28
|
)
|
27
29
|
}x,
|
28
30
|
}.freeze
|
@@ -24,7 +24,7 @@ module Sisimai::Lhost
|
|
24
24
|
error: %r/ ((?:RESOLVER|QUEUE)[.][A-Za-z]+(?:[.]\w+)?);/,
|
25
25
|
rhost: %r{\A(?:
|
26
26
|
Generating[ ]server # en-US
|
27
|
-
|Serveur[ ]de[ ]g
|
27
|
+
|Serveur[ ]de[ ]g[^ ]+ration[ ] # fr-FR/Serveur de génération
|
28
28
|
|Server[ ]di[ ]generazione # it-CH
|
29
29
|
):[ ]?(.*)
|
30
30
|
}x,
|
data/lib/sisimai/lhost/exim.rb
CHANGED
@@ -12,7 +12,7 @@ module Sisimai::Lhost
|
|
12
12
|
# deliver.c:6425| else fprintf(f,
|
13
13
|
# deliver.c:6426|"------ This is a copy of the message's headers. ------\n");
|
14
14
|
ReBackbone = %r{^(?:
|
15
|
-
[-]+[ ]This[ ]is[ ]a[ ]copy[ ]of[ ](?:the|your)[ ]message
|
15
|
+
[-]+[ ]This[ ]is[ ]a[ ]copy[ ]of[ ](?:the|your)[ ]message,[ ]including[ ]all[ ]the[ ]headers[.][ ][-]+
|
16
16
|
|Content-Type:[ ]*message/rfc822\n(?:[\s\t]+.*?\n\n)?
|
17
17
|
)
|
18
18
|
}x.freeze
|
@@ -36,13 +36,13 @@ module Sisimai::Lhost
|
|
36
36
|
# deliver.c:6305|"address(es) failed:\n", sender_address);
|
37
37
|
# deliver.c:6306| }
|
38
38
|
alias: %r/\A([ ]+an undisclosed address)\z/,
|
39
|
-
frozen: %r/\AMessage
|
39
|
+
frozen: %r/\AMessage [^ ]+ (?:has been frozen|was frozen on arrival)/,
|
40
40
|
message: %r{\A(?>
|
41
41
|
This[ ]message[ ]was[ ]created[ ]automatically[ ]by[ ]mail[ ]delivery[ ]software[.]
|
42
42
|
|A[ ]message[ ]that[ ]you[ ]sent[ ]was[ ]rejected[ ]by[ ]the[ ]local[ ]scanning[ ]code
|
43
43
|
|A[ ]message[ ]that[ ]you[ ]sent[ ]contained[ ]one[ ]or[ ]more[ ]recipient[ ]addresses[ ]
|
44
|
-
|Message[ ]
|
45
|
-
|The[ ]
|
44
|
+
|Message[ ][^ ]+[ ](?:has[ ]been[ ]frozen|was[ ]frozen[ ]on[ ]arrival)
|
45
|
+
|The[ ][^ ]+[ ]router[ ]encountered[ ]the[ ]following[ ]error[(]s[)]:
|
46
46
|
)
|
47
47
|
}x,
|
48
48
|
}.freeze
|
@@ -134,7 +134,7 @@ module Sisimai::Lhost
|
|
134
134
|
match += 1 if mhead['message-id'].to_s =~ %r/\A[<]\w{7}[-]\w{6}[-]\w{2}[@]/
|
135
135
|
match += 1 if mhead['subject'] =~ %r{(?:
|
136
136
|
Mail[ ]delivery[ ]failed(:[ ]returning[ ]message[ ]to[ ]sender)?
|
137
|
-
|Warning:[ ]message[ ]
|
137
|
+
|Warning:[ ]message[ ][^ ]+[ ]delayed[ ]+
|
138
138
|
|Delivery[ ]Status[ ]Notification
|
139
139
|
|Mail[ ]failure
|
140
140
|
|Message[ ]frozen
|
@@ -275,7 +275,7 @@ module Sisimai::Lhost
|
|
275
275
|
else
|
276
276
|
# Error message when email address above does not include '@'
|
277
277
|
# and domain part.
|
278
|
-
if e =~ %r<\A[ ]+pipe[ ]to[ ][|]
|
278
|
+
if e =~ %r<\A[ ]+pipe[ ]to[ ][|]/[^ ]+>
|
279
279
|
# pipe to |/path/to/prog ...
|
280
280
|
# generated by kijitora@example.com
|
281
281
|
v['diagnosis'] = e
|
data/lib/sisimai/lhost/ezweb.rb
CHANGED
@@ -125,7 +125,7 @@ module Sisimai::Lhost
|
|
125
125
|
v['command'] = cv[1]
|
126
126
|
else
|
127
127
|
# Check error message
|
128
|
-
if rxmessages.any? { |
|
128
|
+
if rxmessages.any? { |messages| messages.any? { |message| e =~ message } }
|
129
129
|
# Check with regular expressions of each error
|
130
130
|
v['diagnosis'] ||= ''
|
131
131
|
v['diagnosis'] << ' ' << e
|
@@ -85,7 +85,7 @@ module Sisimai::Lhost
|
|
85
85
|
match += 1 if mhead['from'].start_with?('Mail Delivery System')
|
86
86
|
match += 1 if mhead['subject'] =~ %r{(?:
|
87
87
|
Mail[ ]delivery[ ]failed(:[ ]returning[ ]message[ ]to[ ]sender)?
|
88
|
-
|Warning:[ ]message[ ]
|
88
|
+
|Warning:[ ]message[ ][^ ]+[ ]delayed[ ]+
|
89
89
|
|Delivery[ ]Status[ ]Notification
|
90
90
|
)
|
91
91
|
}x
|
data/lib/sisimai/lhost/qmail.rb
CHANGED
@@ -23,29 +23,29 @@ module Sisimai::Lhost
|
|
23
23
|
ReSMTP = {
|
24
24
|
# Error text regular expressions which defined in qmail-remote.c
|
25
25
|
# qmail-remote.c:225| if (smtpcode() != 220) quit("ZConnected to "," but greeting failed");
|
26
|
-
'conn' => %r/(?:Error:)?Connected to
|
26
|
+
'conn' => %r/(?:Error:)?Connected to [^ ]+ but greeting failed[.]/,
|
27
27
|
# qmail-remote.c:231| if (smtpcode() != 250) quit("ZConnected to "," but my name was rejected");
|
28
|
-
'ehlo' => %r/(?:Error:)?Connected to
|
28
|
+
'ehlo' => %r/(?:Error:)?Connected to [^ ]+ but my name was rejected[.]/,
|
29
29
|
# qmail-remote.c:238| if (code >= 500) quit("DConnected to "," but sender was rejected");
|
30
30
|
# reason = rejected
|
31
|
-
'mail' => %r/(?:Error:)?Connected to
|
31
|
+
'mail' => %r/(?:Error:)?Connected to [^ ]+ but sender was rejected[.]/,
|
32
32
|
# qmail-remote.c:249| out("h"); outhost(); out(" does not like recipient.\n");
|
33
33
|
# qmail-remote.c:253| out("s"); outhost(); out(" does not like recipient.\n");
|
34
34
|
# reason = userunknown
|
35
|
-
'rcpt' => %r/(?:Error:)
|
35
|
+
'rcpt' => %r/(?:Error:)?[^ ]+ does not like recipient[.]/,
|
36
36
|
# qmail-remote.c:265| if (code >= 500) quit("D"," failed on DATA command");
|
37
37
|
# qmail-remote.c:266| if (code >= 400) quit("Z"," failed on DATA command");
|
38
38
|
# qmail-remote.c:271| if (code >= 500) quit("D"," failed after I sent the message");
|
39
39
|
# qmail-remote.c:272| if (code >= 400) quit("Z"," failed after I sent the message");
|
40
40
|
'data' => %r{(?:
|
41
|
-
(?:Error:)
|
42
|
-
|(?:Error:)
|
41
|
+
(?:Error:)?[^ ]+[ ]failed[ ]on[ ]DATA[ ]command[.]
|
42
|
+
|(?:Error:)?[^ ]+[ ]failed[ ]after[ ]I[ ]sent[ ]the[ ]message[.]
|
43
43
|
)
|
44
44
|
}x,
|
45
45
|
}.freeze
|
46
46
|
# qmail-remote.c:261| if (!flagbother) quit("DGiving up on ","");
|
47
47
|
ReHost = %r{(?:
|
48
|
-
Giving[ ]up[ ]on[ ](
|
48
|
+
Giving[ ]up[ ]on[ ]([^ ]+[0-9a-zA-Z])[.]?\z
|
49
49
|
|Connected[ ]to[ ]([-0-9a-zA-Z.]+[0-9a-zA-Z])[ ]
|
50
50
|
|remote[ ]host[ ]([-0-9a-zA-Z.]+[0-9a-zA-Z])[ ]said:
|
51
51
|
)
|
@@ -184,7 +184,7 @@ module Sisimai::Lhost
|
|
184
184
|
|
185
185
|
if anotherset['status']
|
186
186
|
# Check alternative status code
|
187
|
-
if e['status'].empty? || e['status'] !~ /\A[45][.]\d[.]\d\z/
|
187
|
+
if e['status'].empty? || e['status'] !~ /\A[45][.]\d[.]\d{1,3}\z/
|
188
188
|
# Override alternative status code
|
189
189
|
e['status'] = anotherset['status']
|
190
190
|
end
|
data/lib/sisimai/lhost/x4.rb
CHANGED
@@ -19,7 +19,7 @@ module Sisimai::Lhost
|
|
19
19
|
# Characters: K,Z,D in qmail-qmqpc.c, qmail-send.c, qmail-rspawn.c
|
20
20
|
# K = success, Z = temporary error, D = permanent error
|
21
21
|
message: %r{\A(?>
|
22
|
-
He/Her[ ]is[ ]not.+[ ]user
|
22
|
+
He/Her[ ]is[ ]not[ ].+[ ]user
|
23
23
|
|Hi[.][ ].+[ ]unable[ ]to[ ]deliver[ ]your[ ]message[ ]to[ ]
|
24
24
|
the[ ]following[ ]addresses
|
25
25
|
|Su[ ]mensaje[ ]no[ ]pudo[ ]ser[ ]entregado
|
@@ -41,29 +41,29 @@ module Sisimai::Lhost
|
|
41
41
|
ReSMTP = {
|
42
42
|
# Error text regular expressions which defined in qmail-remote.c
|
43
43
|
# qmail-remote.c:225| if (smtpcode() != 220) quit("ZConnected to "," but greeting failed");
|
44
|
-
'conn' => %r/(?:Error:)?Connected to
|
44
|
+
'conn' => %r/(?:Error:)?Connected to [^ ]+ but greeting failed[.]/,
|
45
45
|
# qmail-remote.c:231| if (smtpcode() != 250) quit("ZConnected to "," but my name was rejected");
|
46
|
-
'ehlo' => %r/(?:Error:)?Connected to
|
46
|
+
'ehlo' => %r/(?:Error:)?Connected to [^ ]+ but my name was rejected[.]/,
|
47
47
|
# qmail-remote.c:238| if (code >= 500) quit("DConnected to "," but sender was rejected");
|
48
48
|
# reason = rejected
|
49
|
-
'mail' => %r/(?:Error:)?Connected to
|
49
|
+
'mail' => %r/(?:Error:)?Connected to [^ ]+ but sender was rejected[.]/,
|
50
50
|
# qmail-remote.c:249| out("h"); outhost(); out(" does not like recipient.\n");
|
51
51
|
# qmail-remote.c:253| out("s"); outhost(); out(" does not like recipient.\n");
|
52
52
|
# reason = userunknown
|
53
|
-
'rcpt' => %r/(?:Error:)
|
53
|
+
'rcpt' => %r/(?:Error:)?[^ ]+ does not like recipient[.]/,
|
54
54
|
# qmail-remote.c:265| if (code >= 500) quit("D"," failed on DATA command");
|
55
55
|
# qmail-remote.c:266| if (code >= 400) quit("Z"," failed on DATA command");
|
56
56
|
# qmail-remote.c:271| if (code >= 500) quit("D"," failed after I sent the message");
|
57
57
|
# qmail-remote.c:272| if (code >= 400) quit("Z"," failed after I sent the message");
|
58
58
|
'data' => %r{(?:
|
59
|
-
(?:Error:)
|
60
|
-
|(?:Error:)
|
59
|
+
(?:Error:)?[^ ]+[ ]failed[ ]on[ ]DATA[ ]command[.]
|
60
|
+
|(?:Error:)?[^ ]+[ ]failed[ ]after[ ]I[ ]sent[ ]the[ ]message[.]
|
61
61
|
)
|
62
62
|
}x,
|
63
63
|
}.freeze
|
64
64
|
# qmail-remote.c:261| if (!flagbother) quit("DGiving up on ","");
|
65
65
|
ReHost = %r{(?:
|
66
|
-
Giving[ ]up[ ]on[ ](
|
66
|
+
Giving[ ]up[ ]on[ ]([^ ]+[0-9a-zA-Z])[.]?\z
|
67
67
|
|Connected[ ]to[ ]([-0-9a-zA-Z.]+[0-9a-zA-Z])[ ]
|
68
68
|
|remote[ ]host[ ]([-0-9a-zA-Z.]+[0-9a-zA-Z])[ ]said:
|
69
69
|
)
|
data/lib/sisimai/mda.rb
CHANGED
@@ -7,7 +7,7 @@ module Sisimai
|
|
7
7
|
# dovecot/src/deliver/deliver.c
|
8
8
|
# 11: #define DEFAULT_MAIL_REJECTION_HUMAN_REASON \
|
9
9
|
# 12: "Your message to <%t> was automatically rejected:%n%r"
|
10
|
-
'dovecot' => %r/\AYour message to
|
10
|
+
'dovecot' => %r/\AYour message to [^ ]+ was automatically rejected:\z/,
|
11
11
|
'mail.local' => %r/\Amail[.]local: /,
|
12
12
|
'procmail' => %r/\Aprocmail: /,
|
13
13
|
'maildrop' => %r/\Amaildrop: /,
|
@@ -16,7 +16,7 @@ module Sisimai
|
|
16
16
|
}.freeze
|
17
17
|
MarkingsOf = {
|
18
18
|
message: %r{\A(?>
|
19
|
-
Your[ ]message[ ]to[ ]
|
19
|
+
Your[ ]message[ ]to[ ][^ ]+[ ]was[ ]automatically[ ]rejected:\z
|
20
20
|
|(?:mail[.]local|procmail|maildrop|vdelivermail|vdeliver):[ ]
|
21
21
|
)
|
22
22
|
}x
|
@@ -11,7 +11,7 @@ module Sisimai
|
|
11
11
|
class << self
|
12
12
|
Regex = %r{(?>
|
13
13
|
access[ ]denied[.][ ]ip[ ]name[ ]lookup[ ]failed
|
14
|
-
|access[ ]from[ ]ip[ ]address[ ]
|
14
|
+
|access[ ]from[ ]ip[ ]address[ ][^ ]+[ ]blocked
|
15
15
|
|all[ ]mail[ ]servers[ ]must[ ]have[ ]a[ ]ptr[ ]record[ ]with[ ]a[ ]valid[ ]reverse[ ]dns[ ]entry
|
16
16
|
|bad[ ](:?dns[ ]ptr[ ]resource[ ]record|sender[ ]ip[ ]address)
|
17
17
|
|banned[ ]sending[ ]ip # Office365
|
@@ -24,7 +24,7 @@ module Sisimai
|
|
24
24
|
|resolve[ ]your[ ]address
|
25
25
|
)
|
26
26
|
|client[ ]host[ ](?:
|
27
|
-
|
27
|
+
[^ ]+[ ]blocked[ ]using
|
28
28
|
|rejected:[ ](?:
|
29
29
|
abus[ ]detecte[ ]gu_eib_0[24] # SFR
|
30
30
|
|cannot[ ]find[ ]your[ ]hostname # Yahoo!
|
@@ -41,22 +41,22 @@ module Sisimai
|
|
41
41
|
)
|
42
42
|
|connections[ ](?:
|
43
43
|
not[ ]accepted[ ]from[ ]ip[ ]addresses[ ]on[ ]spamhaus[ ]xbl
|
44
|
-
|will[ ]not[ ]be[ ]accepted[ ]from[ ]
|
44
|
+
|will[ ]not[ ]be[ ]accepted[ ]from[ ][^ ]+,[ ]because[ ]the[ ]ip[ ]is[ ]in[ ]spamhaus's[ ]list
|
45
45
|
)
|
46
46
|
|currently[ ]sending[ ]spam[ ]see:[ ]
|
47
47
|
|domain[ ](?:
|
48
|
-
|
48
|
+
[^ ]+[ ]mismatches[ ]client[ ]ip
|
49
49
|
|does[ ]not[ ]exist:
|
50
50
|
)
|
51
|
-
|dns[ ]lookup[ ]failure:[ ]
|
51
|
+
|dns[ ]lookup[ ]failure:[ ][^ ]+[ ]try[ ]again[ ]later
|
52
52
|
|dnsbl:attrbl
|
53
53
|
|dynamic/zombied/spam[ ]ips[ ]blocked
|
54
|
-
|email[ ]blocked[ ]by[ ](
|
54
|
+
|email[ ]blocked[ ]by[ ](?:[^ ]+[.]barracudacentral[.]org|spamhaus)
|
55
55
|
|esmtp[ ]not[ ]accepting[ ]connections # icloud.com
|
56
|
-
|fix[ ]reverse[ ]dns[ ]for[ ]
|
56
|
+
|fix[ ]reverse[ ]dns[ ]for[ ][^ ]+
|
57
57
|
|go[ ]away
|
58
58
|
|helo[ ]command[ ]rejected:
|
59
|
-
|host[ ]
|
59
|
+
|host[ ]+[^ ]refused[ ]to[ ]talk[ ]to[ ]me:[ ]\d+[ ]blocked
|
60
60
|
|hosts[ ]with[ ]dynamic[ ]ip
|
61
61
|
|http://(?:
|
62
62
|
spf[.]pobox[.]com/why[.]html
|
@@ -66,17 +66,17 @@ module Sisimai
|
|
66
66
|
|ip[ ]\d{1,3}[.]\d{1,3}[.]\d{1,3}[.]\d{1,3}[ ]is[ ]blocked[ ]by[ ]EarthLink # Earthlink
|
67
67
|
|ip[/]domain[ ]reputation[ ]problems
|
68
68
|
|is[ ](?:
|
69
|
-
in[ ]a[ ]black[ ]list[ ]at[ ]
|
70
|
-
|in[ ]an[ ]
|
69
|
+
in[ ]a[ ]black[ ]list[ ]at[ ][^ ]+[.]
|
70
|
+
|in[ ]an[ ][^ ]+rbl[ ]on[ ][^ ]+
|
71
71
|
|not[ ]allowed[ ]to[ ]send[ ](?:
|
72
72
|
mail[ ]from
|
73
|
-
|from[ ]
|
73
|
+
|from[ ][<][^ ]+[>][ ]per[ ]it's[ ]spf[ ]record
|
74
74
|
)
|
75
75
|
)
|
76
|
-
|mail[ ]server[ ]at[ ]
|
76
|
+
|mail[ ]server[ ]at[ ][^ ]+[ ]is[ ]blocked
|
77
77
|
|mail[ ]from[ ]\d+[.]\d+[.]\d+[.]\d[ ]refused:
|
78
|
-
|message[ ]from[ ]
|
79
|
-
|messages[ ]from[ ]
|
78
|
+
|message[ ]from[ ][^ ]+[ ]rejected[ ]based[ ]on[ ]blacklist
|
79
|
+
|messages[ ]from[ ][^ ]+[ ]temporarily[ ]deferred[ ]due[ ]to[ ]user[ ]complaints # Yahoo!
|
80
80
|
|no[ ](?:
|
81
81
|
access[ ]from[ ]mail[ ]server
|
82
82
|
|ptr[ ]record[ ]found[.]
|
@@ -93,17 +93,17 @@ module Sisimai
|
|
93
93
|
|reverse[ ]dns[ ](?:
|
94
94
|
failed
|
95
95
|
|required
|
96
|
-
|lookup[ ]for[ ]host[ ]
|
96
|
+
|lookup[ ]for[ ]host[ ][^ ]+[ ]failed[ ]permanently
|
97
97
|
)
|
98
98
|
|sender[ ]ip[ ](?:
|
99
99
|
address[ ]rejected
|
100
100
|
|reverse[ ]lookup[ ]rejected
|
101
101
|
)
|
102
102
|
|server[ ]access[ ](?:
|
103
|
-
|
103
|
+
[^ ]+[ ]forbidden[ ]by[ ]invalid[ ]rdns[ ]record[ ]of[ ]your[ ]mail[ ]server
|
104
104
|
|forbidden[ ]by[ ]your[ ]ip[ ]
|
105
105
|
)
|
106
|
-
|server[ ]ip[ ]
|
106
|
+
|server[ ]ip[ ][^ ]+[ ]listed[ ]as[ ]abusive
|
107
107
|
|service[ ]not[ ]available,[ ]closing[ ]transmission[ ]channel
|
108
108
|
|service[ ]permits[ ]\d+[ ]unverifyable[ ]sending[ ]ips
|
109
109
|
|smtp[ ]error[ ]from[ ]remote[ ]mail[ ]server[ ]after[ ]initial[ ]connection: # Exim
|
@@ -112,25 +112,25 @@ module Sisimai
|
|
112
112
|
|your[ ]remotehost[ ]looks[ ]suspiciously[ ]like[ ]spammer
|
113
113
|
)
|
114
114
|
|spf[ ](?:
|
115
|
-
|
115
|
+
[(]sender[ ]policy[ ]framework[)][ ]domain[ ]authentication[ ]fail
|
116
116
|
|record
|
117
117
|
|check:[ ]fail
|
118
118
|
)
|
119
|
-
|spf:[ ]
|
120
|
-
|the[ ](?:email|domain|ip)
|
119
|
+
|spf:[ ][^ ]+[ ]is[ ]not[ ]allowed[ ]to[ ]send[ ]mail[.][ ][a-z0-9]_401
|
120
|
+
|the[ ](?:email|domain|ip)[ ][^ ]+[ ]is[ ]blacklisted
|
121
121
|
|this[ ]system[ ]will[ ]not[ ]accept[ ]messages[ ]from[ ]servers[/]devices[ ]with[ ]no[ ]reverse[ ]dns
|
122
122
|
|too[ ]many[ ](?:
|
123
123
|
spams[ ]from[ ]your[ ]ip # free.fr
|
124
124
|
|unwanted[ ]messages[ ]have[ ]been[ ]sent[ ]from[ ]the[ ]following[ ]ip[ ]address[ ]above
|
125
125
|
)
|
126
126
|
|unresolvable[ ]relay[ ]host[ ]name
|
127
|
-
|veuillez[ ]essayer[ ]plus[ ]tard
|
127
|
+
|veuillez[ ]essayer[ ]plus[ ]tard[.][ ]service[ ]refused,[ ]please[ ]try[ ]later[.][ ][0-9a-z_]+(?:103|510)
|
128
128
|
|your[ ](?:
|
129
129
|
network[ ]is[ ]temporary[ ]blacklisted
|
130
|
-
|sender's[ ]ip[ ]address[ ]is[ ]listed[ ]at[ ]
|
130
|
+
|sender's[ ]ip[ ]address[ ]is[ ]listed[ ]at[ ][^ ]+[.]abuseat[.]org
|
131
131
|
|server[ ]requires[ ]confirmation
|
132
132
|
)
|
133
|
-
|was[ ]blocked[ ]by[ ]
|
133
|
+
|was[ ]blocked[ ]by[ ][^ ]+
|
134
134
|
|we[ ]do[ ]not[ ]accept[ ]mail[ ]from[ ](?: # @mail.ru
|
135
135
|
dynamic[ ]ips
|
136
136
|
|hosts[ ]with[ ]dynamic[ ]ip[ ]or[ ]generic[ ]dns[ ]ptr-records
|
@@ -24,6 +24,7 @@ module Sisimai
|
|
24
24
|
'unknown host',
|
25
25
|
'unrouteable address',
|
26
26
|
]
|
27
|
+
Regex = %r/553[ ][^ ]+[ ]does[ ]not[ ]exist/
|
27
28
|
|
28
29
|
def text; return 'hostunknown'; end
|
29
30
|
def description; return "Delivery failed due to a domain part of a recipient's email address does not exist"; end
|
@@ -36,6 +37,7 @@ module Sisimai
|
|
36
37
|
def match(argv1)
|
37
38
|
return nil unless argv1
|
38
39
|
return true if Index.any? { |a| argv1.include?(a) }
|
40
|
+
return true if argv1 =~ Regex
|
39
41
|
return false
|
40
42
|
end
|
41
43
|
|
@@ -14,6 +14,7 @@ module Sisimai
|
|
14
14
|
# Destination mail server does not accept any message
|
15
15
|
Index = [
|
16
16
|
'host/domain does not accept mail', # iCloud
|
17
|
+
'host does not accept mail', # Sendmail
|
17
18
|
'name server: .: host not found', # Sendmail
|
18
19
|
'no mx record found for domain=', # Oath(Yahoo!)
|
19
20
|
'smtp protocol returned a permanent error',
|
@@ -21,27 +21,26 @@ module Sisimai
|
|
21
21
|
class << self
|
22
22
|
Regex = %r{(?>
|
23
23
|
account[ ]not[ ]subscribed[ ]to[ ]ses
|
24
|
-
|authentification[ ]requise.+[a-z]{3}.+402
|
25
24
|
|authentication[ ](?:
|
26
25
|
credentials invalid
|
27
26
|
|failure
|
28
|
-
|failed;[ ]server[ ]
|
27
|
+
|failed;[ ]server[ ][^ ]+[ ]said: # Postfix
|
29
28
|
|required
|
30
29
|
|turned[ ]on[ ]in[ ]your[ ]email[ ]client
|
31
30
|
)
|
32
31
|
|\d+[ ]denied[ ]\[[a-z]+\][ ].+[(]mode:[ ].+[)]
|
33
|
-
|
|
34
|
-
|
|
32
|
+
|authentification[ ]requise.+[0-9a-z_]+402
|
33
|
+
|codes?[ ]d'?[ ]*authentification[ ]invalide.+[0-9a-z_]+305
|
34
|
+
|domain[ ][^ ]+[ ]is[ ]a[ ]dead[ ]domain
|
35
35
|
|executable[ ]files[ ]are[ ]not[ ]allowed[ ]in[ ]compressed[ ]files
|
36
36
|
|insecure[ ]mail[ ]relay
|
37
37
|
|recipient[ ]address[ ]rejected:[ ]access[ ]denied
|
38
38
|
|sorry,[ ]you[ ]don'?t[ ]authenticate[ ]or[ ]the[ ]domain[ ]isn'?t[ ]in[ ]
|
39
39
|
my[ ]list[ ]of[ ]allowed[ ]rcpthosts
|
40
40
|
|tls[ ]required[ ]but[ ]not[ ]supported # SendGrid:the recipient mailserver does not support TLS or have a valid certificate
|
41
|
-
|user[ ].+[ ]is[ ]not[ ]authorized[ ]to[ ]perform[ ]ses:sendrawemail[ ]on[ ]resource
|
42
41
|
|tls[ ]required[ ]but[ ]not[ ]supported # SendGrid:the recipient mailserver does not support TLS or have a valid certificate
|
43
42
|
|unauthenticated[ ]senders[ ]not[ ]allowed
|
44
|
-
|user[ ]
|
43
|
+
|user[ ][^ ]+[ ]is[ ]not[ ]authorized[ ]to[ ]perform[ ]ses:sendrawemail[ ]on[ ]resource
|
45
44
|
|you[ ]are[ ]not[ ]authorized[ ]to[ ]send[ ]mail,[ ]authentication[ ]is[ ]required
|
46
45
|
|verification[ ]failure
|
47
46
|
)
|
@@ -20,6 +20,7 @@ module Sisimai
|
|
20
20
|
["]the[ ]mail[ ]server[ ]detected[ ]your[ ]message[ ]as[ ]spam[ ]and[ ]
|
21
21
|
has[ ]prevented[ ]delivery[.]["] # CPanel/Exim with SA rejections on
|
22
22
|
|(?:\d[.]\d[.]\d|\d{3})[ ]spam\z
|
23
|
+
|554[ ]5[.]7[.]0[ ]reject,[ ]id=\d+
|
23
24
|
|appears[ ]to[ ]be[ ]unsolicited
|
24
25
|
|blacklisted[ ]url[ ]in[ ]message
|
25
26
|
|block[ ]for[ ]spam
|
@@ -32,14 +33,13 @@ module Sisimai
|
|
32
33
|
|content[ ]filter[ ]rejection
|
33
34
|
|cyberoam[ ]anti[ ]spam[ ]engine[ ]has[ ]identified[ ]this[ ]email[ ]as[ ]a[ ]bulk[ ]email
|
34
35
|
|denied[ ]due[ ]to[ ]spam[ ]list
|
35
|
-
|dt:spm[ ]mx.+[ ]http://mail[.]163[.]com/help/help_spam_16[.]htm
|
36
36
|
|greylisted.?.[ ]please[ ]try[ ]again[ ]in
|
37
|
-
|
|
37
|
+
|https?://(?:www[.]spamhaus[.]org|dsbl[.]org|mail[.]163[.]com/help/help_spam_16[.]htm)
|
38
38
|
|listed[ ]in[ ]work[.]drbl[.]imedia[.]ru
|
39
39
|
|mail[ ](?:
|
40
40
|
appears[ ]to[ ]be[ ]unsolicited # rejected due to spam
|
41
41
|
|content[ ]denied # http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=20022&&no=1000726
|
42
|
-
|rejete
|
42
|
+
|rejete[.][ ]mail[ ]rejected[.][ ][0-9a-z_]+506
|
43
43
|
)
|
44
44
|
|may[ ]consider[ ]spam
|
45
45
|
|message[ ](?:
|
@@ -51,7 +51,6 @@ module Sisimai
|
|
51
51
|
|refer[ ]to[ ]the[ ]troubleshooting[ ]page[ ]at[ ]
|
52
52
|
)
|
53
53
|
|looks[ ]like[ ]spam
|
54
|
-
|not[ ]accepted[ ]for[ ]policy[ ]reasons[.][ ]see[ ]http: # Yahoo!
|
55
54
|
|refused[ ]by[ ]mailmarshal[ ]spamprofiler
|
56
55
|
|rejected[ ](?:
|
57
56
|
as[ ]spam
|
@@ -62,25 +61,23 @@ module Sisimai
|
|
62
61
|
)
|
63
62
|
|our[ ](?:
|
64
63
|
email[ ]server[ ]thinks[ ]this[ ]email[ ]is[ ]spam
|
65
|
-
|filters[ ]rate[ ]at[ ]and[ ]above[ ]
|
64
|
+
|filters[ ]rate[ ]at[ ]and[ ]above[ ]\d+[ ]percent[ ]probability[ ]of[ ]being[ ]spam
|
66
65
|
|system[ ]has[ ]detected[ ]that[ ]this[ ]message[ ]is
|
67
66
|
)
|
68
|
-
|permanent[ ]failure[ ]for[ ]one[ ]or[ ]more[ ]recipients[ ][(].+:blocked[)]
|
69
67
|
|probable[ ]spam
|
70
68
|
|reject[ ]bulk[.]advertising
|
71
|
-
|reject,.+[ ][-][ ]spam[.][ ]
|
72
69
|
|rejected(?:
|
73
70
|
:[ ]spamassassin[ ]score[ ]
|
74
|
-
|[ ]by[ ]
|
71
|
+
|[ ]by[ ][^ ]+[ ][(]spam[)]
|
75
72
|
|[ ]due[ ]to[ ]spam[ ](?:classification|content)
|
76
73
|
)
|
77
74
|
|rejecting[ ]banned[ ]content
|
78
75
|
|related[ ]to[ ]content[ ]with[ ]spam[-]like[ ]characteristics
|
79
|
-
|rule[ ]imposed[ ]as[ ]
|
80
|
-
|sender[ ]domain[ ]listed[ ]at[ ]
|
76
|
+
|rule[ ]imposed[ ]as[ ][^ ]+[ ]is[ ]blacklisted[ ]on
|
77
|
+
|sender[ ]domain[ ]listed[ ]at[ ][^ ]+
|
81
78
|
|sending[ ]address[ ]not[ ]accepted[ ]due[ ]to[ ]spam[ ]filter
|
82
79
|
|spam[ ](?:
|
83
|
-
|
80
|
+
[^ ]+[ ]exceeded
|
84
81
|
|blocked
|
85
82
|
|check
|
86
83
|
|content[ ]matched
|
@@ -112,7 +109,7 @@ module Sisimai
|
|
112
109
|
identified[ ]as[ ]spam
|
113
110
|
|scored[ ]as[ ]spam[ ]with[ ]a[ ]probability
|
114
111
|
)
|
115
|
-
|scored[ ]
|
112
|
+
|scored[ ][^ ]+[ ]spam[ ]points
|
116
113
|
|was[ ]classified[ ]as[ ]spam
|
117
114
|
|was[ ]rejected[ ]by[ ]recurrent[ ]pattern[ ]detection[ ]system
|
118
115
|
)
|
@@ -25,17 +25,17 @@ module Sisimai
|
|
25
25
|
'Sisimai::Reason::Rejected' => 'sisimai/reason/rejected',
|
26
26
|
}
|
27
27
|
Regex = %r{(?>
|
28
|
-
|
29
|
-
|[
|
30
|
-
|[<]
|
31
|
-
|[<].+[@].+[>][.][.][.][ ]blocked[ ]by[ ]
|
28
|
+
[#]5[.]1[.]1[ ]bad[ ]address
|
29
|
+
|[<][^ ]+[>][ ]not[ ]found
|
30
|
+
|[<][^ ]+[@][^ ]+[>][.][.][.][ ]blocked[ ]by[ ]
|
32
31
|
|5[.]0[.]0[.][ ]mail[ ]rejected[.]
|
33
32
|
|5[.]1[.]0[ ]address[ ]rejected[.]
|
34
|
-
|adresse[ ]d[ ]au[ ]moins[ ]un[ ]destinataire[ ]invalide
|
33
|
+
|adresse[ ]d[ ]au[ ]moins[ ]un[ ]destinataire[ ]invalide[.][ ]invalid[ ]recipient[.][0-9a-z_]+41[68]
|
35
34
|
|address[ ](?:does[ ]not[ ]exist|unknown)
|
36
35
|
|archived[ ]recipient
|
37
36
|
|bad[-_ ]recipient
|
38
37
|
|can[']t[ ]accept[ ]user
|
38
|
+
|does[ ]not[ ]exist[.]
|
39
39
|
|destination[ ](?:
|
40
40
|
addresses[ ]were[ ]unknown
|
41
41
|
|server[ ]rejected[ ]recipients
|
@@ -53,8 +53,8 @@ module Sisimai
|
|
53
53
|
|an[ ]active[ ]address[ ]at[ ]this[ ]host
|
54
54
|
)
|
55
55
|
|mailbox[ ](?:
|
56
|
-
|
57
|
-
|
56
|
+
[^ ]+[ ]does[ ]not[ ]exist
|
57
|
+
|[^ ]+[@][^ ]+[ ]unavailable
|
58
58
|
|does[ ]not[ ]exist
|
59
59
|
|invalid
|
60
60
|
|is[ ](?:inactive|unavailable)
|
@@ -62,7 +62,7 @@ module Sisimai
|
|
62
62
|
|unavailable
|
63
63
|
)
|
64
64
|
|no[ ](?:
|
65
|
-
[ ]
|
65
|
+
[ ][^ ]+[ ]in[ ]name[ ]directory
|
66
66
|
|account[ ]by[ ]that[ ]name[ ]here
|
67
67
|
|existe[ ](?:dicha[ ]persona|ese[ ]usuario[ ])
|
68
68
|
|mail[ ]box[ ]available[ ]for[ ]this[ ]user
|
@@ -79,7 +79,7 @@ module Sisimai
|
|
79
79
|
|user(?:[ ]here)?
|
80
80
|
)
|
81
81
|
|thank[ ]you[ ]rejected:[ ]account[ ]unavailable:
|
82
|
-
|valid[ ]recipients
|
82
|
+
|valid[ ]recipients,[ ]bye
|
83
83
|
)
|
84
84
|
|non[- ]?existent[ ]user
|
85
85
|
|not[ ](?:
|
@@ -87,15 +87,15 @@ module Sisimai
|
|
87
87
|
|a[ ]local[ ]address
|
88
88
|
|email[ ]addresses
|
89
89
|
)
|
90
|
-
|rcpt[ ][<]
|
90
|
+
|rcpt[ ][<][^ ]+[>][ ]does[ ]not[ ]exist
|
91
91
|
|recipient[ ]address[ ]rejected[.][ ][(]in[ ]reply[ ]to[ ]rcpt[ ]to[ ]command[)]
|
92
|
-
|
|
93
|
-
|
92
|
+
|recipient[ ](?:
|
93
|
+
[^ ]+[ ]was[ ]not[ ]found[ ]in
|
94
94
|
|address[ ]rejected:[ ](?:
|
95
95
|
access[ ]denied
|
96
96
|
|invalid[ ]user
|
97
|
-
|user[ ]
|
98
|
-
|user[ ]unknown[ ]in[ ]
|
97
|
+
|user[ ][^ ]+[ ]does[ ]not[ ]exist
|
98
|
+
|user[ ]unknown[ ]in[ ][^ ]+[ ]table
|
99
99
|
|unknown[ ]user
|
100
100
|
)
|
101
101
|
|does[ ]not[ ]exist(?:[ ]on[ ]this[ ]system)?
|
@@ -104,9 +104,8 @@ module Sisimai
|
|
104
104
|
|unknown
|
105
105
|
)
|
106
106
|
|requested[ ]action[ ]not[ ]taken:[ ]mailbox[ ]unavailable
|
107
|
-
|resolver[.]adr[.]
|
108
|
-
|said:[ ]550[-[ ]]5[.]1[.]1[ ]
|
109
|
-
|smtp[ ]error[ ]from[ ]remote[ ]mail[ ]server[ ]after[ ]end[ ]of[ ]data:[ ]553.+does[ ]not[ ]exist
|
107
|
+
|resolver[.]adr[.]recipient notfound
|
108
|
+
|said:[ ]550[-[ ]]5[.]1[.]1[ ][^ ]+[ ]user[ ]unknown[ ]
|
110
109
|
|sorry,[ ](?:
|
111
110
|
user[ ]unknown
|
112
111
|
|badrcptto
|
@@ -122,7 +121,7 @@ module Sisimai
|
|
122
121
|
address[ ]no[ ]longer[ ]accepts[ ]mail
|
123
122
|
|email[ ]address[ ]is[ ]wrong[ ]or[ ]no[ ]longer[ ]valid
|
124
123
|
|spectator[ ]does[ ]not[ ]exist
|
125
|
-
|user[ ]doesn[']?t[ ]have[ ]a[ ]
|
124
|
+
|user[ ]doesn[']?t[ ]have[ ]a[ ][^ ]+[ ]account
|
126
125
|
)
|
127
126
|
|unknown[ ](?:
|
128
127
|
e[-]?mail[ ]address
|
@@ -132,8 +131,8 @@ module Sisimai
|
|
132
131
|
|user
|
133
132
|
)
|
134
133
|
|user[ ](?:
|
135
|
-
|
136
|
-
|
134
|
+
[^ ]+[ ]was[ ]not[ ]found
|
135
|
+
|[^ ]+[ ]does[ ]not[ ]exist
|
137
136
|
|does[ ]not[ ]exist
|
138
137
|
|missing[ ]home[ ]directory
|
139
138
|
|not[ ](?:active|exist|found|known)
|
data/lib/sisimai/smtp/status.rb
CHANGED
@@ -651,7 +651,7 @@ module Sisimai
|
|
651
651
|
'5.7.24' => 'securityerror', # SPF validation error
|
652
652
|
'5.7.25' => 'blocked', # Reverse DNS validation failed
|
653
653
|
'5.7.26' => 'securityerror', # Multiple authentication checks failed
|
654
|
-
'5.7.27' => '
|
654
|
+
'5.7.27' => 'notaccept', # MX resource record of a destination host is Null MX: RFC7505
|
655
655
|
}.freeze
|
656
656
|
|
657
657
|
InternalCode = {
|
data/lib/sisimai/version.rb
CHANGED
@@ -0,0 +1,59 @@
|
|
1
|
+
Return-Path: <MAILER-DAEMON>
|
2
|
+
Received: from localhost (localhost)
|
3
|
+
by nyaan.example.jp (V8/cf) id 093BC6UQ019557;
|
4
|
+
Sat, 3 Oct 2020 20:12:06 +0900
|
5
|
+
Date: Sat, 3 Oct 2020 20:12:06 +0900
|
6
|
+
From: Mail Delivery Subsystem <MAILER-DAEMON>
|
7
|
+
Message-Id: <202010031112.093BC6UQ019557@nyaan.example.jp>
|
8
|
+
To: postmaster
|
9
|
+
MIME-Version: 1.0
|
10
|
+
Content-Type: multipart/report; report-type=delivery-status;
|
11
|
+
boundary="093BC6UQ019557.1601723526/nyaan.example.jp"
|
12
|
+
Subject: Postmaster notify: see transcript for details
|
13
|
+
Auto-Submitted: auto-generated (postmaster-notification)
|
14
|
+
|
15
|
+
This is a MIME-encapsulated message
|
16
|
+
|
17
|
+
--093BC6UQ019557.1601723526/nyaan.example.jp
|
18
|
+
|
19
|
+
The original message was received at Sat, 3 Oct 2020 20:11:48 +0900
|
20
|
+
from localhost [127.0.0.1]
|
21
|
+
with id 093BBRUP019529
|
22
|
+
|
23
|
+
----- The following addresses had permanent fatal errors -----
|
24
|
+
<neko@libsisimai.org>
|
25
|
+
(reason: 550 Host does not accept mail)
|
26
|
+
|
27
|
+
----- Transcript of session follows -----
|
28
|
+
554 5.0.0 Service unavailable
|
29
|
+
|
30
|
+
--093BC6UQ019557.1601723526/nyaan.example.jp
|
31
|
+
Content-Type: message/delivery-status
|
32
|
+
|
33
|
+
Reporting-MTA: dns; nyaan.example.jp
|
34
|
+
Received-From-MTA: DNS; localhost
|
35
|
+
Arrival-Date: Sat, 3 Oct 2020 20:11:48 +0900
|
36
|
+
|
37
|
+
Final-Recipient: RFC822; neko@libsisimai.org
|
38
|
+
X-Actual-Recipient: rfc822; neko@libsisimai.org
|
39
|
+
Action: failed
|
40
|
+
Status: 5.7.27
|
41
|
+
Remote-MTA: DNS; libsisimai.org
|
42
|
+
Diagnostic-Code: SMTP; 550 Host does not accept mail
|
43
|
+
Last-Attempt-Date: Sat, 3 Oct 2020 20:12:06 +0900
|
44
|
+
|
45
|
+
--093BC6UQ019557.1601723526/nyaan.example.jp
|
46
|
+
Content-Type: text/rfc822-headers
|
47
|
+
|
48
|
+
Return-Path: <postmaster@example.jp>
|
49
|
+
Received: from [127.0.0.1] (localhost [127.0.0.1])
|
50
|
+
by nyaan.example.jp (V8/cf) with ESMTP id 093BBRUP019529
|
51
|
+
for <neko@libsisimai.org>; Sat, 3 Oct 2020 20:11:48 +0900
|
52
|
+
Date: Sat, 3 Oct 2020 20:11:27 +0900
|
53
|
+
Message-Id: <202010031111.093BBRUP019529@nyaan.example.jp>
|
54
|
+
Subject: Nyaan
|
55
|
+
From: postmaster@example.jp
|
56
|
+
To: neko@libsisimai.org
|
57
|
+
|
58
|
+
--093BC6UQ019557.1601723526/nyaan.example.jp--
|
59
|
+
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sisimai
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.25.
|
4
|
+
version: 4.25.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- azumakuniyuki
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-10-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -610,6 +610,7 @@ files:
|
|
610
610
|
- set-of-emails/maildir/bsd/lhost-sendmail-54.eml
|
611
611
|
- set-of-emails/maildir/bsd/lhost-sendmail-55.eml
|
612
612
|
- set-of-emails/maildir/bsd/lhost-sendmail-56.eml
|
613
|
+
- set-of-emails/maildir/bsd/lhost-sendmail-57.eml
|
613
614
|
- set-of-emails/maildir/bsd/lhost-surfcontrol-01.eml
|
614
615
|
- set-of-emails/maildir/bsd/lhost-surfcontrol-02.eml
|
615
616
|
- set-of-emails/maildir/bsd/lhost-surfcontrol-03.eml
|