# File lib/sup/imap.rb, line 152
  def scan_mailbox force=false
    return if !force && @last_scan && (Time.now - @last_scan) < SCAN_INTERVAL
    last_id = safely do
      @imap.examine mailbox
      @imap.responses["EXISTS"].last
    end
    @last_scan = Time.now

    @ids = [] if force
    return if last_id == @ids.length

    range = (@ids.length + 1) .. last_id
    debug "fetching IMAP headers #{range}"
    fetch(range, ['RFC822.SIZE', 'INTERNALDATE', 'FLAGS']).each do |v|
      id = make_id v
      @ids << id
      @imap_state[id] = { :id => v.seqno, :flags => v.attr["FLAGS"] }
    end
    debug "done fetching IMAP headers"
  end