Screenshot of me reading mail in Gnus

I use several tools to read my mail. The front end is Emacs using the Gnus mailreader. Version 5.8.4 or latter of Gnus is needed to do IMAP. For what it's worth, I usually have GNU/Linux as the platform, but that really doesn't matter as it should work with everywhere that Emacs runs, including on Microsoft Windows.

The client side

I'll go over the front-end first. Since Gnus reads ~/.gnus, at startup all the configuration for Gnus can be put in there. Here is my commented .gnus file:

; -*- Lisp -*-

; Setting the imap-ssl-program like this isn't strictly necessary, but
; I do it anyway since I'm paranoid. (I think it will default to
; `-ssl2' instead of `-tls1' if you don't do this.)
(setq imap-ssl-program "openssl s_client -tls1 -connect %s:%p")

; Since I use gnus primarily for mail and not for reading News, I
; make my IMAP setting the default method for gnus.
(setq gnus-select-method '(nnimap ""
                                  (nnimap-address "")
                                  (nnimap-stream ssl)))

;; Fetch only part of the article if we can.  I saw this in someone
;; else's .gnus
(setq gnus-read-active-file 'some)

;; Tree view for groups.  I like the organisational feel this has.
(add-hook 'gnus-group-mode-hook 'gnus-topic-mode)

;; Threads!  I hate reading un-threaded email -- especially mailing
;; lists.  This helps a ton!
(setq gnus-summary-thread-gathering-function 

;; Also, I prefer to see only the top level message.  If a message has
;; several replies or is part of a thread, only show the first
;; message.  'gnus-thread-ignore-subject' will ignore the subject and
;; look at 'In-Reply-To:' and 'References:' headers.
(setq gnus-thread-hide-subtree t)
(setq gnus-thread-ignore-subject t)

;; Change email address for work folder.  This is one of the most
;; interesting features of Gnus.  I plan on adding custom .sigs soon
;; for different mailing lists.
(setq gnus-posting-styles
         (name "Mark A. Hershberger")
         ("X-URL" ""))
         (address ""))
         (address ""))))

Once you have this up and running, you need to start up emacs. If you want to jump right into reading mail, then try emacs -e gnus. Provided you've given the appropriate information in your .gnus file, you will be prompted for your IMAP password (you can avoid the prompts by setting up an .authinfo file if believe that no one will get at the file).

If this is the first time you've run Gnus, you will only see your INBOX, provided you've done as I have and made nnimap your default backend for using Gnus.

If you have other folders and want to read those in Gnus as well (and your nnimap is your default Gnus backend), "A A" will show the other folders on the server. You can use "u" to mark them so that Gnus will check them.

(For those who insist on using Gnus as a newsreader and not a mail reader for IMAP, you can browse your other folders by typeing "B C-k nnimap RET servername RET" and going from there.)

If that succeeds, you should be able to position the point (which is emacs-speak for "cursor") over the line and hit Return. This will open the inbox and show you your unread messages.

Congratulations! The work required to get to this point is rather intense, but here we are. Remember to send me email with your results.

Above was last updated on 13 Aug 2002.


Jamie Zawinski -- the now retired überhacker who hacked out XEmacs, Netscape Navigator, and various other things -- also created BBDB, the Big Brother Database. This is an incredibly handy utility for managing contact information. It integrates quite nicely with Emacs' various mail readers and, of course, Gnus. Install it on your system and gain the benefits. (More to come...)

Notes on actual use

Windows 95/98 I have been able to use this configuration to read and send email from my parents house. They have Windows 95, so I was a little leary, but it worked! I downloaded and installed the Cygwin tools and Emacs for Windows. I also tenatively tried a pre-compiled port of SSLeay, but that didn't work. Since I couldn't use ssl, I had to remove the nnimap-stream line from my .gnus file, but that was it. If you try it and it works or doesn't for you, then I like to hear from you. (Note: Openssl is now bundled with cygwin, so you should be able to use this .gnus configuration with few to no changes on windows. I've not yet had a chance to try this, though.)

Windows NT with Microsoft Exchange I've used this configuration to read mail from a Microsoft Exchange server as well.