diff options
Diffstat (limited to 'lib/custodian/protocoltest')
-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 |