def start(account, password) # :yield: pop
      raise IOError, 'POP session already started' if @started
      if block_given?
        begin
          do_start account, password
          return yield(self)
        ensure
          do_finish
        end
      else
        do_start account, password
        return self
      end
    end
Starts a POP3 session.

When called with block, gives a POP3 object to the block and
closes the session after block call finishes.

This method raises a POPAuthenticationError if authentication fails.