Commit 056c1e5
Changed files (4)
spec
minbox
lib/minbox/cli.rb
@@ -26,10 +26,11 @@ module Minbox
end
method_option :output, type: :array, default: ['stdout']
+ method_option :tls, type: :boolean, default: false
desc 'server <HOST> <PORT>', 'SMTP server'
def server(host = 'localhost', port = '25')
publisher = Publisher.from(options[:output])
- Server.new(host, port).listen! do |mail|
+ Server.new(host, port, options[:tls]).listen! do |mail|
publisher.publish(mail)
end
end
lib/minbox/client.rb
@@ -2,10 +2,11 @@ module Minbox
class Client
attr_reader :host, :socket, :logger
- def initialize(host, socket, logger)
+ def initialize(host, socket, logger, tls = false)
@host = host
@logger = logger
@socket = socket
+ @tls = tls
end
def handle(&block)
@@ -65,7 +66,7 @@ module Minbox
write "250-#{host}"
#write "250 AUTH PLAIN LOGIN"
write "250-ENHANCEDSTATUSCODES"
- #write "250 STARTTLS"
+ write "250 STARTTLS" if @tls
write "250 OK"
end
lib/minbox/server.rb
@@ -2,16 +2,17 @@ module Minbox
class Server
attr_reader :host, :port, :logger
- def initialize(host = 'localhost', port = 25, logger = Minbox.logger)
+ def initialize(host = 'localhost', port = 25, tls = false, logger = Minbox.logger)
@host = host
@port = port
@logger = logger
+ @tls = tls
end
def listen!(&block)
logger.debug("Starting server on port #{port}...")
@server = TCPServer.new(port.to_i)
- #@server = upgrade(@server)
+ @server = upgrade(@server) if @tls
logger.debug("Server started!")
loop do
@@ -23,7 +24,7 @@ module Minbox
def handle(socket, &block)
logger.debug("client connected: #{socket.inspect}")
- Client.new(host, socket, logger).handle(&block)
+ Client.new(host, socket, logger, @tls).handle(&block)
end
def shutdown!
@@ -69,9 +70,6 @@ module Minbox
ssl_context.cert = certificate_for(key)
ssl_context.key = key
ssl_context.ssl_version = :SSLv23
- ssl_context.renegotiation_cb = lambda do |ssl|
- puts "Negotiating..."
- end
ssl_context
end
end
spec/minbox/server_spec.rb
@@ -68,6 +68,7 @@ RSpec.describe Minbox::Server do
x.add_file __FILE__
end
Net::SMTP.start(host, port, 'mail.from.domain', 'username', 'password', :login) do |smtp|
+ smtp.debug_output= STDOUT
smtp.send_message(mail.to_s, Faker::Internet.email, Faker::Internet.email)
end
end
@@ -98,9 +99,9 @@ RSpec.describe Minbox::Server do
context "when upgrading to tls" do
let(:result) do
mail = create_mail
- Net::SMTP.start(host, port) do |smtp|
- #smtp.enable_starttls
- smtp.enable_tls
+ smtp = Net::SMTP.new(host, port)
+ smtp.enable_starttls
+ smtp.start do |smtp|
smtp.send_message(mail.to_s, Faker::Internet.email, Faker::Internet.email)
end
end