X-Git-Url: https://git.madduck.net/etc/mailfilter.git/blobdiff_plain/7047e6e0505152b6aa2242e1975340a99f5e57e3..6f64c2e5407c4f0ce4c46a2723bda1e45f35d9af:/procmail/tickle diff --git a/procmail/tickle b/procmail/tickle index 71edef6..f03d1ab 100644 --- a/procmail/tickle +++ b/procmail/tickle @@ -1,21 +1,72 @@ :0 -* ORIGINAL_TO ?? ^[0-9]+@tickle\.madduck\.net$ -* ORIGINAL_TO ?? ^\/[0-9]+ +* ! DEST ?? . +* ! TICKLE_DELIVERED ?? . +* ORIGINAL_TO ?? ^.+@tickle\.madduck\.net$ +* ORIGINAL_TO ?? ^\/[^@]+ { - TICKLEDIR=$BASE/.tickle.$MATCH + DELIVERY_TIME=04:20 + STAMP :0 - * ? test ! -d $TICKLEDIR/cur - { - LOG="tickle: received message outside tickle range: $MATCH$NL" + * MATCH ?? ^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$ + { DELAY="@$MATCH" } + + :0 E + * MATCH ?? ^[0-9]+h$ + * MATCH ?? ^\/[^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" } + + :0 E + * MATCH ?? ^[0-9]+w$ + * MATCH ?? ^\/[^w]+ + { DELAY="$JUST_DATE + $MATCH weeks $DELIVERY_TIME" } + + :0 E + * MATCH ?? ^[0-9]+d?$ + * MATCH ?? ^\/[^d]+ + { DELAY="$JUST_DATE + $MATCH days $DELIVERY_TIME" } - :0 - $DISCARD + JUST_DATE + DELIVERY_TIME + + :0 E + { + LOG="tickle: invalid date string: $MATCH$NL" + EXITCODE=69 + HOST } - LOG="tickle: file message and tickle in $MATCH day(s)$NL" + DELAYED_QUEUE=$BASE/.store/ - :0 - $TICKLEDIR/ - TICKLEDIR + :0 fw + |$FORMAIL -i 'X-Tickle: yes' + +# :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 } } + +# vim:ft=procmail