mailshield 1.4 → 1.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4a63f4492f21b558750b2e876a02ccdad172bc8e471cacf533e6886d348e0b5a
4
- data.tar.gz: d83751d2286c3b034a92cf4e65b55cdebd68fb7d31fb0ac7cc12489258e1544f
3
+ metadata.gz: 951a883218a7b24ca485ad6e34755a420a754931ebb5590438e5ae3715ba385a
4
+ data.tar.gz: 74522e2cc5992814083ebb6235a849ff0429f9482bcdec848911526511a386cf
5
5
  SHA512:
6
- metadata.gz: a3317ff62aa8479a9f678c01024c99da25e230d9ecfc59013ca0579e05d43eec6e1bc55978b73dfee4b2bb91211c6f88aa248c58b0b0e3a24a5aa90f0be4faec
7
- data.tar.gz: 71fca0b12c55c64a24d55ea532427b9eb4e68d4cafae91872a423d6f4e38eb6d8c7e2e895911daf2bcc2811eeaa4e7adbf49bbf2c6559c4e7e6f0be506744d97
6
+ metadata.gz: fbc024e630f232ff8bb84fff735076c0f8b9c698a12874dc622b4fda4885b4daf7574a830a8acd109d2b3e57fc9265b877516556de71b936b9e3c22f32d01a7e
7
+ data.tar.gz: 87b6a352c1e0307983ffae13f9675e97712d7c786ce39a84a4e09c0a9c6d3764a1c756fdd18ca4aabdb8fd08c11667d5dcdf8e8beaf0fd08322dc657bd13ff77
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
  require 'set'
3
3
 
4
+
4
5
  module MailShield
5
6
  KNOWN_DISPOSABLE_DOMAINS = Set.new(
6
7
  [
@@ -85,10 +86,9 @@ module MailShield
85
86
  ]
86
87
  )
87
88
 
88
-
89
89
  class << self
90
- def validate_known_disposal_domain?(domain)
91
- raise TemporaryDomainError, 'Temporary / Disposal Email.' if KNOWN_DISPOSABLE_DOMAINS.include?(domain)
90
+ def validate_known_disposal_domain?(domain)
91
+ raise TemporaryDomainError, 'Temporary / Disposal Email.' if KNOWN_DISPOSABLE_DOMAINS.include?(domain)
92
92
  end
93
93
  end
94
- end
94
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Mailshield
4
- VERSION = '1.4'
5
- end
4
+ VERSION = '1.6'
5
+ end
data/lib/mailshield.rb CHANGED
@@ -18,21 +18,32 @@ module MailShield
18
18
  class SMTPError < ValidationError; end
19
19
  class TemporaryDomainError < ValidationError; end
20
20
  class << self
21
- attr_accessor :dns_cache, :smtp_cache
21
+ attr_accessor :dns_cache, :smtp_cache, :whitelist, :blacklist
22
22
 
23
- def validate_email(email, verify_by_send: false)
23
+ def configure
24
+ @whitelist ||= []
25
+ @blacklist ||= []
26
+ yield self
27
+ end
28
+
29
+ def validate_email(email)
24
30
  reset_caches
25
31
 
26
32
  domain = extract_domain(email)
27
33
 
34
+ return { valid: false, reason: 'Email domain is blacklisted.' } if blacklist.include?(domain)
35
+
36
+ if !whitelist.empty? && !whitelist.include?(domain)
37
+ return { valid: false, reason: 'Email domain is not whitelisted.' }
38
+ end
39
+
28
40
  begin
29
41
  validate_known_disposal_domain?(domain)
30
42
  validate_format!(email)
31
43
  validate_domain!(domain)
32
44
  validate_spf!(domain)
33
45
  validate_dmarc!(domain)
34
- validate_smtp!(email) if verify_by_send
35
-
46
+ validate_smtp!(email)
36
47
  rescue ValidationError => e
37
48
  return { valid: false, reason: e.message }
38
49
  end
@@ -40,10 +51,16 @@ module MailShield
40
51
  { valid: true }
41
52
  end
42
53
 
43
- def verify_address(email)
54
+ # Added Support for verifying email existance in real world
55
+ def email_exists?(email)
44
56
  smtp_verify_email(email)
45
57
  end
46
58
 
59
+ # Added Support for Email Format Validation
60
+ def valid_format?(email)
61
+ valid_email_format?(email)
62
+ end
63
+
47
64
  private
48
65
 
49
66
  def reset_caches
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mailshield
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.4'
4
+ version: '1.6'
5
5
  platform: ruby
6
6
  authors:
7
7
  - jana
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-09-04 00:00:00.000000000 Z
11
+ date: 2024-09-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: net-smtp
@@ -63,5 +63,6 @@ requirements: []
63
63
  rubygems_version: 3.5.18
64
64
  signing_key:
65
65
  specification_version: 4
66
- summary: A gem to detect temporary or disposable email domains.
66
+ summary: MailShield enhances your app’s security by blocking temporary, spam and disposable
67
+ email addresses, keeping your user data clean and reducing spam.
67
68
  test_files: []