#!/bin/sh if [ -n "$VERBOSE" ]; then set -x fi; cmd_exists () { if which "$1" >/dev/null 2>&1; then return 0; else return 1; fi; } # Configure the two things below for your MUA and the host being run. IMAPHOST=$( awk -F= '/remotehost/{print $2}' ~/.offlineimaprc | head -n 1 ) MUAS="neomutt mutt mutt-ng" # Don't check mail if ~/.nocheck exists and we're not running # interactively. if [ -z "$CRON" ] && [ -e ~/.nocheck ]; then exit 0; fi; if [ -z "$HOSTNAME" ]; then HOSTNAME="$(hostname)" fi; IONICE="" if cmd_exists "ionice"; then IONICE="ionice -c 3" fi; # if we are running under cron and there is no running MUA, exit if [ -n "$CRON" ]; then RUNNING_MUA=0 for MUA in $MUAS; do if kill -0 `pgrep -U $(id -u) -x $MUA` 2>/dev/null; then RUNNING_MUA=1 break; fi; done; if [ "x$RUNNING_MUA" = "x0" ]; then exit 0; fi; fi; # source the ssh info if it exists if [ -e ~/.ssh/"ssh_agent_info_$HOSTNAME" ]; then . ~/.ssh/"ssh_agent_info_$HOSTNAME" > /dev/null; fi; PID="$(pgrep -U $(id -u) offlineimap)"; if [ -n "$PID" ]; then # if offlineimap has been running for more than 20 minutes if [ $(( $(date +'%s') - $(stat -c '%Y' /proc/$PID/cmdline) )) -gt 1200 ]; then kill "$PID" >/dev/null 2>&1 || true; sleep 5 kill -0 "$PID" >/dev/null 2>&1 && kill -9 "$PID" >/dev/null 2>&1; PID="$(pgrep -U $(id -u) offlineimap)"; fi; fi; if [ -z "$PID" ]; then nice -n 19 ${IONICE} offlineimap -o -u basic 2>&1 |grep validity| \ perl -ne 'my ($account,$list) = /UID validity problem for folder ([\w-]+)\.([\w-]+)/; next unless defined $account and length $account; qx(/home/don/bin/deletemailbox -a Inbox $account.$list > /dev/null);'; if cmd_exists "notmuch"; then nice -n 19 ${IONICE} notmuch new >/dev/null 2>&1; fi; fi;