X-Git-Url: https://git.madduck.net/etc/mailfilter.git/blobdiff_plain/406e0c358dbe50c3ff0463c12f3d9bcdccfaf5d2..4d08a1263be6ae9cbc9800b42b266ec3549a0bb7:/procmail/delay-delivery

diff --git a/procmail/delay-delivery b/procmail/delay-delivery
index 405cbcb..65f02e5 100644
--- a/procmail/delay-delivery
+++ b/procmail/delay-delivery
@@ -1,34 +1,44 @@
-# create table messages (msgid text unique not null, filename text
-# primary key not null unique, release_ts integer not null);
+#TODO: create config/delay-(disabled|tonight|weekend)
 
 :0
+* POSTPONED ?? .
+{
+  LOG="delay:       not delaying already-postponed message$NL"
+  :0 fw
+  |$FORMAIL -R X-Postponed X-Was-Postponed
+}
+
+:0 E
+* DISABLE_DELAYS ?? .
+{
+  LOG="delay:       delays disabled, thus not delaying$NL"
+}
+
+:0 E
 * DELAY ?? .
-* ! DELAYED ?? .
 {
   #TODO: for tickling, use header date
-  RELEASE="`date -d \"now + $DELAY\" +'%s %c'`"
+  RELEASE="`$BIN_DATE -d \"$DELAY\" +'%s %c'`"
+
   :0
   *$ RELEASE ?? ^\/${RE_NOT_SPACE}+
   { RELEASE_TS=$MATCH }
-  :0
-  *$ RELEASE ?? ^[0-9]+${RE_SPACE}+\/.+
-  { RELEASE_TIME="$MATCH" }
-
-  LOG="delay:       delay delivery of $MSGID until $RELEASE_TIME$NL"
-
-  DELAYED_QUEUE_DB=$PMVAR/delayed-queue.sqlite
-  DO_QUERY="$SQLITE $DELAYED_QUEUE_DB"
 
-  DATA="$MSGID"
-  INCLUDERC=$PMDIR/sql-escape
+  :0
+  *$  $RELEASE_TS ^0
+  *$ -$OURDATE_TS ^0
+  {
+    :0
+    *$ RELEASE ?? ^[0-9]+${RE_SPACE}+\/.+
+    { RELEASE_TIME="$MATCH" }
 
-  Q="insert into messages values
-     ($DATA, '\\'\$DESTFILE\\'', $RELEASE_TS)"
-  TRAP="$TRAP; $DO_QUERY '$Q'"
+    LOG="delay:       delay delivery of $MSGID until $RELEASE_TIME$NL"
 
-  :0 fw
-  |$FORMAIL -I "X-Delayed: $RELEASE_TS ($RELEASE_TIME)"
+    :0 fw
+    |$FORMAIL -I"X-Postponed: $RELEASE_TS ($RELEASE_TIME)"
 
-  :0
-  $DELAYED_QUEUE
+    INCLUDERC=$PMDIR/record-delayed-mail
+    :0
+    $DELAYED_QUEUE
+  }
 }