sisimai 4.22.1 → 4.22.2

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.

Files changed (100) hide show
  1. checksums.yaml +4 -4
  2. data/ChangeLog.md +21 -0
  3. data/README-JA.md +2 -2
  4. data/README.md +2 -2
  5. data/lib/sisimai.rb +2 -3
  6. data/lib/sisimai/address.rb +20 -40
  7. data/lib/sisimai/arf.rb +4 -4
  8. data/lib/sisimai/bite.rb +1 -0
  9. data/lib/sisimai/bite/email.rb +3 -4
  10. data/lib/sisimai/bite/email/activehunter.rb +7 -7
  11. data/lib/sisimai/bite/email/amazonses.rb +14 -14
  12. data/lib/sisimai/bite/email/amazonworkmail.rb +7 -7
  13. data/lib/sisimai/bite/email/aol.rb +8 -8
  14. data/lib/sisimai/bite/email/apachejames.rb +7 -7
  15. data/lib/sisimai/bite/email/bigfoot.rb +7 -7
  16. data/lib/sisimai/bite/email/biglobe.rb +7 -7
  17. data/lib/sisimai/bite/email/courier.rb +9 -9
  18. data/lib/sisimai/bite/email/domino.rb +8 -8
  19. data/lib/sisimai/bite/email/einsundeins.rb +7 -7
  20. data/lib/sisimai/bite/email/exchange2003.rb +10 -10
  21. data/lib/sisimai/bite/email/exchange2007.rb +10 -10
  22. data/lib/sisimai/bite/email/exim.rb +18 -19
  23. data/lib/sisimai/bite/email/ezweb.rb +9 -11
  24. data/lib/sisimai/bite/email/facebook.rb +22 -23
  25. data/lib/sisimai/bite/email/gmx.rb +7 -7
  26. data/lib/sisimai/bite/email/google.rb +22 -25
  27. data/lib/sisimai/bite/email/gsuite.rb +17 -19
  28. data/lib/sisimai/bite/email/imailserver.rb +13 -13
  29. data/lib/sisimai/bite/email/interscanmss.rb +7 -7
  30. data/lib/sisimai/bite/email/kddi.rb +7 -7
  31. data/lib/sisimai/bite/email/mailfoundry.rb +6 -6
  32. data/lib/sisimai/bite/email/mailmarshalsmtp.rb +13 -13
  33. data/lib/sisimai/bite/email/mailru.rb +10 -10
  34. data/lib/sisimai/bite/email/mcafee.rb +7 -7
  35. data/lib/sisimai/bite/email/messagelabs.rb +9 -9
  36. data/lib/sisimai/bite/email/messagingserver.rb +8 -8
  37. data/lib/sisimai/bite/email/mfilter.rb +7 -7
  38. data/lib/sisimai/bite/email/mxlogic.rb +9 -9
  39. data/lib/sisimai/bite/email/notes.rb +12 -12
  40. data/lib/sisimai/bite/email/office365.rb +14 -15
  41. data/lib/sisimai/bite/email/opensmtpd.rb +7 -7
  42. data/lib/sisimai/bite/email/outlook.rb +9 -9
  43. data/lib/sisimai/bite/email/postfix.rb +13 -13
  44. data/lib/sisimai/bite/email/qmail.rb +9 -9
  45. data/lib/sisimai/bite/email/receivingses.rb +9 -9
  46. data/lib/sisimai/bite/email/sendgrid.rb +9 -9
  47. data/lib/sisimai/bite/email/sendmail.rb +7 -7
  48. data/lib/sisimai/bite/email/surfcontrol.rb +7 -7
  49. data/lib/sisimai/bite/email/userdefined.rb +7 -7
  50. data/lib/sisimai/bite/email/v5sendmail.rb +21 -22
  51. data/lib/sisimai/bite/email/verizon.rb +8 -8
  52. data/lib/sisimai/bite/email/x1.rb +6 -6
  53. data/lib/sisimai/bite/email/x2.rb +6 -6
  54. data/lib/sisimai/bite/email/x3.rb +6 -6
  55. data/lib/sisimai/bite/email/x4.rb +9 -9
  56. data/lib/sisimai/bite/email/x5.rb +6 -6
  57. data/lib/sisimai/bite/email/yahoo.rb +7 -7
  58. data/lib/sisimai/bite/email/yandex.rb +7 -7
  59. data/lib/sisimai/bite/email/zoho.rb +8 -8
  60. data/lib/sisimai/bite/json.rb +10 -11
  61. data/lib/sisimai/bite/json/amazonses.rb +11 -11
  62. data/lib/sisimai/bite/json/sendgrid.rb +67 -17
  63. data/lib/sisimai/data.rb +19 -21
  64. data/lib/sisimai/data/json.rb +3 -3
  65. data/lib/sisimai/data/yaml.rb +3 -3
  66. data/lib/sisimai/datetime.rb +18 -21
  67. data/lib/sisimai/mail.rb +1 -1
  68. data/lib/sisimai/mail/stdin.rb +2 -2
  69. data/lib/sisimai/mda.rb +4 -4
  70. data/lib/sisimai/message.rb +1 -1
  71. data/lib/sisimai/message/email.rb +32 -35
  72. data/lib/sisimai/message/json.rb +3 -3
  73. data/lib/sisimai/mime.rb +5 -6
  74. data/lib/sisimai/order/email.rb +11 -11
  75. data/lib/sisimai/order/json.rb +3 -3
  76. data/lib/sisimai/reason.rb +2 -2
  77. data/lib/sisimai/reason/userunknown.rb +4 -5
  78. data/lib/sisimai/rfc3464.rb +14 -16
  79. data/lib/sisimai/rfc3834.rb +5 -5
  80. data/lib/sisimai/rfc5322.rb +2 -2
  81. data/lib/sisimai/rhost.rb +6 -5
  82. data/lib/sisimai/rhost/exchangeonline.rb +1 -1
  83. data/lib/sisimai/rhost/godaddy.rb +87 -0
  84. data/lib/sisimai/rhost/googleapps.rb +1 -1
  85. data/lib/sisimai/smtp/error.rb +21 -27
  86. data/lib/sisimai/smtp/status.rb +2 -2
  87. data/lib/sisimai/string.rb +7 -7
  88. data/lib/sisimai/version.rb +1 -1
  89. data/set-of-emails/jsonobj/json-sendgrid-12.json +1 -0
  90. data/set-of-emails/jsonobj/json-sendgrid-13.json +1 -0
  91. data/set-of-emails/jsonobj/json-sendgrid-14.json +1 -0
  92. data/set-of-emails/jsonobj/json-sendgrid-15.json +1 -0
  93. data/set-of-emails/jsonobj/json-sendgrid-16.json +1 -0
  94. data/set-of-emails/jsonobj/json-sendgrid-17.json +1 -0
  95. data/set-of-emails/maildir/bsd/rhost-godaddy-01.eml +83 -0
  96. data/set-of-emails/maildir/bsd/rhost-godaddy-02.eml +69 -0
  97. metadata +12 -6
  98. data/lib/sisimai/ced.rb +0 -48
  99. data/lib/sisimai/msp.rb +0 -39
  100. data/lib/sisimai/mta.rb +0 -39
@@ -16,7 +16,7 @@ module Sisimai
16
16
  'To', 'Delivered-To', 'Forward-Path', 'Envelope-To',
17
17
  'X-Envelope-To', 'Resent-To', 'Apparently-To'
18
18
  ],
19
- }
19
+ }.freeze
20
20
 
21
21
  build_regular_expressions = lambda do
22
22
  # See http://www.ietf.org/rfc/rfc5322.txt
@@ -164,7 +164,7 @@ module Sisimai
164
164
 
165
165
  else
166
166
  # hostname
167
- e = e.delete('[]()')
167
+ e = e.delete('()')
168
168
  namelist << e
169
169
  end
170
170
  end
data/lib/sisimai/rhost.rb CHANGED
@@ -7,9 +7,10 @@ module Sisimai
7
7
  class << self
8
8
  # Imported from p5-Sisimail/lib/Sisimai/Rhost.pm
9
9
  RhostClass = {
10
- %r/\Aaspmx[.]l[.]google[.]com\z/ => 'GoogleApps',
11
- %r/[.]protection[.]outlook[.]com\z/ => 'ExchangeOnline',
12
- }
10
+ %r/\Aaspmx[.]l[.]google[.]com\z/ => 'GoogleApps',
11
+ %r/[.]protection[.]outlook[.]com\z/ => 'ExchangeOnline',
12
+ %r/\A(?:smtp|mailstore1)[.]secureserver[.]net\z/ => 'GoDaddy',
13
+ }.freeze
13
14
 
14
15
  # Retrun the list of remote hosts Sisimai support
15
16
  # @return [Array] Remote host list
@@ -17,7 +18,7 @@ module Sisimai
17
18
  return RhostClass.keys
18
19
  end
19
20
 
20
- # The value of "rhost" is listed in $RhostClass or not
21
+ # The value of "rhost" is listed in RhostClass or not
21
22
  # @param [String] argvs Remote host name
22
23
  # @return [True,False] True: matched
23
24
  # False: did not match
@@ -50,7 +51,7 @@ module Sisimai
50
51
  modulename = ''
51
52
 
52
53
  RhostClass.each_key do |e|
53
- # Try to match with each key of $RhostClass
54
+ # Try to match with each key of RhostClass
54
55
  next unless remotehost =~ e
55
56
  modulename = 'Sisimai::Rhost::' + RhostClass[e]
56
57
  rhostclass = modulename.gsub('::', '/').downcase
@@ -238,7 +238,7 @@ module Sisimai
238
238
  :regexp => %r/Access denied, tenant has exceeded threshold/,
239
239
  },
240
240
  ],
241
- }
241
+ }.freeze
242
242
 
243
243
  # Detect bounce reason from Exchange Online
244
244
  # @param [Sisimai::Data] argvs Parsed email object
@@ -0,0 +1,87 @@
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 "*.secureserver.net". This class is called only Sisimai::Data class.
6
+ module GoDaddy
7
+ class << self
8
+ # Imported from p5-Sisimail/lib/Sisimai/Rhost/GoDaddy.pm
9
+ # https://www.godaddy.com/help/what-does-my-email-bounceback-mean-3568
10
+ CodeTable = {
11
+ :IB103 => 'blocked', # 554 Connection refused. This IP has a poor reputation on Cloudmark Sender Intelligence (CSI). IB103
12
+ :IB104 => 'blocked', # 554 Connection refused. This IP is listed on the Spamhaus Block List (SBL). IB104
13
+ :IB105 => 'blocked', # 554 Connection refused. This IP is listed on the Exploits Block List (XBL). IB105
14
+ :IB106 => 'blocked', # 554 Connection refused. This IP is listed on the Policy Block List (PBL). IB106
15
+ :IB007 => 'toomanyconn', # 421 Connection refused, too many sessions from This IP. Please lower the number of concurrent sessions. IB007
16
+ :IB101 => 'expired', # 421 Server temporarily unavailable. Try again later. IB101
17
+ :IB108 => 'blocked', # 421 Temporarily rejected. Reverse DNS for this IP failed. IB108
18
+ :IB110 => 'blocked', # 554 This IP has been temporarily blocked for attempting to send too many messages containing content judged to be spam by the Internet community. IB110
19
+ :IB111 => 'blocked', # 554 This IP has been blocked for the day, for attempting to send too many messages containing content judged to be spam by the Internet community. IB111
20
+ :IB112 => 'blocked', # 554 This IP has been temporarily blocked for attempting to mail too many invalid recipients. IB112
21
+ :IB113 => 'blocked', # 554 This IP has been blocked for the day, for attempting to mail too many invalid recipients. IB113
22
+ :IB212 => 'spamdetected', # 552 This message has been rejected due to content judged to be spam by the Internet community. IB212
23
+ :IB401 => 'securityerror', # 535 Authentication not allowed on IBSMTP Servers. IB401
24
+ :IB501 => 'rejected', # 550 holly@coolexample.com Blank From: addresses are not allowed. Please provide a valid From. IB501
25
+ :IB502 => 'rejected', # 550 holly@coolexample.com IP addresses are not allowed as a From: Address. Please provide a valid From. IB502
26
+ :IB504 => 'toomanyconn', # 550 This IP has sent too many messages this hour. IB504
27
+ :IB506 => 'rejected', # 550 coolexample.com From: Domain is invalid. Please provide a valid From: IB506
28
+ :IB508 => 'rejected', # 550 holly@coolexample.com Invalid SPF record. Please inspect your SPF settings, and try again. IB508
29
+ :IB510 => 'toomanyconn', # 550 This message has exceeded the max number of messages per session. Please open a new session and try again. IB510
30
+ :IB607 => 'toomanyconn', # 550 This IP has sent too many to too many recipients this hour. IB607
31
+ :IB705 => 'virusdetected', # 552 Virus infected message rejected. IB705
32
+ }.freeze
33
+
34
+ MesgTable = {
35
+ :blocked => [
36
+ %r{\A553 http://www[.]spamhaus[.]org/query/bl[?]ip=.+},
37
+ %r/\A554 RBL Reject[.]/,
38
+ ],
39
+ :expired => [
40
+ %r/Delivery timeout/,
41
+ %r/451 Sorry, I wasn't able to establish an SMTP connection[.]/,
42
+ ],
43
+ :mailboxfull => [
44
+ %r/Account storage limit/,
45
+ ],
46
+ :userunknown => [
47
+ %r/Account does not exist/,
48
+ %r/550 Recipient not found[.]/,
49
+ ],
50
+ :suspend => [
51
+ %r/Account disabled/,
52
+ ],
53
+ }.freeze
54
+
55
+ # Detect bounce reason from GoDaddy
56
+ # @param [Sisimai::Data] argvs Parsed email object
57
+ # @return [String] The bounce reason for GoDaddy
58
+ # @see https://www.godaddy.com/help/what-does-my-email-bounceback-mean-3568
59
+ def get(argvs)
60
+ return nil unless argvs
61
+ return nil unless argvs.is_a? Sisimai::Data
62
+ return argvs.reason if argvs.reason.size > 0
63
+
64
+ statusmesg = argvs.diagnosticcode
65
+ reasontext = ''
66
+
67
+ if cv = statusmesg.match(/\s(IB\d{3})\b/)
68
+ # 192.0.2.22 has sent to too many recipients this hour. IB607 ...
69
+ reasontext = CodeTable[cv[1].to_sym]
70
+ else
71
+ # 553 http://www.spamhaus.org/query/bl?ip=192.0.0.222
72
+ MesgTable.each_key do |e|
73
+ MesgTable[e].each do |f|
74
+ next unless statusmesg =~ f
75
+ reasontext = e.to_s
76
+ break
77
+ end
78
+ end
79
+ end
80
+ return reasontext
81
+ end
82
+
83
+ end
84
+ end
85
+ end
86
+ end
87
+
@@ -206,7 +206,7 @@ module Sisimai
206
206
  :regexp => [%r/Unrecognized Authentication Type[.]/],
207
207
  },
208
208
  ],
209
- }
209
+ }.freeze
210
210
 
211
211
  # Detect bounce reason from Google Apps
212
212
  # @param [Sisimai::Data] argvs Parsed email object
@@ -16,7 +16,7 @@ module Sisimai
16
16
  systemfull toomanyconn virusdetected
17
17
  |,
18
18
  :hard => %w|hasmoved hostunknown userunknown|
19
- }
19
+ }.freeze
20
20
 
21
21
  # Permanent error or not
22
22
  # @param [String] argv1 String including SMTP Status code
@@ -49,19 +49,13 @@ module Sisimai
49
49
  end
50
50
  else
51
51
  # Check with regular expression
52
- if argv1 =~ /(?:temporar|persistent)/i
53
- # Temporary failure
54
- getchecked = false
55
-
56
- elsif argv1 =~ /permanent/i
57
- # Permanently failure
58
- getchecked = true
59
-
60
- else
61
- # did not find information to decide that it is a soft bounce
62
- # or a hard bounce.
63
- getchecked = nil
64
- end
52
+ getchecked = if argv1 =~ /(?:temporar|persistent)/i
53
+ # Temporary failure
54
+ false
55
+ elsif argv1 =~ /permanent/i
56
+ # Permanently failure
57
+ true
58
+ end
65
59
  end
66
60
 
67
61
  return getchecked
@@ -85,15 +79,17 @@ module Sisimai
85
79
  softorhard = ''
86
80
 
87
81
  elsif argv1 == 'onhold' || argv1 == 'undefined'
88
- # Check with the value of D.S.N. in $argv2
82
+ # Check with the value of D.S.N. in argv2
89
83
  getchecked = Sisimai::SMTP::Error.is_permanent(argv2)
90
84
 
91
85
  if getchecked.nil?
92
- # The value is not defined (returned undef)
93
86
  softorhard = ''
94
87
  else
95
- # The value is 0 or 1
96
- softorhard = getchecked == 1 ? 'hard' : 'soft'
88
+ softorhard = if getchecked
89
+ 'hard'
90
+ else
91
+ 'soft'
92
+ end
97
93
  end
98
94
 
99
95
  elsif argv1 == 'notaccept'
@@ -104,13 +100,13 @@ module Sisimai
104
100
  statuscode = Sisimai::SMTP::Reply.find(argv2) if statuscode.empty?
105
101
  classvalue = statuscode[0, 1].to_i
106
102
 
107
- if classvalue == 4
108
- # Deal as a "soft bounce"
109
- softorhard = 'soft'
110
- else
111
- # 5 or 0, deal as a "hard bounce"
112
- softorhard = 'hard'
113
- end
103
+ softorhard = if classvalue == 4
104
+ # Deal as a "soft bounce"
105
+ 'soft'
106
+ else
107
+ # 5 or 0, deal as a "hard bounce"
108
+ 'hard'
109
+ end
114
110
  else
115
111
  # "notaccept" is a hard bounce
116
112
  softorhard = 'hard'
@@ -135,7 +131,6 @@ module Sisimai
135
131
  end
136
132
  end
137
133
 
138
- sortorhard = '' if softorhard.nil?
139
134
  return softorhard
140
135
  end
141
136
 
@@ -143,4 +138,3 @@ module Sisimai
143
138
  end
144
139
  end
145
140
  end
146
-
@@ -644,7 +644,7 @@ module Sisimai
644
644
  :'5.7.25' => 'blocked', # Reverse DNS validation failed
645
645
  :'5.7.26' => 'securityerror', # Multiple authentication checks failed
646
646
  :'5.7.27' => 'rejected', # Sender address has null MX
647
- }
647
+ }.freeze
648
648
 
649
649
  InternalCode = {
650
650
  :temporary => {
@@ -700,7 +700,7 @@ module Sisimai
700
700
  :undefined => '5.0.900',
701
701
  :virusdetected => '5.0.971',
702
702
  },
703
- }
703
+ }.freeze
704
704
 
705
705
  # Convert from the reason string to the internal status code
706
706
  # @param [String] argv1 Reason name
@@ -110,13 +110,13 @@ module Sisimai
110
110
 
111
111
  begin
112
112
  # Try to convert the string to UTF-8
113
- if encodefrom
114
- # String#encode('UTF-8', <FROM>)
115
- getencoded = argv1.encode('UTF-8', encodefrom)
116
- else
117
- # Force encoding to UTF-8
118
- getencoded = argv1.force_encoding('UTF-8')
119
- end
113
+ getencoded = if encodefrom
114
+ # String#encode('UTF-8', <FROM>)
115
+ argv1.encode('UTF-8', encodefrom)
116
+ else
117
+ # Force encoding to UTF-8
118
+ argv1.force_encoding('UTF-8')
119
+ end
120
120
  rescue
121
121
  # Unknown encoding name or failed to encode
122
122
  getencoded = argv1.force_encoding('UTF-8')
@@ -1,4 +1,4 @@
1
1
  # Define the version number of Sisimai
2
2
  module Sisimai
3
- VERSION = '4.22.1'.freeze
3
+ VERSION = '4.22.2'.freeze
4
4
  end
@@ -0,0 +1 @@
1
+ [{"ip":"192.0.2.22","status":"5.2.2","sg_event_id":"S4wr46YHS0qr3BKhawTQjQ","reason":"550 5.2.2 <mailboxfull@example.jp>... Mailbox Full ","sg_message_id":"03_Wof6nRbqqzxRvLpZbfw.filter0017p3mdw1-11399-59ADB335-16.0","tls":0,"event":"bounce","email":"mailboxfull@example.jp","timestamp":1504555832,"smtp-id":"<201709042010.v84KAQ5T032530@example.nyaan.jp>","type":"blocked"}]
@@ -0,0 +1 @@
1
+ [{"ip":"192.0.2.22","response":"250 2.0.0 OK 1504548007 y202si6984453itc.115 - gsmtp ","sg_event_id":"9DQrtMYCQcqhzCcaM1dDcA","sg_message_id":"xOljzpupQQWM0kNVSTWCJw.filter0022p3mdw1-18488-59AD94A6-1C.0","tls":1,"event":"delivered","email":"kijitora@example.com","timestamp":1504548007,"smtp-id":"<9454cba873d4ff07@localhost>"}]
@@ -0,0 +1 @@
1
+ [{"ip":"192.0.2.22","status":"5.7.13","sg_event_id":"G9n4tny6SbOd2OOIwR4WWQ","reason":"525 5.7.13 Disabled recipient address ","sg_message_id":"1WmUfrSfRTK-rqq2dbmjbg.filter0005p3mdw1-16436-59ADC425-15.0","tls":0,"event":"bounce","email":"kijitora@example.jp","timestamp":1504560168,"smtp-id":"<201709042122.v84LMhK6032741@example.nyaan.jp>","type":"blocked"}]
@@ -0,0 +1 @@
1
+ [{"email":"kijitora@example.com","timestamp":1504837383,"sg_message_id":"6_hrAeKvTDaB5ynBI2nbnQ.filter0002p3las1-27574-59B1FDA3-19.0","sg_event_id":"o70uHqbMSXOaaoveMZIjjg","event":"spamreport"}]
@@ -0,0 +1 @@
1
+ [{"email":"kijitora@outlook.example.com","timestamp":1504887024,"sg_message_id":"X4B3sZa5RVGb40R5f6xvXw.filter0022p3las1-25394-59B1FDA9-F.0","sg_event_id":"odvDkblzSzmMErbelzZiDQ","event":"spamreport"}]
@@ -0,0 +1 @@
1
+ [{"email":"kijitora@mail.example.ru","timestamp":1504888615,"sg_message_id":"XFF5SV20RXGJQFfQCB6Pfg.filter0021p3las1-20183-59B2C682-2C.0","sg_event_id":"5zlPaGPlRyy6bdJc3vKTpQ","event":"spamreport"}]
@@ -0,0 +1,83 @@
1
+ From MAILER-DAEMON Tue Sep 19 12:00:02 2017
2
+ Return-Path: <>
3
+ X-Original-To: postmaster@sender.com
4
+ Delivered-To: postmaster@sender.com
5
+ Received: from mx.sender.com (mx.sender.com [192.0.2.1])
6
+ by mail.sender.com (Postfix) with ESMTP id 084521680B5A
7
+ for <postmaster@sender.com>; Tue, 19 Sep 2017 12:00:02 -0700 (PDT)
8
+ Received: by mx.sender.com (Postfix)
9
+ id F1F29402F2229; Tue, 19 Sep 2017 12:00:01 -0700 (PDT)
10
+ Date: Tue, 19 Sep 2017 12:00:01 -0700 (PDT)
11
+ From: MAILER-DAEMON@mx.sender.com (Mail Delivery System)
12
+ Subject: Undelivered Mail Returned to Sender
13
+ To: postmaster@sender.com
14
+ Auto-Submitted: auto-replied
15
+ MIME-Version: 1.0
16
+ Content-Type: multipart/report; report-type=delivery-status;
17
+ boundary="DA209402F1B99.1505847601/mx.sender.com"
18
+ Content-Transfer-Encoding: 8bit
19
+ Message-Id: <20170919190001.F1F29402F2229@mx.sender.com>
20
+
21
+ This is a MIME-encapsulated message.
22
+
23
+ --DA209402F1B99.1505847601/mx.sender.com
24
+ Content-Description: Notification
25
+ Content-Type: text/plain; charset=us-ascii
26
+
27
+ This is the mail system at host mx.sender.com.
28
+
29
+ I'm sorry to have to inform you that your message could not
30
+ be delivered to one or more recipients. It's attached below.
31
+
32
+ For further assistance, please send mail to postmaster.
33
+
34
+ If you do so, please include this problem report. You can
35
+ delete your own text from the attached returned message.
36
+
37
+ The mail system
38
+
39
+ <original-recipient@example.com>: host smtp.secureserver.net[72.167.238.29] said: 550
40
+ 5.1.1 <original-recipient@example.com> - 192.0.2.0 has sent to too many
41
+ recipients this hour. IB607 <http://x.co/rlbounce> (in reply to RCPT TO
42
+ command)
43
+
44
+ --DA209402F1B99.1505847601/mx.sender.com
45
+ Content-Description: Delivery report
46
+ Content-Type: message/delivery-status
47
+
48
+ Reporting-MTA: dns; mx.sender.com
49
+ X-Postfix-Queue-ID: DA209402F1B99
50
+ X-Postfix-Sender: rfc822; postmaster@sender.com
51
+ Arrival-Date: Tue, 19 Sep 2017 11:59:55 -0700 (PDT)
52
+
53
+ Final-Recipient: rfc822; original-recipient@example.com
54
+ Original-Recipient: rfc822;original-recipient@example.com
55
+ Action: failed
56
+ Status: 5.1.1
57
+ Remote-MTA: dns; smtp.secureserver.net
58
+ Diagnostic-Code: smtp; 550 5.1.1 <original-recipient@example.com> - 192.0.2.1 has
59
+ sent to too many recipients this hour. IB607 <http://x.co/rlbounce>
60
+
61
+ --DA209402F1B99.1505847601/mx.sender.com
62
+ Content-Description: Undelivered Message
63
+ Content-Type: message/rfc822
64
+ Content-Transfer-Encoding: 8bit
65
+
66
+ Return-Path: <postmaster@sender.com>
67
+ Received: from localhost.localdomain (mx1.sender.com [192.0.2.2])
68
+ by mx.sender.com (Postfix) with ESMTP id DA209402F1B99
69
+ for <original-recipient@example.com>; Tue, 19 Sep 2017 11:59:55 -0700 (PDT)
70
+ Content-Disposition: inline
71
+ Content-Transfer-Encoding: 8bit
72
+ Content-Type: text/html
73
+ MIME-Version: 1.0
74
+ X-Mailer: MIME::Lite 3.030 (F2.84; T2.13; A2.12; B3.13; Q3.13)
75
+ Date: Tue, 19 Sep 2017 11:59:55 -0700
76
+ X-Report-Abuse-To: abuse@fastemailflyers.com
77
+ From: "Original Sender" <original-sender@example.com>
78
+ To: "Original Recipient" <original-recipient@example.com>
79
+ Subject: Test
80
+
81
+ <html><body>Test</body></html>
82
+
83
+ --DA209402F1B99.1505847601/mx.sender.com--
@@ -0,0 +1,69 @@
1
+ From MAILER-DAEMON@mta1.example.net Wed Apr 1 01:52:21 2009
2
+ Return-Path: <MAILER-DAEMON@mta1.example.net>
3
+ Received: from localhost (localhost)
4
+ by mta1.example.net (8.13.8/8.13.8) id n315qKUv008579;
5
+ Wed, 1 Apr 2009 01:52:20 -0400
6
+ Date: Wed, 1 Apr 2009 01:52:20 -0400
7
+ From: Mail Delivery Subsystem <MAILER-DAEMON@mta1.example.net>
8
+ Message-Id: <200904010552.n315qKUv008579@mta1.example.net>
9
+ To: <sironeko@mta1.example.net>
10
+ MIME-Version: 1.0
11
+ Content-Type: multipart/report; report-type=delivery-status;
12
+ boundary="n315qKUv008579.1238565140/mta1.example.net"
13
+ Subject: Returned mail: see transcript for details
14
+ Auto-Submitted: auto-generated (failure)
15
+
16
+ This is a MIME-encapsulated message
17
+
18
+ --n315qKUv008579.1238565140/mta1.example.net
19
+
20
+ The original message was received at Wed, 1 Apr 2009 01:49:21 -0400
21
+ from localhost.localdomain [127.0.0.1]
22
+
23
+ ----- The following addresses had permanent fatal errors -----
24
+ <kijitora@example.com>
25
+ (reason: 553 http://www.spamhaus.org/query/bl?ip=192.0.2.222)
26
+
27
+ ----- Transcript of session follows -----
28
+ ... while talking to smtp.secureserver.net.:
29
+ >>> RCPT To:<kijitora@example.com>
30
+ <<< 553 http://www.spamhaus.org/query/bl?ip=192.0.2.222
31
+ 550 5.1.1 <kijitora@example.com>... User unknown
32
+
33
+ --n315qKUv008579.1238565140/mta1.example.net
34
+ Content-Type: message/delivery-status
35
+
36
+ Reporting-MTA: dns; mta1.example.net
37
+ Received-From-MTA: DNS; localhost.localdomain
38
+ Arrival-Date: Wed, 1 Apr 2009 01:49:21 -0400
39
+
40
+ Final-Recipient: RFC822; kijitora@example.com
41
+ Action: failed
42
+ Status: 5.1.3
43
+ Remote-MTA: DNS; smtp.secureserver.net
44
+ Diagnostic-Code: SMTP; 553 http://www.spamhaus.org/query/bl?ip=192.0.2.222
45
+ Last-Attempt-Date: Wed, 1 Apr 2009 01:52:20 -0400
46
+
47
+ --n315qKUv008579.1238565140/mta1.example.net
48
+ Content-Type: message/rfc822
49
+
50
+ Return-Path: <sironeko@mta1.example.net>
51
+ Received: from mta1.example.net (localhost.localdomain [127.0.0.1])
52
+ by mta1.example.net (8.13.8/8.13.8) with ESMTP id n315nLUv008575
53
+ for <kijitora@example.com>; Wed, 1 Apr 2009 01:49:21 -0400
54
+ Received: (from sironeko@localhost)
55
+ by mta1.example.net (8.13.8/8.13.8/Submit) id n315nLUx008574;
56
+ Wed, 1 Apr 2009 01:49:21 -0400
57
+ Date: Wed, 1 Apr 2009 01:49:21 -0400
58
+ Message-Id: <200904010549.n315nLUx008574@mta1.example.net>
59
+ To: kijitora@example.com
60
+ From: "Sironeko, Cat" <sironeko@example.org>
61
+ Subject: Nyaan
62
+ Reply-to: sironeko@example.org
63
+ MIME-Version: 1.0
64
+ Content-type: text/plain; charset=us-ascii
65
+
66
+ Nyaan
67
+
68
+ --n315qKUv008579.1238565140/mta1.example.net--
69
+