From 40a3cfa3569396308ce8c168c0abf7f0f1be0b8c Mon Sep 17 00:00:00 2001 From: "martin f. krafft" Date: Mon, 5 May 2008 11:13:51 +0100 Subject: [PATCH 1/1] initial checkin --- .offlineimap/helper.py | 61 ++++++++++++++++++++++++++++++++++++++++++ .offlineimaprc | 44 ++++++++++++++++++++++++++++++ 2 files changed, 105 insertions(+) create mode 100644 .offlineimap/helper.py create mode 100644 .offlineimaprc diff --git a/.offlineimap/helper.py b/.offlineimap/helper.py new file mode 100644 index 0000000..09cec66 --- /dev/null +++ b/.offlineimap/helper.py @@ -0,0 +1,61 @@ +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) diff --git a/.offlineimaprc b/.offlineimaprc new file mode 100644 index 0000000..fa580f1 --- /dev/null +++ b/.offlineimaprc @@ -0,0 +1,44 @@ +[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 -- 2.39.5