--- /dev/null
+def py_foldersort_seamus(x, y):
+ prioritised = ('outgoing','resubmit','drafts','inbox','ul','debian','sudetia','admin','retrain')
+ deprioritised = ('discard','spam','store','spool')
+ for prefix in prioritised:
+ if x.startswith(prefix):
+ return -1
+ elif y.startswith(prefix):
+ return +1
+ for prefix in deprioritised:
+ if x.startswith(prefix):
+ return +1
+ elif y.startswith(prefix):
+ return -1
+ return cmp(x, y)
+
+import re
+
+def py_nametrans_seamus(x):
+ return re.sub('^INBOX', 'inbox', x)
+
+def should_do_full_sync():
+ import os, stat, time
+ FILE = os.path.expanduser('~/.var/offlineimap/lastrun')
+ INTERVAL = 30
+ now = int(time.time())
+
+ try:
+ mtime = os.stat(FILE)[stat.ST_MTIME]
+ except OSError:
+ mtime = 0
+
+ since = now - mtime
+ print 'now=%d mtime=%d since=%d INTERVAL=%d' \
+ % (now, mtime, since, INTERVAL)
+ if since > INTERVAL:
+ file(FILE, 'wb').close()
+ print 'Running a full sync...'
+ return True
+
+ print 'Running a partial sync, next full sync in %d seconds...' \
+ % (INTERVAL - since)
+ return False
+
+#do_full = should_do_full_sync()
+do_full = True
+def py_folderfilter_seamus(x):
+ base_excludes = ['delayed', 'outgoing']
+
+ if do_full:
+ return x not in base_excludes
+ else:
+ if x in base_excludes:
+ return False
+ if x in ('spool', 'discard', 'spam'):
+ return False
+ if re.search('^store\..+', x):
+ return False
+ return True
+
+def py_folderfilter_mbnames(acct, x):
+ return not re.search('^(store(/.+)?|retrain/.+|spool|discard|spam)', x)
--- /dev/null
+[general]
+metadata = ~/.var/offlineimap
+
+accounts = seamus.madduck.net
+
+ui = Noninteractive.Basic, Noninteractive.Quiet
+
+ignore-readonly = no
+socktimeout = 30
+
+pythonfile = ~/.offlineimap/helper.py
+
+[mbnames]
+enabled = yes
+filename = ~/.var/offlineimap/mailboxes
+header = '# generated by offlineimap\n'
+peritem = mailboxes =%(foldername)s
+sep = '\n'
+footer = '\n'
+folderfilter = py_folderfilter_mbnames
+
+[Account seamus.madduck.net]
+localrepository = local-seamus
+remoterepository = seamus.madduck.net
+autorefresh = 15
+quick = 16
+
+[Repository local-seamus]
+type = Maildir
+localfolders = ~/mail
+sep = /
+
+[Repository seamus.madduck.net]
+type = IMAP
+remotehost = seamus.maduck.net
+ssl = no
+maxconnections = 1
+holdconnectionopen = yes
+remoteuser = madduck
+preauthtunnel = ssh -CaxS none -o "KeepAlive = yes" -o "ProtocolKeepAlives = 10" -o "ConnectTimeout 20" -o "ControlMaster no" -i ~/.etc/offlineimap/id_dsa.imap seamus.madduck.net 'MAIL=$HOME/.maildir/ /usr/lib/dovecot/imap'
+expunge = yes
+foldersort = py_foldersort_seamus
+nametrans = py_nametrans_seamus
+folderfilter = py_folderfilter_seamus