class Net::DNS::RR::MX

Mail Exchange Record (MX)

Class for DNS MX resource records.

A MX record specifies the name and relative preference of mail servers (mail exchangers in the DNS jargon) for the zone. The MX RR is used by SMTP (Mail) Agents to route mail for the domain.

Attributes

exchange[R]

Gets the exchange value.

Returns a String.

preference[R]

Gets the preference value.

Returns an Integer.

Public Instance Methods

value() click to toggle source

Gets the standardized value for this record, represented by the value of preference and exchange.

Returns a String.

# File lib/net/dns/rr/mx.rb, line 28
def value
  "#{preference} #{exchange}"
end

Private Instance Methods

build_pack() click to toggle source
# File lib/net/dns/rr/mx.rb, line 71
def build_pack
  @mx_pack = [@preference].pack("n") + pack_name(@exchange)
  @rdlength = @mx_pack.size
end
check_mx(input) click to toggle source
# File lib/net/dns/rr/mx.rb, line 62
def check_mx(input)
  str = input.to_s
  unless str.strip =~ /^(\d+)\s+(\S+)$/
    raise ArgumentError, "Invalid MX section `#{str}'"
  end

  [Regexp.last_match(1).to_i, Regexp.last_match(2)]
end
get_data() click to toggle source
# File lib/net/dns/rr/mx.rb, line 76
def get_data
  @mx_pack
end
get_inspect() click to toggle source
# File lib/net/dns/rr/mx.rb, line 58
def get_inspect
  value
end
set_type() click to toggle source
# File lib/net/dns/rr/mx.rb, line 54
def set_type
  @type = Net::DNS::RR::Types.new("MX")
end
subclass_new_from_binary(data, offset) click to toggle source
# File lib/net/dns/rr/mx.rb, line 47
def subclass_new_from_binary(data, offset)
  @preference = data.unpack("@#{offset} n")[0]
  offset += 2
  @exchange, offset = dn_expand(data, offset)
  offset
end
subclass_new_from_hash(options) click to toggle source
# File lib/net/dns/rr/mx.rb, line 34
def subclass_new_from_hash(options)
  if options.key?(:preference) && options.key?(:exchange)
    @preference = options[:preference].to_i
    @exchange = options[:exchange]
  else
    raise ArgumentError, ":preference and :exchange fields are mandatory"
  end
end
subclass_new_from_string(str) click to toggle source
# File lib/net/dns/rr/mx.rb, line 43
def subclass_new_from_string(str)
  @preference, @exchange = check_mx(str)
end