Class: EmailChecker::Domain
- Inherits:
-
Object
- Object
- EmailChecker::Domain
- Defined in:
- lib/email_checker/domain.rb
Instance Method Summary collapse
- #a_records ⇒ Object
-
#a_records? ⇒ Boolean
Check if the domain exists validation that has at least 1 A record.
-
#initialize(domain) ⇒ Domain
constructor
A new instance of Domain.
- #mx_records ⇒ Object
- #mx_servers ⇒ Object
-
#valid? ⇒ type
Checks if the domian exists and has valid MX and A records.
-
#valid_mx_records? ⇒ Boolean
Check if it has valid MX records and it can receive emails.
Constructor Details
#initialize(domain) ⇒ Domain
Returns a new instance of Domain.
3 4 5 |
# File 'lib/email_checker/domain.rb', line 3 def initialize(domain) @domain = domain end |
Instance Method Details
#a_records ⇒ Object
39 40 41 |
# File 'lib/email_checker/domain.rb', line 39 def a_records @a_records ||= dns.getresources(@domain, Resolv::DNS::Resource::IN::A) end |
#a_records? ⇒ Boolean
Check if the domain exists validation that has at least 1 A record.
35 36 37 |
# File 'lib/email_checker/domain.rb', line 35 def a_records? a_records.any? end |
#mx_records ⇒ Object
43 44 45 |
# File 'lib/email_checker/domain.rb', line 43 def mx_records @mx_records ||= dns.getresources(@domain, Resolv::DNS::Resource::IN::MX).sort_by(&:preference) end |
#mx_servers ⇒ Object
47 48 49 50 51 52 53 54 |
# File 'lib/email_checker/domain.rb', line 47 def mx_servers return @mx_servers if @mx_servers @mx_servers = [] mx_records.each do |mx| @mx_servers.push(preference: mx.preference, address: mx.exchange.to_s) end @mx_servers end |
#valid? ⇒ type
Checks if the domian exists and has valid MX and A records
10 11 12 13 14 15 16 17 18 |
# File 'lib/email_checker/domain.rb', line 10 def valid? return false unless @domain Timeout.timeout(SERVER_TIMEOUT) do return true if valid_mx_records? return true if a_records? end rescue Timeout::Error, Errno::ECONNREFUSED false end |
#valid_mx_records? ⇒ Boolean
Check if it has valid MX records and it can receive emails. The MX server exists and it has valid A records.
24 25 26 27 28 29 30 |
# File 'lib/email_checker/domain.rb', line 24 def valid_mx_records? mx_servers.each do |server| exchange_a_records = dns.getresources(server[:address], Resolv::DNS::Resource::IN::A) return true if exchange_a_records.any? end false end |