sisimai 5.0.2-java → 5.0.3-java

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6a197e428eb68e19937e14dfb13e98f47a80ca886951c2a4a7001f1ff6c76914
4
- data.tar.gz: f5ea7644d137db6c52eb94b914fa01869e08e63480a14bc1ef4addce6d9e1f40
3
+ metadata.gz: 54c592e5b1c8a3be27062107f12c99a55a70e953523df5c6c575e668a71e0dde
4
+ data.tar.gz: c6f726ab72d810a9447b3e7df6cccab4c458e899bd52c652c1260b7ba063fd3c
5
5
  SHA512:
6
- metadata.gz: 5544060881b8a8950ce6183761481567a29be849ad06aa8c520486b3a8d0ef5d8725c89ac58b2e213e5d089be2b52f17b6d6d81a0bd865d5dfa2d69ca8a87fc7
7
- data.tar.gz: 6ed183fab34228e2403f807943c34e2fa17e3f845ed2391cd6fc57d95d9d4c421b4a4cb9c0eaadafde0ceec5f08c9a8ba01eebd61e1cad8bb4e1852d15ef8f35
6
+ metadata.gz: 910179d9e65f229fb8775bf104e469bfb7b5c8d04d1888f2bdf1fb9e47cb00a6710e5e76cdb15118ceb4bf1358b8020cc70fecfab5c8a72ff0ab773fafd5b9fd
7
+ data.tar.gz: 949e5a68e872884ad3718dbc9280107c9c59c18986994878552c3d0bd0e595ac9ced30bf79ef1db33281757956f26fee0f8fcfc7d697159abbc718073006a61a
@@ -0,0 +1,33 @@
1
+ name: Upload coverage reports to Codecov
2
+ on:
3
+ push:
4
+ branches: ["5-stable"]
5
+ pull_request:
6
+ branches: ["5-stable"]
7
+ jobs:
8
+ codecov:
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - name: Checkout the repository(CRuby)
12
+ uses: actions/checkout@v4
13
+ - name: Setup CRuby
14
+ uses: ruby/setup-ruby@v1
15
+ with:
16
+ ruby-version: "3.3"
17
+ - name: Install minitest
18
+ run: gem install minitest -v 5.15.0
19
+ - name: Install oj
20
+ run: gem install oj -v 3.10.0
21
+ - name: Install bundle, rake, simplecov, and simplecov-cobertura
22
+ run: gem install bundle rake simplecov simplecov-cobertura
23
+ - name: Check the CRuby version
24
+ run: ruby -v
25
+ - name: Execute public tests with the coverage report
26
+ run: ruby -I./lib ./test/coverage.rb
27
+ - name: Run Codecov on GitHub Actions
28
+ uses: codecov/codecov-action@v4.4.0
29
+ with:
30
+ token: ${{ secrets.CODECOV_TOKEN }}
31
+ files: ./coverage/coverage.xml
32
+ verbose: true
33
+
@@ -13,22 +13,22 @@ jobs:
13
13
  matrix:
14
14
  cruby: ["2.4", "3.3"]
15
15
  steps:
16
- - uses: actions/checkout@v4
16
+ - name: Checkout the repository(CRuby)
17
+ uses: actions/checkout@v4
17
18
  - name: Setup CRuby
18
19
  uses: ruby/setup-ruby@v1
19
20
  with:
20
21
  ruby-version: ${{ matrix.cruby }}
21
- - run: gem install minitest -v 5.15.0
22
- - run: gem install oj -v 3.10.0
23
- - run: gem install bundle rake
24
- - name: Cache the dependent gems
25
- uses: actions/cache@v2
26
- with:
27
- path: ./cache
28
- key: ${{ runner.os }}-ruby-${{ matrix.cruby }}-${{ hashFiles('./gem.snapshot') }}
29
- - run: ruby -v
30
- - run: rake publictest
31
- - run: rake privatetest
22
+ - name: Install minitest
23
+ run: gem install minitest -v 5.15.0
24
+ - name: Install oj
25
+ run: gem install oj -v 3.10.0
26
+ - name: Install bundle and rake
27
+ run: gem install bundle rake
28
+ - name: Check the CRuby version
29
+ run: ruby -v
30
+ - name: Execute public tests
31
+ run: rake publictest
32
32
  test-jruby:
33
33
  name: rake test with JRuby ${{ matrix.jruby }}
34
34
  runs-on: ubuntu-latest
@@ -37,19 +37,18 @@ jobs:
37
37
  matrix:
38
38
  jruby: ["jruby-9.2", "jruby-9.4"]
39
39
  steps:
40
- - uses: actions/checkout@v2
40
+ - name: Checkout the repository(JRuby)
41
+ uses: actions/checkout@v2
41
42
  - name: Setup JRuby
42
43
  uses: ruby/setup-ruby@v1
43
44
  with:
44
45
  ruby-version: ${{ matrix.jruby }}
45
- - run: gem install minitest -v 5.15.0
46
- - run: gem install bundle rake jrjackson
47
- - name: Cache the dependent gems
48
- uses: actions/cache@v2
49
- with:
50
- path: ./cache
51
- key: ${{ runner.os }}-ruby-${{ matrix.jruby }}-${{ hashFiles('./gem.snapshot') }}
52
- - run: ruby -v
53
- - run: rake publictest
54
- - run: rake privatetest
46
+ - name: Install minitest
47
+ run: gem install minitest -v 5.15.0
48
+ - name: Install bundle, rake, and jrjackson
49
+ run: gem install bundle rake jrjackson
50
+ - name: Check the JRuby version
51
+ run: jruby -v
52
+ - name: Execute public tests
53
+ run: rake publictest
55
54
 
data/ChangeLog.md CHANGED
@@ -3,6 +3,34 @@ 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
+ v5.0.3
7
+ ---------------------------------------------------------------------------------------------------
8
+ - release: "Wed, 22 May 2024 14:12:22 +0900 (JST)"
9
+ - version: "5.0.3"
10
+ - changes:
11
+ - Remove `.travis.yml` from this repository
12
+ - Follow updates in Gmail SMTP errors and codes on Apr 29 and May 10 at `Sisimai::Rhost::Google`
13
+ #275 #277 #283
14
+ - https://support.google.com/a/answer/3726730?hl=en
15
+ - https://github.com/azumakuniyuki/feb-2024-no-auth-no-entry/commit/1d6adede
16
+ - https://github.com/azumakuniyuki/feb-2024-no-auth-no-entry/commit/d477b178
17
+ - Implement SMTP error codes as follows: `4.7.23`, `4.7.30`, `4.7.32`, `5.7.29`, and `5.7.30`
18
+ - Shortened error message patterns to make them more adaptable to minor sentence changes.
19
+ - Multibyte characters in the code and comments have been replaced with ASCII characters #278
20
+ - #279 #280 Deal the Apple unsubscribe notification as an ARF message. Thanks to @mnmallea
21
+ - Add the following error message patterns returned from Exchange Online #281
22
+ - 4.4.317, 5.4.317: STARTTLS is required to send mail
23
+ - 4.4.318, 5.4.318: Connection was closed abruptly (SuspiciousRemoteServerError)
24
+ - #282 Added 16 error message patterns into the following reasons:
25
+ - `Blocked`
26
+ - `Expired`
27
+ - `Filtered`
28
+ - `MailboxFull`
29
+ - `NoRelaying`
30
+ - `Suspend`
31
+ - `UserUnknown`
32
+ - #286 Use Codecov for the coverage
33
+
6
34
  v5.0.2
7
35
  ---------------------------------------------------------------------------------------------------
8
36
  - release: "Wed, 13 Mar 2024 13:00:00 +0900 (JST)"
data/Gemfile CHANGED
@@ -7,5 +7,7 @@ group :development, :test do
7
7
  gem 'rake', :require => false
8
8
  gem 'minitest', :require => false
9
9
  gem 'coveralls', :require => false
10
+ gem 'simplecov', :require => false
11
+ gem 'simplecov-cobertura', :require => false
10
12
  end
11
13
 
data/README-JA.md CHANGED
@@ -1,8 +1,8 @@
1
1
  ![](https://libsisimai.org/static/images/logo/sisimai-x01.png)
2
2
  [![License](https://img.shields.io/badge/license-BSD%202--Clause-orange.svg)](https://github.com/sisimai/rb-sisimai/blob/master/LICENSE)
3
- [![Coverage Status](https://img.shields.io/coveralls/sisimai/rb-sisimai.svg)](https://coveralls.io/r/sisimai/rb-sisimai)
4
3
  [![Ruby](https://img.shields.io/badge/ruby-v2.4.0--v3.3.0-red.svg)](https://www.ruby-lang.org/)
5
4
  [![Gem Version](https://badge.fury.io/rb/sisimai.svg)](https://badge.fury.io/rb/sisimai)
5
+ [![codecov](https://codecov.io/github/sisimai/rb-sisimai/graph/badge.svg?token=YGkyluNWiZ)](https://codecov.io/github/sisimai/rb-sisimai)
6
6
 
7
7
  > [!IMPORTANT]
8
8
  > **2024年2月2日の時点でこのリポジトリのデフォルトブランチは[5-stable](https://github.com/sisimai/rb-sisimai/tree/5-stable)
@@ -110,10 +110,10 @@ Install
110
110
  ### From RubyGems.org
111
111
  ```shell
112
112
  $ sudo gem install sisimai
113
- Fetching: sisimai-5.0.2.gem (100%)
114
- Successfully installed sisimai-5.0.2
115
- Parsing documentation for sisimai-5.0.2
116
- Installing ri documentation for sisimai-5.0.2
113
+ Fetching: sisimai-5.0.3.gem (100%)
114
+ Successfully installed sisimai-5.0.3
115
+ Parsing documentation for sisimai-5.0.3
116
+ Installing ri documentation for sisimai-5.0.3
117
117
  Done installing documentation for sisimai after 6 seconds
118
118
  1 gem installed
119
119
  ```
@@ -141,13 +141,13 @@ if [ -d "/usr/local/jr" ]; then \
141
141
  ...
142
142
  3 gems installed
143
143
  /opt/local/bin/rake install
144
- sisimai 5.0.2 built to pkg/sisimai-5.0.2.gem.
145
- sisimai (5.0.2) installed.
144
+ sisimai 5.0.3 built to pkg/sisimai-5.0.3.gem.
145
+ sisimai (5.0.3) installed.
146
146
  if [ -d "/usr/local/jr" ]; then \
147
147
  PATH="/usr/local/jr/bin:$PATH" /usr/local/jr/bin/rake install; \
148
148
  fi
149
- sisimai 5.0.2 built to pkg/sisimai-5.0.2-java.gem.
150
- sisimai (5.0.2) installed.
149
+ sisimai 5.0.3 built to pkg/sisimai-5.0.3-java.gem.
150
+ sisimai (5.0.3) installed.
151
151
  ```
152
152
 
153
153
  Usage
data/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  ![](https://libsisimai.org/static/images/logo/sisimai-x01.png)
2
2
  [![License](https://img.shields.io/badge/license-BSD%202--Clause-orange.svg)](https://github.com/sisimai/rb-sisimai/blob/master/LICENSE)
3
- [![Coverage Status](https://img.shields.io/coveralls/sisimai/rb-sisimai.svg)](https://coveralls.io/r/sisimai/rb-sisimai)
4
3
  [![Ruby](https://img.shields.io/badge/ruby-v2.4.0--v3.3.0-red.svg)](https://www.ruby-lang.org/)
5
4
  [![Gem Version](https://badge.fury.io/rb/sisimai.svg)](https://badge.fury.io/rb/sisimai)
5
+ [![codecov](https://codecov.io/github/sisimai/rb-sisimai/graph/badge.svg?token=YGkyluNWiZ)](https://codecov.io/github/sisimai/rb-sisimai)
6
6
 
7
7
  > [!IMPORTANT]
8
8
  > **The default branch of this repository is [5-stable](https://github.com/sisimai/rb-sisimai/tree/5-stable)
@@ -101,7 +101,7 @@ More details about system requirements are available at
101
101
 
102
102
  * [Ruby 2.4.0 or later](http://www.ruby-lang.org/)
103
103
  * [__oj | The fastest JSON parser and object serializer__](https://rubygems.org/gems/oj)
104
- * Also works on [JRuby 9.2 or later](http://jruby.org)~~
104
+ * Also works on [JRuby 9.2 or later](http://jruby.org)
105
105
  * [__jrjackson | A mostly native JRuby wrapper for the java jackson json processor jar__](https://rubygems.org/gems/jrjackson)
106
106
 
107
107
  Install
@@ -109,10 +109,10 @@ Install
109
109
  ### From RubyGems
110
110
  ```shell
111
111
  $ sudo gem install sisimai
112
- Fetching: sisimai-5.0.2.gem (100%)
113
- Successfully installed sisimai-5.0.2
114
- Parsing documentation for sisimai-5.0.2
115
- Installing ri documentation for sisimai-5.0.2
112
+ Fetching: sisimai-5.0.3.gem (100%)
113
+ Successfully installed sisimai-5.0.3
114
+ Parsing documentation for sisimai-5.0.3
115
+ Installing ri documentation for sisimai-5.0.3
116
116
  Done installing documentation for sisimai after 6 seconds
117
117
  1 gem installed
118
118
  ```
@@ -140,13 +140,13 @@ if [ -d "/usr/local/jr" ]; then \
140
140
  ...
141
141
  3 gems installed
142
142
  /opt/local/bin/rake install
143
- sisimai 5.0.2 built to pkg/sisimai-5.0.2.gem.
144
- sisimai (5.0.2) installed.
143
+ sisimai 5.0.3 built to pkg/sisimai-5.0.3.gem.
144
+ sisimai (5.0.3) installed.
145
145
  if [ -d "/usr/local/jr" ]; then \
146
146
  PATH="/usr/local/jr/bin:$PATH" /usr/local/jr/bin/rake install; \
147
147
  fi
148
- sisimai 5.0.2 built to pkg/sisimai-5.0.2-java.gem.
149
- sisimai (5.0.2) installed.
148
+ sisimai 5.0.3 built to pkg/sisimai-5.0.3-java.gem.
149
+ sisimai (5.0.3) installed.
150
150
  ```
151
151
 
152
152
  Usage
@@ -301,7 +301,7 @@ One-Liner
301
301
 
302
302
  Output example
303
303
  ---------------------------------------------------------------------------------------------------
304
- ![](https://libsisimai.org/static/images/demo/sisimai-5-cli-dump-p01.gif)
304
+ ![](https://libsisimai.org/static/images/demo/sisimai-5-cli-dump-r01.gif)
305
305
 
306
306
  ```json
307
307
  [
data/lib/sisimai/arf.rb CHANGED
@@ -37,13 +37,12 @@ module Sisimai
37
37
  # false: is not Feedback loop
38
38
  def is_arf(heads)
39
39
  return false unless heads
40
- match = false
41
40
 
42
- if Sisimai::String.aligned(heads['content-type'], ['report-type=', 'feedback-report'])
43
- # Content-Type: multipart/report; report-type=feedback-report; ...
44
- match = true
41
+ # Content-Type: multipart/report; report-type=feedback-report; ...
42
+ return true if Sisimai::String.aligned(heads['content-type'], ['report-type=', 'feedback-report'])
45
43
 
46
- elsif heads['content-type'].include?('multipart/mixed')
44
+ match = false
45
+ if heads['content-type'].include?('multipart/mixed')
47
46
  # Microsoft (Hotmail, MSN, Live, Outlook) uses its own report format.
48
47
  # Amazon SES Complaints bounces
49
48
  cv = Sisimai::Address.s3s4(heads['from'])
@@ -54,6 +53,8 @@ module Sisimai
54
53
  match = true if ReportFrom.any? { |a| cv.include?(a) }
55
54
  end
56
55
  end
56
+ match = true if heads['x-apple-unsubscribe'] == 'true'
57
+
57
58
  return match
58
59
  end
59
60
 
@@ -280,6 +281,24 @@ module Sisimai
280
281
  arfheaders['rhost'] = mhead['subject'][mhead['subject'].rindex(' ') + 1, mhead['subject'].size]
281
282
  commondata['diagnosis'] =
282
283
  'This is a Microsoft email abuse report for an email message received from IP' << arfheaders['rhost'] + ' on ' << mhead['date']
284
+
285
+ elsif mhead['subject'].include?('unsubscribe')
286
+ # Apple Mail sent this email to unsubscribe from the message
287
+ while true
288
+ # Subject: unsubscribe
289
+ # Content-Type: text/plain; charset=UTF-8
290
+ # Auto-Submitted: auto-replied
291
+ # X-Apple-Unsubscribe: true
292
+ #
293
+ # Apple Mail sent this email to unsubscribe from the message
294
+ break unless mhead['x-apple-unsubscribe']
295
+ break unless mhead['x-apple-unsubscribe'] == 'true'
296
+ break unless mbody.include?('Apple Mail sent this email to unsubscribe from the message');
297
+
298
+ dscontents[-1]['recipient'] = Sisimai::Address.s3s4(mhead['from'])
299
+ dscontents[-1]['feedbacktype'] = 'opt-out'
300
+ break
301
+ end
283
302
  end
284
303
 
285
304
  dscontents.each do |e|
@@ -42,7 +42,7 @@ module Sisimai::Lhost
42
42
 
43
43
  # Your message:
44
44
  # From: originalsender@example.com
45
- # Subject: IIdentifica蟾ス驕俳
45
+ # Subject: ...
46
46
  #
47
47
  # Could not be delivered because of
48
48
  #
@@ -452,7 +452,7 @@ module Sisimai
452
452
  unless haveloaded['Sisimai::ARF']
453
453
  # Feedback Loop message
454
454
  require 'sisimai/arf'
455
- havesifted = Sisimai::ARF.inquire(mailheader, bodystring) if Sisimai::ARF.is_arf(mailheader)
455
+ havesifted = Sisimai::ARF.inquire(mailheader, bodystring)
456
456
  throw :PARSER if havesifted
457
457
  end
458
458
 
@@ -62,6 +62,7 @@ module Sisimai
62
62
  'we do not accept mail from dynamic ips', # @mail.ru
63
63
  'you are not allowed to connect',
64
64
  'you are sending spam',
65
+ 'your ip address is listed in the rbl',
65
66
  'your network is temporary blacklisted',
66
67
  'your server requires confirmation',
67
68
  ].freeze
@@ -7,10 +7,13 @@ module Sisimai
7
7
  # the message you sent has been in the queue for long time.
8
8
  module Expired
9
9
  class << self
10
+ require 'sisimai/string'
11
+
10
12
  Index = [
11
13
  'connection timed out',
12
14
  'could not find a gateway for',
13
15
  'delivery attempts will continue to be',
16
+ 'delivery expired',
14
17
  'delivery time expired',
15
18
  'failed to deliver to domain ',
16
19
  'giving up on',
@@ -28,6 +31,9 @@ module Sisimai
28
31
  'was not reachable within the allowed queue period',
29
32
  'your message could not be delivered for more than',
30
33
  ].freeze
34
+ Pairs = [
35
+ ['could not be delivered for', ' days'],
36
+ ].freeze
31
37
 
32
38
  def text; return 'expired'; end
33
39
  def description; return 'Delivery time has expired due to a connection failure'; end
@@ -39,6 +45,7 @@ module Sisimai
39
45
  def match(argv1)
40
46
  return nil unless argv1
41
47
  return true if Index.any? { |a| argv1.include?(a) }
48
+ return true if Pairs.any? { |a| Sisimai::String.aligned(argv1, a) }
42
49
  return false
43
50
  end
44
51
 
@@ -21,6 +21,7 @@ module Sisimai
21
21
  'resolver.rst.notauthorized', # Microsoft Exchange
22
22
  'this account is protected by',
23
23
  'user not found', # Filter on MAIL.RU
24
+ 'user refuses to receive this mail',
24
25
  'user reject',
25
26
  'we failed to deliver mail because the following address recipient id refuse to receive mail', # Willcom
26
27
  'you have been blocked by the recipient',
@@ -8,6 +8,7 @@ module Sisimai
8
8
  module MailboxFull
9
9
  class << self
10
10
  Index = [
11
+ '452 insufficient disk space',
11
12
  'account disabled temporarly for exceeding receiving limits',
12
13
  'account is exceeding their quota',
13
14
  'account is over quota',
@@ -35,7 +36,9 @@ module Sisimai
35
36
  'maildir delivery failed: userdisk quota ',
36
37
  'maildir delivery failed: domaindisk quota ',
37
38
  'mailfolder is full',
39
+ 'no space left on device',
38
40
  'not enough storage space in',
41
+ 'not sufficient disk space',
39
42
  'over the allowed quota',
40
43
  'quota exceeded',
41
44
  'quota violation for',
@@ -24,6 +24,7 @@ module Sisimai
24
24
  'relay not permitted',
25
25
  'relaying denied', # Sendmail
26
26
  'relaying mail to ',
27
+ 'specified domain is not allowed',
27
28
  "that domain isn't in my list of allowed rcpthost",
28
29
  'this system is not configured to relay mail',
29
30
  'unable to relay for',
@@ -38,7 +38,7 @@ module Sisimai
38
38
  'email address is on senderfilterconfig list',
39
39
  'emetteur invalide',
40
40
  'empty envelope senders not allowed',
41
- 'envelope blocked ',
41
+ 'envelope blocked - ',
42
42
  'error: no third-party dsns', # SpamWall - block empty sender
43
43
  'from: domain is invalid. please provide a valid from:',
44
44
  'fully qualified email address required', # McAfee
@@ -12,17 +12,21 @@ module Sisimai
12
12
  'boite du destinataire archivee',
13
13
  'email account that you tried to reach is disabled',
14
14
  'has been suspended',
15
+ 'inactive account',
15
16
  'invalid/inactive user',
16
17
  'is a deactivated mailbox', # http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=20022&&no=1000742
17
18
  'is unavailable: user is terminated',
18
19
  'mailbox currently suspended',
20
+ 'mailbox disabled',
19
21
  'mailbox is frozen',
20
22
  'mailbox unavailable or access denied',
21
23
  'recipient rejected: temporarily inactive',
22
24
  'recipient suspend the service',
23
25
  'this account has been disabled or discontinued',
26
+ 'this account has been temporarily suspended',
24
27
  'this address no longer accepts mail',
25
28
  'this mailbox is disabled',
29
+ 'user or domain is disabled',
26
30
  'user suspended', # http://mail.163.com/help/help_spam_16.htm
27
31
  'vdelivermail: account is locked email bounced',
28
32
  ].freeze
@@ -63,7 +63,6 @@ module Sisimai
63
63
  'no such mailbox',
64
64
  'no such person at this address',
65
65
  'no such recipient',
66
-
67
66
  'no such user',
68
67
  'no thank you rejected: account unavailable',
69
68
  'no valid recipients, bye',
@@ -76,7 +75,9 @@ module Sisimai
76
75
  'recipient address rejected: invalid user',
77
76
  'recipient address rejected: invalid-recipient',
78
77
  'recipient address rejected: unknown user',
78
+ 'recipient address rejected: userunknown',
79
79
  'recipient does not exist',
80
+ 'recipient is not accepted',
80
81
  'recipient is not local',
81
82
  'recipient not exist',
82
83
  'recipient not found',
@@ -125,6 +126,7 @@ module Sisimai
125
126
  ['no ', ' in name directory'],
126
127
  ['non', 'existent user'],
127
128
  ['rcpt <', ' does not exist'],
129
+ ['rcpt (', 't exist '],
128
130
  ['recipient ', ' was not found in'],
129
131
  ['recipient address rejected: user ', ' does not exist'],
130
132
  ['recipient address rejected: user unknown in ', ' table'],
@@ -135,6 +137,7 @@ module Sisimai
135
137
  ['unknown local', 'part'],
136
138
  ['user ', ' was not found'],
137
139
  ['user ', ' does not exist'],
140
+ ['user (', ') unknown'],
138
141
  ].freeze
139
142
 
140
143
  def text; return 'userunknown'; end
@@ -15,16 +15,16 @@ module Sisimai
15
15
  # - 550 5.7.24 The SPF record of the sending domain has one or more suspicious entries.
16
16
  # For more information, go to Email sender guidelines.
17
17
  # - https://support.google.com/mail/answer/81126#authentication
18
- ['451', '4.7.24', 'the spf record of the sending domain has one or more suspicious entries'],
19
- ['550', '5.7.24', 'the spf record of the sending domain has one or more suspicious entries'],
18
+ ['451', '4.7.24', 'the spf record of the sending domain'],
19
+ ['550', '5.7.24', 'the spf record of the sending domain'],
20
20
 
21
21
  # - 421 4.7.26 This mail has been rate limited because it is unauthenticated.
22
22
  # Gmail requires all senders to authenticate with either SPF or DKIM.
23
23
  # Authentication results: DKIM = did not pass SPF domain-name with ip: ip-address =
24
24
  # did not pass. To resolve this issue, go to Email sender guidelines.
25
25
  # - https://support.google.com/mail/answer/81126#authentication
26
- ['421', '4.7.26', 'gmail requires all senders to authenticate with either spf or dkim'],
27
- ['550', '5.7.26', 'gmail requires all senders to authenticate with either spf or dkim'],
26
+ ['421', '4.7.26', 'senders to authenticate with either spf or dkim'],
27
+ ['550', '5.7.26', 'senders to authenticate with either spf or dkim'],
28
28
 
29
29
  # - 550 5.7.26 This message fails to pass SPF checks for an SPF record with a hard fail
30
30
  # policy (-all). To best protect our users from spam and phishing, the message has
@@ -36,7 +36,7 @@ module Sisimai
36
36
  # protect our users from spam and phishing, the message has been blocked. For more
37
37
  # information, go to Email sender guidelines.
38
38
  # - https://support.google.com/mail/answer/81126#authentication
39
- ['550', '5.7.26', 'this message fails to pass spf checks for an spf record with a hard fail'],
39
+ ['550', '5.7.26', 'fails to pass spf checks for an spf record with a hard fail'],
40
40
  ['550', '5.7.26', 'has an spf record with a hard fail policy'],
41
41
 
42
42
  # - 451 4.7.26 Unauthenticated email from domain-name is not accepted due to domain's
@@ -61,27 +61,36 @@ module Sisimai
61
61
  ['550', '5.7.1', 'fails to pass authentication checks'],
62
62
  ['550', '5.7.26', 'fails to pass authentication checks'],
63
63
 
64
- # - 421 4.7.27 This mail has been rate limited because SPF does not pass.
65
- # Gmail requires all large senders to authenticate with SPF. Authentication results:
66
- # SPF domain-name with ip: ip-address = did not pass. To resolve this issue, go to
67
- # Define your SPF record窶韮asic setup. https://support.google.com/a/answer/10685031
68
- ['421', '4.7.27', 'gmail requires all large senders to authenticate with spf'],
69
- ['550', '5.7.27', 'gmail requires all large senders to authenticate with spf'],
70
-
71
- # - 421 4.7.28 This mail has been rate limited because DKIM does not pass.
72
- # Gmail requires all large senders to authenticate with DKIM. Authentication results:
73
- # DKIM = did not pass. For instructions on setting up DKIM authentication, go to Turn
74
- # on DKIM for your domain. https://support.google.com/a/answer/180504
75
- ['421', '4.7.28', 'gmail requires all large senders to authenticate with dkim'],
76
- ['550', '5.7.28', 'gmail requires all large senders to authenticate with dkim'],
64
+ # - 421 4.7.27 Your email has been rate limited because SPF authentication didn't pass
65
+ # for this message. Gmail requires all bulk email senders to authenticate their emaili
66
+ # with SPF. Authentication results: SPF domain-name with IP address: ip-address = Did
67
+ # not pass.
68
+ ['421', '4.7.27', 'senders to authenticate with spf'],
69
+ ['421', '4.7.27', 'senders to authenticate their email with spf'],
70
+ ['550', '5.7.27', 'senders to authenticate with spf'],
71
+
72
+ # - 421 4.7.30 Your email has been rate limited because DKIM authentication didn't pass
73
+ # for this message. Gmail requires all email bulk senders to authenticate their email
74
+ # with DKIM. Authentication results: DKIM = Did not pass.
75
+ ['421', '4.7.30', 'senders to authenticate their email with dkim'],
76
+
77
+ # - 550 5.7.30 This mail has been blocked because DKIM does not pass. Gmail requires all
78
+ # large senders to authenticate with DKIM. Authentication results: DKIM = did not pass.
79
+ # For instructions on setting up DKIM authentication, go to Turn on DKIM for your domain.
80
+ ['550', '5.7.30', 'senders to authenticate with dkim'],
81
+
82
+ # - 421 4.7.32 Your email has been rate limited because the From: header (RFC5322) in
83
+ # this message isn't aligned with either the authenticated SPF or DKIM organizational
84
+ # domain.
85
+ ['421', '4.7.32', 'aligned with either the authenticated spf or dkim'],
77
86
  ],
78
87
  'badreputation' => [
79
88
  # - 421 4.7.0 This message is suspicious due to the very low reputation of the sending
80
89
  # IP address/domain. To protect our users from spam, mail sent from your IP address
81
90
  # has been temporarily rate limited. For more information, go to Why has Gmail blocked
82
91
  # my messages?. https://support.google.com/mail/answer/188131
83
- ['421', '4.7.0', 'this message is suspicious due to the very low reputation of the sending ip address'],
84
- ['421', '4.7.0', 'this message is suspicious due to the very low reputation of the sending domain'],
92
+ ['421', '4.7.0', 'very low reputation of the sending ip address'],
93
+ ['421', '4.7.0', 'very low reputation of the sending domain'],
85
94
 
86
95
  # - 550 5.7.1 Our system has detected that this message is likely suspicious due to the
87
96
  # very low reputation of the sending IP address/domain. To best protect our users
@@ -94,7 +103,7 @@ module Sisimai
94
103
  # - 421 4.7.0 IP not in whitelist for RCPT domain, closing connection.
95
104
  # For more information, go to Allowlists, denylists, and approved senders.
96
105
  # https://support.google.com/a/answer/60752
97
- ['421', '4.7.0', 'ip not in whitelist for rcpt domain, closing connection.'],
106
+ ['421', '4.7.0', 'ip not in whitelist for rcpt domain'],
98
107
 
99
108
  # - 421 4.7.0 Try again later, closing connection. This usually indicates a Denial of
100
109
  # Service (DoS) for the SMTP relay at the HELO stage.
@@ -105,7 +114,7 @@ module Sisimai
105
114
  ['501', '5.5.4', 'empty helo/ehlo argument not allowed'],
106
115
  ['501', '5.5.4', 'helo/ehlo argument is invalid'],
107
116
 
108
- # - 421 4.7.28 Gmail has detected an unusual rate of unsolicited mail.
117
+ # - 421 4.7.28 Gmail has detected an unusual rate of mail
109
118
  # (originating from)
110
119
  # - your IP address 192.0.2.25
111
120
  # - your IP Netblock 192.0.2.0/24 (?)
@@ -117,7 +126,7 @@ module Sisimai
117
126
  # our bulk email senders guidelines, go to Email sender guidelines.
118
127
  # https://support.google.com/mail/?p=UnsolicitedRateLimitError
119
128
  ['421', '4.7.0', 'an unusual rate of unsolicited mail'],
120
- ['421', '4.7.28', 'an unusual rate of unsolicited mail'],
129
+ ['421', '4.7.28', 'an unusual rate of mail'],
121
130
 
122
131
  # - 550 5.7.1 Our system has detected an unusual rate of unsolicited mail originating
123
132
  # from your IP address. To protect our users from spam, mail sent from your IP ad-
@@ -126,8 +135,8 @@ module Sisimai
126
135
  # - 550 5.7.28 There is an unusual rate of unsolicited mail originating from your IP
127
136
  # address. To protect our users from spam, mail sent from your IP address has been
128
137
  # blocked. To review our bulk email senders guidelines, go to Email sender guidelines.
129
- ['550', '5.7.1', 'an unusual rate of unsolicited mail originating from your ip address'],
130
- ['550', '5.7.28', 'an unusual rate of unsolicited mail originating from your ip address'],
138
+ ['550', '5.7.1', 'an unusual rate of unsolicited mail'],
139
+ ['550', '5.7.28', 'an unusual rate of unsolicited mail'],
131
140
  ],
132
141
  'exceedlimit' => [
133
142
  # - 552 5.2.3 Your message exceeded Google's message size limits. For more information,
@@ -144,8 +153,8 @@ module Sisimai
144
153
  ['552', '5.3.4', "exceeds google's limit of limit attachments."],
145
154
  ['552', '5.3.4', "your message exceeded google's message header size limits"],
146
155
  ['552', '5.3.4', 'bytes per individual header size'],
147
- ['552', '5.3.4', "exceeds google窶冱 header name limit of"],
148
- ['552', '5.3.4', "your message has a subject: header that exceeds google's message header size limit"]
156
+ ['552', '5.3.4', "exceeds google's header name limit of"],
157
+ ['552', '5.3.4', "exceeds google's message header size limit"]
149
158
  ],
150
159
  'expired' => [
151
160
  # - 421 4.7.0 Connection expired, try reconnecting. For more information, go to About
@@ -165,15 +174,15 @@ module Sisimai
165
174
 
166
175
  # - 452 4.2.2 The email account that you tried to reach is over quota. Please direct
167
176
  # the recipient to Clear Google Drive space & increase storage.
168
- ['452', '4.2.2', 'the email account that you tried to reach is over quota'],
169
- ['552', '5.2.2', 'the email account that you tried to reach is over quota'],
177
+ ['452', '4.2.2', 'is over quota'],
178
+ ['552', '5.2.2', 'is over quota'],
170
179
  ['550', '5.7.1', 'email quota exceeded'],
171
180
  ],
172
181
  'mesgtoobig' => [
173
182
  # - 552 5.3.4 Your message exceeded Google's message size limits. To view our message
174
183
  # size guidelines, go to Send attachments with your Gmail message.
175
184
  # - https://support.google.com/mail/?p=MaxSizeError
176
- ['552', '5.3.4', "your message exceeded google's message size limits"],
185
+ ['552', '5.3.4', "exceeded google's message size limits"],
177
186
 
178
187
  # - 552 5.3.4 The size of your message (size bytes) exceeded Google's message size
179
188
  # limits of limit bytes. To view our message size guidelines, go to Gmail receiving
@@ -184,8 +193,8 @@ module Sisimai
184
193
  'networkerror' => [
185
194
  # - 554 5.4.6 Message exceeded 50 hops, this may indicate a mail loop.
186
195
  # For more information, go to Gmail Help. https://support.google.com/mail/?p=MailLoop
187
- ['554', '5.4.6', 'message exceeded 50 hops, this may indicate a mail loop'],
188
- ['554', '5.6.0', 'message exceeded 50 hops, this may indicate a mail loop'],
196
+ ['554', '5.4.6', 'message exceeded 50 hops'],
197
+ ['554', '5.6.0', 'message exceeded 50 hops'],
189
198
  ],
190
199
  'norelaying' => [
191
200
  # - 550 5.7.0 Mail relay denied <ip-address>. Invalid credentials for relay for one of
@@ -211,37 +220,37 @@ module Sisimai
211
220
  # to our servers. Use the SMTP relay at your service provider instead. For more
212
221
  # information, go to 'The IP you're using to send email is not authorized...'.
213
222
  # - https://support.google.com/mail/?p=NotAuthorizedError
214
- ['550', '5.7.1', "the ip you're using to send mail is not authorized to send email directly to our servers"],
223
+ ['550', '5.7.1', 'is not authorized to send email directly to our servers'],
215
224
  ],
216
225
  'notcompliantrfc' => [
217
226
  # - 550 5.7.1 Messages missing a valid address in the From: header, or having no From:
218
227
  # header, are not accepted. For more information, go to Email sender guidelines and
219
228
  # review RFC 5322 specifications.
220
229
  # - https://support.google.com/mail/?p=RfcMessageNonCompliant
221
- ['550', '5.7.1', 'messages missing a valid address in the from: header'],
222
- ['550', '5.7.1', 'messages with multiple addresses in from: header are not accepted'],
230
+ ['550', '5.7.1', 'missing a valid address in the from: header'],
231
+ ['550', '5.7.1', 'multiple addresses in from: header are not accepted'],
223
232
 
224
233
  # - 550 5.7.1 This message is not RFC 5322 compliant because it has duplicate headers.
225
234
  # To reduce the amount of spam sent to Gmail, this message has been blocked. For more
226
235
  # information, go to Email sender guidelines and review RFC 5322 specifications.
227
236
  # - https://support.google.com/mail/?p=RfcMessageNonCompliant
228
- ['550', '5.7.1', 'this message is not rfc 5322 compliant'],
237
+ ['550', '5.7.1', 'is not rfc 5322 compliant'],
229
238
 
230
239
  # - 550 5.7.1 Messages missing a valid Message-ID: header are not accepted. For more
231
240
  # information, go to Email sender guidelines and review RFC 5322 specifications.
232
241
  # - https://support.google.com/mail/?p=RfcMessageNonCompliant
233
- ['550', '5.7.1', 'messages missing a valid message-id: header are not accepted'],
242
+ ['550', '5.7.1', 'missing a valid message-id: header'],
234
243
 
235
244
  # - 550 5.7.1 The message contains a unicode character in a disallowed header.
236
245
  # To review our message and header content guidelines, go to File types blocked in
237
246
  # Gmail. https://support.google.com/mail/?p=BlockedMessage
238
- ['550', '5.7.1', 'the message contains a unicode character in a disallowed header'],
247
+ ['550', '5.7.1', 'contains a unicode character in a disallowed header'],
239
248
 
240
249
  # - 550 5.7.1 Encoded-word syntax is not permitted in message header header-name. To
241
250
  # reduce the amount of spam sent to Gmail, this message has been blocked. For more
242
251
  # information, go to Email sender guidelines and review RFC 5322 specifications.
243
252
  # - https://support.google.com/mail/?p=RfcMessageNonCompliant
244
- ['550', '5.7.1', 'encoded-word syntax is not permitted in message header'],
253
+ ['550', '5.7.1', 'encoded-word syntax is not permitted'],
245
254
 
246
255
  # - 553 5.1.7 The sender address address is not a valid RFC 5321 address. For more
247
256
  # information, go to About SMTP error messages and review RFC 5321 specifications.
@@ -251,49 +260,55 @@ module Sisimai
251
260
  # - 554 5.6.0 Mail message is malformed. Not accepted. For more information, go to
252
261
  # Email sender guidelines and review RFC 5322 specifications.
253
262
  # - https://support.google.com/mail/?p=RfcMessageNonCompliant
254
- ['554', '5.6.0', 'mail message is malformed. not accepted'],
263
+ ['554', '5.6.0', 'mail message is malformed'],
255
264
  ],
256
265
  'policyviolation' => [
257
266
  # - 552 5.7.0 Our system detected an illegal attachment on your message. Please visit
258
267
  # http://mail.google.com/support/bin/answer.py?answer=6590 to review our attachment
259
268
  # guidelines.
260
- ['552', '5.7.0', 'detected an illegal attachment on your message'],
269
+ ['552', '5.7.0', 'illegal attachment on your message'],
261
270
 
262
271
  # - 552 5.7.0 This message was blocked because its content presents a potential securi-
263
272
  # ty issue. Please visit https://support.google.com/mail/?p=BlockedMessage to review
264
273
  # our message content and attachment content guidelines.
265
- ['552', '5.7.0', 'this message was blocked because its content presents a potential security issue'],
274
+ ['552', '5.7.0', 'blocked because its content presents a potential security issue'],
266
275
 
267
276
  # - 550 5.7.1 The user or domain that you are sending to (or from) has a policy that
268
277
  # prohibited the mail that you sent. Please contact your domain administrator for
269
278
  # further details.
270
279
  # For more information, visit https://support.google.com/a/answer/172179
271
- ['550', '5.7.1', 'the user or domain that you are sending to (or from) has a policy that prohibited'],
280
+ ['550', '5.7.1', 'you are sending to (or from) has a policy that prohibited'],
272
281
 
273
282
  # - 421 4.7.28 Gmail has detected this message exceeded its quota for sending messages
274
283
  # with the same Message-ID:. To best protect our users, the message has been tempo-
275
284
  # rarily rejected. For more information, go to Why has Gmail blocked my messages?.
276
285
  # https://support.google.com/mail/answer/188131
277
- ['421', '4.7.28', 'has detected this message exceeded its quota for sending messages with the same message-id:'],
286
+ ['421', '4.7.28', 'sending messages with the same message-id:'],
278
287
  ],
279
288
  'rejected' => [
280
289
  # - 550 5.7.0, Mail Sending denied. This error occurs if the sender account is disabled
281
290
  # or not registered within your Google Workspace domain.
282
291
  # - https://support.google.com/a/answer/6140680#maildenied
283
292
  ['550', '5.7.0', 'mail sending denied'],
284
- ['550', '5.7.1', 'unauthenticated email is not accepted from this domain'],
293
+ ['550', '5.7.1', 'unauthenticated email is not accepted'],
285
294
  ],
286
295
  'requireptr' => [
287
296
  # - 550 5.7.1 This message does not meet IPv6 sending guidelines regarding PTR records
288
297
  # and authentication. For more information, go to Email sender guidelines.
289
298
  # https://support.google.com/mail/?p=IPv6AuthError
290
- ['550', '5.7.1', 'this message does not meet ipv6 sending guidelines regarding ptr records and authentication'],
299
+ ['550', '5.7.1', 'does not meet ipv6 sending guidelines regarding ptr records and authentication'],
291
300
 
292
301
  # - 421 4.7.0 The IP address sending this message does not have a PTR record, or the
293
302
  # corresponding forward DNS entry does not point to the sending IP. To protect our
294
303
  # users from spam, mail sent from your IP address has been temporarily rate limited.
295
304
  # For more information, go to Email sender guidelines.
296
- #
305
+ ['421', '4.7.0', 'does not have a ptr record'],
306
+
307
+ # - 421 4.7.23 The sending IP address for this message doesn't have a PTR record, or
308
+ # the PTR record's forward DNS entry doesn't match the sending IP address. To protect
309
+ # users from spam, your email has been temporarily rate limited.
310
+ ['421', '4.7.23', ' have a ptr record, or the ptr record'],
311
+
297
312
  # - 550 5.7.25 The IP address sending this message does not have a PTR record setup, or
298
313
  # the corresponding forward DNS entry does not point to the sending IP. As a policy,
299
314
  # Gmail does not accept messages from IPs with missing PTR records.
@@ -303,9 +318,8 @@ module Sisimai
303
318
  # - 550 5.7.25 The sending IP does not match the IP address of the hostname specified
304
319
  # in the pointer (PTR) record. For more information, go to Email sender guidelines.
305
320
  # - https://support.google.com/mail/answer/81126#ip-practices
306
- ['421', '4.7.0', 'the ip address sending this message does not have a ptr record'],
307
- ['550', '5.7.25', 'the ip address sending this message does not have a ptr record'],
308
- ['550', '5.7.25', 'the sending ip does not match the ip address of the hostname'],
321
+ ['550', '5.7.25', 'does not have a ptr record'],
322
+ ['550', '5.7.25', 'does not match the ip address of the hostname'],
309
323
  ],
310
324
  'securityerror' => [
311
325
  # - 421 4.7.0 TLS required for RCPT domain, closing connection. For more information,
@@ -313,7 +327,7 @@ module Sisimai
313
327
  #
314
328
  # - 454 4.7.0 Too many login attempts, please try again later. For more information, go
315
329
  # to Add Gmail to another email client. https://support.google.com/mail/answer/7126229
316
- ['421', '4.7.0', 'tls required for rcpt domain, closing connection'],
330
+ ['421', '4.7.0', 'tls required for rcpt domain'],
317
331
  ['454', '4.7.0', 'too many login attempts'],
318
332
 
319
333
  # - 503 5.7.0 No identity changes permitted. For more information, go to About SMTP
@@ -334,32 +348,33 @@ module Sisimai
334
348
 
335
349
  # - 535 5.7.1 Please log in with your web browser and then try again. For more infor-
336
350
  # mation, visit https://support.google.com/mail/bin/accounts/answer/78754
337
- ['535', '5.7.1', 'please log in with your web browser and then try again'],
338
- ['534', '5.7.9', 'please log in with your web browser and then try again'],
339
- ['534', '5.7.14', 'please log in through your web browser and then try again'],
351
+ ['535', '5.7.1', 'please log in with your web browser'],
352
+ ['534', '5.7.9', 'please log in with your web browser'],
353
+ ['534', '5.7.14', 'please log in through your web browser'],
340
354
 
341
355
  # - 535 5.7.1 Username and Password not accepted. For more information, visit
342
356
  # https://support.google.com/accounts/troubleshooter/2402620
343
357
  ['535', '5.7.1', 'username and password not accepted'],
344
358
  ['535', '5.7.8', 'username and password not accepted'],
345
359
 
346
- # - 421 4.7.29 This mail has been rate limited because TLS wasn't used. Gmail requires
347
- # all large senders to use TLS/SSL during SMTP. For instructions on using TLS, go to
348
- # TLS & SSL connections. https://support.google.com/a/answer/100181
349
- ['421', '4.7.29', 'gmail requires all large senders to use tls/ssl during smtp'],
360
+ # - 421 4.7.29 Your email has been rate limited because this message wasn't sent over a
361
+ # TLS connection. Gmail requires all bulk email senders to use TLS/SSL for SMTP conn-
362
+ # ections.
363
+ ['421', '4.7.29', 'senders to use tls/ssl for smtp'],
364
+ ['550', '5.7.29', 'senders to use tls/ssl for smtp'],
350
365
  ],
351
366
  'spamdetected' => [
352
367
  # - 421 4.7.0 This message is suspicious due to the nature of the content or the links
353
368
  # within. To best protect our users from spam, the message has been blocked. For more
354
369
  # information, go to Why has Gmail blocked my messages?.
355
370
  # https://support.google.com/mail/answer/188131
356
- ['421', '4.7.0', 'this message is suspicious due to the nature of the content or the links within'],
371
+ ['421', '4.7.0', 'due to the nature of the content or the links within'],
357
372
 
358
373
  # - 550 5.7.1 Our system has detected that this message is likely unsolicited mail. To
359
374
  # reduce the amount of spam sent to Gmail, this message has been blocked.
360
375
  # For more information, visit https://support.google.com/mail/answer/188131
361
376
  # - https://support.google.com/mail/?p=UnsolicitedMessageError
362
- ['550', '5.7.1', 'this message is likely unsolicited mail'],
377
+ ['550', '5.7.1', 'likely unsolicited mail'],
363
378
  ],
364
379
  'speeding' => [
365
380
  # - 450 4.2.1 The user you are trying to contact is receiving mail too quickly. Please
@@ -378,8 +393,8 @@ module Sisimai
378
393
  # later time. If the user is able to receive mail at that time, your message will be
379
394
  # delivered. For more information, visit https://support.google.com/mail/answer/6592
380
395
  # - https://support.google.com/mail/?p=ReceivingRatePerm
381
- ['450', '4.2.1', 'is receiving mail at a rate that prevents additional messages from being delivered'],
382
- ['550', '5.2.1', 'is receiving mail at a rate that prevents additional messages from being delivered'],
396
+ ['450', '4.2.1', 'rate that prevents additional messages from being delivered'],
397
+ ['550', '5.2.1', 'rate that prevents additional messages from being delivered'],
383
398
 
384
399
  # - 550 5.4.5 Daily SMTP relay limit exceeded for user. For more information on SMTP
385
400
  # relay sending limits please contact your administrator or visit SMTP relay service
@@ -396,17 +411,17 @@ module Sisimai
396
411
  'suspend' => [
397
412
  # - 550 5.2.1 The email account that you tried to reach is inactive.
398
413
  # For more information, go to https://support.google.com/mail/?p=DisabledUser
399
- ['550', '5.2.1', 'the email account that you tried to reach is disabled'],
400
- ['550', '5.2.1', 'the email account that you tried to reach is inactive'],
414
+ ['550', '5.2.1', 'account that you tried to reach is disabled'],
415
+ ['550', '5.2.1', 'account that you tried to reach is inactive'],
401
416
  ],
402
417
  'syntaxerror' => [
403
418
  # - 523 5.7.10 SMTP protocol violation, no commands allowed to pipeline after STARTTLS.
404
419
  # For more information, go to About SMTP error messages and review RFC 3207
405
420
  # specifications.
406
421
  ['451', '4.5.0', 'smtp protocol violation'],
407
- ['454', '4.5.0', 'smtp protocol violation, no commands allowed to pipeline after starttls'],
408
- ['525', '5.7.10', 'smtp protocol violation, no commands allowed to pipeline after starttls'],
409
- ['535', '5.5.4', 'optional argument not permitted for that auth mode'],
422
+ ['454', '4.5.0', 'smtp protocol violation'],
423
+ ['525', '5.7.10', 'smtp protocol violation'],
424
+ ['535', '5.5.4', 'optional argument not permitted'],
410
425
  ['454', '5.5.1', 'starttls may not be repeated'],
411
426
 
412
427
  # - 501 5.5.2 Syntax error, cannot decode response. For more information, go to About
@@ -455,6 +455,9 @@ module Sisimai
455
455
  # - This message usually indicates an issue on the destination email server. Check the
456
456
  # validity of the recipient address. Determine if the destination server is configur-
457
457
  # ed correctly to receive the messages.
458
+ ['4.4.317', 0, 0, 'starttls is required to send mail'],
459
+ ['5.4.317', 0, 0, 'starttls is required to send mail'],
460
+
458
461
  ['4.7.321', 0, 0, 'starttls-not-supported: destination mail server must support tls to receive mail'],
459
462
  ['5.7.321', 0, 0, 'starttls-not-supported: destination mail server must support tls to receive mail'],
460
463
 
@@ -599,6 +602,11 @@ module Sisimai
599
602
  ['4.4.25', 0, 0, 'message failed to be replicated: no healthy secondary server available to accept replica at this time.'],
600
603
  ['4.4.28', 0, 0, 'message failed to be replicated: the operation was canceled'],
601
604
 
605
+ # 550 5.4.318 Message expired, connection reset (SuspiciousRemoteServerError)
606
+ # 450 4.4.318 Connection was closed abruptly (SuspiciousRemoteServerError)
607
+ ['4.4.318', 0, 0, '(suspiciousremoteservererror)'],
608
+ ['5.4.318', 0, 0, '(suspiciousremoteservererror)'],
609
+
602
610
  # - status=deferred (host hotmail-com.olc.protection.outlook.com[192.0.2.1] said:
603
611
  # 451 4.7.500 Server busy. Please try again later from [192.0.2.2]. (AS761) (in reply
604
612
  # to RCPT TO command))
@@ -93,15 +93,15 @@ module Sisimai
93
93
  else
94
94
  # Rejected by other SMTP commands: AUTH, MAIL,
95
95
  # もしもこのブロックを通過するNTTドコモからのエラーメッセージを見つけたら
96
- # https://github.com/sisimai/p5-sisimai/issues からご連絡ねがいます。
96
+ # https://github.com/sisimai/rb-sisimai/issues からご連絡ねがいます。
97
97
  #
98
98
  # If you found a error message from mfsmax.docomo.ne.jp which passes this block,
99
- # please open an issue at https://github.com/sisimai/p5-sisimai/issues .
99
+ # please open an issue at https://github.com/sisimai/rb-sisimai/issues .
100
100
  end
101
101
  else
102
102
  # Status: field is neither 5.0.0 nor values defined in code above
103
103
  # もしもこのブロックを通過するNTTドコモからのエラーメッセージを見つけたら
104
- # https://github.com/sisimai/p5-sisimai/issues からご連絡ねがいます。
104
+ # https://github.com/sisimai/rb-sisimai/issues からご連絡ねがいます。
105
105
  #
106
106
  # If you found a error message from mfsmax.docomo.ne.jp which passes this block,
107
107
  #
@@ -1,4 +1,4 @@
1
1
  # Define the version number of Sisimai
2
2
  module Sisimai
3
- VERSION = '5.0.2'.freeze
3
+ VERSION = '5.0.3'.freeze
4
4
  end
@@ -0,0 +1,27 @@
1
+ Date: Thu, 2 May 2024 17:48:55 +0000 (UTC)
2
+ From: example@icloud.com
3
+ Reply-To: example@icloud.com
4
+ To: opt-out-100731.e75std53hz8rnmy4r@example.org
5
+ Message-ID: <898B6152-36BC-4F4B-ABF8-2694A88CB5FC@icloud.com>
6
+ Subject: unsubscribe
7
+ MIME-Version: 1.0
8
+ Content-Type: text/plain; charset=UTF-8
9
+ Content-Transfer-Encoding: quoted-printable
10
+ DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=icloud.com;
11
+ s=1a1hai; t=1714672136; bh=63IYtxpNtEan90vzJQT9iqnMeWHy9rlx8iFLnco1rRc=;
12
+ h=Content-Type:From:Mime-Version:Date:Subject:Message-Id:To;
13
+ b=AoovfvadwxCx8Pp5yD62kw1AcKMQV32RhSrBsyw4qLr/CVsQo1tIh+xCUPdI7So9i
14
+ paxzn20YdVvHuP3f8CxT/q3x9WaQV3NDAmbbQumYwOpJk7yNXRkuWNjIlt6isZM0tb
15
+ FK8v+Tq3j3Va83mZ6OeR8ZjvfY8ImjewEOTEZ79sNxToaaHvRuDWRbzt4uaktRuL44
16
+ j1wEjiKxgy6f7bOC2XJyRaf41BtCm4V6TGtcBF9hOEMzn6LulaLgashs3yGQ92wkb9
17
+ OLSy1uP0iA4nj/qAM+QaauAFzmqYmqa9r7rUFCjqf01q4gvn1QfO4QVqiRQXiMXc8e
18
+ QPSqskbSbsIQA==
19
+ X-Proofpoint-GUID: fiybgv3DewxSxApGH8GnpeSw3OZld4ll
20
+ Auto-Submitted: auto-replied
21
+ X-Apple-Unsubscribe: true
22
+ X-Proofpoint-ORIG-GUID: fiybgv3DewxSxApGH8GnpeSw3OZld4ll
23
+ X-Virus-Status: Clean
24
+
25
+ Apple Mail sent this email to unsubscribe from the message =E2=80=9Cunsubsc=
26
+ ribe=E2=80=9D.
27
+
@@ -0,0 +1,86 @@
1
+ Return-Path: <>
2
+ X-Original-To: neko@example.jp
3
+ Delivered-To: return@example.jp
4
+ Received: from relay1.example.ne.jp (ip-10-25-26-27.ip-block.example.net [10.25.26.27])
5
+ by mx1.example.jp (Postfix) with ESMTPS id KF65BTjb2jzpq4Pk
6
+ for <neko@example.jp>; Thu, 29 Apr 2024 23:34:45 +0900 (JST)
7
+ Received: from localhost (localhost)
8
+ by relay1.example.ne.jp (8.17.2/8.17.2) id gWjKPD2i071354;
9
+ Thu, 29 Apr 2024 23:34:45 +0900 (JST)
10
+ (envelope-from MAILER-DAEMON)
11
+ MIME-Version: 1.0
12
+ Date: Thu, 29 Apr 2024 23:34:45 +0900 (JST)
13
+ From: Mail Delivery Subsystem <MAILER-DAEMON@relay1.example.ne.jp>
14
+ To: <neko@example.jp>
15
+ Message-Id: <20240429233445.gWjKPD2i071354@relay1.example.ne.jp>
16
+ Content-Type: multipart/report; report-type=delivery-status;
17
+ boundary="gWjKPD2i071354.1423881060/relay1.example.ne.jp"
18
+ Subject: Returned mail: see transcript for details
19
+ Auto-Submitted: auto-generated (failure)
20
+
21
+ This is a MIME-encapsulated message
22
+
23
+ --gWjKPD2i071354.1423881060/relay1.example.ne.jp
24
+
25
+ The original message was received at Thu, 29 Apr 2024 23:34:45 +0900 (JST)
26
+ from localhost [127.0.0.1]
27
+
28
+ ----- The following addresses had permanent fatal errors -----
29
+ <pseudo-local-part-of-microsoft@outlook.com>
30
+ (reason: 550 5.7.509 Access denied, sending domain [EXAMPLE.JP] does not pass DMARC verification and has a D...E22] [JUTN0NNV051736.eop-eur22.prod.protection.outlook.com 2024-04-29T23:34:45.000Z K2TP4MV8R6ZF2XN2])
31
+
32
+ ----- Transcript of session follows -----
33
+ ... while talking to apc.olc.protection.outlook.com.:
34
+ >>> DATA
35
+ <<< 550 5.7.509 Access denied, sending domain [EXAMPLE.JP] does not pass DMARC verification and has a DMARC policy of reject. [7FQL1BDY0XZ5XGTW.JPNP222.PROD.OUTLOOK.COM 2024-04-29T23:34:45.000Z NG5X6YLY2QZK8T7B] [VB0JMRQKNLZPTQMN.eurprd06.prod.outlook.com 2024-04-29T23:34:45.000Z HTTZYWCWHTZK8F8N] [JUTN0NNV051736.eop-eur22.prod.protection.outlook.com 2024-04-29T23:34:45.000Z K2TP4MV8R6ZF2XN2]
36
+ 554 5.0.0 Service unavailable
37
+
38
+ --gWjKPD2i071354.1423881060/relay1.example.ne.jp
39
+ Content-Type: message/delivery-status
40
+
41
+ Reporting-MTA: dns; relay1.example.ne.jp
42
+ Received-From-MTA: DNS; localhost
43
+ Arrival-Date: Thu, 29 Apr 2024 23:34:45 +0900 (JST)
44
+
45
+ Final-Recipient: RFC822; pseudo-local-part-of-microsoft@outlook.com
46
+ X-Actual-Recipient: rfc822; pseudo-local-part-of-microsoft@outlook.com
47
+ Action: failed
48
+ Status: 5.7.509
49
+ Remote-MTA: DNS; apc.olc.protection.outlook.com
50
+ Diagnostic-Code: SMTP; 550 5.7.509 Access denied, sending domain [EXAMPLE.JP] does not pass DMARC verification and has a DMARC policy of reject. [7FQL1BDY0XZ5XGTW.JPNP222.PROD.OUTLOOK.COM 2024-04-29T23:34:45.000Z NG5X6YLY2QZK8T7B] [VB0JMRQKNLZPTQMN.eurprd06.prod.outlook.com 2024-04-29T23:34:45.000Z HTTZYWCWHTZK8F8N] [JUTN0NNV051736.eop-eur22.prod.protection.outlook.com 2024-04-29T23:34:45.000Z K2TP4MV8R6ZF2XN2]
51
+ Last-Attempt-Date: Thu, 29 Apr 2024 23:34:45 +0900 (JST)
52
+
53
+ --gWjKPD2i071354.1423881060/relay1.example.ne.jp
54
+ Content-Type: message/rfc822
55
+
56
+ Return-Path: <neko@example.jp>
57
+ Received: from relay1.example.ne.jp (localhost [127.0.0.1])
58
+ by relay1.example.ne.jp (8.17.2/8.17.2) with ESMTP id YQKNBhqe049695
59
+ for <pseudo-local-part-of-microsoft@outlook.com>; Thu, 29 Apr 2024 23:34:45 +0900 (JST)
60
+ (envelope-from neko@example.jp)
61
+ Received: (from neko-nyaan-cat@localhost)
62
+ by relay1.example.ne.jp (8.17.2/8.17.2/Submit) id J05hAdU8018709
63
+ for pseudo-local-part-of-microsoft@outlook.com; Thu, 29 Apr 2024 23:34:45 +0900 (JST)
64
+ (envelope-from neko@example.jp)
65
+ Received: from relay0.example.jp (relay0.example.jp [192.0.2.25])
66
+ by relay1.example.ne.jp (8.17.2/8.17.2) with ESMTPS id Ufhljuhn061193
67
+ (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO)
68
+ for <kijitora@example.co.jp>; Thu, 29 Apr 2024 23:34:45 +0900 (JST)
69
+ (envelope-from neko@example.jp)
70
+ Received: from MTA1 (unknown [10.9.8.7])
71
+ by relay0.example.jp (Postfix) with ESMTP id Mgt61KRzl7zjTNcc
72
+ for <kijitora@example.co.jp>; Thu, 29 Apr 2024 23:34:45 +0900 (JST)
73
+ From: <neko@example.jp>
74
+ To: "Kijitora, Cat" <kijitora@example.co.jp>
75
+ Reply-To: sironeko@cat.example.org
76
+ Date: 29 Apr 2024 23:34:45 +0900
77
+ Subject: Nyaaaaan
78
+ MIME-Version: 1.0
79
+ Content-Type: text/plain; charset=iso-2022-jp
80
+ Message-Id: <Mgt61KRzl7zjTNcc@relay0.example.jp>
81
+ Content-Transfer-Encoding: 8bit
82
+
83
+ Nyaan?
84
+
85
+ --gWjKPD2i071354.1423881060/relay1.example.ne.jp--
86
+
@@ -0,0 +1,83 @@
1
+ Return-Path: <>
2
+ X-Original-To: kijitora@example.jp
3
+ Delivered-To: return@example.jp
4
+ Received: from relay0.example.jp (relay0 [10.25.26.27])
5
+ by relay1.example.jp (Postfix) with ESMTPS id nhpzScP2kkzDgQ8L
6
+ for <kijitora@example.jp>; Thu, 9 May 2024 23:34:45 +0900 (JST)
7
+ Received: by relay0.example.jp (Postfix)
8
+ id 9ltCcYNCJ4zblqrq; Thu, 9 May 2024 23:34:45 +0900 (JST)
9
+ Date: Thu, 9 May 2024 23:34:45 +0900 (JST)
10
+ From: MAILER-DAEMON@relay0.example.jp (Mail Delivery System)
11
+ To: kijitora@example.jp
12
+ Subject: Undelivered Mail Returned to Sender
13
+ Message-Id: <9ltCcYNCJ4zblqrq@relay0.example.jp>
14
+ Auto-Submitted: auto-replied
15
+ MIME-Version: 1.0
16
+ Content-Type: multipart/report; report-type=delivery-status;
17
+ boundary="WpZGzDpcy1zw5NGv.1098352336/relay0.example.jp"
18
+
19
+ This is a MIME-encapsulated message.
20
+
21
+ --WpZGzDpcy1zw5NGv.1098352336/relay0.example.jp
22
+ Content-Description: Notification
23
+ Content-Type: text/plain; charset=us-ascii
24
+
25
+ This is the mail system at host relay0.example.jp.
26
+
27
+ I'm sorry to have to inform you that your message could not
28
+ be delivered to one or more recipients. It's attached below.
29
+
30
+ For further assistance, please send mail to postmaster.
31
+
32
+ If you do so, please include this problem report. You can
33
+ delete your own text from the attached returned message.
34
+
35
+ The mail system
36
+
37
+ <pseudo-local-part-of-microsoft@outlook.com>: host
38
+ outlook-com.olc.protection.outlook.com[52.101.68.1] said: 451 4.7.650 The
39
+ mail server [192.0.2.25] has been temporarily rate limited due to IP
40
+ reputation. For e-mail delivery information, see
41
+ https://postmaster.live.com (S3113)
42
+ [5NY1SSJFSTZJRJBG.eurprd02.prod.outlook.com 2024-05-09T23:34:45.000Z
43
+ GLXTWVLGZHZNHVXY] (in reply to MAIL FROM command)
44
+
45
+ --WpZGzDpcy1zw5NGv.1098352336/relay0.example.jp
46
+ Content-Description: Delivery report
47
+ Content-Type: message/delivery-status
48
+
49
+ Reporting-MTA: dns; relay0.example.jp
50
+ X-Postfix-Queue-ID: WpZGzDpcy1zw5NGv
51
+ X-Postfix-Sender: rfc822; kijitora@example.jp
52
+ Arrival-Date: Thu, 9 May 2024 23:34:45 +0900 (JST)
53
+
54
+ Final-Recipient: rfc822; pseudo-local-part-of-microsoft@outlook.com
55
+ Original-Recipient: rfc822;pseudo-local-part-of-microsoft@outlook.com
56
+ Action: failed
57
+ Status: 4.7.650
58
+ Remote-MTA: dns; outlook-com.olc.protection.outlook.com
59
+ Diagnostic-Code: smtp; 451 4.7.650 The mail server [192.0.2.25] has been
60
+ temporarily rate limited due to IP reputation. For e-mail delivery
61
+ information, see https://postmaster.live.com (S3113)
62
+ [5NY1SSJFSTZJRJBG.eurprd02.prod.outlook.com 2024-05-09T23:34:45.000Z
63
+ GLXTWVLGZHZNHVXY]
64
+
65
+ --WpZGzDpcy1zw5NGv.1098352336/relay0.example.jp
66
+ Content-Description: Undelivered Message
67
+ Content-Type: message/rfc822
68
+
69
+ Return-Path: <kijitora@example.jp>
70
+ Received: from mailhub1.example.jp (unknown [10.9.8.7])
71
+ by relay0.example.jp (Postfix) with ESMTP id WpZGzDpcy1zw5NGv
72
+ for <pseudo-local-part-of-microsoft@outlook.com>; Thu, 9 May 2024 23:34:45 +0900 (JST)
73
+ From: <kijitora@example.jp>
74
+ To: <pseudo-local-part-of-microsoft@outlook.com>
75
+ Date: 9 May 2024 23:34:45 +0900
76
+ Message-Id: <WpZGzDpcy1zw5NGv@relay0.example.jp>
77
+ Subject: Nyaan
78
+ MIME-Version: 1.0
79
+ Content-Type: text/plain; charset=iso-2022-jp
80
+
81
+ Nyaan?
82
+
83
+ --WpZGzDpcy1zw5NGv.1098352336/relay0.example.jp--
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: 5.0.2
4
+ version: 5.0.3
5
5
  platform: java
6
6
  authors:
7
7
  - azumakuniyuki
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-03-13 00:00:00.000000000 Z
11
+ date: 2024-05-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -80,10 +80,10 @@ executables: []
80
80
  extensions: []
81
81
  extra_rdoc_files: []
82
82
  files:
83
+ - ".github/workflows/codecovio.yml"
83
84
  - ".github/workflows/rake-test.yml"
84
85
  - ".gitignore"
85
86
  - ".rubocop.yml"
86
- - ".travis.yml"
87
87
  - ANALYTICAL-PRECISION
88
88
  - Benchmarks.mk
89
89
  - CONTRIBUTING
@@ -251,6 +251,7 @@ files:
251
251
  - set-of-emails/maildir/bsd/arf-23.eml
252
252
  - set-of-emails/maildir/bsd/arf-24.eml
253
253
  - set-of-emails/maildir/bsd/arf-25.eml
254
+ - set-of-emails/maildir/bsd/arf-26.eml
254
255
  - set-of-emails/maildir/bsd/lhost-activehunter-01.eml
255
256
  - set-of-emails/maildir/bsd/lhost-activehunter-02.eml
256
257
  - set-of-emails/maildir/bsd/lhost-amavis-01.eml
@@ -752,6 +753,8 @@ files:
752
753
  - set-of-emails/maildir/bsd/rhost-microsoft-01.eml
753
754
  - set-of-emails/maildir/bsd/rhost-microsoft-02.eml
754
755
  - set-of-emails/maildir/bsd/rhost-microsoft-03.eml
756
+ - set-of-emails/maildir/bsd/rhost-microsoft-04.eml
757
+ - set-of-emails/maildir/bsd/rhost-microsoft-05.eml
755
758
  - set-of-emails/maildir/bsd/rhost-mimecast-01.eml
756
759
  - set-of-emails/maildir/bsd/rhost-mimecast-02.eml
757
760
  - set-of-emails/maildir/bsd/rhost-nttdocomo-01.eml
data/.travis.yml DELETED
@@ -1,23 +0,0 @@
1
- language: ruby
2
- rvm:
3
- # See http://rubies.travis-ci.org for Precompiled Ruby Versions
4
- # - 2.1.1
5
- # - 2.2.10
6
- # - 2.3.0
7
- - 2.4.9
8
- # - 2.5.0
9
- - 2.6.6
10
- - 2.7.0
11
- # - jruby-9.0.5.0
12
- # - jruby-9.1.9.0
13
- before_install:
14
- script:
15
- - make user-test
16
- sudo: false
17
- notifications:
18
- recipients:
19
- - azumakuniyuki+travis-ci.org@gmail.com
20
- email:
21
- on_success: change
22
- on_failure: always
23
-