require 'socket' class SMTPSession @@timeout = 25 def initialize (session) @session = session puts "## SESSION STARTED ##" end def write (s) @session.write s + "\r\n" puts s end def read start_timer line = @session.gets stop_timer puts " " + line return line end def close @session.close puts "## SESSION CLOSED ##" end private def start_timer stop_timer @timer = Thread.new do sleep @@timeout close puts "## TIMEOUT ##" end end def stop_timer @timer.kill if @timer.is_a? Thread end end server = TCPServer.new 'localhost', 25 class <." while line = session.read break if ".\r\n" == line end session.write "250 OK" while line = session.read session.write "250 OK" break if line =~ /QUIT/ end #session.write "221 thanks for coming\r\n" session.close puts "\n\n\n" rescue IOError next end end