X-Git-Url: https://git.madduck.net/etc/mailfilter.git/blobdiff_plain/3045078502871a4f349f35a338f5ae0a568a12d7..05736b89182e3eeed0fae64d320484831f9a57fd:/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