lib/truemail/validate/mx.rb in truemail-0.1.6 vs lib/truemail/validate/mx.rb in truemail-0.1.7
- old
+ new
@@ -22,11 +22,11 @@
%i[hosts_from_mx_records? hosts_from_cname_records? host_from_a_record?]
end
def mx_lookup
host_extractor_methods.any? do |method|
- Truemail::Validate::ResolverExecutionWrapper.call { send(method) }
+ Truemail::Wrapper.call { send(method) }
end
end
def fetch_target_hosts(hosts)
mail_servers.push(*hosts)
@@ -39,40 +39,48 @@
def domain_not_include_null_mx
!mail_servers.include?(Truemail::Validate::Mx::NULL_MX_RECORD)
end
- def mx_records(domain)
- domain_mx_records = Resolv::DNS.new.getresources(domain, Resolv::DNS::Resource::IN::MX)
+ def mx_records(hostname)
+ domain_mx_records = Resolv::DNS.new.getresources(hostname, Resolv::DNS::Resource::IN::MX)
return [Truemail::Validate::Mx::NULL_MX_RECORD] if null_mx?(domain_mx_records)
domain_mx_records.sort_by(&:preference).map do |mx_record|
Resolv.getaddresses(mx_record.exchange.to_s)
end.flatten
end
def mail_servers_found?
!mail_servers.empty?
end
+ def domain
+ result.domain
+ end
+
def hosts_from_mx_records?
- fetch_target_hosts(mx_records(result.domain))
+ fetch_target_hosts(mx_records(domain))
mail_servers_found?
end
+ def a_record(hostname)
+ Resolv.getaddress(hostname)
+ end
+
def hosts_from_cname_records?
- cname_records = Resolv::DNS.new.getresources(result.domain, Resolv::DNS::Resource::IN::CNAME)
+ cname_records = Resolv::DNS.new.getresources(domain, Resolv::DNS::Resource::IN::CNAME)
return if cname_records.empty?
cname_records.each do |cname_record|
- host = Resolv.getaddress(cname_record.name.to_s)
+ host = a_record(cname_record.name.to_s)
hostname = Resolv.getname(host)
found_hosts = mx_records(hostname)
fetch_target_hosts(found_hosts.empty? ? [host] : found_hosts)
end
mail_servers_found?
end
def host_from_a_record?
- fetch_target_hosts([Resolv.getaddress(result.domain)])
+ fetch_target_hosts([a_record(domain)])
mail_servers_found?
end
end
end
end