lots of fixes
[distro-setup] / offlineimap-sync
index 21361b90c189114c071c5255f85561b515915980..74b23c1ccb8f10c573a5b3cc20192fba45011189 100755 (executable)
@@ -2,21 +2,36 @@
 
 set -eE -o pipefail
 trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
+# mail-route can get messed up a bit randomly, I don't know why.
+#/b/ds/mail-route up | /b/log-quiet/log-once -1 mail-route
+
+for f in $(awk '$1 == "localfolders" {print $NF}' ~/.offlineimaprc); do
+  mkdir -p $f
+  chmod 700 $f
+done
 
 offlineimap -u quiet
 shopt -s nullglob
 
+if grep -qP '^ *accounts.*fsf' ~/.offlineimaprc; then
+  if [[ ! -e /nocow/user/.mufsf ]]; then
+    mkdir -p /nocow/user/.mufsf
+    chmod 700 /nocow/user/.mufsf
+    mu index --maildir=/nocow/user/fsfmd
+  fi
+fi
+
 omv() { # offlineimap mv. move mail files within $src_base/$1 to /m/md/$2
-    src="$1"
-    dst="$2"
-    found_files=false
-    for x in new cur; do
-        files=("$src_base"/"$src"/$x/*)
-        if [[ $files ]]; then
-            found_files=true
-            mv "${files[@]}" /m/md/"$dst"/$x
-        fi
-    done
+  src="$1"
+  dst="$2"
+  found_files=false
+  for x in new cur; do
+    files=($src_base/"$src"/$x/*)
+    if [[ $files ]]; then
+      found_files=true
+      mv "${files[@]}" /m/md/"$dst"/$x
+    fi
+  done
 }
 
 src_base=/m/offlineimap
@@ -24,15 +39,52 @@ omv "Sent Items" "Sent"
 omv INBOX offlineimaptmp
 src_base=/m/md
 if $found_files; then
-    sieve-filter -eW ~/sieve/main.sieve offlineimaptmp &>/dev/null
-    # the default folder is INBOX for anything leftover
-    omv offlineimaptmp INBOX
-    # remove messages from remote host
-    offlineimap -u quiet
-    # this makes us sit and wait when we want to use mu and this is running in a cronjob.
-    # todo: emacs updates the index much faster. what command is it running? I'd like
-    # to just run that
-    # looks like it might be mu index --lazy-check, but that still takes like 10 seconds,
-    # figure out if that is the same speed, or if we can make it faster.
-    #mu index &>/dev/null ||:
+  sieve-filter -eW ~/sieve/main.sieve offlineimaptmp &>/dev/null
+  # the default folder is INBOX for anything leftover
+  omv offlineimaptmp INBOX
+  # remove messages from remote host
+  offlineimap -u quiet
+  # this makes us sit and wait when we want to use mu and this is running in a cronjob.
+  # todo: emacs updates the index much faster. what command is it running? I'd like
+  # to just run that
+  # looks like it might be mu index --lazy-check, but that still takes like 10 seconds,
+  # figure out if that is the same speed, or if we can make it faster.
+  #mu index &>/dev/null ||:
 fi
+
+# find but ignore directories which dont exist, assuming first args are directories
+# and a following arg starts with -
+myfind() {
+  dirs=()
+  for d; do
+    if [[ $d == -* ]]; then
+      # past dirs, onto options
+      break
+    fi
+    shift
+    if [[ -e $d ]]; then
+      dirs+=($d)
+    fi
+  done
+  if [[ $dirs ]]; then
+    find ${dirs[@]} $@
+  fi
+}
+
+# qemu-devel is our biggest list by far, so occasionally
+# I want to hop into conversations about our mailing
+# systems there, but I don't need many old messages.
+myfind /nocow/user/fsfmd/l/qemu-devel/new -type f -mtime +14 -execdir rm -- '{}' +
+
+
+myfind /nocow/user/fsfmd/{sec,Spam,Drafts,{rtcc,sysadmin,l/outreachy-mentors}/new} -type f -mtime +100 -execdir rm -- '{}' +
+
+myfind /nocow/user/fsfmd/log -type f -mtime +300 -execdir rm -- '{}' +
+
+
+# delete based on http://deflexion.com/2006/05/imap-way-of-deleting-message
+sieve-filter -eW -o mail_location=maildir:/nocow/user/fsfmd:LAYOUT=fs:INBOX=/nocow/user/fsfmd/INBOX ~/sieve/fsf.sieve INBOX delete &>>/tmp/fsfsieve.log
+
+# to test new rules, update fsf-test.sieve, run these commands, then copy new fsf-test.sieve to fsf.sieve
+# sieve-filter -o mail_location=maildir:/nocow/user/fsfmd:LAYOUT=fs:INBOX=/nocow/user/fsfmd/INBOX ~/sieve/fsf-test.sieve INBOX &>/tmp/testfsfsieve.log
+# sed -rn '/^Performed actions:/{n;n;p}' /tmp/testfsfsieve.log | sort -u