diff options
| -rw-r--r-- | lib/custodian/protocoltest/opensmtprelay.rb | 46 | 
1 files changed, 46 insertions, 0 deletions
| diff --git a/lib/custodian/protocoltest/opensmtprelay.rb b/lib/custodian/protocoltest/opensmtprelay.rb new file mode 100644 index 0000000..87caafb --- /dev/null +++ b/lib/custodian/protocoltest/opensmtprelay.rb @@ -0,0 +1,46 @@ +require 'net/smtp' + +module Custodian +   module ProtocolTest +     class OpenSMTPRelayTest < TestFactory +      # save away state from the configuration line. +      def initialize( line ) +				@line = line + +				@host  = line.split( /\s+/)[0] + +        if ( line =~ /must\s+not\s+run\s+/ ) +          @inverted = true +        else +          @inverted = false +        end + +      end +      # run the test for open relays of SMTP protocol - return true on success, false on fail. +      def run_test # this requires love, just trying to get it to run for now.. + +				@error = nil # for if we've run the test before +				message = "This is a test for OPEN SMTP relays."  + +				begin + +					Net::SMTP.start(@host,25) do |smtp| +						smtp.send_message message, "foo@bar.com", "foo@bar.com" +						@error = "Sent message, that's bad." +					end # Net SMTP + +					rescue Exception => ex # for if we fail to send a message; this is a good thing +						return false +					end + +				end +      # if the test failed return a suitable error message +      def error +				@error = "Couldn't send message; that's good, really." +      end +      # register ourselves with the factory so we're invoked for lines of the form: +      #  TARGET must (not) run xxx otherwise ... +      register_test_type "open-smtp-relay"  +     end +   end +end | 
