#!/bin/sh set -eu MAILDIR=$HOME/.maildir SQLITE=/usr/bin/sqlite3 RESUBMIT=$HOME/.etc/mailfilter/bin/resubmit DELAYED_QUEUE_DB=$HOME/.var/procmail/delayed-queue.sqlite QUERY='select * from messages where release_ts <= strftime("%s", "now")' $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}:2,R ${file}:2,RS" file="${dirname%/cur}/new/$basename" files="$files $file ${file}:2, ${file}:2,R ${file}:2,RS" ;; 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