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