spf 0.0.32 → 0.0.33
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|