+# The X-Tickle header has priority over the Original-To address
:0
-* ORIGINAL_TO ?? ^[0-9]+@tickle\.madduck\.net$
-* ORIGINAL_TO ?? ^\/[0-9]+
+* ! 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 ?? .
{
- TICKLEDIR=$BASE/.tickle.$MATCH
+ DAILY_DELIVERY_TIME=04:20
+ JUST_DATE="`$BIN_DATE -d \"$DATE\" +%x`"
:0
- * ? test ! -d $TICKLEDIR/cur
- {
- LOG="tickle: received message outside tickle range: $MATCH$NL"
+ * 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
+ * TICKLE ?? ^[0-9]+h$
+ * TICKLE ?? ^\/[^h]+
+ { DELAY="$DATE + $MATCH hours" }
+
+ :0 E
+ * TICKLE ?? ^[0-9]+m$
+ * TICKLE ?? ^\/[^m]+
+ { DELAY="$JUST_DATE + $MATCH months $DAILY_DELIVERY_TIME" }
+
+ :0 E
+ * TICKLE ?? ^[0-9]+w$
+ * TICKLE ?? ^\/[^w]+
+ { DELAY="$JUST_DATE + $MATCH weeks $DAILY_DELIVERY_TIME" }
- :0
- $DISCARD
+ :0 E
+ * TICKLE ?? ^[0-9]+d?$
+ * TICKLE ?? ^\/[^d]+
+ { DELAY="$JUST_DATE + $MATCH days $DAILY_DELIVERY_TIME" }
+
+ :0 E
+ {
+ LOG="tickle: invalid tickler date string: $TICKLE$NL"
+ EXITCODE=69
+ HOST
}
- LOG="tickle: file message and tickle in $MATCH day(s)$NL"
+ JUST_DATE
+ DAILY_DELIVERY_TIME
:0
- $TICKLEDIR/
- TICKLEDIR
+ { RELEASE="`$BIN_DATE -d \"$DELAY\" +'%s (%c)'`" }
+
+ LOG="tickle: delaying message until $RELEASE$NL"
+ DELAYED_QUEUE=$TICKLER_QUEUE
+
+ :0 fw
+ |$FORMAIL -I"X-Tickle: $RELEASE"
+
+ # store messages as read
+ MARK_READ=tickler
+
+ # unset DISABLE_DELAYS to always enable delaying for tickle messages
+ DISABLE_DELAYS
}
+
+# vim:ft=procmail