sisimai 4.25.3 → 4.25.4
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 +5 -5
- data/.gitignore +1 -0
- data/.travis.yml +1 -0
- data/ANALYTICAL-PRECISION +2 -4
- data/CONTRIBUTING +4 -0
- data/ChangeLog.md +39 -0
- data/Developers.mk +1 -72
- data/Makefile +4 -0
- data/README-JA.md +3 -0
- data/README.md +5 -2
- data/lib/sisimai.rb +4 -3
- data/lib/sisimai/arf.rb +6 -6
- data/lib/sisimai/bite.rb +8 -3
- data/lib/sisimai/bite/email.rb +7 -50
- data/lib/sisimai/bite/json.rb +5 -25
- data/lib/sisimai/data.rb +1 -1
- data/lib/sisimai/lhost.rb +101 -0
- data/lib/sisimai/{bite/email → lhost}/activehunter.rb +10 -10
- data/lib/sisimai/{bite/email → lhost}/amavis.rb +9 -9
- data/lib/sisimai/lhost/amazonses.rb +403 -0
- data/lib/sisimai/{bite/email → lhost}/amazonworkmail.rb +9 -9
- data/lib/sisimai/{bite/email → lhost}/aol.rb +10 -10
- data/lib/sisimai/{bite/email → lhost}/apachejames.rb +10 -10
- data/lib/sisimai/{bite/email → lhost}/bigfoot.rb +9 -9
- data/lib/sisimai/{bite/email → lhost}/biglobe.rb +10 -10
- data/lib/sisimai/{bite/email → lhost}/courier.rb +10 -10
- data/lib/sisimai/{bite/email → lhost}/domino.rb +9 -9
- data/lib/sisimai/{bite/email → lhost}/einsundeins.rb +10 -10
- data/lib/sisimai/{bite/email → lhost}/exchange2003.rb +9 -9
- data/lib/sisimai/{bite/email → lhost}/exchange2007.rb +9 -9
- data/lib/sisimai/{bite/email → lhost}/exim.rb +10 -10
- data/lib/sisimai/{bite/email → lhost}/ezweb.rb +9 -9
- data/lib/sisimai/{bite/email → lhost}/facebook.rb +9 -9
- data/lib/sisimai/{bite/email → lhost}/fml.rb +10 -10
- data/lib/sisimai/{bite/email → lhost}/gmx.rb +10 -10
- data/lib/sisimai/{bite/email → lhost}/google.rb +14 -14
- data/lib/sisimai/{bite/email → lhost}/gsuite.rb +10 -10
- data/lib/sisimai/{bite/email → lhost}/imailserver.rb +10 -10
- data/lib/sisimai/{bite/email → lhost}/interscanmss.rb +9 -9
- data/lib/sisimai/{bite/email → lhost}/kddi.rb +10 -10
- data/lib/sisimai/{bite/email → lhost}/mailfoundry.rb +9 -9
- data/lib/sisimai/{bite/email → lhost}/mailmarshalsmtp.rb +9 -9
- data/lib/sisimai/{bite/email → lhost}/mailru.rb +11 -11
- data/lib/sisimai/{bite/email → lhost}/mcafee.rb +9 -9
- data/lib/sisimai/{bite/email → lhost}/messagelabs.rb +9 -9
- data/lib/sisimai/{bite/email → lhost}/messagingserver.rb +9 -9
- data/lib/sisimai/{bite/email → lhost}/mfilter.rb +9 -9
- data/lib/sisimai/{bite/email → lhost}/mxlogic.rb +10 -10
- data/lib/sisimai/{bite/email → lhost}/notes.rb +9 -9
- data/lib/sisimai/{bite/email → lhost}/office365.rb +10 -10
- data/lib/sisimai/{bite/email → lhost}/opensmtpd.rb +9 -9
- data/lib/sisimai/{bite/email → lhost}/outlook.rb +9 -9
- data/lib/sisimai/{bite/email → lhost}/postfix.rb +9 -9
- data/lib/sisimai/{bite/email → lhost}/qmail.rb +9 -9
- data/lib/sisimai/{bite/email → lhost}/receivingses.rb +11 -11
- data/lib/sisimai/{bite/email → lhost}/sendgrid.rb +120 -11
- data/lib/sisimai/{bite/email → lhost}/sendmail.rb +9 -9
- data/lib/sisimai/{bite/email → lhost}/surfcontrol.rb +9 -9
- data/lib/sisimai/{bite/email → lhost}/userdefined.rb +9 -9
- data/lib/sisimai/{bite/email → lhost}/v5sendmail.rb +10 -10
- data/lib/sisimai/{bite/email → lhost}/verizon.rb +11 -11
- data/lib/sisimai/{bite/email → lhost}/x1.rb +9 -9
- data/lib/sisimai/{bite/email → lhost}/x2.rb +9 -9
- data/lib/sisimai/{bite/email → lhost}/x3.rb +9 -9
- data/lib/sisimai/{bite/email → lhost}/x4.rb +10 -10
- data/lib/sisimai/{bite/email → lhost}/x5.rb +9 -9
- data/lib/sisimai/{bite/email → lhost}/yahoo.rb +9 -9
- data/lib/sisimai/{bite/email → lhost}/yandex.rb +10 -10
- data/lib/sisimai/{bite/email → lhost}/zoho.rb +10 -10
- data/lib/sisimai/mda.rb +1 -1
- data/lib/sisimai/message.rb +535 -28
- data/lib/sisimai/message/email.rb +3 -454
- data/lib/sisimai/message/json.rb +3 -177
- data/lib/sisimai/order.rb +238 -4
- data/lib/sisimai/order/email.rb +5 -190
- data/lib/sisimai/order/json.rb +3 -39
- data/lib/sisimai/reason.rb +1 -1
- data/lib/sisimai/reason/norelaying.rb +1 -1
- data/lib/sisimai/reason/userunknown.rb +1 -1
- data/lib/sisimai/reason/virusdetected.rb +1 -0
- data/lib/sisimai/rfc1894.rb +2 -2
- data/lib/sisimai/rfc3464.rb +13 -13
- data/lib/sisimai/rfc3834.rb +3 -3
- data/lib/sisimai/rfc5322.rb +1 -1
- data/lib/sisimai/rhost.rb +5 -4
- data/lib/sisimai/rhost/exchangeonline.rb +1 -1
- data/lib/sisimai/rhost/franceptt.rb +1 -1
- data/lib/sisimai/rhost/godaddy.rb +1 -1
- data/lib/sisimai/rhost/iua.rb +39 -0
- data/lib/sisimai/version.rb +1 -1
- data/set-of-emails/README.md +0 -1
- data/set-of-emails/maildir/bsd/email-gsuite-13.eml +261 -0
- data/set-of-emails/maildir/bsd/email-postfix-62.eml +105 -0
- data/set-of-emails/maildir/bsd/email-postfix-63.eml +85 -0
- data/set-of-emails/maildir/bsd/rhost-iua-01.eml +70 -0
- metadata +62 -82
- data/fig/sisimai-architecture.png +0 -0
- data/lib/sisimai/bite/email/amazonses.rb +0 -186
- data/lib/sisimai/bite/json/amazonses.rb +0 -242
- data/lib/sisimai/bite/json/sendgrid.rb +0 -123
- data/set-of-emails/jsonobj/json-amazonses-01.json +0 -1
- data/set-of-emails/jsonobj/json-amazonses-02.json +0 -11
- data/set-of-emails/jsonobj/json-amazonses-03.json +0 -1
- data/set-of-emails/jsonobj/json-amazonses-04.json +0 -1
- data/set-of-emails/jsonobj/json-amazonses-05.json +0 -1
- data/set-of-emails/jsonobj/json-amazonses-06.json +0 -1
- data/set-of-emails/jsonobj/json-sendgrid-01.json +0 -1
- data/set-of-emails/jsonobj/json-sendgrid-02.json +0 -1
- data/set-of-emails/jsonobj/json-sendgrid-03.json +0 -1
- data/set-of-emails/jsonobj/json-sendgrid-04.json +0 -1
- data/set-of-emails/jsonobj/json-sendgrid-05.json +0 -1
- data/set-of-emails/jsonobj/json-sendgrid-06.json +0 -1
- data/set-of-emails/jsonobj/json-sendgrid-07.json +0 -1
- data/set-of-emails/jsonobj/json-sendgrid-08.json +0 -1
- data/set-of-emails/jsonobj/json-sendgrid-09.json +0 -1
- data/set-of-emails/jsonobj/json-sendgrid-10.json +0 -1
- data/set-of-emails/jsonobj/json-sendgrid-11.json +0 -1
- data/set-of-emails/jsonobj/json-sendgrid-12.json +0 -1
- data/set-of-emails/jsonobj/json-sendgrid-13.json +0 -1
- data/set-of-emails/jsonobj/json-sendgrid-14.json +0 -1
- data/set-of-emails/jsonobj/json-sendgrid-15.json +0 -1
- data/set-of-emails/jsonobj/json-sendgrid-16.json +0 -1
- data/set-of-emails/jsonobj/json-sendgrid-17.json +0 -1
data/lib/sisimai/order/json.rb
CHANGED
@@ -5,46 +5,10 @@ module Sisimai
|
|
5
5
|
module JSON
|
6
6
|
# Imported from p5-Sisimail/lib/Sisimai/Order/JSON.pm
|
7
7
|
class << self
|
8
|
-
require 'sisimai/
|
9
|
-
|
10
|
-
PatternTable = {
|
11
|
-
'keyname' => { 'notificationType' => ['Sisimai::Bite::JSON::AmazonSES'] },
|
12
|
-
}.freeze
|
13
|
-
|
14
|
-
make_default_order = lambda do
|
15
|
-
# Make default order of MTA(JSON) modules to be loaded
|
16
|
-
rv = []
|
17
|
-
begin
|
18
|
-
rv += Sisimai::Bite::JSON.index.map { |e| 'Sisimai::Bite::JSON::' << e }
|
19
|
-
rescue
|
20
|
-
# Failed to load MTA(JSON) module
|
21
|
-
next
|
22
|
-
end
|
23
|
-
return rv
|
24
|
-
end
|
25
|
-
DefaultOrder = make_default_order.call
|
26
|
-
|
27
|
-
# @abstract Make default order of MTA(JSON) modules to be loaded
|
28
|
-
# @return [Array] Default order list of MTA(JSON) modules
|
29
|
-
def default; return DefaultOrder; end
|
30
|
-
|
31
|
-
# @abstract Make MTA(JSON) module list as a spare
|
32
|
-
# @return [Array] Ordered module list
|
33
|
-
def another; return []; end
|
34
|
-
|
35
|
-
# Make email header list in each MTA(JSON) module
|
36
|
-
# @return [Hash] Header list to be parsed
|
37
|
-
def headers; return {}; end
|
38
|
-
|
39
|
-
# Get regular expression patterns for specified key name
|
40
|
-
# @param [String] group Group name for "ORDER BY"
|
41
|
-
# @return [Hash] Pattern table for the group
|
42
|
-
def by(group = '')
|
43
|
-
return {} if group.empty?
|
44
|
-
return PatternTable[group] if PatternTable.key?(group)
|
45
|
-
return {}
|
46
|
-
end
|
8
|
+
require 'sisimai/order'
|
47
9
|
|
10
|
+
def default; Sisimai::Order.warn('forjson'); return Sisimai::Order.default; end
|
11
|
+
def by(group); Sisimai::Order.warn('gone'); return Sisimai::Order.by(group); end
|
48
12
|
end
|
49
13
|
end
|
50
14
|
end
|
data/lib/sisimai/reason.rb
CHANGED
@@ -8,7 +8,7 @@ module Sisimai
|
|
8
8
|
# Reason list better to retry detecting an error reason
|
9
9
|
# @return [Array] Reason list
|
10
10
|
def retry
|
11
|
-
return {
|
11
|
+
return {
|
12
12
|
'undefined' => 1, 'onhold' => 1, 'systemerror' => 1, 'securityerror' => 1,
|
13
13
|
'networkerror' => 1, 'hostunknown' => 1, 'userunknown' => 1
|
14
14
|
}.freeze
|
@@ -16,7 +16,7 @@ module Sisimai
|
|
16
16
|
Index = [
|
17
17
|
'as a relay',
|
18
18
|
'insecure mail relay',
|
19
|
-
'mail server requires authentication when attempting to send to a non-local e-mail address',
|
19
|
+
'mail server requires authentication when attempting to send to a non-local e-mail address', # MailEnable
|
20
20
|
'not allowed to relay through this machine',
|
21
21
|
'not an open relay, so get lost',
|
22
22
|
'relay access denied',
|
@@ -159,7 +159,7 @@ module Sisimai
|
|
159
159
|
tempreason = Sisimai::SMTP::Status.name(argvs.deliverystatus) || ''
|
160
160
|
return false if tempreason == 'suspend'
|
161
161
|
|
162
|
-
diagnostic = argvs.diagnosticcode.downcase
|
162
|
+
diagnostic = argvs.diagnosticcode.downcase
|
163
163
|
if tempreason == 'userunknown'
|
164
164
|
# *.1.1 = 'Bad destination mailbox address'
|
165
165
|
# Status: 5.1.1
|
@@ -20,6 +20,7 @@ module Sisimai
|
|
20
20
|
'it has a potentially executable attachment',
|
21
21
|
'the message was rejected because it contains prohibited virus or spam content',
|
22
22
|
'this form of attachment has been used by recent viruses or other malware',
|
23
|
+
'virus detected',
|
23
24
|
'your message was infected with a virus',
|
24
25
|
]
|
25
26
|
|
data/lib/sisimai/rfc1894.rb
CHANGED
@@ -61,7 +61,7 @@ module Sisimai
|
|
61
61
|
'x-original-message-id' => 'text',
|
62
62
|
}.freeze
|
63
63
|
|
64
|
-
# Table to be converted to key name defined in Sisimai::
|
64
|
+
# Table to be converted to key name defined in Sisimai::Lhost class
|
65
65
|
# @param [Symbol] group RFC822 Header group name
|
66
66
|
# @return [Array,Hash] RFC822 Header list
|
67
67
|
def FIELDTABLE
|
@@ -118,7 +118,7 @@ module Sisimai
|
|
118
118
|
# - Remote-MTA: DNS; mx.example.jp
|
119
119
|
match[1] = cv[2].upcase
|
120
120
|
match[2] = group == 'host' ? cv[3].downcase : cv[3]
|
121
|
-
match[2] = '' if match[2] =~ /\A\s+\z/ # Remote-MTA: dns;
|
121
|
+
match[2] = '' if match[2] =~ /\A\s+\z/ # Remote-MTA: dns;
|
122
122
|
else
|
123
123
|
# - Action: failed
|
124
124
|
# - Status: 5.2.2
|
data/lib/sisimai/rfc3464.rb
CHANGED
@@ -3,10 +3,10 @@ module Sisimai
|
|
3
3
|
module RFC3464
|
4
4
|
# Imported from p5-Sisimail/lib/Sisimai/RFC3464.pm
|
5
5
|
class << self
|
6
|
-
require 'sisimai/
|
6
|
+
require 'sisimai/lhost'
|
7
7
|
|
8
8
|
# http://tools.ietf.org/html/rfc3464
|
9
|
-
Indicators = Sisimai::
|
9
|
+
Indicators = Sisimai::Lhost.INDICATORS
|
10
10
|
MarkingsOf = {
|
11
11
|
message: %r{\A(?>
|
12
12
|
content-type:[ ]*(?:
|
@@ -104,13 +104,13 @@ module Sisimai
|
|
104
104
|
# @param [String] mbody Message body of a bounce email
|
105
105
|
# @return [Hash, Nil] Bounce data list and message/rfc822 part
|
106
106
|
# or nil if it failed to parse or the
|
107
|
-
def
|
107
|
+
def make(mhead, mbody)
|
108
108
|
require 'sisimai/mda'
|
109
109
|
|
110
|
-
dscontents = [Sisimai::
|
110
|
+
dscontents = [Sisimai::Lhost.DELIVERYSTATUS]
|
111
111
|
hasdivided = mbody.scrub('?').split("\n")
|
112
112
|
havepassed = ['']
|
113
|
-
|
113
|
+
mdabounced = Sisimai::MDA.make(mhead, mbody)
|
114
114
|
rfc822list = [] # (Array) Each line in message/rfc822 part string
|
115
115
|
maybealias = nil # (String) Original-Recipient Field
|
116
116
|
blanklines = 0 # (Integer) The number of blank lines
|
@@ -190,7 +190,7 @@ module Sisimai
|
|
190
190
|
|
191
191
|
if !x.empty? && x != y
|
192
192
|
# There are multiple recipient addresses in the message body.
|
193
|
-
dscontents << Sisimai::
|
193
|
+
dscontents << Sisimai::Lhost.DELIVERYSTATUS
|
194
194
|
v = dscontents[-1]
|
195
195
|
end
|
196
196
|
v['recipient'] = y
|
@@ -398,7 +398,7 @@ module Sisimai
|
|
398
398
|
|
399
399
|
if !x.empty? && x != y
|
400
400
|
# There are multiple recipient addresses in the message body.
|
401
|
-
dscontents << Sisimai::
|
401
|
+
dscontents << Sisimai::Lhost.DELIVERYSTATUS
|
402
402
|
b = dscontents[-1]
|
403
403
|
end
|
404
404
|
b['recipient'] = y
|
@@ -425,7 +425,7 @@ module Sisimai
|
|
425
425
|
next unless cv = e.match(/\ATo:\s*(.+)\z/)
|
426
426
|
r = Sisimai::Address.find(cv[1], true) || []
|
427
427
|
next if r.empty?
|
428
|
-
dscontents << Sisimai::
|
428
|
+
dscontents << Sisimai::Lhost.DELIVERYSTATUS if dscontents.size == recipients
|
429
429
|
|
430
430
|
b = dscontents[-1]
|
431
431
|
b['recipient'] = r[0][:address]
|
@@ -450,11 +450,11 @@ module Sisimai
|
|
450
450
|
end
|
451
451
|
e['diagnosis'] = Sisimai::String.sweep(e['diagnosis']) || ''
|
452
452
|
|
453
|
-
if
|
454
|
-
# Make bounce data by the values returned from Sisimai::MDA
|
455
|
-
e['agent'] =
|
456
|
-
e['reason'] =
|
457
|
-
e['diagnosis'] =
|
453
|
+
if mdabounced
|
454
|
+
# Make bounce data by the values returned from Sisimai::MDA.make()
|
455
|
+
e['agent'] = mdabounced['mda'] || self.smtpagent
|
456
|
+
e['reason'] = mdabounced['reason'] || 'undefined'
|
457
|
+
e['diagnosis'] = mdabounced['message'] unless mdabounced['message'].empty?
|
458
458
|
e['command'] = ''
|
459
459
|
else
|
460
460
|
# Set the value of smtpagent
|
data/lib/sisimai/rfc3834.rb
CHANGED
@@ -52,7 +52,7 @@ module Sisimai
|
|
52
52
|
# @return [Hash, Nil] Bounce data list and message/rfc822 part
|
53
53
|
# or nil if it failed to parse or the
|
54
54
|
# arguments are missing
|
55
|
-
def
|
55
|
+
def make(mhead, mbody)
|
56
56
|
leave = 0
|
57
57
|
match = 0
|
58
58
|
|
@@ -78,8 +78,8 @@ module Sisimai
|
|
78
78
|
end
|
79
79
|
return nil if match < 1
|
80
80
|
|
81
|
-
require 'sisimai/
|
82
|
-
dscontents = [Sisimai::
|
81
|
+
require 'sisimai/lhost'
|
82
|
+
dscontents = [Sisimai::Lhost.DELIVERYSTATUS]
|
83
83
|
hasdivided = mbody.scrub('?').split("\n")
|
84
84
|
rfc822part = '' # (String) message/rfc822-headers part
|
85
85
|
recipients = 0 # (Integer) The number of 'Final-Recipient' header
|
data/lib/sisimai/rfc5322.rb
CHANGED
@@ -41,7 +41,7 @@ module Sisimai
|
|
41
41
|
|
42
42
|
build_flatten_rfc822header_list = lambda do
|
43
43
|
# Convert HEADER: structured hash table to flatten hash table for being
|
44
|
-
# called from Sisimai::
|
44
|
+
# called from Sisimai::Lhost::*
|
45
45
|
fv = {}
|
46
46
|
HeaderTable.each_value do |e|
|
47
47
|
e.each { |ee| fv[ee] = true }
|
data/lib/sisimai/rhost.rb
CHANGED
@@ -7,15 +7,16 @@ module Sisimai
|
|
7
7
|
class << self
|
8
8
|
# Imported from p5-Sisimail/lib/Sisimai/Rhost.pm
|
9
9
|
RhostClass = {
|
10
|
-
'aspmx.l.google.com' => 'GoogleApps',
|
11
|
-
'gmail-smtp-in.l.google.com' => 'GoogleApps',
|
12
10
|
'.prod.outlook.com' => 'ExchangeOnline',
|
13
11
|
'.protection.outlook.com' => 'ExchangeOnline',
|
14
|
-
'smtp.secureserver.net' => 'GoDaddy',
|
15
|
-
'mailstore1.secureserver.net' => 'GoDaddy',
|
16
12
|
'laposte.net' => 'FrancePTT',
|
17
13
|
'orange.fr' => 'FrancePTT',
|
18
14
|
'wanadoo.fr' => 'FrancePTT',
|
15
|
+
'smtp.secureserver.net' => 'GoDaddy',
|
16
|
+
'mailstore1.secureserver.net' => 'GoDaddy',
|
17
|
+
'aspmx.l.google.com' => 'GoogleApps',
|
18
|
+
'gmail-smtp-in.l.google.com' => 'GoogleApps',
|
19
|
+
'.email.ua' => 'IUA',
|
19
20
|
'lsean.ezweb.ne.jp' => 'KDDI',
|
20
21
|
'msmx.au.com' => 'KDDI',
|
21
22
|
'.qq.com' => 'TencentQQ',
|
@@ -90,7 +90,7 @@ module Sisimai
|
|
90
90
|
],
|
91
91
|
}.freeze
|
92
92
|
MessagesOf = {
|
93
|
-
# Copied and converted from Sisimai::
|
93
|
+
# Copied and converted from Sisimai::Lhost::Exchange2007
|
94
94
|
'expired' => ['QUEUE.Expired'],
|
95
95
|
'hostunknown' => ['SMTPSEND.DNS.NonExistentDomain'],
|
96
96
|
'mesgtoobig' => ['RESOLVER.RST.RecipSizeLimit', 'RESOLVER.RST.RecipientSizeLimit'],
|
@@ -27,7 +27,7 @@ module Sisimai
|
|
27
27
|
'423' => nil, # Service refused, please try later. LPN105_423
|
28
28
|
'424' => nil, # Veuillez essayer plus tard. LPN105_424
|
29
29
|
'506' => 'spamdetected', # Mail rejete. Mail rejected. OFR_506 [506]
|
30
|
-
'510' => 'blocked', # Veuillez essayer plus tard. service refused, please try later. LPN004_510
|
30
|
+
'510' => 'blocked', # Veuillez essayer plus tard. service refused, please try later. LPN004_510
|
31
31
|
'513' => nil, # Mail rejete. Mail rejected. OUK_513
|
32
32
|
'514' => 'mesgtoobig', # Taille limite du message atteinte
|
33
33
|
}.freeze
|
@@ -31,7 +31,7 @@ module Sisimai
|
|
31
31
|
'IB705' => 'virusdetected', # 552 Virus infected message rejected. IB705
|
32
32
|
}.freeze
|
33
33
|
MessagesOf = {
|
34
|
-
'blocked' => ['
|
34
|
+
'blocked' => ['www.spamhaus.org/query/bl?ip=', '554 RBL Reject.'],
|
35
35
|
'expired' => ['Delivery timeout', "451 Sorry, I wasn't able to establish an SMTP connection."],
|
36
36
|
'suspend' => ['Account disabled'],
|
37
37
|
'mailboxfull' => ['Account storage limit'],
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module Sisimai
|
2
|
+
module Rhost
|
3
|
+
# Sisimai::Rhost detects the bounce reason from the content of Sisimai::Data
|
4
|
+
# object as an argument of get() method when the value of "rhost" of the object
|
5
|
+
# is "*.email.ua". This class is called only Sisimai::Data class.
|
6
|
+
module IUA
|
7
|
+
class << self
|
8
|
+
# Imported from p5-Sisimail/lib/Sisimai/Rhost/IUA.pm
|
9
|
+
ErrorCodes = {
|
10
|
+
# http://mail.i.ua/err/$(CODE)
|
11
|
+
'1' => 'norelaying', # The use of SMTP as mail gate is forbidden.
|
12
|
+
'2' => 'userunknown', # User is not found.
|
13
|
+
'3' => 'suspend', # Mailbox was not used for more than 3 months
|
14
|
+
'4' => 'mailboxfull', # Mailbox is full.
|
15
|
+
'5' => 'toomanyconn', # Letter sending limit is exceeded.
|
16
|
+
'6' => 'norelaying', # Use SMTP of your provider to send mail.
|
17
|
+
'7' => 'blocked', # Wrong value if command HELO/EHLO parameter.
|
18
|
+
'8' => 'rejected', # Couldn't check sender address.
|
19
|
+
'9' => 'blocked', # IP-address of the sender is blacklisted.
|
20
|
+
'10' => 'filtered', # Not in the list Mail address management.
|
21
|
+
}.freeze
|
22
|
+
|
23
|
+
# Detect bounce reason from https://www.i.ua/
|
24
|
+
# @param [Sisimai::Data] argvs Parsed email object
|
25
|
+
# @return [String] The bounce reason at https://www.i.ua/
|
26
|
+
def get(argvs)
|
27
|
+
return argvs.reason unless argvs.reason.empty?
|
28
|
+
|
29
|
+
if cv = argvs.diagnosticcode.downcase.match(%r|[.]i[.]ua/err/(\d+)|)
|
30
|
+
return ErrorCodes[cv[1]] if ErrorCodes.key?(cv[1])
|
31
|
+
end
|
32
|
+
return ''
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
data/lib/sisimai/version.rb
CHANGED
data/set-of-emails/README.md
CHANGED
@@ -6,7 +6,6 @@ in this repository are read from `make test` at p5-Sisimai and rb-Sisimai.
|
|
6
6
|
|
7
7
|
| Directory | Description |
|
8
8
|
|-------------------------------|----------------------------------------------|
|
9
|
-
| jsonobj/ | JSON files include bounce objects |
|
10
9
|
| mailbox/ | Unix mbox files |
|
11
10
|
| maildir/ | Email files |
|
12
11
|
| - bsd/ | A newline is LF |
|
@@ -0,0 +1,261 @@
|
|
1
|
+
From () 2019-10-02 05:04:34 +0000
|
2
|
+
Delivered-To: azumakuniyuki@google.example.com
|
3
|
+
Received: by 2002:ac9:2aea:0:0:0:0:0 with SMTP id d42csp534584ocb;
|
4
|
+
Tue, 1 Oct 2019 22:04:34 -0700 (PDT)
|
5
|
+
X-Received: by 2002:a05:6830:12d5:: with SMTP id a21mr1130562otq.213.1569992674308;
|
6
|
+
Tue, 01 Oct 2019 22:04:34 -0700 (PDT)
|
7
|
+
ARC-Seal: i=1; a=rsa-sha256; t=1569992674; cv=none;
|
8
|
+
d=google.com; s=arc-20160816;
|
9
|
+
b=s466c2AEgP7pmPxnTYGeGxkejICx0Ltt4sfJLVszS4Cn4KlMApryzc0vjPZBuOEYKe
|
10
|
+
1mPCvhbwCpIAM7m3dFLWbmChC0WQ7EwyZyVrPmNQxUXahFcAVwFhzxTZCRlfxel6NsQQ
|
11
|
+
xc8Qq0Bk1/s0LK8y7+pjEtqE2JHVx5EyT4+tXaVnI27moHyrk0EcUPUSkjBmaZgYVDK/
|
12
|
+
oRie4GdvO5HFA2mhYhfKf9VB8GCBxCTulisJrW4fzJGPunpmAfNKKu3bwkW1XqDmWJZA
|
13
|
+
IofgDmVLoODRdS1XB03JAPPm5tSsd9aG2R/aP/mqnnSSC14q63iY6i+rwz9u0GAhWMzb
|
14
|
+
UwQg==
|
15
|
+
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816;
|
16
|
+
h=date:message-id:in-reply-to:references:subject:auto-submitted:to
|
17
|
+
:from:dkim-signature;
|
18
|
+
bh=ABzdzVizjj/kHrdgqBAl8z5Z6H5rKtiQoBrmAtVq3Es=;
|
19
|
+
b=yrNiOCezCBbUuY5FJAcl0ijmJafMo8IbsfUtJjqEOe5nDjZYUESTGwnvizX727UbMV
|
20
|
+
vfhidjTRXgq6t0T7eWi87lrQ7njpaviu8C8RTB+NT0LeZclAS1wCLy7xjla5Vod0HkZI
|
21
|
+
x4vAd60s1186fkui4eUEt9+jlYd7gnx2IQzuEjIj1R1O9G3QZftx010Oxovzxr2/IOcU
|
22
|
+
PaHuoem7Wyv1b7KAHJbdmfJMonZyIS9yWJXp1cVxIRHscGaZw82/5lFbcxP6bKRGfzZD
|
23
|
+
GTHLx1rdmMBHfzCfT80y3eMfnK00UEQNpie/mi2cVbb0bNpwIzvX72UiARNiji//TtGV
|
24
|
+
4m0A==
|
25
|
+
ARC-Authentication-Results: i=1; mx.google.com;
|
26
|
+
dkim=pass header.i=@googlemail.com header.s=20161025 header.b=p4F0L6jw;
|
27
|
+
spf=pass (google.com: best guess record for domain of postmaster@mail-sor-f69.google.com designates 209.85.220.69 as permitted sender) smtp.helo=mail-sor-f69.google.com;
|
28
|
+
dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=googlemail.com
|
29
|
+
Return-Path: <>
|
30
|
+
Received: from mail-sor-f69.google.com (mail-sor-f69.google.com. [209.85.220.69])
|
31
|
+
by mx.google.com with SMTPS id r6sor10081403oib.155.2019.10.01.22.04.34
|
32
|
+
for <azumakuniyuki@google.example.com>
|
33
|
+
(Google Transport Security);
|
34
|
+
Tue, 01 Oct 2019 22:04:34 -0700 (PDT)
|
35
|
+
Received-SPF: pass (google.com: best guess record for domain of postmaster@mail-sor-f69.google.com designates 209.85.220.69 as permitted sender) client-ip=209.85.220.69;
|
36
|
+
Authentication-Results: mx.google.com;
|
37
|
+
dkim=pass header.i=@googlemail.com header.s=20161025 header.b=p4F0L6jw;
|
38
|
+
spf=pass (google.com: best guess record for domain of postmaster@mail-sor-f69.google.com designates 209.85.220.69 as permitted sender) smtp.helo=mail-sor-f69.google.com;
|
39
|
+
dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=googlemail.com
|
40
|
+
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
|
41
|
+
d=googlemail.com; s=20161025;
|
42
|
+
h=from:to:auto-submitted:subject:references:in-reply-to:message-id
|
43
|
+
:date;
|
44
|
+
bh=ABzdzVizjj/kHrdgqBAl8z5Z6H5rKtiQoBrmAtVq3Es=;
|
45
|
+
b=p4F0L6jwQvHTIx17rsIxbm2mzXk23xMyP+YoIccrhIMBjy2V0OA80EgS5Iw54tCHgR
|
46
|
+
nO77MTmN6zinC+8nhfHc/JcYgqHIa72xDS+qRtuMdJa46oV0g8CDMad1t7PvSSNJKc3z
|
47
|
+
2J9Lo7ORtabDiMMFET0QbkyRFeMmqhVGb+hTiZ+RDemLgPdzDGi3NEFiLMz2QTLUeju+
|
48
|
+
wiL5QdV8drN7Giwhk45adWyqPAezHMalM07IIRugBqUg7tld1GO+YMjygQTJ9D/SB1XE
|
49
|
+
bLvziPOnvGUChdmulse0fdrKjdBZ2GYuKDAgtjopRHYKoCkOARJBT5za44f+lr0zI6zq
|
50
|
+
rG/w==
|
51
|
+
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
|
52
|
+
d=1e100.net; s=20161025;
|
53
|
+
h=x-gm-message-state:from:to:auto-submitted:subject:references
|
54
|
+
:in-reply-to:message-id:date;
|
55
|
+
bh=ABzdzVizjj/kHrdgqBAl8z5Z6H5rKtiQoBrmAtVq3Es=;
|
56
|
+
b=VCELwDywaW5aD99lqqP+Ys2VWuhYA+frdRbDobkoB5lSmGzob2J4+rKrcuEb6Xeulp
|
57
|
+
dETZr4P6eNyeWn0YWitE8iO1/clsCSdAvEcA9wxnyIqRYe/XJ/KwGMCxCWms99FTBkWg
|
58
|
+
GXjh7Smja6dAn6q27TRNZmgNPF5iys/I1Sd3m9L4V3IMhAude567vTB2dUmmbBZv/+rR
|
59
|
+
Z1juefz/kYeNAJkVoSGD7O2yYCeA8nXxH3iUHnU0I3OdgkBxxaDgMiy/0EGsGCsa0SOX
|
60
|
+
2hWmYqAtE9xUHV/U3LwBCRFSZXYpeT6xYvBLLpJ+K/huk3X9CT38mqXV57HRKICuLZGs
|
61
|
+
LQeA==
|
62
|
+
X-Gm-Message-State: APjAAAXdv+LgKbYtwZ/CV5W06t6Lnr/T95bL5LBrqyaibxzJj29Lx6xE
|
63
|
+
JjDiVF2D98tMAZ3arb4jRna8DR7jxwQc4aXBzIgYUg==
|
64
|
+
X-Google-Smtp-Source: APXvYqybvlkLi7lmekk+MhahgOE+QPesBUPkdBuCJyzTJBu1qfccPpWSD/mU7gQ07APc5oINAh7q5C4769sp9QqbyIVecP2BGoCVAbU=
|
65
|
+
X-Received: by 2002:aca:ad13:: with SMTP id w19mr1368275oie.166.1569992674224;
|
66
|
+
Tue, 01 Oct 2019 22:04:34 -0700 (PDT)
|
67
|
+
Content-Type: multipart/report; boundary="000000000000a59fc80593e667a0"; report-type=delivery-status
|
68
|
+
Return-Path: <>
|
69
|
+
Received: by 2002:aca:ad13:: with SMTP id w19mr1276139oie.166; Tue, 01 Oct
|
70
|
+
2019 22:04:34 -0700 (PDT)
|
71
|
+
From: Mail Delivery Subsystem <mailer-daemon@googlemail.com>
|
72
|
+
To: azumakuniyuki@google.example.com
|
73
|
+
Auto-Submitted: auto-replied
|
74
|
+
Subject: Delivery Status Notification (Failure)
|
75
|
+
References: <CAByYQsEsy_6KEHCuspEbEKOo1p=Y5Q-xE3PbJQokvWTuC=X5Rw@mail.gmail.com>
|
76
|
+
In-Reply-To: <CAByYQsEsy_6KEHCuspEbEKOo1p=Y5Q-xE3PbJQokvWTuC=X5Rw@mail.gmail.com>
|
77
|
+
X-Failed-Recipients: nekonyaan@gmal.com
|
78
|
+
Message-ID: <5d942fe2.1c69fb81.d8c36.3654.GMR@mx.google.com>
|
79
|
+
Date: Tue, 01 Oct 2019 22:04:34 -0700 (PDT)
|
80
|
+
|
81
|
+
--000000000000a59fc80593e667a0
|
82
|
+
Content-Type: multipart/related; boundary="000000000000a5a7020593e667ad"
|
83
|
+
|
84
|
+
--000000000000a5a7020593e667ad
|
85
|
+
Content-Type: multipart/alternative; boundary="000000000000a5a70d0593e667ae"
|
86
|
+
|
87
|
+
--000000000000a5a70d0593e667ae
|
88
|
+
Content-Type: text/plain; charset="UTF-8"
|
89
|
+
|
90
|
+
|
91
|
+
** Address not found **
|
92
|
+
|
93
|
+
Your message wasn't delivered to nekonyaan@gmal.com because the domain gmal.com couldn't be found. Check for typos or unnecessary spaces and try again.
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
The response was:
|
98
|
+
|
99
|
+
DNS Error: 16578478 DNS type 'mx' lookup of gmal.com responded with code NOERROR
|
100
|
+
16578478 DNS type 'mx' lookup of gmal.com had no relevant answers.
|
101
|
+
16578478 DNS type 'aaaa' lookup of gmal.com responded with code NOERROR
|
102
|
+
16578478 DNS type 'aaaa' lookup of gmal.com had no relevant answers.
|
103
|
+
16578478 DNS type 'a' lookup of gmal.com responded with code NOERROR
|
104
|
+
16578478 DNS type 'a' lookup of gmal.com had no relevant answers.
|
105
|
+
|
106
|
+
--000000000000a5a70d0593e667ae
|
107
|
+
Content-Type: text/html; charset="UTF-8"
|
108
|
+
|
109
|
+
|
110
|
+
<html>
|
111
|
+
<head>
|
112
|
+
<style>
|
113
|
+
* {
|
114
|
+
font-family:Roboto, "Helvetica Neue", Helvetica, Arial, sans-serif;
|
115
|
+
}
|
116
|
+
</style>
|
117
|
+
</head>
|
118
|
+
<body>
|
119
|
+
<table cellpadding="0" cellspacing="0" class="email-wrapper" style="padding-top:32px;background-color:#ffffff;"><tbody>
|
120
|
+
<tr><td>
|
121
|
+
<table cellpadding=0 cellspacing=0><tbody>
|
122
|
+
<tr><td style="max-width:560px;padding:24px 24px 32px;background-color:#fafafa;border:1px solid #e0e0e0;border-radius:2px">
|
123
|
+
<img style="padding:0 24px 16px 0;float:left" width=72 height=72 alt="Error Icon" src="cid:icon.png">
|
124
|
+
<table style="min-width:272px;padding-top:8px"><tbody>
|
125
|
+
<tr><td><h2 style="font-size:20px;color:#212121;font-weight:bold;margin:0">
|
126
|
+
Address not found
|
127
|
+
</h2></td></tr>
|
128
|
+
<tr><td style="padding-top:20px;color:#757575;font-size:16px;font-weight:normal;text-align:left">
|
129
|
+
Your message wasn't delivered to <a style='color:#212121;text-decoration:none'><b>nekonyaan@gmal.com</b></a> because the domain gmal.com couldn't be found. Check for typos or unnecessary spaces and try again.
|
130
|
+
</td></tr>
|
131
|
+
</tbody></table>
|
132
|
+
</td></tr>
|
133
|
+
</tbody></table>
|
134
|
+
</td></tr>
|
135
|
+
<tr style="border:none;background-color:#fff;font-size:12.8px;width:90%">
|
136
|
+
<td align="left" style="padding:48px 10px">
|
137
|
+
The response was:<br/>
|
138
|
+
<p style="font-family:monospace">
|
139
|
+
DNS Error: 16578478 DNS type 'mx' lookup of gmal.com responded with code NOERROR
|
140
|
+
16578478 DNS type 'mx' lookup of gmal.com had no relevant answers.
|
141
|
+
16578478 DNS type 'aaaa' lookup of gmal.com responded with code NOERROR
|
142
|
+
16578478 DNS type 'aaaa' lookup of gmal.com had no relevant answers.
|
143
|
+
16578478 DNS type 'a' lookup of gmal.com responded with code NOERROR
|
144
|
+
16578478 DNS type 'a' lookup of gmal.com had no relevant answers.
|
145
|
+
</p>
|
146
|
+
</td>
|
147
|
+
</tr>
|
148
|
+
</tbody></table>
|
149
|
+
</body>
|
150
|
+
</html>
|
151
|
+
|
152
|
+
--000000000000a5a70d0593e667ae--
|
153
|
+
--000000000000a5a7020593e667ad
|
154
|
+
Content-Type: image/png; name="icon.png"
|
155
|
+
Content-Disposition: attachment; filename="icon.png"
|
156
|
+
Content-Transfer-Encoding: base64
|
157
|
+
Content-ID: <icon.png>
|
158
|
+
|
159
|
+
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
|
184
|
+
LK8FGADCTxYrr+EVJgAAAABJRU5ErkJggg==
|
185
|
+
--000000000000a5a7020593e667ad--
|
186
|
+
--000000000000a59fc80593e667a0
|
187
|
+
Content-Type: message/delivery-status
|
188
|
+
|
189
|
+
Reporting-MTA: dns; googlemail.com
|
190
|
+
Arrival-Date: Tue, 01 Oct 2019 22:04:33 -0700 (PDT)
|
191
|
+
X-Original-Message-ID: <CAByYQsEsy_6KEHCuspEbEKOo1p=Y5Q-xE3PbJQokvWTuC=X5Rw@mail.gmail.com>
|
192
|
+
|
193
|
+
Final-Recipient: rfc822; nekonyaan@gmal.com
|
194
|
+
Action: failed
|
195
|
+
Status: 4.0.0
|
196
|
+
Diagnostic-Code: smtp; DNS Error: 16578478 DNS type 'mx' lookup of gmal.com responded with code NOERROR
|
197
|
+
16578478 DNS type 'mx' lookup of gmal.com had no relevant answers.
|
198
|
+
16578478 DNS type 'aaaa' lookup of gmal.com responded with code NOERROR
|
199
|
+
16578478 DNS type 'aaaa' lookup of gmal.com had no relevant answers.
|
200
|
+
16578478 DNS type 'a' lookup of gmal.com responded with code NOERROR
|
201
|
+
16578478 DNS type 'a' lookup of gmal.com had no relevant answers.
|
202
|
+
Last-Attempt-Date: Tue, 01 Oct 2019 22:04:34 -0700 (PDT)
|
203
|
+
|
204
|
+
--000000000000a59fc80593e667a0
|
205
|
+
Content-Type: message/rfc822
|
206
|
+
|
207
|
+
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
|
208
|
+
d=gmail.com; s=20161025;
|
209
|
+
h=mime-version:from:date:message-id:subject:to;
|
210
|
+
bh=4QC6t0pAnuCZL9IecOAvTw9vE2yfk3lDg6ZcRdMt8n0=;
|
211
|
+
b=aoVOIVVU4O1Y3frWdTzY8k/aXPCxkSdycXhN3U8B9bkbxgZ29WiZUxAm7xMh+gPlkz
|
212
|
+
nMiLhV2z3X6dGUJyK7qMqlxLNACSg8h7UftraAwIxdgIxgn92k7aB+QW6BaNdcCClMpj
|
213
|
+
GFVqtVoptRN+W+WUY64d7pW+m8pn6Y/xXRCWUL+xil7KnzcUQLCf/RnHimP3sDapjtvv
|
214
|
+
+Hx9mHjBC6H+TieAN4l1RQhs9vLC85Y6WE7IzweWBTvsPBKMQ5fX/73crc0e8KHNM+3x
|
215
|
+
tfkW5xVvRm2116VyxE+DVN7Osyntt/C87NtMbVsBqTcssqq8w+z37ygleYKOZfeSeewd
|
216
|
+
CunQ==
|
217
|
+
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
|
218
|
+
d=1e100.net; s=20161025;
|
219
|
+
h=x-gm-message-state:mime-version:from:date:message-id:subject:to;
|
220
|
+
bh=4QC6t0pAnuCZL9IecOAvTw9vE2yfk3lDg6ZcRdMt8n0=;
|
221
|
+
b=o3cfJkKm/cjWccXNGMvTFb+p7jOtkZBhAHrANiUAf8oCRlpdqKyzuKE3tM6u38wBtV
|
222
|
+
1r6fM8cizSBYZXciTCaLaUStQCXkCq/Yu4jEvaS9zj0XoxpHwoxFC1S6Ecl9FZ/9XK79
|
223
|
+
loGy/pxoh9lHbOxQELLLwISNkQxhfbaD+thYj8ZGC7a/NW8Glv6zPHx0sLdjM813s5RL
|
224
|
+
GMVgZFu0vyZedhWy3ii1xvCFhoJizEe5TmG4Mv0Aoj2kz9tS6qQBZ0Mnq6EySlF5hLUV
|
225
|
+
HtBSbAOjfYJkUa0L6i+bzHLRzu1C37f9fJN9rUHOd7WWGstKmkBnpcPPxSf6dSZF47pG
|
226
|
+
rGlA==
|
227
|
+
X-Gm-Message-State: APjAAAVE3sEzh1mcYew9MeyIkg5T4L3uGEAgjP9v8WynzCL9Ai6cLFup
|
228
|
+
iJyZ8EVHPbSTwlTz2DRmLk+Qv36ztGhDisMRh2Xha+wx
|
229
|
+
X-Google-Smtp-Source: APXvYqxde9cSUIkZ02OgVGdXyQ/HXk0cMHD5OElcjFWglJVfV/Si/mPUVpMdGg01zcPiHXN8LJym3kOgljTJkKSOGNY=
|
230
|
+
X-Received: by 2002:aca:ad13:: with SMTP id w19mr1368240oie.166.1569992673656;
|
231
|
+
Tue, 01 Oct 2019 22:04:33 -0700 (PDT)
|
232
|
+
MIME-Version: 1.0
|
233
|
+
From: azumakuniyuki <azumakuniyuki@google.example.com>
|
234
|
+
Date: Wed, 2 Oct 2019 14:04:23 +0900
|
235
|
+
Message-ID: <CAByYQsEsy_6KEHCuspEbEKOo1p=Y5Q-xE3PbJQokvWTuC=X5Rw@mail.gmail.com>
|
236
|
+
Subject: Nyaaaaaaaan
|
237
|
+
To: "Neko Nyaan" <nekonyaan@gmal.com>
|
238
|
+
Content-Type: multipart/alternative; boundary="0000000000009d034f0593e6679a"
|
239
|
+
|
240
|
+
--0000000000009d034f0593e6679a
|
241
|
+
Content-Type: text/plain; charset="UTF-8"
|
242
|
+
Content-Transfer-Encoding: base64
|
243
|
+
|
244
|
+
IF8gICBfICAgICAgXyAgICAgICAgICAgXyAgIF8gICAgICAgICAgICAgICAgICAg
|
245
|
+
ICAgICAgCnwgXCB8IHwgX19ffCB8IF9fX19fICAgfCBcIHwgfF8gICBfICBfXyBf
|
246
|
+
ICBfXyBfIF8gX18gIAp8ICBcfCB8LyBfIFwgfC8gLyBfIFwgIHwgIFx8IHwgfCB8
|
247
|
+
IHwvIF9gIHwvIF9gIHwgJ18gXCAKfCB8XCAgfCAgX18vICAgPCAoXykgfCB8IHxc
|
248
|
+
ICB8IHxffCB8IChffCB8IChffCB8IHwgfCB8CnxffCBcX3xcX19ffF98XF9cX19f
|
249
|
+
LyAgfF98IFxffFxfXywgfFxfXyxffFxfXyxffF98IHxffAogICAgICAgICAgICAg
|
250
|
+
ICAgICAgICAgICAgICAgICB8X19fLyAgICAgICAgICAgICAgICAgICAK
|
251
|
+
--0000000000009d034f0593e6679a
|
252
|
+
Content-Type: text/html; charset="UTF-8"
|
253
|
+
Content-Transfer-Encoding: quoted-printable
|
254
|
+
|
255
|
+
<p class=3D"p1" style=3D"margin:0px 0px 3px;font-stretch:normal;font-size:2=
|
256
|
+
5.5px;l
|
257
|
+
----- Message truncated -----
|
258
|
+
--0000000000009d034f0593e6679a--
|
259
|
+
--000000000000a59fc80593e667a0--
|
260
|
+
|
261
|
+
|