Geek: How to use offlineimap and the dovecot mail server to read your Gmail in Emacs efficiently
Posted: - Modified: | emacs, geek2015-12-24: Updated with config changes now that I’m back to using Gnus+dovecot+offlineimap+Gmail
2014-04-09: This post is from 2008. =) I think I used dovecot+offlineimap because Gnus and maildir weren’t getting along properly and directly connecting with IMAP to Gmail’s server was slow, but things have probably changed a fair bit since then. I eventually moved to using the Gmail web interface for most things, but I still miss my Gnus setup!
- Make sure you’ve set up Postfix or some other mail server that can send mail.
- Install dovecot (IMAP server) and offlineimap (IMAP synchronization). You can probably find binaries for your distribution.
- Edit /etc/dovecot/conf.d/10-mail.conf and set the following:
mail_location = maildir:~/Maildir:LAYOUT=fs- Use the instructions fromĀ http://unix.stackexchange.com/questions/44214/encrypt-offlineimap-password to set up GPG-encrypted passwords. (optional)
- Put the following in ~/.offlineimaprc, changingĀ the details as needed.
[general] accounts = SachaGmail pythonfile = ~/bin/offlineimap-password.py [Account SachaGmail] localrepository = Local remoterepository = Gmail status_backend = sqlite [Repository Local] type = Maildir localfolders = ~/Maildir [Repository Gmail] type = Gmail maxconnections = 2 remoteuser = sacha@sachachua.com realdelete = no folderfilter = lambda foldername: foldername in ['INBOX', '[Gmail]/All Mail', '[Gmail]/Sent Mail', '[Gmail].Starred', '[Gmail].Drafts', '[Gmail].Important'] nametrans = lambda folder: re.sub('^INBOX$', '[Gmail].Inbox', folder) sslcacertfile = /etc/ssl/certs/ca-certificates.crt remotepasseval = mailpasswd("gmail")If you feel comfortable specifying your password in your ~/.offlineimaprc, you can do so by changing remotepasseval to remotepass. If so, you don’t need the pythonfile line.
- 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!
You can comment with Disqus or you can e-mail me at sacha@sachachua.com.