class SPF::Mod::SPF::Mod::Exp
Constants
- NAME
Attributes
domain_spec[R]
Public Instance Methods
params()
click to toggle source
# File lib/spf/model.rb, line 742 def params return @domain_spec end
parse_params(required = true)
click to toggle source
# File lib/spf/model.rb, line 737 def parse_params(required = true) @raw_params = @parse_text.dup self.parse_domain_spec(required) end
precedence()
click to toggle source
# File lib/spf/model.rb, line 735 def precedence; 0.2; end
process(server, request, result)
click to toggle source
# File lib/spf/model.rb, line 746 def process(server, request, result) begin exp_domain = @domain_spec.new({:server => server, :request => request}) txt_packet = server.dns_lookup(exp_domain, 'TXT') txt_rrs = txt_packet.answer.select {|x| x.type == 'TXT'}.map {|x| x.answer} unless text_rrs.length > 0 server.throw_result(:permerror, request, "No authority explanation string available at domain '#{exp_domain}'") # RFC 4408, 6.2/4 end unless text_rrs.length == 1 server.throw_result(:permerror, request, "Redundant authority explanation strings found at domain '#{exp_domain}'") # RFC 4408, 6.2/4 end explanation = SPF::MacroString.new( :text => txt_rrs[0].char_str_list.join(''), :server => server, :request => request, :is_explanation => true ) request.state(:authority_explanation, explanation) rescue SPF::DNSError, SPF::Result::Error # Ignore DNS and other errors. end return request end