Geek: How to use offlineimap and the dovecot mail server to read your Gmail in Emacs efficiently
Posted on May 8th, 2008 by Sacha Chua
- Make sure you’ve set up Postfix or some other mail server that can send mail. I’m not going to cover that because my configuration for outgoing mail doesn’t use Gmail.
- Install dovecot (IMAP server) and offlineimap (IMAP synchronization). You can probably find binaries for your distribution.
- Edit /etc/dovecot.conf and set the following:
default_mail_env = maildir:%h/Maildir
- Put the following in ~/.offlineimaprc, changing your_local_username, your_username, and your_gmail_password:
[general] accounts = Gmail maxsyncaccounts = 1 [Account Gmail] localrepository = Local remoterepository = Remote [Repository Local] type = IMAP remotehost = localhost port = 143 remoteuser = your_local_username [Repository Remote] type = IMAP remotehost = imap.gmail.com remoteuser = your_username@gmail.com remotepass = your_gmail_password ssl = yes maxconnections = 1 realdelete = no folderfilter = lambda foldername: foldername in ['INBOX']
If you feel comfortable specifying your password for your local account in your ~/.offlineimaprc, you can do so by adding a remotepass line under the remoteuser line in the [Repository Local] section.
- chmod go-rwx ~/.offlineimaprc for a little bit of safety.
- Type offlineimap to start synchronizing.
- While that’s synchronizing, use something like this as your ~/.gnus:
(setq gnus-select-method '(nnimap "Mail" (nnimap-address "localhost") (nnimap-stream network) (nnimap-authenticator login))) (setq user-mail-address "youremail@example.com") (setq gnus-ignored-from-addresses "youruser") - Start Emacs. Start Gnus with M-x gnus. If you don’t see the INBOX group, press ^ (gnus-group-enter-server-mode), open nnimap:Mail, move your cursor to the INBOX, and either press RET to go into the group or press u (gnus-browse-unsubscribe-current-group) to toggle the subscription status until you’re subscribed to the group. Then it should show up on the group screen (M-x gnus).
Hope that helps. Have fun!

This is what I’ve been looking for! Now everything works perfectly. Thank you very much Sacha
You’re welcome! I’m glad it works for you.
I recently created a very similar setup. I also use the following to start offlineimap from within emacs.
(define-key gnus-group-mode-map (kbd "vo")
'(lambda ()
(interactive)
(shell-command "offlineimap&" "*offlineimap*" nil)))
Why not just use a local Maildir folder instead of having to set up an IMAP server? I do something similar but just point my MUA at ~/Maildir
I believe this has something to do with gnus and large Maildir directories. I recall reading that this can be bad.
i’m writing a maildir mode for gnus that can work off the straight mailfolders. i’ll post it here when its done.
-hhh
Thanks Sacha. I’d recently got offlineimap and dovecot out of darwinports for exactly this purpose, but had not got around to the setup. I’ll try sorting this out when I get home today.