X-Git-Url: https://git.madduck.net/etc/mailfilter.git/blobdiff_plain/0e6de930e8c8037587f9843f39a0611f22fd78ca..f3c643f8d46f268e88dc3428d00b5f38d0dc2e5b:/bin/process-delayed-queue

diff --git a/bin/process-delayed-queue b/bin/process-delayed-queue
index 82818eb..e978a40 100755
--- a/bin/process-delayed-queue
+++ b/bin/process-delayed-queue
@@ -6,17 +6,44 @@ MAILDIR=$HOME/.maildir
 SQLITE=/usr/bin/sqlite3
 RESUBMIT=$HOME/.etc/mailfilter/bin/resubmit
 
-DELAYED_QUEUE_DB=$VAR/procmail/delayed-queue.sqlite
+DELAYED_QUEUE_DB=$HOME/.var/procmail/delayed-queue.sqlite
 
 QUERY='select * from messages where release_ts < strftime("%s", "now")'
 
-$SQLITE -column $DELAYED_QUEUE_DB "$QUERY" | while read msgid file ts; do
-  file="$MAILDIR/$file"
-  if [ ! -f "$file" ]; then
-    echo "E: message $msgid not found in $file" >&2
-  else
-    $RESUBMIT "$file"
-    echo "I: resubmitted $msgid" >&2
-  fi
-  $SQLITE $DELAYED_QUEUE_DB "delete from messages where msgid = '$msgid'"
+$SQLITE -list -separator ' ' $DELAYED_QUEUE_DB "$QUERY" \
+  | while read msgid basefile ts; do
+
+    file="$MAILDIR/$basefile"
+    files="$file ${file}:2,"
+
+    basename="${file##*/}"
+    dirname="${file%/*}"
+    case "${dirname##*/}" in
+      cur)
+        files="$files ${file}:2,S"
+        file="${dirname%/cur}/new/$basename"
+        files="$files $file ${file}:2,"
+        ;;
+      new)
+        file="${dirname%/new}/cur/$basename"
+        files="$files ${file}:2, ${file}:2,S"
+        ;;
+    esac
+
+    found=0
+    for file in $files; do
+      if [ -f "$file" ]; then
+        $RESUBMIT "$file"
+        echo "I: resubmitted $msgid"
+        found=1
+        break
+      fi
+    done
+
+    $SQLITE $DELAYED_QUEUE_DB "delete from messages where msgid = '$msgid'"
+
+    if [ $found -eq 0 ]; then
+      echo "E: message $msgid not found in $basefile" >&2
+    fi
+
 done