X-Git-Url: https://git.madduck.net/etc/mailfilter.git/blobdiff_plain/3045078502871a4f349f35a338f5ae0a568a12d7..14e2811d88509fc228773608c99a8e0e5c7176a4:/procmail/tickle

diff --git a/procmail/tickle b/procmail/tickle
index f03d1ab..2128713 100644
--- a/procmail/tickle
+++ b/procmail/tickle
@@ -1,72 +1,70 @@
+# The X-Tickle header has priority over the Original-To address
 :0
-* ! DEST ?? .
-* ! TICKLE_DELIVERED ?? .
+* ! POSTPONED ?? .
+*$ ^X-Tickle:${RE_SPACE}+\/${RE_NOT_SPACE}+
+{ TICKLE="$MATCH" }
+
+:0 E
+* ! POSTPONED ?? .
 * ORIGINAL_TO ?? ^.+@tickle\.madduck\.net$
 * ORIGINAL_TO ?? ^\/[^@]+
+{ TICKLE="$MATCH" }
+
+:0
+* TICKLE ?? .
+* ! DEST ?? .
 {
-  DELIVERY_TIME=04:20
-  STAMP
+  DAILY_DELIVERY_TIME=04:20
+  JUST_DATE="`$BIN_DATE -d \"$DATE\" +%x`"
 
   :0
-  * MATCH ?? ^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$
-  { DELAY="@$MATCH" }
+  * TICKLE ?? ^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$
+  { DELAY="@$TICKLE" }
 
   :0 E
-  * MATCH ?? ^[0-9]+h$
-  * MATCH ?? ^\/[^h]+
+  * TICKLE ?? ^[0-9]+h$
+  * TICKLE ?? ^\/[^h]+
   { DELAY="$DATE + $MATCH hours" }
 
-  JUST_DATE="`$BIN_DATE -d \"$DATE\" +%x`"
-
   :0 E
-  * MATCH ?? ^[0-9]+m$
-  * MATCH ?? ^\/[^m]+
-  { DELAY="$JUST_DATE + $MATCH months $DELIVERY_TIME" }
+  * TICKLE ?? ^[0-9]+m$
+  * TICKLE ?? ^\/[^m]+
+  { DELAY="$JUST_DATE + $MATCH months $DAILY_DELIVERY_TIME" }
 
   :0 E
-  * MATCH ?? ^[0-9]+w$
-  * MATCH ?? ^\/[^w]+
-  { DELAY="$JUST_DATE + $MATCH weeks $DELIVERY_TIME" }
+  * TICKLE ?? ^[0-9]+w$
+  * TICKLE ?? ^\/[^w]+
+  { DELAY="$JUST_DATE + $MATCH weeks $DAILY_DELIVERY_TIME" }
 
   :0 E
-  * MATCH ?? ^[0-9]+d?$
-  * MATCH ?? ^\/[^d]+
-  { DELAY="$JUST_DATE + $MATCH days $DELIVERY_TIME" }
-
-  JUST_DATE
-  DELIVERY_TIME
+  * TICKLE ?? ^[0-9]+d?$
+  * TICKLE ?? ^\/[^d]+
+  { DELAY="$JUST_DATE + $MATCH days $DAILY_DELIVERY_TIME" }
 
   :0 E
   {
-    LOG="tickle:      invalid date string: $MATCH$NL"
+    LOG="tickle:      invalid tickler date string: $TICKLE$NL"
     EXITCODE=69
     HOST
   }
 
-  DELAYED_QUEUE=$BASE/.store/
+  JUST_DATE
+  DAILY_DELIVERY_TIME
+
+  :0
+  { RELEASE="`$BIN_DATE -d \"$DELAY\" +'%s (%c)'`" }
+
+  LOG="tickle:      delaying message until $RELEASE$NL"
+  DELAYED_QUEUE=$TICKLER_QUEUE
 
   :0 fw
-  |$FORMAIL -i 'X-Tickle: yes'
+  |$FORMAIL -I"X-Tickle: $RELEASE"
+
+  # store messages as read
+  MARK_READ=tickler
 
-#  :0
-#  * ! STAMP ?? .
-#  { STAMP=`$BIN_DATE +'%s (%c)' -d "$DELAY"` }
-#
-#  :0
-#  * ! STAMP ?? ^[0-9]+ \([A-Za-z ]+ [0-9 :]+\)$
-#  {
-#    LOG="tickle:      error creating timestamp ($STAMP), using \$now$NL"
-#    STAMP="`$BIN_DATE +%s` (ERROR: original stamp '$STAMP' invalid)"
-#  }
-#
-#  :0 E
-#  { LOG="tickle:      stamping message $MSGID with $STAMP$NL" }
-#
-#  :0 fw
-#  |$FORMAIL -i "X-Tickle: $STAMP"
-#
-#  :0
-#  { DEST=$TICKLER_QUEUE }
+  # unset DISABLE_DELAYS to always enable delaying for tickle messages
+  DISABLE_DELAYS
 }
 
 # vim:ft=procmail