sisimai 5.5.0-java → 5.6.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.
- checksums.yaml +4 -4
- data/ChangeLog.md +21 -0
- data/LICENSE +1 -1
- data/README-JA.md +15 -12
- data/README.md +16 -13
- data/lib/sisimai/fact.rb +17 -2
- data/lib/sisimai/lhost/amazonses.rb +1 -1
- data/lib/sisimai/lhost/einsundeins.rb +1 -1
- data/lib/sisimai/lhost/exchange2007.rb +2 -2
- data/lib/sisimai/lhost/exim.rb +6 -8
- data/lib/sisimai/lhost/qmail.rb +5 -5
- data/lib/sisimai/message.rb +2 -0
- data/lib/sisimai/reason/authfailure.rb +9 -13
- data/lib/sisimai/reason/badreputation.rb +7 -7
- data/lib/sisimai/reason/blocked.rb +57 -83
- data/lib/sisimai/reason/contenterror.rb +14 -8
- data/lib/sisimai/reason/{mesgtoobig.rb → emailtoolarge.rb} +22 -25
- data/lib/sisimai/reason/expired.rb +16 -23
- data/lib/sisimai/reason/filtered.rb +13 -17
- data/lib/sisimai/reason/hasmoved.rb +2 -1
- data/lib/sisimai/reason/hostunknown.rb +16 -19
- data/lib/sisimai/reason/mailboxfull.rb +27 -49
- data/lib/sisimai/reason/networkerror.rb +16 -16
- data/lib/sisimai/reason/norelaying.rb +19 -19
- data/lib/sisimai/reason/notaccept.rb +6 -8
- data/lib/sisimai/reason/notcompliantrfc.rb +5 -9
- data/lib/sisimai/reason/policyviolation.rb +11 -25
- data/lib/sisimai/reason/ratelimited.rb +62 -0
- data/lib/sisimai/reason/rejected.rb +45 -59
- data/lib/sisimai/reason/requireptr.rb +13 -25
- data/lib/sisimai/reason/securityerror.rb +13 -19
- data/lib/sisimai/reason/spamdetected.rb +51 -101
- data/lib/sisimai/reason/suspend.rb +26 -24
- data/lib/sisimai/reason/systemerror.rb +19 -23
- data/lib/sisimai/reason/systemfull.rb +1 -1
- data/lib/sisimai/reason/userunknown.rb +79 -112
- data/lib/sisimai/reason/virusdetected.rb +6 -8
- data/lib/sisimai/reason.rb +14 -14
- data/lib/sisimai/rhost/apple.rb +5 -5
- data/lib/sisimai/rhost/cloudflare.rb +2 -0
- data/lib/sisimai/rhost/cox.rb +22 -20
- data/lib/sisimai/rhost/facebook.rb +16 -16
- data/lib/sisimai/rhost/franceptt.rb +8 -3
- data/lib/sisimai/rhost/godaddy.rb +33 -15
- data/lib/sisimai/rhost/google.rb +63 -64
- data/lib/sisimai/rhost/iua.rb +1 -1
- data/lib/sisimai/rhost/messagelabs.rb +12 -12
- data/lib/sisimai/rhost/microsoft.rb +82 -86
- data/lib/sisimai/rhost/mimecast.rb +34 -34
- data/lib/sisimai/rhost/nttdocomo.rb +2 -2
- data/lib/sisimai/rhost/spectrum.rb +7 -7
- data/lib/sisimai/rhost/tencent.rb +9 -11
- data/lib/sisimai/rhost/yahooinc.rb +7 -8
- data/lib/sisimai/smtp/command.rb +2 -0
- data/lib/sisimai/smtp/status.rb +50 -90
- data/lib/sisimai/string.rb +0 -15
- data/lib/sisimai/version.rb +1 -1
- metadata +4 -6
- data/lib/sisimai/reason/exceedlimit.rb +0 -47
- data/lib/sisimai/reason/speeding.rb +0 -47
- data/lib/sisimai/reason/toomanyconn.rb +0 -59
|
@@ -14,68 +14,53 @@ module Sisimai
|
|
|
14
14
|
module Rejected
|
|
15
15
|
class << self
|
|
16
16
|
IsNot = [
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
"5.1.0 address rejected",
|
|
18
|
+
"ip address ",
|
|
19
|
+
"recipient address rejected",
|
|
20
20
|
].freeze
|
|
21
21
|
Index = [
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
'batv validation failure', # SonicWall
|
|
28
|
-
'backscatter protection detected an invalid or expired email address', # MDaemon
|
|
29
|
-
"because the sender isn't on the recipient's list of senders to accept mail from",
|
|
30
|
-
'bogus mail from', # IMail - block empty sender
|
|
31
|
-
'by non-member to a members-only list',
|
|
22
|
+
"access denied (in reply to mail from command)",
|
|
23
|
+
"administrative prohibition",
|
|
24
|
+
"all recipient addresses rejected : access denied",
|
|
25
|
+
"backscatter protection detected an invalid or expired email address", # MDaemon
|
|
26
|
+
"by non-member to a members-only list",
|
|
32
27
|
"can't determine purported responsible address",
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
'syntax error: empty email address',
|
|
70
|
-
'the email address used to send your message is not subscribed to this group',
|
|
71
|
-
'the message has been rejected by batv defense',
|
|
72
|
-
'this server does not accept mail from',
|
|
73
|
-
'transaction failed unsigned dsn for',
|
|
74
|
-
'unroutable sender address',
|
|
75
|
-
'you are not allowed to post to this mailing list',
|
|
76
|
-
'you are sending to/from an address that has been blacklisted',
|
|
77
|
-
'your access to submit messages to this e-mail system has been rejected',
|
|
78
|
-
'your email address has been blacklisted', # MessageLabs
|
|
28
|
+
"connections not accepted from servers without a valid sender domain",
|
|
29
|
+
"denied by secumail valid-address-filter", # SecuMail
|
|
30
|
+
"domain of sender address ",
|
|
31
|
+
"email address is on senderfilterconfig list",
|
|
32
|
+
"emetteur invalide",
|
|
33
|
+
"empty email address",
|
|
34
|
+
"empty envelope senders not allowed",
|
|
35
|
+
"from: domain is invalid. please provide a valid from:",
|
|
36
|
+
"fully qualified email address required", # McAfee
|
|
37
|
+
"invalid sender",
|
|
38
|
+
"is not a registered gateway user",
|
|
39
|
+
"mail from not owned by user",
|
|
40
|
+
"mailfrom domain is listed in spamhaus",
|
|
41
|
+
"null sender is not allowed",
|
|
42
|
+
"returned mail not accepted here",
|
|
43
|
+
"sending this from a different address or alias using the ",
|
|
44
|
+
"sender is spammer",
|
|
45
|
+
"sender not pre-approved",
|
|
46
|
+
"sender domain is empty",
|
|
47
|
+
"sender domain listed at ",
|
|
48
|
+
"sender verify failed", # Exim callout
|
|
49
|
+
"server does not accept mail from",
|
|
50
|
+
"spam reporting address", # SendGrid|a message to an address has previously been marked as Spam by the recipient.
|
|
51
|
+
"unroutable sender address",
|
|
52
|
+
"you are not allowed to post to this mailing list",
|
|
53
|
+
"your access to submit messages to this e-mail system has been rejected",
|
|
54
|
+
"your email address has been blacklisted", # MessageLabs
|
|
55
|
+
].freeze
|
|
56
|
+
Pairs = [
|
|
57
|
+
["after end of data:", ".", " does not exist"],
|
|
58
|
+
["after mail from:", ".", " does not exist"],
|
|
59
|
+
["domain ", " is a dead domain"],
|
|
60
|
+
["email address ", "is not "],
|
|
61
|
+
["send", "blacklisted"],
|
|
62
|
+
["sender", " rejected"],
|
|
63
|
+
["sender is", " list"],
|
|
79
64
|
].freeze
|
|
80
65
|
|
|
81
66
|
def text; return 'rejected'; end
|
|
@@ -88,6 +73,7 @@ module Sisimai
|
|
|
88
73
|
return false if argv1.nil? || argv1.empty?
|
|
89
74
|
return false if IsNot.any? { |a| argv1.include?(a) }
|
|
90
75
|
return true if Index.any? { |a| argv1.include?(a) }
|
|
76
|
+
return true if Pairs.any? { |a| Sisimai::String.aligned(argv1, a) }
|
|
91
77
|
return false
|
|
92
78
|
end
|
|
93
79
|
|
|
@@ -6,35 +6,23 @@ module Sisimai
|
|
|
6
6
|
# SMTP connection.
|
|
7
7
|
module RequirePTR
|
|
8
8
|
class << self
|
|
9
|
-
require 'sisimai/string'
|
|
10
|
-
|
|
11
9
|
Index = [
|
|
12
|
-
|
|
13
|
-
'all mail servers must have a ptr record with a valid reverse dns entry',
|
|
14
|
-
'bad dns ptr resource record',
|
|
15
|
-
'cannot find your hostname',
|
|
10
|
+
"cannot find your hostname",
|
|
16
11
|
"cannot resolve your address.",
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
'ptr record setup',
|
|
23
|
-
'reverse dns failed',
|
|
24
|
-
'reverse dns required',
|
|
25
|
-
'sender ip reverse lookup rejected',
|
|
26
|
-
'the ip address sending this message does not have a ptr record setup', # Google
|
|
27
|
-
'the corresponding forward dns entry does not point to the sending ip', # Google
|
|
28
|
-
'this system will not accept messages from servers/devices with no reverse dns',
|
|
29
|
-
'unresolvable relay host name',
|
|
30
|
-
'we do not accept mail from hosts with dynamic ip or generic dns ptr-records',
|
|
12
|
+
"corresponding forward dns entry does not point to the sending ip", # Google
|
|
13
|
+
"ip name lookup failed",
|
|
14
|
+
"no matches to nameserver query",
|
|
15
|
+
"sender ip reverse lookup rejected",
|
|
16
|
+
"unresolvable relay host name",
|
|
31
17
|
].freeze
|
|
32
18
|
Pairs = [
|
|
33
|
-
[
|
|
34
|
-
[
|
|
35
|
-
[
|
|
36
|
-
[
|
|
37
|
-
[
|
|
19
|
+
["domain "," mismatches client ip"],
|
|
20
|
+
["domain name verification on your ip address ", "failed"],
|
|
21
|
+
["dns lookup failure: ", " try again later"],
|
|
22
|
+
["ptr", "record"],
|
|
23
|
+
["reverse", " dns"],
|
|
24
|
+
["server access ", " forbidden by invalid rdns record of your mail server"],
|
|
25
|
+
["service permits ", " unverifyable sending ips"],
|
|
38
26
|
].freeze
|
|
39
27
|
|
|
40
28
|
def text; return 'requireptr'; end
|
|
@@ -17,28 +17,22 @@ module Sisimai
|
|
|
17
17
|
#
|
|
18
18
|
module SecurityError
|
|
19
19
|
class << self
|
|
20
|
-
require 'sisimai/string'
|
|
21
|
-
|
|
22
20
|
Index = [
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
"
|
|
32
|
-
'unauthenticated senders not allowed',
|
|
33
|
-
'verification failure',
|
|
34
|
-
'you are not authorized to send mail, authentication is required',
|
|
21
|
+
"account not subscribed to ses",
|
|
22
|
+
"authentication credentials invalid",
|
|
23
|
+
"authentication failure",
|
|
24
|
+
"authentication required",
|
|
25
|
+
"authentication turned on in your email client",
|
|
26
|
+
"unauthenticated senders not allowed",
|
|
27
|
+
"verification failure",
|
|
28
|
+
"you are not authorized to send mail, authentication is required",
|
|
29
|
+
"you don't authenticate or the domain isn't in my list of allowed rcpthosts",
|
|
35
30
|
].freeze
|
|
36
31
|
Pairs = [
|
|
37
|
-
[
|
|
38
|
-
[
|
|
39
|
-
[
|
|
40
|
-
[
|
|
41
|
-
['user ', ' is not authorized to perform ses:sendrawemail on resource'],
|
|
32
|
+
["authentication failed; server ", " said: "], # Postfix
|
|
33
|
+
["authentification invalide", "305"],
|
|
34
|
+
["authentification requise", "402"],
|
|
35
|
+
["user ", " is not authorized to perform ses:sendrawemail on resource"],
|
|
42
36
|
].freeze
|
|
43
37
|
|
|
44
38
|
def text; return 'securityerror'; end
|
|
@@ -10,109 +10,59 @@ module Sisimai
|
|
|
10
10
|
# Last-Attempt-Date: Thu, 9 Apr 2008 23:34:45 +0900 (JST)
|
|
11
11
|
module SpamDetected
|
|
12
12
|
class << self
|
|
13
|
-
require 'sisimai/string'
|
|
14
|
-
|
|
15
13
|
Index = [
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
'message detected as spam',
|
|
43
|
-
'message filtered',
|
|
44
|
-
'message filtered. please see the faqs section on spam',
|
|
45
|
-
'message filtered. refer to the troubleshooting page at ',
|
|
46
|
-
'message looks like spam',
|
|
47
|
-
'message is being rejected as it seems to be a spam',
|
|
48
|
-
'message refused by mailmarshal spamprofiler',
|
|
49
|
-
'message refused by trustwave seg spamprofiler',
|
|
50
|
-
'message rejected as spam',
|
|
51
|
-
'message rejected because of unacceptable content',
|
|
52
|
-
'message rejected due to suspected spam content',
|
|
53
|
-
'message rejected for policy reasons',
|
|
54
|
-
'message was rejected for possible spam/virus content',
|
|
55
|
-
'our email server thinks this email is spam',
|
|
56
|
-
'our system has detected that this message is ',
|
|
57
|
-
'probable spam',
|
|
58
|
-
'reject bulk.advertising',
|
|
59
|
-
'rejected: spamassassin score ',
|
|
60
|
-
'rejected - bulk email',
|
|
61
|
-
'rejecting banned content',
|
|
62
|
-
'rejecting mail content',
|
|
63
|
-
'related to content with spam-like characteristics',
|
|
64
|
-
'sender domain listed at ',
|
|
65
|
-
'sending address not accepted due to spam filter',
|
|
66
|
-
'spam blocked',
|
|
67
|
-
'spam check',
|
|
68
|
-
'spam content matched',
|
|
69
|
-
'spam detected',
|
|
70
|
-
'spam email',
|
|
71
|
-
'spam email not accepted',
|
|
72
|
-
'spam message rejected.', # mail.ru
|
|
73
|
-
'spam not accepted',
|
|
74
|
-
'spam refused',
|
|
75
|
-
'spam rejection',
|
|
76
|
-
'spam score ',
|
|
77
|
-
'spambouncer identified spam', # SpamBouncer identified SPAM
|
|
78
|
-
'spamming not allowed',
|
|
79
|
-
'too many spam complaints',
|
|
80
|
-
'too much spam.', # Earthlink
|
|
81
|
-
'the email message was detected as spam',
|
|
82
|
-
'the message has been rejected by spam filtering engine',
|
|
83
|
-
'the message was rejected due to classification as bulk mail',
|
|
84
|
-
'the content of this message looked like spam', # SendGrid
|
|
85
|
-
'this message appears to be spam',
|
|
86
|
-
'this message has been identified as spam',
|
|
87
|
-
'this message has been scored as spam with a probability',
|
|
88
|
-
'this message was classified as spam',
|
|
89
|
-
'this message was rejected by recurrent pattern detection system',
|
|
90
|
-
'transaction failed spam message not queued', # SendGrid
|
|
91
|
-
'we dont accept spam',
|
|
92
|
-
'your email appears similar to spam we have received before',
|
|
93
|
-
'your email breaches local uribl policy',
|
|
94
|
-
'your email had spam-like ',
|
|
95
|
-
'your email is considered spam',
|
|
96
|
-
'your email is probably spam',
|
|
97
|
-
'your email was detected as spam',
|
|
98
|
-
'your message as spam and has prevented delivery',
|
|
99
|
-
'your message has been temporarily blocked by our filter',
|
|
100
|
-
'your message has been rejected because it appears to be spam',
|
|
101
|
-
'your message has triggered a spam block',
|
|
102
|
-
'your message may contain the spam contents',
|
|
103
|
-
'your message failed several antispam checks',
|
|
14
|
+
"blacklisted url in message",
|
|
15
|
+
"block for spam",
|
|
16
|
+
"blocked by policy: no spam please",
|
|
17
|
+
"blocked by spamassassin", # rejected by SpamAssassin
|
|
18
|
+
"classified as spam and is rejected",
|
|
19
|
+
"content filter rejection",
|
|
20
|
+
"denied due to spam list",
|
|
21
|
+
"identified spam", # 554 SpamBouncer identified SPAM, message permanently rejected (#5.3.0)
|
|
22
|
+
"may consider spam",
|
|
23
|
+
"message content rejected",
|
|
24
|
+
"message has been temporarily blocked by our filter",
|
|
25
|
+
"message is being rejected as it seems to be a spam",
|
|
26
|
+
"message was rejected by recurrent pattern detection system",
|
|
27
|
+
"our email server thinks this email is spam",
|
|
28
|
+
"reject bulk.advertising",
|
|
29
|
+
"spam check",
|
|
30
|
+
"spam content ",
|
|
31
|
+
"spam detected",
|
|
32
|
+
"spam email",
|
|
33
|
+
"spam-like header",
|
|
34
|
+
"spam message",
|
|
35
|
+
"spam not accepted",
|
|
36
|
+
"spam refused",
|
|
37
|
+
"spamming not allowed",
|
|
38
|
+
"unsolicited ",
|
|
39
|
+
"your email breaches local uribl policy",
|
|
104
40
|
].freeze
|
|
105
41
|
Pairs = [
|
|
106
|
-
[
|
|
107
|
-
[
|
|
108
|
-
[
|
|
109
|
-
[
|
|
110
|
-
[
|
|
111
|
-
[
|
|
112
|
-
[
|
|
113
|
-
[
|
|
114
|
-
[
|
|
115
|
-
[
|
|
42
|
+
["accept", " spam"],
|
|
43
|
+
["appears", " to ", "spam"],
|
|
44
|
+
["bulk", "mail"],
|
|
45
|
+
["considered", " spam"],
|
|
46
|
+
["contain", " spam"],
|
|
47
|
+
["detected", " spam"],
|
|
48
|
+
["greylisted", " please try again in"],
|
|
49
|
+
["mail score (", " over "],
|
|
50
|
+
["mail rejete. mail rejected. ", "506"],
|
|
51
|
+
["message ", "as spam"],
|
|
52
|
+
["message ", "like spam"],
|
|
53
|
+
["message ", "spamprofiler"],
|
|
54
|
+
["probab", " spam"],
|
|
55
|
+
["refused by", " spamprofiler"],
|
|
56
|
+
["reject", " content"],
|
|
57
|
+
["reject, id=", "spam"],
|
|
58
|
+
["rejected by ", " (spam)"],
|
|
59
|
+
["rejected due to spam ", "classification"],
|
|
60
|
+
["rule imposed as ", " is blacklisted on"],
|
|
61
|
+
["score", "spam"],
|
|
62
|
+
["spam ", "block"],
|
|
63
|
+
["spam ", "filter"],
|
|
64
|
+
["spam ", " exceeded"],
|
|
65
|
+
["spam ", "score"],
|
|
116
66
|
].freeze
|
|
117
67
|
|
|
118
68
|
def text; return 'spamdetected'; end
|
|
@@ -141,7 +91,7 @@ module Sisimai
|
|
|
141
91
|
# The value of "reason" isn't "spamdetected" when the value of "command" is an SMTP command
|
|
142
92
|
# to be sent before the SMTP DATA command because all the MTAs read the headers and the
|
|
143
93
|
# entire message body after the DATA command.
|
|
144
|
-
return false if
|
|
94
|
+
return false if Sisimai::SMTP::Command::ExceptDATA.include?(argvs['command'])
|
|
145
95
|
return match(argvs['diagnosticcode'].downcase)
|
|
146
96
|
end
|
|
147
97
|
|
|
@@ -6,30 +6,31 @@ module Sisimai
|
|
|
6
6
|
module Suspend
|
|
7
7
|
class << self
|
|
8
8
|
Index = [
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
"
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
9
|
+
" currently suspended",
|
|
10
|
+
" temporary locked",
|
|
11
|
+
"address no longer accepts mail",
|
|
12
|
+
"archived recipient",
|
|
13
|
+
"boite du destinataire archivee",
|
|
14
|
+
"email account that you tried to reach is inactive",
|
|
15
|
+
"inactive account",
|
|
16
|
+
"inactivity new mail is not currently being accepted for this mailbox",
|
|
17
|
+
"invalid/inactive user",
|
|
18
|
+
"is a deactivated mailbox", # http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=20022&&no=1000742
|
|
19
|
+
"is unavailable: user is terminated",
|
|
20
|
+
"mailbox is frozen",
|
|
21
|
+
"mailbox is inactive",
|
|
22
|
+
"mailbox unavailable or access denied",
|
|
23
|
+
"recipient rejected: temporarily inactive",
|
|
24
|
+
"recipient suspend the service",
|
|
25
|
+
"user or domain is disabled",
|
|
26
|
+
"user suspended", # http://mail.163.com/help/help_spam_16.htm
|
|
27
|
+
"vdelivermail: account is locked email bounced",
|
|
28
|
+
].freeze
|
|
29
|
+
Pairs = [
|
|
30
|
+
["account ", "disabled"],
|
|
31
|
+
["has been ", "suspended"],
|
|
32
|
+
["mailbox ", "disabled"],
|
|
33
|
+
["not ", "active"],
|
|
33
34
|
].freeze
|
|
34
35
|
|
|
35
36
|
def text; return 'suspend'; end
|
|
@@ -41,6 +42,7 @@ module Sisimai
|
|
|
41
42
|
def match(argv1)
|
|
42
43
|
return false if argv1.nil? || argv1.empty?
|
|
43
44
|
return true if Index.any? { |a| argv1.include?(a) }
|
|
45
|
+
return true if Pairs.any? { |a| Sisimai::String.aligned(argv1, a) }
|
|
44
46
|
return false
|
|
45
47
|
end
|
|
46
48
|
|
|
@@ -9,33 +9,29 @@ module Sisimai
|
|
|
9
9
|
# message has been in the queue too long.
|
|
10
10
|
module SystemError
|
|
11
11
|
class << self
|
|
12
|
-
require 'sisimai/string'
|
|
13
12
|
Index = [
|
|
14
|
-
|
|
13
|
+
"aliasing/forwarding loop broken",
|
|
15
14
|
"can't create user output file",
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
'server configuration error',
|
|
31
|
-
'service currently unavailable',
|
|
32
|
-
'system config error',
|
|
33
|
-
'temporary local problem',
|
|
34
|
-
'timeout waiting for input',
|
|
35
|
-
'transaction failed ',
|
|
15
|
+
"cannot send e-mail to yourself",
|
|
16
|
+
"could not load ",
|
|
17
|
+
"interrupted system call",
|
|
18
|
+
"it encountered an error while being processed",
|
|
19
|
+
"it would create a mail loop",
|
|
20
|
+
"loop was found in the mail exchanger",
|
|
21
|
+
"loops back to myself",
|
|
22
|
+
"queue file write error",
|
|
23
|
+
"recipient deferred because there is no mdb",
|
|
24
|
+
"remote server is misconfigured",
|
|
25
|
+
"service currently unavailable",
|
|
26
|
+
"temporary local problem",
|
|
27
|
+
"timeout waiting for input",
|
|
28
|
+
"transaction failed ",
|
|
36
29
|
].freeze
|
|
37
30
|
Pairs = [
|
|
38
|
-
[
|
|
31
|
+
["config", " error"],
|
|
32
|
+
["internal ", "error"],
|
|
33
|
+
["local ", "error"],
|
|
34
|
+
["unable to connect ", "daemon"],
|
|
39
35
|
].freeze
|
|
40
36
|
|
|
41
37
|
def text; return 'systemerror'; end
|
|
@@ -9,8 +9,8 @@ module Sisimai
|
|
|
9
9
|
module SystemFull
|
|
10
10
|
class << self
|
|
11
11
|
Index = [
|
|
12
|
+
'exceeded storage allocation', # MS Exchange
|
|
12
13
|
'mail system full',
|
|
13
|
-
'requested mail action aborted: exceeded storage allocation', # MS Exchange
|
|
14
14
|
].freeze
|
|
15
15
|
|
|
16
16
|
def text; return 'systemfull'; end
|