Sup FAQ
-------
+
+Q: What is Sup?
+A: A console-based email client for people with a lot of email.
+
Q: What does Sup stand for?
-A: "What's up?".
+A: "What's up?"
-Q: How is Sup even possible?
-A: Sup is only possible through the hard work of Dave Balmain, the
- author of ferret.
+Q: Sup looks like a text-based Gmail.
+A: First I stole their ideas. Then I improved them.
- I started using Ferret when it was still slightly buggy, and it
- seemed like every week Dave released a bugfix or a speed
- improvement that directly affected sup. Ferret has become a
- first-class piece of software, and it's due to the tremendous
- amount of time and effort he's put in to it.
+Q: Why not just use Gmail?
+A: I hate ads, I hate using a mouse, and I hate non-programmability and
+ non-extensibility.
-Q: Why the console?
-A: As the millions (ok, hundreds) of mutt users will tell you, there are
- many advantages to the console:
- - You don't need web browser.
- - Instantaneous interaction.
- - A few keystrokes can accomplish the work of a hundred mouse
- clicks.
+ Also, Gmail doesn't let you use a monospace font, which is just
+ lame.
-Q: If you love GMail so much, why not just use it?
-A: I hate using a mouse, and I hate ads, and I hate non-programmability.
+ Also, Gmail encourages top-posting. THIS CANNOT BE TOLERATED!
+
+Q: Why the console?
+A: Because a keystroke is worth a hundred mouse clicks, as any Unix
+ user knows. Because you don't need web browser. Because you get
+ instantaneous response and a simple interface.
Q: How does Sup deal with spam?
A: You can manually mark messages as spam, which prevents them from
- showing up in future searches, but that's all that Sup does. Spam
- filtering should be done by a dedicated tool like SpamAssassin.
+ showing up in future searches. Later, you can run a batch process to
+ remove such messages from your sources. That's as far as Sup goes.
+ Spam filtering should be done by a dedicated tool like SpamAssassin.
+
+Q: How do I delete a message?
+A: Why delete? Unless it's spam, you might as well just archive it.
+
+Q: C'mon, really now!
+A: Ok, press the 'd' key.
+
+Q: But I want to delete it for real, not just add a 'deleted' flag in
+ the index. I want it gone from disk!
+A: Currently, for mbox sources, there is a batch deletion tool that
+ will strip out all messages marked as spam or deleted.
+
+Q: How well does Sup play with other mail clients?
+A: Not well at all. If messages have been moved, deleted, or altered
+ due to some other client, Sup will have to rebuild its index for
+ that message source. For example, for mbox files, reading a single
+ unread message changes the offsets of every file on disk. Rather
+ than rescanning every time, Sup assumes sources don't change except
+ by having new messages added. If that assumption is violated,
+ you'll have to sync the index.
+
+Q: How do I back up my index?
+A: Since the contents of the messages are recoverable from their
+ sources using sup-sync, all you need to back up is the message
+ state. To do this, simply run:
+ sup-dump > <dumpfile>
+ This will save all message state in a big text file, which you
+ should probably compress.
+
+Q: How do I restore the message state I saved in my state dump?
+A: Run:
+ sup-sync [<source>+] --restored --restore <dumpfile>
+ where <dumpfile> was created as above.
+
+Q: Ferret crashed and I can't read my index. Luckily I made a state
+ dump. What should I do?
+Q: How do I rebuild the index completely?
+A: Run:
+ rm -rf ~/.sup/ferret # omg wtf
+ sup-sync --all-sources --all --restore <dumpfile>
+ Voila! A brand new index.
+
+Q: I want to move messages from one source to another. (E.g., my
+ primary inbox is an IMAP server with a quota, and I want to move
+ some of those messages to local mbox files.) How do I do that while
+ preserving message state?
+A: Move the messages from the source to the target using whatever tool
+ you'd like. Mutt's a good one. :) Then run:
+ sup-sync --changed <source1> <source2>
+
+ Note that if you sup-sync only one source at a time, depending on
+ the order in which you do it, the messages may be treated as
+ missing and then deleted from the index, which means that their
+ states will be lost when you sync the other source. So do them both
+ in one go.
Q: What are all these "Redwood" references I see in the code?
-A: That was Sup's original name. (Think pine, elm. Although I am a
+A: That was Sup's original name. (Think pine, elm. Although I was a
Mutt user, I couldn't think of a good progression there.) But it was
- taken by another project on RubyForge, and wasn't that original,
- and was too long to type anyways.
+ taken by another project on RubyForge, and wasn't that original, and
+ was too long to type anyways.
+
+Common Problems
+---------------
+
+P: I get some error message from Rubymail about frozen strings when
+ importing messages with attachments.
+S: The current solution is to directly modify RubyMail. Change line 159 of
+ multipart.rb to:
+ chunk = chunk[0..start]
+ This is because RubyMail hasn't been updated since like Ruby 1.8.2.
+ Please bug Matt Armstrong.
+
+P: I see this error:
+ /usr/local/lib/ruby/1.8/yaml.rb:133:in `transfer': allocator undefined for Bignum (TypeError)
+S: You need to upgrade to Ruby 1.8.5. YAML in earlier versions can't
+ parse BigNums, but Sup relies on that for Maildir and IMAP.
- Maybe one day I'll do a huge search-and-replace on the code, but it
- doesn't seem that important at this point.
+P: I see this error:
+ /usr/lib/ruby/1.8/net/imap.rb:204: uninitialized constant Net::IMAP::SSL (NameError)
+S: You need to install a package called libssl-ruby or something similar.
+ Or, don't use imaps:// sources. Ruby's IMAP library otherwise fails in
+ this completely uninformative manner.
+P: When I run Sup remotely and view an HTML attachment, an existing
+ Firefox on the *local* machine is redirected to the attachment
+ file, which it can't find (since it's on the remote machine). How do
+ I view HTML attachments in this environment?
+S: Put this in your ~/.mailcap on the machine you run Sup on:
+ text/html; /usr/bin/firefox -a sup '%s'; description=HTML Text; test=test -n "$DISPLAY"; nametemplate=%s.html