Skip to content

Instantly share code, notes, and snippets.

@vincenting
Last active January 1, 2016 17:49
Show Gist options
  • Save vincenting/83d8a9b21dd7edc81287 to your computer and use it in GitHub Desktop.
Save vincenting/83d8a9b21dd7edc81287 to your computer and use it in GitHub Desktop.
A simple MTA Written in ruby.
require 'resolv'
require 'net/smtp'
require 'dkim'
Dkim::domain = 'domain.com'
Dkim::selector = 'mail'
Dkim::private_key = <<DKIM_KEY
-----BEGIN RSA PRIVATE KEY-----
Your Private Key Here.
-----END RSA PRIVATE KEY-----
DKIM_KEY
def get_mx_server(email)
domain = email.split('@')[1]
mx_records = Resolv::DNS.open do |dns|
dns.getresources(domain, Resolv::DNS::Resource::IN::MX)
end
mx_records.shuffle[0].exchange.to_s
end
def get_response_code(msg)
msg.split(' ')[0]
end
def send_mail(from, to, msg)
mx_server = get_mx_server to
Net::SMTP.start(mx_server, 25, Dkim::domain) do |smtp|
begin
res = smtp.send_message Dkim.sign(msg), from, to
res.status
rescue Net::SMTPFatalError => e
get_response_code e.to_s
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment