truemail 1.5.1 → 1.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.reek.yml +1 -0
- data/CHANGELOG.md +214 -0
- data/Gemfile.lock +31 -50
- data/README.md +162 -16
- data/lib/truemail.rb +3 -4
- data/lib/truemail/audit/base.rb +8 -0
- data/lib/truemail/audit/dns.rb +26 -0
- data/lib/truemail/audit/ip.rb +28 -0
- data/lib/truemail/audit/ptr.rb +7 -35
- data/lib/truemail/auditor.rb +2 -2
- data/lib/truemail/configuration.rb +2 -3
- data/lib/truemail/core.rb +24 -22
- data/lib/truemail/log/serializer/base.rb +1 -0
- data/lib/truemail/validate/mx.rb +1 -0
- data/lib/truemail/validator.rb +4 -0
- data/lib/truemail/version.rb +1 -1
- data/truemail.gemspec +7 -7
- metadata +23 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ce37fd460cb5da28f5880be61ac6abb5ca5e8d0fe1010738e45a02a70417fa31
|
4
|
+
data.tar.gz: 3f66bb5169a012e7bd77af80c40c51c021332cb86be4f2ef6f1450611001cebf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4902f4e7d2c68cc8714c536ae1844904b99c7609a2b36d057902e6a838d2e2e33bb301f99b7cb067e108bb4bae845ec2e9dfbb9be529db8d53c9bf50a31dfdf9
|
7
|
+
data.tar.gz: f049315d919448d56d8082da28df31d1bc7ad6e191fc5b30629b38011ff4450f870fb7597a6bc4645007fe7bcbc4a7fa3b0855ee408f4115466e9a3496c926c8
|
data/.reek.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,16 +1,166 @@
|
|
1
1
|
# Changelog
|
2
|
+
|
2
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).
|
3
4
|
|
5
|
+
## [1.8.0] - 2020.06.21
|
6
|
+
|
7
|
+
## Added
|
8
|
+
|
9
|
+
Separated audit features for verifier host.
|
10
|
+
|
11
|
+
- `Truemail::Audit::Ip`
|
12
|
+
- `Truemail::Audit::Dns`
|
13
|
+
|
14
|
+
```ruby
|
15
|
+
Truemail.host_audit
|
16
|
+
|
17
|
+
=> #<Truemail::Auditor:0x00005580df358828
|
18
|
+
@result=
|
19
|
+
#<struct Truemail::Auditor::Result
|
20
|
+
current_host_ip="127.0.0.1",
|
21
|
+
warnings={
|
22
|
+
:dns=>"a record of verifier domain not refers to current host ip address",
|
23
|
+
:ptr=>"ptr record does not reference to current verifier domain"
|
24
|
+
},
|
25
|
+
configuration=
|
26
|
+
#<Truemail::Configuration:0x00005615e86327a8
|
27
|
+
@blacklisted_domains=[],
|
28
|
+
@connection_attempts=2,
|
29
|
+
@connection_timeout=2,
|
30
|
+
@default_validation_type=:smtp,
|
31
|
+
@email_pattern=/(?=\A.{6,255}\z)(\A([\p{L}0-9]+[\w|\-|\.|\+]*)@((?i-mx:[\p{L}0-9]+([\-\.]{1}[\p{L}0-9]+)*\.[\p{L}]{2,63}))\z)/,
|
32
|
+
@response_timeout=2,
|
33
|
+
@smtp_error_body_pattern=/(?=.*550)(?=.*(user|account|customer|mailbox)).*/i,
|
34
|
+
@not_rfc_mx_lookup_flow=false,
|
35
|
+
@smtp_safe_check=false,
|
36
|
+
@validation_type_by_domain={},
|
37
|
+
@verifier_domain="example.com",
|
38
|
+
@verifier_email="verifier@example.com",
|
39
|
+
@whitelist_validation=false,
|
40
|
+
@whitelisted_domains=[]>
|
41
|
+
```
|
42
|
+
|
43
|
+
### Changed
|
44
|
+
|
45
|
+
- `Truemail::Auditor`
|
46
|
+
- `Truemail::Auditor::Result`
|
47
|
+
- `Truemail::Audit::Base`
|
48
|
+
- `Truemail::Audit::Ptr`
|
49
|
+
- `Truemail::VERSION`
|
50
|
+
- gem documentation
|
51
|
+
|
52
|
+
## [1.7.1] - 2020.05.10
|
53
|
+
|
54
|
+
## Added
|
55
|
+
|
56
|
+
- Ability to show `not_rfc_mx_lookup_flow` attribute in serialized validation result
|
57
|
+
|
58
|
+
```ruby
|
59
|
+
Truemail.validate('nonexistent_email@bestweb.com.ua').as_json
|
60
|
+
|
61
|
+
=>
|
62
|
+
# Serialized Truemail::Validator instance
|
63
|
+
{
|
64
|
+
"date": "2020-05-10 10:00:00 +0200",
|
65
|
+
"email": "nonexistent_email@bestweb.com.ua",
|
66
|
+
"validation_type": "smtp",
|
67
|
+
"success": false,
|
68
|
+
"errors": {
|
69
|
+
"smtp": "smtp error"
|
70
|
+
},
|
71
|
+
"smtp_debug": [
|
72
|
+
{
|
73
|
+
"mail_host": "213.180.193.89",
|
74
|
+
"port_opened": true,
|
75
|
+
"connection": true,
|
76
|
+
"errors": {
|
77
|
+
"rcptto": "550 5.7.1 No such user!\n"
|
78
|
+
}
|
79
|
+
}
|
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
|
+
|
94
|
+
### Changed
|
95
|
+
|
96
|
+
- `Truemail::Log::Serializer::Base`
|
97
|
+
- `Truemail::VERSION`
|
98
|
+
- gem documentation
|
99
|
+
|
100
|
+
## [1.7.0] - 2020.05.09
|
101
|
+
|
102
|
+
## Added
|
103
|
+
|
104
|
+
- Ability to use not RFC MX lookup flow (MX and Null MX records will be checked on the DNS validation layer only)
|
105
|
+
|
106
|
+
```ruby
|
107
|
+
Truemail.configure do |config|
|
108
|
+
# Optional parameter. This option will provide to use not RFC MX lookup flow.
|
109
|
+
# It means that MX and Null MX records will be cheked on the DNS validation layer only.
|
110
|
+
# By default this option is disabled.
|
111
|
+
config.not_rfc_mx_lookup_flow = true
|
112
|
+
end
|
113
|
+
```
|
114
|
+
|
115
|
+
### Changed
|
116
|
+
|
117
|
+
- `Truemail.configuration`
|
118
|
+
- `Truemail::Validate::Mx`
|
119
|
+
- `Truemail::VERSION`
|
120
|
+
- gem development dependencies
|
121
|
+
- gem documentation
|
122
|
+
|
123
|
+
## [1.6.1] - 2020.03.23
|
124
|
+
|
125
|
+
### Changed
|
126
|
+
|
127
|
+
- `Truemail.configuration`
|
128
|
+
- `Truemail::ArgumentError`
|
129
|
+
- `Truemail::Audit::Ptr`
|
130
|
+
- `Truemail::VERSION`
|
131
|
+
- gem development dependencies
|
132
|
+
- gem documentation
|
133
|
+
|
134
|
+
### Removed
|
135
|
+
|
136
|
+
`Truemail::Configuration.retry_count` deprecated, and alias for this method has been removed. Please use `Truemail::Configuration.connection_attempts` instead.
|
137
|
+
|
138
|
+
## [1.6.0] - 2020-02-01
|
139
|
+
|
140
|
+
### Added
|
141
|
+
|
142
|
+
- Possibility to use `Truemail::Validator` instance represented as json directly
|
143
|
+
|
144
|
+
### Changed
|
145
|
+
|
146
|
+
- gem development dependencies
|
147
|
+
- gem documentation
|
148
|
+
|
4
149
|
## [1.5.1] - 2020-01-20
|
150
|
+
|
5
151
|
### Changed
|
152
|
+
|
6
153
|
- gem development dependencies
|
7
154
|
- gem documentation
|
8
155
|
|
9
156
|
## [1.5.0] - 2019-12-29
|
157
|
+
|
10
158
|
### Added
|
159
|
+
|
11
160
|
- Supporting of internationalized emails ([EAI](https://en.wikipedia.org/wiki/International_email)). Now you can validate emails, like: `dörte@sörensen.de`, `квіточка@пошта.укр`, `alegría@mañana.es`
|
12
161
|
|
13
162
|
### Changed
|
163
|
+
|
14
164
|
- `Truemail::RegexConstant::REGEX_DOMAIN`
|
15
165
|
- `Truemail::RegexConstant::REGEX_EMAIL_PATTERN`
|
16
166
|
- `Truemail::Validator::Result`
|
@@ -22,22 +172,29 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
22
172
|
- linters configs
|
23
173
|
|
24
174
|
## [1.4.2] - 2019-11-27
|
175
|
+
|
25
176
|
### Changed
|
177
|
+
|
26
178
|
- `Truemail::Configuration`
|
27
179
|
- gem development dependencies
|
28
180
|
- linters configs
|
29
181
|
|
30
182
|
## [1.4.1] - 2019-11-20
|
183
|
+
|
31
184
|
### Changed
|
185
|
+
|
32
186
|
- gem development dependencies
|
33
187
|
- gem documentation
|
34
188
|
- linters configs
|
35
189
|
|
36
190
|
### Removed
|
191
|
+
|
37
192
|
- truemail rspec helpers (moved to independent gem [`truemail-rspec`](https://github.com/truemail-rb/truemail-rspec))
|
38
193
|
|
39
194
|
## [1.4.0] - 2019-10-28
|
195
|
+
|
40
196
|
### Added
|
197
|
+
|
41
198
|
- Event logger (ability to output validation logs to stdout/file)
|
42
199
|
- JSON serializer for validator instance
|
43
200
|
- [Changelog](CHANGELOG.md)
|
@@ -65,6 +222,7 @@ Truemail::Log::Serializer::Json.call(Truemail.validate('nonexistent_email@bestwe
|
|
65
222
|
```
|
66
223
|
|
67
224
|
### Changed
|
225
|
+
|
68
226
|
- `Truemail::Configuration`
|
69
227
|
- `Truemail::Validator`
|
70
228
|
- `Truemail::Validate::Regex`
|
@@ -73,11 +231,14 @@ Truemail::Log::Serializer::Json.call(Truemail.validate('nonexistent_email@bestwe
|
|
73
231
|
- gem description
|
74
232
|
|
75
233
|
## [1.3.0] - 2019-09-16
|
234
|
+
|
76
235
|
### Added
|
236
|
+
|
77
237
|
- Ability to create new `Truemail::Configuration` instance with block
|
78
238
|
- `Truemail::Validate::Smtp::Request::Configuration`
|
79
239
|
|
80
240
|
### Changed
|
241
|
+
|
81
242
|
- `Truemail::Wrapper`
|
82
243
|
- `Truemail::Validate::Base`
|
83
244
|
- `Truemail::Validator`
|
@@ -95,15 +256,20 @@ Truemail::Log::Serializer::Json.call(Truemail.validate('nonexistent_email@bestwe
|
|
95
256
|
- gem description
|
96
257
|
|
97
258
|
## [1.2.1] - 2019-06-27
|
259
|
+
|
98
260
|
### Fixed
|
261
|
+
|
99
262
|
- Removed memoization from ```DomainListMatch#whitelisted_domain?```
|
100
263
|
|
101
264
|
### Changed
|
265
|
+
|
102
266
|
- `Truemail::VERSION`
|
103
267
|
- gem documentation
|
104
268
|
|
105
269
|
## [1.2.0] - 2019-06-26
|
270
|
+
|
106
271
|
### Added
|
272
|
+
|
107
273
|
- Configurable option: validation for whitelisted domains only.
|
108
274
|
|
109
275
|
When email domain in whitelist and ```whitelist_validation``` is sets equal to ```true``` validation type will be passed to other validators. Validation of email which not contains whitelisted domain always will return ```false```.
|
@@ -148,11 +314,14 @@ Truemail.validate('email@domain.com', with: :regex)
|
|
148
314
|
```
|
149
315
|
|
150
316
|
### Changed
|
317
|
+
|
151
318
|
- `Truemail::VERSION`
|
152
319
|
- gem documentation
|
153
320
|
|
154
321
|
## [1.1.0] - 2019-06-18
|
322
|
+
|
155
323
|
### Added
|
324
|
+
|
156
325
|
- Configurable default validation type, [issue details](https://github.com/rubygarage/truemail/issues/48)
|
157
326
|
|
158
327
|
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```
|
@@ -165,11 +334,14 @@ end
|
|
165
334
|
```
|
166
335
|
|
167
336
|
### Changed
|
337
|
+
|
168
338
|
- `Truemail::VERSION`
|
169
339
|
- gem documentation
|
170
340
|
|
171
341
|
## [1.0.1] - 2019-06-08
|
342
|
+
|
172
343
|
### Added
|
344
|
+
|
173
345
|
- Result validation type marker for domain list match check
|
174
346
|
|
175
347
|
```ruby
|
@@ -199,11 +371,14 @@ Truemail.validate('email@black-domain.com')
|
|
199
371
|
```
|
200
372
|
|
201
373
|
### Changed
|
374
|
+
|
202
375
|
- `Truemail::VERSION`
|
203
376
|
- gem documentation
|
204
377
|
|
205
378
|
## [1.0] - 2019-06-04
|
379
|
+
|
206
380
|
### Added
|
381
|
+
|
207
382
|
- Feature domain whitelist blacklist. Other validations will not processed even if it was defined in ```validation_type_for```.
|
208
383
|
|
209
384
|
```ruby
|
@@ -217,6 +392,7 @@ Truemail.configure do |config|
|
|
217
392
|
config.blacklisted_domains = ['somedomain1.com', 'somedomain2.com']
|
218
393
|
end
|
219
394
|
```
|
395
|
+
|
220
396
|
and
|
221
397
|
|
222
398
|
```ruby
|
@@ -225,17 +401,22 @@ Truemail.configuration.blacklisted_domains = ['somedomain1.com', 'somedomain2.co
|
|
225
401
|
```
|
226
402
|
|
227
403
|
### Removed
|
404
|
+
|
228
405
|
- ```:skip``` validation type for ```validation_type_for```
|
229
406
|
|
230
407
|
### Fixed
|
408
|
+
|
231
409
|
- error key in `lower_snake_case`
|
232
410
|
|
233
411
|
### Changed
|
412
|
+
|
234
413
|
- `Truemail::VERSION`
|
235
414
|
- gem documentation
|
236
415
|
|
237
416
|
## [0.2] - 2019-05-23
|
417
|
+
|
238
418
|
### Added
|
419
|
+
|
239
420
|
- skip validation by domain for validation_type_for configuration option:
|
240
421
|
|
241
422
|
```ruby
|
@@ -243,68 +424,93 @@ Truemail.configure do |config|
|
|
243
424
|
config.validation_type_for = { 'somedomain.com' => :skip }
|
244
425
|
end
|
245
426
|
```
|
427
|
+
|
246
428
|
and
|
429
|
+
|
247
430
|
```ruby
|
248
431
|
Truemail.configuration.validation_type_for = { 'somedomain.com' => :skip }
|
249
432
|
```
|
433
|
+
|
250
434
|
### Changed
|
435
|
+
|
251
436
|
- `Truemail::VERSION`
|
252
437
|
- gem documentation
|
253
438
|
|
254
439
|
## [0.1.10] - 2019-05-10
|
440
|
+
|
255
441
|
### Added
|
442
|
+
|
256
443
|
- SMTP error body configurable option, [issue details](https://github.com/rubygarage/truemail/issues/19)
|
257
444
|
|
258
445
|
### Changed
|
446
|
+
|
259
447
|
- `Truemail::VERSION`
|
260
448
|
- gem documentation
|
261
449
|
|
262
450
|
## [0.1.9] - 2019-04-29
|
451
|
+
|
263
452
|
### Fixed
|
453
|
+
|
264
454
|
- Empty ptr constant
|
265
455
|
|
266
456
|
## [0.1.8] - 2019-04-29
|
457
|
+
|
267
458
|
### Added
|
459
|
+
|
268
460
|
- Reverse trace, [issue details](https://github.com/rubygarage/truemail/issues/18)
|
269
461
|
|
270
462
|
### Fixed
|
463
|
+
|
271
464
|
- Behaviour of current host address resolver, [issue details](https://github.com/rubygarage/truemail/issues/18)
|
272
465
|
|
273
466
|
### Changed
|
467
|
+
|
274
468
|
- `Truemail::VERSION`
|
275
469
|
- gem documentation
|
276
470
|
|
277
471
|
## [0.1.7] - 2019-04-17
|
472
|
+
|
278
473
|
### Added
|
474
|
+
|
279
475
|
- PTR record audit, [issue details](https://github.com/rubygarage/truemail/issues/18)
|
280
476
|
|
281
477
|
### Changed
|
478
|
+
|
282
479
|
- `Truemail::VERSION`
|
283
480
|
- gem documentation
|
284
481
|
|
285
482
|
## [0.1.6] - 2019-04-08
|
483
|
+
|
286
484
|
### Added
|
485
|
+
|
287
486
|
- MX gem logic with [RFC 7505](https://tools.ietf.org/html/rfc7505), null MX record supporting, [issue details](https://github.com/rubygarage/truemail/issues/27)
|
288
487
|
- [Contributing guideline](CONTRIBUTING.md)
|
289
488
|
|
290
489
|
### Fixed
|
490
|
+
|
291
491
|
- Multihomed MX records supporting, [issue details](https://github.com/rubygarage/truemail/issues/28)
|
292
492
|
|
293
493
|
### Changed
|
494
|
+
|
294
495
|
- `Truemail::VERSION`
|
295
496
|
- gem documentation
|
296
497
|
|
297
498
|
## [0.1.5] - 2019-04-05
|
499
|
+
|
298
500
|
### Added
|
501
|
+
|
299
502
|
- Retries for ```Truemail::Validate::Smtp``` for cases when one mx server
|
300
503
|
|
301
504
|
### Changed
|
505
|
+
|
302
506
|
- ```Truemail::Configuration``` class, please use ```.connection_attempts``` instead ```.retry_count```
|
303
507
|
- `Truemail::VERSION`
|
304
508
|
- gem documentation
|
305
509
|
|
306
510
|
## [0.1.4] - 2019-04-01
|
511
|
+
|
307
512
|
### Added
|
513
|
+
|
308
514
|
- Checking A record presence if ```MX``` and ```CNAME``` records not exist, [issue details](https://github.com/rubygarage/truemail/issues/10)
|
309
515
|
- Handling of ```CNAME``` records, [issue details](https://github.com/rubygarage/truemail/issues/11)
|
310
516
|
- Checking A record if ```MX``` and ```CNAME``` records not found, [issue details](https://github.com/rubygarage/truemail/issues/12)
|
@@ -313,14 +519,18 @@ Truemail.configuration.validation_type_for = { 'somedomain.com' => :skip }
|
|
313
519
|
- ```.valid?``` helper
|
314
520
|
|
315
521
|
### Changed
|
522
|
+
|
316
523
|
- `Truemail::VERSION`
|
317
524
|
- gem documentation
|
318
525
|
|
319
526
|
## [0.1.3] - 2019-03-27
|
527
|
+
|
320
528
|
### Added
|
529
|
+
|
321
530
|
- Independent domain name extractor to ```Truemail::Validate::Mx#run```
|
322
531
|
|
323
532
|
### Fixed
|
533
|
+
|
324
534
|
- Default ```REGEX_EMAIL_PATTERN```, [issue details](https://github.com/rubygarage/truemail/issues/7)
|
325
535
|
* local part of address can't start with a dot or special symbol
|
326
536
|
* local part of address can include ```+``` symbol
|
@@ -329,11 +539,14 @@ Truemail.configuration.validation_type_for = { 'somedomain.com' => :skip }
|
|
329
539
|
- Case sensitive domain names, [issue details](https://github.com/rubygarage/truemail/issues/9)
|
330
540
|
|
331
541
|
### Changed
|
542
|
+
|
332
543
|
- `Truemail::VERSION`
|
333
544
|
- gem documentation
|
334
545
|
|
335
546
|
## [0.1.0] - 2019-03-26
|
547
|
+
|
336
548
|
### Added
|
549
|
+
|
337
550
|
- 'SMTP safe check' option for cases when SMTP server does not return an exact answer that the email does not exist.
|
338
551
|
|
339
552
|
```ruby
|
@@ -381,5 +594,6 @@ Truemail.validate('email@example.com')
|
|
381
594
|
```
|
382
595
|
|
383
596
|
### Changed
|
597
|
+
|
384
598
|
- `Truemail::VERSION`
|
385
599
|
- gem documentation
|