update mx condition for invalid emails

This commit is contained in:
olegphenomenon 2021-12-23 14:39:52 +02:00
parent 9c69284a6d
commit ba48132547
2 changed files with 35 additions and 1 deletions

View file

@ -50,12 +50,44 @@ module Actions
end
def save_result(result)
validation_eventable.validation_events.create(validation_event_attrs(result))
if !result.success && @check_level == "mx"
email_domain = Mail::Address.new(@email).domain
result_validation = check_for_records_value(domain: email_domain, value: 'A')
result_validation = check_for_records_value(domain: email_domain, value: 'AAAA') if result_validation.empty?
result_validation.present? ? result.success = true : result.success = false
validation_eventable.validation_events.create(validation_event_attrs(result))
else
validation_eventable.validation_events.create(validation_event_attrs(result))
end
rescue ActiveRecord::RecordNotSaved
logger.info "Cannot save validation result for #{log_object_id}"
true
end
def check_for_records_value(domain:, value:)
result = nil
dns_servers = ENV['dnssec_resolver_ips'].to_s.split(',').map(&:strip)
Resolv::DNS.open({ nameserver: dns_servers }) do |dns|
dns.timeouts = ENV['a_and_aaaa_validation_timeout'] || 1
ress = nil
case value
when 'A'
ress = dns.getresources domain, Resolv::DNS::Resource::IN::A
when 'AAAA'
ress = dns.getresources domain, Resolv::DNS::Resource::IN::AAAA
end
result = ress.map { |r| r.address }
end
result
end
def validation_event_attrs(result)
{
event_data: event_data(result),

View file

@ -12,6 +12,8 @@ module Domains
Domain.where(registrant_id: registrant_ids)
domains.each do |domain|
next if domain.expired?
before_execute_force_delete(domain)
end
end