X-Git-Url: https://git.madduck.net/etc/mailfilter.git/blobdiff_plain/2fe122be2f3654cdb90e54d784d4eee8f5058879..ce8490e8e3f6d37ff70dfb67bcce6786e5cbbac0:/procmail/delay-delivery

diff --git a/procmail/delay-delivery b/procmail/delay-delivery
index e69de29..3410dcf 100644
--- a/procmail/delay-delivery
+++ b/procmail/delay-delivery
@@ -0,0 +1,45 @@
+# create table messages (msgid text unique not null, filename text
+# primary key not null unique, release_ts integer not null);
+
+:0
+* DELAY ?? .
+* ! DELAYED ?? .
+{
+  :0
+  * DELAY ?? ^[0-9]
+  { DELAY="now + $DELAY" }
+
+  #TODO: for tickling, use header date
+  RELEASE="`$BIN_DATE -d \"$DELAY\" +'%s %c'`"
+
+  :0
+  *$ RELEASE ?? ^\/${RE_NOT_SPACE}+
+  { RELEASE_TS=$MATCH }
+
+  :0
+  *$  $RELEASE_TS ^0
+  *$ -$OURDATE_TS ^0
+  {
+    :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
+
+    Q="insert into messages values
+      ($DATA, '\\'\$DESTFILE\\'', $RELEASE_TS)"
+    TRAP="$TRAP; $DO_QUERY '$Q'"
+
+    :0 fw
+    |$FORMAIL -I "X-Delayed: $RELEASE_TS ($RELEASE_TIME)"
+
+    :0
+    $DELAYED_QUEUE
+  }
+}