Class: EmailDetected::Checker
- Inherits:
-
Net::SMTP
- Object
- Net::SMTP
- EmailDetected::Checker
- Defined in:
- lib/email_detected/checker.rb
Defined Under Namespace
Classes: MailCheckStatus
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.get_mail_server(host) ⇒ Object
94 95 96 97 98 99 100 101 |
# File 'lib/email_detected/checker.rb', line 94 def self.get_mail_server(host) res = Resolv::DNS.new.getresources(host, Resolv::DNS::Resource::IN::MX) unless res.empty? # FIXME: should return the whole list return res.sort {|x,y| x.preference <=> y.preference}.first.exchange.to_s end nil end |
.run(addr, server = nil, decoy_from = nil) ⇒ Object
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/email_detected/checker.rb', line 62 def self.run(addr, server = nil, decoy_from = nil) # FIXME: needs a better mail address parser server = get_mail_server(addr[(addr.index('@')+1)..-1]) if server.nil? # This only needs to be something the receiving SMTP server # accepts. We aren't actually sending any mail. decoy_from ||= EmailDetected.config.verifier_email ret = nil begin EmailDetected::Checker.start(server) do |smtp| ret = smtp.check_mail_addr(addr, decoy_from) ret = MailCheckStatus.new(ret.status.to_i) end rescue Net::SMTPAuthenticationError, Net::SMTPServerBusy, Net::SMTPSyntaxError, Net::SMTPFatalError, Net::SMTPUnknownError => error ret = MailCheckStatus.new(error.to_s[0..2].to_i, error) rescue IOError, TimeoutError, ArgumentError => error ret = MailCheckStatus.new(-1, error) end return ret end |
Instance Method Details
#check_mail_addr(to_addr, decoy_from = nil) ⇒ Object
87 88 89 90 91 92 |
# File 'lib/email_detected/checker.rb', line 87 def check_mail_addr(to_addr, decoy_from = nil) raise IOError, 'closed session' unless @socket raise ArgumentError, 'mail destination not given' if to_addr.empty? mailfrom decoy_from rcptto to_addr end |