mailshield 1.2 → 1.3

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: 47694cab766631dd24097db7e130aeac98bbc12f2ad4aef7a5f065811796ea71
4
- data.tar.gz: 52d6019eb905e12d7d4e5d6eee0cae2c36fba7e301a5e897c3350fa26aeb632f
3
+ metadata.gz: 362dd7a7c8a948582fdffea7fdc081da39461f3711e247a2cd79afa88d6635c8
4
+ data.tar.gz: 151d0b56d0f2bcbfacab22f427b2bc9712b543b4c6f49c72c9f634b0100f693b
5
5
  SHA512:
6
- metadata.gz: 41ec5aa1ae5db31d9e0e437eac3dc85da10561cecc9c1b57fe793fccda7990f7a707695c4f794c0518ed2fb23c99767daa18a7cca8488e7792b939e5a71d432e
7
- data.tar.gz: 887fe66ea4b30711689cea1346c9466d326cb13c927b6e957c6d6d035ef908f0a5739751f27e6af17c4dbdb3d6df9d5bca4bf89087064fbc3d2427f8ce4a717b
6
+ metadata.gz: 9b29470d6e8d15577c201fa8b2a02220f71c6d96c69e6de7700f72c3fc3f8831a592d2422ee3b7c6bb696b882d465f4cafcf679bbac0f001a6d881fb97b03b06
7
+ data.tar.gz: 5a341e947ab69d9b202f426a8ed2ee1646350ee945f597a87d72be72e76cd2e5ec42c1db0a7d2248fe88b3ed890796aa046aecfdc2d43bc77ed0ba5ccb928501
@@ -87,8 +87,8 @@ module MailShield
87
87
 
88
88
 
89
89
  class << self
90
- def disposable_domain?(domain)
91
- 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
94
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Mailshield
4
- VERSION = '1.2'
5
- end
4
+ VERSION = '1.3'
5
+ end
data/lib/mailshield.rb CHANGED
@@ -15,7 +15,7 @@ module MailShield
15
15
  class SPFError < ValidationError; end
16
16
  class DMARCError < ValidationError; end
17
17
  class SMTPError < ValidationError; end
18
-
18
+ class TemporaryDomainError < ValidationError; end
19
19
  class << self
20
20
  attr_accessor :dns_cache, :smtp_cache
21
21
 
@@ -25,13 +25,15 @@ module MailShield
25
25
  domain = extract_domain(email)
26
26
 
27
27
  begin
28
+ validate_known_disposal_domain?(domain)
28
29
  validate_format!(email)
29
30
  validate_domain!(domain)
30
31
  validate_spf!(domain)
31
32
  validate_dmarc!(domain)
32
33
  validate_smtp!(email) if verify_by_send
34
+
33
35
  rescue ValidationError => e
34
- return { valid: false, issues: [e.message] }
36
+ return { valid: false, reason: e.message }
35
37
  end
36
38
 
37
39
  { valid: true }
@@ -57,15 +59,15 @@ module MailShield
57
59
  end
58
60
 
59
61
  def validate_spf!(domain)
60
- raise SPFError, 'Temporary / Disposable Email' unless spf_record?(domain)
62
+ raise SPFError, 'Temporary / Disposable Email.' unless spf_record?(domain)
61
63
  end
62
64
 
63
65
  def validate_dmarc!(domain)
64
- raise DMARCError, 'Temporary / Disposable Email' unless dmarc_record?(domain)
66
+ raise DMARCError, 'Temporary / Disposable Email.' unless dmarc_record?(domain)
65
67
  end
66
68
 
67
69
  def validate_smtp!(email)
68
- raise SMTPError, 'Email Address Not Found' unless smtp_verify_email(email)
70
+ raise SMTPError, 'Email Address Not Found.' unless smtp_verify_email(email)
69
71
  end
70
72
 
71
73
  def extract_domain(email)
@@ -77,13 +79,11 @@ module MailShield
77
79
  end
78
80
 
79
81
  def fetch_mx_records(domain)
80
- dns_cache[domain] ||= begin
81
- Resolv::DNS.open do |dns|
82
- dns.getresources(domain, Resolv::DNS::Resource::IN::MX).map(&:exchange).map(&:to_s)
83
- end
84
- rescue Resolv::ResolvError
85
- []
82
+ Resolv::DNS.open do |dns|
83
+ dns.getresources(domain, Resolv::DNS::Resource::IN::MX).map(&:exchange).map(&:to_s)
86
84
  end
85
+ rescue Resolv::ResolvError
86
+ []
87
87
  end
88
88
 
89
89
  def spf_record?(domain)
@@ -97,18 +97,17 @@ module MailShield
97
97
  end
98
98
 
99
99
  def fetch_txt_records(domain)
100
- dns_cache[domain] ||= begin
101
- Resolv::DNS.open do |dns|
102
- dns.getresources(domain, Resolv::DNS::Resource::IN::TXT).map(&:data)
103
- end
104
- rescue Resolv::ResolvError
105
- []
100
+ Resolv::DNS.open do |dns|
101
+ records = dns.getresources(domain, Resolv::DNS::Resource::IN::TXT)
102
+ records.map(&:data)
106
103
  end
104
+ rescue Resolv::ResolvError
105
+ []
107
106
  end
108
107
 
109
108
  def smtp_verify_email(email)
110
109
  domain = extract_domain(email)
111
- smtp_server = smtp_cache[domain] ||= get_smtp_server(domain)
110
+ smtp_server = get_smtp_server(domain)
112
111
 
113
112
  return false unless smtp_server
114
113
 
@@ -117,7 +116,7 @@ module MailShield
117
116
  smtp.helo('localhost')
118
117
  smtp.mailfrom('test@example.com')
119
118
  response = smtp.rcptto(email)
120
- response == '250 OK'
119
+ response.status == '250' || response.status == '250 OK'
121
120
  end
122
121
  rescue Net::SMTPFatalError, Net::SMTPServerBusy, Net::SMTPSyntaxError, Errno::ECONNREFUSED
123
122
  false
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mailshield
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.2'
4
+ version: '1.3'
5
5
  platform: ruby
6
6
  authors:
7
7
  - jana
@@ -9,9 +9,23 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
  date: 2024-09-03 00:00:00.000000000 Z
12
- dependencies: []
13
- description: MailShield helps secure your application by identifying temporary or
14
- disposable email domains.
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: net-smtp
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.2.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.2.1
27
+ description: MailShield enhances your app’s security by blocking temporary, spam and
28
+ disposable email addresses, keeping your user data clean and reducing spam.
15
29
  email:
16
30
  - shanmugamjanarthan24@gmail.com
17
31
  executables: []