spf 0.0.32 → 0.0.33
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.
- data/lib/spf/error.rb +1 -0
- data/lib/spf/eval.rb +12 -1
- data/lib/spf/model.rb +6 -1
- data/lib/spf/version.rb +1 -1
- data/spf.gemspec +1 -1
- metadata +3 -2
data/lib/spf/error.rb
CHANGED
@@ -14,6 +14,7 @@ module SPF
|
|
14
14
|
|
15
15
|
class DNSError < Error; end # DNS error
|
16
16
|
class DNSTimeoutError < DNSError; end # DNS timeout
|
17
|
+
class DNSNXDomainError < DNSError; end # DNS NXDomain
|
17
18
|
class RecordSelectionError < Error # Record selection error
|
18
19
|
attr_accessor :records
|
19
20
|
def initialize(message, records=[])
|
data/lib/spf/eval.rb
CHANGED
@@ -140,7 +140,18 @@ class SPF::Server
|
|
140
140
|
|
141
141
|
domain = domain.sub(/\.$/, '').downcase
|
142
142
|
|
143
|
-
packet =
|
143
|
+
packet = nil
|
144
|
+
begin
|
145
|
+
packet = @dns_resolver.getresources(domain, rr_type)
|
146
|
+
rescue Resolv::TimeoutError => e
|
147
|
+
raise SPF::DNSTimeoutError.new(
|
148
|
+
"Time-out on DNS '#{rr_type}' lookup of '#{domain}'")
|
149
|
+
rescue Resolv::NXDomainError => e
|
150
|
+
raise SPF::DNSError.new("NXDomain for '#{domain}'")
|
151
|
+
rescue Resolv::ResolvError => e
|
152
|
+
raise SPF::DNSError.new(
|
153
|
+
"Unknown error on DNS '#{rr_type}' lookup of '#{domain}'")
|
154
|
+
end
|
144
155
|
|
145
156
|
# Raise DNS exception unless an answer packet with RCODE 0 or 3 (NXDOMAIN)
|
146
157
|
# was received (thereby treating NXDOMAIN as an acceptable but empty answer packet):
|
data/lib/spf/model.rb
CHANGED
@@ -326,7 +326,12 @@ class SPF::Mech < SPF::Term
|
|
326
326
|
|
327
327
|
ipv4_prefix_length = @ipv4_prefix_length || self.default_ipv4_prefix_length
|
328
328
|
ipv6_prefix_length = @ipv6_prefix_length || self.default_ipv6_prefix_length
|
329
|
-
|
329
|
+
begin
|
330
|
+
packet = server.dns_lookup(domain.to_s, 'ANY')
|
331
|
+
rescue SPF::DNSError => e
|
332
|
+
@errors << e
|
333
|
+
return false
|
334
|
+
end
|
330
335
|
server.count_void_dns_lookup(request) unless (rrs = packet)
|
331
336
|
|
332
337
|
rrs.each do |rr|
|
data/lib/spf/version.rb
CHANGED
data/spf.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.33
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -127,8 +127,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
127
127
|
version: '0'
|
128
128
|
requirements: []
|
129
129
|
rubyforge_project:
|
130
|
-
rubygems_version: 1.8.23
|
130
|
+
rubygems_version: 1.8.23.2
|
131
131
|
signing_key:
|
132
132
|
specification_version: 3
|
133
133
|
summary: Implementation of the Sender Policy Framework
|
134
134
|
test_files: []
|
135
|
+
has_rdoc:
|