truemail 1.8.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.circleci/config.yml +1 -1
- data/.codeclimate.yml +1 -1
- data/.github/ISSUE_TEMPLATE.md +3 -3
- data/.github/PULL_REQUEST_TEMPLATE.md +1 -1
- data/.reek.yml +4 -0
- data/.rubocop.yml +186 -6
- data/CHANGELOG.md +118 -31
- data/Gemfile.lock +47 -41
- data/LICENSE.txt +1 -1
- data/README.md +143 -103
- data/lib/truemail.rb +9 -2
- data/lib/truemail/audit/dns.rb +1 -1
- data/lib/truemail/audit/ptr.rb +2 -2
- data/lib/truemail/auditor.rb +5 -3
- data/lib/truemail/configuration.rb +8 -2
- data/lib/truemail/core.rb +8 -4
- data/lib/truemail/executor.rb +11 -0
- data/lib/truemail/log/serializer/auditor_json.rb +25 -0
- data/lib/truemail/log/serializer/base.rb +17 -42
- data/lib/truemail/log/serializer/validator_base.rb +45 -0
- data/lib/truemail/log/serializer/{json.rb → validator_json.rb} +1 -1
- data/lib/truemail/log/serializer/{text.rb → validator_text.rb} +2 -2
- data/lib/truemail/logger.rb +1 -1
- data/lib/truemail/validate/smtp/request.rb +2 -3
- data/lib/truemail/validator.rb +4 -4
- data/lib/truemail/version.rb +1 -1
- data/truemail.gemspec +17 -9
- metadata +42 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: df5c336052c203a93e507bc6ab7780dce97ee2fce675802970c3833ebb9dc67d
|
4
|
+
data.tar.gz: fe656f4cfdbf3b5ac2553b564949d571b9acfb3b4966b4b1e92e54e4dc944424
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 00f45a13fb66496f3cac30f4be31c9894aa1f825e7038605cafadbbb790323774a448cf962dad39331c59f883edc2660028e44ea5b0a69ecfcde2ca961d5eb14
|
7
|
+
data.tar.gz: 20a6a83a217a2f727060db14ba98eb68ba232394f95a2cc2c1eb8f51ca1a67ee9600035959f4c2aaf30ac71edecea0dd16f815652d35526a3e125ca1e940bbe9
|
data/.circleci/config.yml
CHANGED
@@ -3,7 +3,7 @@ defaults: &defaults
|
|
3
3
|
docker:
|
4
4
|
- image: circleci/ruby:2.5.0-node
|
5
5
|
environment:
|
6
|
-
CC_TEST_REPORTER_ID:
|
6
|
+
CC_TEST_REPORTER_ID: 693272a1328521f6f7c09d7ffd419b21c00410da26e98e94c687fdd38b26e2cb
|
7
7
|
|
8
8
|
references:
|
9
9
|
restore_bundle_cache: &restore_bundle_cache
|
data/.codeclimate.yml
CHANGED
data/.github/ISSUE_TEMPLATE.md
CHANGED
@@ -3,9 +3,9 @@
|
|
3
3
|
### New Issue Checklist
|
4
4
|
|
5
5
|
- [ ] I have updated truemail to the latest version
|
6
|
-
- [ ] I have read the [Contribution Guidelines](https://github.com/
|
7
|
-
- [ ] I have read the [documentation](https://
|
8
|
-
- [ ] I have searched for [existing GitHub issues](https://github.com/
|
6
|
+
- [ ] I have read the [Contribution Guidelines](https://github.com/truemail-rb/truemail/blob/master/CONTRIBUTING.md)
|
7
|
+
- [ ] I have read the [documentation](https://truemail-rb.org/truemail-gem)
|
8
|
+
- [ ] I have searched for [existing GitHub issues](https://github.com/truemail-rb/truemail/issues)
|
9
9
|
|
10
10
|
### Issue Description
|
11
11
|
<!-- Please include what's happening, expected behavior, and any relevant code samples -->
|
@@ -40,7 +40,7 @@
|
|
40
40
|
- [ ] My code follows the code style of this project
|
41
41
|
- [ ] My change requires a change to the documentation
|
42
42
|
- [ ] I have updated the documentation accordingly
|
43
|
-
- [ ] I have read the [**CONTRIBUTING** document](https://github.com/
|
43
|
+
- [ ] I have read the [**CONTRIBUTING** document](https://github.com/truemail-rb/truemail/blob/master/CONTRIBUTING.md)
|
44
44
|
- [ ] I have added tests to cover my changes
|
45
45
|
- [ ] I have run `bundle exec rspec` from the root directory to see all new and existing tests pass
|
46
46
|
- [ ] I have run `rubocop` and `reek` to ensure the code style is valid
|
data/.reek.yml
CHANGED
@@ -39,6 +39,8 @@ detectors:
|
|
39
39
|
- Truemail::Validate::Mx#a_record
|
40
40
|
- Truemail::Audit::Base#verifier_domain
|
41
41
|
- Truemail::Configuration#domain_matcher
|
42
|
+
- Truemail::Configuration#logger_options
|
43
|
+
- Truemail::Log::Serializer::Base#errors
|
42
44
|
|
43
45
|
ControlParameter:
|
44
46
|
exclude:
|
@@ -55,6 +57,8 @@ detectors:
|
|
55
57
|
- Truemail::ConfigurationHelper#create_configuration
|
56
58
|
- Truemail::Log::Serializer::Base#smtp_debug
|
57
59
|
- Truemail::Log::Serializer::Text#data_composer
|
60
|
+
- Truemail::Log::Serializer::ValidatorBase#smtp_debug
|
61
|
+
- Truemail::Log::Serializer::ValidatorText#data_composer
|
58
62
|
|
59
63
|
NilCheck:
|
60
64
|
exclude:
|
data/.rubocop.yml
CHANGED
@@ -40,6 +40,84 @@ Style/EmptyCaseCondition:
|
|
40
40
|
Style/RescueStandardError:
|
41
41
|
Enabled: false
|
42
42
|
|
43
|
+
Style/AccessorGrouping:
|
44
|
+
Enabled: true
|
45
|
+
|
46
|
+
Style/ArrayCoercion:
|
47
|
+
Enabled: true
|
48
|
+
|
49
|
+
Style/BisectedAttrAccessor:
|
50
|
+
Enabled: true
|
51
|
+
|
52
|
+
Style/CaseLikeIf:
|
53
|
+
Enabled: true
|
54
|
+
|
55
|
+
Style/ExplicitBlockArgument:
|
56
|
+
Enabled: true
|
57
|
+
|
58
|
+
Style/ExponentialNotation:
|
59
|
+
Enabled: true
|
60
|
+
|
61
|
+
Style/GlobalStdStream:
|
62
|
+
Enabled: true
|
63
|
+
|
64
|
+
Style/HashAsLastArrayItem:
|
65
|
+
Enabled: true
|
66
|
+
|
67
|
+
Style/HashEachMethods:
|
68
|
+
Enabled: true
|
69
|
+
|
70
|
+
Style/HashLikeCase:
|
71
|
+
Enabled: true
|
72
|
+
|
73
|
+
Style/HashTransformKeys:
|
74
|
+
Enabled: true
|
75
|
+
|
76
|
+
Style/HashTransformValues:
|
77
|
+
Enabled: true
|
78
|
+
|
79
|
+
Style/OptionalBooleanParameter:
|
80
|
+
Enabled: true
|
81
|
+
|
82
|
+
Style/RedundantAssignment:
|
83
|
+
Enabled: true
|
84
|
+
|
85
|
+
Style/RedundantFetchBlock:
|
86
|
+
Enabled: true
|
87
|
+
|
88
|
+
Style/RedundantFileExtensionInRequire:
|
89
|
+
Enabled: true
|
90
|
+
|
91
|
+
Style/RedundantRegexpCharacterClass:
|
92
|
+
Enabled: true
|
93
|
+
|
94
|
+
Style/RedundantRegexpEscape:
|
95
|
+
Enabled: true
|
96
|
+
|
97
|
+
Style/SingleArgumentDig:
|
98
|
+
Enabled: true
|
99
|
+
|
100
|
+
Style/SlicingWithRange:
|
101
|
+
Enabled: true
|
102
|
+
|
103
|
+
Style/StringConcatenation:
|
104
|
+
Enabled: true
|
105
|
+
|
106
|
+
Style/CombinableLoops:
|
107
|
+
Enabled: true
|
108
|
+
|
109
|
+
Style/KeywordParametersOrder:
|
110
|
+
Enabled: true
|
111
|
+
|
112
|
+
Style/RedundantSelfAssignment:
|
113
|
+
Enabled: true
|
114
|
+
|
115
|
+
Style/SoleNestedConditional:
|
116
|
+
Enabled: true
|
117
|
+
|
118
|
+
Style/ClassEqualityComparison:
|
119
|
+
Enabled: true
|
120
|
+
|
43
121
|
Layout/LineLength:
|
44
122
|
Max: 140
|
45
123
|
|
@@ -50,15 +128,9 @@ Layout/ClassStructure:
|
|
50
128
|
- include
|
51
129
|
- prepend
|
52
130
|
- extend
|
53
|
-
associations:
|
54
|
-
- has_one
|
55
|
-
- has_many
|
56
|
-
- belongs_to
|
57
|
-
- has_and_belongs_to_many
|
58
131
|
ExpectedOrder:
|
59
132
|
- module_inclusion
|
60
133
|
- constants
|
61
|
-
- associations
|
62
134
|
- public_class_methods
|
63
135
|
- initializer
|
64
136
|
- public_methods
|
@@ -68,9 +140,114 @@ Layout/ClassStructure:
|
|
68
140
|
Layout/EmptyLineAfterGuardClause:
|
69
141
|
Enabled: false
|
70
142
|
|
143
|
+
Layout/SpaceAroundMethodCallOperator:
|
144
|
+
Enabled: true
|
145
|
+
|
146
|
+
Layout/EmptyLinesAroundAttributeAccessor:
|
147
|
+
Enabled: true
|
148
|
+
|
149
|
+
Layout/BeginEndAlignment:
|
150
|
+
Enabled: true
|
151
|
+
|
71
152
|
Lint/NonDeterministicRequireOrder:
|
72
153
|
Enabled: false
|
73
154
|
|
155
|
+
Lint/BinaryOperatorWithIdenticalOperands:
|
156
|
+
Enabled: true
|
157
|
+
|
158
|
+
Lint/DeprecatedOpenSSLConstant:
|
159
|
+
Enabled: true
|
160
|
+
|
161
|
+
Lint/DuplicateElsifCondition:
|
162
|
+
Enabled: true
|
163
|
+
|
164
|
+
Lint/DuplicateRescueException:
|
165
|
+
Enabled: true
|
166
|
+
|
167
|
+
Lint/EmptyConditionalBody:
|
168
|
+
Enabled: true
|
169
|
+
|
170
|
+
Lint/FloatComparison:
|
171
|
+
Enabled: true
|
172
|
+
|
173
|
+
Lint/MissingSuper:
|
174
|
+
Enabled: false
|
175
|
+
|
176
|
+
Lint/MixedRegexpCaptureTypes:
|
177
|
+
Enabled: true
|
178
|
+
|
179
|
+
Lint/OutOfRangeRegexpRef:
|
180
|
+
Enabled: true
|
181
|
+
|
182
|
+
Lint/RaiseException:
|
183
|
+
Enabled: true
|
184
|
+
|
185
|
+
Lint/SelfAssignment:
|
186
|
+
Enabled: true
|
187
|
+
|
188
|
+
Lint/StructNewOverride:
|
189
|
+
Enabled: true
|
190
|
+
|
191
|
+
Lint/TopLevelReturnWithArgument:
|
192
|
+
Enabled: true
|
193
|
+
|
194
|
+
Lint/UnreachableLoop:
|
195
|
+
Enabled: true
|
196
|
+
|
197
|
+
Lint/ConstantDefinitionInBlock:
|
198
|
+
Enabled: true
|
199
|
+
|
200
|
+
Lint/DuplicateRequire:
|
201
|
+
Enabled: true
|
202
|
+
|
203
|
+
Lint/EmptyFile:
|
204
|
+
Enabled: true
|
205
|
+
|
206
|
+
Lint/IdentityComparison:
|
207
|
+
Enabled: true
|
208
|
+
|
209
|
+
Lint/TrailingCommaInAttributeDeclaration:
|
210
|
+
Enabled: true
|
211
|
+
|
212
|
+
Lint/UselessMethodDefinition:
|
213
|
+
Enabled: true
|
214
|
+
|
215
|
+
Lint/UselessTimes:
|
216
|
+
Enabled: true
|
217
|
+
|
218
|
+
Lint/HashCompareByIdentity:
|
219
|
+
Enabled: true
|
220
|
+
|
221
|
+
Lint/RedundantSafeNavigation:
|
222
|
+
Enabled: true
|
223
|
+
|
224
|
+
Performance/AncestorsInclude:
|
225
|
+
Enabled: true
|
226
|
+
|
227
|
+
Performance/BigDecimalWithNumericArgument:
|
228
|
+
Enabled: true
|
229
|
+
|
230
|
+
Performance/RedundantSortBlock:
|
231
|
+
Enabled: true
|
232
|
+
|
233
|
+
Performance/RedundantStringChars:
|
234
|
+
Enabled: true
|
235
|
+
|
236
|
+
Performance/ReverseFirst:
|
237
|
+
Enabled: true
|
238
|
+
|
239
|
+
Performance/SortReverse:
|
240
|
+
Enabled: true
|
241
|
+
|
242
|
+
Performance/Squeeze:
|
243
|
+
Enabled: true
|
244
|
+
|
245
|
+
Performance/StringInclude:
|
246
|
+
Enabled: true
|
247
|
+
|
248
|
+
Performance/Sum:
|
249
|
+
Enabled: true
|
250
|
+
|
74
251
|
RSpec/ExampleLength:
|
75
252
|
Enabled: false
|
76
253
|
|
@@ -94,3 +271,6 @@ RSpec/MessageSpies:
|
|
94
271
|
|
95
272
|
RSpec/MultipleDescribes:
|
96
273
|
Enabled: false
|
274
|
+
|
275
|
+
RSpec/MultipleMemoizedHelpers:
|
276
|
+
Enabled: false
|
data/CHANGELOG.md
CHANGED
@@ -2,9 +2,98 @@
|
|
2
2
|
|
3
3
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
4
4
|
|
5
|
+
## [2.0.1] - 2020.10.20
|
6
|
+
|
7
|
+
### Changed
|
8
|
+
|
9
|
+
- gem development dependencies
|
10
|
+
- gem documentation
|
11
|
+
|
12
|
+
## [2.0.0] - 2020.10.19
|
13
|
+
|
14
|
+
### Fixed
|
15
|
+
|
16
|
+
SMTP connection errors: invalid `HELO` hostname (`localhost`), duplicate `HELO` (`verifier domain`).
|
17
|
+
|
18
|
+
### Changed
|
19
|
+
|
20
|
+
- Updated `Truemail::Validate::Smtp::Request#run`
|
21
|
+
- Updated `Truemail::Validate::Smtp::Request#session_data`
|
22
|
+
- Updated `Truemail::Validate::Smtp::Response`
|
23
|
+
|
24
|
+
Now `helo` is a `Boolean` instead of `Net::SMTP::Response` instance. It was changed because `helo` is sending during SMTP-session initializing (`Net::SMTP.new.start`), and `helo` is always `true` if session up is okay. Also `hello` response won't logged as error if it happens. Example of `Truemail::Validate::Smtp::Response` instance from 2.x version.
|
25
|
+
|
26
|
+
```ruby
|
27
|
+
#<struct Truemail::Validate::Smtp::Response:0x00007fa74704cd10
|
28
|
+
port_opened=true,
|
29
|
+
connection=true,
|
30
|
+
helo=true, # Returns Boolean instead of Net::SMTP::Response instance
|
31
|
+
mailfrom=false,
|
32
|
+
rcptto=nil,
|
33
|
+
errors={:mailfrom=>"server response timeout"}>
|
34
|
+
```
|
35
|
+
|
36
|
+
## [1.9.2] - 2020.10.02
|
37
|
+
|
38
|
+
### Added
|
39
|
+
|
40
|
+
- `Truemail::TypeError`
|
41
|
+
- error handling for invalid types as input email
|
42
|
+
|
43
|
+
### Changed
|
44
|
+
|
45
|
+
- Updated `Truemail.validate`
|
46
|
+
- Updated `Truemail.valid?`
|
47
|
+
|
48
|
+
## [1.9.1] - 2020.09.21
|
49
|
+
|
50
|
+
### Changed
|
51
|
+
|
52
|
+
Migrated to updated Ruby 2.7.x syntax.
|
53
|
+
|
54
|
+
- Updated `Truemail::Configuration#logger=`
|
55
|
+
|
56
|
+
## [1.9.0] - 2020.09.01
|
57
|
+
|
58
|
+
### Added
|
59
|
+
|
60
|
+
- Ability to use `Truemail::Auditor` instance represented as json directly
|
61
|
+
- `Truemail::Log::Serializer::AuditorJson`
|
62
|
+
|
63
|
+
### Changed
|
64
|
+
|
65
|
+
- `Truemail::Auditor`, `Truemail::Validator`
|
66
|
+
- serializers namespaces
|
67
|
+
- gem development dependencies
|
68
|
+
- gem documentation
|
69
|
+
|
70
|
+
```ruby
|
71
|
+
Truemail.host_audit.as_json
|
72
|
+
|
73
|
+
=>
|
74
|
+
# Serialized Truemail::Auditor instance
|
75
|
+
{
|
76
|
+
"date": "2020-08-31 22:33:43 +0300",
|
77
|
+
"current_host_ip": "127.0.0.1",
|
78
|
+
"warnings": {
|
79
|
+
"dns": "A-record of verifier domain not refers to current host ip address", "ptr": "PTR-record does not reference to current verifier domain"
|
80
|
+
},
|
81
|
+
"configuration": {
|
82
|
+
"validation_type_by_domain": null,
|
83
|
+
"whitelist_validation": false,
|
84
|
+
"whitelisted_domains": null,
|
85
|
+
"blacklisted_domains": null,
|
86
|
+
"not_rfc_mx_lookup_flow": false,
|
87
|
+
"smtp_safe_check": false,
|
88
|
+
"email_pattern": "default gem value",
|
89
|
+
"smtp_error_body_pattern": "default gem value"
|
90
|
+
}
|
91
|
+
}
|
92
|
+
```
|
93
|
+
|
5
94
|
## [1.8.0] - 2020.06.21
|
6
95
|
|
7
|
-
|
96
|
+
### Added
|
8
97
|
|
9
98
|
Separated audit features for verifier host.
|
10
99
|
|
@@ -51,7 +140,7 @@ Truemail.host_audit
|
|
51
140
|
|
52
141
|
## [1.7.1] - 2020.05.10
|
53
142
|
|
54
|
-
|
143
|
+
### Added
|
55
144
|
|
56
145
|
- Ability to show `not_rfc_mx_lookup_flow` attribute in serialized validation result
|
57
146
|
|
@@ -99,7 +188,7 @@ Truemail.validate('nonexistent_email@bestweb.com.ua').as_json
|
|
99
188
|
|
100
189
|
## [1.7.0] - 2020.05.09
|
101
190
|
|
102
|
-
|
191
|
+
### Added
|
103
192
|
|
104
193
|
- Ability to use not RFC MX lookup flow (MX and Null MX records will be checked on the DNS validation layer only)
|
105
194
|
|
@@ -139,7 +228,7 @@ end
|
|
139
228
|
|
140
229
|
### Added
|
141
230
|
|
142
|
-
-
|
231
|
+
- Ability to use `Truemail::Validator` instance represented as json directly
|
143
232
|
|
144
233
|
### Changed
|
145
234
|
|
@@ -297,6 +386,7 @@ Truemail.validate('email@white-domain.com', with: :regex)
|
|
297
386
|
smtp_debug=nil>,
|
298
387
|
@validation_type=:regex>
|
299
388
|
```
|
389
|
+
|
300
390
|
**Email hasn't whitelisted domain**
|
301
391
|
|
302
392
|
```ruby
|
@@ -322,9 +412,9 @@ Truemail.validate('email@domain.com', with: :regex)
|
|
322
412
|
|
323
413
|
### Added
|
324
414
|
|
325
|
-
- Configurable default validation type, [issue details](https://github.com/
|
415
|
+
- Configurable default validation type, [issue details](https://github.com/truemail-rb/truemail/issues/48)
|
326
416
|
|
327
|
-
You can predefine default validation type for
|
417
|
+
You can predefine default validation type for `Truemail.validate('email@email.com')` call without with-parameter. Available validation types: `:regex`, `:mx`, `:smtp`. By default validation type still remains `:smtp`
|
328
418
|
|
329
419
|
```ruby
|
330
420
|
Truemail.configure do |config|
|
@@ -379,7 +469,7 @@ Truemail.validate('email@black-domain.com')
|
|
379
469
|
|
380
470
|
### Added
|
381
471
|
|
382
|
-
- Feature domain whitelist blacklist. Other validations will not processed even if it was defined in
|
472
|
+
- Feature domain whitelist blacklist. Other validations will not processed even if it was defined in `validation_type_for`.
|
383
473
|
|
384
474
|
```ruby
|
385
475
|
Truemail.configure do |config|
|
@@ -402,7 +492,7 @@ Truemail.configuration.blacklisted_domains = ['somedomain1.com', 'somedomain2.co
|
|
402
492
|
|
403
493
|
### Removed
|
404
494
|
|
405
|
-
-
|
495
|
+
- `:skip` validation type for `validation_type_for`
|
406
496
|
|
407
497
|
### Fixed
|
408
498
|
|
@@ -417,7 +507,7 @@ Truemail.configuration.blacklisted_domains = ['somedomain1.com', 'somedomain2.co
|
|
417
507
|
|
418
508
|
### Added
|
419
509
|
|
420
|
-
- skip validation by domain for validation_type_for configuration option:
|
510
|
+
- skip validation by domain for `validation_type_for` configuration option:
|
421
511
|
|
422
512
|
```ruby
|
423
513
|
Truemail.configure do |config|
|
@@ -440,7 +530,7 @@ Truemail.configuration.validation_type_for = { 'somedomain.com' => :skip }
|
|
440
530
|
|
441
531
|
### Added
|
442
532
|
|
443
|
-
- SMTP error body configurable option, [issue details](https://github.com/
|
533
|
+
- SMTP error body configurable option, [issue details](https://github.com/truemail-rb/truemail/issues/19)
|
444
534
|
|
445
535
|
### Changed
|
446
536
|
|
@@ -457,11 +547,11 @@ Truemail.configuration.validation_type_for = { 'somedomain.com' => :skip }
|
|
457
547
|
|
458
548
|
### Added
|
459
549
|
|
460
|
-
- Reverse trace, [issue details](https://github.com/
|
550
|
+
- Reverse trace, [issue details](https://github.com/truemail-rb/truemail/issues/18)
|
461
551
|
|
462
552
|
### Fixed
|
463
553
|
|
464
|
-
- Behaviour of current host address resolver, [issue details](https://github.com/
|
554
|
+
- Behaviour of current host address resolver, [issue details](https://github.com/truemail-rb/truemail/issues/18)
|
465
555
|
|
466
556
|
### Changed
|
467
557
|
|
@@ -472,7 +562,7 @@ Truemail.configuration.validation_type_for = { 'somedomain.com' => :skip }
|
|
472
562
|
|
473
563
|
### Added
|
474
564
|
|
475
|
-
- PTR record audit, [issue details](https://github.com/
|
565
|
+
- PTR record audit, [issue details](https://github.com/truemail-rb/truemail/issues/18)
|
476
566
|
|
477
567
|
### Changed
|
478
568
|
|
@@ -483,12 +573,12 @@ Truemail.configuration.validation_type_for = { 'somedomain.com' => :skip }
|
|
483
573
|
|
484
574
|
### Added
|
485
575
|
|
486
|
-
- MX gem logic with [RFC 7505](https://tools.ietf.org/html/rfc7505), null MX record supporting, [issue details](https://github.com/
|
576
|
+
- MX gem logic with [RFC 7505](https://tools.ietf.org/html/rfc7505), null MX record supporting, [issue details](https://github.com/truemail-rb/truemail/issues/27)
|
487
577
|
- [Contributing guideline](CONTRIBUTING.md)
|
488
578
|
|
489
579
|
### Fixed
|
490
580
|
|
491
|
-
- Multihomed MX records supporting, [issue details](https://github.com/
|
581
|
+
- Multihomed MX records supporting, [issue details](https://github.com/truemail-rb/truemail/issues/28)
|
492
582
|
|
493
583
|
### Changed
|
494
584
|
|
@@ -499,11 +589,11 @@ Truemail.configuration.validation_type_for = { 'somedomain.com' => :skip }
|
|
499
589
|
|
500
590
|
### Added
|
501
591
|
|
502
|
-
- Retries for
|
592
|
+
- Retries for `Truemail::Validate::Smtp` for cases when one mx server
|
503
593
|
|
504
594
|
### Changed
|
505
595
|
|
506
|
-
-
|
596
|
+
- `Truemail::Configuration` class, please use `.connection_attempts` instead `.retry_count`
|
507
597
|
- `Truemail::VERSION`
|
508
598
|
- gem documentation
|
509
599
|
|
@@ -511,12 +601,12 @@ Truemail.configuration.validation_type_for = { 'somedomain.com' => :skip }
|
|
511
601
|
|
512
602
|
### Added
|
513
603
|
|
514
|
-
- Checking A record presence if
|
515
|
-
- Handling of
|
516
|
-
- Checking A record if
|
517
|
-
- Supporting of multihomed MX records, conversion host names to ips, [issue details](https://github.com/
|
518
|
-
- Timeout configuration for DNS resolver, [issue details](https://github.com/
|
519
|
-
-
|
604
|
+
- Checking A record presence if `MX` and `CNAME` records not exist, [issue details](https://github.com/truemail-rb/truemail/issues/10)
|
605
|
+
- Handling of `CNAME` records, [issue details](https://github.com/truemail-rb/truemail/issues/11)
|
606
|
+
- Checking A record if `MX` and `CNAME` records not found, [issue details](https://github.com/truemail-rb/truemail/issues/12)
|
607
|
+
- Supporting of multihomed MX records, conversion host names to ips, [issue details](https://github.com/truemail-rb/truemail/issues/17)
|
608
|
+
- Timeout configuration for DNS resolver, [issue details](https://github.com/truemail-rb/truemail/issues/13)
|
609
|
+
- `.valid?` helper
|
520
610
|
|
521
611
|
### Changed
|
522
612
|
|
@@ -527,16 +617,16 @@ Truemail.configuration.validation_type_for = { 'somedomain.com' => :skip }
|
|
527
617
|
|
528
618
|
### Added
|
529
619
|
|
530
|
-
- Independent domain name extractor to
|
620
|
+
- Independent domain name extractor to `Truemail::Validate::Mx#run`
|
531
621
|
|
532
622
|
### Fixed
|
533
623
|
|
534
|
-
- Default
|
624
|
+
- Default `REGEX_EMAIL_PATTERN`, [issue details](https://github.com/truemail-rb/truemail/issues/7)
|
535
625
|
* local part of address can't start with a dot or special symbol
|
536
626
|
* local part of address can include ```+``` symbol
|
537
|
-
- Default
|
627
|
+
- Default `REGEX_DOMAIN_PATTERN`, [issue details](https://github.com/truemail-rb/truemail/issues/8)
|
538
628
|
* TLD size increased up to 63 characters
|
539
|
-
- Case sensitive domain names, [issue details](https://github.com/
|
629
|
+
- Case sensitive domain names, [issue details](https://github.com/truemail-rb/truemail/issues/9)
|
540
630
|
|
541
631
|
### Changed
|
542
632
|
|
@@ -583,10 +673,7 @@ Truemail.validate('email@example.com')
|
|
583
673
|
#<struct Truemail::Validate::Smtp::Response
|
584
674
|
port_opened=true,
|
585
675
|
connection=false,
|
586
|
-
helo=
|
587
|
-
#<Net::SMTP::Response:0x0000000002c934c8
|
588
|
-
@status="250",
|
589
|
-
@string="250 mx1.example.com\n">,
|
676
|
+
helo=true,
|
590
677
|
mailfrom=false,
|
591
678
|
rcptto=nil,
|
592
679
|
errors={:mailfrom=>"554 5.7.1 Client host blocked\n", :connection=>"server dropped connection after response"}>>,]>,
|