class SPF::Mod::SPF::Mod::Redirect

Constants

NAME

Attributes

domain_spec[R]

Public Instance Methods

init(options = {}) click to toggle source
Calls superclass method
# File lib/spf/model.rb, line 781
def init(options = {})
  super(options)
  @nested_record = nil
end
nested_record(server=nil, request=nil) click to toggle source
# File lib/spf/model.rb, line 820
def nested_record(server=nil, request=nil)
  return @nested_record if @nested_record
  return nil unless server and request
  server.count_dns_interactive_term(request)
  authority_domain = self.domain(server, request)
  sub_request = request.new_sub_request({:authority_domain => authority_domain})
  return @nested_record = server.select_record(sub_request)
end
params() click to toggle source
# File lib/spf/model.rb, line 791
def params
  return @domain_spec
end
parse_params(required = true) click to toggle source
# File lib/spf/model.rb, line 786
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 779
def precedence; 0.8; end
process(server, request, result) click to toggle source
# File lib/spf/model.rb, line 795
def process(server, request, result)

  server.count_dns_interactive_term(request)

  # Only perform redirection if no mechanism matched (RFC 4408, 6.1/1):
  return unless SPF::Result::NeutralByDefault === result

  # Create sub-request with mutated authorithy domain:
  sub_request = request.new_sub_request({:authority_domain => @domain_spec})

  # Process sub-request:
  result = server.process(sub_request)

  @nested_record = sub_request.record

  # Translate result of sub-request (RFC 4408, 6.1/4):
  if SPF::Result::None === result
    server.throw_result(:permerror, request,
      "Redirect domain '#{authority_domain}' has no applicable sender policy")
  end

  # Propagate any other results as-is:
  raise result
end