Mail

Messages

Client : mutt

Sync : offlineimap, isync

Search : notmuch

Contacts

Client : goobook

~/.pim/markferry.net/goobookrc

[DEFAULT]
# If not given here, email and password is taken from .netrc using
# machine google.com
email: blah@markferry.net
password: "My obvious password"
# or if you want to get the password from a commmand:
;passwordeval: gpg --batch -d ~/.mutt/pw.gpg
# The following are optional, defaults are shown
cache_filename: ~/.pim/markferry.net/goobook_cache
;cache_expiry_hours: 24
;filter_groupless_contacts: yes

Offline

Mutt IMAP isn't available offline. Configure offlineimap and notmuch.

mbsync / isync

https://wiki.archlinux.org/index.php/Isync

offlineimap

~/.offlineimaprc example:

[general]
accounts = markferry # comma separated
maxsyncaccounts = 3
pythonfile = ~/.auth.py # see below

[Account markferry]
localrepository = markferry_Local
remoterepository = markferry_Remote
status_backend = sqlite
autorefresh = 5
quick = 15

[Repository markferry_Local]
type = Maildir
localfolders = ~/mail
keepalive = 180
holdconnectionopen = yes

[Repository markferry_Remote]
maxconnections = 1
type = Gmail
#cert_fingerprint = 85dd311c4a1dbcda6fb53e46004386861844ed2e  # disable explicit cert
sslcacertfile = /etc/ssl/certs/ca-certificates.crt
remoteuser = blah@markferry.net
remotepasseval = auth['blah@markferry.net']
realdelete = no
folderfilter = lambda foldername: foldername not in ['[Google Mail]/All Mail', '[Google Mail]/Spam']

.auth.py

A little python dictionary of credentials to isolate it from the rest of the (version-controlled) configs

~/.auth.py:

auth = dict()  
auth['blah@markferry.net'] = 'My obvious password'

offlineimap-watchdog

Adapted for bash from the offlineimap FAQ

#!/bin/sh  
# remove any old instances of this shell script or offlineimap  
for pid in $(pgrep offlineimap)  
do  
    if  [ $pid -ne $$ ]  
    then  
        kill $pid  
        echo killed old process: $pid  
    fi  
done  
  
# wait for compiz (or whatever) to start and setup wifi  
#sleep 20  
# If offlineimap exits, restart it  
while ((true))  
do  
    ( exec /usr/bin/offlineimap -u quiet )  
    sleep 60 # prevents extended failure condition  
done

Links